summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-05-11 08:24:37 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2020-05-11 08:24:37 -0400
commit72753a7b4b6bea9b35314dff70995fb7d415413a (patch)
treee675d23a32cce7ab0bdb1399257c1aef31db0240
parent0db97c387490270d29d1a09f3dc24270fb619da7 (diff)
Disassemble module 38
-rw-r--r--arm9/arm9.lcf28
-rw-r--r--arm9/modules/38/asm/module_38.s1193
2 files changed, 1217 insertions, 4 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf
index 6c87f90a..201fbfe5 100644
--- a/arm9/arm9.lcf
+++ b/arm9/arm9.lcf
@@ -1611,10 +1611,21 @@ SECTIONS {
SDK_OVERLAY.MODULE_37.BSS_SIZE = SDK_OVERLAY.MODULE_37.BSS_END - SDK_OVERLAY.MODULE_37.BSS_START;
} >> MODULE_37
- .MODULE.38: {
+ .MODULE.38 :
+ {
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_38.START = .;
- FILE_290600.o (.text) /* 0x28C600 */
+ module_38.o (.text)
+ module_38.o (.rodata)
+ module_38.o (.init)
+ SDK_OVERLAY.MODULE_38.SINIT_START = .;
+ module_38.o (.ctor)
+ module_38.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_38.SINIT_END = .;
+ . = ALIGN(32);
+ module_38.o (.sdata)
+ module_38.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_38.END = .;
SDK_OVERLAY.MODULE_38.SIZE = SDK_OVERLAY.MODULE_38.END - SDK_OVERLAY.MODULE_38.START;
@@ -1624,7 +1635,8 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_38.BSS_START = .;
- FILE_290600.o (.bss)
+ module_38.o (.sbss)
+ module_38.o (.bss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_38.BSS_END = .;
SDK_OVERLAY.MODULE_38.BSS_SIZE = SDK_OVERLAY.MODULE_38.BSS_END - SDK_OVERLAY.MODULE_38.BSS_START;
@@ -3007,7 +3019,15 @@ SECTIONS {
WRITEW SDK_OVERLAY_MODULE_37_ID;
WRITEW 0;
- OVERLAY_TABLE(MODULE_38, 38)
+ WRITEW SDK_OVERLAY_MODULE_38_ID;
+ WRITEW SDK_OVERLAY.MODULE_38.START;
+ WRITEW SDK_OVERLAY.MODULE_38.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_38.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_38.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_38.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_38_ID;
+ WRITEW 0;
+
OVERLAY_TABLE(MODULE_39, 39)
OVERLAY_TABLE(MODULE_40, 40)
OVERLAY_TABLE(MODULE_41, 41)
diff --git a/arm9/modules/38/asm/module_38.s b/arm9/modules/38/asm/module_38.s
new file mode 100644
index 00000000..e6f0160a
--- /dev/null
+++ b/arm9/modules/38/asm/module_38.s
@@ -0,0 +1,1193 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD38_02254840
+MOD38_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD38_02254854
+ ldr r1, _02254850 ; =MOD38_02254990
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD38_02254854
+_02254850: .word MOD38_02254990
+ thumb_func_end MOD38_02254840
+
+ thumb_func_start MOD38_02254854
+MOD38_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x24
+ 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 MOD38_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD38_0225494C
+ 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 MOD38_0225494C
+ thumb_func_end MOD38_02254854
+
+ thumb_func_start MOD38_0225489C
+MOD38_0225489C: ; 0x0225489C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r4, r1, #0
+ add r1, r5, #0
+ add r6, r2, #0
+ add r0, r3, #0
+ add r1, #8
+ mov r2, #0xc
+ str r3, [r5, #4]
+ bl FUN_02089418
+ cmp r0, #0
+ bne _022548C0
+ add r0, r5, #0
+ add r0, #8
+ bl MOD38_02254908
+_022548C0:
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0x14
+ add r1, #8
+ add r2, r6, #0
+ bl MOD38_02254BC4
+ cmp r0, #0
+ beq _022548F8
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _02254900 ; =0x0225511C
+ ldr r2, _02254904 ; =MOD38_02254988
+ mov r1, #6
+ add r3, r5, #0
+ bl MOD20_02254130
+ str r0, [r5, #0x1c]
+ mov r0, #0
+ str r0, [r5, #0x20]
+ add sp, #4
+ str r4, [r5, #0x18]
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_022548F8:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02254900: .word 0x0225511C
+_02254904: .word MOD38_02254988
+ thumb_func_end MOD38_0225489C
+
+ thumb_func_start MOD38_02254908
+MOD38_02254908: ; 0x02254908
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [r4]
+ strh r0, [r4, #6]
+ strh r0, [r4, #8]
+ mov r0, #0x12
+ strh r0, [r4, #0xa]
+ ldrh r0, [r4, #6]
+ ldrh r1, [r4, #8]
+ ldrh r2, [r4, #0xa]
+ bl MOD38_02254B2C
+ strh r0, [r4, #4]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD38_02254908
+
+ thumb_func_start MOD38_02254928
+MOD38_02254928: ; 0x02254928
+ push {r4, lr}
+ add r4, r0, #0
+ add r1, r4, #0
+ ldr r0, [r4, #4]
+ add r1, #8
+ mov r2, #0xc
+ bl FUN_020893F0
+ ldr r0, [r4, #0x1c]
+ bl MOD20_02254198
+ ldr r0, [r4, #0x14]
+ bl MOD38_02254D04
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD38_02254928
+
+ thumb_func_start MOD38_0225494C
+MOD38_0225494C: ; 0x0225494C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #3
+ bhs _02254982
+ ldr r0, [r4, #0x18]
+ ldr r1, [r4, #0x1c]
+ bl MOD20_02252C14
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _02254984 ; =0x02255110
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254982
+ add r0, r4, #0
+ bl MOD38_02254928
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x18]
+ bl MOD20_022529A0
+_02254982:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02254984: .word 0x02255110
+ thumb_func_end MOD38_0225494C
+
+ thumb_func_start MOD38_02254988
+MOD38_02254988: ; 0x02254988
+ str r0, [r3, #8]
+ str r1, [r3, #0x20]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD38_02254988
+
+ thumb_func_start MOD38_02254990
+MOD38_02254990: ; 0x02254990
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD38_02254990
+
+ thumb_func_start MOD38_02254998
+MOD38_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 MOD38_02254998
+
+ thumb_func_start MOD38_022549AC
+MOD38_022549AC: ; 0x022549AC
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _022549BC
+ cmp r0, #1
+ beq _022549CC
+ b _022549E6
+_022549BC:
+ ldr r0, [r4, #0x14]
+ mov r1, #0
+ bl MOD38_02254D34
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549E6
+_022549CC:
+ ldr r0, [r4, #0x14]
+ mov r1, #0
+ bl MOD38_02254D58
+ cmp r0, #0
+ beq _022549E6
+ ldr r0, [r4, #0x18]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD38_02254998
+_022549E6:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD38_022549AC
+
+ thumb_func_start MOD38_022549EC
+MOD38_022549EC: ; 0x022549EC
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #2]
+ cmp r0, #0
+ beq _02254A0C
+ ldr r0, [r4, #0x14]
+ bl MOD38_02254D64
+ cmp r0, #0
+ beq _02254A08
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD38_02254998
+_02254A08:
+ mov r0, #0
+ pop {r4, pc}
+_02254A0C:
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A1C
+ cmp r0, #1
+ beq _02254A32
+ cmp r0, #2
+ beq _02254AE4
+ b _02254AF2
+_02254A1C:
+ ldr r0, [r4, #0x20]
+ cmp r0, #1
+ bne _02254AF2
+ ldr r0, [r4, #0x14]
+ mov r1, #2
+ bl MOD38_02254D34
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254AF2
+_02254A32:
+ ldr r0, [r4, #0x20]
+ cmp r0, #2
+ bne _02254A46
+ ldr r0, [r4, #0x14]
+ mov r1, #3
+ bl MOD38_02254D34
+ mov r0, #0
+ strb r0, [r4, #1]
+ b _02254AF2
+_02254A46:
+ cmp r0, #3
+ bne _02254AF2
+ ldr r0, [r4, #8]
+ cmp r0, #5
+ bhi _02254AC0
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02254A5C: ; jump table
+ .short _02254A68 - _02254A5C - 2 ; case 0
+ .short _02254A78 - _02254A5C - 2 ; case 1
+ .short _02254A86 - _02254A5C - 2 ; case 2
+ .short _02254A96 - _02254A5C - 2 ; case 3
+ .short _02254AA4 - _02254A5C - 2 ; case 4
+ .short _02254AB4 - _02254A5C - 2 ; case 5
+_02254A68:
+ ldrh r0, [r4, #0xe]
+ mov r1, #0
+ mvn r1, r1
+ mov r2, #0
+ bl MOD38_02254B6C
+ strh r0, [r4, #0xe]
+ b _02254AC0
+_02254A78:
+ ldrh r0, [r4, #0xe]
+ mov r1, #1
+ mov r2, #0
+ bl MOD38_02254B6C
+ strh r0, [r4, #0xe]
+ b _02254AC0
+_02254A86:
+ ldrh r0, [r4, #0x10]
+ mov r1, #0
+ mvn r1, r1
+ mov r2, #0
+ bl MOD38_02254B6C
+ strh r0, [r4, #0x10]
+ b _02254AC0
+_02254A96:
+ ldrh r0, [r4, #0x10]
+ mov r1, #1
+ mov r2, #0
+ bl MOD38_02254B6C
+ strh r0, [r4, #0x10]
+ b _02254AC0
+_02254AA4:
+ ldrh r0, [r4, #0x12]
+ mov r1, #0
+ mvn r1, r1
+ mov r2, #1
+ bl MOD38_02254B6C
+ strh r0, [r4, #0x12]
+ b _02254AC0
+_02254AB4:
+ ldrh r0, [r4, #0x12]
+ mov r1, #1
+ add r2, r1, #0
+ bl MOD38_02254B6C
+ strh r0, [r4, #0x12]
+_02254AC0:
+ ldrh r0, [r4, #0xe]
+ ldrh r1, [r4, #0x10]
+ ldrh r2, [r4, #0x12]
+ bl MOD38_02254B2C
+ strh r0, [r4, #0xc]
+ ldr r0, [r4, #0x14]
+ mov r1, #3
+ bl MOD38_02254D34
+ ldr r0, [r4, #0x14]
+ mov r1, #4
+ bl MOD38_02254D34
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254AF2
+_02254AE4:
+ ldr r0, [r4, #0x14]
+ bl MOD38_02254D64
+ cmp r0, #0
+ beq _02254AF2
+ mov r0, #0
+ strb r0, [r4, #1]
+_02254AF2:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD38_022549EC
+
+ thumb_func_start MOD38_02254AF8
+MOD38_02254AF8: ; 0x02254AF8
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254B08
+ cmp r0, #1
+ beq _02254B18
+ b _02254B26
+_02254B08:
+ ldr r0, [r4, #0x14]
+ mov r1, #1
+ bl MOD38_02254D34
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254B26
+_02254B18:
+ ldr r0, [r4, #0x14]
+ bl MOD38_02254D64
+ cmp r0, #0
+ beq _02254B26
+ mov r0, #1
+ pop {r4, pc}
+_02254B26:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD38_02254AF8
+
+ thumb_func_start MOD38_02254B2C
+MOD38_02254B2C: ; 0x02254B2C
+ push {r4, r5}
+ ldr r5, _02254B68 ; =0x02255134
+ mov r3, #0x12
+ add r4, r0, #0
+ mul r4, r3
+ add r4, r5, r4
+ add r0, r3, #0
+ ldrsb r5, [r4, r1]
+ sub r0, #0x1c
+ cmp r5, r0
+ beq _02254B4E
+ cmp r2, #0x12
+ beq _02254B54
+ ldrsb r0, [r4, r2]
+ sub r3, #0x1c
+ cmp r0, r3
+ bne _02254B54
+_02254B4E:
+ mov r0, #0
+ pop {r4, r5}
+ bx lr
+_02254B54:
+ mov r0, #3
+ add r0, r0, r5
+ cmp r2, #0x12
+ beq _02254B64
+ cmp r2, r1
+ beq _02254B64
+ ldrsb r1, [r4, r2]
+ add r0, r0, r1
+_02254B64:
+ pop {r4, r5}
+ bx lr
+ .align 2, 0
+_02254B68: .word 0x02255134
+ thumb_func_end MOD38_02254B2C
+
+ thumb_func_start MOD38_02254B6C
+MOD38_02254B6C: ; 0x02254B6C
+ push {r4, r5}
+ ldr r5, _02254BC0 ; =0x02255278
+ mov r4, #0
+_02254B72:
+ ldrb r3, [r5]
+ cmp r3, r0
+ beq _02254B80
+ add r4, r4, #1
+ add r5, r5, #1
+ cmp r4, #0x11
+ blo _02254B72
+_02254B80:
+ cmp r4, #0x11
+ bne _02254B94
+ cmp r1, #0
+ ble _02254B8E
+ mov r0, #0
+ pop {r4, r5}
+ bx lr
+_02254B8E:
+ mov r0, #8
+ pop {r4, r5}
+ bx lr
+_02254B94:
+ add r4, r4, r1
+ cmp r4, #0x11
+ blt _02254BA6
+ cmp r2, #0
+ beq _02254BA4
+ mov r0, #0x12
+ pop {r4, r5}
+ bx lr
+_02254BA4:
+ mov r4, #0
+_02254BA6:
+ cmp r4, #0
+ bge _02254BB6
+ cmp r2, #0
+ beq _02254BB4
+ mov r0, #0x12
+ pop {r4, r5}
+ bx lr
+_02254BB4:
+ mov r4, #0x10
+_02254BB6:
+ ldr r0, _02254BC0 ; =0x02255278
+ ldrb r0, [r0, r4]
+ pop {r4, r5}
+ bx lr
+ nop
+_02254BC0: .word 0x02255278
+ thumb_func_end MOD38_02254B6C
+
+ thumb_func_start MOD38_02254BC4
+MOD38_02254BC4: ; 0x02254BC4
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0xc0
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254C2A
+ add r0, #8
+ mov r1, #8
+ bl MOD20_022536F4
+ str r6, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ bl MOD20_02252D24
+ str r0, [r4, #0x30]
+ ldr r2, _02254C30 ; =0x00000235
+ mov r0, #1
+ mov r1, #0x1a
+ mov r3, #8
+ bl FUN_0200A86C
+ add r1, r4, #0
+ add r1, #0xb4
+ str r0, [r1]
+ ldr r2, _02254C34 ; =0x00000195
+ mov r0, #1
+ mov r1, #0x1a
+ mov r3, #8
+ bl FUN_0200A86C
+ add r1, r4, #0
+ add r1, #0xb8
+ str r0, [r1]
+ mov r0, #0x80
+ mov r1, #8
+ bl FUN_020219F4
+ add r1, r4, #0
+ add r1, #0xbc
+ str r0, [r1]
+ add r0, r4, #0
+ bl MOD38_02254C38
+ str r4, [r5]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254C2A:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ nop
+_02254C30: .word 0x00000235
+_02254C34: .word 0x00000195
+ thumb_func_end MOD38_02254BC4
+
+ thumb_func_start MOD38_02254C38
+MOD38_02254C38: ; 0x02254C38
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ add r6, r0, #0
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x40
+ bl FUN_02006A34
+ mov r0, #8
+ str r0, [sp]
+ add r0, r6, #0
+ add r0, #0x60
+ mov r1, #0xc
+ mov r2, #0x3e
+ mov r3, #0x3f
+ bl MOD20_02253FBC
+ add r0, r6, #0
+ str r0, [sp, #0xc]
+ add r0, #0x60
+ ldr r4, _02254CBC ; =0x02255300
+ mov r7, #0
+ add r5, r6, #0
+ str r0, [sp, #0xc]
+_02254C72:
+ ldr r0, [r6, #0x30]
+ ldr r2, [sp, #0xc]
+ add r1, r4, #0
+ bl MOD20_02253E74
+ str r0, [r5, #0x34]
+ add r7, r7, #1
+ add r4, #0x10
+ add r5, r5, #4
+ cmp r7, #6
+ blt _02254C72
+ add r0, r6, #0
+ str r0, [sp, #0x10]
+ add r0, #0x60
+ mov r7, #0
+ add r4, r6, #0
+ mov r5, #0x2c
+ str r0, [sp, #0x10]
+_02254C96:
+ ldr r0, [r6, #0x30]
+ ldr r1, _02254CC0 ; =0x0225528C
+ ldr r2, [sp, #0x10]
+ bl MOD20_02253E74
+ mov r2, #3
+ lsl r1, r5, #0xc
+ lsl r2, r2, #0x10
+ str r0, [r4, #0x4c]
+ bl MOD20_02253F64
+ add r7, r7, #1
+ add r4, r4, #4
+ add r5, #8
+ cmp r7, #5
+ blt _02254C96
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02254CBC: .word 0x02255300
+_02254CC0: .word 0x0225528C
+ thumb_func_end MOD38_02254C38
+
+ thumb_func_start MOD38_02254CC4
+MOD38_02254CC4: ; 0x02254CC4
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r6, #0
+ add r4, r5, #0
+_02254CCC:
+ ldr r1, [r4, #0x34]
+ cmp r1, #0
+ beq _02254CD8
+ ldr r0, [r5, #0x30]
+ bl MOD20_02253F14
+_02254CD8:
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #6
+ blt _02254CCC
+ mov r6, #0
+ add r4, r5, #0
+_02254CE4:
+ ldr r1, [r4, #0x4c]
+ cmp r1, #0
+ beq _02254CF0
+ ldr r0, [r5, #0x30]
+ bl MOD20_02253F14
+_02254CF0:
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #5
+ blt _02254CE4
+ add r5, #0x60
+ add r0, r5, #0
+ bl MOD20_02254014
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD38_02254CC4
+
+ thumb_func_start MOD38_02254D04
+MOD38_02254D04: ; 0x02254D04
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02254D32
+ add r0, #0xbc
+ ldr r0, [r0]
+ bl FUN_02021A20
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ bl FUN_0200A8B8
+ add r0, r4, #0
+ add r0, #0xb8
+ ldr r0, [r0]
+ bl FUN_0200A8B8
+ add r0, r4, #0
+ bl MOD38_02254CC4
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254D32:
+ pop {r4, pc}
+ thumb_func_end MOD38_02254D04
+
+ thumb_func_start MOD38_02254D34
+MOD38_02254D34: ; 0x02254D34
+ 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, _02254D54 ; =0x022552B8
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254D54: .word 0x022552B8
+ thumb_func_end MOD38_02254D34
+
+ thumb_func_start MOD38_02254D58
+MOD38_02254D58: ; 0x02254D58
+ ldr r3, _02254D60 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254D60: .word MOD20_02253794
+ thumb_func_end MOD38_02254D58
+
+ thumb_func_start MOD38_02254D64
+MOD38_02254D64: ; 0x02254D64
+ ldr r3, _02254D6C ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254D6C: .word MOD20_022537B8
+ thumb_func_end MOD38_02254D64
+
+ thumb_func_start MOD38_02254D70
+MOD38_02254D70: ; 0x02254D70
+ 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 MOD38_02254D70
+
+ thumb_func_start MOD38_02254D84
+MOD38_02254D84: ; 0x02254D84
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A4
+ add r7, r0, #0
+ ldr r0, [r5, #4]
+ ldr r2, _02254E1C ; =0x0225529C
+ 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, #0x3d
+ mov r3, #6
+ bl FUN_0200687C
+ add r4, r0, #0
+ 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, #0x3c
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ add r0, r5, #0
+ add r1, r7, #0
+ lsr r2, r4, #5
+ bl MOD38_02254E28
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, _02254E20 ; =0x04001000
+ ldr r0, _02254E24 ; =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, r6, #0
+ bl MOD38_02254D70
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02254E1C: .word 0x0225529C
+_02254E20: .word 0x04001000
+_02254E24: .word 0xFFFFE0FF
+ thumb_func_end MOD38_02254D84
+
+ thumb_func_start MOD38_02254E28
+MOD38_02254E28: ; 0x02254E28
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ mov r0, #0xf
+ add r4, r2, #0
+ str r0, [sp]
+ mov r2, #6
+ str r2, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ add r6, r1, #0
+ str r0, [sp, #0x10]
+ add r1, r5, #0
+ ldr r0, [r5, #4]
+ add r1, #0x74
+ add r3, r2, #0
+ bl FUN_02019064
+ mov r0, #4
+ str r0, [sp]
+ mov r2, #6
+ add r1, r5, #0
+ str r2, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ add r0, #0xc
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #4]
+ add r1, #0x84
+ mov r3, #0x10
+ bl FUN_02019064
+ mov r0, #8
+ str r0, [sp]
+ mov r2, #6
+ add r1, r5, #0
+ str r2, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ add r0, #0x18
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #4]
+ add r1, #0x94
+ mov r3, #0x10
+ bl FUN_02019064
+ mov r0, #0x13
+ str r0, [sp]
+ mov r0, #0x16
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r5, #0
+ add r4, #0x24
+ str r0, [sp, #0xc]
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #4]
+ add r1, #0xa4
+ mov r2, #6
+ mov r3, #3
+ bl FUN_02019064
+ add r0, r5, #0
+ add r0, #0x74
+ bl FUN_02019270
+ add r0, r5, #0
+ add r0, #0x84
+ bl FUN_02019270
+ add r0, r5, #0
+ add r0, #0x94
+ bl FUN_02019270
+ add r0, r5, #0
+ add r0, #0xa4
+ bl FUN_02019270
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD38_02254FCC
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD38_02254E28
+
+ thumb_func_start MOD38_02254EF4
+MOD38_02254EF4: ; 0x02254EF4
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x74
+ bl FUN_02019178
+ add r0, r4, #0
+ add r0, #0x84
+ bl FUN_02019178
+ add r0, r4, #0
+ add r0, #0x94
+ bl FUN_02019178
+ add r4, #0xa4
+ add r0, r4, #0
+ bl FUN_02019178
+ pop {r4, pc}
+ thumb_func_end MOD38_02254EF4
+
+ thumb_func_start MOD38_02254F18
+MOD38_02254F18: ; 0x02254F18
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ bl MOD38_02254EF4
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r5, #0
+ bl MOD38_02254D70
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD38_02254F18
+
+ thumb_func_start MOD38_02254F38
+MOD38_02254F38: ; 0x02254F38
+ 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
+ ldr r2, [r0]
+ mov r1, #1
+ add r0, r2, #0
+ tst r0, r1
+ beq _02254F56
+ mov r1, #3
+_02254F56:
+ lsl r0, r2, #2
+ add r0, r4, r0
+ ldr r0, [r0, #0x34]
+ bl MOD20_02253F28
+ ldr r0, _02254F70 ; =0x00000663
+ bl MOD20_02252B28
+ add r0, r5, #0
+ bl MOD38_02254D70
+ pop {r3, r4, r5, pc}
+ nop
+_02254F70: .word 0x00000663
+ thumb_func_end MOD38_02254F38
+
+ thumb_func_start MOD38_02254F74
+MOD38_02254F74: ; 0x02254F74
+ 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
+ ldr r2, [r0]
+ mov r0, #1
+ tst r0, r2
+ beq _02254F92
+ mov r1, #2
+ b _02254F94
+_02254F92:
+ mov r1, #0
+_02254F94:
+ lsl r0, r2, #2
+ add r0, r4, r0
+ ldr r0, [r0, #0x34]
+ bl MOD20_02253F28
+ add r0, r5, #0
+ bl MOD38_02254D70
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD38_02254F74
+
+ thumb_func_start MOD38_02254FA8
+MOD38_02254FA8: ; 0x02254FA8
+ 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 MOD38_02254FCC
+ add r0, r5, #0
+ bl MOD38_02254D70
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD38_02254FA8
+
+ thumb_func_start MOD38_02254FCC
+MOD38_02254FCC: ; 0x02254FCC
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r1, r5, #0
+ ldrh r2, [r4, #6]
+ add r1, #0x74
+ bl MOD38_0225500C
+ add r1, r5, #0
+ ldrh r2, [r4, #8]
+ add r0, r5, #0
+ add r1, #0x84
+ bl MOD38_0225500C
+ add r1, r5, #0
+ ldrh r2, [r4, #0xa]
+ add r0, r5, #0
+ add r1, #0x94
+ bl MOD38_0225500C
+ add r1, r5, #0
+ ldrh r2, [r4, #4]
+ add r0, r5, #0
+ add r1, #0xa4
+ bl MOD38_02255084
+ ldrh r1, [r4, #4]
+ add r0, r5, #0
+ bl MOD38_022550D0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD38_02254FCC
+
+ thumb_func_start MOD38_0225500C
+MOD38_0225500C: ; 0x0225500C
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ mov r1, #4
+ add r6, r2, #0
+ bl FUN_02019620
+ cmp r6, #0x12
+ bne _02255036
+ add r0, r5, #0
+ add r2, r5, #0
+ add r0, #0xb8
+ add r2, #0xbc
+ ldr r0, [r0]
+ ldr r2, [r2]
+ mov r1, #6
+ bl FUN_0200A8E0
+ b _02255048
+_02255036:
+ add r0, r5, #0
+ add r2, r5, #0
+ add r0, #0xb4
+ add r2, #0xbc
+ ldr r0, [r0]
+ ldr r2, [r2]
+ add r1, r6, #0
+ bl FUN_0200A8E0
+_02255048:
+ add r1, r5, #0
+ add r1, #0xbc
+ mov r0, #0
+ ldr r1, [r1]
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0
+ add r3, r0, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02255080 ; =0x00010104
+ add r5, #0xbc
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r2, [r5]
+ mov r5, #0x30
+ sub r3, r5, r3
+ add r0, r4, #0
+ lsr r3, r3, #1
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl FUN_02019548
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02255080: .word 0x00010104
+ thumb_func_end MOD38_0225500C
+
+ thumb_func_start MOD38_02255084
+MOD38_02255084: ; 0x02255084
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ mov r1, #4
+ add r6, r2, #0
+ bl FUN_02019620
+ add r0, r5, #0
+ add r2, r5, #0
+ add r0, #0xb8
+ add r2, #0xbc
+ ldr r0, [r0]
+ ldr r2, [r2]
+ add r1, r6, #0
+ bl FUN_0200A8E0
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _022550CC ; =0x00010104
+ add r5, #0xbc
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r2, [r5]
+ add r0, r4, #0
+ add r3, r1, #0
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl FUN_02019548
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_022550CC: .word 0x00010104
+ thumb_func_end MOD38_02255084
+
+ thumb_func_start MOD38_022550D0
+MOD38_022550D0: ; 0x022550D0
+ push {r3, r4, r5, r6, r7, lr}
+ str r0, [sp]
+ add r6, r1, #0
+ ldr r4, _0225510C ; =0x00000000
+ beq _022550EE
+ add r5, r0, #0
+ mov r7, #4
+_022550DE:
+ ldr r0, [r5, #0x4c]
+ add r1, r7, #0
+ bl MOD20_02253F28
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, r6
+ blo _022550DE
+_022550EE:
+ cmp r4, #5
+ bhs _0225510A
+ ldr r0, [sp]
+ lsl r1, r4, #2
+ add r5, r0, r1
+ mov r6, #5
+_022550FA:
+ ldr r0, [r5, #0x4c]
+ add r1, r6, #0
+ bl MOD20_02253F28
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #5
+ blo _022550FA
+_0225510A:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0225510C: .word 0x00000000
+ thumb_func_end MOD38_022550D0
+
+ .section .rodata
+ ; 0x02255110
+ .incbin "baserom.nds", 0x290ED0, 0x250
+
+ .section .sinit
+ .word MOD38_02254840