summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/arm9.lcf28
-rw-r--r--arm9/global.inc5
-rw-r--r--arm9/modules/42/asm/module_42.s1161
3 files changed, 1190 insertions, 4 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf
index 8883447f..637b1174 100644
--- a/arm9/arm9.lcf
+++ b/arm9/arm9.lcf
@@ -1735,10 +1735,21 @@ SECTIONS {
SDK_OVERLAY.MODULE_41.BSS_SIZE = SDK_OVERLAY.MODULE_41.BSS_END - SDK_OVERLAY.MODULE_41.BSS_START;
} >> MODULE_41
- .MODULE.42: {
+ .MODULE.42 :
+ {
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_42.START = .;
- FILE_294000.o (.text) /* 0x290000 */
+ module_42.o (.text)
+ module_42.o (.rodata)
+ module_42.o (.init)
+ // SDK_OVERLAY.MODULE_42.SINIT_START = .;
+ module_42.o (.ctor)
+ module_42.o (.sinit)
+ // WRITEW 0;
+ // SDK_OVERLAY.MODULE_42.SINIT_END = .;
+ . = ALIGN(32);
+ module_42.o (.sdata)
+ module_42.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_42.END = .;
SDK_OVERLAY.MODULE_42.SIZE = SDK_OVERLAY.MODULE_42.END - SDK_OVERLAY.MODULE_42.START;
@@ -1748,7 +1759,8 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_42.BSS_START = .;
- FILE_294000.o (.bss)
+ module_42.o (.sbss)
+ module_42.o (.bss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_42.BSS_END = .;
SDK_OVERLAY.MODULE_42.BSS_SIZE = SDK_OVERLAY.MODULE_42.BSS_END - SDK_OVERLAY.MODULE_42.BSS_START;
@@ -3091,7 +3103,15 @@ SECTIONS {
WRITEW SDK_OVERLAY_MODULE_41_ID;
WRITEW 0;
- OVERLAY_TABLE(MODULE_42, 42)
+ WRITEW SDK_OVERLAY_MODULE_42_ID;
+ WRITEW SDK_OVERLAY.MODULE_42.START;
+ WRITEW SDK_OVERLAY.MODULE_42.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_42.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_42.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_42.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_42_ID;
+ WRITEW 0;
+
OVERLAY_TABLE(MODULE_43, 43)
OVERLAY_TABLE(MODULE_44, 44)
OVERLAY_TABLE(MODULE_45, 45)
diff --git a/arm9/global.inc b/arm9/global.inc
index 5cee7a46..1ede1e92 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -2662,6 +2662,11 @@
.extern FUN_0204BF94
.extern FUN_0204BF9C
.extern FUN_0204BFB0
+.extern FUN_0204C080
+.extern FUN_0204C0A4
+.extern MOD20_02254420
+.extern MOD20_02254460
+.extern MOD20_02254488
.extern MOD20_022542C0
.extern MOD05_021EC464
.extern MOD05_021ED9B4
diff --git a/arm9/modules/42/asm/module_42.s b/arm9/modules/42/asm/module_42.s
new file mode 100644
index 00000000..6ec9b916
--- /dev/null
+++ b/arm9/modules/42/asm/module_42.s
@@ -0,0 +1,1161 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD42_02254840
+MOD42_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD42_02254854
+ ldr r1, _02254850 ; =MOD42_02254A38
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD42_02254854
+_02254850: .word MOD42_02254A38
+ thumb_func_end MOD42_02254840
+
+ thumb_func_start MOD42_02254854
+MOD42_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x78
+ 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 MOD42_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD42_02254A04
+ 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 MOD42_02254A04
+ thumb_func_end MOD42_02254854
+
+ thumb_func_start MOD42_0225489C
+MOD42_0225489C: ; 0x0225489C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r0, r1, #0
+ str r1, [sp]
+ str r2, [sp, #4]
+ bl MOD20_02252C3C
+ str r0, [r5, #0x60]
+ add r0, r5, #0
+ str r0, [sp, #8]
+ add r0, #0x11
+ add r7, r5, #0
+ mov r6, #0
+ add r4, r5, #0
+ str r0, [sp, #8]
+ add r7, #0x10
+_022548BE:
+ mov r0, #1
+ strb r0, [r4, #0x13]
+ strb r6, [r4, #0x12]
+ ldr r0, [r5, #0x60]
+ ldr r3, [sp, #8]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl FUN_0204C0A4
+ ldrb r0, [r4, #0x10]
+ add r7, r7, #4
+ add r0, #0x10
+ strb r0, [r4, #0x10]
+ ldrb r0, [r4, #0x11]
+ add r0, #0x10
+ strb r0, [r4, #0x11]
+ mov r0, #0
+ strb r0, [r4, #0x13]
+ add r0, r5, r6
+ add r0, #0x70
+ strb r6, [r0]
+ ldr r0, [sp, #8]
+ add r6, r6, #1
+ add r0, r0, #4
+ add r4, r4, #4
+ str r0, [sp, #8]
+ cmp r6, #6
+ blt _022548BE
+ mov r0, #0
+ str r0, [r5, #0x28]
+ str r0, [r5, #0x2c]
+ str r0, [r5, #0xc]
+ ldr r0, [sp]
+ bl MOD20_02252C40
+ bl FUN_020462AC
+ add r7, r0, #0
+ mov r4, #0
+ add r6, r5, #0
+_0225490E:
+ add r0, r7, #0
+ add r1, r4, #0
+ bl FUN_0205F524
+ str r0, [r6, #0x30]
+ add r4, r4, #1
+ add r6, r6, #4
+ cmp r4, #4
+ blt _0225490E
+ ldr r0, [sp]
+ bl MOD20_02252C40
+ bl FUN_0202A9B0
+ str r0, [sp, #0xc]
+ mov r4, #0
+ add r7, r5, #0
+ add r6, r5, #0
+_02254932:
+ lsl r1, r4, #0x18
+ ldr r0, [sp, #0xc]
+ lsr r1, r1, #0x18
+ bl FUN_0202AAA0
+ mov r1, #8
+ str r0, [r7, #0x64]
+ bl FUN_0202AAB8
+ str r0, [r6, #0x40]
+ add r1, r5, #0
+ add r1, #0x76
+ mov r0, #0
+ add r4, r4, #1
+ strb r0, [r1]
+ add r7, r7, #4
+ add r6, #8
+ cmp r4, #3
+ blt _02254932
+ ldr r0, [sp]
+ bl MOD20_02252C38
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034DCC
+ add r6, r0, #0
+ ldr r0, [r4, #0x1c]
+ ldr r0, [r0]
+ bl FUN_02034908
+ cmp r0, #0
+ beq _02254984
+ ldr r0, [r4, #0x1c]
+ ldr r0, [r0, #8]
+ str r0, [r5, #4]
+ ldr r0, [r4, #0x1c]
+ ldr r0, [r0, #0xc]
+ b _0225498A
+_02254984:
+ ldr r0, [r6, #8]
+ str r0, [r5, #4]
+ ldr r0, [r6, #0xc]
+_0225498A:
+ str r0, [r5, #8]
+ ldr r1, [r5, #4]
+ ldr r2, [sp, #4]
+ asr r0, r1, #4
+ lsr r0, r0, #0x1b
+ add r0, r1, r0
+ asr r0, r0, #5
+ str r0, [r5, #4]
+ ldr r1, [r5, #8]
+ asr r0, r1, #4
+ lsr r0, r0, #0x1b
+ add r0, r1, r0
+ asr r0, r0, #5
+ str r0, [r5, #8]
+ add r0, r5, #0
+ add r0, #0x58
+ add r1, r5, #4
+ bl MOD42_02254CB4
+ cmp r0, #0
+ beq _022549C6
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ ldr r0, [sp]
+ add sp, #0x10
+ str r0, [r5, #0x5c]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_022549C6:
+ mov r0, #0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD42_0225489C
+
+ thumb_func_start MOD42_022549CC
+MOD42_022549CC: ; 0x022549CC
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+_022549D4:
+ ldrb r2, [r5, #0x10]
+ ldrb r3, [r5, #0x11]
+ ldr r0, [r6, #0x60]
+ sub r2, #0x10
+ sub r3, #0x10
+ lsl r2, r2, #0x18
+ lsl r3, r3, #0x18
+ add r1, r4, #0
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_0204C080
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #6
+ blt _022549D4
+ ldr r0, [r6, #0x58]
+ bl MOD42_02254CF0
+ add r0, r6, #0
+ bl FUN_02016A18
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD42_022549CC
+
+ thumb_func_start MOD42_02254A04
+MOD42_02254A04: ; 0x02254A04
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrb r1, [r4]
+ add r5, r0, #0
+ cmp r1, #4
+ bhs _02254A30
+ lsl r2, r1, #2
+ ldr r1, _02254A34 ; =0x022550CC
+ add r0, r4, #0
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254A30
+ add r0, r4, #0
+ bl MOD42_022549CC
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x5c]
+ bl MOD20_022529A0
+_02254A30:
+ pop {r3, r4, r5, pc}
+ nop
+_02254A34: .word 0x022550CC
+ thumb_func_end MOD42_02254A04
+
+ thumb_func_start MOD42_02254A38
+MOD42_02254A38: ; 0x02254A38
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD42_02254A38
+
+ thumb_func_start MOD42_02254A40
+MOD42_02254A40: ; 0x02254A40
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254A48
+ b _02254A4A
+_02254A48:
+ mov r1, #3
+_02254A4A:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD42_02254A40
+
+ thumb_func_start MOD42_02254A54
+MOD42_02254A54: ; 0x02254A54
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A64
+ cmp r0, #1
+ beq _02254A74
+ b _02254A8E
+_02254A64:
+ ldr r0, [r4, #0x58]
+ mov r1, #0
+ bl MOD42_02254EEC
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A8E
+_02254A74:
+ ldr r0, [r4, #0x58]
+ mov r1, #0
+ bl MOD42_02254F10
+ cmp r0, #0
+ beq _02254A8E
+ ldr r0, [r4, #0x5c]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD42_02254A40
+_02254A8E:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD42_02254A54
+
+ thumb_func_start MOD42_02254A94
+MOD42_02254A94: ; 0x02254A94
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _02254AAC
+ mov r1, #3
+ bl MOD42_02254A40
+ add sp, #0xc
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_02254AAC:
+ bl MOD42_02254C04
+ str r0, [r4, #0xc]
+ mov r0, #0
+ str r0, [r4, #0x2c]
+ add r0, sp, #8
+ add r1, sp, #4
+ bl MOD20_02252BB8
+ cmp r0, #0
+ beq _02254B20
+ ldr r5, [sp, #8]
+ ldr r6, [sp, #4]
+ mov r3, #0
+_02254AC8:
+ add r0, r4, r3
+ add r0, #0x70
+ ldrb r7, [r0]
+ lsl r0, r7, #2
+ add r2, r4, r0
+ str r0, [sp]
+ ldrb r0, [r2, #0x10]
+ sub r1, r0, r5
+ mov r0, #7
+ mvn r0, r0
+ cmp r1, r0
+ blt _02254B1A
+ cmp r1, #8
+ bgt _02254B1A
+ ldrb r0, [r2, #0x11]
+ sub r1, r0, r6
+ mov r0, #7
+ mvn r0, r0
+ cmp r1, r0
+ blt _02254B1A
+ cmp r1, #8
+ bgt _02254B1A
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD42_02254BB4
+ ldr r0, [sp]
+ ldr r2, [sp, #8]
+ add r1, r4, r0
+ strb r2, [r1, #0x10]
+ ldr r0, [sp, #4]
+ strb r0, [r1, #0x11]
+ mov r0, #1
+ strb r0, [r1, #0x13]
+ str r7, [r4, #0x28]
+ str r0, [r4, #0x2c]
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD42_02254A40
+ b _02254B20
+_02254B1A:
+ add r3, r3, #1
+ cmp r3, #6
+ blt _02254AC8
+_02254B20:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD42_02254A94
+
+ thumb_func_start MOD42_02254B28
+MOD42_02254B28: ; 0x02254B28
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _02254B40
+ mov r1, #3
+ bl MOD42_02254A40
+ add sp, #8
+ mov r0, #0
+ pop {r4, pc}
+_02254B40:
+ bl MOD42_02254C04
+ str r0, [r4, #0xc]
+ add r0, sp, #4
+ add r1, sp, #0
+ bl MOD20_02252B68
+ cmp r0, #0
+ beq _02254B68
+ ldr r0, [r4, #0x28]
+ ldr r1, [sp, #4]
+ lsl r0, r0, #2
+ add r0, r4, r0
+ strb r1, [r0, #0x10]
+ ldr r0, [r4, #0x28]
+ ldr r1, [sp]
+ lsl r0, r0, #2
+ add r0, r4, r0
+ strb r1, [r0, #0x11]
+ b _02254B7A
+_02254B68:
+ ldr r0, [r4, #0x28]
+ mov r1, #0
+ lsl r0, r0, #2
+ add r0, r4, r0
+ strb r1, [r0, #0x13]
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD42_02254A40
+_02254B7A:
+ mov r0, #0
+ add sp, #8
+ pop {r4, pc}
+ thumb_func_end MOD42_02254B28
+
+ thumb_func_start MOD42_02254B80
+MOD42_02254B80: ; 0x02254B80
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254B90
+ cmp r0, #1
+ beq _02254BA0
+ b _02254BAE
+_02254B90:
+ ldr r0, [r4, #0x58]
+ mov r1, #1
+ bl MOD42_02254EEC
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254BAE
+_02254BA0:
+ ldr r0, [r4, #0x58]
+ bl MOD42_02254F1C
+ cmp r0, #0
+ beq _02254BAE
+ mov r0, #1
+ pop {r4, pc}
+_02254BAE:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD42_02254B80
+
+ thumb_func_start MOD42_02254BB4
+MOD42_02254BB4: ; 0x02254BB4
+ push {r3, r4}
+ add r2, r0, #0
+ add r2, #0x70
+ ldrb r2, [r2]
+ cmp r2, r1
+ beq _02254C00
+ mov r4, #0
+_02254BC2:
+ add r2, r0, r4
+ add r2, #0x70
+ ldrb r2, [r2]
+ cmp r1, r2
+ beq _02254BD2
+ add r4, r4, #1
+ cmp r4, #6
+ blt _02254BC2
+_02254BD2:
+ cmp r4, #0
+ beq _02254BE6
+_02254BD6:
+ add r2, r0, r4
+ add r2, #0x6f
+ ldrb r3, [r2]
+ add r2, r0, r4
+ add r2, #0x70
+ strb r3, [r2]
+ sub r4, r4, #1
+ bne _02254BD6
+_02254BE6:
+ add r2, r0, #0
+ add r2, #0x70
+ strb r1, [r2]
+ mov r2, #0
+_02254BEE:
+ add r1, r0, r2
+ add r1, #0x70
+ ldrb r1, [r1]
+ lsl r1, r1, #2
+ add r1, r0, r1
+ strb r2, [r1, #0x12]
+ add r2, r2, #1
+ cmp r2, #6
+ blt _02254BEE
+_02254C00:
+ pop {r3, r4}
+ bx lr
+ thumb_func_end MOD42_02254BB4
+
+ thumb_func_start MOD42_02254C04
+MOD42_02254C04: ; 0x02254C04
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x5c]
+ mov r7, #0
+ bl MOD20_02252C30
+ cmp r0, #0
+ beq _02254CAE
+ ldr r0, [r5, #0x5c]
+ bl MOD20_02252C38
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034DCC
+ add r6, r0, #0
+ ldr r0, [r4, #0x1c]
+ ldr r0, [r0]
+ bl FUN_02034908
+ cmp r0, #0
+ beq _02254C3C
+ ldr r1, [r4, #0x1c]
+ ldr r0, [r1, #8]
+ ldr r1, [r1, #0xc]
+ b _02254C40
+_02254C3C:
+ ldr r0, [r6, #8]
+ ldr r1, [r6, #0xc]
+_02254C40:
+ asr r2, r0, #4
+ lsr r2, r2, #0x1b
+ add r2, r0, r2
+ asr r0, r2, #5
+ asr r2, r1, #4
+ lsr r2, r2, #0x1b
+ add r2, r1, r2
+ asr r1, r2, #5
+ ldr r2, [r5, #4]
+ cmp r0, r2
+ bne _02254C5C
+ ldr r2, [r5, #8]
+ cmp r1, r2
+ beq _02254C62
+_02254C5C:
+ str r0, [r5, #4]
+ str r1, [r5, #8]
+ mov r7, #1
+_02254C62:
+ add r0, r5, #0
+ add r0, #0x76
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r5, #0
+ add r0, #0x76
+ strb r1, [r0]
+ add r0, r5, #0
+ add r0, #0x76
+ ldrb r0, [r0]
+ cmp r0, #5
+ blo _02254CAE
+ mov r6, #0
+ add r4, r5, #0
+_02254C7E:
+ ldr r0, [r5, #0x40]
+ cmp r0, #0
+ bne _02254C94
+ ldr r0, [r4, #0x64]
+ mov r1, #8
+ bl FUN_0202AAB8
+ str r0, [r5, #0x40]
+ cmp r0, #0
+ beq _02254C94
+ mov r7, #1
+_02254C94:
+ cmp r0, #0
+ beq _02254CA4
+ ldr r0, [r4, #0x64]
+ mov r1, #1
+ bl FUN_0202AAB8
+ str r0, [r5, #0x44]
+ mov r7, #1
+_02254CA4:
+ add r6, r6, #1
+ add r5, #8
+ add r4, r4, #4
+ cmp r6, #3
+ blt _02254C7E
+_02254CAE:
+ add r0, r7, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD42_02254C04
+
+ thumb_func_start MOD42_02254CB4
+MOD42_02254CB4: ; 0x02254CB4
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r0, #8
+ mov r1, #0x74
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254CEA
+ 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 MOD42_02254D04
+ str r4, [r6]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254CEA:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD42_02254CB4
+
+ thumb_func_start MOD42_02254CF0
+MOD42_02254CF0: ; 0x02254CF0
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02254D00
+ bl MOD42_02254E7C
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254D00:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD42_02254CF0
+
+ thumb_func_start MOD42_02254D04
+MOD42_02254D04: ; 0x02254D04
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x3c
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ add r5, r0, #0
+ add r7, r1, #0
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x78
+ bl FUN_02006A34
+ mov r0, #8
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0x5c
+ mov r1, #0xc
+ mov r2, #0x76
+ mov r3, #0x77
+ bl MOD20_02253FBC
+ mov r2, #0
+ add r0, sp, #0x24
+ strb r2, [r0, #0x12]
+ mov r1, #2
+ strb r1, [r0, #0x13]
+ strb r2, [r0, #0x15]
+ ldr r0, [r7]
+ ldr r1, [r7, #4]
+ add r2, sp, #0x28
+ add r3, sp, #0x24
+ bl MOD20_02254420
+ ldr r0, [sp, #0x28]
+ add r2, r5, #0
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x2c]
+ ldr r0, [sp, #0x24]
+ mov r1, #1
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x30]
+ add r0, sp, #0x24
+ strb r1, [r0, #0x14]
+ mov r1, #0
+ strh r1, [r0, #0x10]
+ ldr r0, [r5, #0x20]
+ add r1, sp, #0x2c
+ add r2, #0x5c
+ bl MOD20_02253E74
+ str r0, [r5, #0x58]
+ mov r1, #1
+ add r0, sp, #0x24
+ strb r1, [r0, #0x15]
+ add r0, r5, #0
+ str r0, [sp, #0x14]
+ add r0, #0x5c
+ mov r6, #0
+ add r4, r7, #0
+ str r5, [sp, #0xc]
+ str r0, [sp, #0x14]
+_02254D82:
+ ldrb r0, [r4, #0xc]
+ ldr r2, [sp, #0x14]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x2c]
+ ldrb r0, [r4, #0xd]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x30]
+ ldrb r0, [r4, #0xe]
+ add r1, r0, #2
+ add r0, sp, #0x24
+ strb r1, [r0, #0x14]
+ add r1, r6, #1
+ strh r1, [r0, #0x10]
+ ldr r0, [r5, #0x20]
+ add r1, sp, #0x2c
+ bl MOD20_02253E74
+ ldr r1, [sp, #0xc]
+ add r6, r6, #1
+ str r0, [r1, #0x24]
+ add r0, r1, #0
+ add r0, r0, #4
+ add r4, r4, #4
+ str r0, [sp, #0xc]
+ cmp r6, #6
+ blt _02254D82
+ add r0, r5, #0
+ str r0, [sp, #0x18]
+ add r0, #0x5c
+ mov r6, #0
+ add r4, r5, #0
+ str r7, [sp, #0x10]
+ str r0, [sp, #0x18]
+_02254DC4:
+ add r0, r6, #0
+ add r1, sp, #0x28
+ add r2, sp, #0x24
+ bl MOD20_02254460
+ ldr r0, [sp, #0x28]
+ mov r1, #9
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x2c]
+ ldr r0, [sp, #0x24]
+ ldr r2, [sp, #0x18]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x30]
+ add r0, sp, #0x24
+ strb r1, [r0, #0x14]
+ add r1, r6, #0
+ add r1, #0xe
+ strh r1, [r0, #0x10]
+ ldr r0, [r5, #0x20]
+ add r1, sp, #0x2c
+ bl MOD20_02253E74
+ str r0, [r4, #0x3c]
+ ldr r0, [sp, #0x10]
+ ldr r0, [r0, #0x2c]
+ cmp r0, #0
+ bne _02254E02
+ ldr r0, [r4, #0x3c]
+ mov r1, #1
+ bl MOD20_02253F78
+_02254E02:
+ ldr r0, [sp, #0x10]
+ add r6, r6, #1
+ add r0, r0, #4
+ add r4, r4, #4
+ str r0, [sp, #0x10]
+ cmp r6, #4
+ blt _02254DC4
+ add r0, r5, #0
+ str r0, [sp, #0x20]
+ add r0, #0x5c
+ mov r6, #0
+ add r4, r5, #0
+ str r0, [sp, #0x20]
+_02254E1C:
+ ldr r0, [r7, #0x40]
+ add r1, sp, #0x28
+ add r2, sp, #0x24
+ bl MOD20_02254488
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x28]
+ mov r1, #8
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x2c]
+ ldr r0, [sp, #0x24]
+ ldr r2, [sp, #0x20]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x30]
+ add r0, sp, #0x24
+ strb r1, [r0, #0x14]
+ mov r1, #0x12
+ strh r1, [r0, #0x10]
+ ldr r0, [r5, #0x20]
+ add r1, sp, #0x2c
+ bl MOD20_02253E74
+ str r0, [r4, #0x4c]
+ ldr r0, [r7, #0x3c]
+ cmp r0, #0
+ beq _02254E56
+ ldr r0, [sp, #0x1c]
+ cmp r0, #0
+ bne _02254E5E
+_02254E56:
+ ldr r0, [r4, #0x4c]
+ mov r1, #1
+ bl MOD20_02253F78
+_02254E5E:
+ add r6, r6, #1
+ add r7, #8
+ add r4, r4, #4
+ cmp r6, #3
+ blt _02254E1C
+ ldr r0, _02254E78 ; =MOD42_02254FE8
+ add r1, r5, #0
+ mov r2, #3
+ bl FUN_0200CA44
+ str r0, [r5, #0x70]
+ add sp, #0x3c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254E78: .word MOD42_02254FE8
+ thumb_func_end MOD42_02254D04
+
+ thumb_func_start MOD42_02254E7C
+MOD42_02254E7C: ; 0x02254E7C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x70]
+ bl FUN_0200CAB4
+ mov r6, #0
+ add r4, r5, #0
+ add r7, r6, #0
+_02254E8C:
+ ldr r1, [r4, #0x24]
+ cmp r1, #0
+ beq _02254E9A
+ ldr r0, [r5, #0x20]
+ bl MOD20_02253F14
+ str r7, [r4, #0x24]
+_02254E9A:
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #6
+ blt _02254E8C
+ mov r6, #0
+ add r4, r5, #0
+ add r7, r6, #0
+_02254EA8:
+ ldr r1, [r4, #0x3c]
+ cmp r1, #0
+ beq _02254EB6
+ ldr r0, [r5, #0x20]
+ bl MOD20_02253F14
+ str r7, [r4, #0x3c]
+_02254EB6:
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #4
+ blt _02254EA8
+ mov r6, #0
+ add r4, r5, #0
+ add r7, r6, #0
+_02254EC4:
+ ldr r1, [r4, #0x4c]
+ cmp r1, #0
+ beq _02254ED2
+ ldr r0, [r5, #0x20]
+ bl MOD20_02253F14
+ str r7, [r4, #0x4c]
+_02254ED2:
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #3
+ blt _02254EC4
+ ldr r0, [r5, #0x20]
+ ldr r1, [r5, #0x58]
+ bl MOD20_02253F14
+ add r5, #0x5c
+ add r0, r5, #0
+ bl MOD20_02254014
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD42_02254E7C
+
+ thumb_func_start MOD42_02254EEC
+MOD42_02254EEC: ; 0x02254EEC
+ 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, _02254F0C ; =0x022550F8
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254F0C: .word 0x022550F8
+ thumb_func_end MOD42_02254EEC
+
+ thumb_func_start MOD42_02254F10
+MOD42_02254F10: ; 0x02254F10
+ ldr r3, _02254F18 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254F18: .word MOD20_02253794
+ thumb_func_end MOD42_02254F10
+
+ thumb_func_start MOD42_02254F1C
+MOD42_02254F1C: ; 0x02254F1C
+ ldr r3, _02254F24 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254F24: .word MOD20_022537B8
+ thumb_func_end MOD42_02254F1C
+
+ thumb_func_start MOD42_02254F28
+MOD42_02254F28: ; 0x02254F28
+ 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 MOD42_02254F28
+
+ thumb_func_start MOD42_02254F3C
+MOD42_02254F3C: ; 0x02254F3C
+ 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, _02254FC0 ; =0x022550DC
+ 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, #0x75
+ 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, #0x73
+ 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, _02254FC4 ; =0x04001000
+ ldr r0, _02254FC8 ; =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 MOD42_02254F28
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_02254FC0: .word 0x022550DC
+_02254FC4: .word 0x04001000
+_02254FC8: .word 0xFFFFE0FF
+ thumb_func_end MOD42_02254F3C
+
+ thumb_func_start MOD42_02254FCC
+MOD42_02254FCC: ; 0x02254FCC
+ 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 MOD42_02254F28
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD42_02254FCC
+
+ thumb_func_start MOD42_02254FE8
+MOD42_02254FE8: ; 0x02254FE8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r1, #0
+ ldr r4, [r5]
+ ldr r0, [r4, #0x28]
+ cmp r0, #0
+ beq _0225505E
+ ldr r7, [r4, #0x24]
+ lsl r6, r7, #2
+ add r2, r4, r6
+ ldrb r0, [r2, #0xf]
+ cmp r0, #0
+ beq _02255028
+ add r0, r5, #0
+ str r0, [sp, #4]
+ add r0, #0x24
+ str r0, [sp, #4]
+ ldr r1, [sp, #4]
+ add r0, r0, r6
+ str r0, [sp]
+ ldr r0, [r5, #0x20]
+ ldr r1, [r1, r6]
+ mov r2, #0
+ bl MOD20_02253F80
+ ldr r0, [sp, #4]
+ add r7, #8
+ ldr r0, [r0, r6]
+ add r1, r7, #0
+ bl MOD20_02253F28
+ b _0225504C
+_02255028:
+ add r0, r5, #0
+ str r0, [sp, #8]
+ add r0, #0x24
+ str r0, [sp, #8]
+ ldr r1, [sp, #8]
+ ldrb r2, [r2, #0xe]
+ add r0, r0, r6
+ str r0, [sp]
+ ldr r0, [r5, #0x20]
+ ldr r1, [r1, r6]
+ add r2, r2, #2
+ bl MOD20_02253F80
+ ldr r0, [sp, #8]
+ add r1, r7, #1
+ ldr r0, [r0, r6]
+ bl MOD20_02253F28
+_0225504C:
+ add r2, r4, r6
+ ldrb r1, [r2, #0xc]
+ ldr r0, [sp]
+ ldrb r2, [r2, #0xd]
+ ldr r0, [r0]
+ lsl r1, r1, #0xc
+ lsl r2, r2, #0xc
+ bl MOD20_02253F64
+_0225505E:
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ beq _022550C8
+ ldr r0, [r4]
+ ldr r1, [r4, #4]
+ add r2, sp, #0x10
+ add r3, sp, #0xc
+ bl MOD20_02254420
+ ldr r1, [sp, #0x10]
+ ldr r2, [sp, #0xc]
+ ldr r0, [r5, #0x58]
+ lsl r1, r1, #0xc
+ lsl r2, r2, #0xc
+ bl MOD20_02253F64
+ mov r6, #0
+ add r7, sp, #0x10
+_02255082:
+ ldr r0, [r4, #0x3c]
+ cmp r0, #0
+ beq _022550B6
+ ldr r0, [r4, #0x40]
+ add r1, r7, #0
+ add r2, sp, #0xc
+ bl MOD20_02254488
+ cmp r0, #0
+ ldr r0, [r5, #0x4c]
+ beq _022550AE
+ ldr r1, [sp, #0x10]
+ ldr r2, [sp, #0xc]
+ lsl r1, r1, #0xc
+ lsl r2, r2, #0xc
+ bl MOD20_02253F64
+ ldr r0, [r5, #0x4c]
+ mov r1, #0
+ bl MOD20_02253F78
+ b _022550BE
+_022550AE:
+ mov r1, #1
+ bl MOD20_02253F78
+ b _022550BE
+_022550B6:
+ ldr r0, [r5, #0x4c]
+ mov r1, #1
+ bl MOD20_02253F78
+_022550BE:
+ add r6, r6, #1
+ add r4, #8
+ add r5, r5, #4
+ cmp r6, #3
+ blo _02255082
+_022550C8:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD42_02254FE8
+
+ .section .rodata
+ ; 0x022550CC
+ .incbin "baserom.nds", 0x29488c, 0x50
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_42.SINIT_START
+ .global SDK_OVERLAY.MODULE_42.SINIT_END
+SDK_OVERLAY.MODULE_42.SINIT_START:
+ .word MOD42_02254840
+ .word 0
+SDK_OVERLAY.MODULE_42.SINIT_END: