diff options
-rw-r--r-- | arm9/Makefile | 20 | ||||
-rw-r--r-- | arm9/arm9.lcf | 96 | ||||
-rw-r--r-- | arm9/asm/unk_020AF030.s | 4 | ||||
-rw-r--r-- | arm9/global.inc | 57 | ||||
-rw-r--r-- | arm9/modules/20/asm/module_20.s | 4570 | ||||
-rw-r--r-- | arm9/modules/21/asm/module_21.s | 726 | ||||
-rw-r--r-- | arm9/modules/22/asm/module_22.s | 1845 | ||||
-rw-r--r-- | arm9/modules/23/asm/module_23.s | 2794 | ||||
-rw-r--r-- | arm9/modules/24/asm/module_24.s | 1184 | ||||
-rw-r--r-- | arm9/modules/25/asm/module_25.s | 663 |
10 files changed, 11943 insertions, 16 deletions
diff --git a/arm9/Makefile b/arm9/Makefile index 30a6f10f..aa41512d 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,11 +154,17 @@ 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) $@ @@ -185,6 +194,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 b591dd9a..62cdb898 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -30,12 +30,12 @@ MEMORY { MODULE_17 (RWX) : ORIGIN=0x021D74E0, LENGTH=0 MODULE_18 (RWX) : ORIGIN=0x022396A0, LENGTH=0 MODULE_19 (RWX) : ORIGIN=0x02252440, 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_20 (RWX) : ORIGIN=0x02252440, LENGTH=0 + MODULE_21 (RWX) : ORIGIN=0x02254840, LENGTH=0 + MODULE_22 (RWX) : ORIGIN=0x02254840, LENGTH=0 + MODULE_23 (RWX) : ORIGIN=0x02254840, LENGTH=0 + MODULE_24 (RWX) : ORIGIN=0x02254840, LENGTH=0 + MODULE_25 (RWX) : ORIGIN=0x02254840, LENGTH=0 MODULE_26 (RWX) : ORIGIN=0, LENGTH=0 MODULE_27 (RWX) : ORIGIN=0, LENGTH=0 MODULE_28 (RWX) : ORIGIN=0, LENGTH=0 @@ -616,12 +616,84 @@ SECTIONS { module_19.o (.bss) } >> MODULE_19 - 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) + .MODULE.20 : AT (0x27F200) + { + module_20.o (.text) + module_20.o (.sdata) + module_20.o (.data) + } > MODULE_20 + + .MODULE.20.bss : + { + module_20.o (.sbss) + module_20.o (.bss) + } >> MODULE_20 + + .MODULE.21 : AT (0x281600) + { + module_21.o (.text) + module_21.o (.sdata) + module_21.o (.data) + } > MODULE_21 + + .MODULE.21.bss : + { + module_21.o (.sbss) + module_21.o (.bss) + } >> MODULE_21 + + .MODULE.22 : AT (0x281C00) + { + module_22.o (.text) + module_22.o (.sdata) + module_22.o (.data) + } > MODULE_22 + + .MODULE.22.bss : + { + module_22.o (.sbss) + module_22.o (.bss) + } >> MODULE_22 + + .MODULE.23 : AT (0x282C00) + { + module_23.o (.text) + module_23.o (.sdata) + module_23.o (.data) + } > MODULE_23 + + .MODULE.23.bss : + { + module_23.o (.sbss) + module_23.o (.bss) + } >> MODULE_23 + + .MODULE.24 : AT (0x284600) + { + module_24.o (.text) + module_24.o (.sdata) + module_24.o (.data) + } > MODULE_24 + + .MODULE.24.bss : + { + module_24.o (.sbss) + module_24.o (.bss) + } >> MODULE_24 + + .MODULE.25 : AT (0x285000) + { + module_25.o (.text) + module_25.o (.sdata) + module_25.o (.data) + } > MODULE_25 + + .MODULE.25.bss : + { + module_25.o (.sbss) + module_25.o (.bss) + } >> MODULE_25 + OVERLAY_FILE(26, 0x285600, FILE_289600.o) OVERLAY_FILE(27, 0x285E00, FILE_289E00.o) OVERLAY_FILE(28, 0x286A00, FILE_28AA00.o) 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/global.inc b/arm9/global.inc index 4d02cd08..450bee0d 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -5395,6 +5395,63 @@ .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_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
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 |