summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-05-05 14:34:34 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2020-05-05 14:34:34 -0400
commita74c3668320c3939cc12ca32b861363f9f9d4748 (patch)
treef9d916bfb6dfdf413ebbf2747b05025397f4a7f4
parent0bf46cacd62ee0f306ff04ed5f60cbb4331c5bb9 (diff)
Disassemble module 24
-rw-r--r--arm9/global.inc6
-rw-r--r--arm9/modules/24/asm/module_24.s1184
2 files changed, 1190 insertions, 0 deletions
diff --git a/arm9/global.inc b/arm9/global.inc
index dc4275d4..a84d60a4 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -5405,6 +5405,12 @@
.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
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