summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/arm9.lcf28
-rw-r--r--arm9/global.inc6
-rw-r--r--arm9/modules/48/asm/module_48.s960
3 files changed, 990 insertions, 4 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf
index f460e588..ab2c63dd 100644
--- a/arm9/arm9.lcf
+++ b/arm9/arm9.lcf
@@ -1921,10 +1921,21 @@ SECTIONS {
SDK_OVERLAY.MODULE_47.BSS_SIZE = SDK_OVERLAY.MODULE_47.BSS_END - SDK_OVERLAY.MODULE_47.BSS_START;
} >> MODULE_47
- .MODULE.48: {
+ .MODULE.48 :
+ {
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_48.START = .;
- FILE_297600.o (.text) /* 0x293600 */
+ module_48.o (.text)
+ module_48.o (.rodata)
+ module_48.o (.init)
+ SDK_OVERLAY.MODULE_48.SINIT_START = .;
+ module_48.o (.ctor)
+ module_48.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_48.SINIT_END = .;
+ . = ALIGN(32);
+ module_48.o (.sdata)
+ module_48.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_48.END = .;
SDK_OVERLAY.MODULE_48.SIZE = SDK_OVERLAY.MODULE_48.END - SDK_OVERLAY.MODULE_48.START;
@@ -1934,7 +1945,8 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_48.BSS_START = .;
- FILE_297600.o (.bss)
+ module_48.o (.sbss)
+ module_48.o (.bss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_48.BSS_END = .;
SDK_OVERLAY.MODULE_48.BSS_SIZE = SDK_OVERLAY.MODULE_48.BSS_END - SDK_OVERLAY.MODULE_48.BSS_START;
@@ -3217,7 +3229,15 @@ SECTIONS {
WRITEW SDK_OVERLAY_MODULE_47_ID;
WRITEW 0;
- OVERLAY_TABLE(MODULE_48, 48)
+ WRITEW SDK_OVERLAY_MODULE_48_ID;
+ WRITEW SDK_OVERLAY.MODULE_48.START;
+ WRITEW SDK_OVERLAY.MODULE_48.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_48.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_48.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_48.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_48_ID;
+ WRITEW 0;
+
OVERLAY_TABLE(MODULE_49, 49)
OVERLAY_TABLE(MODULE_50, 50)
OVERLAY_TABLE(MODULE_51, 51)
diff --git a/arm9/global.inc b/arm9/global.inc
index fea912dc..726e3337 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -2674,6 +2674,12 @@
.extern FUN_02032C0C
.extern FUN_02032C28
.extern FUN_02034984
+.extern MOD06_022457A8
+.extern MOD06_022457CC
+.extern MOD06_022457F8
+.extern MOD06_02245824
+.extern MOD06_0224582C
+.extern MOD20_02253F6C
.extern MOD20_02254420
.extern MOD20_02254460
.extern MOD20_02254488
diff --git a/arm9/modules/48/asm/module_48.s b/arm9/modules/48/asm/module_48.s
new file mode 100644
index 00000000..bcb3b7b4
--- /dev/null
+++ b/arm9/modules/48/asm/module_48.s
@@ -0,0 +1,960 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD48_02254840
+MOD48_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD48_02254854
+ ldr r1, _02254850 ; =MOD48_0225498C
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD48_02254854
+_02254850: .word MOD48_0225498C
+ thumb_func_end MOD48_02254840
+
+ thumb_func_start MOD48_02254854
+MOD48_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x40
+ 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 MOD48_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD48_02254950
+ 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 MOD48_02254950
+ thumb_func_end MOD48_02254854
+
+ thumb_func_start MOD48_0225489C
+MOD48_0225489C: ; 0x0225489C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r7, r0, #0
+ add r0, r1, #0
+ str r1, [sp, #4]
+ str r2, [sp, #8]
+ bl MOD20_02252C38
+ add r6, r0, #0
+ bl MOD06_02245824
+ str r0, [r7, #8]
+ cmp r0, #0
+ beq _022548C0
+ add r0, r6, #0
+ bl MOD06_0224582C
+ b _022548C2
+_022548C0:
+ mov r0, #0
+_022548C2:
+ str r0, [r7, #4]
+ mov r4, #0
+ add r5, r7, #0
+_022548C8:
+ lsl r1, r4, #0x18
+ add r0, r6, #0
+ lsr r1, r1, #0x18
+ bl MOD06_022457F8
+ lsl r1, r4, #0x18
+ str r0, [r5, #0x18]
+ add r0, r6, #0
+ lsr r1, r1, #0x18
+ bl MOD06_022457CC
+ str r0, [r5, #0xc]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #3
+ blt _022548C8
+ add r0, r6, #0
+ bl MOD06_022457A8
+ str r0, [r7, #0x24]
+ add r0, r7, #0
+ ldr r2, [sp, #8]
+ add r0, #0x2c
+ add r1, r7, #4
+ bl MOD48_02254AA0
+ cmp r0, #0
+ beq _0225492A
+ mov r0, #0
+ strb r0, [r7]
+ strb r0, [r7, #1]
+ strb r0, [r7, #2]
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _02254930 ; =0x02254F60
+ ldr r2, _02254934 ; =MOD48_02254994
+ mov r1, #3
+ add r3, r7, #0
+ bl MOD20_02254130
+ str r0, [r7, #0x34]
+ mov r0, #0
+ str r0, [r7, #0x38]
+ str r0, [r7, #0x3c]
+ ldr r0, [sp, #4]
+ add sp, #0xc
+ str r0, [r7, #0x30]
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_0225492A:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254930: .word 0x02254F60
+_02254934: .word MOD48_02254994
+ thumb_func_end MOD48_0225489C
+
+ thumb_func_start MOD48_02254938
+MOD48_02254938: ; 0x02254938
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x34]
+ bl MOD20_02254198
+ ldr r0, [r4, #0x2c]
+ bl MOD48_02254AD4
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD48_02254938
+
+ thumb_func_start MOD48_02254950
+MOD48_02254950: ; 0x02254950
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #3
+ bhs _02254986
+ ldr r0, [r4, #0x30]
+ ldr r1, [r4, #0x34]
+ bl MOD20_02252C14
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _02254988 ; =0x02254F6C
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254986
+ add r0, r4, #0
+ bl MOD48_02254938
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x30]
+ bl MOD20_022529A0
+_02254986:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02254988: .word 0x02254F6C
+ thumb_func_end MOD48_02254950
+
+ thumb_func_start MOD48_0225498C
+MOD48_0225498C: ; 0x0225498C
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD48_0225498C
+
+ thumb_func_start MOD48_02254994
+MOD48_02254994: ; 0x02254994
+ str r0, [r3, #0x3c]
+ str r1, [r3, #0x38]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD48_02254994
+
+ thumb_func_start MOD48_0225499C
+MOD48_0225499C: ; 0x0225499C
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _022549A4
+ b _022549A6
+_022549A4:
+ mov r1, #2
+_022549A6:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD48_0225499C
+
+ thumb_func_start MOD48_022549B0
+MOD48_022549B0: ; 0x022549B0
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _022549C0
+ cmp r0, #1
+ beq _022549D0
+ b _022549EA
+_022549C0:
+ ldr r0, [r4, #0x2c]
+ mov r1, #0
+ bl MOD48_02254AE0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549EA
+_022549D0:
+ ldr r0, [r4, #0x2c]
+ mov r1, #0
+ bl MOD48_02254B04
+ cmp r0, #0
+ beq _022549EA
+ ldr r0, [r4, #0x30]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD48_0225499C
+_022549EA:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD48_022549B0
+
+ thumb_func_start MOD48_022549F0
+MOD48_022549F0: ; 0x022549F0
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _02254A04
+ mov r1, #2
+ bl MOD48_0225499C
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_02254A04:
+ ldr r0, [r4, #0x30]
+ bl MOD20_02252C38
+ add r5, r0, #0
+ bl MOD06_02245824
+ str r0, [r4, #8]
+ cmp r0, #0
+ bne _02254A1A
+ mov r0, #0
+ b _02254A20
+_02254A1A:
+ add r0, r5, #0
+ bl MOD06_0224582C
+_02254A20:
+ ldr r1, [r4, #4]
+ cmp r0, r1
+ beq _02254A34
+ str r0, [r4, #4]
+ ldr r0, [r4, #0x2c]
+ mov r1, #2
+ bl MOD48_02254AE0
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_02254A34:
+ ldr r0, [r4, #0x2c]
+ mov r1, #3
+ bl MOD48_02254B04
+ cmp r0, #0
+ beq _02254A66
+ ldr r0, [r4, #0x38]
+ cmp r0, #1
+ bne _02254A66
+ ldr r1, [r4, #0x3c]
+ ldr r0, [r4, #0x24]
+ cmp r1, r0
+ bhs _02254A62
+ lsl r0, r1, #2
+ add r0, r4, r0
+ ldr r0, [r0, #0x18]
+ cmp r0, #0
+ beq _02254A62
+ str r1, [r4, #0x28]
+ ldr r0, [r4, #0x2c]
+ mov r1, #3
+ bl MOD48_02254AE0
+_02254A62:
+ mov r0, #0
+ str r0, [r4, #0x38]
+_02254A66:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD48_022549F0
+
+ thumb_func_start MOD48_02254A6C
+MOD48_02254A6C: ; 0x02254A6C
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A7C
+ cmp r0, #1
+ beq _02254A8C
+ b _02254A9A
+_02254A7C:
+ ldr r0, [r4, #0x2c]
+ mov r1, #1
+ bl MOD48_02254AE0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A9A
+_02254A8C:
+ ldr r0, [r4, #0x2c]
+ bl MOD48_02254B10
+ cmp r0, #0
+ beq _02254A9A
+ mov r0, #1
+ pop {r4, pc}
+_02254A9A:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD48_02254A6C
+
+ thumb_func_start MOD48_02254AA0
+MOD48_02254AA0: ; 0x02254AA0
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0xb0
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254ACE
+ add r0, #8
+ mov r1, #4
+ bl MOD20_022536F4
+ str r6, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ bl MOD20_02252D24
+ str r0, [r4, #0x20]
+ str r4, [r5]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254ACE:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD48_02254AA0
+
+ thumb_func_start MOD48_02254AD4
+MOD48_02254AD4: ; 0x02254AD4
+ push {r3, lr}
+ cmp r0, #0
+ beq _02254ADE
+ bl FUN_02016A18
+_02254ADE:
+ pop {r3, pc}
+ thumb_func_end MOD48_02254AD4
+
+ thumb_func_start MOD48_02254AE0
+MOD48_02254AE0: ; 0x02254AE0
+ 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, _02254B00 ; =0x02254F94
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254B00: .word 0x02254F94
+ thumb_func_end MOD48_02254AE0
+
+ thumb_func_start MOD48_02254B04
+MOD48_02254B04: ; 0x02254B04
+ ldr r3, _02254B0C ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254B0C: .word MOD20_02253794
+ thumb_func_end MOD48_02254B04
+
+ thumb_func_start MOD48_02254B10
+MOD48_02254B10: ; 0x02254B10
+ ldr r3, _02254B18 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254B18: .word MOD20_022537B8
+ thumb_func_end MOD48_02254B10
+
+ thumb_func_start MOD48_02254B1C
+MOD48_02254B1C: ; 0x02254B1C
+ 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 MOD48_02254B1C
+
+ thumb_func_start MOD48_02254B30
+MOD48_02254B30: ; 0x02254B30
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r6, r0, #0
+ ldr r0, [r4, #4]
+ ldr r2, _02254BBC ; =0x02254F78
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0xc
+ mov r1, #0x7a
+ mov r3, #6
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0xc
+ mov r1, #0x79
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD48_02254D2C
+ 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, #4
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r5, #0
+ bl MOD48_02254B1C
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02254BBC: .word 0x02254F78
+_02254BC0: .word 0x04001000
+_02254BC4: .word 0xFFFFE0FF
+ thumb_func_end MOD48_02254B30
+
+ thumb_func_start MOD48_02254BC8
+MOD48_02254BC8: ; 0x02254BC8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ bl MOD48_02254EC0
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r5, #0
+ bl MOD48_02254B1C
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD48_02254BC8
+
+ thumb_func_start MOD48_02254BE8
+MOD48_02254BE8: ; 0x02254BE8
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r1, #0
+ add r0, r7, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ add r0, r7, #0
+ bl MOD20_022538A4
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _02254C3C
+ mov r1, #0
+ add r2, r1, #0
+ bl FUN_0206B6D4
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0xac
+ mov r2, #1
+ ldr r0, [r0]
+ add r1, sp, #0
+ add r3, r2, #0
+ bl MOD20_02253A04
+ mov r1, #0
+ ldr r0, [r4]
+ add r2, r1, #0
+ bl FUN_0206B7BC
+ add r1, r0, #0
+ ldr r0, [r5, #0x24]
+ add r1, r1, #1
+ bl MOD20_02253F9C
+ add r5, #0x34
+ ldr r1, [r4, #4]
+ add r0, r5, #0
+ bl MOD48_02254EF4
+ b _02254C58
+_02254C3C:
+ ldr r0, [r5, #0x24]
+ mov r1, #1
+ bl MOD20_02253F78
+ mov r4, #0
+ mov r6, #1
+_02254C48:
+ ldr r0, [r5, #0x34]
+ add r1, r6, #0
+ bl MOD20_02253F78
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #3
+ blt _02254C48
+_02254C58:
+ add r0, r7, #0
+ bl MOD48_02254B1C
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD48_02254BE8
+
+ thumb_func_start MOD48_02254C60
+MOD48_02254C60: ; 0x02254C60
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r1, #0
+ add r0, r7, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r7, #0
+ bl MOD20_022538A4
+ add r6, r0, #0
+ add r0, r7, #0
+ bl MOD20_022538AC
+ add r5, r0, #0
+ beq _02254C84
+ cmp r5, #0x10
+ beq _02254CFE
+ b _02254CC6
+_02254C84:
+ ldr r0, [r6, #0x24]
+ add r2, r4, #0
+ add r0, r0, #1
+ lsl r0, r0, #2
+ add r0, r4, r0
+ ldr r1, [r0, #0x24]
+ add r0, r4, #0
+ add r0, #0x9c
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x9c
+ add r1, r4, #0
+ ldr r0, [r0]
+ add r1, #0xa4
+ add r2, #0xa0
+ bl MOD20_02253F6C
+ ldr r0, [r6, #0x24]
+ lsl r0, r0, #2
+ add r0, r6, r0
+ ldr r0, [r0, #8]
+ bl MOD20_02252B48
+ add r0, r4, #0
+ add r0, #0x9c
+ ldr r0, [r0]
+ mov r1, #6
+ bl MOD20_02253F28
+ add r0, r7, #0
+ bl MOD20_022538B0
+ add r5, r5, #1
+_02254CC6:
+ add r0, r4, #0
+ add r1, r4, #0
+ add r4, #0xa0
+ mov r3, #0x2d
+ ldr r2, [r4]
+ lsl r3, r3, #0xa
+ add r4, r5, #0
+ mul r4, r3
+ mov r3, #2
+ lsl r3, r3, #0xa
+ add r3, r4, r3
+ asr r3, r3, #0xc
+ lsl r4, r3, #2
+ ldr r3, _02254D28 ; =0x020EDF50
+ add r0, #0x9c
+ ldr r4, [r3, r4]
+ add r1, #0xa4
+ mov r3, #0x18
+ mul r3, r4
+ ldr r0, [r0]
+ ldr r1, [r1]
+ sub r2, r2, r3
+ bl MOD20_02253F64
+ add r0, r7, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, r6, r7, pc}
+_02254CFE:
+ add r0, r4, #0
+ add r1, r4, #0
+ add r2, r4, #0
+ add r0, #0x9c
+ add r1, #0xa4
+ add r2, #0xa0
+ ldr r0, [r0]
+ ldr r1, [r1]
+ ldr r2, [r2]
+ bl MOD20_02253F64
+ add r4, #0x9c
+ ldr r0, [r4]
+ mov r1, #4
+ bl MOD20_02253F28
+ add r0, r7, #0
+ bl MOD48_02254B1C
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254D28: .word 0x020EDF50
+ thumb_func_end MOD48_02254C60
+
+ thumb_func_start MOD48_02254D2C
+MOD48_02254D2C: ; 0x02254D2C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x40
+ add r4, r0, #0
+ mov r0, #8
+ str r0, [sp]
+ add r0, r4, #0
+ str r1, [sp, #0xc]
+ add r0, #0x78
+ mov r1, #0xc
+ mov r2, #5
+ mov r3, #6
+ bl MOD20_02253FBC
+ mov r0, #8
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0x64
+ mov r1, #0xc
+ mov r2, #0x7b
+ mov r3, #0x7c
+ bl MOD20_02253FBC
+ 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, #0x7d
+ bl FUN_02006A34
+ add r1, r4, #0
+ lsr r0, r0, #5
+ add r1, #0xac
+ str r0, [r1]
+ str r0, [sp, #0x28]
+ ldr r0, [sp, #0xc]
+ ldr r2, [sp, #0xc]
+ ldr r0, [r0]
+ mov r1, #0
+ str r0, [sp, #0x30]
+ add r3, sp, #0x30
+_02254D82:
+ ldr r0, [r2, #8]
+ add r1, r1, #1
+ str r0, [r3, #4]
+ add r2, r2, #4
+ add r3, r3, #4
+ cmp r1, #3
+ blt _02254D82
+ mov r7, #0
+ add r5, sp, #0x30
+ add r6, r4, #0
+_02254D96:
+ ldr r0, [r5]
+ cmp r0, #0
+ bne _02254D9E
+ mov r0, #1
+_02254D9E:
+ mov r1, #0
+ add r2, r1, #0
+ bl FUN_0206B6D4
+ add r1, r6, #0
+ add r1, #0x8c
+ add r7, r7, #1
+ str r0, [r1]
+ add r5, r5, #4
+ add r6, r6, #4
+ cmp r7, #4
+ blt _02254D96
+ add r1, r4, #0
+ ldr r0, [sp, #0x28]
+ add r1, #0x8c
+ mov r2, #4
+ mov r3, #1
+ bl MOD20_02253A04
+ mov r0, #1
+ bl MOD20_022539C4
+ mov r2, #0
+ add r0, r2, #0
+ add r1, r4, #0
+ str r0, [sp, #0x10]
+_02254DD2:
+ ldr r0, [sp, #0x10]
+ add r2, r2, #1
+ str r0, [r1, #0x24]
+ add r1, r1, #4
+ cmp r2, #0x10
+ blt _02254DD2
+ ldr r0, _02254EBC ; =0x02254FD0
+ str r4, [sp, #0x20]
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x10]
+ mov r6, #4
+ str r0, [sp, #0x1c]
+ add r0, sp, #0x30
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0xc]
+ str r0, [sp, #0x14]
+_02254DF2:
+ add r2, r4, #0
+ ldr r0, [r4, #0x20]
+ ldr r1, [sp, #0x24]
+ add r2, #0x78
+ bl MOD20_02253E74
+ ldr r1, [sp, #0x20]
+ ldr r2, [sp, #0x28]
+ str r0, [r1, #0x24]
+ ldr r1, [sp, #0x1c]
+ add r1, r2, r1
+ bl MOD20_02253FA4
+ add r0, r4, #0
+ str r0, [sp, #0x2c]
+ add r0, #0x64
+ mov r5, #0
+ str r0, [sp, #0x2c]
+_02254E16:
+ add r7, r5, r6
+ ldr r1, _02254EBC ; =0x02254FD0
+ lsl r2, r7, #4
+ add r1, r1, r2
+ ldr r0, [r4, #0x20]
+ ldr r2, [sp, #0x2c]
+ bl MOD20_02253E74
+ lsl r1, r7, #2
+ add r1, r4, r1
+ add r5, r5, #1
+ str r0, [r1, #0x24]
+ cmp r5, #3
+ blt _02254E16
+ ldr r0, [sp, #0x18]
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _02254E5E
+ ldr r0, [sp, #0x20]
+ mov r1, #1
+ ldr r0, [r0, #0x24]
+ bl MOD20_02253F78
+ mov r5, #0
+ mov r7, #1
+_02254E48:
+ add r0, r5, r6
+ lsl r0, r0, #2
+ add r0, r4, r0
+ ldr r0, [r0, #0x24]
+ add r1, r7, #0
+ bl MOD20_02253F78
+ add r5, r5, #1
+ cmp r5, #3
+ blt _02254E48
+ b _02254E8E
+_02254E5E:
+ mov r1, #0
+ add r2, r1, #0
+ bl FUN_0206B7BC
+ add r1, r0, #0
+ ldr r0, [sp, #0x20]
+ add r1, r1, #1
+ ldr r0, [r0, #0x24]
+ bl MOD20_02253F9C
+ ldr r0, [sp, #0x10]
+ cmp r0, #0
+ bne _02254E7E
+ ldr r0, [sp, #0xc]
+ ldr r1, [r0, #4]
+ b _02254E82
+_02254E7E:
+ ldr r0, [sp, #0x14]
+ ldr r1, [r0, #0x10]
+_02254E82:
+ add r2, r4, #0
+ add r2, #0x24
+ lsl r0, r6, #2
+ add r0, r2, r0
+ bl MOD48_02254EF4
+_02254E8E:
+ ldr r0, [sp, #0x24]
+ add r6, r6, #3
+ add r0, #0x10
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x20]
+ add r0, r0, #4
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x1c]
+ add r0, #0x20
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x18]
+ add r0, r0, #4
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x14]
+ add r0, r0, #4
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x10]
+ add r0, r0, #1
+ str r0, [sp, #0x10]
+ cmp r0, #4
+ blt _02254DF2
+ add sp, #0x40
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254EBC: .word 0x02254FD0
+ thumb_func_end MOD48_02254D2C
+
+ thumb_func_start MOD48_02254EC0
+MOD48_02254EC0: ; 0x02254EC0
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+ add r7, r4, #0
+_02254ECA:
+ ldr r1, [r5, #0x24]
+ cmp r1, #0
+ beq _02254ED8
+ ldr r0, [r6, #0x20]
+ bl MOD20_02253F14
+ str r7, [r5, #0x24]
+_02254ED8:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0x10
+ blt _02254ECA
+ add r0, r6, #0
+ add r0, #0x78
+ bl MOD20_02254014
+ add r6, #0x64
+ add r0, r6, #0
+ bl MOD20_02254014
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD48_02254EC0
+
+ thumb_func_start MOD48_02254EF4
+MOD48_02254EF4: ; 0x02254EF4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ str r1, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r1, _02254F5C ; =0x000003E7
+ ldr r0, [sp]
+ cmp r0, r1
+ bls _02254F0A
+ str r1, [sp]
+_02254F0A:
+ mov r4, #0
+ mov r6, #0x64
+_02254F0E:
+ ldr r0, [sp]
+ add r1, r6, #0
+ bl _u32_div_f
+ add r7, r0, #0
+ ldr r0, [sp, #4]
+ cmp r0, #1
+ beq _02254F26
+ cmp r7, #0
+ bne _02254F26
+ cmp r4, #2
+ bne _02254F34
+_02254F26:
+ ldr r0, [r5]
+ add r1, r7, #0
+ bl MOD20_02253F28
+ mov r0, #1
+ str r0, [sp, #4]
+ b _02254F3C
+_02254F34:
+ ldr r0, [r5]
+ mov r1, #1
+ bl MOD20_02253F78
+_02254F3C:
+ add r1, r7, #0
+ ldr r0, [sp]
+ mul r1, r6
+ sub r0, r0, r1
+ str r0, [sp]
+ add r0, r6, #0
+ mov r1, #0xa
+ add r5, r5, #4
+ add r4, r4, #1
+ bl _s32_div_f
+ add r6, r0, #0
+ cmp r4, #3
+ blt _02254F0E
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254F5C: .word 0x000003E7
+ thumb_func_end MOD48_02254EF4
+
+ .section .rodata
+ ; 0x02254F60
+ .incbin "baserom.nds", 0x297d20, 0x170
+
+ .section .sinit
+ .word MOD48_02254840