summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-05-06 14:31:28 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2020-05-06 14:31:28 -0400
commit84d12c749b67e63dafc1068b0f1bb5083dde04cb (patch)
tree77fdbb7c5857f5fc73bfb5fda88fa0910d8babcc
parente4bcc9307197e3dedd5225ccdb9cb5e86ad29848 (diff)
Disassemble module 31
-rw-r--r--arm9/arm9.lcf16
-rw-r--r--arm9/global.inc1
-rw-r--r--arm9/modules/31/asm/module_31.s724
3 files changed, 739 insertions, 2 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf
index 89b80e61..1c04c470 100644
--- a/arm9/arm9.lcf
+++ b/arm9/arm9.lcf
@@ -41,7 +41,7 @@ MEMORY {
MODULE_28 (RWX) : ORIGIN=0x02254840, LENGTH=0
MODULE_29 (RWX) : ORIGIN=0x02254840, LENGTH=0
MODULE_30 (RWX) : ORIGIN=0x02254840, LENGTH=0
- MODULE_31 (RWX) : ORIGIN=0, LENGTH=0
+ MODULE_31 (RWX) : ORIGIN=0x02254840, LENGTH=0
MODULE_32 (RWX) : ORIGIN=0, LENGTH=0
MODULE_33 (RWX) : ORIGIN=0, LENGTH=0
MODULE_34 (RWX) : ORIGIN=0, LENGTH=0
@@ -759,7 +759,19 @@ SECTIONS {
module_30.o (.bss)
} >> MODULE_30
- OVERLAY_FILE(31, 0x289200, FILE_28D200.o)
+ .MODULE.31 : AT (0x289200)
+ {
+ module_31.o (.text)
+ module_31.o (.sdata)
+ module_31.o (.data)
+ } > MODULE_31
+
+ .MODULE.31.bss :
+ {
+ module_31.o (.sbss)
+ module_31.o (.bss)
+ } >> MODULE_31
+
OVERLAY_FILE(32, 0x289800, FILE_28D800.o)
OVERLAY_FILE(33, 0x289E00, FILE_28DE00.o)
OVERLAY_FILE(34, 0x28A200, FILE_28E200.o)
diff --git a/arm9/global.inc b/arm9/global.inc
index 61b1d5d4..371e60e9 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -5446,6 +5446,7 @@
.extern MOD20_02252DEC
.extern MOD20_022538B8
.extern MOD20_02253F44
+.extern MOD20_02252C34
.extern FUN_0204C0CC
.extern FUN_0204C0D4
.extern FUN_0204C0E8
diff --git a/arm9/modules/31/asm/module_31.s b/arm9/modules/31/asm/module_31.s
new file mode 100644
index 00000000..cdf3282a
--- /dev/null
+++ b/arm9/modules/31/asm/module_31.s
@@ -0,0 +1,724 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD31_02254840
+MOD31_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD31_02254854
+ ldr r1, _02254850 ; =MOD31_02254954
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD31_02254854
+_02254850: .word MOD31_02254954
+ thumb_func_end MOD31_02254840
+
+ thumb_func_start MOD31_02254854
+MOD31_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x20
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD31_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD31_02254918
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word MOD31_02254918
+ thumb_func_end MOD31_02254854
+
+ thumb_func_start MOD31_0225489C
+MOD31_0225489C: ; 0x0225489C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ str r1, [r5, #0x10]
+ add r0, r1, #0
+ add r4, r2, #0
+ bl MOD20_02252C3C
+ str r0, [r5, #0x1c]
+ mov r0, #1
+ str r0, [r5, #8]
+ ldr r0, [r5, #0x1c]
+ bl FUN_0204BF84
+ str r0, [r5, #4]
+ add r0, r5, #0
+ add r0, #0xc
+ add r1, r5, #4
+ add r2, r4, #0
+ bl MOD31_02254A84
+ cmp r0, #0
+ beq _022548EA
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _022548F0 ; =0x02254D98
+ ldr r2, _022548F4 ; =MOD31_022548F8
+ mov r1, #1
+ add r3, r5, #0
+ bl MOD20_02254130
+ str r0, [r5, #0x14]
+ mov r0, #0
+ str r0, [r5, #0x18]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_022548EA:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_022548F0: .word 0x02254D98
+_022548F4: .word MOD31_022548F8
+ thumb_func_end MOD31_0225489C
+
+ thumb_func_start MOD31_022548F8
+MOD31_022548F8: ; 0x022548F8
+ cmp r0, #0
+ bne _022548FE
+ str r1, [r3, #0x18]
+_022548FE:
+ bx lr
+ thumb_func_end MOD31_022548F8
+
+ thumb_func_start MOD31_02254900
+MOD31_02254900: ; 0x02254900
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x14]
+ bl MOD20_02254198
+ ldr r0, [r4, #0xc]
+ bl MOD31_02254AC0
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD31_02254900
+
+ thumb_func_start MOD31_02254918
+MOD31_02254918: ; 0x02254918
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #3
+ bhs _0225494E
+ ldr r0, [r4, #0x10]
+ ldr r1, [r4, #0x14]
+ bl MOD20_02252C14
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _02254950 ; =0x02254D9C
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _0225494E
+ add r0, r4, #0
+ bl MOD31_02254900
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x10]
+ bl MOD20_022529A0
+_0225494E:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02254950: .word 0x02254D9C
+ thumb_func_end MOD31_02254918
+
+ thumb_func_start MOD31_02254954
+MOD31_02254954: ; 0x02254954
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD31_02254954
+
+ thumb_func_start MOD31_0225495C
+MOD31_0225495C: ; 0x0225495C
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254964
+ b _02254966
+_02254964:
+ mov r1, #2
+_02254966:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD31_0225495C
+
+ thumb_func_start MOD31_02254970
+MOD31_02254970: ; 0x02254970
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254980
+ cmp r0, #1
+ beq _02254990
+ b _022549AA
+_02254980:
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ bl MOD31_02254BBC
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549AA
+_02254990:
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ bl MOD31_02254BE0
+ cmp r0, #0
+ beq _022549AA
+ ldr r0, [r4, #0x10]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD31_0225495C
+_022549AA:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD31_02254970
+
+ thumb_func_start MOD31_022549B0
+MOD31_022549B0: ; 0x022549B0
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _022549C4
+ mov r1, #2
+ bl MOD31_0225495C
+ mov r0, #0
+ pop {r4, pc}
+_022549C4:
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _022549D0
+ cmp r0, #1
+ beq _02254A0A
+ b _02254A4C
+_022549D0:
+ ldr r0, [r4, #0x18]
+ cmp r0, #1
+ bne _022549EE
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r4, #0xc]
+ mov r1, #2
+ bl MOD31_02254BBC
+ mov r0, #0
+ str r0, [r4, #0x18]
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A4C
+_022549EE:
+ ldr r0, [r4, #0x10]
+ bl MOD20_02252C34
+ cmp r0, #0
+ beq _02254A4C
+ ldr r0, [r4, #0x1c]
+ bl FUN_0204BF84
+ str r0, [r4, #4]
+ ldr r0, [r4, #0xc]
+ mov r1, #3
+ bl MOD31_02254BBC
+ b _02254A4C
+_02254A0A:
+ ldr r0, [r4, #0x18]
+ cmp r0, #2
+ bne _02254A24
+ mov r0, #1
+ str r0, [r4, #8]
+ ldr r0, [r4, #0xc]
+ mov r1, #2
+ bl MOD31_02254BBC
+ mov r0, #0
+ str r0, [r4, #0x18]
+ strb r0, [r4, #1]
+ b _02254A4C
+_02254A24:
+ cmp r0, #3
+ bne _02254A4C
+ mov r0, #1
+ str r0, [r4, #8]
+ mov r1, #0
+ str r1, [r4, #4]
+ ldr r0, [r4, #0x1c]
+ bl FUN_0204BF88
+ ldr r0, [r4, #0xc]
+ mov r1, #2
+ bl MOD31_02254BBC
+ ldr r0, [r4, #0xc]
+ mov r1, #3
+ bl MOD31_02254BBC
+ mov r0, #0
+ str r0, [r4, #0x18]
+ strb r0, [r4, #1]
+_02254A4C:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD31_022549B0
+
+ thumb_func_start MOD31_02254A50
+MOD31_02254A50: ; 0x02254A50
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A60
+ cmp r0, #1
+ beq _02254A70
+ b _02254A7E
+_02254A60:
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ bl MOD31_02254BBC
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A7E
+_02254A70:
+ ldr r0, [r4, #0xc]
+ bl MOD31_02254BEC
+ cmp r0, #0
+ beq _02254A7E
+ mov r0, #1
+ pop {r4, pc}
+_02254A7E:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD31_02254A50
+
+ thumb_func_start MOD31_02254A84
+MOD31_02254A84: ; 0x02254A84
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r0, #8
+ mov r1, #0x64
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254ABA
+ add r0, #8
+ mov r1, #4
+ bl MOD20_022536F4
+ str r5, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ bl MOD20_02252D24
+ str r0, [r4, #0x20]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD31_02254AD4
+ str r4, [r6]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254ABA:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD31_02254A84
+
+ thumb_func_start MOD31_02254AC0
+MOD31_02254AC0: ; 0x02254AC0
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02254AD0
+ bl MOD31_02254B88
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254AD0:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD31_02254AC0
+
+ thumb_func_start MOD31_02254AD4
+MOD31_02254AD4: ; 0x02254AD4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ add r7, r0, #0
+ str r1, [sp, #0xc]
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #2
+ bl FUN_02006A34
+ mov r0, #0
+ str r0, [sp]
+ mov r2, #1
+ mov r3, #0xa
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x34
+ lsl r3, r3, #8
+ bl FUN_02006A34
+ mov r0, #8
+ str r0, [sp]
+ add r0, r7, #0
+ add r0, #0x3c
+ mov r1, #0xc
+ mov r2, #0x32
+ mov r3, #0x33
+ bl MOD20_02253FBC
+ mov r0, #8
+ str r0, [sp]
+ add r0, r7, #0
+ add r0, #0x50
+ mov r1, #0xc
+ mov r2, #3
+ mov r3, #4
+ bl MOD20_02253FBC
+ add r2, r7, #0
+ ldr r0, [r7, #0x20]
+ ldr r1, _02254B80 ; =0x02254DA8
+ add r2, #0x3c
+ bl MOD20_02253E74
+ mov r1, #0x50
+ str r0, [r7, #0x24]
+ bl MOD20_02253FA4
+ add r0, r7, #0
+ mov r5, #5
+ str r0, [sp, #0x10]
+ add r0, #0x50
+ mov r6, #0
+ add r4, r7, #0
+ lsl r5, r5, #0x10
+ str r0, [sp, #0x10]
+_02254B50:
+ ldr r0, [r7, #0x20]
+ ldr r1, _02254B84 ; =0x02254DB8
+ ldr r2, [sp, #0x10]
+ bl MOD20_02253E74
+ mov r2, #1
+ add r1, r5, #0
+ lsl r2, r2, #0x12
+ str r0, [r4, #0x28]
+ bl MOD20_02253F64
+ mov r0, #1
+ lsl r0, r0, #0x10
+ add r6, r6, #1
+ add r4, r4, #4
+ add r5, r5, r0
+ cmp r6, #5
+ blt _02254B50
+ ldr r1, [sp, #0xc]
+ add r0, r7, #0
+ bl MOD31_02254D1C
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254B80: .word 0x02254DA8
+_02254B84: .word 0x02254DB8
+ thumb_func_end MOD31_02254AD4
+
+ thumb_func_start MOD31_02254B88
+MOD31_02254B88: ; 0x02254B88
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r0, [r6, #0x20]
+ ldr r1, [r6, #0x24]
+ bl MOD20_02253F14
+ mov r4, #0
+ add r5, r6, #0
+_02254B98:
+ ldr r0, [r6, #0x20]
+ ldr r1, [r5, #0x28]
+ bl MOD20_02253F14
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #5
+ blt _02254B98
+ add r0, r6, #0
+ add r0, #0x3c
+ bl MOD20_02254014
+ add r6, #0x50
+ add r0, r6, #0
+ bl MOD20_02254014
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD31_02254B88
+
+ thumb_func_start MOD31_02254BBC
+MOD31_02254BBC: ; 0x02254BBC
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254BDC ; =0x02254DE4
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254BDC: .word 0x02254DE4
+ thumb_func_end MOD31_02254BBC
+
+ thumb_func_start MOD31_02254BE0
+MOD31_02254BE0: ; 0x02254BE0
+ ldr r3, _02254BE8 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254BE8: .word MOD20_02253794
+ thumb_func_end MOD31_02254BE0
+
+ thumb_func_start MOD31_02254BEC
+MOD31_02254BEC: ; 0x02254BEC
+ ldr r3, _02254BF4 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254BF4: .word MOD20_022537B8
+ thumb_func_end MOD31_02254BEC
+
+ thumb_func_start MOD31_02254BF8
+MOD31_02254BF8: ; 0x02254BF8
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD31_02254BF8
+
+ thumb_func_start MOD31_02254C0C
+MOD31_02254C0C: ; 0x02254C0C
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ ldr r2, _02254C90 ; =0x02254DC8
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x31
+ mov r3, #6
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x30
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, _02254C94 ; =0x04001000
+ ldr r0, _02254C98 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #4
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r4, #0
+ bl MOD31_02254BF8
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_02254C90: .word 0x02254DC8
+_02254C94: .word 0x04001000
+_02254C98: .word 0xFFFFE0FF
+ thumb_func_end MOD31_02254C0C
+
+ thumb_func_start MOD31_02254C9C
+MOD31_02254C9C: ; 0x02254C9C
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ ldr r0, [r0, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r4, #0
+ bl MOD31_02254BF8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD31_02254C9C
+
+ thumb_func_start MOD31_02254CB8
+MOD31_02254CB8: ; 0x02254CB8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ ldr r0, [r4]
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ beq _02254CD2
+ cmp r0, #1
+ beq _02254CE2
+ b _02254CEA
+_02254CD2:
+ ldr r0, _02254CF4 ; =0x00000669
+ bl MOD20_02252B28
+ ldr r0, [r4, #0x24]
+ mov r1, #1
+ bl MOD20_02253F28
+ b _02254CEA
+_02254CE2:
+ ldr r0, [r4, #0x24]
+ mov r1, #0
+ bl MOD20_02253F28
+_02254CEA:
+ add r0, r5, #0
+ bl MOD31_02254BF8
+ pop {r3, r4, r5, pc}
+ nop
+_02254CF4: .word 0x00000669
+ thumb_func_end MOD31_02254CB8
+
+ thumb_func_start MOD31_02254CF8
+MOD31_02254CF8: ; 0x02254CF8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD31_02254D1C
+ add r0, r5, #0
+ bl MOD31_02254BF8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD31_02254CF8
+
+ thumb_func_start MOD31_02254D1C
+MOD31_02254D1C: ; 0x02254D1C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r7, r0, #0
+ ldr r0, [r1]
+ ldr r5, _02254D80 ; =0x04000280
+ str r0, [sp, #4]
+ ldr r0, _02254D84 ; =0x00002710
+ lsr r4, r5, #0xb
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #8]
+ lsr r6, r5, #0xb
+_02254D34:
+ mov r0, #0
+ strh r0, [r5]
+ ldr r1, [sp, #4]
+ ldr r0, _02254D88 ; =0x04000290
+ str r1, [r0]
+ ldr r1, [sp]
+ str r1, [r0, #8]
+ ldr r0, _02254D8C ; =0x04000298
+ mov r1, #0
+ str r1, [r0, #4]
+_02254D48:
+ ldrh r0, [r5]
+ tst r0, r4
+ bne _02254D48
+ ldr r1, _02254D90 ; =0x040002A0
+ ldr r0, [r7, #0x28]
+ ldr r1, [r1]
+ bl MOD20_02253F28
+_02254D58:
+ ldrh r0, [r5]
+ tst r0, r6
+ bne _02254D58
+ ldr r0, _02254D94 ; =0x040002A8
+ mov r1, #0xa
+ ldr r0, [r0]
+ str r0, [sp, #4]
+ ldr r0, [sp]
+ bl _u32_div_f
+ str r0, [sp]
+ ldr r0, [sp, #8]
+ add r7, r7, #4
+ add r0, r0, #1
+ str r0, [sp, #8]
+ cmp r0, #5
+ blt _02254D34
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02254D80: .word 0x04000280
+_02254D84: .word 0x00002710
+_02254D88: .word 0x04000290
+_02254D8C: .word 0x04000298
+_02254D90: .word 0x040002A0
+_02254D94: .word 0x040002A8
+ thumb_func_end MOD31_02254D1C
+
+ .section .data
+ ; 0x02254D98
+ .incbin "baserom.nds", 0x28D758, 0xA8