summaryrefslogtreecommitdiff
path: root/arm9/modules
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/modules')
-rw-r--r--arm9/modules/00/asm/module_00_dummy.s3
-rw-r--r--arm9/modules/01/src/module_01.c12
-rw-r--r--arm9/modules/01/src/module_01.cpp11
-rw-r--r--arm9/modules/02/asm/module_02_dummy.s3
-rw-r--r--arm9/modules/03/asm/module_03_dummy.s3
-rw-r--r--arm9/modules/04/asm/arm_04.s7
-rw-r--r--arm9/modules/05/asm/module_05.s8
-rw-r--r--arm9/modules/06/asm/module_06.s8
-rw-r--r--arm9/modules/07/asm/module_07.s4
-rw-r--r--arm9/modules/08/asm/module_08.s7
-rw-r--r--arm9/modules/09/asm/module_09.s4
-rw-r--r--arm9/modules/10/asm/module_10_dummy.s6
-rw-r--r--arm9/modules/11/asm/module_11.s20
-rw-r--r--arm9/modules/12/asm/module_12.s9
-rw-r--r--arm9/modules/13/asm/module_13_arm1.s12
-rw-r--r--arm9/modules/13/asm/module_13_arm2.s10
-rw-r--r--arm9/modules/13/asm/module_13_thumb.s12
-rw-r--r--arm9/modules/14/asm/module_14.s8
-rw-r--r--arm9/modules/15/asm/module_15.s4
-rw-r--r--arm9/modules/16/asm/module_16.s4
-rw-r--r--arm9/modules/17/asm/module_17.s4
-rw-r--r--arm9/modules/18/asm/module_18.s8
-rw-r--r--arm9/modules/19/asm/module_19.s4
-rw-r--r--arm9/modules/20/asm/module_20.s4
-rw-r--r--arm9/modules/21/asm/module_21.s13
-rw-r--r--arm9/modules/22/asm/module_22.s7
-rw-r--r--arm9/modules/23/asm/module_23.s12
-rw-r--r--arm9/modules/24/asm/module_24.s7
-rw-r--r--arm9/modules/25/asm/module_25.s7
-rw-r--r--arm9/modules/26/asm/module_26.s7
-rw-r--r--arm9/modules/27/asm/module_27.s12
-rw-r--r--arm9/modules/28/asm/module_28.s16
-rw-r--r--arm9/modules/29/asm/module_29.s12
-rw-r--r--arm9/modules/30/asm/module_30.s10
-rw-r--r--arm9/modules/31/asm/module_31.s7
-rw-r--r--arm9/modules/32/asm/module_32.s12
-rw-r--r--arm9/modules/33/asm/module_33.s399
-rw-r--r--arm9/modules/34/asm/module_34.s601
-rw-r--r--arm9/modules/35/asm/module_35.s1142
-rw-r--r--arm9/modules/36/asm/module_36.s1571
40 files changed, 3930 insertions, 80 deletions
diff --git a/arm9/modules/00/asm/module_00_dummy.s b/arm9/modules/00/asm/module_00_dummy.s
index e8a42167..8b137891 100644
--- a/arm9/modules/00/asm/module_00_dummy.s
+++ b/arm9/modules/00/asm/module_00_dummy.s
@@ -1,2 +1 @@
- .section .data
- .space 32
+
diff --git a/arm9/modules/01/src/module_01.c b/arm9/modules/01/src/module_01.c
deleted file mode 100644
index ae2e9d1f..00000000
--- a/arm9/modules/01/src/module_01.c
+++ /dev/null
@@ -1,12 +0,0 @@
-#include "global.h"
-
-u32 UNK_021D7500[8];
-
-THUMB_FUNC void MOD01_021D74E0(void)
-{
- UNK_021D7500[1]++;
-}
-
-THUMB_FUNC void (*UNK_021D74F0[4])(void) = {
- MOD01_021D74E0
-};
diff --git a/arm9/modules/01/src/module_01.cpp b/arm9/modules/01/src/module_01.cpp
new file mode 100644
index 00000000..21b371e0
--- /dev/null
+++ b/arm9/modules/01/src/module_01.cpp
@@ -0,0 +1,11 @@
+#include "global.h"
+#include "FS_overlay.h"
+
+class Unk021D7500 {
+ u32 unk0;
+ u32 unk4;
+public:
+ THUMB_FUNC Unk021D7500() { unk4++; }
+};
+
+static class Unk021D7500 UNK_021D7500;
diff --git a/arm9/modules/02/asm/module_02_dummy.s b/arm9/modules/02/asm/module_02_dummy.s
index e8a42167..8b137891 100644
--- a/arm9/modules/02/asm/module_02_dummy.s
+++ b/arm9/modules/02/asm/module_02_dummy.s
@@ -1,2 +1 @@
- .section .data
- .space 32
+
diff --git a/arm9/modules/03/asm/module_03_dummy.s b/arm9/modules/03/asm/module_03_dummy.s
index e8a42167..8b137891 100644
--- a/arm9/modules/03/asm/module_03_dummy.s
+++ b/arm9/modules/03/asm/module_03_dummy.s
@@ -1,2 +1 @@
- .section .data
- .space 32
+
diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s
index 8d1d699b..9928ef16 100644
--- a/arm9/modules/04/asm/arm_04.s
+++ b/arm9/modules/04/asm/arm_04.s
@@ -58938,9 +58938,12 @@ _0220BAB8:
mov r0, r2
bx lr
- .section .data
+ .section .rodata
; 0x0220BAC0
- .incbin "baserom.nds", 0x1411e0, 0x4100
+ .incbin "baserom.nds", 0x1411e0, 0x3D4
+
+ .section .data
+ .incbin "baserom.nds", 0x1415C0, 0x3D20
.section .bss
; 0x0220FBC0
diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s
index 085ce35d..2588e8a9 100644
--- a/arm9/modules/05/asm/module_05.s
+++ b/arm9/modules/05/asm/module_05.s
@@ -63948,9 +63948,13 @@ _021F6424:
.align 2, 0
_021F6428: .word MOD05_021F57F0
- .section .data
+ .section .rodata
; 0x021F642C
- .incbin "baserom.nds", 0x16434c, 0x7254
+ .incbin "baserom.nds", 0x16434c, 0x6d9c
+
+ .section .data
+ ; 0x021FD1E0
+ .incbin "baserom.nds", 0x16b100, 0x4A0
.section .bss
; 0x021FD680
diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s
index ac7d6b48..a12da563 100644
--- a/arm9/modules/06/asm/module_06.s
+++ b/arm9/modules/06/asm/module_06.s
@@ -44468,9 +44468,13 @@ _0224F144:
_0224F16C: .word 0x02252210
_0224F170: .word MOD06_0224F0D8
- .section .data
+ .section .rodata
; 0x0224F174
- .incbin "baserom.nds", 0x1810D4, 0x32AC
+ .incbin "baserom.nds", 0x1810D4, 0x30B4
+
+ .section .data
+ ; 0x022252240
+ .incbin "baserom.nds", 0x1841a0, 0x1e0
.section .bss
; 0x02252420
diff --git a/arm9/modules/07/asm/module_07.s b/arm9/modules/07/asm/module_07.s
index 39869410..0afcff05 100644
--- a/arm9/modules/07/asm/module_07.s
+++ b/arm9/modules/07/asm/module_07.s
@@ -5270,6 +5270,6 @@ _0221494A:
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
- .section .data
+ .section .rodata
; 0x02214950
- .incbin "baserom.nds", 0x186EF0, 0x7F0
+ .incbin "baserom.nds", 0x186EF0, 0x7E4
diff --git a/arm9/modules/08/asm/module_08.s b/arm9/modules/08/asm/module_08.s
index 50ed884f..f1281f99 100644
--- a/arm9/modules/08/asm/module_08.s
+++ b/arm9/modules/08/asm/module_08.s
@@ -49976,6 +49976,9 @@ _0222A758:
.align 2, 0
_0222A75C: .word 0x0000013B
- .section .data
+ .section .rodata
; 0x0222A760
- .incbin "baserom.nds", 0x1A0100, 0x2E60
+ .incbin "baserom.nds", 0x1A0100, 0x2E38
+
+ .section .data
+ .incbin "baserom.nds", 0x1A2F40, 0x20
diff --git a/arm9/modules/09/asm/module_09.s b/arm9/modules/09/asm/module_09.s
index 7e5ad9c1..efa63611 100644
--- a/arm9/modules/09/asm/module_09.s
+++ b/arm9/modules/09/asm/module_09.s
@@ -17658,6 +17658,6 @@ _0221AEBC: .word 0x021C48B8
_0221AEC0: .word 0x000005DC
_0221AEC4: .word 0x000005DD
- .section .data
+ .section .rodata
; 0x0221AEC8
- .incbin "baserom.nds", 0x1AC068, 0x1138
+ .incbin "baserom.nds", 0x1AC068, 0x1120
diff --git a/arm9/modules/10/asm/module_10_dummy.s b/arm9/modules/10/asm/module_10_dummy.s
index bae0dc2d..8b137891 100644
--- a/arm9/modules/10/asm/module_10_dummy.s
+++ b/arm9/modules/10/asm/module_10_dummy.s
@@ -1,5 +1 @@
- .include "asm/macros.inc"
- .include "global.inc"
- .section .data
- .balign 4, 0
- .space 32
+
diff --git a/arm9/modules/11/asm/module_11.s b/arm9/modules/11/asm/module_11.s
index 8288a770..21746e52 100644
--- a/arm9/modules/11/asm/module_11.s
+++ b/arm9/modules/11/asm/module_11.s
@@ -3379,7 +3379,7 @@ _0222F27C:
_0222F280: .word 0x00002434
thumb_func_start MOD11_0222F284
-MOD11_0222F284: ; 0x0222F284
+MOD11_0222F284: ; 0x0222F284 __sinit
push {r3, lr}
bl FUN_02033590
cmp r0, #0
@@ -98632,6 +98632,20 @@ MOD11_0225D98C: ; 0x0225D98C
strb r1, [r0, #0x1e]
bx lr
- .section .data
+ .section .rodata
; 0x0225D998
- .incbin "baserom.nds", 0x1dd7d8, 0x2608
+ .incbin "baserom.nds", 0x1dd7d8, 0x2580
+
+ ; Stupid hack to override alignment
+ ; .section .sinit
+ ; 0x0225FF18
+ .global SDK_OVERLAY.MODULE_11.SINIT_START
+ .global SDK_OVERLAY.MODULE_11.SINIT_END
+SDK_OVERLAY.MODULE_11.SINIT_START:
+ .word MOD11_0222F284
+ .word 0
+SDK_OVERLAY.MODULE_11.SINIT_END:
+
+ .section .data
+ ; 0x0225FF20
+ .incbin "baserom.nds", 0x1dfd60, 0x80
diff --git a/arm9/modules/12/asm/module_12.s b/arm9/modules/12/asm/module_12.s
index 36381bcf..b2e41348 100644
--- a/arm9/modules/12/asm/module_12.s
+++ b/arm9/modules/12/asm/module_12.s
@@ -7445,7 +7445,7 @@ _022312B4: .word 0x00001158
_022312B8: .word 0x00000127
thumb_func_start MOD12_022312BC
-MOD12_022312BC: ; 0x022312BC
+MOD12_022312BC: ; 0x022312BC __sinit
push {r3, lr}
ldr r0, _022312D0 ; =SDK_OVERLAY_MODULE_08_ID
mov r1, #2
@@ -48103,6 +48103,9 @@ _0224496A:
_02244988:
pop {r4, r5, r6, pc}
- .section .data
+ .section .rodata
; 0x0224498C
- .incbin "baserom.nds", 0x1F71CC, 0x1E94
+ .incbin "baserom.nds", 0x1F71CC, 0x1E84
+
+ .section .sinit
+ .word MOD12_022312BC
diff --git a/arm9/modules/13/asm/module_13_arm1.s b/arm9/modules/13/asm/module_13_arm1.s
index edb71ead..ffde9a27 100644
--- a/arm9/modules/13/asm/module_13_arm1.s
+++ b/arm9/modules/13/asm/module_13_arm1.s
@@ -6049,3 +6049,15 @@ MOD13_022172A0: ; 0x022172A0
bx lr
.align 2, 0
_022172D8: .word 0x02240B28
+
+ .section .rodata
+ ; 0x0223C420
+ .incbin "baserom.nds", 0x2237C0, 0x24
+
+ .section .data
+ ; 0x0223F780
+ .incbin "baserom.nds", 0x226B20, 0x38
+
+ .section .bss
+ ; 0x02240A40
+ .space 0xF4
diff --git a/arm9/modules/13/asm/module_13_arm2.s b/arm9/modules/13/asm/module_13_arm2.s
index 7910e1a0..2e9dd8b5 100644
--- a/arm9/modules/13/asm/module_13_arm2.s
+++ b/arm9/modules/13/asm/module_13_arm2.s
@@ -35364,10 +35364,14 @@ _0223C330:
_0223C418: .word 0x0224320C
_0223C41C: .word 0x0223F764
+ .section .rodata
+ ; 0x0223EC6C
+ .incbin "baserom.nds", 0x22600C, 0xafc
+
.section .data
; 0x0223C420
- .incbin "baserom.nds", 0x2237C0, 0x4620
+ .incbin "baserom.nds", 0x226CD4, 0x110C
.section .bss
- ; 0x02240A40
- .space 0x27E0
+ ; 0x02242FE4
+ .space 0x23C
diff --git a/arm9/modules/13/asm/module_13_thumb.s b/arm9/modules/13/asm/module_13_thumb.s
index b180ff6b..c231800c 100644
--- a/arm9/modules/13/asm/module_13_thumb.s
+++ b/arm9/modules/13/asm/module_13_thumb.s
@@ -14777,3 +14777,15 @@ _0221E556:
bx r3
.align 2, 0
_0221E55C: .word 0x02241B30
+
+ .section .rodata
+ ; 0x0223C444
+ .incbin "baserom.nds", 0x2237e4, 0x2828
+
+ .section .data
+ ; 0x0223F7B8
+ .incbin "baserom.nds", 0x226B58, 0x17C
+
+ .section .bss
+ ; 0x02240B34
+ .space 0x24B0
diff --git a/arm9/modules/14/asm/module_14.s b/arm9/modules/14/asm/module_14.s
index 42e1c73b..1ace4733 100644
--- a/arm9/modules/14/asm/module_14.s
+++ b/arm9/modules/14/asm/module_14.s
@@ -30394,9 +30394,13 @@ MOD14_021E6220: ; 0x021E6220
ldr r0, [r0, #0x74]
bx lr
- .section .data
+ .section .rodata
; 0x021E6224
- .incbin "baserom.nds", 0x236b44, 0x7dc
+ .incbin "baserom.nds", 0x236b44, 0x7a4
+
+ .section .data
+ ; 0x021E69E0
+ .incbin "baserom.nds", 0x237300, 0x1C
.section .bss
; 0x021E69FC
diff --git a/arm9/modules/15/asm/module_15.s b/arm9/modules/15/asm/module_15.s
index bd9eb99a..8659bfeb 100644
--- a/arm9/modules/15/asm/module_15.s
+++ b/arm9/modules/15/asm/module_15.s
@@ -8748,6 +8748,6 @@ _021DB85C:
.align 2, 0
_021DB868: .word 0x021DBA55
- .section .data
+ .section .rodata
; 0x021DB86C
- .incbin "baserom.nds", 0x23B78C, 0x2F4
+ .incbin "baserom.nds", 0x23B78C, 0x2F0
diff --git a/arm9/modules/16/asm/module_16.s b/arm9/modules/16/asm/module_16.s
index 7d62c0f0..551ab8e1 100644
--- a/arm9/modules/16/asm/module_16.s
+++ b/arm9/modules/16/asm/module_16.s
@@ -63320,6 +63320,6 @@ _021F4E2C: .word 0x000003D1
_021F4E30: .word 0x000003D6
thumb_func_end MOD16_021F4A40
- .section .data
+ .section .rodata
; 0x021F4E34
- .incbin "baserom.nds", 0x259554, 0xABAC
+ .incbin "baserom.nds", 0x259554, 0xAB90
diff --git a/arm9/modules/17/asm/module_17.s b/arm9/modules/17/asm/module_17.s
index 884302f2..b839403b 100644
--- a/arm9/modules/17/asm/module_17.s
+++ b/arm9/modules/17/asm/module_17.s
@@ -14601,6 +14601,6 @@ _021DE24C: .word 0x00000151
_021DE250: .word 0x00010200
thumb_func_end MOD17_021DE0F4
- .section .data
+ .section .rodata
; 0x021DE254
- .incbin "baserom.nds", 0x26AF74, 0x10C
+ .incbin "baserom.nds", 0x26AF74, 0x100
diff --git a/arm9/modules/18/asm/module_18.s b/arm9/modules/18/asm/module_18.s
index 767c2f6c..e73fc56e 100644
--- a/arm9/modules/18/asm/module_18.s
+++ b/arm9/modules/18/asm/module_18.s
@@ -46251,9 +46251,13 @@ _0224FFDC: .word 0x02250834
_0224FFE0: .word 0x022507F0
thumb_func_end MOD18_0224FFA0
- .section .data
+ .section .rodata
; 0x0224FFE4
- .incbin "baserom.nds", 0x281B44, 0x139C
+ .incbin "baserom.nds", 0x281B44, 0x874
+
+ .section .data
+ ; 0x02250860
+ .incbin "baserom.nds", 0x2823C0, 0xB20
.section .bss
; 0x02251380
diff --git a/arm9/modules/19/asm/module_19.s b/arm9/modules/19/asm/module_19.s
index 76dad3e4..52c045cc 100644
--- a/arm9/modules/19/asm/module_19.s
+++ b/arm9/modules/19/asm/module_19.s
@@ -101,6 +101,6 @@ MOD19_02252504: ; 0x02252504
bx lr
thumb_func_end MOD19_02252504
- .section .data
+ .section .rodata
; 0x02252508
- .incbin "baserom.nds", 0x2830C8, 0x38
+ .incbin "baserom.nds", 0x2830C8, 0x1c
diff --git a/arm9/modules/20/asm/module_20.s b/arm9/modules/20/asm/module_20.s
index afe8646c..1c3ba821 100644
--- a/arm9/modules/20/asm/module_20.s
+++ b/arm9/modules/20/asm/module_20.s
@@ -4565,6 +4565,6 @@ _022544BC: .word 0x022547C4
_022544C0: .word 0x022547C5
thumb_func_end MOD20_02254488
- .section .data
+ .section .rodata
; 0x022544C4
- .incbin "baserom.nds", 0x285284, 0x37C
+ .incbin "baserom.nds", 0x285284, 0x374
diff --git a/arm9/modules/21/asm/module_21.s b/arm9/modules/21/asm/module_21.s
index cea8f6e8..0c30eb9a 100644
--- a/arm9/modules/21/asm/module_21.s
+++ b/arm9/modules/21/asm/module_21.s
@@ -721,6 +721,15 @@ _02254D78: .word 0x040002A0
_02254D7C: .word 0x040002A8
thumb_func_end MOD21_02254C5C
- .section .data
+ .section .rodata
; 0x02254D80
- .incbin "baserom.nds", 0x285B40, 0x80
+ .incbin "baserom.nds", 0x285B40, 0x68
+
+ ; Dumb hack because the compiler aligns to 16 instead of 8
+ ;.section .sinit
+ .global SDK_OVERLAY.MODULE_21.SINIT_START
+ .global SDK_OVERLAY.MODULE_21.SINIT_END
+SDK_OVERLAY.MODULE_21.SINIT_START:
+ .word MOD21_02254840
+ .word 0
+SDK_OVERLAY.MODULE_21.SINIT_END:
diff --git a/arm9/modules/22/asm/module_22.s b/arm9/modules/22/asm/module_22.s
index 77e6bff4..610d0a55 100644
--- a/arm9/modules/22/asm/module_22.s
+++ b/arm9/modules/22/asm/module_22.s
@@ -1840,6 +1840,9 @@ _02255604:
.align 2, 0
thumb_func_end MOD22_022555FC
- .section .data
+ .section .rodata
; 0x02255618
- .incbin "baserom.nds", 0x2869D8, 0x128
+ .incbin "baserom.nds", 0x2869D8, 0x118
+
+ .section .sinit
+ .word MOD22_02254840
diff --git a/arm9/modules/23/asm/module_23.s b/arm9/modules/23/asm/module_23.s
index 6688578e..a5adabbb 100644
--- a/arm9/modules/23/asm/module_23.s
+++ b/arm9/modules/23/asm/module_23.s
@@ -2789,6 +2789,14 @@ _02255C96:
_02255CB8: .word 0x022560D0
thumb_func_end MOD23_02255C6C
- .section .data
+ .section .rodata
; 0x02255CBC
- .incbin "baserom.nds", 0x28807C, 0x484
+ .incbin "baserom.nds", 0x28807C, 0x46C
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_23.SINIT_START
+ .global SDK_OVERLAY.MODULE_23.SINIT_END
+SDK_OVERLAY.MODULE_23.SINIT_START:
+ .word MOD23_02254840
+ .word 0
+SDK_OVERLAY.MODULE_23.SINIT_END:
diff --git a/arm9/modules/24/asm/module_24.s b/arm9/modules/24/asm/module_24.s
index e3b9a327..ba2c3f32 100644
--- a/arm9/modules/24/asm/module_24.s
+++ b/arm9/modules/24/asm/module_24.s
@@ -1179,6 +1179,9 @@ _022550DC:
.align 2, 0
thumb_func_end MOD24_022550D4
- .section .data
+ .section .rodata
; 0x022550F8
- .incbin "baserom.nds", 0x288EB8, 0xE8
+ .incbin "baserom.nds", 0x288EB8, 0xC8
+
+ .section .sinit
+ .word MOD24_02254840
diff --git a/arm9/modules/25/asm/module_25.s b/arm9/modules/25/asm/module_25.s
index 6df522da..e1d7b555 100644
--- a/arm9/modules/25/asm/module_25.s
+++ b/arm9/modules/25/asm/module_25.s
@@ -658,6 +658,9 @@ _02254CE6:
pop {r4, r5, r6, pc}
thumb_func_end MOD25_02254CD8
- .section .data
+ .section .rodata
; 0x02254CF8
- .incbin "baserom.nds", 0x2894B8, 0xA8
+ .incbin "baserom.nds", 0x2894B8, 0x88
+
+ .section .sinit
+ .word MOD25_02254840
diff --git a/arm9/modules/26/asm/module_26.s b/arm9/modules/26/asm/module_26.s
index 2511101e..0b8d99df 100644
--- a/arm9/modules/26/asm/module_26.s
+++ b/arm9/modules/26/asm/module_26.s
@@ -788,6 +788,9 @@ _02254DC2:
_02254DE0: .word 0x02254FD0
thumb_func_end MOD26_02254DAC
- .section .data
+ .section .rodata
; 0x02254DE4
- .incbin "baserom.nds", 0x289BA4, 0x25C
+ .incbin "baserom.nds", 0x289BA4, 0x23C
+
+ .section .sinit
+ .word MOD26_02254840
diff --git a/arm9/modules/27/asm/module_27.s b/arm9/modules/27/asm/module_27.s
index b9a2d1ca..13a97851 100644
--- a/arm9/modules/27/asm/module_27.s
+++ b/arm9/modules/27/asm/module_27.s
@@ -1448,6 +1448,14 @@ MOD27_022552D0: ; 0x022552D0
_02255338: .word 0x00000669
thumb_func_end MOD27_022552D0
- .section .data
+ .section .rodata
; 0x0225533C
- .incbin "baserom.nds", 0x28A8FC, 0xA4
+ .incbin "baserom.nds", 0x28A8FC, 0x88
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_27.SINIT_START
+ .global SDK_OVERLAY.MODULE_27.SINIT_END
+SDK_OVERLAY.MODULE_27.SINIT_START:
+ .word MOD27_02254840
+ .word 0
+SDK_OVERLAY.MODULE_27.SINIT_END:
diff --git a/arm9/modules/28/asm/module_28.s b/arm9/modules/28/asm/module_28.s
index 0ad10077..e1a1d741 100644
--- a/arm9/modules/28/asm/module_28.s
+++ b/arm9/modules/28/asm/module_28.s
@@ -2963,5 +2963,19 @@ _02255E6E:
nop
_02255E74: .word 0x00000163
thumb_func_end MOD28_02255920
+
+ .section .rodata
; 0x02255E78
- .incbin "baserom.nds", 0x28C038, 0x148
+ .incbin "baserom.nds", 0x28C038, 0xa0
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_28.SINIT_START
+ .global SDK_OVERLAY.MODULE_28.SINIT_END
+SDK_OVERLAY.MODULE_28.SINIT_START:
+ .word MOD28_02254840
+ .word 0
+SDK_OVERLAY.MODULE_28.SINIT_END:
+
+ .section .data
+ ; 0x02255F20
+ .incbin "baserom.nds", 0x28C0E0, 0xa0
diff --git a/arm9/modules/29/asm/module_29.s b/arm9/modules/29/asm/module_29.s
index 818f41aa..db3f5ab8 100644
--- a/arm9/modules/29/asm/module_29.s
+++ b/arm9/modules/29/asm/module_29.s
@@ -1121,6 +1121,14 @@ MOD29_0225508C: ; 0x0225508C
.align 2, 0
thumb_func_end MOD29_0225508C
- .section .data
+ .section .rodata
; 0x0225509C
- .incbin "baserom.nds", 0x28CA5C, 0xA4
+ .incbin "baserom.nds", 0x28CA5C, 0x90
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_29.SINIT_START
+ .global SDK_OVERLAY.MODULE_29.SINIT_END
+SDK_OVERLAY.MODULE_29.SINIT_START:
+ .word MOD29_02254840
+ .word 0
+SDK_OVERLAY.MODULE_29.SINIT_END:
diff --git a/arm9/modules/30/asm/module_30.s b/arm9/modules/30/asm/module_30.s
index 36581e76..924f7ad0 100644
--- a/arm9/modules/30/asm/module_30.s
+++ b/arm9/modules/30/asm/module_30.s
@@ -731,4 +731,12 @@ _02254D9C: .word 0x040002A8
.section .data
; 0x02254DA0
- .incbin "baserom.nds", 0x28D160, 0xA0
+ .incbin "baserom.nds", 0x28D160, 0x88
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_30.SINIT_START
+ .global SDK_OVERLAY.MODULE_30.SINIT_END
+SDK_OVERLAY.MODULE_30.SINIT_START:
+ .word MOD30_02254840
+ .word 0
+SDK_OVERLAY.MODULE_30.SINIT_END:
diff --git a/arm9/modules/31/asm/module_31.s b/arm9/modules/31/asm/module_31.s
index cdf3282a..e9c70424 100644
--- a/arm9/modules/31/asm/module_31.s
+++ b/arm9/modules/31/asm/module_31.s
@@ -719,6 +719,9 @@ _02254D90: .word 0x040002A0
_02254D94: .word 0x040002A8
thumb_func_end MOD31_02254D1C
- .section .data
+ .section .rodata
; 0x02254D98
- .incbin "baserom.nds", 0x28D758, 0xA8
+ .incbin "baserom.nds", 0x28D758, 0x88
+
+ .section .sinit
+ .word MOD31_02254840
diff --git a/arm9/modules/32/asm/module_32.s b/arm9/modules/32/asm/module_32.s
index 135a9b15..299432f1 100644
--- a/arm9/modules/32/asm/module_32.s
+++ b/arm9/modules/32/asm/module_32.s
@@ -571,6 +571,14 @@ _02254C48:
_02254C50: .word 0x00000663
thumb_func_end MOD32_02254C08
- .section .data
+ .section .rodata
; 0x02254C54
- .incbin "baserom.nds", 0x28DC14, 0x8C
+ .incbin "baserom.nds", 0x28DC14, 0x70
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_32.SINIT_START
+ .global SDK_OVERLAY.MODULE_32.SINIT_END
+SDK_OVERLAY.MODULE_32.SINIT_START:
+ .word MOD32_02254840
+ .word 0
+SDK_OVERLAY.MODULE_32.SINIT_END:
diff --git a/arm9/modules/33/asm/module_33.s b/arm9/modules/33/asm/module_33.s
new file mode 100644
index 00000000..67ec554d
--- /dev/null
+++ b/arm9/modules/33/asm/module_33.s
@@ -0,0 +1,399 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD33_02254840
+MOD33_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD33_02254854
+ ldr r1, _02254850 ; =MOD33_02254908
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD33_02254854
+_02254850: .word MOD33_02254908
+ thumb_func_end MOD33_02254840
+
+ thumb_func_start MOD33_02254854
+MOD33_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 MOD33_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD33_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 MOD33_022548D4
+ thumb_func_end MOD33_02254854
+
+ thumb_func_start MOD33_0225489C
+MOD33_0225489C: ; 0x0225489C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, #8
+ add r1, r5, #4
+ bl MOD33_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 MOD33_0225489C
+
+ thumb_func_start MOD33_022548C0
+MOD33_022548C0: ; 0x022548C0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ bl MOD33_022549DC
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD33_022548C0
+
+ thumb_func_start MOD33_022548D4
+MOD33_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 MOD33_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 MOD33_022548D4
+
+ thumb_func_start MOD33_02254908
+MOD33_02254908: ; 0x02254908
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD33_02254908
+
+ thumb_func_start MOD33_02254910
+MOD33_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 MOD33_02254910
+
+ thumb_func_start MOD33_02254924
+MOD33_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 MOD33_022549E8
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _0225495E
+_02254944:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD33_02254A0C
+ cmp r0, #0
+ beq _0225495E
+ ldr r0, [r4, #0xc]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD33_02254910
+_0225495E:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD33_02254924
+
+ thumb_func_start MOD33_02254964
+MOD33_02254964: ; 0x02254964
+ push {r3, lr}
+ ldrb r1, [r0, #2]
+ cmp r1, #0
+ beq _02254972
+ mov r1, #2
+ bl MOD33_02254910
+_02254972:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD33_02254964
+
+ thumb_func_start MOD33_02254978
+MOD33_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 MOD33_022549E8
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549A6
+_02254998:
+ ldr r0, [r4, #8]
+ bl MOD33_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 MOD33_02254978
+
+ thumb_func_start MOD33_022549AC
+MOD33_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 MOD33_022549AC
+
+ thumb_func_start MOD33_022549DC
+MOD33_022549DC: ; 0x022549DC
+ push {r3, lr}
+ cmp r0, #0
+ beq _022549E6
+ bl FUN_02016A18
+_022549E6:
+ pop {r3, pc}
+ thumb_func_end MOD33_022549DC
+
+ thumb_func_start MOD33_022549E8
+MOD33_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 MOD33_022549E8
+
+ thumb_func_start MOD33_02254A0C
+MOD33_02254A0C: ; 0x02254A0C
+ ldr r3, _02254A14 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254A14: .word MOD20_02253794
+ thumb_func_end MOD33_02254A0C
+
+ thumb_func_start MOD33_02254A18
+MOD33_02254A18: ; 0x02254A18
+ ldr r3, _02254A20 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254A20: .word MOD20_022537B8
+ thumb_func_end MOD33_02254A18
+
+ thumb_func_start MOD33_02254A24
+MOD33_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 MOD33_02254A24
+
+ thumb_func_start MOD33_02254A38
+MOD33_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, #0xc
+ 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 MOD33_02254A24
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_02254ACC: .word 0x02254B00
+_02254AD0: .word 0x04001000
+_02254AD4: .word 0xFFFFE0FF
+ thumb_func_end MOD33_02254A38
+
+ thumb_func_start MOD33_02254AD8
+MOD33_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 MOD33_02254A24
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD33_02254AD8
+
+ .section .rodata
+ ; 0x02254AF4
+ .incbin "baserom.nds", 0x28E0B4, 0x4C
+
+ .section .sinit
+ .word MOD33_02254840
diff --git a/arm9/modules/34/asm/module_34.s b/arm9/modules/34/asm/module_34.s
new file mode 100644
index 00000000..a12d1a4a
--- /dev/null
+++ b/arm9/modules/34/asm/module_34.s
@@ -0,0 +1,601 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD34_02254840
+MOD34_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD34_02254854
+ ldr r1, _02254850 ; =MOD34_02254948
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD34_02254854
+_02254850: .word MOD34_02254948
+ thumb_func_end MOD34_02254840
+
+ thumb_func_start MOD34_02254854
+MOD34_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x38
+ 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 MOD34_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD34_0225490C
+ 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 MOD34_0225490C
+ thumb_func_end MOD34_02254854
+
+ thumb_func_start MOD34_0225489C
+MOD34_0225489C: ; 0x0225489C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, #0x24
+ add r1, r5, #4
+ bl MOD34_02254A5C
+ cmp r0, #0
+ beq _022548DC
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ str r4, [r5, #0x28]
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _022548E0 ; =0x02254C7C
+ ldr r2, _022548E4 ; =MOD34_02254904
+ mov r1, #6
+ add r3, r5, #0
+ bl MOD20_02254130
+ str r0, [r5, #0x2c]
+ mov r1, #0
+ str r1, [r5, #0x30]
+ mov r0, #1
+_022548D0:
+ add r1, r1, #1
+ str r0, [r5, #8]
+ add r5, r5, #4
+ cmp r1, #6
+ blt _022548D0
+ pop {r3, r4, r5, pc}
+_022548DC:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022548E0: .word 0x02254C7C
+_022548E4: .word MOD34_02254904
+ thumb_func_end MOD34_0225489C
+
+ thumb_func_start MOD34_022548E8
+MOD34_022548E8: ; 0x022548E8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x2c]
+ cmp r0, #0
+ beq _022548F6
+ bl MOD20_02254198
+_022548F6:
+ ldr r0, [r4, #0x24]
+ bl MOD34_02254A8C
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD34_022548E8
+
+ thumb_func_start MOD34_02254904
+MOD34_02254904: ; 0x02254904
+ str r1, [r3, #0x30]
+ str r0, [r3, #0x34]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD34_02254904
+
+ thumb_func_start MOD34_0225490C
+MOD34_0225490C: ; 0x0225490C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #3
+ bhs _02254942
+ ldr r0, [r4, #0x28]
+ ldr r1, [r4, #0x2c]
+ bl MOD20_02252C14
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _02254944 ; =0x02254C70
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254942
+ add r0, r4, #0
+ bl MOD34_022548E8
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x28]
+ bl MOD20_022529A0
+_02254942:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02254944: .word 0x02254C70
+ thumb_func_end MOD34_0225490C
+
+ thumb_func_start MOD34_02254948
+MOD34_02254948: ; 0x02254948
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD34_02254948
+
+ thumb_func_start MOD34_02254950
+MOD34_02254950: ; 0x02254950
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254958
+ b _0225495A
+_02254958:
+ mov r1, #2
+_0225495A:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD34_02254950
+
+ thumb_func_start MOD34_02254964
+MOD34_02254964: ; 0x02254964
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254974
+ cmp r0, #1
+ beq _02254984
+ b _0225499E
+_02254974:
+ ldr r0, [r4, #0x24]
+ mov r1, #0
+ bl MOD34_02254A98
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _0225499E
+_02254984:
+ ldr r0, [r4, #0x24]
+ mov r1, #0
+ bl MOD34_02254ABC
+ cmp r0, #0
+ beq _0225499E
+ ldr r0, [r4, #0x28]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD34_02254950
+_0225499E:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD34_02254964
+
+ thumb_func_start MOD34_022549A4
+MOD34_022549A4: ; 0x022549A4
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _022549B8
+ mov r1, #2
+ bl MOD34_02254950
+ mov r0, #0
+ pop {r4, pc}
+_022549B8:
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _022549C4
+ cmp r0, #1
+ beq _022549F6
+ b _02254A1A
+_022549C4:
+ ldr r0, [r4, #0x30]
+ cmp r0, #1
+ bne _02254A1A
+ ldr r1, [r4, #0x34]
+ lsl r0, r1, #2
+ add r0, r4, r0
+ ldr r0, [r0, #8]
+ cmp r0, #0
+ beq _022549EE
+ strh r1, [r4, #0x20]
+ ldr r0, [r4, #0x24]
+ mov r1, #2
+ bl MOD34_02254A98
+ ldr r0, _02254A20 ; =0x00000663
+ bl MOD20_02252B28
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A1A
+_022549EE:
+ ldr r0, _02254A24 ; =0x0000066E
+ bl MOD20_02252B28
+ b _02254A1A
+_022549F6:
+ ldr r0, [r4, #0x30]
+ cmp r0, #2
+ bne _02254A0A
+ ldr r0, [r4, #0x24]
+ mov r1, #3
+ bl MOD34_02254A98
+ mov r0, #0
+ strb r0, [r4, #1]
+ b _02254A1A
+_02254A0A:
+ cmp r0, #3
+ bne _02254A1A
+ ldr r0, [r4, #0x24]
+ mov r1, #3
+ bl MOD34_02254A98
+ mov r0, #0
+ strb r0, [r4, #1]
+_02254A1A:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_02254A20: .word 0x00000663
+_02254A24: .word 0x0000066E
+ thumb_func_end MOD34_022549A4
+
+ thumb_func_start MOD34_02254A28
+MOD34_02254A28: ; 0x02254A28
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A38
+ cmp r0, #1
+ beq _02254A48
+ b _02254A56
+_02254A38:
+ ldr r0, [r4, #0x24]
+ mov r1, #1
+ bl MOD34_02254A98
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A56
+_02254A48:
+ ldr r0, [r4, #0x24]
+ bl MOD34_02254AC8
+ cmp r0, #0
+ beq _02254A56
+ mov r0, #1
+ pop {r4, pc}
+_02254A56:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD34_02254A28
+
+ thumb_func_start MOD34_02254A5C
+MOD34_02254A5C: ; 0x02254A5C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x20
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254A88
+ add r0, #8
+ mov r1, #4
+ bl MOD20_022536F4
+ str r6, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ cmp r0, #0
+ beq _02254A88
+ str r4, [r5]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254A88:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD34_02254A5C
+
+ thumb_func_start MOD34_02254A8C
+MOD34_02254A8C: ; 0x02254A8C
+ push {r3, lr}
+ cmp r0, #0
+ beq _02254A96
+ bl FUN_02016A18
+_02254A96:
+ pop {r3, pc}
+ thumb_func_end MOD34_02254A8C
+
+ thumb_func_start MOD34_02254A98
+MOD34_02254A98: ; 0x02254A98
+ 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, _02254AB8 ; =0x02254CBC
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254AB8: .word 0x02254CBC
+ thumb_func_end MOD34_02254A98
+
+ thumb_func_start MOD34_02254ABC
+MOD34_02254ABC: ; 0x02254ABC
+ ldr r3, _02254AC4 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254AC4: .word MOD20_02253794
+ thumb_func_end MOD34_02254ABC
+
+ thumb_func_start MOD34_02254AC8
+MOD34_02254AC8: ; 0x02254AC8
+ ldr r3, _02254AD0 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254AD0: .word MOD20_022537B8
+ thumb_func_end MOD34_02254AC8
+
+ thumb_func_start MOD34_02254AD4
+MOD34_02254AD4: ; 0x02254AD4
+ 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 MOD34_02254AD4
+
+ thumb_func_start MOD34_02254AE8
+MOD34_02254AE8: ; 0x02254AE8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ str r1, [sp, #0x10]
+ add r0, r1, #0
+ bl MOD20_022538A0
+ add r6, r0, #0
+ ldr r0, [sp, #0x10]
+ bl MOD20_022538A4
+ add r5, r0, #0
+ ldr r0, [r6, #4]
+ ldr r2, _02254B8C ; =0x02254CA0
+ 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, [r6, #4]
+ mov r0, #0xc
+ mov r1, #0x3b
+ 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, [r6, #4]
+ mov r0, #0xc
+ mov r1, #0x3a
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ mov r4, #0
+ add r7, r4, #0
+_02254B4A:
+ ldr r2, [r5, #4]
+ add r0, r6, #0
+ add r1, r4, #0
+ add r3, r7, #0
+ bl MOD34_02254C1C
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #6
+ blt _02254B4A
+ ldr r0, [r6, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r0, _02254B90 ; =0x04001000
+ ldr r1, _02254B94 ; =0xFFFFE0FF
+ ldr r2, [r0]
+ ldr r4, [r0]
+ add r3, r2, #0
+ and r3, r1
+ lsl r1, r4, #0x13
+ lsr r2, r1, #0x1b
+ mov r1, #4
+ orr r1, r2
+ lsl r1, r1, #8
+ orr r1, r3
+ str r1, [r0]
+ ldr r0, [sp, #0x10]
+ str r4, [sp, #0x14]
+ bl MOD34_02254AD4
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254B8C: .word 0x02254CA0
+_02254B90: .word 0x04001000
+_02254B94: .word 0xFFFFE0FF
+ thumb_func_end MOD34_02254AE8
+
+ thumb_func_start MOD34_02254B98
+MOD34_02254B98: ; 0x02254B98
+ 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 MOD34_02254AD4
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD34_02254B98
+
+ thumb_func_start MOD34_02254BB4
+MOD34_02254BB4: ; 0x02254BB4
+ 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 r3, r0, #0
+ ldrh r1, [r3, #0x1c]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ add r2, r3, r2
+ ldr r2, [r2, #4]
+ mov r3, #1
+ bl MOD34_02254C1C
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ add r0, r5, #0
+ bl MOD34_02254AD4
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD34_02254BB4
+
+ thumb_func_start MOD34_02254BE8
+MOD34_02254BE8: ; 0x02254BE8
+ 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 r3, r0, #0
+ ldrh r1, [r3, #0x1c]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ add r2, r3, r2
+ ldr r2, [r2, #4]
+ mov r3, #0
+ bl MOD34_02254C1C
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ add r0, r5, #0
+ bl MOD34_02254AD4
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD34_02254BE8
+
+ thumb_func_start MOD34_02254C1C
+MOD34_02254C1C: ; 0x02254C1C
+ push {r4, r5, r6, lr}
+ ldr r0, [r0, #4]
+ add r5, r1, #0
+ mov r1, #6
+ add r4, r2, #0
+ add r6, r3, #0
+ bl FUN_0201886C
+ ldr r1, _02254C6C ; =0x02254C94
+ lsl r2, r5, #1
+ ldrh r1, [r1, r2]
+ lsl r1, r1, #1
+ add r2, r0, r1
+ cmp r4, #0
+ beq _02254C44
+ add r1, r5, #1
+ mov r0, #0x48
+ add r5, r1, #0
+ mul r5, r0
+ b _02254C46
+_02254C44:
+ mov r5, #0
+_02254C46:
+ cmp r6, #0
+ beq _02254C4C
+ add r5, #0x24
+_02254C4C:
+ mov r3, #0
+ add r0, r3, #0
+_02254C50:
+ add r1, r0, #0
+ add r4, r2, #0
+_02254C54:
+ add r1, r1, #1
+ strh r5, [r4]
+ add r5, r5, #1
+ add r4, r4, #2
+ cmp r1, #6
+ blt _02254C54
+ add r3, r3, #1
+ add r2, #0x40
+ cmp r3, #6
+ blt _02254C50
+ pop {r4, r5, r6, pc}
+ nop
+_02254C6C: .word 0x02254C94
+ thumb_func_end MOD34_02254C1C
+
+ .section .rodata
+ ; 0x02254C70
+ .incbin "baserom.nds", 0x28e630, 0x88
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_34.SINIT_START
+ .global SDK_OVERLAY.MODULE_34.SINIT_END
+SDK_OVERLAY.MODULE_34.SINIT_START:
+ .word MOD34_02254840
+ .word 0
+SDK_OVERLAY.MODULE_34.SINIT_END:
diff --git a/arm9/modules/35/asm/module_35.s b/arm9/modules/35/asm/module_35.s
new file mode 100644
index 00000000..fe5b7b14
--- /dev/null
+++ b/arm9/modules/35/asm/module_35.s
@@ -0,0 +1,1142 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD35_02254840
+MOD35_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD35_02254854
+ ldr r1, _02254850 ; =MOD35_02254924
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD35_02254854
+_02254850: .word MOD35_02254924
+ thumb_func_end MOD35_02254840
+
+ thumb_func_start MOD35_02254854
+MOD35_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x34
+ 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 MOD35_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD35_022548F0
+ 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 MOD35_022548F0
+ thumb_func_end MOD35_02254854
+
+ thumb_func_start MOD35_0225489C
+MOD35_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_02252C40
+ bl FUN_02023D58
+ str r0, [r5, #0x30]
+ ldr r1, [r5, #0x30]
+ add r0, r5, #4
+ bl MOD35_02254A50
+ add r0, r5, #0
+ add r0, #0x28
+ add r1, r5, #4
+ add r2, r6, #0
+ bl MOD35_02254ADC
+ cmp r0, #0
+ beq _022548D6
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ str r4, [r5, #0x2c]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_022548D6:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD35_0225489C
+
+ thumb_func_start MOD35_022548DC
+MOD35_022548DC: ; 0x022548DC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x28]
+ bl MOD35_02254B38
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD35_022548DC
+
+ thumb_func_start MOD35_022548F0
+MOD35_022548F0: ; 0x022548F0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrb r1, [r4]
+ add r5, r0, #0
+ cmp r1, #3
+ bhs _0225491C
+ lsl r2, r1, #2
+ ldr r1, _02254920 ; =0x022550B8
+ add r0, r4, #0
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _0225491C
+ add r0, r4, #0
+ bl MOD35_022548DC
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x2c]
+ bl MOD20_022529A0
+_0225491C:
+ pop {r3, r4, r5, pc}
+ nop
+_02254920: .word 0x022550B8
+ thumb_func_end MOD35_022548F0
+
+ thumb_func_start MOD35_02254924
+MOD35_02254924: ; 0x02254924
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD35_02254924
+
+ thumb_func_start MOD35_0225492C
+MOD35_0225492C: ; 0x0225492C
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254934
+ b _02254936
+_02254934:
+ mov r1, #2
+_02254936:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD35_0225492C
+
+ thumb_func_start MOD35_02254940
+MOD35_02254940: ; 0x02254940
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254950
+ cmp r0, #1
+ beq _02254960
+ b _0225497A
+_02254950:
+ ldr r0, [r4, #0x28]
+ mov r1, #0
+ bl MOD35_02254C48
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _0225497A
+_02254960:
+ ldr r0, [r4, #0x28]
+ mov r1, #0
+ bl MOD35_02254C6C
+ cmp r0, #0
+ beq _0225497A
+ ldr r0, [r4, #0x2c]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD35_0225492C
+_0225497A:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD35_02254940
+
+ thumb_func_start MOD35_02254980
+MOD35_02254980: ; 0x02254980
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _02254994
+ mov r1, #2
+ bl MOD35_0225492C
+ mov r0, #0
+ pop {r4, pc}
+_02254994:
+ ldrb r1, [r4, #1]
+ cmp r1, #0
+ beq _022549A0
+ cmp r1, #1
+ beq _022549C0
+ b _022549D0
+_022549A0:
+ bl MOD35_02254A08
+ cmp r0, #0
+ beq _022549D0
+ ldr r1, [r4, #0x30]
+ add r0, r4, #4
+ bl MOD35_02254A50
+ ldr r0, [r4, #0x28]
+ mov r1, #2
+ bl MOD35_02254C48
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549D0
+_022549C0:
+ ldr r0, [r4, #0x28]
+ mov r1, #2
+ bl MOD35_02254C6C
+ cmp r0, #0
+ beq _022549D0
+ mov r0, #0
+ strb r0, [r4, #1]
+_022549D0:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD35_02254980
+
+ thumb_func_start MOD35_022549D4
+MOD35_022549D4: ; 0x022549D4
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _022549E4
+ cmp r0, #1
+ beq _022549F4
+ b _02254A02
+_022549E4:
+ ldr r0, [r4, #0x28]
+ mov r1, #1
+ bl MOD35_02254C48
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A02
+_022549F4:
+ ldr r0, [r4, #0x28]
+ bl MOD35_02254C78
+ cmp r0, #0
+ beq _02254A02
+ mov r0, #1
+ pop {r4, pc}
+_02254A02:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD35_022549D4
+
+ thumb_func_start MOD35_02254A08
+MOD35_02254A08: ; 0x02254A08
+ push {r3, lr}
+ sub sp, #8
+ ldr r0, [r0, #0x2c]
+ bl MOD20_02252C08
+ cmp r0, #0
+ bne _02254A48
+ add r0, sp, #4
+ add r1, sp, #0
+ bl FUN_02020ACC
+ cmp r0, #0
+ beq _02254A48
+ ldr r0, [sp, #4]
+ sub r0, #0x10
+ cmp r0, #0xbf
+ bhs _02254A2E
+ mov r1, #1
+ b _02254A30
+_02254A2E:
+ mov r1, #0
+_02254A30:
+ ldr r0, [sp]
+ sub r0, #0x10
+ cmp r0, #0x9f
+ bhs _02254A3C
+ mov r0, #1
+ b _02254A3E
+_02254A3C:
+ mov r0, #0
+_02254A3E:
+ tst r0, r1
+ beq _02254A48
+ add sp, #8
+ mov r0, #1
+ pop {r3, pc}
+_02254A48:
+ mov r0, #0
+ add sp, #8
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD35_02254A08
+
+ thumb_func_start MOD35_02254A50
+MOD35_02254A50: ; 0x02254A50
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ str r0, [sp]
+ add r0, r1, #0
+ str r1, [sp, #4]
+ bl MOD05_021EC464
+ ldr r1, [sp]
+ strb r0, [r1]
+ ldr r0, [sp, #4]
+ bl FUN_02023C90
+ ldr r1, [sp]
+ mov r7, #0
+ strb r0, [r1, #1]
+ add r0, r1, #0
+ ldrb r0, [r0]
+ cmp r0, #0
+ ble _02254AD6
+ add r5, r1, #0
+ add r6, r1, #0
+_02254A7A:
+ ldr r0, [sp, #4]
+ add r1, r7, #0
+ bl FUN_02023C74
+ str r0, [sp, #8]
+ bl FUN_02023C7C
+ add r4, r0, #0
+ bl FUN_02066A6C
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ bl FUN_0206B688
+ str r0, [r5, #4]
+ add r0, r4, #0
+ mov r1, #5
+ mov r2, #0
+ bl FUN_020672BC
+ strh r0, [r6, #0x1c]
+ add r0, r4, #0
+ mov r1, #0x70
+ mov r2, #0
+ bl FUN_020672BC
+ strh r0, [r6, #0x20]
+ ldr r0, [sp, #8]
+ bl MOD05_021EC7B4
+ str r0, [r5, #0xc]
+ add r0, r4, #0
+ bl FUN_020689E8
+ str r0, [r5, #0x14]
+ ldr r1, [sp, #0xc]
+ add r0, r4, #0
+ bl FUN_02066A94
+ ldr r0, [sp]
+ add r7, r7, #1
+ ldrb r0, [r0]
+ add r5, r5, #4
+ add r6, r6, #2
+ cmp r7, r0
+ blt _02254A7A
+_02254AD6:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD35_02254A50
+
+ thumb_func_start MOD35_02254ADC
+MOD35_02254ADC: ; 0x02254ADC
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r0, #8
+ mov r1, #0x90
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254B2E
+ 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
+ mov r2, #0
+ add r0, #0x88
+ str r2, [r0]
+ ldr r0, _02254B34 ; =MOD35_02254E60
+ add r1, r4, #0
+ bl FUN_0200CA98
+ add r1, r4, #0
+ add r1, #0x8c
+ str r0, [r1]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD35_02254B54
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _02254B2E
+ str r4, [r6]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254B2E:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ nop
+_02254B34: .word MOD35_02254E60
+ thumb_func_end MOD35_02254ADC
+
+ thumb_func_start MOD35_02254B38
+MOD35_02254B38: ; 0x02254B38
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02254B52
+ bl MOD35_02254C18
+ add r0, r4, #0
+ add r0, #0x8c
+ ldr r0, [r0]
+ bl FUN_0200CAB4
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254B52:
+ pop {r4, pc}
+ thumb_func_end MOD35_02254B38
+
+ thumb_func_start MOD35_02254B54
+MOD35_02254B54: ; 0x02254B54
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ add r7, r0, #0
+ mov r0, #1
+ str r1, [sp, #0xc]
+ bl MOD20_022539C4
+ 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, #0x54
+ bl FUN_02006A34
+ mov r1, #0x14
+ bl _u32_div_f
+ ldr r1, [sp, #0xc]
+ str r0, [sp, #0x14]
+ str r0, [r7, #0x78]
+ bl MOD35_02254E88
+ mov r0, #8
+ str r0, [sp]
+ add r0, r7, #0
+ add r0, #0x50
+ mov r1, #0xc
+ mov r2, #0x52
+ mov r3, #0x53
+ bl MOD20_02253FBC
+ mov r0, #8
+ str r0, [sp]
+ add r0, r7, #0
+ add r0, #0x64
+ mov r1, #0xc
+ mov r2, #5
+ mov r3, #6
+ bl MOD20_02253FBC
+ add r0, r7, #0
+ str r0, [sp, #0x1c]
+ add r0, #0x50
+ str r0, [sp, #0x1c]
+ add r0, r7, #0
+ mov r4, #0
+ str r0, [sp, #0x18]
+ add r0, #0x64
+ ldr r6, _02254C14 ; =0x02255110
+ add r5, r7, #0
+ str r4, [sp, #0x10]
+ str r0, [sp, #0x18]
+_02254BC2:
+ cmp r4, #0
+ blt _02254BE2
+ cmp r4, #2
+ bgt _02254BE2
+ ldr r0, [r7, #0x20]
+ ldr r2, [sp, #0x18]
+ add r1, r6, #0
+ bl MOD20_02253E74
+ ldr r2, [sp, #0x14]
+ ldr r1, [sp, #0x10]
+ str r0, [r5, #0x24]
+ add r1, r2, r1
+ bl MOD20_02253FA4
+ b _02254BEE
+_02254BE2:
+ ldr r0, [r7, #0x20]
+ ldr r2, [sp, #0x1c]
+ add r1, r6, #0
+ bl MOD20_02253E74
+ str r0, [r5, #0x24]
+_02254BEE:
+ ldr r0, [r5, #0x24]
+ mov r1, #1
+ bl MOD20_02253FAC
+ ldr r0, [sp, #0x10]
+ add r4, r4, #1
+ add r0, #0x20
+ add r6, #0x10
+ add r5, r5, #4
+ str r0, [sp, #0x10]
+ cmp r4, #0xb
+ blt _02254BC2
+ ldr r1, [sp, #0xc]
+ add r0, r7, #0
+ bl MOD35_02254EC8
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254C14: .word 0x02255110
+ thumb_func_end MOD35_02254B54
+
+ thumb_func_start MOD35_02254C18
+MOD35_02254C18: ; 0x02254C18
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+_02254C20:
+ ldr r1, [r5, #0x24]
+ cmp r1, #0
+ beq _02254C2C
+ ldr r0, [r6, #0x20]
+ bl MOD20_02253F14
+_02254C2C:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0xb
+ blt _02254C20
+ add r0, r6, #0
+ add r0, #0x64
+ bl MOD20_02254014
+ add r6, #0x50
+ add r0, r6, #0
+ bl MOD20_02254014
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD35_02254C18
+
+ thumb_func_start MOD35_02254C48
+MOD35_02254C48: ; 0x02254C48
+ 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, _02254C68 ; =0x022550E0
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254C68: .word 0x022550E0
+ thumb_func_end MOD35_02254C48
+
+ thumb_func_start MOD35_02254C6C
+MOD35_02254C6C: ; 0x02254C6C
+ ldr r3, _02254C74 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254C74: .word MOD20_02253794
+ thumb_func_end MOD35_02254C6C
+
+ thumb_func_start MOD35_02254C78
+MOD35_02254C78: ; 0x02254C78
+ ldr r3, _02254C80 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254C80: .word MOD20_022537B8
+ thumb_func_end MOD35_02254C78
+
+ thumb_func_start MOD35_02254C84
+MOD35_02254C84: ; 0x02254C84
+ 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 MOD35_02254C84
+
+ thumb_func_start MOD35_02254C98
+MOD35_02254C98: ; 0x02254C98
+ 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, _02254D24 ; =0x022550C4
+ 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, #0x51
+ 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, #0x50
+ 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, _02254D28 ; =0x0400104C
+ mov r0, #0
+ strb r0, [r1]
+ strb r0, [r1, #1]
+ sub r1, #0x4c
+ ldr r3, [r1]
+ ldr r2, [r1]
+ ldr r0, _02254D2C ; =0xFFFFE0FF
+ 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 MOD35_02254C84
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_02254D24: .word 0x022550C4
+_02254D28: .word 0x0400104C
+_02254D2C: .word 0xFFFFE0FF
+ thumb_func_end MOD35_02254C98
+
+ thumb_func_start MOD35_02254D30
+MOD35_02254D30: ; 0x02254D30
+ 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 _02254D4C
+ cmp r0, #1
+ beq _02254D5A
+ pop {r3, r4, r5, pc}
+_02254D4C:
+ mov r0, #1
+ add r4, #0x84
+ str r0, [r4]
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_02254D5A:
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD35_02254C6C
+ cmp r0, #0
+ beq _02254D7C
+ ldr r0, _02254D80 ; =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 MOD35_02254C84
+_02254D7C:
+ pop {r3, r4, r5, pc}
+ nop
+_02254D80: .word 0x0400104C
+ thumb_func_end MOD35_02254D30
+
+ thumb_func_start MOD35_02254D84
+MOD35_02254D84: ; 0x02254D84
+ 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
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #3
+ bhi _02254E50
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02254DAE: ; jump table
+ .short _02254DB6 - _02254DAE - 2 ; case 0
+ .short _02254DDC - _02254DAE - 2 ; case 1
+ .short _02254DF4 - _02254DAE - 2 ; case 2
+ .short _02254E4A - _02254DAE - 2 ; case 3
+_02254DB6:
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x80
+ str r1, [r0]
+ mov r0, #0xa
+ str r0, [r4, #0x7c]
+ add r0, r4, #0
+ bl MOD35_02254E58
+ ldr r0, _02254E54 ; =0x00000678
+ bl MOD20_02252B28
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r4, r5, r6, pc}
+_02254DDC:
+ ldr r0, [r4, #0x78]
+ add r1, r6, #0
+ bl MOD35_02254E88
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD35_02254EC8
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r4, r5, r6, pc}
+_02254DF4:
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _02254E10
+ mov r0, #0
+ str r0, [r4, #0x7c]
+ add r0, r4, #0
+ bl MOD35_02254E58
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r4, r5, r6, pc}
+_02254E10:
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x80
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ cmp r0, #4
+ blo _02254E50
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x80
+ str r1, [r0]
+ ldr r0, [r4, #0x7c]
+ sub r0, r0, #1
+ str r0, [r4, #0x7c]
+ add r0, r4, #0
+ bl MOD35_02254E58
+ ldr r0, [r4, #0x7c]
+ cmp r0, #0
+ bne _02254E50
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r4, r5, r6, pc}
+_02254E4A:
+ add r0, r5, #0
+ bl MOD35_02254C84
+_02254E50:
+ pop {r4, r5, r6, pc}
+ nop
+_02254E54: .word 0x00000678
+ thumb_func_end MOD35_02254D84
+
+ thumb_func_start MOD35_02254E58
+MOD35_02254E58: ; 0x02254E58
+ mov r1, #1
+ add r0, #0x88
+ str r1, [r0]
+ bx lr
+ thumb_func_end MOD35_02254E58
+
+ thumb_func_start MOD35_02254E60
+MOD35_02254E60: ; 0x02254E60
+ add r0, r1, #0
+ add r0, #0x88
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _02254E82
+ ldr r2, [r1, #0x7c]
+ ldr r3, _02254E84 ; =0x0400104C
+ lsl r0, r2, #4
+ orr r0, r2
+ strb r0, [r3]
+ ldr r2, [r1, #0x7c]
+ add r1, #0x88
+ lsl r0, r2, #4
+ orr r0, r2
+ strb r0, [r3, #1]
+ mov r0, #0
+ str r0, [r1]
+_02254E82:
+ bx lr
+ .align 2, 0
+_02254E84: .word 0x0400104C
+ thumb_func_end MOD35_02254E60
+
+ thumb_func_start MOD35_02254E88
+MOD35_02254E88: ; 0x02254E88
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ mov r0, #1
+ add r4, r1, #0
+ add r1, r0, #0
+ mov r2, #0
+ bl FUN_0206B6D4
+ ldrb r1, [r4]
+ cmp r1, #0
+ beq _02254EA4
+ ldr r1, [r4, #4]
+ b _02254EA6
+_02254EA4:
+ add r1, r0, #0
+_02254EA6:
+ str r1, [sp]
+ ldrb r1, [r4]
+ cmp r1, #1
+ bls _02254EB2
+ ldr r1, [r4, #8]
+ b _02254EB4
+_02254EB2:
+ add r1, r0, #0
+_02254EB4:
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r1, sp, #0
+ mov r2, #3
+ mov r3, #1
+ bl MOD20_02253A04
+ add sp, #0xc
+ pop {r4, r5, pc}
+ thumb_func_end MOD35_02254E88
+
+ thumb_func_start MOD35_02254EC8
+MOD35_02254EC8: ; 0x02254EC8
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ mov r0, #0
+ add r6, r1, #0
+ str r0, [sp]
+ ldrb r0, [r6]
+ cmp r0, #0
+ ble _02254F00
+ add r4, r6, #0
+ add r5, r7, #0
+_02254EDC:
+ ldrh r0, [r4, #0x1c]
+ ldrh r1, [r4, #0x20]
+ mov r2, #0
+ bl FUN_0206B7BC
+ add r1, r0, #0
+ ldr r0, [r5, #0x24]
+ add r1, r1, #1
+ bl MOD20_02253F9C
+ ldr r0, [sp]
+ ldrb r1, [r6]
+ add r0, r0, #1
+ add r4, r4, #2
+ add r5, r5, #4
+ str r0, [sp]
+ cmp r0, r1
+ blt _02254EDC
+_02254F00:
+ mov r0, #1
+ mov r1, #0
+ add r2, r0, #0
+ bl FUN_0206B7BC
+ add r1, r0, #0
+ ldr r0, [r7, #0x2c]
+ add r1, r1, #1
+ bl MOD20_02253F9C
+ ldrb r0, [r6]
+ cmp r0, #0
+ beq _02254F36
+ ldrh r0, [r6, #0x1c]
+ mov r1, #0x1c
+ bl FUN_02068678
+ cmp r0, #0
+ ldr r0, [r7, #0x24]
+ beq _02254F30
+ mov r1, #6
+ bl MOD20_02253F28
+ b _02254F36
+_02254F30:
+ mov r1, #7
+ bl MOD20_02253F28
+_02254F36:
+ add r0, r7, #0
+ ldr r1, [r6, #0xc]
+ add r0, #0x30
+ bl MOD35_02254FD8
+ add r0, r7, #0
+ ldr r1, [r6, #0x10]
+ add r0, #0x3c
+ bl MOD35_02254FD8
+ ldr r0, [r7, #0x48]
+ ldr r1, [r6, #0x14]
+ bl MOD35_02255094
+ ldr r0, [r7, #0x4c]
+ ldr r1, [r6, #0x18]
+ bl MOD35_02255094
+ ldrb r0, [r6]
+ cmp r0, #0
+ bne _02254F64
+ mov r4, #1
+ b _02254F66
+_02254F64:
+ mov r4, #0
+_02254F66:
+ ldr r0, [r7, #0x24]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r7, #0x30]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r7, #0x34]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r7, #0x38]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r7, #0x48]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldrb r0, [r6]
+ cmp r0, #1
+ bhi _02254F98
+ mov r4, #1
+ b _02254F9A
+_02254F98:
+ mov r4, #0
+_02254F9A:
+ ldr r0, [r7, #0x28]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r7, #0x3c]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r7, #0x40]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r7, #0x44]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r7, #0x4c]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldrb r0, [r6, #1]
+ cmp r0, #0
+ bne _02254FCC
+ mov r1, #1
+ b _02254FCE
+_02254FCC:
+ mov r1, #0
+_02254FCE:
+ ldr r0, [r7, #0x2c]
+ bl MOD20_02253F78
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD35_02254EC8
+
+ thumb_func_start MOD35_02254FD8
+MOD35_02254FD8: ; 0x02254FD8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r7, r1, #0
+ str r0, [sp]
+ cmp r7, #0x64
+ bls _02254FE6
+ mov r7, #0x64
+_02254FE6:
+ ldr r2, _02255088 ; =0x04000280
+ mov r3, #0
+ strh r3, [r2]
+ add r0, r2, #0
+ str r7, [r2, #0x10]
+ mov r1, #0x64
+ add r0, #0x18
+ str r1, [r0]
+ str r3, [r0, #4]
+ lsr r0, r2, #0xb
+_02254FFA:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _02254FFA
+ ldr r0, _0225508C ; =0x040002A0
+ ldr r4, _02255088 ; =0x04000280
+ ldr r0, [r0]
+ str r0, [sp, #4]
+ lsr r0, r4, #0xb
+_0225500A:
+ ldrh r1, [r4]
+ tst r1, r0
+ bne _0225500A
+ ldr r3, _02255090 ; =0x040002A8
+ mov r1, #0
+ ldr r2, [r3]
+ add r0, r3, #0
+ strh r1, [r4]
+ sub r0, #0x18
+ str r2, [r0]
+ mov r0, #0xa
+ sub r3, #0x10
+ str r0, [r3]
+ ldr r2, _02255088 ; =0x04000280
+ str r1, [r3, #4]
+ lsr r0, r2, #0xb
+_0225502A:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _0225502A
+ ldr r0, _0225508C ; =0x040002A0
+ ldr r2, _02255088 ; =0x04000280
+ ldr r0, [r0]
+ str r0, [sp, #8]
+ lsr r0, r2, #0xb
+_0225503A:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _0225503A
+ ldr r0, _02255090 ; =0x040002A8
+ ldr r5, [sp]
+ ldr r0, [r0]
+ mov r6, #0
+ str r0, [sp, #0xc]
+ add r4, sp, #4
+_0225504C:
+ ldr r0, [r5]
+ ldr r1, [r4]
+ bl MOD20_02253F28
+ add r6, r6, #1
+ add r4, r4, #4
+ add r5, r5, #4
+ cmp r6, #3
+ blt _0225504C
+ cmp r7, #0x64
+ bhs _02255066
+ mov r1, #1
+ b _02255068
+_02255066:
+ mov r1, #0
+_02255068:
+ ldr r0, [sp]
+ ldr r0, [r0]
+ bl MOD20_02253F78
+ cmp r7, #0xa
+ bhs _02255078
+ mov r1, #1
+ b _0225507A
+_02255078:
+ mov r1, #0
+_0225507A:
+ ldr r0, [sp]
+ ldr r0, [r0, #4]
+ bl MOD20_02253F78
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02255088: .word 0x04000280
+_0225508C: .word 0x040002A0
+_02255090: .word 0x040002A8
+ thumb_func_end MOD35_02254FD8
+
+ thumb_func_start MOD35_02255094
+MOD35_02255094: ; 0x02255094
+ push {r3, lr}
+ cmp r1, #0
+ beq _022550A0
+ cmp r1, #1
+ beq _022550A8
+ b _022550B0
+_022550A0:
+ mov r1, #0xa
+ bl MOD20_02253F28
+ pop {r3, pc}
+_022550A8:
+ mov r1, #0xb
+ bl MOD20_02253F28
+ pop {r3, pc}
+_022550B0:
+ mov r1, #0xc
+ bl MOD20_02253F28
+ pop {r3, pc}
+ thumb_func_end MOD35_02255094
+
+ .section .rodata
+ ; 0x022550B8
+ .incbin "baserom.nds", 0x28f078, 0x108
+
+ .section .sinit
+ .word MOD35_02254840
diff --git a/arm9/modules/36/asm/module_36.s b/arm9/modules/36/asm/module_36.s
new file mode 100644
index 00000000..d15b1d72
--- /dev/null
+++ b/arm9/modules/36/asm/module_36.s
@@ -0,0 +1,1571 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD36_02254840
+MOD36_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD36_02254854
+ ldr r1, _02254850 ; =MOD36_02254990
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD36_02254854
+_02254850: .word MOD36_02254990
+ thumb_func_end MOD36_02254840
+
+ thumb_func_start MOD36_02254854
+MOD36_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ add r5, r0, #0
+ ldr r1, _02254898 ; =0x00005B90
+ mov r0, #8
+ 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 MOD36_022548A0
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _0225489C ; =MOD36_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 0x00005B90
+_0225489C: .word MOD36_02254938
+ thumb_func_end MOD36_02254854
+
+ thumb_func_start MOD36_022548A0
+MOD36_022548A0: ; 0x022548A0
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r4, r1, #0
+ ldr r1, _02254904 ; =0x00005B78
+ str r3, [r5, #0xc]
+ mov r0, #0
+ strb r0, [r5, r1]
+ mov r6, #1
+ add r3, r1, #1
+ strb r6, [r5, r3]
+ add r3, r1, #2
+ strb r0, [r5, r3]
+ add r0, r1, #4
+ add r0, r5, r0
+ add r1, r5, #4
+ bl MOD36_02254E30
+ cmp r0, #0
+ beq _022548FC
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ strb r0, [r5, #3]
+ add r0, r5, #4
+ bl MOD36_02254E10
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _02254908 ; =0x022553E8
+ ldr r2, _0225490C ; =MOD36_02254980
+ mov r1, #3
+ add r3, r5, #0
+ bl MOD20_02254130
+ ldr r1, _02254910 ; =0x00005B84
+ mov r2, #0
+ str r0, [r5, r1]
+ add r0, r1, #4
+ str r2, [r5, r0]
+ sub r0, r1, #4
+ str r4, [r5, r0]
+ add sp, #4
+ add r0, r6, #0
+ pop {r3, r4, r5, r6, pc}
+_022548FC:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02254904: .word 0x00005B78
+_02254908: .word 0x022553E8
+_0225490C: .word MOD36_02254980
+_02254910: .word 0x00005B84
+ thumb_func_end MOD36_022548A0
+
+ thumb_func_start MOD36_02254914
+MOD36_02254914: ; 0x02254914
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _02254930 ; =0x00005B84
+ ldr r0, [r4, r0]
+ bl MOD20_02254198
+ ldr r0, _02254934 ; =0x00005B7C
+ ldr r0, [r4, r0]
+ bl MOD36_02254E78
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+_02254930: .word 0x00005B84
+_02254934: .word 0x00005B7C
+ thumb_func_end MOD36_02254914
+
+ thumb_func_start MOD36_02254938
+MOD36_02254938: ; 0x02254938
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #3
+ bhs _02254974
+ ldr r1, _02254978 ; =0x00005B80
+ ldr r0, [r4, r1]
+ add r1, r1, #4
+ ldr r1, [r4, r1]
+ bl MOD20_02252C14
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _0225497C ; =0x022553F4
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254974
+ add r0, r4, #0
+ bl MOD36_02254914
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, _02254978 ; =0x00005B80
+ ldr r0, [r4, r0]
+ bl MOD20_022529A0
+_02254974:
+ pop {r3, r4, r5, pc}
+ nop
+_02254978: .word 0x00005B80
+_0225497C: .word 0x022553F4
+ thumb_func_end MOD36_02254938
+
+ thumb_func_start MOD36_02254980
+MOD36_02254980: ; 0x02254980
+ ldr r2, _0225498C ; =0x00005B88
+ str r1, [r3, r2]
+ add r1, r2, #4
+ str r0, [r3, r1]
+ bx lr
+ nop
+_0225498C: .word 0x00005B88
+ thumb_func_end MOD36_02254980
+
+ thumb_func_start MOD36_02254990
+MOD36_02254990: ; 0x02254990
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD36_02254990
+
+ thumb_func_start MOD36_02254998
+MOD36_02254998: ; 0x02254998
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _022549A0
+ b _022549A2
+_022549A0:
+ mov r1, #2
+_022549A2:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD36_02254998
+
+ thumb_func_start MOD36_022549AC
+MOD36_022549AC: ; 0x022549AC
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _022549BC
+ cmp r0, #1
+ beq _022549CE
+ b _022549EC
+_022549BC:
+ ldr r0, _022549F0 ; =0x00005B7C
+ mov r1, #0
+ ldr r0, [r4, r0]
+ bl MOD36_02254F0C
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549EC
+_022549CE:
+ ldr r0, _022549F0 ; =0x00005B7C
+ mov r1, #0
+ ldr r0, [r4, r0]
+ bl MOD36_02254F30
+ cmp r0, #0
+ beq _022549EC
+ ldr r0, _022549F4 ; =0x00005B80
+ ldr r0, [r4, r0]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD36_02254998
+_022549EC:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+_022549F0: .word 0x00005B7C
+_022549F4: .word 0x00005B80
+ thumb_func_end MOD36_022549AC
+
+ thumb_func_start MOD36_022549F8
+MOD36_022549F8: ; 0x022549F8
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _02254A0A
+ mov r1, #2
+ bl MOD36_02254998
+_02254A0A:
+ ldrb r0, [r4, #1]
+ cmp r0, #3
+ bhi _02254A30
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02254A1C: ; jump table
+ .short _02254A24 - _02254A1C - 2 ; case 0
+ .short _02254AF4 - _02254A1C - 2 ; case 1
+ .short _02254B4E - _02254A1C - 2 ; case 2
+ .short _02254B7C - _02254A1C - 2 ; case 3
+_02254A24:
+ ldr r0, _02254BCC ; =0x00005B80
+ ldr r0, [r4, r0]
+ bl MOD20_02252C08
+ cmp r0, #0
+ beq _02254A32
+_02254A30:
+ b _02254BC4
+_02254A32:
+ ldr r1, _02254BD0 ; =0x00005B88
+ ldr r0, [r4, r1]
+ cmp r0, #1
+ bne _02254AAE
+ add r0, r1, #4
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _02254A4C
+ cmp r0, #1
+ beq _02254A82
+ cmp r0, #2
+ beq _02254A8A
+ b _02254AA6
+_02254A4C:
+ add r0, r1, #0
+ mov r3, #1
+ sub r0, #0x10
+ strb r3, [r4, r0]
+ add r0, r1, #0
+ mov r2, #0
+ sub r0, #0xf
+ strb r2, [r4, r0]
+ add r0, r1, #0
+ sub r0, #0xe
+ sub r1, #0xc
+ strb r3, [r4, r0]
+ ldr r0, [r4, r1]
+ mov r1, #5
+ bl MOD36_02254F0C
+ ldr r0, _02254BD4 ; =0x00005B7C
+ mov r1, #7
+ ldr r0, [r4, r0]
+ bl MOD36_02254F0C
+ ldr r0, _02254BD8 ; =0x00000663
+ bl MOD20_02252B28
+ mov r0, #1
+ strb r0, [r4, #1]
+ b _02254AA6
+_02254A82:
+ ldr r0, _02254BDC ; =0x0000066E
+ bl MOD20_02252B28
+ b _02254AA6
+_02254A8A:
+ add r0, r1, #0
+ mov r2, #1
+ sub r0, #0xe
+ sub r1, #0xc
+ strb r2, [r4, r0]
+ ldr r0, [r4, r1]
+ mov r1, #5
+ bl MOD36_02254F0C
+ ldr r0, _02254BD8 ; =0x00000663
+ bl MOD20_02252B28
+ mov r0, #3
+ strb r0, [r4, #1]
+_02254AA6:
+ ldr r0, _02254BD0 ; =0x00005B88
+ mov r1, #0
+ str r1, [r4, r0]
+ b _02254BC4
+_02254AAE:
+ ldrb r0, [r4, #3]
+ cmp r0, #0
+ beq _02254ADA
+ add r0, r4, #0
+ ldr r6, [r4, #4]
+ ldr r5, [r4, #8]
+ bl MOD36_02254C44
+ cmp r0, #0
+ beq _02254AD4
+ ldr r0, [r4, #8]
+ add r1, r6, #0
+ str r0, [sp]
+ ldr r3, [r4, #4]
+ add r0, r4, #0
+ add r2, r5, #0
+ bl MOD36_02254C90
+ b _02254BC4
+_02254AD4:
+ mov r0, #0
+ strb r0, [r4, #3]
+ b _02254BC4
+_02254ADA:
+ add r0, r4, #0
+ bl MOD36_02254BE4
+ cmp r0, #0
+ beq _02254BC4
+ ldr r0, _02254BD4 ; =0x00005B7C
+ mov r1, #3
+ ldr r0, [r4, r0]
+ bl MOD36_02254F0C
+ mov r0, #1
+ strb r0, [r4, #3]
+ b _02254BC4
+_02254AF4:
+ ldr r1, _02254BD0 ; =0x00005B88
+ ldr r0, [r4, r1]
+ cmp r0, #1
+ bne _02254BC4
+ add r0, r1, #4
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _02254B0C
+ cmp r0, #1
+ beq _02254B14
+ cmp r0, #2
+ bne _02254B46
+_02254B0C:
+ ldr r0, _02254BDC ; =0x0000066E
+ bl MOD20_02252B28
+ b _02254B46
+_02254B14:
+ add r0, r1, #0
+ mov r2, #1
+ sub r0, #0x10
+ strb r2, [r4, r0]
+ add r0, r1, #0
+ sub r0, #0xf
+ strb r2, [r4, r0]
+ add r0, r1, #0
+ sub r0, #0xe
+ sub r1, #0xc
+ strb r2, [r4, r0]
+ ldr r0, [r4, r1]
+ mov r1, #5
+ bl MOD36_02254F0C
+ ldr r0, _02254BD4 ; =0x00005B7C
+ mov r1, #8
+ ldr r0, [r4, r0]
+ bl MOD36_02254F0C
+ ldr r0, _02254BD8 ; =0x00000663
+ bl MOD20_02252B28
+ mov r0, #2
+ strb r0, [r4, #1]
+_02254B46:
+ ldr r0, _02254BD0 ; =0x00005B88
+ mov r1, #0
+ str r1, [r4, r0]
+ b _02254BC4
+_02254B4E:
+ ldr r0, _02254BD4 ; =0x00005B7C
+ mov r1, #8
+ ldr r0, [r4, r0]
+ bl MOD36_02254F30
+ cmp r0, #0
+ beq _02254BC4
+ ldr r0, _02254BE0 ; =0x00005B78
+ mov r3, #0
+ strb r3, [r4, r0]
+ mov r2, #1
+ add r1, r0, #1
+ strb r2, [r4, r1]
+ add r1, r0, #2
+ strb r3, [r4, r1]
+ add r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #5
+ bl MOD36_02254F0C
+ mov r0, #0
+ strb r0, [r4, #1]
+ b _02254BC4
+_02254B7C:
+ ldr r1, _02254BD0 ; =0x00005B88
+ ldr r0, [r4, r1]
+ cmp r0, #2
+ bne _02254B9C
+ add r0, r1, #0
+ mov r2, #0
+ sub r0, #0xe
+ sub r1, #0xc
+ strb r2, [r4, r0]
+ ldr r0, [r4, r1]
+ mov r1, #5
+ bl MOD36_02254F0C
+ mov r0, #0
+ strb r0, [r4, #1]
+ b _02254BC4
+_02254B9C:
+ cmp r0, #3
+ bne _02254BC4
+ mov r0, #0
+ sub r1, #0xe
+ strb r0, [r4, r1]
+ add r0, r4, #4
+ bl MOD36_02254E10
+ ldr r0, _02254BD4 ; =0x00005B7C
+ mov r1, #5
+ ldr r0, [r4, r0]
+ bl MOD36_02254F0C
+ ldr r0, _02254BD4 ; =0x00005B7C
+ mov r1, #6
+ ldr r0, [r4, r0]
+ bl MOD36_02254F0C
+ mov r0, #0
+ strb r0, [r4, #1]
+_02254BC4:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02254BCC: .word 0x00005B80
+_02254BD0: .word 0x00005B88
+_02254BD4: .word 0x00005B7C
+_02254BD8: .word 0x00000663
+_02254BDC: .word 0x0000066E
+_02254BE0: .word 0x00005B78
+ thumb_func_end MOD36_022549F8
+
+ thumb_func_start MOD36_02254BE4
+MOD36_02254BE4: ; 0x02254BE4
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ add r0, sp, #4
+ add r1, sp, #0
+ bl MOD20_02252B68
+ cmp r0, #0
+ beq _02254C3E
+ ldr r1, [sp, #4]
+ ldr r2, [sp]
+ sub r1, #0x10
+ sub r2, #0x10
+ cmp r1, #0x9b
+ bhs _02254C06
+ mov r0, #1
+ b _02254C08
+_02254C06:
+ mov r0, #0
+_02254C08:
+ cmp r2, #0x95
+ bhs _02254C10
+ mov r3, #1
+ b _02254C12
+_02254C10:
+ mov r3, #0
+_02254C12:
+ tst r0, r3
+ beq _02254C3E
+ lsr r3, r1, #1
+ lsr r1, r2, #1
+ add r2, r4, #0
+ mov r0, #0x96
+ add r2, #0x10
+ mul r0, r3
+ str r3, [sp, #4]
+ str r1, [sp]
+ add r2, r2, r0
+ ldrb r0, [r2, r1]
+ cmp r0, #0
+ bne _02254C3E
+ mov r0, #1
+ strb r0, [r2, r1]
+ ldr r1, [sp, #4]
+ str r1, [r4, #4]
+ ldr r1, [sp]
+ add sp, #8
+ str r1, [r4, #8]
+ pop {r4, pc}
+_02254C3E:
+ mov r0, #0
+ add sp, #8
+ pop {r4, pc}
+ thumb_func_end MOD36_02254BE4
+
+ thumb_func_start MOD36_02254C44
+MOD36_02254C44: ; 0x02254C44
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ add r0, sp, #4
+ add r1, sp, #0
+ bl MOD20_02252B68
+ cmp r0, #0
+ beq _02254C8A
+ ldr r1, [sp, #4]
+ ldr r2, [sp]
+ sub r1, #0x10
+ sub r2, #0x10
+ cmp r1, #0x9b
+ bhs _02254C66
+ mov r0, #1
+ b _02254C68
+_02254C66:
+ mov r0, #0
+_02254C68:
+ cmp r2, #0x95
+ bhs _02254C70
+ mov r3, #1
+ b _02254C72
+_02254C70:
+ mov r3, #0
+_02254C72:
+ tst r0, r3
+ beq _02254C8A
+ lsr r1, r1, #1
+ lsr r0, r2, #1
+ str r1, [sp, #4]
+ str r0, [sp]
+ str r1, [r4, #4]
+ ldr r0, [sp]
+ add sp, #8
+ str r0, [r4, #8]
+ mov r0, #1
+ pop {r4, pc}
+_02254C8A:
+ mov r0, #0
+ add sp, #8
+ pop {r4, pc}
+ thumb_func_end MOD36_02254C44
+
+ thumb_func_start MOD36_02254C90
+MOD36_02254C90: ; 0x02254C90
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r6, r0, #0
+ ldr r0, [sp, #0x28]
+ add r4, r2, #0
+ add r5, r1, #0
+ str r3, [sp]
+ str r0, [sp, #0x28]
+ cmp r4, r0
+ bne _02254CAC
+ add r0, r3, #0
+ cmp r5, r0
+ bne _02254CAC
+ b _02254DCC
+_02254CAC:
+ ldr r0, [sp]
+ cmp r0, r5
+ bls _02254CB6
+ sub r1, r0, r5
+ b _02254CB8
+_02254CB6:
+ sub r1, r5, r0
+_02254CB8:
+ ldr r0, [sp, #0x28]
+ cmp r0, r4
+ bls _02254CC2
+ sub r2, r0, r4
+ b _02254CC4
+_02254CC2:
+ sub r2, r4, r0
+_02254CC4:
+ cmp r1, r2
+ bls _02254D46
+ ldr r0, [sp]
+ cmp r0, r5
+ bls _02254CD4
+ mov r0, #1
+ str r0, [sp, #4]
+ b _02254CDA
+_02254CD4:
+ mov r0, #0
+ mvn r0, r0
+ str r0, [sp, #4]
+_02254CDA:
+ cmp r1, #0
+ beq _02254CEC
+ ldr r0, [sp, #0x28]
+ sub r0, r0, r4
+ lsl r0, r0, #0xc
+ blx _s32_div_f
+ str r0, [sp, #0x10]
+ b _02254CF0
+_02254CEC:
+ mov r0, #0
+ str r0, [sp, #0x10]
+_02254CF0:
+ ldr r0, [sp, #0x10]
+ lsl r1, r4, #0xc
+ add r7, r1, r0
+ ldr r0, [sp, #4]
+ add r5, r5, r0
+ ldr r0, [sp]
+ cmp r5, r0
+ beq _02254DB0
+ mov r1, #0x96
+ add r0, r5, #0
+ mul r0, r1
+ add r4, r6, r0
+ ldr r0, [sp, #4]
+ mul r1, r0
+ str r1, [sp, #0xc]
+_02254D0E:
+ asr r1, r7, #0xc
+ cmp r5, #0x9c
+ bhs _02254D32
+ cmp r1, #0x96
+ bhs _02254D32
+ add r0, r4, r1
+ ldrb r2, [r0, #0x10]
+ cmp r2, #0
+ bne _02254D32
+ mov r2, #0
+ strb r2, [r0, #0x10]
+ str r5, [r6, #4]
+ str r1, [r6, #8]
+ ldr r0, _02254DD0 ; =0x00005B7C
+ mov r1, #3
+ ldr r0, [r6, r0]
+ bl MOD36_02254F0C
+_02254D32:
+ ldr r0, [sp, #0xc]
+ add r4, r4, r0
+ ldr r0, [sp, #4]
+ add r5, r5, r0
+ ldr r0, [sp, #0x10]
+ add r7, r7, r0
+ ldr r0, [sp]
+ cmp r5, r0
+ bne _02254D0E
+ b _02254DB0
+_02254D46:
+ ldr r0, [sp, #0x28]
+ cmp r0, r4
+ bls _02254D50
+ mov r7, #1
+ b _02254D54
+_02254D50:
+ mov r7, #0
+ mvn r7, r7
+_02254D54:
+ cmp r2, #0
+ beq _02254D68
+ ldr r0, [sp]
+ add r1, r2, #0
+ sub r0, r0, r5
+ lsl r0, r0, #0xc
+ blx _s32_div_f
+ str r0, [sp, #8]
+ b _02254D6C
+_02254D68:
+ mov r0, #0
+ str r0, [sp, #8]
+_02254D6C:
+ ldr r0, [sp, #8]
+ lsl r1, r5, #0xc
+ add r5, r1, r0
+ ldr r0, [sp, #0x28]
+ add r4, r4, r7
+ cmp r4, r0
+ beq _02254DB0
+_02254D7A:
+ asr r1, r5, #0xc
+ cmp r4, #0x96
+ bhs _02254DA4
+ cmp r1, #0x9c
+ bhs _02254DA4
+ mov r0, #0x96
+ mul r0, r1
+ add r0, r6, r0
+ add r0, r0, r4
+ ldrb r2, [r0, #0x10]
+ cmp r2, #0
+ bne _02254DA4
+ mov r2, #1
+ strb r2, [r0, #0x10]
+ str r1, [r6, #4]
+ ldr r0, _02254DD0 ; =0x00005B7C
+ str r4, [r6, #8]
+ ldr r0, [r6, r0]
+ mov r1, #3
+ bl MOD36_02254F0C
+_02254DA4:
+ ldr r0, [sp, #8]
+ add r4, r4, r7
+ add r5, r5, r0
+ ldr r0, [sp, #0x28]
+ cmp r4, r0
+ bne _02254D7A
+_02254DB0:
+ ldr r0, [sp, #0x28]
+ cmp r0, #0x96
+ bhs _02254DCC
+ ldr r0, [sp]
+ cmp r0, #0x9c
+ bhs _02254DCC
+ str r0, [r6, #4]
+ ldr r0, [sp, #0x28]
+ mov r1, #3
+ str r0, [r6, #8]
+ ldr r0, _02254DD0 ; =0x00005B7C
+ ldr r0, [r6, r0]
+ bl MOD36_02254F0C
+_02254DCC:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254DD0: .word 0x00005B7C
+ thumb_func_end MOD36_02254C90
+
+ thumb_func_start MOD36_02254DD4
+MOD36_02254DD4: ; 0x02254DD4
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254DE4
+ cmp r0, #1
+ beq _02254DF6
+ b _02254E06
+_02254DE4:
+ ldr r0, _02254E0C ; =0x00005B7C
+ mov r1, #1
+ ldr r0, [r4, r0]
+ bl MOD36_02254F0C
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254E06
+_02254DF6:
+ ldr r0, _02254E0C ; =0x00005B7C
+ ldr r0, [r4, r0]
+ bl MOD36_02254F3C
+ cmp r0, #0
+ beq _02254E06
+ mov r0, #1
+ pop {r4, pc}
+_02254E06:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_02254E0C: .word 0x00005B7C
+ thumb_func_end MOD36_02254DD4
+
+ thumb_func_start MOD36_02254E10
+MOD36_02254E10: ; 0x02254E10
+ push {r4, r5}
+ mov r4, #0
+ add r2, r4, #0
+ add r3, r4, #0
+_02254E18:
+ add r5, r3, #0
+_02254E1A:
+ add r1, r0, r5
+ add r5, r5, #1
+ strb r2, [r1, #0xc]
+ cmp r5, #0x96
+ blt _02254E1A
+ add r4, r4, #1
+ add r0, #0x96
+ cmp r4, #0x9c
+ blt _02254E18
+ pop {r4, r5}
+ bx lr
+ thumb_func_end MOD36_02254E10
+
+ thumb_func_start MOD36_02254E30
+MOD36_02254E30: ; 0x02254E30
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r0, #8
+ mov r1, #0x70
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254E74
+ 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
+ mov r1, #0
+ add r0, #0x68
+ strh r1, [r0]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD36_02254E8C
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _02254E74
+ str r4, [r6]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254E74:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD36_02254E30
+
+ thumb_func_start MOD36_02254E78
+MOD36_02254E78: ; 0x02254E78
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02254E88
+ bl MOD36_02254EE4
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254E88:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD36_02254E78
+
+ thumb_func_start MOD36_02254E8C
+MOD36_02254E8C: ; 0x02254E8C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ add r7, r0, #0
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x59
+ bl FUN_02006A34
+ mov r0, #8
+ str r0, [sp]
+ add r0, r7, #0
+ add r0, #0x34
+ mov r1, #0xc
+ mov r2, #0x57
+ mov r3, #0x58
+ bl MOD20_02253FBC
+ add r0, r7, #0
+ str r0, [sp, #0xc]
+ add r0, #0x34
+ ldr r4, _02254EE0 ; =0x02255440
+ mov r6, #0
+ add r5, r7, #0
+ str r0, [sp, #0xc]
+_02254EC6:
+ ldr r0, [r7, #0x20]
+ ldr r2, [sp, #0xc]
+ add r1, r4, #0
+ bl MOD20_02253E74
+ str r0, [r5, #0x24]
+ add r6, r6, #1
+ add r4, #0x10
+ add r5, r5, #4
+ cmp r6, #4
+ blt _02254EC6
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254EE0: .word 0x02255440
+ thumb_func_end MOD36_02254E8C
+
+ thumb_func_start MOD36_02254EE4
+MOD36_02254EE4: ; 0x02254EE4
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+_02254EEC:
+ ldr r1, [r5, #0x24]
+ cmp r1, #0
+ beq _02254EF8
+ ldr r0, [r6, #0x20]
+ bl MOD20_02253F14
+_02254EF8:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _02254EEC
+ add r6, #0x34
+ add r0, r6, #0
+ bl MOD20_02254014
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD36_02254EE4
+
+ thumb_func_start MOD36_02254F0C
+MOD36_02254F0C: ; 0x02254F0C
+ 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, _02254F2C ; =0x02255480
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254F2C: .word 0x02255480
+ thumb_func_end MOD36_02254F0C
+
+ thumb_func_start MOD36_02254F30
+MOD36_02254F30: ; 0x02254F30
+ ldr r3, _02254F38 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254F38: .word MOD20_02253794
+ thumb_func_end MOD36_02254F30
+
+ thumb_func_start MOD36_02254F3C
+MOD36_02254F3C: ; 0x02254F3C
+ ldr r3, _02254F44 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254F44: .word MOD20_022537B8
+ thumb_func_end MOD36_02254F3C
+
+ thumb_func_start MOD36_02254F48
+MOD36_02254F48: ; 0x02254F48
+ 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 MOD36_02254F48
+
+ thumb_func_start MOD36_02254F5C
+MOD36_02254F5C: ; 0x02254F5C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ mov r0, #8
+ add r5, r1, #0
+ bl FUN_02016B90
+ cmp r0, #0
+ bne _02254F70
+ bl ErrorHandling
+_02254F70:
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ ldr r2, _0225502C ; =0x02255408
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #4]
+ ldr r2, _02255030 ; =0x02255424
+ mov r1, #7
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #8
+ bl FUN_02016B90
+ cmp r0, #0
+ bne _02254F9E
+ bl ErrorHandling
+_02254F9E:
+ 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, #0x56
+ mov r3, #6
+ bl FUN_0200687C
+ add r6, 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, [r4, #4]
+ mov r0, #0xc
+ mov r1, #0x55
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ mov r0, #8
+ bl FUN_02016B90
+ cmp r0, #0
+ bne _02254FEA
+ bl ErrorHandling
+_02254FEA:
+ add r0, r4, #0
+ lsr r1, r6, #5
+ bl MOD36_0225503C
+ ldr r0, [r4, #4]
+ mov r1, #7
+ bl FUN_02017CD0
+ ldr r1, _02255034 ; =0x04001000
+ ldr r0, _02255038 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #0x14
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r5, #0
+ bl MOD36_02254F48
+ mov r0, #8
+ bl FUN_02016B90
+ cmp r0, #0
+ bne _02255028
+ bl ErrorHandling
+_02255028:
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_0225502C: .word 0x02255408
+_02255030: .word 0x02255424
+_02255034: .word 0x04001000
+_02255038: .word 0xFFFFE0FF
+ thumb_func_end MOD36_02254F5C
+
+ thumb_func_start MOD36_0225503C
+MOD36_0225503C: ; 0x0225503C
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ ldr r3, _02255098 ; =0x02255400
+ add r4, r0, #0
+ ldrh r5, [r3]
+ add r0, sp, #0
+ add r2, sp, #0
+ strh r5, [r0]
+ ldrh r5, [r3, #2]
+ strh r5, [r0, #2]
+ ldrh r5, [r3, #4]
+ ldrh r3, [r3, #6]
+ strh r5, [r0, #4]
+ strh r3, [r0, #6]
+ str r1, [r4, #0x58]
+ strh r1, [r0, #6]
+ add r1, r4, #0
+ ldr r0, [r4, #4]
+ add r1, #0x48
+ bl FUN_02019150
+ ldr r0, [r4]
+ mov r2, #0xbe
+ ldr r0, [r0, #8]
+ ldr r1, [r4, #0x54]
+ lsl r2, r2, #6
+ bl FUN_0208946C
+ cmp r0, #0
+ bne _02255082
+ add r0, r4, #0
+ add r0, #0x48
+ mov r1, #4
+ bl FUN_02019620
+_02255082:
+ add r0, r4, #0
+ add r0, #0x48
+ bl FUN_02019270
+ add r4, #0x48
+ add r0, r4, #0
+ bl FUN_02019548
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ nop
+_02255098: .word 0x02255400
+ thumb_func_end MOD36_0225503C
+
+ thumb_func_start MOD36_0225509C
+MOD36_0225509C: ; 0x0225509C
+ 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 _022550B8
+ cmp r0, #1
+ beq _022550C4
+ pop {r3, r4, r5, pc}
+_022550B8:
+ mov r0, #1
+ str r0, [r4, #0x5c]
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_022550C4:
+ ldr r0, [r4]
+ mov r2, #0xbe
+ ldr r0, [r0, #8]
+ ldr r1, [r4, #0x54]
+ lsl r2, r2, #6
+ bl FUN_02089444
+ add r0, r4, #0
+ add r0, #0x48
+ bl FUN_02019178
+ 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 MOD36_02254F48
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD36_0225509C
+
+ thumb_func_start MOD36_022550F4
+MOD36_022550F4: ; 0x022550F4
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r0, #0x48
+ bl FUN_02019548
+ add r0, r4, #0
+ bl MOD36_02254F48
+ pop {r4, pc}
+ thumb_func_end MOD36_022550F4
+
+ thumb_func_start MOD36_0225510C
+MOD36_0225510C: ; 0x0225510C
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ ldr r1, [r4]
+ ldr r0, [r1]
+ lsl r2, r0, #1
+ ldr r0, [r1, #4]
+ mov r1, #0x14
+ lsl r3, r0, #1
+ asr r5, r3, #3
+ asr r0, r2, #3
+ mul r1, r5
+ add r5, r0, r1
+ mov r0, #2
+ str r0, [sp]
+ str r0, [sp, #4]
+ add r0, r4, #0
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x10
+ add r0, #0x48
+ mov r1, #1
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x10
+ bl FUN_020196F4
+ ldr r1, [r4, #0x54]
+ lsl r0, r5, #5
+ add r0, r1, r0
+ ldr r1, [r4, #0x58]
+ mov r2, #0x20
+ add r1, r1, r5
+ lsl r1, r1, #5
+ blx GXS_LoadBG3Char
+ add r0, r6, #0
+ bl MOD36_02254F48
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD36_0225510C
+
+ thumb_func_start MOD36_02255164
+MOD36_02255164: ; 0x02255164
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r0, #0x48
+ bl FUN_02019548
+ add r0, r4, #0
+ bl MOD36_02254F48
+ pop {r4, pc}
+ thumb_func_end MOD36_02255164
+
+ thumb_func_start MOD36_0225517C
+MOD36_0225517C: ; 0x0225517C
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A4
+ add r5, r0, #0
+ ldr r0, _022551D4 ; =0x00005B74
+ ldrb r0, [r5, r0]
+ cmp r0, #0
+ beq _0225519C
+ mov r1, #2
+ b _0225519E
+_0225519C:
+ mov r1, #1
+_0225519E:
+ ldr r0, [r4, #0x28]
+ bl MOD20_02253F28
+ ldr r0, _022551D8 ; =0x00005B75
+ ldrb r0, [r5, r0]
+ cmp r0, #0
+ beq _022551B0
+ mov r1, #4
+ b _022551B2
+_022551B0:
+ mov r1, #3
+_022551B2:
+ ldr r0, [r4, #0x2c]
+ bl MOD20_02253F28
+ ldr r0, _022551DC ; =0x00005B76
+ ldrb r0, [r5, r0]
+ cmp r0, #0
+ beq _022551C4
+ mov r1, #6
+ b _022551C6
+_022551C4:
+ mov r1, #5
+_022551C6:
+ ldr r0, [r4, #0x30]
+ bl MOD20_02253F28
+ add r0, r6, #0
+ bl MOD36_02254F48
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_022551D4: .word 0x00005B74
+_022551D8: .word 0x00005B75
+_022551DC: .word 0x00005B76
+ thumb_func_end MOD36_0225517C
+
+ thumb_func_start MOD36_022551E0
+MOD36_022551E0: ; 0x022551E0
+ 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, r4, #0
+ add r0, #0x48
+ mov r1, #4
+ bl FUN_02019620
+ add r4, #0x48
+ add r0, r4, #0
+ bl FUN_02019548
+ add r0, r5, #0
+ bl MOD36_02254F48
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD36_022551E0
+
+ thumb_func_start MOD36_0225520C
+MOD36_0225520C: ; 0x0225520C
+ 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 _02255236
+ ldr r1, [r4, #0x5c]
+ cmp r1, #0
+ beq _02255236
+ add r0, r5, #0
+ bl MOD36_02254F48
+ pop {r3, r4, r5, pc}
+_02255236:
+ cmp r0, #4
+ bls _0225523C
+ b _0225539A
+_0225523C:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02255248: ; jump table
+ .short _02255252 - _02255248 - 2 ; case 0
+ .short _02255286 - _02255248 - 2 ; case 1
+ .short _022552D8 - _02255248 - 2 ; case 2
+ .short _02255322 - _02255248 - 2 ; case 3
+ .short _02255356 - _02255248 - 2 ; case 4
+_02255252:
+ add r0, r4, #0
+ add r0, #0x68
+ ldrh r0, [r0]
+ mov r1, #0x15
+ lsl r1, r1, #4
+ add r2, r0, r1
+ add r0, r4, #0
+ add r0, #0x68
+ strh r2, [r0]
+ add r0, r4, #0
+ add r0, #0x6a
+ strh r1, [r0]
+ add r1, r4, #0
+ add r1, #0x68
+ ldrh r1, [r1]
+ ldr r0, [r4, #0x24]
+ bl MOD20_02253FB4
+ mov r0, #0
+ str r0, [r4, #0x64]
+ str r0, [r4, #0x60]
+ str r0, [r4, #0x5c]
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_02255286:
+ add r0, r4, #0
+ add r0, #0x68
+ ldrh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x6a
+ ldrh r0, [r0]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0x68
+ strh r1, [r0]
+ add r1, r4, #0
+ add r1, #0x68
+ ldrh r1, [r1]
+ ldr r0, [r4, #0x24]
+ bl MOD20_02253FB4
+ add r0, r4, #0
+ add r0, #0x6a
+ ldrh r1, [r0]
+ mov r0, #0x15
+ lsl r0, r0, #4
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0x6a
+ strh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x6a
+ mov r1, #3
+ ldrh r0, [r0]
+ lsl r1, r1, #0xc
+ cmp r0, r1
+ blo _0225539A
+ add r0, r4, #0
+ add r0, #0x6a
+ strh r1, [r0]
+ mov r0, #1
+ str r0, [r4, #0x64]
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_022552D8:
+ add r0, r4, #0
+ add r0, #0x68
+ ldrh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x6a
+ ldrh r0, [r0]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0x68
+ strh r1, [r0]
+ add r1, r4, #0
+ add r1, #0x68
+ ldrh r1, [r1]
+ ldr r0, [r4, #0x24]
+ bl MOD20_02253FB4
+ ldr r0, [r4, #0x60]
+ cmp r0, #0
+ beq _0225539A
+ bl FUN_0201BA60
+ mov r1, #7
+ and r0, r1
+ str r0, [r4, #0x6c]
+ add r0, r4, #0
+ add r0, #0x6a
+ ldrh r1, [r0]
+ mov r0, #0x1a
+ lsl r0, r0, #8
+ cmp r1, r0
+ bls _0225531A
+ add r4, #0x6a
+ strh r0, [r4]
+_0225531A:
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_02255322:
+ add r0, r4, #0
+ add r0, #0x68
+ ldrh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x6a
+ ldrh r0, [r0]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0x68
+ strh r1, [r0]
+ add r1, r4, #0
+ add r1, #0x68
+ ldrh r1, [r1]
+ ldr r0, [r4, #0x24]
+ bl MOD20_02253FB4
+ ldr r0, [r4, #0x6c]
+ cmp r0, #0
+ bne _0225534E
+ sub r0, r0, #1
+ str r0, [r4, #0x6c]
+ pop {r3, r4, r5, pc}
+_0225534E:
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_02255356:
+ add r0, r4, #0
+ add r0, #0x6a
+ ldrh r0, [r0]
+ cmp r0, #0x50
+ bls _0225538E
+ add r0, r4, #0
+ add r0, #0x6a
+ ldrh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x6a
+ sub r1, #0x50
+ strh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x68
+ ldrh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x6a
+ ldrh r0, [r0]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0x68
+ strh r1, [r0]
+ ldr r0, [r4, #0x24]
+ add r4, #0x68
+ ldrh r1, [r4]
+ bl MOD20_02253FB4
+ pop {r3, r4, r5, pc}
+_0225538E:
+ mov r0, #0
+ add r4, #0x6a
+ strh r0, [r4]
+ add r0, r5, #0
+ bl MOD36_02254F48
+_0225539A:
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD36_0225520C
+
+ thumb_func_start MOD36_0225539C
+MOD36_0225539C: ; 0x0225539C
+ 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 _022553BE
+ cmp r0, #1
+ beq _022553CA
+ pop {r3, r4, r5, pc}
+_022553BE:
+ mov r0, #1
+ str r0, [r4, #0x60]
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_022553CA:
+ add r0, r4, #0
+ mov r1, #7
+ bl MOD36_02254F30
+ cmp r0, #0
+ beq _022553E2
+ ldr r0, _022553E4 ; =0x0000066A
+ bl MOD20_02252B28
+ add r0, r5, #0
+ bl MOD36_02254F48
+_022553E2:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022553E4: .word 0x0000066A
+ thumb_func_end MOD36_0225539C
+
+ .section .rodata
+ ; 0x022553E8
+ .incbin "baserom.nds", 0x28fda8, 0x110
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_36.SINIT_START
+ .global SDK_OVERLAY.MODULE_36.SINIT_END
+SDK_OVERLAY.MODULE_36.SINIT_START:
+ .word MOD36_02254840
+ .word 0
+SDK_OVERLAY.MODULE_36.SINIT_END: