summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/arm9.lcf252
-rw-r--r--arm9/global.inc23
-rw-r--r--arm9/modules/42/asm/module_42.s1161
-rw-r--r--arm9/modules/43/asm/module_43.s1140
-rw-r--r--arm9/modules/44/asm/module_44.s580
-rw-r--r--arm9/modules/45/asm/module_45.s1061
-rw-r--r--arm9/modules/46/asm/module_46.s399
-rw-r--r--arm9/modules/47/asm/module_47.s1497
-rw-r--r--arm9/modules/48/asm/module_48.s960
-rw-r--r--arm9/modules/49/asm/module_49.s638
-rw-r--r--arm9/modules/50/asm/module_50.s409
11 files changed, 8084 insertions, 36 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf
index 8883447f..2755047d 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,16 +1759,28 @@ 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;
} >> MODULE_42
- .MODULE.43: {
+ .MODULE.43 :
+ {
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_43.START = .;
- FILE_294A00.o (.text) /* 0x290A00 */
+ module_43.o (.text)
+ module_43.o (.rodata)
+ module_43.o (.init)
+ // SDK_OVERLAY.MODULE_43.SINIT_START = .;
+ module_43.o (.ctor)
+ module_43.o (.sinit)
+ // WRITEW 0;
+ // SDK_OVERLAY.MODULE_43.SINIT_END = .;
+ . = ALIGN(32);
+ module_43.o (.sdata)
+ module_43.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_43.END = .;
SDK_OVERLAY.MODULE_43.SIZE = SDK_OVERLAY.MODULE_43.END - SDK_OVERLAY.MODULE_43.START;
@@ -1767,16 +1790,28 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_43.BSS_START = .;
- FILE_294A00.o (.bss)
+ module_43.o (.sbss)
+ module_43.o (.bss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_43.BSS_END = .;
SDK_OVERLAY.MODULE_43.BSS_SIZE = SDK_OVERLAY.MODULE_43.BSS_END - SDK_OVERLAY.MODULE_43.BSS_START;
} >> MODULE_43
- .MODULE.44: {
+ .MODULE.44 :
+ {
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_44.START = .;
- FILE_295400.o (.text) /* 0x291400 */
+ module_44.o (.text)
+ module_44.o (.rodata)
+ module_44.o (.init)
+ // SDK_OVERLAY.MODULE_44.SINIT_START = .;
+ module_44.o (.ctor)
+ module_44.o (.sinit)
+ // WRITEW 0;
+ // SDK_OVERLAY.MODULE_44.SINIT_END = .;
+ . = ALIGN(32);
+ module_44.o (.sdata)
+ module_44.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_44.END = .;
SDK_OVERLAY.MODULE_44.SIZE = SDK_OVERLAY.MODULE_44.END - SDK_OVERLAY.MODULE_44.START;
@@ -1786,16 +1821,28 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_44.BSS_START = .;
- FILE_295400.o (.bss)
+ module_44.o (.sbss)
+ module_44.o (.bss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_44.BSS_END = .;
SDK_OVERLAY.MODULE_44.BSS_SIZE = SDK_OVERLAY.MODULE_44.BSS_END - SDK_OVERLAY.MODULE_44.BSS_START;
} >> MODULE_44
- .MODULE.45: {
+ .MODULE.45 :
+ {
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_45.START = .;
- FILE_295A00.o (.text) /* 0x291A00 */
+ module_45.o (.text)
+ module_45.o (.rodata)
+ module_45.o (.init)
+ SDK_OVERLAY.MODULE_45.SINIT_START = .;
+ module_45.o (.ctor)
+ module_45.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_45.SINIT_END = .;
+ . = ALIGN(32);
+ module_45.o (.sdata)
+ module_45.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_45.END = .;
SDK_OVERLAY.MODULE_45.SIZE = SDK_OVERLAY.MODULE_45.END - SDK_OVERLAY.MODULE_45.START;
@@ -1805,16 +1852,28 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_45.BSS_START = .;
- FILE_295A00.o (.bss)
+ module_45.o (.sbss)
+ module_45.o (.bss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_45.BSS_END = .;
SDK_OVERLAY.MODULE_45.BSS_SIZE = SDK_OVERLAY.MODULE_45.BSS_END - SDK_OVERLAY.MODULE_45.BSS_START;
} >> MODULE_45
- .MODULE.46: {
+ .MODULE.46 :
+ {
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_46.START = .;
- FILE_296400.o (.text) /* 0x292400 */
+ module_46.o (.text)
+ module_46.o (.rodata)
+ module_46.o (.init)
+ SDK_OVERLAY.MODULE_46.SINIT_START = .;
+ module_46.o (.ctor)
+ module_46.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_46.SINIT_END = .;
+ . = ALIGN(32);
+ module_46.o (.sdata)
+ module_46.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_46.END = .;
SDK_OVERLAY.MODULE_46.SIZE = SDK_OVERLAY.MODULE_46.END - SDK_OVERLAY.MODULE_46.START;
@@ -1824,16 +1883,28 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_46.BSS_START = .;
- FILE_296400.o (.bss)
+ module_46.o (.sbss)
+ module_46.o (.bss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_46.BSS_END = .;
SDK_OVERLAY.MODULE_46.BSS_SIZE = SDK_OVERLAY.MODULE_46.BSS_END - SDK_OVERLAY.MODULE_46.BSS_START;
} >> MODULE_46
- .MODULE.47: {
+ .MODULE.47 :
+ {
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_47.START = .;
- FILE_296800.o (.text) /* 0x292800 */
+ module_47.o (.text)
+ module_47.o (.rodata)
+ module_47.o (.init)
+ // SDK_OVERLAY.MODULE_47.SINIT_START = .;
+ module_47.o (.ctor)
+ module_47.o (.sinit)
+ // WRITEW 0;
+ // SDK_OVERLAY.MODULE_47.SINIT_END = .;
+ . = ALIGN(32);
+ module_47.o (.sdata)
+ module_47.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_47.END = .;
SDK_OVERLAY.MODULE_47.SIZE = SDK_OVERLAY.MODULE_47.END - SDK_OVERLAY.MODULE_47.START;
@@ -1843,16 +1914,28 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_47.BSS_START = .;
- FILE_296800.o (.bss)
+ module_47.o (.sbss)
+ module_47.o (.bss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_47.BSS_END = .;
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;
@@ -1862,16 +1945,28 @@ 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;
} >> MODULE_48
- .MODULE.49: {
+ .MODULE.49 :
+ {
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_49.START = .;
- FILE_298000.o (.text) /* 0x294000 */
+ module_49.o (.text)
+ module_49.o (.rodata)
+ module_49.o (.init)
+ SDK_OVERLAY.MODULE_49.SINIT_START = .;
+ module_49.o (.ctor)
+ module_49.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_49.SINIT_END = .;
+ . = ALIGN(32);
+ module_49.o (.sdata)
+ module_49.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_49.END = .;
SDK_OVERLAY.MODULE_49.SIZE = SDK_OVERLAY.MODULE_49.END - SDK_OVERLAY.MODULE_49.START;
@@ -1881,16 +1976,28 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_49.BSS_START = .;
- FILE_298000.o (.bss)
+ module_49.o (.sbss)
+ module_49.o (.bss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_49.BSS_END = .;
SDK_OVERLAY.MODULE_49.BSS_SIZE = SDK_OVERLAY.MODULE_49.BSS_END - SDK_OVERLAY.MODULE_49.BSS_START;
} >> MODULE_49
- .MODULE.50: {
+ .MODULE.50 :
+ {
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_50.START = .;
- FILE_298600.o (.text) /* 0x294600 */
+ module_50.o (.text)
+ module_50.o (.rodata)
+ module_50.o (.init)
+ SDK_OVERLAY.MODULE_50.SINIT_START = .;
+ module_50.o (.ctor)
+ module_50.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_50.SINIT_END = .;
+ . = ALIGN(32);
+ module_50.o (.sdata)
+ module_50.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_50.END = .;
SDK_OVERLAY.MODULE_50.SIZE = SDK_OVERLAY.MODULE_50.END - SDK_OVERLAY.MODULE_50.START;
@@ -1900,7 +2007,8 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_50.BSS_START = .;
- FILE_298600.o (.bss)
+ module_50.o (.sbss)
+ module_50.o (.bss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_50.BSS_END = .;
SDK_OVERLAY.MODULE_50.BSS_SIZE = SDK_OVERLAY.MODULE_50.BSS_END - SDK_OVERLAY.MODULE_50.BSS_START;
@@ -3091,15 +3199,87 @@ SECTIONS {
WRITEW SDK_OVERLAY_MODULE_41_ID;
WRITEW 0;
- OVERLAY_TABLE(MODULE_42, 42)
- OVERLAY_TABLE(MODULE_43, 43)
- OVERLAY_TABLE(MODULE_44, 44)
- OVERLAY_TABLE(MODULE_45, 45)
- OVERLAY_TABLE(MODULE_46, 46)
- OVERLAY_TABLE(MODULE_47, 47)
- OVERLAY_TABLE(MODULE_48, 48)
- OVERLAY_TABLE(MODULE_49, 49)
- OVERLAY_TABLE(MODULE_50, 50)
+ 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;
+
+ WRITEW SDK_OVERLAY_MODULE_43_ID;
+ WRITEW SDK_OVERLAY.MODULE_43.START;
+ WRITEW SDK_OVERLAY.MODULE_43.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_43.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_43.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_43.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_43_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_44_ID;
+ WRITEW SDK_OVERLAY.MODULE_44.START;
+ WRITEW SDK_OVERLAY.MODULE_44.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_44.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_44.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_44.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_44_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_45_ID;
+ WRITEW SDK_OVERLAY.MODULE_45.START;
+ WRITEW SDK_OVERLAY.MODULE_45.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_45.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_45.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_45.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_45_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_46_ID;
+ WRITEW SDK_OVERLAY.MODULE_46.START;
+ WRITEW SDK_OVERLAY.MODULE_46.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_46.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_46.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_46.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_46_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_47_ID;
+ WRITEW SDK_OVERLAY.MODULE_47.START;
+ WRITEW SDK_OVERLAY.MODULE_47.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_47.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_47.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_47.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_47_ID;
+ WRITEW 0;
+
+ 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;
+
+ WRITEW SDK_OVERLAY_MODULE_49_ID;
+ WRITEW SDK_OVERLAY.MODULE_49.START;
+ WRITEW SDK_OVERLAY.MODULE_49.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_49.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_49.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_49.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_49_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_50_ID;
+ WRITEW SDK_OVERLAY.MODULE_50.START;
+ WRITEW SDK_OVERLAY.MODULE_50.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_50.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_50.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_50.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_50_ID;
+ WRITEW 0;
+
OVERLAY_TABLE(MODULE_51, 51)
OVERLAY_TABLE(MODULE_52, 52)
OVERLAY_TABLE(MODULE_53, 53)
diff --git a/arm9/global.inc b/arm9/global.inc
index 5cee7a46..6f76948a 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -2662,6 +2662,29 @@
.extern FUN_0204BF94
.extern FUN_0204BF9C
.extern FUN_0204BFB0
+.extern FUN_0204C080
+.extern FUN_0204C0A4
+.extern FUN_020252B8
+.extern FUN_0204BF58
+.extern FUN_0204BFF0
+.extern FUN_0204C02C
+.extern FUN_0204C064
+.extern FUN_0202F0DC
+.extern FUN_02032BD0
+.extern FUN_02032C0C
+.extern FUN_02032C28
+.extern FUN_02034984
+.extern FUN_0204C158
+.extern FUN_0204C174
+.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
.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:
diff --git a/arm9/modules/43/asm/module_43.s b/arm9/modules/43/asm/module_43.s
new file mode 100644
index 00000000..78bb538f
--- /dev/null
+++ b/arm9/modules/43/asm/module_43.s
@@ -0,0 +1,1140 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD43_02254840
+MOD43_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD43_02254854
+ ldr r1, _02254850 ; =MOD43_02254970
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD43_02254854
+_02254850: .word MOD43_02254970
+ thumb_func_end MOD43_02254840
+
+ thumb_func_start MOD43_02254854
+MOD43_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0xb0
+ 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 MOD43_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD43_0225493C
+ 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 MOD43_0225493C
+ thumb_func_end MOD43_02254854
+
+ thumb_func_start MOD43_0225489C
+MOD43_0225489C: ; 0x0225489C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r7, r1, #0
+ add r1, r5, #0
+ add r1, #0xac
+ str r7, [r1]
+ str r2, [sp]
+ bl MOD43_02254A88
+ str r0, [r5, #0xc]
+ add r0, r5, #0
+ add r0, #0xac
+ ldr r0, [r0]
+ 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 _022548E0
+ ldr r0, [r4, #0x1c]
+ ldr r0, [r0, #8]
+ str r0, [r5, #4]
+ ldr r0, [r4, #0x1c]
+ ldr r0, [r0, #0xc]
+ b _022548E6
+_022548E0:
+ ldr r0, [r6, #8]
+ str r0, [r5, #4]
+ ldr r0, [r6, #0xc]
+_022548E6:
+ str r0, [r5, #8]
+ ldr r1, [r5, #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 r1, r7, #0
+ bl MOD43_02254B60
+ add r0, r5, #0
+ ldr r2, [sp]
+ add r0, #0xa8
+ add r1, r5, #4
+ bl MOD43_02254B8C
+ cmp r0, #0
+ beq _02254924
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_02254924:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD43_0225489C
+
+ thumb_func_start MOD43_02254928
+MOD43_02254928: ; 0x02254928
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ bl MOD43_02254BCC
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD43_02254928
+
+ thumb_func_start MOD43_0225493C
+MOD43_0225493C: ; 0x0225493C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrb r1, [r4]
+ add r5, r0, #0
+ cmp r1, #3
+ bhs _0225496A
+ lsl r2, r1, #2
+ ldr r1, _0225496C ; =0x022550A8
+ add r0, r4, #0
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _0225496A
+ add r0, r4, #0
+ bl MOD43_02254928
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ add r4, #0xac
+ ldr r0, [r4]
+ bl MOD20_022529A0
+_0225496A:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0225496C: .word 0x022550A8
+ thumb_func_end MOD43_0225493C
+
+ thumb_func_start MOD43_02254970
+MOD43_02254970: ; 0x02254970
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD43_02254970
+
+ thumb_func_start MOD43_02254978
+MOD43_02254978: ; 0x02254978
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254980
+ b _02254982
+_02254980:
+ mov r1, #2
+_02254982:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD43_02254978
+
+ thumb_func_start MOD43_0225498C
+MOD43_0225498C: ; 0x0225498C
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _0225499C
+ cmp r0, #1
+ beq _022549B0
+ b _022549D2
+_0225499C:
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ mov r1, #0
+ bl MOD43_02254BD8
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549D2
+_022549B0:
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ mov r1, #0
+ bl MOD43_02254BFC
+ cmp r0, #0
+ beq _022549D2
+ add r0, r4, #0
+ add r0, #0xac
+ ldr r0, [r0]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD43_02254978
+_022549D2:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD43_0225498C
+
+ thumb_func_start MOD43_022549D8
+MOD43_022549D8: ; 0x022549D8
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _022549F0
+ mov r1, #2
+ bl MOD43_02254978
+ add sp, #8
+ mov r0, #0
+ pop {r4, pc}
+_022549F0:
+ bl MOD43_02254AF8
+ add r1, r4, #0
+ add r1, #0x94
+ str r0, [r1]
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ mov r1, #2
+ bl MOD43_02254BFC
+ cmp r0, #0
+ beq _02254A48
+ add r0, sp, #4
+ add r1, sp, #0
+ bl MOD20_02252BB8
+ cmp r0, #0
+ beq _02254A48
+ ldr r0, [sp, #4]
+ sub r0, #0x10
+ cmp r0, #0xc0
+ bhs _02254A22
+ mov r1, #1
+ b _02254A24
+_02254A22:
+ mov r1, #0
+_02254A24:
+ ldr r0, [sp]
+ sub r0, #0x10
+ cmp r0, #0xc0
+ bhs _02254A30
+ mov r0, #1
+ b _02254A32
+_02254A30:
+ mov r0, #0
+_02254A32:
+ tst r0, r1
+ beq _02254A48
+ add r0, r4, #0
+ bl MOD43_02254A88
+ str r0, [r4, #0xc]
+ add r4, #0xa8
+ ldr r0, [r4]
+ mov r1, #2
+ bl MOD43_02254BD8
+_02254A48:
+ mov r0, #0
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD43_022549D8
+
+ thumb_func_start MOD43_02254A50
+MOD43_02254A50: ; 0x02254A50
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A60
+ cmp r0, #1
+ beq _02254A74
+ b _02254A84
+_02254A60:
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ mov r1, #1
+ bl MOD43_02254BD8
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A84
+_02254A74:
+ add r4, #0xa8
+ ldr r0, [r4]
+ bl MOD43_02254C08
+ cmp r0, #0
+ beq _02254A84
+ mov r0, #1
+ pop {r4, pc}
+_02254A84:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD43_02254A50
+
+ thumb_func_start MOD43_02254A88
+MOD43_02254A88: ; 0x02254A88
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r0, #0xac
+ ldr r0, [r0]
+ bl MOD20_02252C40
+ bl FUN_02024ECC
+ mov r4, #0
+ add r6, r0, #0
+ add r7, r4, #0
+_02254A9E:
+ add r0, r6, #0
+ add r1, r4, #0
+ bl FUN_020252B8
+ cmp r0, #1
+ bne _02254AEA
+ add r0, r6, #0
+ add r1, r4, #0
+ bl FUN_02025238
+ cmp r0, #5
+ bne _02254AEA
+ ldr r1, _02254AF4 ; =0x022550B4
+ lsl r0, r4, #1
+ ldr r2, _02254AF4 ; =0x022550B4
+ add r1, r1, r0
+ ldrb r0, [r2, r0]
+ strb r0, [r5, #0x10]
+ ldrb r0, [r1, #1]
+ strb r0, [r5, #0x11]
+ b _02254ACC
+_02254AC8:
+ add r1, r1, #2
+ add r4, r4, #1
+_02254ACC:
+ add r0, r4, #1
+ cmp r0, #0x76
+ bhs _02254AE2
+ ldrb r2, [r5, #0x10]
+ ldrb r0, [r1, #2]
+ cmp r2, r0
+ bne _02254AE2
+ ldrb r2, [r5, #0x11]
+ ldrb r0, [r1, #3]
+ cmp r2, r0
+ beq _02254AC8
+_02254AE2:
+ add r7, r7, #1
+ add r5, r5, #2
+ cmp r7, #0x40
+ bge _02254AF0
+_02254AEA:
+ add r4, r4, #1
+ cmp r4, #0x76
+ blo _02254A9E
+_02254AF0:
+ add r0, r7, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254AF4: .word 0x022550B4
+ thumb_func_end MOD43_02254A88
+
+ thumb_func_start MOD43_02254AF8
+MOD43_02254AF8: ; 0x02254AF8
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r0, #0xac
+ ldr r0, [r0]
+ mov r6, #0
+ bl MOD20_02252C30
+ cmp r0, #0
+ beq _02254B5C
+ add r0, r5, #0
+ add r0, #0xac
+ ldr r0, [r0]
+ bl MOD20_02252C38
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034DCC
+ add r7, r0, #0
+ ldr r0, [r4, #0x1c]
+ ldr r0, [r0]
+ bl FUN_02034908
+ cmp r0, #0
+ beq _02254B36
+ ldr r1, [r4, #0x1c]
+ ldr r0, [r1, #8]
+ ldr r1, [r1, #0xc]
+ b _02254B3A
+_02254B36:
+ ldr r0, [r7, #8]
+ ldr r1, [r7, #0xc]
+_02254B3A:
+ 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 _02254B56
+ ldr r2, [r5, #8]
+ cmp r1, r2
+ beq _02254B5C
+_02254B56:
+ str r0, [r5, #4]
+ str r1, [r5, #8]
+ mov r6, #1
+_02254B5C:
+ add r0, r6, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD43_02254AF8
+
+ thumb_func_start MOD43_02254B60
+MOD43_02254B60: ; 0x02254B60
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r0, r1, #0
+ bl MOD20_02252C40
+ bl FUN_020462AC
+ add r6, r0, #0
+ mov r4, #0
+_02254B72:
+ add r0, r6, #0
+ add r1, r4, #0
+ bl FUN_0205F524
+ add r1, r5, #0
+ add r1, #0x98
+ add r4, r4, #1
+ add r5, r5, #4
+ str r0, [r1]
+ cmp r4, #4
+ blt _02254B72
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD43_02254B60
+
+ thumb_func_start MOD43_02254B8C
+MOD43_02254B8C: ; 0x02254B8C
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ mov r1, #0x16
+ add r6, r0, #0
+ mov r0, #8
+ lsl r1, r1, #4
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254BC6
+ 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 r5, #0x8c
+ mov r0, #0x15
+ ldr r1, [r5]
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ str r4, [r6]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254BC6:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD43_02254B8C
+
+ thumb_func_start MOD43_02254BCC
+MOD43_02254BCC: ; 0x02254BCC
+ push {r3, lr}
+ cmp r0, #0
+ beq _02254BD6
+ bl FUN_02016A18
+_02254BD6:
+ pop {r3, pc}
+ thumb_func_end MOD43_02254BCC
+
+ thumb_func_start MOD43_02254BD8
+MOD43_02254BD8: ; 0x02254BD8
+ 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, _02254BF8 ; =0x022551BC
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254BF8: .word 0x022551BC
+ thumb_func_end MOD43_02254BD8
+
+ thumb_func_start MOD43_02254BFC
+MOD43_02254BFC: ; 0x02254BFC
+ ldr r3, _02254C04 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254C04: .word MOD20_02253794
+ thumb_func_end MOD43_02254BFC
+
+ thumb_func_start MOD43_02254C08
+MOD43_02254C08: ; 0x02254C08
+ ldr r3, _02254C10 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254C10: .word MOD20_022537B8
+ thumb_func_end MOD43_02254C08
+
+ thumb_func_start MOD43_02254C14
+MOD43_02254C14: ; 0x02254C14
+ 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 MOD43_02254C14
+
+ thumb_func_start MOD43_02254C28
+MOD43_02254C28: ; 0x02254C28
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ ldr r0, _02254CC0 ; =0x0400104C
+ mov r3, #0
+ strb r3, [r0]
+ strb r3, [r0, #1]
+ ldr r0, [r5, #4]
+ ldr r2, _02254CC4 ; =0x022551A0
+ mov r1, #6
+ 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
+ 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, #0x74
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ add r0, r5, #0
+ lsr r1, r4, #5
+ bl MOD43_02254CD0
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, _02254CC8 ; =0x04001000
+ ldr r0, _02254CCC ; =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 MOD43_02254E78
+ add r0, r6, #0
+ bl MOD43_02254C14
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_02254CC0: .word 0x0400104C
+_02254CC4: .word 0x022551A0
+_02254CC8: .word 0x04001000
+_02254CCC: .word 0xFFFFE0FF
+ thumb_func_end MOD43_02254C28
+
+ thumb_func_start MOD43_02254CD0
+MOD43_02254CD0: ; 0x02254CD0
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x24
+ add r4, r1, #0
+ mov r1, #0x66
+ add r5, r0, #0
+ mov r0, #0x1a
+ lsl r1, r1, #2
+ mov r2, #0
+ mov r3, #8
+ bl FUN_0200A738
+ add r6, r0, #0
+ beq _02254D44
+ mov r0, #0x14
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #4]
+ add r1, sp, #0x14
+ mov r2, #6
+ mov r3, #0x12
+ bl FUN_02019064
+ add r0, sp, #0x14
+ mov r1, #4
+ bl FUN_02019620
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02254D48 ; =0x00010104
+ add r2, r6, #0
+ str r0, [sp, #8]
+ add r0, sp, #0x14
+ add r3, r1, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, sp, #0x14
+ bl FUN_02019270
+ add r0, sp, #0x14
+ bl FUN_02019548
+ add r0, sp, #0x14
+ bl FUN_02019178
+ add r0, r6, #0
+ bl FUN_02021A20
+_02254D44:
+ add sp, #0x24
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_02254D48: .word 0x00010104
+ thumb_func_end MOD43_02254CD0
+
+ thumb_func_start MOD43_02254D4C
+MOD43_02254D4C: ; 0x02254D4C
+ 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_022538AC
+ cmp r0, #0
+ beq _02254D68
+ cmp r0, #1
+ beq _02254D78
+ pop {r3, r4, r5, pc}
+_02254D68:
+ mov r0, #0x57
+ mov r1, #1
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_02254D78:
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD43_02254BFC
+ cmp r0, #0
+ beq _02254DA0
+ add r0, r4, #0
+ bl MOD43_02255000
+ ldr r0, _02254DA4 ; =0x0400104C
+ mov r1, #0
+ strb r1, [r0]
+ strb r1, [r0, #1]
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r5, #0
+ bl MOD43_02254C14
+_02254DA0:
+ pop {r3, r4, r5, pc}
+ nop
+_02254DA4: .word 0x0400104C
+ thumb_func_end MOD43_02254D4C
+
+ thumb_func_start MOD43_02254DA8
+MOD43_02254DA8: ; 0x02254DA8
+ 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 r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _02254DCE
+ cmp r0, #1
+ beq _02254E02
+ cmp r0, #2
+ beq _02254E10
+ pop {r3, r4, r5, pc}
+_02254DCE:
+ mov r1, #0x55
+ mov r0, #6
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ mov r2, #0
+ add r0, r1, #4
+ str r2, [r4, r0]
+ add r0, r1, #0
+ add r0, #8
+ str r2, [r4, r0]
+ ldr r2, [r4, r1]
+ lsl r0, r2, #4
+ orr r0, r2
+ ldr r2, _02254E70 ; =0x0400104C
+ strb r0, [r2]
+ ldr r1, [r4, r1]
+ lsl r0, r1, #4
+ orr r0, r1
+ strb r0, [r2, #1]
+ ldr r0, _02254E74 ; =0x00000678
+ bl MOD20_02252B28
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_02254E02:
+ add r0, r4, #0
+ bl MOD43_02254F9C
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_02254E10:
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ beq _02254E22
+ add r0, r5, #0
+ bl MOD43_02254C14
+ pop {r3, r4, r5, pc}
+_02254E22:
+ sub r1, r0, #4
+ ldr r1, [r4, r1]
+ add r2, r1, #1
+ sub r1, r0, #4
+ str r2, [r4, r1]
+ ldr r1, [r4, r1]
+ cmp r1, #3
+ blt _02254E6E
+ mov r2, #0
+ sub r1, r0, #4
+ str r2, [r4, r1]
+ add r1, r0, #0
+ sub r1, #8
+ ldr r1, [r4, r1]
+ sub r2, r1, #1
+ add r1, r0, #0
+ sub r1, #8
+ str r2, [r4, r1]
+ add r1, r0, #0
+ sub r1, #8
+ ldr r2, [r4, r1]
+ lsl r1, r2, #4
+ orr r2, r1
+ ldr r1, _02254E70 ; =0x0400104C
+ strb r2, [r1]
+ add r2, r0, #0
+ sub r2, #8
+ ldr r3, [r4, r2]
+ sub r0, #8
+ lsl r2, r3, #4
+ orr r2, r3
+ strb r2, [r1, #1]
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ bne _02254E6E
+ add r0, r5, #0
+ bl MOD43_02254C14
+_02254E6E:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02254E70: .word 0x0400104C
+_02254E74: .word 0x00000678
+ thumb_func_end MOD43_02254DA8
+
+ thumb_func_start MOD43_02254E78
+MOD43_02254E78: ; 0x02254E78
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ add r6, r0, #0
+ ldr r7, [r6]
+ 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, #0x78
+ bl FUN_02006A34
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #0x4e
+ lsl r0, r0, #2
+ add r0, r6, r0
+ mov r1, #0xc
+ mov r2, #0x76
+ mov r3, #0x77
+ bl MOD20_02253FBC
+ mov r2, #0
+ add r0, sp, #0xc
+ 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, #0x10
+ add r3, sp, #0xc
+ bl MOD20_02254420
+ ldr r0, [sp, #0x10]
+ mov r2, #0x4e
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0xc]
+ lsl r2, r2, #2
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x18]
+ mov r1, #0
+ add r0, sp, #0xc
+ strb r1, [r0, #0x14]
+ strh r1, [r0, #0x10]
+ ldr r0, [r6, #0x20]
+ add r1, sp, #0x14
+ add r2, r6, r2
+ bl MOD20_02253E74
+ mov r1, #1
+ str r0, [r6, #0x24]
+ bl MOD20_02253FAC
+ mov r1, #1
+ add r0, sp, #0xc
+ strb r1, [r0, #0x14]
+ mov r1, #7
+ strh r1, [r0, #0x10]
+ mov r5, #0
+ str r5, [sp, #0x14]
+ str r5, [sp, #0x18]
+ add r4, r6, #0
+_02254EFC:
+ mov r2, #0x4e
+ lsl r2, r2, #2
+ ldr r0, [r6, #0x20]
+ add r1, sp, #0x14
+ add r2, r6, r2
+ bl MOD20_02253E74
+ mov r1, #1
+ str r0, [r4, #0x28]
+ bl MOD20_02253FAC
+ add r5, r5, #1
+ add r4, r4, #4
+ cmp r5, #0x40
+ blt _02254EFC
+ add r0, r6, #0
+ bl MOD43_02254F9C
+ mov r5, #0
+ add r4, r6, #0
+_02254F24:
+ add r0, r5, #0
+ add r1, sp, #0x10
+ add r2, sp, #0xc
+ bl MOD20_02254460
+ ldr r0, [sp, #0x10]
+ mov r1, #2
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0xc]
+ mov r2, #0x4e
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x18]
+ add r0, sp, #0xc
+ strb r1, [r0, #0x14]
+ add r1, r5, #0
+ add r1, #0xe
+ strh r1, [r0, #0x10]
+ lsl r2, r2, #2
+ ldr r0, [r6, #0x20]
+ add r1, sp, #0x14
+ add r2, r6, r2
+ bl MOD20_02253E74
+ mov r1, #0x4a
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ add r0, r1, #0
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl MOD20_02253FAC
+ add r0, r7, #0
+ add r0, #0x94
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _02254F7A
+ mov r0, #0x4a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl MOD20_02253F78
+_02254F7A:
+ add r5, r5, #1
+ add r4, r4, #4
+ add r7, r7, #4
+ cmp r5, #4
+ blt _02254F24
+ ldr r0, _02254F98 ; =MOD43_02255078
+ add r1, r6, #0
+ mov r2, #3
+ bl FUN_0200CA44
+ mov r1, #0x53
+ lsl r1, r1, #2
+ str r0, [r6, r1]
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254F98: .word MOD43_02255078
+ thumb_func_end MOD43_02254E78
+
+ thumb_func_start MOD43_02254F9C
+MOD43_02254F9C: ; 0x02254F9C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r7, r0, #0
+ ldr r1, [r7]
+ mov r4, #0
+ ldr r0, [r1, #8]
+ cmp r0, #0
+ ble _02254FE2
+ add r6, r4, #0
+ add r5, r7, #0
+_02254FB0:
+ add r1, r1, r6
+ ldrb r0, [r1, #0xc]
+ ldrb r1, [r1, #0xd]
+ add r2, sp, #4
+ add r3, sp, #0
+ bl MOD20_02254420
+ ldr r1, [sp, #4]
+ ldr r2, [sp]
+ ldr r0, [r5, #0x28]
+ lsl r1, r1, #0xc
+ lsl r2, r2, #0xc
+ bl MOD20_02253F64
+ ldr r0, [r5, #0x28]
+ mov r1, #0
+ bl MOD20_02253F78
+ ldr r1, [r7]
+ add r4, r4, #1
+ ldr r0, [r1, #8]
+ add r6, r6, #2
+ add r5, r5, #4
+ cmp r4, r0
+ blt _02254FB0
+_02254FE2:
+ cmp r4, #0x40
+ bge _02254FFC
+ lsl r0, r4, #2
+ add r5, r7, r0
+ mov r6, #1
+_02254FEC:
+ ldr r0, [r5, #0x28]
+ add r1, r6, #0
+ bl MOD20_02253F78
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0x40
+ blt _02254FEC
+_02254FFC:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD43_02254F9C
+
+ thumb_func_start MOD43_02255000
+MOD43_02255000: ; 0x02255000
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ mov r0, #0x53
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _0225501A
+ bl FUN_0200CAB4
+ mov r0, #0x53
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+_0225501A:
+ mov r6, #0
+ add r4, r5, #0
+ add r7, r6, #0
+_02255020:
+ mov r0, #0x4a
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ beq _02255036
+ ldr r0, [r5, #0x20]
+ bl MOD20_02253F14
+ mov r0, #0x4a
+ lsl r0, r0, #2
+ str r7, [r4, r0]
+_02255036:
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #4
+ blt _02255020
+ mov r6, #0
+ add r4, r5, #0
+ add r7, r6, #0
+_02255044:
+ ldr r1, [r4, #0x28]
+ cmp r1, #0
+ beq _02255052
+ ldr r0, [r5, #0x20]
+ bl MOD20_02253F14
+ str r7, [r4, #0x28]
+_02255052:
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #0x40
+ blt _02255044
+ ldr r1, [r5, #0x24]
+ cmp r1, #0
+ beq _0225506A
+ ldr r0, [r5, #0x20]
+ bl MOD20_02253F14
+ mov r0, #0
+ str r0, [r5, #0x24]
+_0225506A:
+ mov r0, #0x4e
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl MOD20_02254014
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD43_02255000
+
+ thumb_func_start MOD43_02255078
+MOD43_02255078: ; 0x02255078
+ push {r4, lr}
+ sub sp, #8
+ add r4, r1, #0
+ ldr r1, [r4]
+ add r0, r1, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _022550A2
+ ldmia r1!, {r0, r1}
+ add r2, sp, #4
+ add r3, sp, #0
+ bl MOD20_02254420
+ ldr r1, [sp, #4]
+ ldr r2, [sp]
+ ldr r0, [r4, #0x24]
+ lsl r1, r1, #0xc
+ lsl r2, r2, #0xc
+ bl MOD20_02253F64
+_022550A2:
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD43_02255078
+
+ .section .rodata
+ ; 0x022550A8
+ .incbin "baserom.nds", 0x295268, 0x144
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_43.SINIT_START
+ .global SDK_OVERLAY.MODULE_43.SINIT_END
+SDK_OVERLAY.MODULE_43.SINIT_START:
+ .word MOD43_02254840
+ .word 0
+SDK_OVERLAY.MODULE_43.SINIT_END:
diff --git a/arm9/modules/44/asm/module_44.s b/arm9/modules/44/asm/module_44.s
new file mode 100644
index 00000000..a9743a1e
--- /dev/null
+++ b/arm9/modules/44/asm/module_44.s
@@ -0,0 +1,580 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD44_02254840
+MOD44_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD44_02254854
+ ldr r1, _02254850 ; =MOD44_02254920
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD44_02254854
+_02254850: .word MOD44_02254920
+ thumb_func_end MOD44_02254840
+
+ thumb_func_start MOD44_02254854
+MOD44_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x14
+ 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 MOD44_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD44_022548EC
+ 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 MOD44_022548EC
+ thumb_func_end MOD44_02254854
+
+ thumb_func_start MOD44_0225489C
+MOD44_0225489C: ; 0x0225489C
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r6, r2, #0
+ bl MOD20_02252C3C
+ str r0, [r5, #0x10]
+ bl FUN_0204BF44
+ str r0, [r5, #4]
+ strb r0, [r5, #3]
+ add r0, r5, #0
+ add r0, #8
+ add r1, r5, #4
+ add r2, r6, #0
+ bl MOD44_02254A54
+ cmp r0, #0
+ beq _022548D2
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ str r4, [r5, #0xc]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_022548D2:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD44_0225489C
+
+ thumb_func_start MOD44_022548D8
+MOD44_022548D8: ; 0x022548D8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ bl MOD44_02254B00
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD44_022548D8
+
+ thumb_func_start MOD44_022548EC
+MOD44_022548EC: ; 0x022548EC
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrb r1, [r4]
+ add r5, r0, #0
+ cmp r1, #3
+ bhs _02254918
+ lsl r2, r1, #2
+ ldr r1, _0225491C ; =0x02254C54
+ add r0, r4, #0
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254918
+ add r0, r4, #0
+ bl MOD44_022548D8
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0xc]
+ bl MOD20_022529A0
+_02254918:
+ pop {r3, r4, r5, pc}
+ nop
+_0225491C: .word 0x02254C54
+ thumb_func_end MOD44_022548EC
+
+ thumb_func_start MOD44_02254920
+MOD44_02254920: ; 0x02254920
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD44_02254920
+
+ thumb_func_start MOD44_02254928
+MOD44_02254928: ; 0x02254928
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254930
+ b _02254932
+_02254930:
+ mov r1, #2
+_02254932:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD44_02254928
+
+ thumb_func_start MOD44_0225493C
+MOD44_0225493C: ; 0x0225493C
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _0225494C
+ cmp r0, #1
+ beq _0225495C
+ b _02254976
+_0225494C:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD44_02254B14
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254976
+_0225495C:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD44_02254B38
+ cmp r0, #0
+ beq _02254976
+ ldr r0, [r4, #0xc]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD44_02254928
+_02254976:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD44_0225493C
+
+ thumb_func_start MOD44_0225497C
+MOD44_0225497C: ; 0x0225497C
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _02254990
+ mov r1, #2
+ bl MOD44_02254928
+ mov r0, #0
+ pop {r4, pc}
+_02254990:
+ ldrb r1, [r4, #1]
+ cmp r1, #0
+ beq _0225499C
+ cmp r1, #1
+ beq _022549B4
+ b _022549C4
+_0225499C:
+ bl MOD44_022549C8
+ cmp r0, #0
+ beq _022549C4
+ ldr r0, [r4, #8]
+ mov r1, #2
+ bl MOD44_02254B14
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549C4
+_022549B4:
+ ldr r0, [r4, #8]
+ mov r1, #2
+ bl MOD44_02254B38
+ cmp r0, #0
+ beq _022549C4
+ mov r0, #0
+ strb r0, [r4, #1]
+_022549C4:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD44_0225497C
+
+ thumb_func_start MOD44_022549C8
+MOD44_022549C8: ; 0x022549C8
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ bl MOD20_02252C08
+ cmp r0, #0
+ bne _02254A18
+ add r0, sp, #4
+ add r1, sp, #0
+ bl FUN_02020AB0
+ cmp r0, #0
+ beq _02254A18
+ ldr r0, [sp]
+ cmp r0, #0x88
+ blo _02254A18
+ cmp r0, #0xa0
+ bhs _02254A18
+ ldr r0, [sp, #4]
+ cmp r0, #0x30
+ blo _02254A18
+ cmp r0, #0xb8
+ bhs _02254A18
+ sub r0, #0x30
+ lsr r1, r0, #4
+ cmp r1, #8
+ blo _02254A02
+ mov r1, #7
+_02254A02:
+ ldrb r0, [r4, #3]
+ cmp r1, r0
+ beq _02254A18
+ str r1, [r4, #4]
+ strb r1, [r4, #3]
+ ldr r0, [r4, #0x10]
+ bl FUN_0204BF58
+ add sp, #8
+ mov r0, #1
+ pop {r4, pc}
+_02254A18:
+ mov r0, #0
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD44_022549C8
+
+ thumb_func_start MOD44_02254A20
+MOD44_02254A20: ; 0x02254A20
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A30
+ cmp r0, #1
+ beq _02254A40
+ b _02254A4E
+_02254A30:
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl MOD44_02254B14
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A4E
+_02254A40:
+ ldr r0, [r4, #8]
+ bl MOD44_02254B44
+ cmp r0, #0
+ beq _02254A4E
+ mov r0, #1
+ pop {r4, pc}
+_02254A4E:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD44_02254A20
+
+ thumb_func_start MOD44_02254A54
+MOD44_02254A54: ; 0x02254A54
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r0, #8
+ mov r1, #0x3c
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254A8A
+ 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 MOD44_02254A90
+ str r4, [r6]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254A8A:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD44_02254A54
+
+ thumb_func_start MOD44_02254A90
+MOD44_02254A90: ; 0x02254A90
+ push {r4, r5, lr}
+ sub sp, #0xc
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ add r5, r0, #0
+ add r4, r1, #0
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x45
+ bl FUN_02006A34
+ mov r0, #8
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0x28
+ mov r1, #0xc
+ mov r2, #0x43
+ mov r3, #0x44
+ bl MOD20_02253FBC
+ add r2, r5, #0
+ ldr r0, [r5, #0x20]
+ ldr r1, _02254AE0 ; =0x02254C60
+ add r2, #0x28
+ bl MOD20_02253E74
+ str r0, [r5, #0x24]
+ ldr r1, [r4]
+ mov r2, #0x25
+ lsl r1, r1, #4
+ add r1, #0x38
+ lsl r1, r1, #0xc
+ lsl r2, r2, #0xe
+ bl MOD20_02253F64
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_02254AE0: .word 0x02254C60
+ thumb_func_end MOD44_02254A90
+
+ thumb_func_start MOD44_02254AE4
+MOD44_02254AE4: ; 0x02254AE4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #0x24]
+ cmp r1, #0
+ beq _02254AF4
+ ldr r0, [r4, #0x20]
+ bl MOD20_02253F14
+_02254AF4:
+ add r4, #0x28
+ add r0, r4, #0
+ bl MOD20_02254014
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD44_02254AE4
+
+ thumb_func_start MOD44_02254B00
+MOD44_02254B00: ; 0x02254B00
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02254B10
+ bl MOD44_02254AE4
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254B10:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD44_02254B00
+
+ thumb_func_start MOD44_02254B14
+MOD44_02254B14: ; 0x02254B14
+ 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, _02254B34 ; =0x02254C8C
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254B34: .word 0x02254C8C
+ thumb_func_end MOD44_02254B14
+
+ thumb_func_start MOD44_02254B38
+MOD44_02254B38: ; 0x02254B38
+ ldr r3, _02254B40 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254B40: .word MOD20_02253794
+ thumb_func_end MOD44_02254B38
+
+ thumb_func_start MOD44_02254B44
+MOD44_02254B44: ; 0x02254B44
+ ldr r3, _02254B4C ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254B4C: .word MOD20_022537B8
+ thumb_func_end MOD44_02254B44
+
+ thumb_func_start MOD44_02254B50
+MOD44_02254B50: ; 0x02254B50
+ 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 MOD44_02254B50
+
+ thumb_func_start MOD44_02254B64
+MOD44_02254B64: ; 0x02254B64
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD20_022538A4
+ ldr r0, [r5, #4]
+ ldr r2, _02254BEC ; =0x02254C70
+ 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, #0x42
+ 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, #0x41
+ 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, _02254BF0 ; =0x04001000
+ ldr r0, _02254BF4 ; =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 MOD44_02254B50
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+_02254BEC: .word 0x02254C70
+_02254BF0: .word 0x04001000
+_02254BF4: .word 0xFFFFE0FF
+ thumb_func_end MOD44_02254B64
+
+ thumb_func_start MOD44_02254BF8
+MOD44_02254BF8: ; 0x02254BF8
+ 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 MOD44_02254B50
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD44_02254BF8
+
+ thumb_func_start MOD44_02254C14
+MOD44_02254C14: ; 0x02254C14
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A4
+ add r4, r0, #0
+ ldr r0, _02254C50 ; =0x00000663
+ bl MOD20_02252B28
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ ldr r1, [r4]
+ mov r2, #0x25
+ lsl r1, r1, #4
+ add r1, #0x38
+ ldr r0, [r5, #0x24]
+ lsl r1, r1, #0xc
+ lsl r2, r2, #0xe
+ bl MOD20_02253F64
+ add r0, r6, #0
+ bl MOD44_02254B50
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02254C50: .word 0x00000663
+ thumb_func_end MOD44_02254C14
+
+ .section .rodata
+ ; 0x02254C54
+ .incbin "baserom.nds", 0x295814, 0x68
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_44.SINIT_START
+ .global SDK_OVERLAY.MODULE_44.SINIT_END
+SDK_OVERLAY.MODULE_44.SINIT_START:
+ .word MOD44_02254840
+ .word 0
+SDK_OVERLAY.MODULE_44.SINIT_END:
diff --git a/arm9/modules/45/asm/module_45.s b/arm9/modules/45/asm/module_45.s
new file mode 100644
index 00000000..96762d44
--- /dev/null
+++ b/arm9/modules/45/asm/module_45.s
@@ -0,0 +1,1061 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD45_02254840
+MOD45_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD45_02254854
+ ldr r1, _02254850 ; =MOD45_02254A30
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD45_02254854
+_02254850: .word MOD45_02254A30
+ thumb_func_end MOD45_02254840
+
+ thumb_func_start MOD45_02254854
+MOD45_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0xb0
+ 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 MOD45_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD45_022549EC
+ 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 MOD45_022549EC
+ thumb_func_end MOD45_02254854
+
+ thumb_func_start MOD45_0225489C
+MOD45_0225489C: ; 0x0225489C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, sp, #4
+ add r6, r2, #0
+ bl FUN_020126B4
+ add r0, r4, #0
+ bl MOD20_02252C3C
+ add r1, r5, #0
+ add r1, #0x98
+ str r0, [r1]
+ add r0, r5, #4
+ add r1, r5, #0
+ add r2, sp, #4
+ bl MOD45_0225492C
+ add r0, r5, #0
+ ldrb r1, [r5, #0x12]
+ add r0, #0xa8
+ add r2, r6, #0
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0xa8
+ ldr r1, [r0]
+ ldr r0, [r5, #8]
+ sub r0, r0, #1
+ add r1, r1, r0
+ add r0, r5, #0
+ add r0, #0xac
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0x90
+ add r1, r5, #4
+ bl MOD45_02254B90
+ cmp r0, #0
+ beq _0225491C
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _02254924 ; =0x02255018
+ ldr r2, _02254928 ; =MOD45_022549E0
+ mov r1, #0x25
+ add r3, r5, #0
+ bl MOD20_02254130
+ add r1, r5, #0
+ add r1, #0x9c
+ str r0, [r1]
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0xa0
+ str r1, [r0]
+ add r5, #0x94
+ add sp, #0x14
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_0225491C:
+ mov r0, #0
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02254924: .word 0x02255018
+_02254928: .word MOD45_022549E0
+ thumb_func_end MOD45_0225489C
+
+ thumb_func_start MOD45_0225492C
+MOD45_0225492C: ; 0x0225492C
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r2, #0
+ add r6, r0, #0
+ ldr r0, [r4, #4]
+ str r1, [sp]
+ str r0, [r6]
+ ldr r0, [r4, #8]
+ str r0, [r6, #8]
+ ldr r1, [r6]
+ ldr r0, _022549BC ; =0x022550AB
+ ldrb r0, [r0, r1]
+ str r0, [r6, #4]
+ ldr r0, [r6]
+ cmp r0, #2
+ bne _02254970
+ ldr r5, [r4]
+ mov r1, #0x19
+ add r0, r5, #0
+ lsl r1, r1, #4
+ bl _u32_div_f
+ cmp r1, #0
+ beq _0225496C
+ add r0, r5, #0
+ mov r1, #0x64
+ bl _u32_div_f
+ cmp r1, #0
+ beq _02254970
+ mov r0, #3
+ tst r0, r5
+ bne _02254970
+_0225496C:
+ mov r0, #0x1d
+ str r0, [r6, #4]
+_02254970:
+ ldr r0, [r4, #8]
+ mov r1, #7
+ sub r0, r0, #1
+ bl _u32_div_f
+ mov r2, #7
+ ldr r3, [r4, #0xc]
+ sub r0, r2, r1
+ add r7, r3, r0
+ cmp r7, #7
+ blo _02254990
+ add r0, r7, #0
+ add r1, r2, #0
+ bl _u32_div_f
+ add r7, r1, #0
+_02254990:
+ ldr r0, [r6, #4]
+ mov r4, #0
+ cmp r0, #0
+ bls _022549BA
+ add r5, r6, #0
+_0225499A:
+ ldr r0, [sp]
+ add r2, r4, #1
+ strh r2, [r5, #0xc]
+ add r0, #0x98
+ ldr r0, [r0]
+ ldr r1, [r6]
+ bl FUN_0204C064
+ strb r0, [r5, #0xf]
+ add r0, r7, r4
+ strb r0, [r5, #0xe]
+ ldr r0, [r6, #4]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, r0
+ blo _0225499A
+_022549BA:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022549BC: .word 0x022550AB
+ thumb_func_end MOD45_0225492C
+
+ thumb_func_start MOD45_022549C0
+MOD45_022549C0: ; 0x022549C0
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x9c
+ ldr r0, [r0]
+ bl MOD20_02254198
+ add r0, r4, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ bl MOD45_02254BCC
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD45_022549C0
+
+ thumb_func_start MOD45_022549E0
+MOD45_022549E0: ; 0x022549E0
+ add r2, r3, #0
+ add r2, #0xa4
+ str r0, [r2]
+ add r3, #0xa0
+ str r1, [r3]
+ bx lr
+ thumb_func_end MOD45_022549E0
+
+ thumb_func_start MOD45_022549EC
+MOD45_022549EC: ; 0x022549EC
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #3
+ bhs _02254A2A
+ add r0, r4, #0
+ add r0, #0x94
+ add r1, #0x9c
+ ldr r0, [r0]
+ ldr r1, [r1]
+ bl MOD20_02252C14
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _02254A2C ; =0x0225500C
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254A2A
+ add r0, r4, #0
+ bl MOD45_022549C0
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ add r4, #0x94
+ ldr r0, [r4]
+ bl MOD20_022529A0
+_02254A2A:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02254A2C: .word 0x0225500C
+ thumb_func_end MOD45_022549EC
+
+ thumb_func_start MOD45_02254A30
+MOD45_02254A30: ; 0x02254A30
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD45_02254A30
+
+ thumb_func_start MOD45_02254A38
+MOD45_02254A38: ; 0x02254A38
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254A40
+ b _02254A42
+_02254A40:
+ mov r1, #2
+_02254A42:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD45_02254A38
+
+ thumb_func_start MOD45_02254A4C
+MOD45_02254A4C: ; 0x02254A4C
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A5C
+ cmp r0, #1
+ beq _02254A70
+ b _02254A92
+_02254A5C:
+ add r0, r4, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ mov r1, #0
+ bl MOD45_02254C7C
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A92
+_02254A70:
+ add r0, r4, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ mov r1, #0
+ bl MOD45_02254CA0
+ cmp r0, #0
+ beq _02254A92
+ add r0, r4, #0
+ add r0, #0x94
+ ldr r0, [r0]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD45_02254A38
+_02254A92:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD45_02254A4C
+
+ thumb_func_start MOD45_02254A98
+MOD45_02254A98: ; 0x02254A98
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldrb r1, [r5, #2]
+ cmp r1, #0
+ beq _02254AAC
+ mov r1, #2
+ bl MOD45_02254A38
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_02254AAC:
+ ldrb r0, [r5, #1]
+ cmp r0, #0
+ beq _02254AB8
+ cmp r0, #1
+ beq _02254B3E
+ b _02254B52
+_02254AB8:
+ add r0, r5, #0
+ add r0, #0xa0
+ ldr r0, [r0]
+ cmp r0, #1
+ bne _02254B52
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0xa0
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0xa8
+ ldr r2, [r0]
+ add r0, r5, #0
+ add r0, #0xa4
+ ldr r1, [r0]
+ cmp r1, r2
+ blo _02254B52
+ add r0, r5, #0
+ add r0, #0xac
+ ldr r0, [r0]
+ cmp r1, r0
+ bhi _02254B52
+ add r0, r5, #0
+ add r0, #0x98
+ sub r4, r1, r2
+ ldr r0, [r0]
+ ldr r1, [r5, #4]
+ add r2, r4, #1
+ bl FUN_0204C064
+ cmp r0, #0
+ beq _02254B08
+ add r0, r5, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ ldr r1, [r5, #4]
+ add r2, r4, #1
+ bl FUN_0204C02C
+ b _02254B16
+_02254B08:
+ add r0, r5, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ ldr r1, [r5, #4]
+ add r2, r4, #1
+ bl FUN_0204BFF0
+_02254B16:
+ add r3, r5, #0
+ add r3, #0x13
+ lsl r2, r4, #2
+ ldrb r1, [r3, r2]
+ mov r0, #1
+ eor r0, r1
+ strb r0, [r3, r2]
+ add r0, r5, #0
+ add r0, #0x8c
+ str r4, [r0]
+ add r0, r5, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ mov r1, #2
+ bl MOD45_02254C7C
+ ldrb r0, [r5, #1]
+ add r0, r0, #1
+ strb r0, [r5, #1]
+ b _02254B52
+_02254B3E:
+ add r0, r5, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ mov r1, #2
+ bl MOD45_02254CA0
+ cmp r0, #0
+ beq _02254B52
+ mov r0, #0
+ strb r0, [r5, #1]
+_02254B52:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD45_02254A98
+
+ thumb_func_start MOD45_02254B58
+MOD45_02254B58: ; 0x02254B58
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254B68
+ cmp r0, #1
+ beq _02254B7C
+ b _02254B8C
+_02254B68:
+ add r0, r4, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ mov r1, #1
+ bl MOD45_02254C7C
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254B8C
+_02254B7C:
+ add r4, #0x90
+ ldr r0, [r4]
+ bl MOD45_02254CAC
+ cmp r0, #0
+ beq _02254B8C
+ mov r0, #1
+ pop {r4, pc}
+_02254B8C:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD45_02254B58
+
+ thumb_func_start MOD45_02254B90
+MOD45_02254B90: ; 0x02254B90
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r0, #8
+ mov r1, #0x3c
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254BC6
+ 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 MOD45_02254BE0
+ str r4, [r6]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254BC6:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD45_02254B90
+
+ thumb_func_start MOD45_02254BCC
+MOD45_02254BCC: ; 0x02254BCC
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02254BDC
+ bl MOD45_02254C64
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254BDC:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD45_02254BCC
+
+ thumb_func_start MOD45_02254BE0
+MOD45_02254BE0: ; 0x02254BE0
+ push {r4, r5, lr}
+ sub sp, #0xc
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ add r5, r0, #0
+ add r4, r1, #0
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x72
+ bl FUN_02006A34
+ mov r0, #8
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0x28
+ mov r1, #0xc
+ mov r2, #0x70
+ mov r3, #0x71
+ bl MOD20_02253FBC
+ add r2, r5, #0
+ ldr r0, [r5, #0x20]
+ ldr r1, _02254C2C ; =0x022550B8
+ add r2, #0x28
+ bl MOD20_02253E74
+ str r0, [r5, #0x24]
+ ldr r1, [r4, #8]
+ lsl r1, r1, #2
+ add r1, r4, r1
+ ldrb r1, [r1, #0xa]
+ bl MOD45_02254C30
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_02254C2C: .word 0x022550B8
+ thumb_func_end MOD45_02254BE0
+
+ thumb_func_start MOD45_02254C30
+MOD45_02254C30: ; 0x02254C30
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ add r5, r0, #0
+ add r0, r6, #0
+ mov r1, #7
+ bl _u32_div_f
+ add r4, r1, #0
+ add r0, r6, #0
+ mov r1, #7
+ bl _u32_div_f
+ add r2, r0, #0
+ lsl r1, r4, #1
+ lsl r3, r2, #1
+ add r1, r4, r1
+ add r2, r2, r3
+ add r1, r1, #5
+ add r2, r2, #6
+ add r0, r5, #0
+ lsl r1, r1, #0xf
+ lsl r2, r2, #0xf
+ bl MOD20_02253F64
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD45_02254C30
+
+ thumb_func_start MOD45_02254C64
+MOD45_02254C64: ; 0x02254C64
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x20]
+ ldr r1, [r4, #0x24]
+ bl MOD20_02253F14
+ add r4, #0x28
+ add r0, r4, #0
+ bl MOD20_02254014
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD45_02254C64
+
+ thumb_func_start MOD45_02254C7C
+MOD45_02254C7C: ; 0x02254C7C
+ 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, _02254C9C ; =0x02255140
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254C9C: .word 0x02255140
+ thumb_func_end MOD45_02254C7C
+
+ thumb_func_start MOD45_02254CA0
+MOD45_02254CA0: ; 0x02254CA0
+ ldr r3, _02254CA8 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254CA8: .word MOD20_02253794
+ thumb_func_end MOD45_02254CA0
+
+ thumb_func_start MOD45_02254CAC
+MOD45_02254CAC: ; 0x02254CAC
+ ldr r3, _02254CB4 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254CB4: .word MOD20_022537B8
+ thumb_func_end MOD45_02254CAC
+
+ thumb_func_start MOD45_02254CB8
+MOD45_02254CB8: ; 0x02254CB8
+ 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 MOD45_02254CB8
+
+ thumb_func_start MOD45_02254CCC
+MOD45_02254CCC: ; 0x02254CCC
+ push {r3, r4, r5, r6, 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 r4, r0, #0
+ ldr r0, [r5, #4]
+ ldr r2, _02254D60 ; =0x022550FC
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r5, #4]
+ ldr r2, _02254D64 ; =0x022550E0
+ mov r1, #7
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD45_02254DDC
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD45_02254E74
+ 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, #0x6f
+ mov r3, #7
+ bl FUN_0200687C
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r0, [r5, #4]
+ mov r1, #7
+ bl FUN_02017CD0
+ ldr r1, _02254D68 ; =0x04001000
+ ldr r0, _02254D6C ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #0xc
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r6, #0
+ bl MOD45_02254CB8
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_02254D60: .word 0x022550FC
+_02254D64: .word 0x022550E0
+_02254D68: .word 0x04001000
+_02254D6C: .word 0xFFFFE0FF
+ thumb_func_end MOD45_02254CCC
+
+ thumb_func_start MOD45_02254D70
+MOD45_02254D70: ; 0x02254D70
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ 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 MOD45_02254CB8
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD45_02254D70
+
+ thumb_func_start MOD45_02254D94
+MOD45_02254D94: ; 0x02254D94
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD20_022538A4
+ add r2, r0, #0
+ add r0, #0x88
+ ldr r0, [r0]
+ lsl r3, r0, #2
+ add r0, r2, r3
+ ldrb r0, [r0, #0xf]
+ cmp r0, #0
+ beq _02254DBA
+ mov r1, #0x8f
+ b _02254DBC
+_02254DBA:
+ mov r1, #0x83
+_02254DBC:
+ add r2, r2, r3
+ ldrb r2, [r2, #0xe]
+ lsl r1, r1, #0x10
+ ldr r0, [r5, #4]
+ lsr r1, r1, #0x10
+ bl MOD45_02254E28
+ ldr r0, [r5, #4]
+ mov r1, #7
+ bl FUN_02017CD0
+ add r0, r4, #0
+ bl MOD45_02254CB8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD45_02254D94
+
+ thumb_func_start MOD45_02254DDC
+MOD45_02254DDC: ; 0x02254DDC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r7, 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]
+ add r6, r1, #0
+ ldr r2, [r7, #4]
+ mov r0, #0xc
+ mov r1, #0x6e
+ mov r3, #7
+ bl FUN_020068C8
+ ldr r0, [r6, #4]
+ mov r4, #0
+ cmp r0, #0
+ bls _02254E22
+ add r5, r6, #0
+_02254E08:
+ ldrb r0, [r5, #0xf]
+ cmp r0, #0
+ beq _02254E18
+ ldrb r2, [r5, #0xe]
+ ldr r0, [r7, #4]
+ mov r1, #0x8f
+ bl MOD45_02254E28
+_02254E18:
+ ldr r0, [r6, #4]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, r0
+ blo _02254E08
+_02254E22:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD45_02254DDC
+
+ thumb_func_start MOD45_02254E28
+MOD45_02254E28: ; 0x02254E28
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r7, r2, #0
+ add r5, r0, #0
+ add r6, r1, #0
+ add r0, r7, #0
+ mov r1, #7
+ bl _u32_div_f
+ add r4, r1, #0
+ add r0, r7, #0
+ mov r1, #7
+ bl _u32_div_f
+ lsl r1, r0, #1
+ add r0, r0, r1
+ add r0, r0, #5
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ lsl r3, r4, #1
+ str r0, [sp]
+ mov r0, #2
+ add r3, r4, r3
+ str r0, [sp, #4]
+ add r3, r3, #4
+ str r0, [sp, #8]
+ mov r0, #0
+ lsl r3, r3, #0x18
+ str r0, [sp, #0xc]
+ add r0, r5, #0
+ mov r1, #7
+ add r2, r6, #0
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD45_02254E28
+
+ thumb_func_start MOD45_02254E74
+MOD45_02254E74: ; 0x02254E74
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ mov r3, #0
+ add r7, r0, #0
+ str r3, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ add r6, r1, #0
+ ldr r0, [r7, #4]
+ mov r1, #6
+ mov r2, #0x82
+ bl FUN_02018540
+ ldr r0, [r7, #4]
+ ldr r1, [r6]
+ bl MOD45_02254EBC
+ ldr r0, [r6, #4]
+ mov r4, #0
+ cmp r0, #0
+ bls _02254EB8
+ add r5, r6, #0
+_02254EA4:
+ ldrb r2, [r5, #0xe]
+ ldr r0, [r7, #4]
+ add r1, r4, #1
+ bl MOD45_02254F14
+ ldr r0, [r6, #4]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, r0
+ blo _02254EA4
+_02254EB8:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD45_02254E74
+
+ thumb_func_start MOD45_02254EBC
+MOD45_02254EBC: ; 0x02254EBC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r7, r0, #0
+ ldr r0, _02254F10 ; =0x022550C6
+ lsl r1, r1, #1
+ ldrh r4, [r0, r1]
+ mov r0, #0
+ str r0, [sp, #0x10]
+_02254ECC:
+ ldr r0, [sp, #0x10]
+ mov r5, #0
+ add r0, r0, #2
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+_02254ED6:
+ add r3, r5, #0
+ add r2, r4, r5
+ add r3, #0xc
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ str r6, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r0, r7, #0
+ mov r1, #6
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ add r5, r5, #1
+ cmp r5, #4
+ blt _02254ED6
+ ldr r0, [sp, #0x10]
+ add r4, #0xc
+ add r0, r0, #1
+ str r0, [sp, #0x10]
+ cmp r0, #2
+ blt _02254ECC
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02254F10: .word 0x022550C6
+ thumb_func_end MOD45_02254EBC
+
+ thumb_func_start MOD45_02254F14
+MOD45_02254F14: ; 0x02254F14
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r5, r2, #0
+ str r0, [sp, #0x10]
+ str r1, [sp, #0x14]
+ add r0, r5, #0
+ mov r1, #7
+ bl _u32_div_f
+ add r6, r1, #0
+ lsl r0, r6, #1
+ add r0, r6, r0
+ add r4, r0, #4
+ add r0, r5, #0
+ mov r1, #7
+ bl _u32_div_f
+ lsl r1, r0, #1
+ add r0, r0, r1
+ add r5, r0, #5
+ cmp r6, #0
+ bne _02254F44
+ mov r6, #1
+ b _02254F46
+_02254F44:
+ mov r6, #0
+_02254F46:
+ ldr r0, [sp, #0x14]
+ mov r1, #0xa
+ bl _u32_div_f
+ add r7, r0, #0
+ ldr r0, [sp, #0x14]
+ mov r1, #0xa
+ bl _u32_div_f
+ str r1, [sp, #0x18]
+ cmp r7, #0
+ beq _02254FAE
+ mov r0, #0x14
+ add r2, r6, #0
+ mul r2, r0
+ ldr r0, _02255008 ; =0x02255118
+ lsl r1, r7, #1
+ add r0, r0, r2
+ ldrh r7, [r1, r0]
+ lsl r0, r5, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ lsl r3, r4, #0x18
+ ldr r0, [sp, #0x10]
+ mov r1, #6
+ add r2, r7, #0
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ add r7, #0xc
+ str r0, [sp, #0xc]
+ lsl r2, r7, #0x10
+ lsl r3, r4, #0x18
+ ldr r0, [sp, #0x10]
+ mov r1, #6
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+_02254FAE:
+ mov r0, #0x14
+ add r3, r6, #0
+ mul r3, r0
+ ldr r0, [sp, #0x18]
+ ldr r2, _02255008 ; =0x02255118
+ lsl r1, r0, #1
+ add r0, r2, r3
+ ldrh r6, [r1, r0]
+ lsl r0, r5, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ add r3, r4, #1
+ str r0, [sp, #0xc]
+ lsl r3, r3, #0x18
+ ldr r0, [sp, #0x10]
+ mov r1, #6
+ add r2, r6, #0
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ add r6, #0xc
+ add r3, r4, #1
+ str r0, [sp, #0xc]
+ lsl r2, r6, #0x10
+ lsl r3, r3, #0x18
+ ldr r0, [sp, #0x10]
+ mov r1, #6
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02255008: .word 0x02255118
+ thumb_func_end MOD45_02254F14
+
+ .section .rodata
+ ; 0x0225500C
+ .incbin "baserom.nds", 0x2961CC, 0x164
+
+ .section .sinit
+ .word MOD45_02254840
diff --git a/arm9/modules/46/asm/module_46.s b/arm9/modules/46/asm/module_46.s
new file mode 100644
index 00000000..600e0c5b
--- /dev/null
+++ b/arm9/modules/46/asm/module_46.s
@@ -0,0 +1,399 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD46_02254840
+MOD46_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD46_02254854
+ ldr r1, _02254850 ; =MOD46_02254908
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD46_02254854
+_02254850: .word MOD46_02254908
+ thumb_func_end MOD46_02254840
+
+ thumb_func_start MOD46_02254854
+MOD46_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x10
+ 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 MOD46_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD46_022548D4
+ 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 MOD46_022548D4
+ thumb_func_end MOD46_02254854
+
+ thumb_func_start MOD46_0225489C
+MOD46_0225489C: ; 0x0225489C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, #8
+ add r1, r5, #4
+ bl MOD46_022549AC
+ cmp r0, #0
+ beq _022548BC
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ str r4, [r5, #0xc]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_022548BC:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD46_0225489C
+
+ thumb_func_start MOD46_022548C0
+MOD46_022548C0: ; 0x022548C0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ bl MOD46_022549DC
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD46_022548C0
+
+ thumb_func_start MOD46_022548D4
+MOD46_022548D4: ; 0x022548D4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrb r1, [r4]
+ add r5, r0, #0
+ cmp r1, #3
+ bhs _02254900
+ lsl r2, r1, #2
+ ldr r1, _02254904 ; =0x02254AF4
+ add r0, r4, #0
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254900
+ add r0, r4, #0
+ bl MOD46_022548C0
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0xc]
+ bl MOD20_022529A0
+_02254900:
+ pop {r3, r4, r5, pc}
+ nop
+_02254904: .word 0x02254AF4
+ thumb_func_end MOD46_022548D4
+
+ thumb_func_start MOD46_02254908
+MOD46_02254908: ; 0x02254908
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD46_02254908
+
+ thumb_func_start MOD46_02254910
+MOD46_02254910: ; 0x02254910
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254918
+ b _0225491A
+_02254918:
+ mov r1, #2
+_0225491A:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD46_02254910
+
+ thumb_func_start MOD46_02254924
+MOD46_02254924: ; 0x02254924
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254934
+ cmp r0, #1
+ beq _02254944
+ b _0225495E
+_02254934:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD46_022549E8
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _0225495E
+_02254944:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD46_02254A0C
+ cmp r0, #0
+ beq _0225495E
+ ldr r0, [r4, #0xc]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD46_02254910
+_0225495E:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD46_02254924
+
+ thumb_func_start MOD46_02254964
+MOD46_02254964: ; 0x02254964
+ push {r3, lr}
+ ldrb r1, [r0, #2]
+ cmp r1, #0
+ beq _02254972
+ mov r1, #2
+ bl MOD46_02254910
+_02254972:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD46_02254964
+
+ thumb_func_start MOD46_02254978
+MOD46_02254978: ; 0x02254978
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254988
+ cmp r0, #1
+ beq _02254998
+ b _022549A6
+_02254988:
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl MOD46_022549E8
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549A6
+_02254998:
+ ldr r0, [r4, #8]
+ bl MOD46_02254A18
+ cmp r0, #0
+ beq _022549A6
+ mov r0, #1
+ pop {r4, pc}
+_022549A6:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD46_02254978
+
+ thumb_func_start MOD46_022549AC
+MOD46_022549AC: ; 0x022549AC
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x30
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _022549D8
+ add r0, #8
+ mov r1, #8
+ bl MOD20_022536F4
+ str r6, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ cmp r0, #0
+ beq _022549D8
+ str r4, [r5]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_022549D8:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD46_022549AC
+
+ thumb_func_start MOD46_022549DC
+MOD46_022549DC: ; 0x022549DC
+ push {r3, lr}
+ cmp r0, #0
+ beq _022549E6
+ bl FUN_02016A18
+_022549E6:
+ pop {r3, pc}
+ thumb_func_end MOD46_022549DC
+
+ thumb_func_start MOD46_022549E8
+MOD46_022549E8: ; 0x022549E8
+ 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, _02254A08 ; =0x02254B1C
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254A08: .word 0x02254B1C
+ thumb_func_end MOD46_022549E8
+
+ thumb_func_start MOD46_02254A0C
+MOD46_02254A0C: ; 0x02254A0C
+ ldr r3, _02254A14 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254A14: .word MOD20_02253794
+ thumb_func_end MOD46_02254A0C
+
+ thumb_func_start MOD46_02254A18
+MOD46_02254A18: ; 0x02254A18
+ ldr r3, _02254A20 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254A20: .word MOD20_022537B8
+ thumb_func_end MOD46_02254A18
+
+ thumb_func_start MOD46_02254A24
+MOD46_02254A24: ; 0x02254A24
+ 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 MOD46_02254A24
+
+ thumb_func_start MOD46_02254A38
+MOD46_02254A38: ; 0x02254A38
+ 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, _02254ACC ; =0x02254B00
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r1, #8
+ str r1, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r3, #6
+ bl FUN_0200687C
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x18
+ str r0, [sp, #8]
+ str r2, [sp, #0xc]
+ ldr r0, [r5, #4]
+ mov r1, #6
+ add r3, r2, #0
+ bl FUN_02018540
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #0xc
+ mov r1, #9
+ mov r2, #4
+ mov r3, #0
+ bl FUN_02006930
+ ldr r0, [r5, #4]
+ mov r1, #0x1a
+ mov r2, #6
+ bl MOD20_02253AA4
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, _02254AD0 ; =0x04001000
+ ldr r0, _02254AD4 ; =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 MOD46_02254A24
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_02254ACC: .word 0x02254B00
+_02254AD0: .word 0x04001000
+_02254AD4: .word 0xFFFFE0FF
+ thumb_func_end MOD46_02254A38
+
+ thumb_func_start MOD46_02254AD8
+MOD46_02254AD8: ; 0x02254AD8
+ 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 MOD46_02254A24
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD46_02254AD8
+
+ .section .rodata
+ ; 0x02254AF4
+ .incbin "baserom.nds", 0x2966b4, 0x4c
+
+ .section .sinit
+ .word MOD46_02254840
diff --git a/arm9/modules/47/asm/module_47.s b/arm9/modules/47/asm/module_47.s
new file mode 100644
index 00000000..c10b696b
--- /dev/null
+++ b/arm9/modules/47/asm/module_47.s
@@ -0,0 +1,1497 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD47_02254840
+MOD47_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD47_02254854
+ ldr r1, _02254850 ; =MOD47_0225491C
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD47_02254854
+_02254850: .word MOD47_0225491C
+ thumb_func_end MOD47_02254840
+
+ thumb_func_start MOD47_02254854
+MOD47_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 MOD47_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD47_022548E0
+ 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 MOD47_022548E0
+ thumb_func_end MOD47_02254854
+
+ thumb_func_start MOD47_0225489C
+MOD47_0225489C: ; 0x0225489C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, #0x14
+ add r1, r5, #4
+ bl MOD47_02254D14
+ cmp r0, #0
+ beq _022548C8
+ mov r1, #0
+ strb r1, [r5]
+ strb r1, [r5, #1]
+ add r0, r5, #0
+ strb r1, [r5, #2]
+ add r0, #0x20
+ strb r1, [r0]
+ add r0, r5, #0
+ add r0, #0x21
+ strb r1, [r0]
+ str r4, [r5, #0x18]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_022548C8:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD47_0225489C
+
+ thumb_func_start MOD47_022548CC
+MOD47_022548CC: ; 0x022548CC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x14]
+ bl MOD47_02254D6C
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD47_022548CC
+
+ thumb_func_start MOD47_022548E0
+MOD47_022548E0: ; 0x022548E0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #6
+ bhs _02254914
+ add r0, r4, #0
+ bl MOD47_02254C6C
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _02254918 ; =0x022553B8
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254914
+ add r0, r4, #0
+ bl MOD47_022548CC
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x18]
+ bl MOD20_022529A0
+_02254914:
+ pop {r3, r4, r5, pc}
+ nop
+_02254918: .word 0x022553B8
+ thumb_func_end MOD47_022548E0
+
+ thumb_func_start MOD47_0225491C
+MOD47_0225491C: ; 0x0225491C
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD47_0225491C
+
+ thumb_func_start MOD47_02254924
+MOD47_02254924: ; 0x02254924
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _0225492C
+ b _0225492E
+_0225492C:
+ mov r1, #5
+_0225492E:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD47_02254924
+
+ thumb_func_start MOD47_02254938
+MOD47_02254938: ; 0x02254938
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254948
+ cmp r0, #1
+ beq _02254958
+ b _02254972
+_02254948:
+ ldr r0, [r4, #0x14]
+ mov r1, #0
+ bl MOD47_02254E24
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254972
+_02254958:
+ ldr r0, [r4, #0x14]
+ mov r1, #0
+ bl MOD47_02254E48
+ cmp r0, #0
+ beq _02254972
+ ldr r0, [r4, #0x18]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD47_02254924
+_02254972:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD47_02254938
+
+ thumb_func_start MOD47_02254978
+MOD47_02254978: ; 0x02254978
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _0225498C
+ mov r1, #5
+ bl MOD47_02254924
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_0225498C:
+ ldrb r1, [r4, #1]
+ cmp r1, #0
+ bne _022549DA
+ bl MOD47_02254BD4
+ cmp r0, #0
+ beq _022549DA
+ add r0, r4, #0
+ bl MOD47_02254D04
+ cmp r0, #0
+ beq _022549D4
+ ldr r0, [r4, #0x18]
+ bl MOD20_02252C38
+ add r5, r0, #0
+ ldr r0, [r4, #0x14]
+ mov r1, #3
+ bl MOD47_02254E24
+ ldr r0, [r5, #0x1c]
+ ldr r0, [r0]
+ bl FUN_02034984
+ cmp r0, #0
+ beq _022549CA
+ add r0, r4, #0
+ mov r1, #3
+ bl MOD47_02254924
+ b _022549DA
+_022549CA:
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD47_02254924
+ b _022549DA
+_022549D4:
+ ldr r0, _022549E0 ; =0x0000066E
+ bl MOD20_02252B28
+_022549DA:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_022549E0: .word 0x0000066E
+ thumb_func_end MOD47_02254978
+
+ thumb_func_start MOD47_022549E4
+MOD47_022549E4: ; 0x022549E4
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _022549F8
+ mov r1, #5
+ bl MOD47_02254924
+ mov r0, #0
+ pop {r4, pc}
+_022549F8:
+ ldrb r1, [r4, #1]
+ cmp r1, #0
+ beq _02254A08
+ cmp r1, #1
+ beq _02254A18
+ cmp r1, #2
+ beq _02254A60
+ b _02254AAC
+_02254A08:
+ bl MOD47_02254CCC
+ mov r0, #0
+ str r0, [r4, #0x1c]
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254AAC
+_02254A18:
+ bl MOD47_02254AB0
+ cmp r0, #0
+ beq _02254A2C
+ add r0, r4, #0
+ mov r1, #4
+ bl MOD47_02254924
+ mov r0, #0
+ pop {r4, pc}
+_02254A2C:
+ ldr r0, [r4, #0x1c]
+ cmp r0, #0x3c
+ bhs _02254A36
+ add r0, r0, #1
+ str r0, [r4, #0x1c]
+_02254A36:
+ add r0, r4, #0
+ bl MOD47_02254CEC
+ cmp r0, #0
+ beq _02254AAC
+ ldr r0, [r4, #0x1c]
+ cmp r0, #0x3c
+ blo _02254AAC
+ add r0, r4, #0
+ bl MOD47_02254C1C
+ ldr r0, [r4, #0x14]
+ mov r1, #6
+ bl MOD47_02254E24
+ mov r0, #0
+ str r0, [r4, #0x1c]
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254AAC
+_02254A60:
+ bl MOD47_02254AB0
+ cmp r0, #0
+ bne _02254A72
+ add r0, r4, #0
+ bl MOD47_02254BD4
+ cmp r0, #0
+ beq _02254A8C
+_02254A72:
+ add r0, r4, #0
+ bl MOD47_02254CFC
+ ldr r0, [r4, #0x14]
+ mov r1, #2
+ bl MOD47_02254E24
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD47_02254924
+ mov r0, #0
+ pop {r4, pc}
+_02254A8C:
+ ldr r0, [r4, #0x1c]
+ add r0, r0, #1
+ str r0, [r4, #0x1c]
+ cmp r0, #0x1e
+ blo _02254AAC
+ mov r0, #0
+ str r0, [r4, #0x1c]
+ add r0, r4, #0
+ bl MOD47_02254C1C
+ cmp r0, #0
+ beq _02254AAC
+ ldr r0, [r4, #0x14]
+ mov r1, #6
+ bl MOD47_02254E24
+_02254AAC:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD47_022549E4
+
+ thumb_func_start MOD47_02254AB0
+MOD47_02254AB0: ; 0x02254AB0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x18]
+ bl MOD20_02252C08
+ cmp r0, #0
+ beq _02254AC2
+ mov r0, #1
+ pop {r4, pc}
+_02254AC2:
+ ldr r0, [r4, #0x18]
+ bl MOD20_02252C30
+ cmp r0, #0
+ beq _02254AD0
+ mov r0, #1
+ pop {r4, pc}
+_02254AD0:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD47_02254AB0
+
+ thumb_func_start MOD47_02254AD4
+MOD47_02254AD4: ; 0x02254AD4
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _02254AE8
+ mov r1, #5
+ bl MOD47_02254924
+ mov r0, #0
+ pop {r4, pc}
+_02254AE8:
+ ldrb r1, [r4, #1]
+ cmp r1, #0
+ beq _02254AF8
+ cmp r1, #1
+ beq _02254B02
+ cmp r1, #2
+ beq _02254B1C
+ b _02254B34
+_02254AF8:
+ mov r0, #0
+ str r0, [r4, #0x1c]
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+_02254B02:
+ ldr r0, [r4, #0x1c]
+ add r0, r0, #1
+ str r0, [r4, #0x1c]
+ cmp r0, #0x3c
+ blo _02254B34
+ ldr r0, [r4, #0x14]
+ mov r1, #4
+ bl MOD47_02254E24
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254B34
+_02254B1C:
+ bl MOD47_02254BD4
+ cmp r0, #0
+ beq _02254B34
+ ldr r0, [r4, #0x14]
+ mov r1, #2
+ bl MOD47_02254E24
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD47_02254924
+_02254B34:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD47_02254AD4
+
+ thumb_func_start MOD47_02254B38
+MOD47_02254B38: ; 0x02254B38
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _02254B4C
+ mov r1, #5
+ bl MOD47_02254924
+ mov r0, #0
+ pop {r4, pc}
+_02254B4C:
+ ldrb r1, [r4, #1]
+ cmp r1, #0
+ beq _02254B58
+ cmp r1, #1
+ beq _02254B6C
+ b _02254B84
+_02254B58:
+ bl MOD47_02254CFC
+ ldr r0, [r4, #0x14]
+ mov r1, #5
+ bl MOD47_02254E24
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254B84
+_02254B6C:
+ bl MOD47_02254BD4
+ cmp r0, #0
+ beq _02254B84
+ ldr r0, [r4, #0x14]
+ mov r1, #2
+ bl MOD47_02254E24
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD47_02254924
+_02254B84:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD47_02254B38
+
+ thumb_func_start MOD47_02254B88
+MOD47_02254B88: ; 0x02254B88
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #1]
+ cmp r1, #0
+ beq _02254B9C
+ cmp r1, #1
+ beq _02254BA6
+ cmp r1, #2
+ beq _02254BC0
+ b _02254BCE
+_02254B9C:
+ bl MOD47_02254CFC
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+_02254BA6:
+ add r0, r4, #0
+ bl MOD47_02254D04
+ cmp r0, #0
+ beq _02254BCE
+ ldr r0, [r4, #0x14]
+ mov r1, #1
+ bl MOD47_02254E24
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254BCE
+_02254BC0:
+ ldr r0, [r4, #0x14]
+ bl MOD47_02254E54
+ cmp r0, #0
+ beq _02254BCE
+ mov r0, #1
+ pop {r4, pc}
+_02254BCE:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD47_02254B88
+
+ thumb_func_start MOD47_02254BD4
+MOD47_02254BD4: ; 0x02254BD4
+ push {r3, lr}
+ sub sp, #8
+ ldr r0, [r0, #0x18]
+ bl MOD20_02252C08
+ cmp r0, #0
+ bne _02254C14
+ add r0, sp, #4
+ add r1, sp, #0
+ bl FUN_02020ACC
+ cmp r0, #0
+ beq _02254C14
+ ldr r0, [sp, #4]
+ sub r0, #0x10
+ cmp r0, #0xbf
+ bhs _02254BFA
+ mov r1, #1
+ b _02254BFC
+_02254BFA:
+ mov r1, #0
+_02254BFC:
+ ldr r0, [sp]
+ sub r0, #0x10
+ cmp r0, #0x9f
+ bhs _02254C08
+ mov r0, #1
+ b _02254C0A
+_02254C08:
+ mov r0, #0
+_02254C0A:
+ tst r0, r1
+ beq _02254C14
+ add sp, #8
+ mov r0, #1
+ pop {r3, pc}
+_02254C14:
+ mov r0, #0
+ add sp, #8
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD47_02254BD4
+
+ thumb_func_start MOD47_02254C1C
+MOD47_02254C1C: ; 0x02254C1C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r7, r0, #0
+ mov r0, #0
+ ldr r5, _02254C68 ; =0x022553D0
+ str r0, [sp]
+ str r0, [sp, #4]
+_02254C2A:
+ ldr r0, [r5, #4]
+ mov r4, #0
+ add r6, r4, #0
+ cmp r0, #0
+ bls _02254C46
+_02254C34:
+ ldr r0, [r5]
+ ldrb r0, [r0, r4]
+ bl FUN_0202F0DC
+ add r6, r6, r0
+ ldr r0, [r5, #4]
+ add r4, r4, #1
+ cmp r4, r0
+ blo _02254C34
+_02254C46:
+ ldr r0, [r7, #4]
+ cmp r6, r0
+ beq _02254C52
+ mov r0, #1
+ str r6, [r7, #4]
+ str r0, [sp]
+_02254C52:
+ ldr r0, [sp, #4]
+ add r5, #8
+ add r0, r0, #1
+ add r7, r7, #4
+ str r0, [sp, #4]
+ cmp r0, #4
+ blo _02254C2A
+ ldr r0, [sp]
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254C68: .word 0x022553D0
+ thumb_func_end MOD47_02254C1C
+
+ thumb_func_start MOD47_02254C6C
+MOD47_02254C6C: ; 0x02254C6C
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ cmp r0, #3
+ bhi _02254CC8
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02254C84: ; jump table
+ .short _02254CC8 - _02254C84 - 2 ; case 0
+ .short _02254C8C - _02254C84 - 2 ; case 1
+ .short _02254C9C - _02254C84 - 2 ; case 2
+ .short _02254CBA - _02254C84 - 2 ; case 3
+_02254C8C:
+ bl FUN_02032C28
+ cmp r0, #0
+ beq _02254CC8
+ mov r0, #2
+ add r4, #0x20
+ strb r0, [r4]
+ pop {r4, pc}
+_02254C9C:
+ add r0, r4, #0
+ add r0, #0x21
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _02254CC8
+ bl FUN_02032C0C
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x21
+ strb r1, [r0]
+ mov r0, #3
+ add r4, #0x20
+ strb r0, [r4]
+ pop {r4, pc}
+_02254CBA:
+ bl FUN_02030F40
+ cmp r0, #0
+ bne _02254CC8
+ mov r0, #0
+ add r4, #0x20
+ strb r0, [r4]
+_02254CC8:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD47_02254C6C
+
+ thumb_func_start MOD47_02254CCC
+MOD47_02254CCC: ; 0x02254CCC
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02254CE8
+ ldr r0, [r4, #0x18]
+ bl MOD20_02252C40
+ bl FUN_02032BD0
+ mov r0, #1
+ add r4, #0x20
+ strb r0, [r4]
+_02254CE8:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD47_02254CCC
+
+ thumb_func_start MOD47_02254CEC
+MOD47_02254CEC: ; 0x02254CEC
+ add r0, #0x20
+ ldrb r0, [r0]
+ cmp r0, #2
+ bne _02254CF8
+ mov r0, #1
+ bx lr
+_02254CF8:
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD47_02254CEC
+
+ thumb_func_start MOD47_02254CFC
+MOD47_02254CFC: ; 0x02254CFC
+ mov r1, #1
+ add r0, #0x21
+ strb r1, [r0]
+ bx lr
+ thumb_func_end MOD47_02254CFC
+
+ thumb_func_start MOD47_02254D04
+MOD47_02254D04: ; 0x02254D04
+ add r0, #0x20
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02254D10
+ mov r0, #1
+ bx lr
+_02254D10:
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD47_02254D04
+
+ thumb_func_start MOD47_02254D14
+MOD47_02254D14: ; 0x02254D14
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r0, #8
+ mov r1, #0x60
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254D62
+ 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, #0x30]
+ ldr r2, _02254D68 ; =0x0000019A
+ mov r0, #1
+ mov r1, #0x1a
+ mov r3, #8
+ bl FUN_0200A86C
+ str r0, [r4, #0x58]
+ mov r0, #0x60
+ mov r1, #8
+ bl FUN_020219F4
+ str r0, [r4, #0x5c]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD47_02254D8C
+ str r4, [r6]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254D62:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ nop
+_02254D68: .word 0x0000019A
+ thumb_func_end MOD47_02254D14
+
+ thumb_func_start MOD47_02254D6C
+MOD47_02254D6C: ; 0x02254D6C
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02254D8A
+ ldr r0, [r4, #0x5c]
+ bl FUN_02021A20
+ ldr r0, [r4, #0x58]
+ bl FUN_0200A8B8
+ add r0, r4, #0
+ bl MOD47_02254DFC
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254D8A:
+ pop {r4, pc}
+ thumb_func_end MOD47_02254D6C
+
+ thumb_func_start MOD47_02254D8C
+MOD47_02254D8C: ; 0x02254D8C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ 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, #0x63
+ bl FUN_02006A34
+ mov r0, #8
+ str r0, [sp]
+ add r0, r6, #0
+ add r0, #0x44
+ mov r1, #0xc
+ mov r2, #0x61
+ mov r3, #0x62
+ bl MOD20_02253FBC
+ add r0, r6, #0
+ str r0, [sp, #0xc]
+ add r0, #0x44
+ ldr r4, _02254DF8 ; =0x02255410
+ mov r7, #0
+ add r5, r6, #0
+ str r0, [sp, #0xc]
+_02254DC6:
+ 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, #4
+ blt _02254DC6
+ ldr r0, [r6, #0x38]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r6, #0x3c]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r6, #0x40]
+ mov r1, #1
+ bl MOD20_02253F78
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254DF8: .word 0x02255410
+ thumb_func_end MOD47_02254D8C
+
+ thumb_func_start MOD47_02254DFC
+MOD47_02254DFC: ; 0x02254DFC
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+_02254E04:
+ ldr r1, [r5, #0x34]
+ cmp r1, #0
+ beq _02254E10
+ ldr r0, [r6, #0x30]
+ bl MOD20_02253F14
+_02254E10:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _02254E04
+ add r6, #0x44
+ add r0, r6, #0
+ bl MOD20_02254014
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD47_02254DFC
+
+ thumb_func_start MOD47_02254E24
+MOD47_02254E24: ; 0x02254E24
+ 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, _02254E44 ; =0x02255450
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254E44: .word 0x02255450
+ thumb_func_end MOD47_02254E24
+
+ thumb_func_start MOD47_02254E48
+MOD47_02254E48: ; 0x02254E48
+ ldr r3, _02254E50 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254E50: .word MOD20_02253794
+ thumb_func_end MOD47_02254E48
+
+ thumb_func_start MOD47_02254E54
+MOD47_02254E54: ; 0x02254E54
+ ldr r3, _02254E5C ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254E5C: .word MOD20_022537B8
+ thumb_func_end MOD47_02254E54
+
+ thumb_func_start MOD47_02254E60
+MOD47_02254E60: ; 0x02254E60
+ 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 MOD47_02254E60
+
+ thumb_func_start MOD47_02254E74
+MOD47_02254E74: ; 0x02254E74
+ push {r4, r5, r6, lr}
+ sub sp, #0x18
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ ldr r2, _02254F28 ; =0x022553F4
+ 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, #0x60
+ 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, #0x5f
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ mov r3, #2
+ add r1, r5, #0
+ str r3, [sp]
+ mov r0, #0x18
+ str r0, [sp, #4]
+ mov r0, #0x14
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ lsl r0, r4, #0xb
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #4]
+ add r1, #0x20
+ mov r2, #6
+ bl FUN_02019064
+ add r0, r5, #0
+ add r0, #0x20
+ bl FUN_02019270
+ add r0, r5, #0
+ bl MOD47_022550FC
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, _02254F2C ; =0x04001000
+ ldr r0, _02254F30 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x14]
+ 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 MOD47_02254E60
+ add sp, #0x18
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02254F28: .word 0x022553F4
+_02254F2C: .word 0x04001000
+_02254F30: .word 0xFFFFE0FF
+ thumb_func_end MOD47_02254E74
+
+ thumb_func_start MOD47_02254F34
+MOD47_02254F34: ; 0x02254F34
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, #0x20
+ bl FUN_02019178
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r5, #0
+ bl MOD47_02254E60
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD47_02254F34
+
+ thumb_func_start MOD47_02254F58
+MOD47_02254F58: ; 0x02254F58
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ ldr r0, [r4, #0x34]
+ mov r1, #0
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x38]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x3c]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x40]
+ mov r1, #1
+ bl MOD20_02253F78
+ add r0, r4, #0
+ bl MOD47_022550FC
+ ldr r0, _02254F98 ; =0x00000663
+ bl MOD20_02252B28
+ add r0, r5, #0
+ bl MOD47_02254E60
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02254F98: .word 0x00000663
+ thumb_func_end MOD47_02254F58
+
+ thumb_func_start MOD47_02254F9C
+MOD47_02254F9C: ; 0x02254F9C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ ldr r0, [r4, #0x34]
+ mov r1, #0
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x38]
+ mov r1, #0
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x3c]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x40]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x38]
+ mov r1, #1
+ bl MOD20_02253F28
+ add r0, r4, #0
+ bl MOD47_02255184
+ ldr r0, _02254FE4 ; =0x00000663
+ bl MOD20_02252B28
+ add r0, r5, #0
+ bl MOD47_02254E60
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02254FE4: .word 0x00000663
+ thumb_func_end MOD47_02254F9C
+
+ thumb_func_start MOD47_02254FE8
+MOD47_02254FE8: ; 0x02254FE8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ ldr r0, [r4, #0x34]
+ mov r1, #0
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x38]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x3c]
+ mov r1, #0
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x40]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x3c]
+ mov r1, #2
+ bl MOD20_02253F28
+ add r0, r4, #0
+ bl MOD47_022551D8
+ ldr r0, _02255030 ; =0x0000066E
+ bl MOD20_02252B28
+ add r0, r5, #0
+ bl MOD47_02254E60
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02255030: .word 0x0000066E
+ thumb_func_end MOD47_02254FE8
+
+ thumb_func_start MOD47_02255034
+MOD47_02255034: ; 0x02255034
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ ldr r0, [r4, #0x34]
+ mov r1, #0
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x38]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x3c]
+ mov r1, #0
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x40]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x3c]
+ mov r1, #2
+ bl MOD20_02253F28
+ add r0, r4, #0
+ bl MOD47_02255250
+ ldr r0, _0225507C ; =0x0000066E
+ bl MOD20_02252B28
+ add r0, r5, #0
+ bl MOD47_02254E60
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0225507C: .word 0x0000066E
+ thumb_func_end MOD47_02255034
+
+ thumb_func_start MOD47_02255080
+MOD47_02255080: ; 0x02255080
+ push {r4, r5, r6, lr}
+ 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, #0x34]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x38]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x3c]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x40]
+ mov r1, #0
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x40]
+ mov r1, #0
+ bl MOD20_02253F28
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD47_022552D8
+ ldr r0, _022550D4 ; =0x00000663
+ bl MOD20_02252B28
+ add r0, r5, #0
+ bl MOD47_02254E60
+ pop {r4, r5, r6, pc}
+ nop
+_022550D4: .word 0x00000663
+ thumb_func_end MOD47_02255080
+
+ thumb_func_start MOD47_022550D8
+MOD47_022550D8: ; 0x022550D8
+ 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 MOD47_022552D8
+ add r0, r5, #0
+ bl MOD47_02254E60
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD47_022550D8
+
+ thumb_func_start MOD47_022550FC
+MOD47_022550FC: ; 0x022550FC
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ add r0, #0x20
+ mov r1, #4
+ bl FUN_02019620
+ ldr r0, [r4, #0x58]
+ ldr r2, [r4, #0x5c]
+ mov r1, #0
+ bl FUN_0200A8E0
+ mov r0, #0
+ ldr r1, [r4, #0x5c]
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0xc0
+ sub r0, r1, r0
+ lsr r3, r0, #1
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02255180 ; =0x00010104
+ mov r1, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r4, #0
+ ldr r2, [r4, #0x5c]
+ add r0, #0x20
+ bl FUN_0201BDE0
+ ldr r0, [r4, #0x58]
+ ldr r2, [r4, #0x5c]
+ mov r1, #0xa
+ bl FUN_0200A8E0
+ mov r0, #0
+ ldr r1, [r4, #0x5c]
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0xc0
+ sub r0, r1, r0
+ lsr r3, r0, #1
+ mov r0, #0x38
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02255180 ; =0x00010104
+ mov r1, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r4, #0
+ ldr r2, [r4, #0x5c]
+ add r0, #0x20
+ bl FUN_0201BDE0
+ add r4, #0x20
+ add r0, r4, #0
+ bl FUN_02019548
+ add sp, #0x10
+ pop {r4, pc}
+ nop
+_02255180: .word 0x00010104
+ thumb_func_end MOD47_022550FC
+
+ thumb_func_start MOD47_02255184
+MOD47_02255184: ; 0x02255184
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ add r0, #0x20
+ mov r1, #4
+ bl FUN_02019620
+ ldr r0, [r4, #0x58]
+ ldr r2, [r4, #0x5c]
+ mov r1, #1
+ bl FUN_0200A8E0
+ mov r0, #0
+ ldr r1, [r4, #0x5c]
+ add r2, r0, #0
+ bl FUN_02002F08
+ mov r1, #0xc0
+ sub r0, r1, r0
+ lsr r3, r0, #1
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _022551D4 ; =0x00010104
+ mov r1, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r4, #0
+ ldr r2, [r4, #0x5c]
+ add r0, #0x20
+ bl FUN_0201BDE0
+ add r4, #0x20
+ add r0, r4, #0
+ bl FUN_02019548
+ add sp, #0x10
+ pop {r4, pc}
+ nop
+_022551D4: .word 0x00010104
+ thumb_func_end MOD47_02255184
+
+ thumb_func_start MOD47_022551D8
+MOD47_022551D8: ; 0x022551D8
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ add r0, #0x20
+ mov r1, #4
+ bl FUN_02019620
+ ldr r0, [r4, #0x58]
+ ldr r2, [r4, #0x5c]
+ mov r1, #2
+ bl FUN_0200A8E0
+ mov r0, #0
+ ldr r1, [r4, #0x5c]
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0xc0
+ sub r0, r1, r0
+ lsr r3, r0, #1
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _0225524C ; =0x00010104
+ mov r1, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r4, #0
+ ldr r2, [r4, #0x5c]
+ add r0, #0x20
+ bl FUN_0201BDE0
+ ldr r0, [r4, #0x58]
+ ldr r2, [r4, #0x5c]
+ mov r1, #3
+ bl FUN_0200A8E0
+ mov r0, #0x18
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _0225524C ; =0x00010104
+ mov r1, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r4, #0
+ ldr r2, [r4, #0x5c]
+ add r0, #0x20
+ mov r3, #0x10
+ bl FUN_0201BDE0
+ add r4, #0x20
+ add r0, r4, #0
+ bl FUN_02019548
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+_0225524C: .word 0x00010104
+ thumb_func_end MOD47_022551D8
+
+ thumb_func_start MOD47_02255250
+MOD47_02255250: ; 0x02255250
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ add r0, #0x20
+ mov r1, #4
+ bl FUN_02019620
+ ldr r0, [r4, #0x58]
+ ldr r2, [r4, #0x5c]
+ mov r1, #2
+ bl FUN_0200A8E0
+ mov r0, #0
+ ldr r1, [r4, #0x5c]
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0xc0
+ sub r0, r1, r0
+ lsr r3, r0, #1
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _022552D4 ; =0x00010104
+ mov r1, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r4, #0
+ ldr r2, [r4, #0x5c]
+ add r0, #0x20
+ bl FUN_0201BDE0
+ ldr r0, [r4, #0x58]
+ ldr r2, [r4, #0x5c]
+ mov r1, #4
+ bl FUN_0200A8E0
+ mov r0, #0
+ ldr r1, [r4, #0x5c]
+ add r2, r0, #0
+ bl FUN_02002F08
+ mov r1, #0xc0
+ sub r0, r1, r0
+ lsr r3, r0, #1
+ mov r0, #0x18
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _022552D4 ; =0x00010104
+ mov r1, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r4, #0
+ ldr r2, [r4, #0x5c]
+ add r0, #0x20
+ bl FUN_0201BDE0
+ add r4, #0x20
+ add r0, r4, #0
+ bl FUN_02019548
+ add sp, #0x10
+ pop {r4, pc}
+ nop
+_022552D4: .word 0x00010104
+ thumb_func_end MOD47_02255250
+
+ thumb_func_start MOD47_022552D8
+MOD47_022552D8: ; 0x022552D8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ add r7, r1, #0
+ add r0, #0x20
+ mov r1, #4
+ bl FUN_02019620
+ ldr r0, [r5, #0x58]
+ ldr r2, [r5, #0x5c]
+ mov r1, #5
+ bl FUN_0200A8E0
+ mov r0, #0
+ ldr r1, [r5, #0x5c]
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0xc0
+ sub r0, r1, r0
+ lsr r3, r0, #1
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02255398 ; =0x00010104
+ mov r1, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r5, #0
+ ldr r2, [r5, #0x5c]
+ add r0, #0x20
+ bl FUN_0201BDE0
+ mov r0, #0
+ str r0, [sp, #0x10]
+ add r0, r5, #0
+ str r0, [sp, #0x14]
+ add r0, #0x20
+ ldr r6, _0225539C ; =0x022553F0
+ mov r4, #0x20
+ str r0, [sp, #0x14]
+_0225532C:
+ ldrb r1, [r6]
+ ldr r0, [r5, #0x58]
+ ldr r2, [r5, #0x5c]
+ bl FUN_0200A8E0
+ str r4, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02255398 ; =0x00010104
+ mov r1, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x14]
+ ldr r2, [r5, #0x5c]
+ mov r3, #8
+ bl FUN_0201BDE0
+ mov r0, #1
+ str r0, [sp]
+ mov r2, #2
+ ldr r0, [r5, #0x5c]
+ ldr r1, [r7]
+ add r3, r2, #0
+ bl FUN_02021B04
+ str r4, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02255398 ; =0x00010104
+ mov r1, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x14]
+ ldr r2, [r5, #0x5c]
+ mov r3, #0xa0
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x10]
+ add r6, r6, #1
+ add r0, r0, #1
+ add r4, #0x10
+ add r7, r7, #4
+ str r0, [sp, #0x10]
+ cmp r0, #4
+ blt _0225532C
+ add r5, #0x20
+ add r0, r5, #0
+ bl FUN_02019548
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02255398: .word 0x00010104
+_0225539C: .word 0x022553F0
+ thumb_func_end MOD47_022552D8
+
+ .section .rodata
+ ; 0x022553A0
+ .incbin "baserom.nds", 0x297360, 0x11C
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_47.SINIT_START
+ .global SDK_OVERLAY.MODULE_47.SINIT_END
+SDK_OVERLAY.MODULE_47.SINIT_START:
+ .word MOD47_02254840
+ .word 0
+SDK_OVERLAY.MODULE_47.SINIT_END:
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
diff --git a/arm9/modules/49/asm/module_49.s b/arm9/modules/49/asm/module_49.s
new file mode 100644
index 00000000..46ab8f05
--- /dev/null
+++ b/arm9/modules/49/asm/module_49.s
@@ -0,0 +1,638 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD49_02254840
+MOD49_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD49_02254854
+ ldr r1, _02254850 ; =MOD49_02254974
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD49_02254854
+_02254850: .word MOD49_02254974
+ thumb_func_end MOD49_02254840
+
+ thumb_func_start MOD49_02254854
+MOD49_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x7c
+ 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 MOD49_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD49_02254938
+ 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 MOD49_02254938
+ thumb_func_end MOD49_02254854
+
+ thumb_func_start MOD49_0225489C
+MOD49_0225489C: ; 0x0225489C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r7, r0, #0
+ add r0, r1, #0
+ str r1, [sp, #4]
+ str r2, [sp, #8]
+ bl MOD20_02252C3C
+ str r0, [sp, #0xc]
+ bl FUN_0204C158
+ mov r6, #0
+ str r0, [r7, #0x64]
+ cmp r0, #0
+ bls _022548D8
+ add r4, r7, #0
+ add r4, #8
+ add r5, r7, #4
+_022548C0:
+ ldr r0, [sp, #0xc]
+ add r1, r6, #0
+ add r2, r5, #0
+ add r3, r4, #0
+ bl FUN_0204C174
+ ldr r0, [r7, #0x64]
+ add r6, r6, #1
+ add r4, #8
+ add r5, #8
+ cmp r6, r0
+ blo _022548C0
+_022548D8:
+ add r0, r7, #0
+ ldr r2, [sp, #8]
+ add r0, #0x68
+ add r1, r7, #4
+ bl MOD49_02254A44
+ cmp r0, #0
+ beq _02254912
+ mov r0, #0
+ strb r0, [r7]
+ strb r0, [r7, #1]
+ strb r0, [r7, #2]
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _02254918 ; =0x02254CF0
+ ldr r2, _0225491C ; =MOD49_0225497C
+ mov r1, #0xc
+ add r3, r7, #0
+ bl MOD20_02254130
+ str r0, [r7, #0x70]
+ mov r0, #0
+ str r0, [r7, #0x74]
+ str r0, [r7, #0x78]
+ ldr r0, [sp, #4]
+ add sp, #0x10
+ str r0, [r7, #0x6c]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_02254912:
+ mov r0, #0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254918: .word 0x02254CF0
+_0225491C: .word MOD49_0225497C
+ thumb_func_end MOD49_0225489C
+
+ thumb_func_start MOD49_02254920
+MOD49_02254920: ; 0x02254920
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x70]
+ bl MOD20_02254198
+ ldr r0, [r4, #0x68]
+ bl MOD49_02254A78
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD49_02254920
+
+ thumb_func_start MOD49_02254938
+MOD49_02254938: ; 0x02254938
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #3
+ bhs _0225496E
+ ldr r0, [r4, #0x6c]
+ ldr r1, [r4, #0x70]
+ bl MOD20_02252C14
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _02254970 ; =0x02254CE4
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _0225496E
+ add r0, r4, #0
+ bl MOD49_02254920
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x6c]
+ bl MOD20_022529A0
+_0225496E:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02254970: .word 0x02254CE4
+ thumb_func_end MOD49_02254938
+
+ thumb_func_start MOD49_02254974
+MOD49_02254974: ; 0x02254974
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD49_02254974
+
+ thumb_func_start MOD49_0225497C
+MOD49_0225497C: ; 0x0225497C
+ str r0, [r3, #0x78]
+ str r1, [r3, #0x74]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD49_0225497C
+
+ thumb_func_start MOD49_02254984
+MOD49_02254984: ; 0x02254984
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _0225498C
+ b _0225498E
+_0225498C:
+ mov r1, #2
+_0225498E:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD49_02254984
+
+ thumb_func_start MOD49_02254998
+MOD49_02254998: ; 0x02254998
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _022549A8
+ cmp r0, #1
+ beq _022549B8
+ b _022549D2
+_022549A8:
+ ldr r0, [r4, #0x68]
+ mov r1, #0
+ bl MOD49_02254A84
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549D2
+_022549B8:
+ ldr r0, [r4, #0x68]
+ mov r1, #0
+ bl MOD49_02254AA8
+ cmp r0, #0
+ beq _022549D2
+ ldr r0, [r4, #0x6c]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD49_02254984
+_022549D2:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD49_02254998
+
+ thumb_func_start MOD49_022549D8
+MOD49_022549D8: ; 0x022549D8
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _022549EC
+ mov r1, #2
+ bl MOD49_02254984
+ mov r0, #0
+ pop {r4, pc}
+_022549EC:
+ ldr r0, [r4, #0x74]
+ cmp r0, #1
+ bne _02254A0C
+ ldr r1, [r4, #0x78]
+ mov r0, #0xb
+ sub r1, r0, r1
+ ldr r0, [r4, #0x64]
+ cmp r1, r0
+ bhs _02254A08
+ lsl r0, r1, #3
+ add r0, r4, r0
+ ldr r0, [r0, #4]
+ bl MOD20_02252B48
+_02254A08:
+ mov r0, #0
+ str r0, [r4, #0x74]
+_02254A0C:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD49_022549D8
+
+ thumb_func_start MOD49_02254A10
+MOD49_02254A10: ; 0x02254A10
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A20
+ cmp r0, #1
+ beq _02254A30
+ b _02254A3E
+_02254A20:
+ ldr r0, [r4, #0x68]
+ mov r1, #1
+ bl MOD49_02254A84
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A3E
+_02254A30:
+ ldr r0, [r4, #0x68]
+ bl MOD49_02254AB4
+ cmp r0, #0
+ beq _02254A3E
+ mov r0, #1
+ pop {r4, pc}
+_02254A3E:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD49_02254A10
+
+ thumb_func_start MOD49_02254A44
+MOD49_02254A44: ; 0x02254A44
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x98
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254A72
+ 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}
+_02254A72:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD49_02254A44
+
+ thumb_func_start MOD49_02254A78
+MOD49_02254A78: ; 0x02254A78
+ push {r3, lr}
+ cmp r0, #0
+ beq _02254A82
+ bl FUN_02016A18
+_02254A82:
+ pop {r3, pc}
+ thumb_func_end MOD49_02254A78
+
+ thumb_func_start MOD49_02254A84
+MOD49_02254A84: ; 0x02254A84
+ 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, _02254AA4 ; =0x02254D3C
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254AA4: .word 0x02254D3C
+ thumb_func_end MOD49_02254A84
+
+ thumb_func_start MOD49_02254AA8
+MOD49_02254AA8: ; 0x02254AA8
+ ldr r3, _02254AB0 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254AB0: .word MOD20_02253794
+ thumb_func_end MOD49_02254AA8
+
+ thumb_func_start MOD49_02254AB4
+MOD49_02254AB4: ; 0x02254AB4
+ ldr r3, _02254ABC ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254ABC: .word MOD20_022537B8
+ thumb_func_end MOD49_02254AB4
+
+ thumb_func_start MOD49_02254AC0
+MOD49_02254AC0: ; 0x02254AC0
+ 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 MOD49_02254AC0
+
+ thumb_func_start MOD49_02254AD4
+MOD49_02254AD4: ; 0x02254AD4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ add r7, r1, #0
+ add r0, r7, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ add r0, r7, #0
+ bl MOD20_022538A4
+ str r0, [sp, #0x14]
+ ldr r0, [r5, #4]
+ ldr r2, _02254BD0 ; =0x02254D20
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ mov r1, #6
+ mov r2, #4
+ mov r3, #1
+ bl FUN_02017F48
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x18
+ str r0, [sp, #8]
+ str r2, [sp, #0xc]
+ ldr r0, [r5, #4]
+ mov r1, #6
+ add r3, r2, #0
+ bl FUN_02018540
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ mov r3, #2
+ str r3, [sp]
+ mov r0, #0x18
+ str r0, [sp, #4]
+ str r3, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ mov r0, #1
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #4]
+ add r1, sp, #0x1c
+ mov r2, #6
+ bl FUN_02019064
+ add r0, sp, #0x1c
+ mov r1, #4
+ bl FUN_02019620
+ add r0, sp, #0x1c
+ bl FUN_02019270
+ ldr r1, _02254BD4 ; =0x00000197
+ mov r0, #0x1a
+ mov r2, #0
+ mov r3, #8
+ bl FUN_0200A738
+ add r4, r0, #0
+ beq _02254B94
+ mov r0, #0
+ add r1, r4, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0
+ add r6, r0, #0
+ mov r3, #0xc0
+ sub r3, r3, r6
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02254BD8 ; =0x00010104
+ add r2, r4, #0
+ str r0, [sp, #8]
+ add r0, sp, #0x1c
+ lsr r3, r3, #1
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, sp, #0x1c
+ bl FUN_02019548
+ add r0, r4, #0
+ bl FUN_02021A20
+_02254B94:
+ add r0, sp, #0x1c
+ bl FUN_02019178
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, [sp, #0x14]
+ add r0, r5, #0
+ bl MOD49_02254C04
+ ldr r1, _02254BDC ; =0x04001000
+ ldr r0, _02254BE0 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x18]
+ 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, r7, #0
+ bl MOD49_02254AC0
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02254BD0: .word 0x02254D20
+_02254BD4: .word 0x00000197
+_02254BD8: .word 0x00010104
+_02254BDC: .word 0x04001000
+_02254BE0: .word 0xFFFFE0FF
+ thumb_func_end MOD49_02254AD4
+
+ thumb_func_start MOD49_02254BE4
+MOD49_02254BE4: ; 0x02254BE4
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ bl MOD49_02254CB8
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r5, #0
+ bl MOD49_02254AC0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD49_02254BE4
+
+ thumb_func_start MOD49_02254C04
+MOD49_02254C04: ; 0x02254C04
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ str r0, [sp, #4]
+ mov r0, #0
+ str r1, [sp, #8]
+ bl MOD20_022539C4
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ mov r1, #0xc
+ add r0, #0x54
+ mov r2, #5
+ mov r3, #6
+ bl MOD20_02253FBC
+ ldr r0, [sp, #8]
+ mov r4, #0
+ ldr r0, [r0, #0x60]
+ cmp r0, #0
+ bls _02254C86
+ ldr r5, [sp, #4]
+ ldr r6, [sp, #8]
+ add r0, r5, #0
+ str r0, [sp, #0x10]
+ add r0, #0x54
+ ldr r7, _02254CB4 ; =0x02254D60
+ str r4, [sp, #0xc]
+ str r0, [sp, #0x10]
+_02254C3E:
+ ldr r0, [r6]
+ ldr r2, [r6, #4]
+ mov r1, #0
+ bl FUN_0206B6D4
+ str r0, [r5, #0x68]
+ ldr r0, [sp, #4]
+ ldr r2, [sp, #0x10]
+ ldr r0, [r0, #0x20]
+ add r1, r7, #0
+ bl MOD20_02253E74
+ ldr r1, [sp, #0xc]
+ str r0, [r5, #0x24]
+ bl MOD20_02253FA4
+ ldr r0, [r6]
+ ldr r1, [r6, #4]
+ mov r2, #0
+ bl FUN_0206B7BC
+ add r1, r0, #0
+ ldr r0, [r5, #0x24]
+ bl MOD20_02253F9C
+ ldr r0, [sp, #0xc]
+ add r4, r4, #1
+ add r0, #0x10
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #8]
+ add r6, #8
+ ldr r0, [r0, #0x60]
+ add r5, r5, #4
+ add r7, #0x10
+ cmp r4, r0
+ blo _02254C3E
+_02254C86:
+ cmp r4, #0xc
+ bge _02254C9C
+ ldr r0, [sp, #4]
+ lsl r1, r4, #2
+ add r1, r0, r1
+ mov r0, #0
+_02254C92:
+ add r4, r4, #1
+ str r0, [r1, #0x24]
+ add r1, r1, #4
+ cmp r4, #0xc
+ blt _02254C92
+_02254C9C:
+ ldr r2, [sp, #8]
+ ldr r1, [sp, #4]
+ mov r0, #0
+ add r1, #0x68
+ ldr r2, [r2, #0x60]
+ add r3, r0, #0
+ str r1, [sp, #4]
+ bl MOD20_02253A04
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02254CB4: .word 0x02254D60
+ thumb_func_end MOD49_02254C04
+
+ thumb_func_start MOD49_02254CB8
+MOD49_02254CB8: ; 0x02254CB8
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+ add r7, r4, #0
+_02254CC2:
+ ldr r1, [r5, #0x24]
+ cmp r1, #0
+ beq _02254CD0
+ ldr r0, [r6, #0x20]
+ bl MOD20_02253F14
+ str r7, [r5, #0x24]
+_02254CD0:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0xc
+ blt _02254CC2
+ add r6, #0x54
+ add r0, r6, #0
+ bl MOD20_02254014
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD49_02254CB8
+
+ .section .rodata
+ ; 0x02254CE4
+ .incbin "baserom.nds", 0x2984a4, 0x13C
+
+ .section .sinit
+ .word MOD49_02254840
diff --git a/arm9/modules/50/asm/module_50.s b/arm9/modules/50/asm/module_50.s
new file mode 100644
index 00000000..734eadea
--- /dev/null
+++ b/arm9/modules/50/asm/module_50.s
@@ -0,0 +1,409 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD50_02254840
+MOD50_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD50_02254854
+ ldr r1, _02254850 ; =MOD50_02254908
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD50_02254854
+_02254850: .word MOD50_02254908
+ thumb_func_end MOD50_02254840
+
+ thumb_func_start MOD50_02254854
+MOD50_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r7, r1, #0
+ mov r0, #8
+ mov r1, #0x10
+ str r2, [sp]
+ add r5, r3, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254894
+ ldr r2, [sp]
+ add r1, r7, #0
+ add r3, r5, #0
+ bl MOD50_0225489C
+ cmp r0, #0
+ beq _0225488E
+ ldr r0, _02254898 ; =MOD50_022548D4
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488E
+ str r4, [r6]
+ str r5, [r4, #4]
+ 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 MOD50_022548D4
+ thumb_func_end MOD50_02254854
+
+ thumb_func_start MOD50_0225489C
+MOD50_0225489C: ; 0x0225489C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, #8
+ add r1, r5, #4
+ bl MOD50_022549AC
+ cmp r0, #0
+ beq _022548BC
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ str r4, [r5, #0xc]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_022548BC:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD50_0225489C
+
+ thumb_func_start MOD50_022548C0
+MOD50_022548C0: ; 0x022548C0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ bl MOD50_022549E0
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD50_022548C0
+
+ thumb_func_start MOD50_022548D4
+MOD50_022548D4: ; 0x022548D4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrb r1, [r4]
+ add r5, r0, #0
+ cmp r1, #3
+ bhs _02254900
+ lsl r2, r1, #2
+ ldr r1, _02254904 ; =0x02254B04
+ add r0, r4, #0
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254900
+ add r0, r4, #0
+ bl MOD50_022548C0
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0xc]
+ bl MOD20_022529A0
+_02254900:
+ pop {r3, r4, r5, pc}
+ nop
+_02254904: .word 0x02254B04
+ thumb_func_end MOD50_022548D4
+
+ thumb_func_start MOD50_02254908
+MOD50_02254908: ; 0x02254908
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD50_02254908
+
+ thumb_func_start MOD50_02254910
+MOD50_02254910: ; 0x02254910
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254918
+ b _0225491A
+_02254918:
+ mov r1, #2
+_0225491A:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD50_02254910
+
+ thumb_func_start MOD50_02254924
+MOD50_02254924: ; 0x02254924
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254934
+ cmp r0, #1
+ beq _02254944
+ b _0225495E
+_02254934:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD50_022549F8
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _0225495E
+_02254944:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD50_02254A1C
+ cmp r0, #0
+ beq _0225495E
+ ldr r0, [r4, #0xc]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD50_02254910
+_0225495E:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD50_02254924
+
+ thumb_func_start MOD50_02254964
+MOD50_02254964: ; 0x02254964
+ push {r3, lr}
+ ldrb r1, [r0, #2]
+ cmp r1, #0
+ beq _02254972
+ mov r1, #2
+ bl MOD50_02254910
+_02254972:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD50_02254964
+
+ thumb_func_start MOD50_02254978
+MOD50_02254978: ; 0x02254978
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254988
+ cmp r0, #1
+ beq _02254998
+ b _022549A6
+_02254988:
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl MOD50_022549F8
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549A6
+_02254998:
+ ldr r0, [r4, #8]
+ bl MOD50_02254A28
+ cmp r0, #0
+ beq _022549A6
+ mov r0, #1
+ pop {r4, pc}
+_022549A6:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD50_02254978
+
+ thumb_func_start MOD50_022549AC
+MOD50_022549AC: ; 0x022549AC
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x30
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _022549DA
+ add r0, #8
+ mov r1, #8
+ bl MOD20_022536F4
+ mov r0, #8
+ str r6, [r4]
+ bl FUN_02016B94
+ str r0, [r4, #4]
+ cmp r0, #0
+ beq _022549DA
+ str r4, [r5]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_022549DA:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD50_022549AC
+
+ thumb_func_start MOD50_022549E0
+MOD50_022549E0: ; 0x022549E0
+ push {r4, lr}
+ add r4, r0, #0
+ beq _022549F6
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _022549F0
+ bl FUN_02016A18
+_022549F0:
+ add r0, r4, #0
+ bl FUN_02016A18
+_022549F6:
+ pop {r4, pc}
+ thumb_func_end MOD50_022549E0
+
+ thumb_func_start MOD50_022549F8
+MOD50_022549F8: ; 0x022549F8
+ 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, _02254A18 ; =0x02254B2C
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254A18: .word 0x02254B2C
+ thumb_func_end MOD50_022549F8
+
+ thumb_func_start MOD50_02254A1C
+MOD50_02254A1C: ; 0x02254A1C
+ ldr r3, _02254A24 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254A24: .word MOD20_02253794
+ thumb_func_end MOD50_02254A1C
+
+ thumb_func_start MOD50_02254A28
+MOD50_02254A28: ; 0x02254A28
+ ldr r3, _02254A30 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254A30: .word MOD20_022537B8
+ thumb_func_end MOD50_02254A28
+
+ thumb_func_start MOD50_02254A34
+MOD50_02254A34: ; 0x02254A34
+ 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 MOD50_02254A34
+
+ thumb_func_start MOD50_02254A48
+MOD50_02254A48: ; 0x02254A48
+ 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, _02254ADC ; =0x02254B10
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r1, #8
+ str r1, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r3, #6
+ bl FUN_0200687C
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x18
+ str r0, [sp, #8]
+ str r2, [sp, #0xc]
+ ldr r0, [r5, #4]
+ mov r1, #6
+ add r3, r2, #0
+ bl FUN_02018540
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #0xc
+ mov r1, #9
+ mov r2, #4
+ mov r3, #0
+ bl FUN_02006930
+ ldr r1, [r5]
+ ldr r0, [r5, #4]
+ ldr r1, [r1]
+ mov r2, #6
+ bl MOD20_02253AA4
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, _02254AE0 ; =0x04001000
+ ldr r0, _02254AE4 ; =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 MOD50_02254A34
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+_02254ADC: .word 0x02254B10
+_02254AE0: .word 0x04001000
+_02254AE4: .word 0xFFFFE0FF
+ thumb_func_end MOD50_02254A48
+
+ thumb_func_start MOD50_02254AE8
+MOD50_02254AE8: ; 0x02254AE8
+ 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 MOD50_02254A34
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD50_02254AE8
+
+ .section .rodata
+ ; 0x02254B04
+ .incbin "baserom.nds", 0x2988c4, 0x4C
+
+ .section .sinit
+ .word MOD50_02254840