summaryrefslogtreecommitdiff
path: root/arm9/modules
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/modules')
-rw-r--r--arm9/modules/01/src/module_01.cpp2
-rw-r--r--arm9/modules/13/asm/module_13_arm2.s14
-rw-r--r--arm9/modules/20/asm/module_20.s8
-rw-r--r--arm9/modules/29/asm/module_29.s10
-rw-r--r--arm9/modules/36/asm/module_36.s6
-rw-r--r--arm9/modules/37/asm/module_37.s681
-rw-r--r--arm9/modules/38/asm/module_38.s1193
-rw-r--r--arm9/modules/39/asm/module_39.s1457
-rw-r--r--arm9/modules/40/asm/module_40.s1417
-rw-r--r--arm9/modules/41/asm/module_41.s2032
10 files changed, 6800 insertions, 20 deletions
diff --git a/arm9/modules/01/src/module_01.cpp b/arm9/modules/01/src/module_01.cpp
index 21b371e0..9da5f8d5 100644
--- a/arm9/modules/01/src/module_01.cpp
+++ b/arm9/modules/01/src/module_01.cpp
@@ -8,4 +8,4 @@ public:
THUMB_FUNC Unk021D7500() { unk4++; }
};
-static class Unk021D7500 UNK_021D7500;
+static Unk021D7500 UNK_021D7500;
diff --git a/arm9/modules/13/asm/module_13_arm2.s b/arm9/modules/13/asm/module_13_arm2.s
index 2e9dd8b5..ad4626d6 100644
--- a/arm9/modules/13/asm/module_13_arm2.s
+++ b/arm9/modules/13/asm/module_13_arm2.s
@@ -5214,7 +5214,7 @@ MOD13_02222D0C: ; 0x02222D0C
sub sp, sp, #4
ldr r0, _02222D74 ; =0x02243048
ldr r0, [r0]
- blx MOD13_02219798
+ bl MOD13_02219798
cmp r0, #0
ldreq r1, _02222D78 ; =0x02243044
moveq r0, #1
@@ -5246,7 +5246,7 @@ _02222D78: .word 0x02243044
MOD13_02222D7C: ; 0x02222D7C
stmdb sp!, {r4, lr}
mov r4, r0
- blx MOD13_02219C9C
+ bl MOD13_02219C9C
cmp r4, #0
beq _02222DC0
ldr r0, _02222DCC ; =0x02243048
@@ -5329,7 +5329,7 @@ _02222E48:
bl OS_GetMacAddress
ldr r0, _02222EE0 ; =MOD13_02222CFC
ldr r1, _02222EE4 ; =MOD13_02222CF0
- blx MOD13_02219D58
+ bl MOD13_02219D58
cmp r0, #0
addeq sp, sp, #0x104
ldmeqia sp!, {pc}
@@ -6270,7 +6270,7 @@ MOD13_02223AF8: ; 0x02223AF8
stmdb sp!, {lr}
sub sp, sp, #0xec
add r0, sp, #0
- blx MOD13_0221A794
+ bl MOD13_0221A794
cmp r0, #1
beq _02223B14
bl OS_Terminate
@@ -6313,7 +6313,7 @@ _02223B7C:
ldmia sp!, {pc}
_02223B88:
add r0, sp, #0
- blx MOD13_0221A794
+ bl MOD13_0221A794
cmp r0, #1
beq _02223B9C
bl OS_Terminate
@@ -6344,7 +6344,7 @@ _02223BDC: .word 0x02243078
MOD13_02223BE0: ; 0x02223BE0
stmdb sp!, {lr}
sub sp, sp, #4
- blx MOD13_0221A7EC
+ bl MOD13_0221A7EC
cmp r0, #1
beq _02223BF8
bl OS_Terminate
@@ -6373,7 +6373,7 @@ MOD13_02223C0C: ; 0x02223C0C
mov r0, #0xf
mov r1, #0x40
str ip, [sp, #4]
- blx MOD13_0221A8A4
+ bl MOD13_0221A8A4
cmp r0, #1
beq _02223C58
bl OS_Terminate
diff --git a/arm9/modules/20/asm/module_20.s b/arm9/modules/20/asm/module_20.s
index 1c3ba821..2975c2d8 100644
--- a/arm9/modules/20/asm/module_20.s
+++ b/arm9/modules/20/asm/module_20.s
@@ -5,10 +5,10 @@
thumb_func_start MOD20_02252440
MOD20_02252440: ; 0x02252440
- ldr r3, _02252444 ; =0x02037791
+ ldr r3, _02252444 ; =FUN_02037790
bx r3
.align 2, 0
-_02252444: .word 0x02037791
+_02252444: .word FUN_02037790
thumb_func_end MOD20_02252440
thumb_func_start MOD20_02252448
@@ -1136,11 +1136,11 @@ _02252C04:
thumb_func_start MOD20_02252C08
MOD20_02252C08: ; 0x02252C08
- ldr r3, _02252C10 ; =0x0204646D
+ ldr r3, _02252C10 ; =FUN_0204646C
ldr r0, [r0, #0x5c]
bx r3
nop
-_02252C10: .word 0x0204646D
+_02252C10: .word FUN_0204646C
thumb_func_end MOD20_02252C08
thumb_func_start MOD20_02252C14
diff --git a/arm9/modules/29/asm/module_29.s b/arm9/modules/29/asm/module_29.s
index db3f5ab8..65873dcc 100644
--- a/arm9/modules/29/asm/module_29.s
+++ b/arm9/modules/29/asm/module_29.s
@@ -383,7 +383,7 @@ _02254AE0:
mul r1, r0
add r0, r2, r1
lsl r0, r0, #0xc
- blx FX_Sqrt
+ bl FX_Sqrt
ldrb r1, [r5, #4]
lsl r2, r1, #2
ldr r1, _02254B6C ; =0x022550A8
@@ -724,13 +724,13 @@ MOD29_02254D10: ; 0x02254D10
add r0, r4, #0
add r0, #0x70
mov r1, #0x20
- blx DC_FlushRange
+ bl DC_FlushRange
add r0, r4, #0
mov r1, #0x1a
add r0, #0x70
lsl r1, r1, #4
mov r2, #0x20
- blx GXS_LoadOBJPltt
+ bl GXS_LoadOBJPltt
add r0, r4, #0
add r0, #0x8e
ldrh r1, [r0]
@@ -740,13 +740,13 @@ MOD29_02254D10: ; 0x02254D10
add r0, r4, #0
add r0, #0x70
mov r1, #0x20
- blx DC_FlushRange
+ bl DC_FlushRange
add r0, r4, #0
mov r1, #7
add r0, #0x70
lsl r1, r1, #6
mov r2, #0x20
- blx GXS_LoadOBJPltt
+ bl GXS_LoadOBJPltt
ldr r0, [r4, #4]
mov r1, #6
bl FUN_02017CD0
diff --git a/arm9/modules/36/asm/module_36.s b/arm9/modules/36/asm/module_36.s
index d15b1d72..47ccf2cc 100644
--- a/arm9/modules/36/asm/module_36.s
+++ b/arm9/modules/36/asm/module_36.s
@@ -632,7 +632,7 @@ _02254CDA:
ldr r0, [sp, #0x28]
sub r0, r0, r4
lsl r0, r0, #0xc
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x10]
b _02254CF0
_02254CEC:
@@ -699,7 +699,7 @@ _02254D54:
add r1, r2, #0
sub r0, r0, r5
lsl r0, r0, #0xc
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #8]
b _02254D6C
_02254D68:
@@ -1225,7 +1225,7 @@ MOD36_0225510C: ; 0x0225510C
mov r2, #0x20
add r1, r1, r5
lsl r1, r1, #5
- blx GXS_LoadBG3Char
+ bl GXS_LoadBG3Char
add r0, r6, #0
bl MOD36_02254F48
add sp, #8
diff --git a/arm9/modules/37/asm/module_37.s b/arm9/modules/37/asm/module_37.s
new file mode 100644
index 00000000..3cbe599b
--- /dev/null
+++ b/arm9/modules/37/asm/module_37.s
@@ -0,0 +1,681 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD37_02254840
+MOD37_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD37_02254854
+ ldr r1, _02254850 ; =MOD37_02254934
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD37_02254854
+_02254850: .word MOD37_02254934
+ thumb_func_end MOD37_02254840
+
+ thumb_func_start MOD37_02254854
+MOD37_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 MOD37_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD37_02254900
+ 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 MOD37_02254900
+ thumb_func_end MOD37_02254854
+
+ thumb_func_start MOD37_0225489C
+MOD37_0225489C: ; 0x0225489C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r1, r5, #0
+ add r6, r2, #0
+ add r0, r3, #0
+ add r1, #8
+ mov r2, #4
+ str r3, [r5, #4]
+ bl FUN_02089418
+ cmp r0, #0
+ bne _022548BA
+ mov r0, #1
+ str r0, [r5, #8]
+_022548BA:
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xc
+ add r1, #8
+ add r2, r6, #0
+ bl MOD37_02254A54
+ cmp r0, #0
+ beq _022548DA
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ str r4, [r5, #0x10]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_022548DA:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD37_0225489C
+
+ thumb_func_start MOD37_022548E0
+MOD37_022548E0: ; 0x022548E0
+ push {r4, lr}
+ add r4, r0, #0
+ add r1, r4, #0
+ ldr r0, [r4, #4]
+ add r1, #8
+ mov r2, #4
+ bl FUN_020893F0
+ ldr r0, [r4, #0xc]
+ bl MOD37_02254B0C
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD37_022548E0
+
+ thumb_func_start MOD37_02254900
+MOD37_02254900: ; 0x02254900
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrb r1, [r4]
+ add r5, r0, #0
+ cmp r1, #3
+ bhs _0225492C
+ lsl r2, r1, #2
+ ldr r1, _02254930 ; =0x02254D28
+ add r0, r4, #0
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _0225492C
+ add r0, r4, #0
+ bl MOD37_022548E0
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x10]
+ bl MOD20_022529A0
+_0225492C:
+ pop {r3, r4, r5, pc}
+ nop
+_02254930: .word 0x02254D28
+ thumb_func_end MOD37_02254900
+
+ thumb_func_start MOD37_02254934
+MOD37_02254934: ; 0x02254934
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD37_02254934
+
+ thumb_func_start MOD37_0225493C
+MOD37_0225493C: ; 0x0225493C
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254944
+ b _02254946
+_02254944:
+ mov r1, #2
+_02254946:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD37_0225493C
+
+ thumb_func_start MOD37_02254950
+MOD37_02254950: ; 0x02254950
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254960
+ cmp r0, #1
+ beq _02254970
+ b _0225498A
+_02254960:
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ bl MOD37_02254B20
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _0225498A
+_02254970:
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ bl MOD37_02254B44
+ cmp r0, #0
+ beq _0225498A
+ ldr r0, [r4, #0x10]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD37_0225493C
+_0225498A:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD37_02254950
+
+ thumb_func_start MOD37_02254990
+MOD37_02254990: ; 0x02254990
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _022549A0
+ mov r1, #2
+ bl MOD37_0225493C
+_022549A0:
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _022549AC
+ cmp r0, #1
+ beq _022549CE
+ b _022549DE
+_022549AC:
+ bl MOD37_02254A18
+ cmp r0, #0
+ beq _022549DE
+ bl FUN_0201BA60
+ mov r1, #1
+ and r0, r1
+ str r0, [r4, #8]
+ ldr r0, [r4, #0xc]
+ mov r1, #2
+ bl MOD37_02254B20
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549DE
+_022549CE:
+ ldr r0, [r4, #0xc]
+ mov r1, #2
+ bl MOD37_02254B44
+ cmp r0, #0
+ beq _022549DE
+ mov r0, #0
+ strb r0, [r4, #1]
+_022549DE:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD37_02254990
+
+ thumb_func_start MOD37_022549E4
+MOD37_022549E4: ; 0x022549E4
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _022549F4
+ cmp r0, #1
+ beq _02254A04
+ b _02254A12
+_022549F4:
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ bl MOD37_02254B20
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A12
+_02254A04:
+ ldr r0, [r4, #0xc]
+ bl MOD37_02254B50
+ cmp r0, #0
+ beq _02254A12
+ mov r0, #1
+ pop {r4, pc}
+_02254A12:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD37_022549E4
+
+ thumb_func_start MOD37_02254A18
+MOD37_02254A18: ; 0x02254A18
+ push {r3, lr}
+ sub sp, #8
+ add r0, sp, #4
+ add r1, sp, #0
+ bl MOD20_02252BB8
+ cmp r0, #0
+ beq _02254A4E
+ ldr r1, [sp, #4]
+ mov r0, #0x70
+ sub r0, r0, r1
+ add r3, r0, #0
+ mul r3, r0
+ ldr r1, [sp]
+ mov r0, #0x90
+ sub r2, r0, r1
+ add r1, r2, #0
+ mul r1, r2
+ str r1, [sp]
+ add r1, r3, r1
+ lsl r0, r0, #2
+ str r3, [sp, #4]
+ cmp r1, r0
+ bhs _02254A4E
+ add sp, #8
+ mov r0, #1
+ pop {r3, pc}
+_02254A4E:
+ mov r0, #0
+ add sp, #8
+ pop {r3, pc}
+ thumb_func_end MOD37_02254A18
+
+ thumb_func_start MOD37_02254A54
+MOD37_02254A54: ; 0x02254A54
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x48
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254A94
+ 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]
+ add r0, r4, #0
+ bl MOD37_02254AA0
+ ldr r1, _02254A98 ; =0xFFFF5800
+ ldr r0, _02254A9C ; =0x02254DA0
+ str r1, [r0]
+ mov r1, #0xb
+ lsl r1, r1, #8
+ str r1, [r0, #4]
+ str r4, [r5]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254A94:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02254A98: .word 0xFFFF5800
+_02254A9C: .word 0x02254DA0
+ thumb_func_end MOD37_02254A54
+
+ thumb_func_start MOD37_02254AA0
+MOD37_02254AA0: ; 0x02254AA0
+ push {r3, r4, lr}
+ sub sp, #0xc
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ add r4, r0, #0
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x39
+ bl FUN_02006A34
+ mov r0, #8
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0x28
+ mov r1, #0xc
+ mov r2, #0x37
+ mov r3, #0x38
+ bl MOD20_02253FBC
+ add r2, r4, #0
+ ldr r0, [r4, #0x20]
+ ldr r1, _02254AF0 ; =0x02254D34
+ add r2, #0x28
+ bl MOD20_02253E74
+ str r0, [r4, #0x24]
+ ldr r0, [r4]
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _02254AEA
+ ldr r0, [r4, #0x24]
+ mov r1, #2
+ bl MOD20_02253F28
+_02254AEA:
+ add sp, #0xc
+ pop {r3, r4, pc}
+ nop
+_02254AF0: .word 0x02254D34
+ thumb_func_end MOD37_02254AA0
+
+ thumb_func_start MOD37_02254AF4
+MOD37_02254AF4: ; 0x02254AF4
+ 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 MOD37_02254AF4
+
+ thumb_func_start MOD37_02254B0C
+MOD37_02254B0C: ; 0x02254B0C
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02254B1C
+ bl MOD37_02254AF4
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254B1C:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD37_02254B0C
+
+ thumb_func_start MOD37_02254B20
+MOD37_02254B20: ; 0x02254B20
+ 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, _02254B40 ; =0x02254D60
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254B40: .word 0x02254D60
+ thumb_func_end MOD37_02254B20
+
+ thumb_func_start MOD37_02254B44
+MOD37_02254B44: ; 0x02254B44
+ ldr r3, _02254B4C ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254B4C: .word MOD20_02253794
+ thumb_func_end MOD37_02254B44
+
+ thumb_func_start MOD37_02254B50
+MOD37_02254B50: ; 0x02254B50
+ ldr r3, _02254B58 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254B58: .word MOD20_022537B8
+ thumb_func_end MOD37_02254B50
+
+ thumb_func_start MOD37_02254B5C
+MOD37_02254B5C: ; 0x02254B5C
+ 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 MOD37_02254B5C
+
+ thumb_func_start MOD37_02254B70
+MOD37_02254B70: ; 0x02254B70
+ 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, _02254BF4 ; =0x02254D44
+ 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, #0x36
+ 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, #0x35
+ 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, _02254BF8 ; =0x04001000
+ ldr r0, _02254BFC ; =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 MOD37_02254B5C
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_02254BF4: .word 0x02254D44
+_02254BF8: .word 0x04001000
+_02254BFC: .word 0xFFFFE0FF
+ thumb_func_end MOD37_02254B70
+
+ thumb_func_start MOD37_02254C00
+MOD37_02254C00: ; 0x02254C00
+ 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 _02254C1C
+ cmp r0, #1
+ beq _02254C26
+ pop {r3, r4, r5, pc}
+_02254C1C:
+ mov r0, #1
+ str r0, [r4, #0x44]
+ add r0, r5, #0
+ bl MOD20_022538B0
+_02254C26:
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD37_02254B44
+ cmp r0, #0
+ beq _02254C40
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r5, #0
+ bl MOD37_02254B5C
+_02254C40:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD37_02254C00
+
+ thumb_func_start MOD37_02254C44
+MOD37_02254C44: ; 0x02254C44
+ 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, #0
+ beq _02254C6C
+ cmp r0, #1
+ beq _02254C90
+ cmp r0, #2
+ beq _02254D10
+ pop {r4, r5, r6, pc}
+_02254C6C:
+ ldr r0, _02254D18 ; =0x00000675
+ bl MOD20_02252B28
+ ldr r0, [r4, #0x24]
+ mov r1, #0
+ bl MOD20_02253F28
+ mov r0, #9
+ lsl r0, r0, #0x10
+ str r0, [r4, #0x3c]
+ ldr r0, _02254D1C ; =0x02254DA0
+ ldr r0, [r0]
+ str r0, [r4, #0x40]
+ mov r0, #0
+ str r0, [r4, #0x44]
+ add r0, r5, #0
+ bl MOD20_022538B0
+_02254C90:
+ ldr r0, [r4, #0x44]
+ cmp r0, #0
+ beq _02254C9E
+ add r0, r5, #0
+ bl MOD37_02254B5C
+ pop {r4, r5, r6, pc}
+_02254C9E:
+ ldr r1, [r4, #0x3c]
+ ldr r0, [r4, #0x40]
+ add r0, r1, r0
+ str r0, [r4, #0x3c]
+ ldr r0, _02254D1C ; =0x02254DA0
+ ldr r1, [r4, #0x40]
+ ldr r0, [r0, #4]
+ add r1, r1, r0
+ str r1, [r4, #0x40]
+ cmp r1, #0
+ ble _02254D02
+ mov r0, #9
+ ldr r2, [r4, #0x3c]
+ lsl r0, r0, #0x10
+ cmp r2, r0
+ blt _02254D02
+ mov r0, #0x38
+ mul r0, r1
+ mov r1, #0x64
+ bl _s32_div_f
+ neg r1, r0
+ ldr r0, _02254D20 ; =0xFFFFE000
+ str r1, [r4, #0x40]
+ cmp r1, r0
+ ldr r0, _02254D24 ; =0x00000676
+ bge _02254CE0
+ bl MOD20_02252B28
+ mov r0, #9
+ lsl r0, r0, #0x10
+ str r0, [r4, #0x3c]
+ b _02254D02
+_02254CE0:
+ bl MOD20_02252B28
+ ldr r0, [r6]
+ cmp r0, #0
+ beq _02254CEE
+ mov r1, #1
+ b _02254CF0
+_02254CEE:
+ mov r1, #2
+_02254CF0:
+ ldr r0, [r4, #0x24]
+ bl MOD20_02253F28
+ mov r0, #9
+ lsl r0, r0, #0x10
+ str r0, [r4, #0x3c]
+ add r0, r5, #0
+ bl MOD20_022538B0
+_02254D02:
+ mov r1, #7
+ ldr r0, [r4, #0x24]
+ ldr r2, [r4, #0x3c]
+ lsl r1, r1, #0x10
+ bl MOD20_02253F64
+ pop {r4, r5, r6, pc}
+_02254D10:
+ add r0, r5, #0
+ bl MOD37_02254B5C
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02254D18: .word 0x00000675
+_02254D1C: .word 0x02254DA0
+_02254D20: .word 0xFFFFE000
+_02254D24: .word 0x00000676
+ thumb_func_end MOD37_02254C44
+
+ .section .rodata
+ ; 0x02254D28
+ .incbin "baserom.nds", 0x2904E8, 0x68
+
+ .section .sinit
+ .word MOD37_02254840
+
+ .section .bss
+ ; 0x02254DA0
+ .space 8
diff --git a/arm9/modules/38/asm/module_38.s b/arm9/modules/38/asm/module_38.s
new file mode 100644
index 00000000..e6f0160a
--- /dev/null
+++ b/arm9/modules/38/asm/module_38.s
@@ -0,0 +1,1193 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD38_02254840
+MOD38_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD38_02254854
+ ldr r1, _02254850 ; =MOD38_02254990
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD38_02254854
+_02254850: .word MOD38_02254990
+ thumb_func_end MOD38_02254840
+
+ thumb_func_start MOD38_02254854
+MOD38_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x24
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD38_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD38_0225494C
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word MOD38_0225494C
+ thumb_func_end MOD38_02254854
+
+ thumb_func_start MOD38_0225489C
+MOD38_0225489C: ; 0x0225489C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r4, r1, #0
+ add r1, r5, #0
+ add r6, r2, #0
+ add r0, r3, #0
+ add r1, #8
+ mov r2, #0xc
+ str r3, [r5, #4]
+ bl FUN_02089418
+ cmp r0, #0
+ bne _022548C0
+ add r0, r5, #0
+ add r0, #8
+ bl MOD38_02254908
+_022548C0:
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0x14
+ add r1, #8
+ add r2, r6, #0
+ bl MOD38_02254BC4
+ cmp r0, #0
+ beq _022548F8
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _02254900 ; =0x0225511C
+ ldr r2, _02254904 ; =MOD38_02254988
+ mov r1, #6
+ add r3, r5, #0
+ bl MOD20_02254130
+ str r0, [r5, #0x1c]
+ mov r0, #0
+ str r0, [r5, #0x20]
+ add sp, #4
+ str r4, [r5, #0x18]
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_022548F8:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02254900: .word 0x0225511C
+_02254904: .word MOD38_02254988
+ thumb_func_end MOD38_0225489C
+
+ thumb_func_start MOD38_02254908
+MOD38_02254908: ; 0x02254908
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [r4]
+ strh r0, [r4, #6]
+ strh r0, [r4, #8]
+ mov r0, #0x12
+ strh r0, [r4, #0xa]
+ ldrh r0, [r4, #6]
+ ldrh r1, [r4, #8]
+ ldrh r2, [r4, #0xa]
+ bl MOD38_02254B2C
+ strh r0, [r4, #4]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD38_02254908
+
+ thumb_func_start MOD38_02254928
+MOD38_02254928: ; 0x02254928
+ push {r4, lr}
+ add r4, r0, #0
+ add r1, r4, #0
+ ldr r0, [r4, #4]
+ add r1, #8
+ mov r2, #0xc
+ bl FUN_020893F0
+ ldr r0, [r4, #0x1c]
+ bl MOD20_02254198
+ ldr r0, [r4, #0x14]
+ bl MOD38_02254D04
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD38_02254928
+
+ thumb_func_start MOD38_0225494C
+MOD38_0225494C: ; 0x0225494C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #3
+ bhs _02254982
+ ldr r0, [r4, #0x18]
+ ldr r1, [r4, #0x1c]
+ bl MOD20_02252C14
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _02254984 ; =0x02255110
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254982
+ add r0, r4, #0
+ bl MOD38_02254928
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x18]
+ bl MOD20_022529A0
+_02254982:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02254984: .word 0x02255110
+ thumb_func_end MOD38_0225494C
+
+ thumb_func_start MOD38_02254988
+MOD38_02254988: ; 0x02254988
+ str r0, [r3, #8]
+ str r1, [r3, #0x20]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD38_02254988
+
+ thumb_func_start MOD38_02254990
+MOD38_02254990: ; 0x02254990
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD38_02254990
+
+ thumb_func_start MOD38_02254998
+MOD38_02254998: ; 0x02254998
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _022549A0
+ b _022549A2
+_022549A0:
+ mov r1, #2
+_022549A2:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD38_02254998
+
+ thumb_func_start MOD38_022549AC
+MOD38_022549AC: ; 0x022549AC
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _022549BC
+ cmp r0, #1
+ beq _022549CC
+ b _022549E6
+_022549BC:
+ ldr r0, [r4, #0x14]
+ mov r1, #0
+ bl MOD38_02254D34
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549E6
+_022549CC:
+ ldr r0, [r4, #0x14]
+ mov r1, #0
+ bl MOD38_02254D58
+ cmp r0, #0
+ beq _022549E6
+ ldr r0, [r4, #0x18]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD38_02254998
+_022549E6:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD38_022549AC
+
+ thumb_func_start MOD38_022549EC
+MOD38_022549EC: ; 0x022549EC
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #2]
+ cmp r0, #0
+ beq _02254A0C
+ ldr r0, [r4, #0x14]
+ bl MOD38_02254D64
+ cmp r0, #0
+ beq _02254A08
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD38_02254998
+_02254A08:
+ mov r0, #0
+ pop {r4, pc}
+_02254A0C:
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A1C
+ cmp r0, #1
+ beq _02254A32
+ cmp r0, #2
+ beq _02254AE4
+ b _02254AF2
+_02254A1C:
+ ldr r0, [r4, #0x20]
+ cmp r0, #1
+ bne _02254AF2
+ ldr r0, [r4, #0x14]
+ mov r1, #2
+ bl MOD38_02254D34
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254AF2
+_02254A32:
+ ldr r0, [r4, #0x20]
+ cmp r0, #2
+ bne _02254A46
+ ldr r0, [r4, #0x14]
+ mov r1, #3
+ bl MOD38_02254D34
+ mov r0, #0
+ strb r0, [r4, #1]
+ b _02254AF2
+_02254A46:
+ cmp r0, #3
+ bne _02254AF2
+ ldr r0, [r4, #8]
+ cmp r0, #5
+ bhi _02254AC0
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02254A5C: ; jump table
+ .short _02254A68 - _02254A5C - 2 ; case 0
+ .short _02254A78 - _02254A5C - 2 ; case 1
+ .short _02254A86 - _02254A5C - 2 ; case 2
+ .short _02254A96 - _02254A5C - 2 ; case 3
+ .short _02254AA4 - _02254A5C - 2 ; case 4
+ .short _02254AB4 - _02254A5C - 2 ; case 5
+_02254A68:
+ ldrh r0, [r4, #0xe]
+ mov r1, #0
+ mvn r1, r1
+ mov r2, #0
+ bl MOD38_02254B6C
+ strh r0, [r4, #0xe]
+ b _02254AC0
+_02254A78:
+ ldrh r0, [r4, #0xe]
+ mov r1, #1
+ mov r2, #0
+ bl MOD38_02254B6C
+ strh r0, [r4, #0xe]
+ b _02254AC0
+_02254A86:
+ ldrh r0, [r4, #0x10]
+ mov r1, #0
+ mvn r1, r1
+ mov r2, #0
+ bl MOD38_02254B6C
+ strh r0, [r4, #0x10]
+ b _02254AC0
+_02254A96:
+ ldrh r0, [r4, #0x10]
+ mov r1, #1
+ mov r2, #0
+ bl MOD38_02254B6C
+ strh r0, [r4, #0x10]
+ b _02254AC0
+_02254AA4:
+ ldrh r0, [r4, #0x12]
+ mov r1, #0
+ mvn r1, r1
+ mov r2, #1
+ bl MOD38_02254B6C
+ strh r0, [r4, #0x12]
+ b _02254AC0
+_02254AB4:
+ ldrh r0, [r4, #0x12]
+ mov r1, #1
+ add r2, r1, #0
+ bl MOD38_02254B6C
+ strh r0, [r4, #0x12]
+_02254AC0:
+ ldrh r0, [r4, #0xe]
+ ldrh r1, [r4, #0x10]
+ ldrh r2, [r4, #0x12]
+ bl MOD38_02254B2C
+ strh r0, [r4, #0xc]
+ ldr r0, [r4, #0x14]
+ mov r1, #3
+ bl MOD38_02254D34
+ ldr r0, [r4, #0x14]
+ mov r1, #4
+ bl MOD38_02254D34
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254AF2
+_02254AE4:
+ ldr r0, [r4, #0x14]
+ bl MOD38_02254D64
+ cmp r0, #0
+ beq _02254AF2
+ mov r0, #0
+ strb r0, [r4, #1]
+_02254AF2:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD38_022549EC
+
+ thumb_func_start MOD38_02254AF8
+MOD38_02254AF8: ; 0x02254AF8
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254B08
+ cmp r0, #1
+ beq _02254B18
+ b _02254B26
+_02254B08:
+ ldr r0, [r4, #0x14]
+ mov r1, #1
+ bl MOD38_02254D34
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254B26
+_02254B18:
+ ldr r0, [r4, #0x14]
+ bl MOD38_02254D64
+ cmp r0, #0
+ beq _02254B26
+ mov r0, #1
+ pop {r4, pc}
+_02254B26:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD38_02254AF8
+
+ thumb_func_start MOD38_02254B2C
+MOD38_02254B2C: ; 0x02254B2C
+ push {r4, r5}
+ ldr r5, _02254B68 ; =0x02255134
+ mov r3, #0x12
+ add r4, r0, #0
+ mul r4, r3
+ add r4, r5, r4
+ add r0, r3, #0
+ ldrsb r5, [r4, r1]
+ sub r0, #0x1c
+ cmp r5, r0
+ beq _02254B4E
+ cmp r2, #0x12
+ beq _02254B54
+ ldrsb r0, [r4, r2]
+ sub r3, #0x1c
+ cmp r0, r3
+ bne _02254B54
+_02254B4E:
+ mov r0, #0
+ pop {r4, r5}
+ bx lr
+_02254B54:
+ mov r0, #3
+ add r0, r0, r5
+ cmp r2, #0x12
+ beq _02254B64
+ cmp r2, r1
+ beq _02254B64
+ ldrsb r1, [r4, r2]
+ add r0, r0, r1
+_02254B64:
+ pop {r4, r5}
+ bx lr
+ .align 2, 0
+_02254B68: .word 0x02255134
+ thumb_func_end MOD38_02254B2C
+
+ thumb_func_start MOD38_02254B6C
+MOD38_02254B6C: ; 0x02254B6C
+ push {r4, r5}
+ ldr r5, _02254BC0 ; =0x02255278
+ mov r4, #0
+_02254B72:
+ ldrb r3, [r5]
+ cmp r3, r0
+ beq _02254B80
+ add r4, r4, #1
+ add r5, r5, #1
+ cmp r4, #0x11
+ blo _02254B72
+_02254B80:
+ cmp r4, #0x11
+ bne _02254B94
+ cmp r1, #0
+ ble _02254B8E
+ mov r0, #0
+ pop {r4, r5}
+ bx lr
+_02254B8E:
+ mov r0, #8
+ pop {r4, r5}
+ bx lr
+_02254B94:
+ add r4, r4, r1
+ cmp r4, #0x11
+ blt _02254BA6
+ cmp r2, #0
+ beq _02254BA4
+ mov r0, #0x12
+ pop {r4, r5}
+ bx lr
+_02254BA4:
+ mov r4, #0
+_02254BA6:
+ cmp r4, #0
+ bge _02254BB6
+ cmp r2, #0
+ beq _02254BB4
+ mov r0, #0x12
+ pop {r4, r5}
+ bx lr
+_02254BB4:
+ mov r4, #0x10
+_02254BB6:
+ ldr r0, _02254BC0 ; =0x02255278
+ ldrb r0, [r0, r4]
+ pop {r4, r5}
+ bx lr
+ nop
+_02254BC0: .word 0x02255278
+ thumb_func_end MOD38_02254B6C
+
+ thumb_func_start MOD38_02254BC4
+MOD38_02254BC4: ; 0x02254BC4
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0xc0
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254C2A
+ add r0, #8
+ mov r1, #8
+ bl MOD20_022536F4
+ str r6, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ bl MOD20_02252D24
+ str r0, [r4, #0x30]
+ ldr r2, _02254C30 ; =0x00000235
+ mov r0, #1
+ mov r1, #0x1a
+ mov r3, #8
+ bl FUN_0200A86C
+ add r1, r4, #0
+ add r1, #0xb4
+ str r0, [r1]
+ ldr r2, _02254C34 ; =0x00000195
+ mov r0, #1
+ mov r1, #0x1a
+ mov r3, #8
+ bl FUN_0200A86C
+ add r1, r4, #0
+ add r1, #0xb8
+ str r0, [r1]
+ mov r0, #0x80
+ mov r1, #8
+ bl FUN_020219F4
+ add r1, r4, #0
+ add r1, #0xbc
+ str r0, [r1]
+ add r0, r4, #0
+ bl MOD38_02254C38
+ str r4, [r5]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254C2A:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ nop
+_02254C30: .word 0x00000235
+_02254C34: .word 0x00000195
+ thumb_func_end MOD38_02254BC4
+
+ thumb_func_start MOD38_02254C38
+MOD38_02254C38: ; 0x02254C38
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ add r6, r0, #0
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x40
+ bl FUN_02006A34
+ mov r0, #8
+ str r0, [sp]
+ add r0, r6, #0
+ add r0, #0x60
+ mov r1, #0xc
+ mov r2, #0x3e
+ mov r3, #0x3f
+ bl MOD20_02253FBC
+ add r0, r6, #0
+ str r0, [sp, #0xc]
+ add r0, #0x60
+ ldr r4, _02254CBC ; =0x02255300
+ mov r7, #0
+ add r5, r6, #0
+ str r0, [sp, #0xc]
+_02254C72:
+ ldr r0, [r6, #0x30]
+ ldr r2, [sp, #0xc]
+ add r1, r4, #0
+ bl MOD20_02253E74
+ str r0, [r5, #0x34]
+ add r7, r7, #1
+ add r4, #0x10
+ add r5, r5, #4
+ cmp r7, #6
+ blt _02254C72
+ add r0, r6, #0
+ str r0, [sp, #0x10]
+ add r0, #0x60
+ mov r7, #0
+ add r4, r6, #0
+ mov r5, #0x2c
+ str r0, [sp, #0x10]
+_02254C96:
+ ldr r0, [r6, #0x30]
+ ldr r1, _02254CC0 ; =0x0225528C
+ ldr r2, [sp, #0x10]
+ bl MOD20_02253E74
+ mov r2, #3
+ lsl r1, r5, #0xc
+ lsl r2, r2, #0x10
+ str r0, [r4, #0x4c]
+ bl MOD20_02253F64
+ add r7, r7, #1
+ add r4, r4, #4
+ add r5, #8
+ cmp r7, #5
+ blt _02254C96
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02254CBC: .word 0x02255300
+_02254CC0: .word 0x0225528C
+ thumb_func_end MOD38_02254C38
+
+ thumb_func_start MOD38_02254CC4
+MOD38_02254CC4: ; 0x02254CC4
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r6, #0
+ add r4, r5, #0
+_02254CCC:
+ ldr r1, [r4, #0x34]
+ cmp r1, #0
+ beq _02254CD8
+ ldr r0, [r5, #0x30]
+ bl MOD20_02253F14
+_02254CD8:
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #6
+ blt _02254CCC
+ mov r6, #0
+ add r4, r5, #0
+_02254CE4:
+ ldr r1, [r4, #0x4c]
+ cmp r1, #0
+ beq _02254CF0
+ ldr r0, [r5, #0x30]
+ bl MOD20_02253F14
+_02254CF0:
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #5
+ blt _02254CE4
+ add r5, #0x60
+ add r0, r5, #0
+ bl MOD20_02254014
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD38_02254CC4
+
+ thumb_func_start MOD38_02254D04
+MOD38_02254D04: ; 0x02254D04
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02254D32
+ add r0, #0xbc
+ ldr r0, [r0]
+ bl FUN_02021A20
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ bl FUN_0200A8B8
+ add r0, r4, #0
+ add r0, #0xb8
+ ldr r0, [r0]
+ bl FUN_0200A8B8
+ add r0, r4, #0
+ bl MOD38_02254CC4
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254D32:
+ pop {r4, pc}
+ thumb_func_end MOD38_02254D04
+
+ thumb_func_start MOD38_02254D34
+MOD38_02254D34: ; 0x02254D34
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254D54 ; =0x022552B8
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254D54: .word 0x022552B8
+ thumb_func_end MOD38_02254D34
+
+ thumb_func_start MOD38_02254D58
+MOD38_02254D58: ; 0x02254D58
+ ldr r3, _02254D60 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254D60: .word MOD20_02253794
+ thumb_func_end MOD38_02254D58
+
+ thumb_func_start MOD38_02254D64
+MOD38_02254D64: ; 0x02254D64
+ ldr r3, _02254D6C ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254D6C: .word MOD20_022537B8
+ thumb_func_end MOD38_02254D64
+
+ thumb_func_start MOD38_02254D70
+MOD38_02254D70: ; 0x02254D70
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD38_02254D70
+
+ thumb_func_start MOD38_02254D84
+MOD38_02254D84: ; 0x02254D84
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A4
+ add r7, r0, #0
+ ldr r0, [r5, #4]
+ ldr r2, _02254E1C ; =0x0225529C
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x3d
+ mov r3, #6
+ bl FUN_0200687C
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x3c
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ add r0, r5, #0
+ add r1, r7, #0
+ lsr r2, r4, #5
+ bl MOD38_02254E28
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, _02254E20 ; =0x04001000
+ ldr r0, _02254E24 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #4
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r6, #0
+ bl MOD38_02254D70
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02254E1C: .word 0x0225529C
+_02254E20: .word 0x04001000
+_02254E24: .word 0xFFFFE0FF
+ thumb_func_end MOD38_02254D84
+
+ thumb_func_start MOD38_02254E28
+MOD38_02254E28: ; 0x02254E28
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ mov r0, #0xf
+ add r4, r2, #0
+ str r0, [sp]
+ mov r2, #6
+ str r2, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ add r6, r1, #0
+ str r0, [sp, #0x10]
+ add r1, r5, #0
+ ldr r0, [r5, #4]
+ add r1, #0x74
+ add r3, r2, #0
+ bl FUN_02019064
+ mov r0, #4
+ str r0, [sp]
+ mov r2, #6
+ add r1, r5, #0
+ str r2, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ add r0, #0xc
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #4]
+ add r1, #0x84
+ mov r3, #0x10
+ bl FUN_02019064
+ mov r0, #8
+ str r0, [sp]
+ mov r2, #6
+ add r1, r5, #0
+ str r2, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ add r0, #0x18
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #4]
+ add r1, #0x94
+ mov r3, #0x10
+ bl FUN_02019064
+ mov r0, #0x13
+ str r0, [sp]
+ mov r0, #0x16
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r5, #0
+ add r4, #0x24
+ str r0, [sp, #0xc]
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #4]
+ add r1, #0xa4
+ mov r2, #6
+ mov r3, #3
+ bl FUN_02019064
+ add r0, r5, #0
+ add r0, #0x74
+ bl FUN_02019270
+ add r0, r5, #0
+ add r0, #0x84
+ bl FUN_02019270
+ add r0, r5, #0
+ add r0, #0x94
+ bl FUN_02019270
+ add r0, r5, #0
+ add r0, #0xa4
+ bl FUN_02019270
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD38_02254FCC
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD38_02254E28
+
+ thumb_func_start MOD38_02254EF4
+MOD38_02254EF4: ; 0x02254EF4
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x74
+ bl FUN_02019178
+ add r0, r4, #0
+ add r0, #0x84
+ bl FUN_02019178
+ add r0, r4, #0
+ add r0, #0x94
+ bl FUN_02019178
+ add r4, #0xa4
+ add r0, r4, #0
+ bl FUN_02019178
+ pop {r4, pc}
+ thumb_func_end MOD38_02254EF4
+
+ thumb_func_start MOD38_02254F18
+MOD38_02254F18: ; 0x02254F18
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ bl MOD38_02254EF4
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r5, #0
+ bl MOD38_02254D70
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD38_02254F18
+
+ thumb_func_start MOD38_02254F38
+MOD38_02254F38: ; 0x02254F38
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ ldr r2, [r0]
+ mov r1, #1
+ add r0, r2, #0
+ tst r0, r1
+ beq _02254F56
+ mov r1, #3
+_02254F56:
+ lsl r0, r2, #2
+ add r0, r4, r0
+ ldr r0, [r0, #0x34]
+ bl MOD20_02253F28
+ ldr r0, _02254F70 ; =0x00000663
+ bl MOD20_02252B28
+ add r0, r5, #0
+ bl MOD38_02254D70
+ pop {r3, r4, r5, pc}
+ nop
+_02254F70: .word 0x00000663
+ thumb_func_end MOD38_02254F38
+
+ thumb_func_start MOD38_02254F74
+MOD38_02254F74: ; 0x02254F74
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ ldr r2, [r0]
+ mov r0, #1
+ tst r0, r2
+ beq _02254F92
+ mov r1, #2
+ b _02254F94
+_02254F92:
+ mov r1, #0
+_02254F94:
+ lsl r0, r2, #2
+ add r0, r4, r0
+ ldr r0, [r0, #0x34]
+ bl MOD20_02253F28
+ add r0, r5, #0
+ bl MOD38_02254D70
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD38_02254F74
+
+ thumb_func_start MOD38_02254FA8
+MOD38_02254FA8: ; 0x02254FA8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD38_02254FCC
+ add r0, r5, #0
+ bl MOD38_02254D70
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD38_02254FA8
+
+ thumb_func_start MOD38_02254FCC
+MOD38_02254FCC: ; 0x02254FCC
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r1, r5, #0
+ ldrh r2, [r4, #6]
+ add r1, #0x74
+ bl MOD38_0225500C
+ add r1, r5, #0
+ ldrh r2, [r4, #8]
+ add r0, r5, #0
+ add r1, #0x84
+ bl MOD38_0225500C
+ add r1, r5, #0
+ ldrh r2, [r4, #0xa]
+ add r0, r5, #0
+ add r1, #0x94
+ bl MOD38_0225500C
+ add r1, r5, #0
+ ldrh r2, [r4, #4]
+ add r0, r5, #0
+ add r1, #0xa4
+ bl MOD38_02255084
+ ldrh r1, [r4, #4]
+ add r0, r5, #0
+ bl MOD38_022550D0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD38_02254FCC
+
+ thumb_func_start MOD38_0225500C
+MOD38_0225500C: ; 0x0225500C
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ mov r1, #4
+ add r6, r2, #0
+ bl FUN_02019620
+ cmp r6, #0x12
+ bne _02255036
+ add r0, r5, #0
+ add r2, r5, #0
+ add r0, #0xb8
+ add r2, #0xbc
+ ldr r0, [r0]
+ ldr r2, [r2]
+ mov r1, #6
+ bl FUN_0200A8E0
+ b _02255048
+_02255036:
+ add r0, r5, #0
+ add r2, r5, #0
+ add r0, #0xb4
+ add r2, #0xbc
+ ldr r0, [r0]
+ ldr r2, [r2]
+ add r1, r6, #0
+ bl FUN_0200A8E0
+_02255048:
+ add r1, r5, #0
+ add r1, #0xbc
+ mov r0, #0
+ ldr r1, [r1]
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0
+ add r3, r0, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02255080 ; =0x00010104
+ add r5, #0xbc
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r2, [r5]
+ mov r5, #0x30
+ sub r3, r5, r3
+ add r0, r4, #0
+ lsr r3, r3, #1
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl FUN_02019548
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02255080: .word 0x00010104
+ thumb_func_end MOD38_0225500C
+
+ thumb_func_start MOD38_02255084
+MOD38_02255084: ; 0x02255084
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ mov r1, #4
+ add r6, r2, #0
+ bl FUN_02019620
+ add r0, r5, #0
+ add r2, r5, #0
+ add r0, #0xb8
+ add r2, #0xbc
+ ldr r0, [r0]
+ ldr r2, [r2]
+ add r1, r6, #0
+ bl FUN_0200A8E0
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _022550CC ; =0x00010104
+ add r5, #0xbc
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r2, [r5]
+ add r0, r4, #0
+ add r3, r1, #0
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl FUN_02019548
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_022550CC: .word 0x00010104
+ thumb_func_end MOD38_02255084
+
+ thumb_func_start MOD38_022550D0
+MOD38_022550D0: ; 0x022550D0
+ push {r3, r4, r5, r6, r7, lr}
+ str r0, [sp]
+ add r6, r1, #0
+ ldr r4, _0225510C ; =0x00000000
+ beq _022550EE
+ add r5, r0, #0
+ mov r7, #4
+_022550DE:
+ ldr r0, [r5, #0x4c]
+ add r1, r7, #0
+ bl MOD20_02253F28
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, r6
+ blo _022550DE
+_022550EE:
+ cmp r4, #5
+ bhs _0225510A
+ ldr r0, [sp]
+ lsl r1, r4, #2
+ add r5, r0, r1
+ mov r6, #5
+_022550FA:
+ ldr r0, [r5, #0x4c]
+ add r1, r6, #0
+ bl MOD20_02253F28
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #5
+ blo _022550FA
+_0225510A:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0225510C: .word 0x00000000
+ thumb_func_end MOD38_022550D0
+
+ .section .rodata
+ ; 0x02255110
+ .incbin "baserom.nds", 0x290ED0, 0x250
+
+ .section .sinit
+ .word MOD38_02254840
diff --git a/arm9/modules/39/asm/module_39.s b/arm9/modules/39/asm/module_39.s
new file mode 100644
index 00000000..c5946d62
--- /dev/null
+++ b/arm9/modules/39/asm/module_39.s
@@ -0,0 +1,1457 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD39_02254840
+MOD39_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD39_02254854
+ ldr r1, _02254850 ; =MOD39_022549D4
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD39_02254854
+_02254850: .word MOD39_022549D4
+ thumb_func_end MOD39_02254840
+
+ thumb_func_start MOD39_02254854
+MOD39_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x68
+ 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 MOD39_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD39_02254998
+ 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 MOD39_02254998
+ thumb_func_end MOD39_02254854
+
+ thumb_func_start MOD39_0225489C
+MOD39_0225489C: ; 0x0225489C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ str r0, [sp, #4]
+ add r0, r1, #0
+ str r1, [sp, #8]
+ str r2, [sp, #0xc]
+ bl MOD20_02252C40
+ bl FUN_0206BB1C
+ str r0, [sp, #0x10]
+ bl FUN_0206B9AC
+ ldr r1, [sp, #4]
+ mov r6, #0
+ add r1, #0x34
+ strb r0, [r1]
+ ldr r0, [sp, #4]
+ add r0, #0x34
+ ldrb r0, [r0]
+ cmp r0, #0
+ ble _02254906
+ ldr r4, [sp, #4]
+ add r5, r4, #0
+_022548CC:
+ ldr r0, [sp, #0x10]
+ add r1, r6, #0
+ bl FUN_0206B9B0
+ add r7, r0, #0
+ bl FUN_0206B688
+ str r0, [r4, #4]
+ add r0, r7, #0
+ mov r1, #5
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r5, #0x1c]
+ add r0, r7, #0
+ mov r1, #0x70
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r5, #0x28]
+ ldr r0, [sp, #4]
+ str r7, [r4, #0x48]
+ add r0, #0x34
+ ldrb r0, [r0]
+ add r6, r6, #1
+ add r4, r4, #4
+ add r5, r5, #2
+ cmp r6, r0
+ blt _022548CC
+_02254906:
+ ldr r0, [sp, #4]
+ mov r1, #0
+ add r0, #0x36
+ strb r1, [r0]
+ ldr r0, [sp, #4]
+ add r0, #0x34
+ ldrb r0, [r0]
+ cmp r0, #1
+ bls _0225491A
+ mov r1, #1
+_0225491A:
+ ldr r0, [sp, #4]
+ ldr r2, [sp, #0xc]
+ add r0, #0x37
+ strb r1, [r0]
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #4]
+ add r0, #0x38
+ add r1, r1, #4
+ bl MOD39_02254C1C
+ cmp r0, #0
+ beq _02254964
+ ldr r0, [sp, #4]
+ mov r1, #0
+ strb r1, [r0]
+ strb r1, [r0, #1]
+ strb r1, [r0, #2]
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _0225496C ; =0x02255300
+ ldr r2, _02254970 ; =MOD39_0225498C
+ ldr r3, [sp, #4]
+ mov r1, #3
+ bl MOD20_02254130
+ ldr r1, [sp, #4]
+ str r0, [r1, #0x40]
+ ldr r0, [sp, #4]
+ mov r1, #0
+ add r0, #0x46
+ strh r1, [r0]
+ ldr r1, [sp, #8]
+ ldr r0, [sp, #4]
+ add sp, #0x14
+ str r1, [r0, #0x3c]
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_02254964:
+ mov r0, #0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0225496C: .word 0x02255300
+_02254970: .word MOD39_0225498C
+ thumb_func_end MOD39_0225489C
+
+ thumb_func_start MOD39_02254974
+MOD39_02254974: ; 0x02254974
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x40]
+ bl MOD20_02254198
+ ldr r0, [r4, #0x38]
+ bl MOD39_02254C58
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD39_02254974
+
+ thumb_func_start MOD39_0225498C
+MOD39_0225498C: ; 0x0225498C
+ add r2, r3, #0
+ add r2, #0x44
+ strh r0, [r2]
+ add r3, #0x46
+ strh r1, [r3]
+ bx lr
+ thumb_func_end MOD39_0225498C
+
+ thumb_func_start MOD39_02254998
+MOD39_02254998: ; 0x02254998
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #3
+ bhs _022549CE
+ ldr r0, [r4, #0x3c]
+ ldr r1, [r4, #0x40]
+ bl MOD20_02252C14
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _022549D0 ; =0x0225530C
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _022549CE
+ add r0, r4, #0
+ bl MOD39_02254974
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x3c]
+ bl MOD20_022529A0
+_022549CE:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022549D0: .word 0x0225530C
+ thumb_func_end MOD39_02254998
+
+ thumb_func_start MOD39_022549D4
+MOD39_022549D4: ; 0x022549D4
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD39_022549D4
+
+ thumb_func_start MOD39_022549DC
+MOD39_022549DC: ; 0x022549DC
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _022549E4
+ b _022549E6
+_022549E4:
+ mov r1, #2
+_022549E6:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD39_022549DC
+
+ thumb_func_start MOD39_022549F0
+MOD39_022549F0: ; 0x022549F0
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A00
+ cmp r0, #1
+ beq _02254A10
+ b _02254A2A
+_02254A00:
+ ldr r0, [r4, #0x38]
+ mov r1, #0
+ bl MOD39_02254DA4
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A2A
+_02254A10:
+ ldr r0, [r4, #0x38]
+ mov r1, #0
+ bl MOD39_02254DC8
+ cmp r0, #0
+ beq _02254A2A
+ ldr r0, [r4, #0x3c]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD39_022549DC
+_02254A2A:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD39_022549F0
+
+ thumb_func_start MOD39_02254A30
+MOD39_02254A30: ; 0x02254A30
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _02254A44
+ mov r1, #2
+ bl MOD39_022549DC
+ mov r0, #0
+ pop {r4, pc}
+_02254A44:
+ ldrb r1, [r4, #1]
+ cmp r1, #3
+ bhi _02254B48
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02254A56: ; jump table
+ .short _02254A5E - _02254A56 - 2 ; case 0
+ .short _02254ACC - _02254A56 - 2 ; case 1
+ .short _02254ADC - _02254A56 - 2 ; case 2
+ .short _02254B38 - _02254A56 - 2 ; case 3
+_02254A5E:
+ add r1, r4, #0
+ add r1, #0x46
+ ldrh r1, [r1]
+ cmp r1, #1
+ bne _02254B48
+ add r1, r4, #0
+ add r1, #0x44
+ ldrh r1, [r1]
+ cmp r1, #0
+ beq _02254AA8
+ cmp r1, #1
+ beq _02254A7C
+ cmp r1, #2
+ beq _02254A92
+ b _02254AC4
+_02254A7C:
+ bl MOD39_02254B50
+ cmp r0, #0
+ beq _02254AC4
+ ldr r0, [r4, #0x38]
+ mov r1, #4
+ bl MOD39_02254DA4
+ mov r0, #1
+ strb r0, [r4, #1]
+ b _02254AC4
+_02254A92:
+ bl MOD39_02254B9C
+ cmp r0, #0
+ beq _02254AC4
+ ldr r0, [r4, #0x38]
+ mov r1, #5
+ bl MOD39_02254DA4
+ mov r0, #1
+ strb r0, [r4, #1]
+ b _02254AC4
+_02254AA8:
+ add r0, #0x34
+ ldrb r0, [r0]
+ cmp r0, #1
+ bls _02254ABE
+ ldr r0, [r4, #0x38]
+ mov r1, #2
+ bl MOD39_02254DA4
+ mov r0, #2
+ strb r0, [r4, #1]
+ b _02254AC4
+_02254ABE:
+ ldr r0, _02254B4C ; =0x0000066E
+ bl MOD20_02252B28
+_02254AC4:
+ mov r0, #0
+ add r4, #0x46
+ strh r0, [r4]
+ b _02254B48
+_02254ACC:
+ ldr r0, [r4, #0x38]
+ bl MOD39_02254DD4
+ cmp r0, #0
+ beq _02254B48
+ mov r0, #0
+ strb r0, [r4, #1]
+ b _02254B48
+_02254ADC:
+ add r0, #0x46
+ ldrh r0, [r0]
+ cmp r0, #2
+ bne _02254AF2
+ ldr r0, [r4, #0x38]
+ mov r1, #3
+ bl MOD39_02254DA4
+ mov r0, #0
+ strb r0, [r4, #1]
+ b _02254B48
+_02254AF2:
+ cmp r0, #3
+ bne _02254B48
+ add r0, r4, #0
+ add r0, #0x36
+ ldrb r0, [r0]
+ lsl r0, r0, #2
+ add r0, r4, r0
+ ldr r0, [r0, #0x48]
+ str r0, [r4, #0x60]
+ add r0, r4, #0
+ add r0, #0x37
+ ldrb r0, [r0]
+ lsl r0, r0, #2
+ add r0, r4, r0
+ ldr r0, [r0, #0x48]
+ str r0, [r4, #0x64]
+ add r0, r4, #0
+ add r0, #0x60
+ bl MOD05_021ED9B4
+ add r1, r4, #0
+ add r1, #0x35
+ strb r0, [r1]
+ ldr r0, [r4, #0x38]
+ mov r1, #3
+ bl MOD39_02254DA4
+ ldr r0, [r4, #0x38]
+ mov r1, #6
+ bl MOD39_02254DA4
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254B48
+_02254B38:
+ ldr r0, [r4, #0x38]
+ mov r1, #6
+ bl MOD39_02254DC8
+ cmp r0, #0
+ beq _02254B48
+ mov r0, #0
+ strb r0, [r4, #1]
+_02254B48:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+_02254B4C: .word 0x0000066E
+ thumb_func_end MOD39_02254A30
+
+ thumb_func_start MOD39_02254B50
+MOD39_02254B50: ; 0x02254B50
+ push {r3, r4}
+ add r1, r0, #0
+ add r1, #0x34
+ ldrb r1, [r1]
+ cmp r1, #2
+ bls _02254B94
+ add r2, r0, #0
+ mov r1, #0
+ add r2, #0x36
+_02254B62:
+ ldrb r3, [r2]
+ add r3, r3, #1
+ strb r3, [r2]
+ add r3, r0, #0
+ add r3, #0x36
+ ldrb r4, [r3]
+ add r3, r0, #0
+ add r3, #0x34
+ ldrb r3, [r3]
+ cmp r4, r3
+ blo _02254B7E
+ add r3, r0, #0
+ add r3, #0x36
+ strb r1, [r3]
+_02254B7E:
+ add r3, r0, #0
+ add r3, #0x36
+ ldrb r4, [r3]
+ add r3, r0, #0
+ add r3, #0x37
+ ldrb r3, [r3]
+ cmp r4, r3
+ beq _02254B62
+ mov r0, #1
+ pop {r3, r4}
+ bx lr
+_02254B94:
+ mov r0, #0
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD39_02254B50
+
+ thumb_func_start MOD39_02254B9C
+MOD39_02254B9C: ; 0x02254B9C
+ push {r3, r4}
+ add r1, r0, #0
+ add r1, #0x34
+ ldrb r1, [r1]
+ cmp r1, #2
+ bls _02254BE0
+ add r2, r0, #0
+ mov r1, #0
+ add r2, #0x37
+_02254BAE:
+ ldrb r3, [r2]
+ add r3, r3, #1
+ strb r3, [r2]
+ add r3, r0, #0
+ add r3, #0x37
+ ldrb r4, [r3]
+ add r3, r0, #0
+ add r3, #0x34
+ ldrb r3, [r3]
+ cmp r4, r3
+ blo _02254BCA
+ add r3, r0, #0
+ add r3, #0x37
+ strb r1, [r3]
+_02254BCA:
+ add r3, r0, #0
+ add r3, #0x37
+ ldrb r4, [r3]
+ add r3, r0, #0
+ add r3, #0x36
+ ldrb r3, [r3]
+ cmp r4, r3
+ beq _02254BAE
+ mov r0, #1
+ pop {r3, r4}
+ bx lr
+_02254BE0:
+ mov r0, #0
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD39_02254B9C
+
+ thumb_func_start MOD39_02254BE8
+MOD39_02254BE8: ; 0x02254BE8
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254BF8
+ cmp r0, #1
+ beq _02254C08
+ b _02254C16
+_02254BF8:
+ ldr r0, [r4, #0x38]
+ mov r1, #1
+ bl MOD39_02254DA4
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254C16
+_02254C08:
+ ldr r0, [r4, #0x38]
+ bl MOD39_02254DD4
+ cmp r0, #0
+ beq _02254C16
+ mov r0, #1
+ pop {r4, pc}
+_02254C16:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD39_02254BE8
+
+ thumb_func_start MOD39_02254C1C
+MOD39_02254C1C: ; 0x02254C1C
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r0, #8
+ mov r1, #0x88
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254C52
+ 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 MOD39_02254C6C
+ str r4, [r6]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254C52:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD39_02254C1C
+
+ thumb_func_start MOD39_02254C58
+MOD39_02254C58: ; 0x02254C58
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02254C68
+ bl MOD39_02254D78
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254C68:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD39_02254C58
+
+ thumb_func_start MOD39_02254C6C
+MOD39_02254C6C: ; 0x02254C6C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, 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, #0x4a
+ bl FUN_02006A34
+ mov r1, #0x14
+ bl _u32_div_f
+ ldr r1, [sp, #0xc]
+ str r0, [r5, #0x64]
+ add r2, r1, #0
+ add r2, #0x30
+ ldrb r2, [r2]
+ mov r3, #0
+ bl MOD20_02253A04
+ mov r0, #8
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0x3c
+ mov r1, #0xc
+ mov r2, #0x48
+ mov r3, #0x49
+ bl MOD20_02253FBC
+ mov r0, #8
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0x50
+ mov r1, #0xc
+ mov r2, #5
+ mov r3, #6
+ bl MOD20_02253FBC
+ add r0, r5, #0
+ str r0, [sp, #0x10]
+ add r0, #0x3c
+ ldr r7, _02254D74 ; =0x02255408
+ mov r4, #0
+ add r6, r5, #0
+ str r0, [sp, #0x10]
+_02254CD6:
+ ldr r0, [r5, #0x20]
+ ldr r2, [sp, #0x10]
+ add r1, r7, #0
+ bl MOD20_02253E74
+ str r0, [r6, #0x24]
+ add r4, r4, #1
+ add r7, #0x10
+ add r6, r6, #4
+ cmp r4, #4
+ blt _02254CD6
+ cmp r4, #6
+ bge _02254D18
+ ldr r1, _02254D74 ; =0x02255408
+ lsl r0, r4, #4
+ add r7, r1, r0
+ lsl r0, r4, #2
+ add r6, r5, r0
+ add r0, r5, #0
+ str r0, [sp, #0x14]
+ add r0, #0x50
+ str r0, [sp, #0x14]
+_02254D02:
+ ldr r0, [r5, #0x20]
+ ldr r2, [sp, #0x14]
+ add r1, r7, #0
+ bl MOD20_02253E74
+ str r0, [r6, #0x24]
+ add r4, r4, #1
+ add r7, #0x10
+ add r6, r6, #4
+ cmp r4, #6
+ blt _02254D02
+_02254D18:
+ ldr r0, [sp, #0xc]
+ add r0, #0x32
+ ldrb r2, [r0]
+ ldr r0, [sp, #0xc]
+ lsl r1, r2, #1
+ add r3, r0, r1
+ ldrh r0, [r3, #0x24]
+ mov r1, #4
+ str r0, [sp]
+ ldrh r3, [r3, #0x18]
+ add r0, r5, #0
+ bl MOD39_02254FA4
+ ldr r0, [sp, #0xc]
+ add r0, #0x33
+ ldrb r2, [r0]
+ ldr r0, [sp, #0xc]
+ lsl r1, r2, #1
+ add r3, r0, r1
+ ldrh r0, [r3, #0x24]
+ mov r1, #5
+ str r0, [sp]
+ ldrh r3, [r3, #0x18]
+ add r0, r5, #0
+ bl MOD39_02254FA4
+ ldr r0, [sp, #0xc]
+ add r0, #0x30
+ str r0, [sp, #0xc]
+ ldrb r0, [r0]
+ cmp r0, #1
+ bhi _02254D70
+ ldr r0, [r5, #0x38]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x30]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x24]
+ mov r1, #0xa
+ bl MOD20_02253F28
+_02254D70:
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254D74: .word 0x02255408
+ thumb_func_end MOD39_02254C6C
+
+ thumb_func_start MOD39_02254D78
+MOD39_02254D78: ; 0x02254D78
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r0, #0x50
+ bl MOD20_02254014
+ add r0, r6, #0
+ add r0, #0x3c
+ bl MOD20_02254014
+ mov r4, #0
+ add r5, r6, #0
+_02254D8E:
+ ldr r1, [r5, #0x24]
+ cmp r1, #0
+ beq _02254D9A
+ ldr r0, [r6, #0x20]
+ bl MOD20_02253F14
+_02254D9A:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #6
+ blt _02254D8E
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD39_02254D78
+
+ thumb_func_start MOD39_02254DA4
+MOD39_02254DA4: ; 0x02254DA4
+ 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, _02254DC4 ; =0x022553A8
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254DC4: .word 0x022553A8
+ thumb_func_end MOD39_02254DA4
+
+ thumb_func_start MOD39_02254DC8
+MOD39_02254DC8: ; 0x02254DC8
+ ldr r3, _02254DD0 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254DD0: .word MOD20_02253794
+ thumb_func_end MOD39_02254DC8
+
+ thumb_func_start MOD39_02254DD4
+MOD39_02254DD4: ; 0x02254DD4
+ ldr r3, _02254DDC ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254DDC: .word MOD20_022537B8
+ thumb_func_end MOD39_02254DD4
+
+ thumb_func_start MOD39_02254DE0
+MOD39_02254DE0: ; 0x02254DE0
+ 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 MOD39_02254DE0
+
+ thumb_func_start MOD39_02254DF4
+MOD39_02254DF4: ; 0x02254DF4
+ 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, _02254E7C ; =0x02255330
+ 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, #0x47
+ 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, #0x46
+ 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, _02254E80 ; =0x04001000
+ ldr r0, _02254E84 ; =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 MOD39_02254DE0
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+_02254E7C: .word 0x02255330
+_02254E80: .word 0x04001000
+_02254E84: .word 0xFFFFE0FF
+ thumb_func_end MOD39_02254DF4
+
+ thumb_func_start MOD39_02254E88
+MOD39_02254E88: ; 0x02254E88
+ 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 _02254EA4
+ cmp r0, #1
+ beq _02254EB0
+ pop {r3, r4, r5, pc}
+_02254EA4:
+ mov r0, #1
+ str r0, [r4, #0x68]
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_02254EB0:
+ add r0, r4, #0
+ mov r1, #6
+ bl MOD39_02254DC8
+ cmp r0, #0
+ beq _02254ECA
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r5, #0
+ bl MOD39_02254DE0
+_02254ECA:
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD39_02254E88
+
+ thumb_func_start MOD39_02254ECC
+MOD39_02254ECC: ; 0x02254ECC
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ ldr r0, _02254EF4 ; =0x00000669
+ bl MOD20_02252B28
+ ldr r0, [r4, #0x24]
+ mov r1, #0xa
+ bl MOD20_02253F28
+ add r0, r5, #0
+ bl MOD39_02254DE0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02254EF4: .word 0x00000669
+ thumb_func_end MOD39_02254ECC
+
+ thumb_func_start MOD39_02254EF8
+MOD39_02254EF8: ; 0x02254EF8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ ldr r0, [r4, #0x24]
+ mov r1, #9
+ bl MOD20_02253F28
+ add r0, r5, #0
+ bl MOD39_02254DE0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD39_02254EF8
+
+ thumb_func_start MOD39_02254F1C
+MOD39_02254F1C: ; 0x02254F1C
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A4
+ add r7, r0, #0
+ add r0, #0x32
+ ldrb r5, [r0]
+ ldr r0, _02254F5C ; =0x00000663
+ bl MOD20_02252B28
+ lsl r0, r5, #1
+ add r3, r7, r0
+ ldrh r0, [r3, #0x24]
+ mov r1, #4
+ add r2, r5, #0
+ str r0, [sp]
+ ldrh r3, [r3, #0x18]
+ add r0, r4, #0
+ bl MOD39_02254FA4
+ add r0, r4, #0
+ bl MOD39_02254FF8
+ add r0, r6, #0
+ bl MOD39_02254DE0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254F5C: .word 0x00000663
+ thumb_func_end MOD39_02254F1C
+
+ thumb_func_start MOD39_02254F60
+MOD39_02254F60: ; 0x02254F60
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A4
+ add r7, r0, #0
+ add r0, #0x33
+ ldrb r5, [r0]
+ ldr r0, _02254FA0 ; =0x00000663
+ bl MOD20_02252B28
+ lsl r0, r5, #1
+ add r3, r7, r0
+ ldrh r0, [r3, #0x24]
+ mov r1, #5
+ add r2, r5, #0
+ str r0, [sp]
+ ldrh r3, [r3, #0x18]
+ add r0, r4, #0
+ bl MOD39_02254FA4
+ add r0, r4, #0
+ bl MOD39_02254FF8
+ add r0, r6, #0
+ bl MOD39_02254DE0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254FA0: .word 0x00000663
+ thumb_func_end MOD39_02254F60
+
+ thumb_func_start MOD39_02254FA4
+MOD39_02254FA4: ; 0x02254FA4
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ lsl r0, r1, #2
+ add r0, r5, r0
+ add r6, r2, #0
+ add r7, r3, #0
+ ldr r4, [r0, #0x24]
+ cmp r1, #5
+ bne _02254FBA
+ mov r1, #4
+ b _02254FCC
+_02254FBA:
+ add r0, r7, #0
+ mov r1, #0x1c
+ bl FUN_02068678
+ cmp r0, #0
+ beq _02254FCA
+ mov r1, #4
+ b _02254FCC
+_02254FCA:
+ mov r1, #5
+_02254FCC:
+ add r0, r4, #0
+ bl MOD20_02253F28
+ ldr r2, [r5, #0x64]
+ lsl r1, r6, #4
+ add r0, r4, #0
+ add r1, r2, r1
+ bl MOD20_02253FA4
+ add r1, sp, #8
+ ldrh r1, [r1, #0x10]
+ add r0, r7, #0
+ mov r2, #0
+ bl FUN_0206B7BC
+ add r1, r0, #0
+ add r0, r4, #0
+ add r1, r1, #1
+ bl MOD20_02253F9C
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD39_02254FA4
+
+ thumb_func_start MOD39_02254FF8
+MOD39_02254FF8: ; 0x02254FF8
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #3
+ mov r2, #0x16
+ ldr r0, [r4, #0x2c]
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0xe
+ bl MOD20_02253F64
+ mov r1, #0xb
+ lsl r1, r1, #0x10
+ ldr r0, [r4, #0x30]
+ lsr r2, r1, #1
+ bl MOD20_02253F64
+ ldr r0, [r4, #0x2c]
+ mov r1, #5
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x30]
+ mov r1, #6
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x28]
+ mov r1, #0
+ bl MOD20_02253F28
+ pop {r4, pc}
+ thumb_func_end MOD39_02254FF8
+
+ thumb_func_start MOD39_02255030
+MOD39_02255030: ; 0x02255030
+ 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, #0
+ beq _0225505C
+ ldr r0, [r4, #0x68]
+ cmp r0, #0
+ beq _0225505C
+ add r0, r5, #0
+ bl MOD39_02254DE0
+ pop {r4, r5, r6, pc}
+_0225505C:
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _0225506C
+ cmp r0, #1
+ beq _02255086
+ pop {r4, r5, r6, pc}
+_0225506C:
+ mov r0, #0
+ str r0, [r4, #0x68]
+ add r0, r4, #0
+ bl MOD39_02254FF8
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD39_0225509C
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r4, r5, r6, pc}
+_02255086:
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD39_02255114
+ cmp r0, #0
+ beq _02255098
+ add r0, r5, #0
+ bl MOD39_02254DE0
+_02255098:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD39_02255030
+
+ thumb_func_start MOD39_0225509C
+MOD39_0225509C: ; 0x0225509C
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ add r5, r1, #0
+ mov r1, #0
+ str r1, [r4, #0x70]
+ str r1, [r4, #0x74]
+ str r1, [r4, #0x78]
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0x31
+ ldrb r0, [r0]
+ cmp r0, #3
+ bhi _022550FA
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_022550C4: ; jump table
+ .short _022550EE - _022550C4 - 2 ; case 0
+ .short _022550E0 - _022550C4 - 2 ; case 1
+ .short _022550D2 - _022550C4 - 2 ; case 2
+ .short _022550CC - _022550C4 - 2 ; case 3
+_022550CC:
+ ldr r0, _02255104 ; =0x02255378
+ str r0, [r4, #0x6c]
+ b _022550FA
+_022550D2:
+ ldr r0, _02255108 ; =0x02255318
+ mov r1, #1
+ str r0, [r4, #0x6c]
+ ldr r0, [r4, #0x28]
+ bl MOD20_02253F28
+ b _022550FA
+_022550E0:
+ ldr r0, _0225510C ; =0x0225534C
+ mov r1, #2
+ str r0, [r4, #0x6c]
+ ldr r0, [r4, #0x28]
+ bl MOD20_02253F28
+ b _022550FA
+_022550EE:
+ ldr r0, _02255110 ; =0x02255468
+ mov r1, #3
+ str r0, [r4, #0x6c]
+ ldr r0, [r4, #0x28]
+ bl MOD20_02253F28
+_022550FA:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD39_02255114
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02255104: .word 0x02255378
+_02255108: .word 0x02255318
+_0225510C: .word 0x0225534C
+_02255110: .word 0x02255468
+ thumb_func_end MOD39_0225509C
+
+ thumb_func_start MOD39_02255114
+MOD39_02255114: ; 0x02255114
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ add r5, r4, #0
+ add r6, r4, #0
+ mov r7, #0x16
+ add r5, #0x84
+ add r6, #0x78
+ lsl r7, r7, #0xe
+_02255124:
+ ldr r0, [r4, #0x70]
+ cmp r0, #0
+ beq _02255138
+ cmp r0, #1
+ bne _02255130
+ b _02255280
+_02255130:
+ cmp r0, #2
+ bne _02255136
+ b _022552DC
+_02255136:
+ b _022552FA
+_02255138:
+ beq _0225513C
+ b _022552FA
+_0225513C:
+ add r6, r4, #0
+ add r5, r4, #0
+ add r6, #0x7c
+ mov r7, #1
+ add r5, #0x74
+_02255146:
+ ldr r0, [r5]
+ ldr r1, [r4, #0x74]
+ add r0, r0, #1
+ str r0, [r5]
+ ldr r0, [r4, #0x6c]
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ add r0, r0, #7
+ cmp r0, #6
+ bls _0225515C
+ b _02255276
+_0225515C:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02255168: ; jump table
+ .short _02255252 - _02255168 - 2 ; case 0
+ .short _02255240 - _02255168 - 2 ; case 1
+ .short _0225522C - _02255168 - 2 ; case 2
+ .short _02255212 - _02255168 - 2 ; case 3
+ .short _022551C2 - _02255168 - 2 ; case 4
+ .short _0225517A - _02255168 - 2 ; case 5
+ .short _02255176 - _02255168 - 2 ; case 6
+_02255176:
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225517A:
+ ldr r0, [r5]
+ ldr r1, [r4, #0x74]
+ add r0, r0, #1
+ str r0, [r5]
+ ldr r0, [r4, #0x6c]
+ lsl r1, r1, #2
+ ldr r1, [r0, r1]
+ add r0, r4, #0
+ add r0, #0x84
+ str r1, [r0]
+ ldr r0, [r5]
+ ldr r1, [r4, #0x74]
+ add r0, r0, #1
+ str r0, [r5]
+ ldr r0, [r4, #0x6c]
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ str r0, [r4, #0x7c]
+ ldr r0, [r6]
+ lsl r0, r0, #0xc
+ str r0, [r6]
+ ldr r1, [r4, #0x78]
+ ldr r0, [r4, #0x7c]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0x80
+ str r1, [r0]
+ add r1, r4, #0
+ add r1, #0x84
+ ldr r0, [r6]
+ ldr r1, [r1]
+ bl _u32_div_f
+ str r0, [r6]
+ str r7, [r4, #0x70]
+ b _02255276
+_022551C2:
+ ldr r0, [r5]
+ ldr r1, [r4, #0x74]
+ add r0, r0, #1
+ str r0, [r5]
+ ldr r0, [r4, #0x6c]
+ lsl r1, r1, #2
+ ldr r1, [r0, r1]
+ add r0, r4, #0
+ add r0, #0x84
+ str r1, [r0]
+ ldr r0, [r5]
+ ldr r1, [r4, #0x74]
+ add r0, r0, #1
+ str r0, [r5]
+ ldr r0, [r4, #0x6c]
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ mov r1, #0
+ str r0, [r4, #0x7c]
+ ldr r0, [r6]
+ mvn r1, r1
+ lsl r0, r0, #0xc
+ mul r1, r0
+ str r1, [r6]
+ ldr r1, [r4, #0x78]
+ ldr r0, [r4, #0x7c]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0x80
+ str r1, [r0]
+ add r1, r4, #0
+ add r1, #0x84
+ ldr r0, [r6]
+ ldr r1, [r1]
+ bl _u32_div_f
+ str r0, [r6]
+ mov r0, #1
+ str r0, [r4, #0x70]
+ b _02255276
+_02255212:
+ ldr r0, [r5]
+ ldr r1, [r4, #0x74]
+ add r0, r0, #1
+ str r0, [r5]
+ ldr r0, [r4, #0x6c]
+ lsl r1, r1, #2
+ ldr r1, [r0, r1]
+ add r0, r4, #0
+ add r0, #0x84
+ str r1, [r0]
+ mov r0, #2
+ str r0, [r4, #0x70]
+ b _02255276
+_0225522C:
+ ldr r0, [r5]
+ ldr r1, [r4, #0x74]
+ add r0, r0, #1
+ str r0, [r5]
+ ldr r0, [r4, #0x6c]
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ bl MOD20_02252B28
+ b _02255276
+_02255240:
+ ldr r0, [r4, #0x2c]
+ mov r1, #6
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x30]
+ mov r1, #5
+ bl MOD20_02253F28
+ b _02255276
+_02255252:
+ ldr r1, [r5]
+ ldr r0, [r4, #0x74]
+ add r1, r1, #1
+ str r1, [r5]
+ ldr r2, [r4, #0x6c]
+ lsl r0, r0, #2
+ ldr r0, [r2, r0]
+ ldr r2, [r4, #0x74]
+ add r1, r1, #1
+ str r1, [r5]
+ lsl r0, r0, #2
+ add r0, r4, r0
+ ldr r1, [r4, #0x6c]
+ lsl r2, r2, #2
+ ldr r0, [r0, #0x24]
+ ldr r1, [r1, r2]
+ bl MOD20_02253F28
+_02255276:
+ ldr r0, [r4, #0x70]
+ cmp r0, #0
+ bne _0225527E
+ b _02255146
+_0225527E:
+ b _022552FA
+_02255280:
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _022552CC
+ ldr r0, [r5]
+ sub r0, r0, #1
+ str r0, [r5]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _022552A4
+ ldr r1, [r6]
+ ldr r0, [r4, #0x7c]
+ add r0, r1, r0
+ str r0, [r6]
+ b _022552AC
+_022552A4:
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ str r0, [r4, #0x78]
+_022552AC:
+ mov r1, #3
+ ldr r2, [r4, #0x78]
+ lsl r1, r1, #0x10
+ add r1, r2, r1
+ ldr r0, [r4, #0x2c]
+ add r2, r7, #0
+ bl MOD20_02253F64
+ mov r1, #0xb
+ ldr r2, [r4, #0x78]
+ lsl r1, r1, #0x10
+ sub r1, r1, r2
+ ldr r0, [r4, #0x30]
+ add r2, r7, #0
+ bl MOD20_02253F64
+_022552CC:
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _022552FA
+ mov r0, #0
+ str r0, [r4, #0x70]
+ b _02255124
+_022552DC:
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _022552F4
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ add r4, #0x84
+ sub r0, r0, #1
+ str r0, [r4]
+ b _022552FA
+_022552F4:
+ mov r0, #0
+ str r0, [r4, #0x70]
+ b _02255124
+_022552FA:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD39_02255114
+
+ .section .rodata
+ ; 0x02255300
+ .incbin "baserom.nds", 0x291cc0, 0x1E4
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_39.SINIT_START
+ .global SDK_OVERLAY.MODULE_39.SINIT_END
+SDK_OVERLAY.MODULE_39.SINIT_START:
+ .word MOD39_02254840
+ .word 0
+SDK_OVERLAY.MODULE_39.SINIT_END:
diff --git a/arm9/modules/40/asm/module_40.s b/arm9/modules/40/asm/module_40.s
new file mode 100644
index 00000000..bc8e79f1
--- /dev/null
+++ b/arm9/modules/40/asm/module_40.s
@@ -0,0 +1,1417 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD40_02254840
+MOD40_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD40_02254854
+ ldr r1, _02254850 ; =MOD40_022549D4
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD40_02254854
+_02254850: .word MOD40_022549D4
+ thumb_func_end MOD40_02254840
+
+ thumb_func_start MOD40_02254854
+MOD40_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 MOD40_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD40_02254998
+ 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 MOD40_02254998
+ thumb_func_end MOD40_02254854
+
+ thumb_func_start MOD40_0225489C
+MOD40_0225489C: ; 0x0225489C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ 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_0204BF94
+ strb r0, [r5, #3]
+ ldr r0, [r5, #0x10]
+ add r1, sp, #8
+ add r2, sp, #4
+ bl FUN_0204BF9C
+ ldr r0, [sp, #8]
+ strb r0, [r5, #6]
+ ldr r0, [sp, #4]
+ strb r0, [r5, #7]
+ add r0, r5, #3
+ bl MOD40_02254940
+ add r0, r5, #0
+ add r0, #8
+ add r1, r5, #3
+ add r2, r6, #0
+ bl MOD40_02254D6C
+ cmp r0, #0
+ beq _02254930
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _02254938 ; =0x02255328
+ ldr r2, _0225493C ; =MOD40_02254990
+ mov r1, #6
+ add r3, r5, #0
+ bl MOD20_02254130
+ str r0, [r5, #0x14]
+ mov r0, #0
+ str r0, [r5, #0x1c]
+ ldr r0, [r5, #0x14]
+ mov r1, #2
+ mov r2, #4
+ bl MOD20_022542C0
+ ldr r0, [r5, #0x14]
+ mov r1, #3
+ mov r2, #4
+ bl MOD20_022542C0
+ mov r1, #4
+ ldr r0, [r5, #0x14]
+ add r2, r1, #0
+ bl MOD20_022542C0
+ ldr r0, [r5, #0x14]
+ mov r1, #5
+ mov r2, #4
+ bl MOD20_022542C0
+ mov r0, #0
+ str r0, [r5, #0x2c]
+ str r0, [r5, #0x30]
+ add sp, #0xc
+ str r4, [r5, #0xc]
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_02254930:
+ mov r0, #0
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02254938: .word 0x02255328
+_0225493C: .word MOD40_02254990
+ thumb_func_end MOD40_0225489C
+
+ thumb_func_start MOD40_02254940
+MOD40_02254940: ; 0x02254940
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ add r0, sp, #0
+ bl FUN_02012690
+ ldr r0, [sp]
+ cmp r0, #0x18
+ blo _0225495A
+ mov r1, #0x18
+ bl _u32_div_f
+ str r1, [sp]
+_0225495A:
+ ldr r0, [sp, #4]
+ cmp r0, #0x3c
+ blo _0225496A
+ ldr r0, [sp]
+ mov r1, #0x3c
+ bl _u32_div_f
+ str r1, [sp]
+_0225496A:
+ ldr r0, [sp]
+ strb r0, [r4, #1]
+ ldr r0, [sp, #4]
+ strb r0, [r4, #2]
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD40_02254940
+
+ thumb_func_start MOD40_02254978
+MOD40_02254978: ; 0x02254978
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x14]
+ bl MOD20_02254198
+ ldr r0, [r4, #8]
+ bl MOD40_02254DA8
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD40_02254978
+
+ thumb_func_start MOD40_02254990
+MOD40_02254990: ; 0x02254990
+ str r0, [r3, #0x18]
+ str r1, [r3, #0x1c]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD40_02254990
+
+ thumb_func_start MOD40_02254998
+MOD40_02254998: ; 0x02254998
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #5
+ bhs _022549CE
+ ldr r0, [r4, #0xc]
+ ldr r1, [r4, #0x14]
+ bl MOD20_02252C14
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _022549D0 ; =0x02255314
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _022549CE
+ add r0, r4, #0
+ bl MOD40_02254978
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0xc]
+ bl MOD20_022529A0
+_022549CE:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022549D0: .word 0x02255314
+ thumb_func_end MOD40_02254998
+
+ thumb_func_start MOD40_022549D4
+MOD40_022549D4: ; 0x022549D4
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD40_022549D4
+
+ thumb_func_start MOD40_022549DC
+MOD40_022549DC: ; 0x022549DC
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _022549E4
+ b _022549E6
+_022549E4:
+ mov r1, #4
+_022549E6:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD40_022549DC
+
+ thumb_func_start MOD40_022549F0
+MOD40_022549F0: ; 0x022549F0
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A00
+ cmp r0, #1
+ beq _02254A10
+ b _02254A3A
+_02254A00:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD40_02254F98
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A3A
+_02254A10:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD40_02254FBC
+ cmp r0, #0
+ beq _02254A3A
+ ldr r0, [r4, #0xc]
+ bl MOD20_0225298C
+ ldrb r0, [r4, #3]
+ cmp r0, #0
+ beq _02254A32
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD40_022549DC
+ b _02254A3A
+_02254A32:
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD40_022549DC
+_02254A3A:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD40_022549F0
+
+ thumb_func_start MOD40_02254A40
+MOD40_02254A40: ; 0x02254A40
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _02254A54
+ mov r1, #4
+ bl MOD40_022549DC
+ mov r0, #0
+ pop {r4, pc}
+_02254A54:
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A60
+ cmp r0, #1
+ beq _02254B32
+ b _02254B46
+_02254A60:
+ ldr r1, [r4, #0x1c]
+ cmp r1, #1
+ bne _02254A9A
+ ldr r0, [r4, #0x18]
+ cmp r0, #0
+ bne _02254A9A
+ mov r0, #1
+ strb r0, [r4, #3]
+ add r0, r4, #3
+ bl MOD40_02254940
+ mov r2, #6
+ mov r3, #7
+ ldrsb r2, [r4, r2]
+ ldrsb r3, [r4, r3]
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_0204BFB0
+ ldr r0, [r4, #8]
+ mov r1, #2
+ bl MOD40_02254F98
+ mov r0, #0
+ str r0, [r4, #0x1c]
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254B46
+_02254A9A:
+ cmp r1, #1
+ bne _02254AB0
+ ldr r0, [r4, #0x18]
+ cmp r0, #1
+ bne _02254AB0
+ mov r0, #0
+ str r0, [r4, #0x1c]
+ ldr r0, _02254B4C ; =0x0000066E
+ bl MOD20_02252B28
+ b _02254B46
+_02254AB0:
+ cmp r1, #1
+ beq _02254AB8
+ cmp r1, #7
+ bne _02254B46
+_02254AB8:
+ ldr r0, [r4, #0x18]
+ cmp r0, #5
+ bhi _02254B24
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02254ACA: ; jump table
+ .short _02254B24 - _02254ACA - 2 ; case 0
+ .short _02254B24 - _02254ACA - 2 ; case 1
+ .short _02254AD6 - _02254ACA - 2 ; case 2
+ .short _02254AEA - _02254ACA - 2 ; case 3
+ .short _02254AFE - _02254ACA - 2 ; case 4
+ .short _02254B12 - _02254ACA - 2 ; case 5
+_02254AD6:
+ mov r0, #6
+ ldrsb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, #6]
+ ldrsb r0, [r4, r0]
+ cmp r0, #0x17
+ ble _02254B24
+ mov r0, #0
+ strb r0, [r4, #6]
+ b _02254B24
+_02254AEA:
+ mov r0, #6
+ ldrsb r1, [r4, r0]
+ sub r1, r1, #1
+ strb r1, [r4, #6]
+ ldrsb r0, [r4, r0]
+ cmp r0, #0
+ bge _02254B24
+ mov r0, #0x17
+ strb r0, [r4, #6]
+ b _02254B24
+_02254AFE:
+ mov r0, #7
+ ldrsb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, #7]
+ ldrsb r0, [r4, r0]
+ cmp r0, #0x3b
+ ble _02254B24
+ mov r0, #0
+ strb r0, [r4, #7]
+ b _02254B24
+_02254B12:
+ mov r0, #7
+ ldrsb r1, [r4, r0]
+ sub r1, r1, #1
+ strb r1, [r4, #7]
+ ldrsb r0, [r4, r0]
+ cmp r0, #0
+ bge _02254B24
+ mov r0, #0x3b
+ strb r0, [r4, #7]
+_02254B24:
+ mov r0, #0
+ str r0, [r4, #0x1c]
+ ldr r0, [r4, #8]
+ mov r1, #4
+ bl MOD40_02254F98
+ b _02254B46
+_02254B32:
+ ldr r0, [r4, #8]
+ mov r1, #2
+ bl MOD40_02254FBC
+ cmp r0, #0
+ beq _02254B46
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD40_022549DC
+_02254B46:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_02254B4C: .word 0x0000066E
+ thumb_func_end MOD40_02254A40
+
+ thumb_func_start MOD40_02254B50
+MOD40_02254B50: ; 0x02254B50
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _02254B68
+ mov r1, #4
+ bl MOD40_022549DC
+ add sp, #8
+ mov r0, #0
+ pop {r4, pc}
+_02254B68:
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254B74
+ cmp r0, #1
+ beq _02254C02
+ b _02254C12
+_02254B74:
+ add r0, r4, #3
+ bl MOD40_02254D4C
+ cmp r0, #0
+ beq _02254B8C
+ add r0, r4, #0
+ mov r1, #3
+ bl MOD40_022549DC
+ add sp, #8
+ mov r0, #0
+ pop {r4, pc}
+_02254B8C:
+ ldr r1, [r4, #0x1c]
+ cmp r1, #1
+ bne _02254BB2
+ ldr r0, [r4, #0x18]
+ cmp r0, #1
+ bne _02254BB2
+ mov r0, #0
+ strb r0, [r4, #3]
+ ldr r0, [r4, #8]
+ mov r1, #3
+ bl MOD40_02254F98
+ mov r0, #0
+ str r0, [r4, #0x1c]
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD40_022549DC
+ b _02254C12
+_02254BB2:
+ cmp r1, #1
+ bne _02254BC4
+ ldr r0, [r4, #0x18]
+ cmp r0, #0
+ bne _02254BC4
+ ldr r0, _02254C18 ; =0x0000066E
+ bl MOD20_02252B28
+ b _02254C12
+_02254BC4:
+ add r0, r4, #0
+ bl MOD40_02254CE4
+ cmp r0, #0
+ bne _02254BD4
+ add r0, r4, #0
+ bl MOD40_02254CE8
+_02254BD4:
+ add r0, r4, #0
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD40_02254D00
+ cmp r0, #0
+ beq _02254C12
+ mov r0, #5
+ ldrsb r0, [r4, r0]
+ ldr r1, [sp]
+ cmp r1, r0
+ beq _02254C12
+ strb r1, [r4, #5]
+ ldr r0, [sp, #4]
+ mov r1, #4
+ strb r0, [r4, #4]
+ ldr r0, [r4, #8]
+ bl MOD40_02254F98
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254C12
+_02254C02:
+ ldr r0, [r4, #8]
+ mov r1, #4
+ bl MOD40_02254FBC
+ cmp r0, #0
+ beq _02254C12
+ mov r0, #0
+ strb r0, [r4, #1]
+_02254C12:
+ mov r0, #0
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+_02254C18: .word 0x0000066E
+ thumb_func_end MOD40_02254B50
+
+ thumb_func_start MOD40_02254C1C
+MOD40_02254C1C: ; 0x02254C1C
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _02254C34
+ mov r1, #4
+ bl MOD40_022549DC
+ add sp, #8
+ mov r0, #0
+ pop {r4, pc}
+_02254C34:
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254C40
+ cmp r0, #1
+ beq _02254C50
+ b _02254CDC
+_02254C40:
+ ldr r0, [r4, #8]
+ mov r1, #5
+ bl MOD40_02254F98
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254CDC
+_02254C50:
+ add r0, r4, #3
+ bl MOD40_02254D4C
+ cmp r0, #0
+ bne _02254C76
+ ldr r0, [r4, #8]
+ bl MOD40_0225530C
+ ldr r0, [r4, #8]
+ mov r1, #2
+ bl MOD40_02254F98
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD40_022549DC
+ add sp, #8
+ mov r0, #0
+ pop {r4, pc}
+_02254C76:
+ ldr r0, [r4, #0x1c]
+ cmp r0, #1
+ bne _02254CA6
+ ldr r0, [r4, #0x18]
+ cmp r0, #1
+ bne _02254CA6
+ mov r0, #0
+ strb r0, [r4, #3]
+ ldr r0, [r4, #8]
+ bl MOD40_0225530C
+ ldr r0, [r4, #8]
+ mov r1, #3
+ bl MOD40_02254F98
+ mov r0, #0
+ str r0, [r4, #0x1c]
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD40_022549DC
+ add sp, #8
+ mov r0, #0
+ pop {r4, pc}
+_02254CA6:
+ add r0, r4, #0
+ bl MOD40_02254CE4
+ cmp r0, #0
+ bne _02254CB6
+ add r0, r4, #0
+ bl MOD40_02254CE8
+_02254CB6:
+ add r0, r4, #0
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD40_02254D00
+ cmp r0, #0
+ beq _02254CDC
+ mov r0, #5
+ ldrsb r0, [r4, r0]
+ ldr r1, [sp]
+ cmp r1, r0
+ beq _02254CDC
+ strb r1, [r4, #5]
+ ldr r0, [sp, #4]
+ mov r1, #4
+ strb r0, [r4, #4]
+ ldr r0, [r4, #8]
+ bl MOD40_02254F98
+_02254CDC:
+ mov r0, #0
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD40_02254C1C
+
+ thumb_func_start MOD40_02254CE4
+MOD40_02254CE4: ; 0x02254CE4
+ ldr r0, [r0, #0x2c]
+ bx lr
+ thumb_func_end MOD40_02254CE4
+
+ thumb_func_start MOD40_02254CE8
+MOD40_02254CE8: ; 0x02254CE8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x2c]
+ cmp r0, #0
+ bne _02254CFE
+ add r0, r4, #0
+ add r0, #0x20
+ bl FUN_02012690
+ mov r0, #1
+ str r0, [r4, #0x30]
+_02254CFE:
+ pop {r4, pc}
+ thumb_func_end MOD40_02254CE8
+
+ thumb_func_start MOD40_02254D00
+MOD40_02254D00: ; 0x02254D00
+ ldr r3, [r0, #0x30]
+ cmp r3, #0
+ beq _02254D12
+ ldr r3, [r0, #0x20]
+ str r3, [r1]
+ ldr r0, [r0, #0x24]
+ str r0, [r2]
+ mov r0, #1
+ bx lr
+_02254D12:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD40_02254D00
+
+ thumb_func_start MOD40_02254D18
+MOD40_02254D18: ; 0x02254D18
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254D28
+ cmp r0, #1
+ beq _02254D38
+ b _02254D46
+_02254D28:
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl MOD40_02254F98
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254D46
+_02254D38:
+ ldr r0, [r4, #8]
+ bl MOD40_02254FC8
+ cmp r0, #0
+ beq _02254D46
+ mov r0, #1
+ pop {r4, pc}
+_02254D46:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD40_02254D18
+
+ thumb_func_start MOD40_02254D4C
+MOD40_02254D4C: ; 0x02254D4C
+ mov r1, #1
+ mov r2, #3
+ ldrsb r3, [r0, r1]
+ ldrsb r2, [r0, r2]
+ cmp r3, r2
+ bne _02254D64
+ mov r2, #2
+ ldrsb r3, [r0, r2]
+ mov r2, #4
+ ldrsb r0, [r0, r2]
+ cmp r3, r0
+ beq _02254D66
+_02254D64:
+ mov r1, #0
+_02254D66:
+ add r0, r1, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD40_02254D4C
+
+ thumb_func_start MOD40_02254D6C
+MOD40_02254D6C: ; 0x02254D6C
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r0, #8
+ mov r1, #0x9c
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254DA2
+ add r0, #8
+ mov r1, #8
+ bl MOD20_022536F4
+ str r5, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ bl MOD20_02252D24
+ str r0, [r4, #0x30]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD40_02254DBC
+ str r4, [r6]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254DA2:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD40_02254D6C
+
+ thumb_func_start MOD40_02254DA8
+MOD40_02254DA8: ; 0x02254DA8
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02254DB8
+ bl MOD40_02254EE4
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254DB8:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD40_02254DA8
+
+ thumb_func_start MOD40_02254DBC
+MOD40_02254DBC: ; 0x02254DBC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ add r5, r0, #0
+ str r1, [sp, #0xc]
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #2
+ bl FUN_02006A34
+ mov r0, #0
+ str r0, [sp]
+ mov r2, #1
+ mov r3, #0xa
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x4f
+ lsl r3, r3, #8
+ bl FUN_02006A34
+ mov r0, #8
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0x68
+ mov r1, #0xc
+ mov r2, #0x4d
+ mov r3, #0x4e
+ bl MOD20_02253FBC
+ mov r0, #8
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0x7c
+ mov r1, #0xc
+ mov r2, #3
+ mov r3, #4
+ bl MOD20_02253FBC
+ add r0, r5, #0
+ str r0, [sp, #0x14]
+ add r0, #0x68
+ str r0, [sp, #0x14]
+ add r0, r5, #0
+ str r0, [sp, #0x10]
+ add r0, #0x7c
+ ldr r7, _02254EE0 ; =0x022553B0
+ mov r4, #0
+ add r6, r5, #0
+ str r0, [sp, #0x10]
+_02254E2A:
+ cmp r4, #9
+ blt _02254E40
+ cmp r4, #0xc
+ bgt _02254E40
+ ldr r0, [r5, #0x30]
+ ldr r2, [sp, #0x10]
+ add r1, r7, #0
+ bl MOD20_02253E74
+ str r0, [r6, #0x34]
+ b _02254E52
+_02254E40:
+ ldr r0, [r5, #0x30]
+ ldr r2, [sp, #0x14]
+ add r1, r7, #0
+ bl MOD20_02253E74
+ mov r1, #0x50
+ str r0, [r6, #0x34]
+ bl MOD20_02253FA4
+_02254E52:
+ add r4, r4, #1
+ add r7, #0x10
+ add r6, r6, #4
+ cmp r4, #0xd
+ blt _02254E2A
+ ldr r0, [sp, #0xc]
+ ldrb r0, [r0]
+ cmp r0, #0
+ ldr r0, [r5, #0x34]
+ beq _02254EB2
+ mov r1, #3
+ bl MOD20_02253F28
+ ldr r0, [r5, #0x40]
+ mov r1, #5
+ bl MOD20_02253F28
+ ldr r0, [r5, #0x44]
+ mov r1, #5
+ bl MOD20_02253F28
+ ldr r0, [r5, #0x48]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x4c]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x50]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x54]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r1, [sp, #0xc]
+ mov r2, #1
+ ldrsb r1, [r1, r2]
+ ldr r2, [sp, #0xc]
+ mov r3, #2
+ ldrsb r2, [r2, r3]
+ add r0, r5, #0
+ bl MOD40_02254F14
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+_02254EB2:
+ mov r1, #2
+ bl MOD20_02253F28
+ ldr r0, [r5, #0x40]
+ mov r1, #5
+ bl MOD20_02253F28
+ ldr r0, [r5, #0x44]
+ mov r1, #4
+ bl MOD20_02253F28
+ ldr r1, [sp, #0xc]
+ mov r2, #3
+ ldrsb r1, [r1, r2]
+ ldr r2, [sp, #0xc]
+ mov r3, #4
+ ldrsb r2, [r2, r3]
+ add r0, r5, #0
+ bl MOD40_02254F14
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254EE0: .word 0x022553B0
+ thumb_func_end MOD40_02254DBC
+
+ thumb_func_start MOD40_02254EE4
+MOD40_02254EE4: ; 0x02254EE4
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+_02254EEC:
+ ldr r1, [r5, #0x34]
+ cmp r1, #0
+ beq _02254EF8
+ ldr r0, [r6, #0x30]
+ bl MOD20_02253F14
+_02254EF8:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0xd
+ blt _02254EEC
+ add r0, r6, #0
+ add r0, #0x68
+ bl MOD20_02254014
+ add r6, #0x7c
+ add r0, r6, #0
+ bl MOD20_02254014
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD40_02254EE4
+
+ thumb_func_start MOD40_02254F14
+MOD40_02254F14: ; 0x02254F14
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _02254F8C ; =0x04000280
+ mov r3, #0
+ strh r3, [r0]
+ str r1, [r0, #0x10]
+ add r1, r0, #0
+ add r4, r2, #0
+ mov r2, #0xa
+ add r1, #0x18
+ str r2, [r1]
+ str r3, [r1, #4]
+ lsr r1, r0, #0xb
+_02254F2E:
+ ldrh r2, [r0]
+ tst r2, r1
+ bne _02254F2E
+ ldr r1, _02254F90 ; =0x040002A0
+ ldr r0, [r5, #0x58]
+ ldr r1, [r1]
+ bl MOD20_02253F28
+ ldr r2, _02254F8C ; =0x04000280
+ lsr r0, r2, #0xb
+_02254F42:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _02254F42
+ ldr r1, _02254F94 ; =0x040002A8
+ ldr r0, [r5, #0x5c]
+ ldr r1, [r1]
+ bl MOD20_02253F28
+ ldr r0, _02254F8C ; =0x04000280
+ mov r3, #0
+ strh r3, [r0]
+ add r1, r0, #0
+ str r4, [r0, #0x10]
+ mov r2, #0xa
+ add r1, #0x18
+ str r2, [r1]
+ str r3, [r1, #4]
+ lsr r1, r0, #0xb
+_02254F66:
+ ldrh r2, [r0]
+ tst r2, r1
+ bne _02254F66
+ ldr r1, _02254F90 ; =0x040002A0
+ ldr r0, [r5, #0x60]
+ ldr r1, [r1]
+ bl MOD20_02253F28
+ ldr r2, _02254F8C ; =0x04000280
+ lsr r0, r2, #0xb
+_02254F7A:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _02254F7A
+ ldr r1, _02254F94 ; =0x040002A8
+ ldr r0, [r5, #0x64]
+ ldr r1, [r1]
+ bl MOD20_02253F28
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02254F8C: .word 0x04000280
+_02254F90: .word 0x040002A0
+_02254F94: .word 0x040002A8
+ thumb_func_end MOD40_02254F14
+
+ thumb_func_start MOD40_02254F98
+MOD40_02254F98: ; 0x02254F98
+ 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, _02254FB8 ; =0x0225535C
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254FB8: .word 0x0225535C
+ thumb_func_end MOD40_02254F98
+
+ thumb_func_start MOD40_02254FBC
+MOD40_02254FBC: ; 0x02254FBC
+ ldr r3, _02254FC4 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254FC4: .word MOD20_02253794
+ thumb_func_end MOD40_02254FBC
+
+ thumb_func_start MOD40_02254FC8
+MOD40_02254FC8: ; 0x02254FC8
+ ldr r3, _02254FD0 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254FD0: .word MOD20_022537B8
+ thumb_func_end MOD40_02254FC8
+
+ thumb_func_start MOD40_02254FD4
+MOD40_02254FD4: ; 0x02254FD4
+ 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 MOD40_02254FD4
+
+ thumb_func_start MOD40_02254FE8
+MOD40_02254FE8: ; 0x02254FE8
+ 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, _0225506C ; =0x02255340
+ 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, #0x4c
+ 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, #0x4b
+ 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, _02255070 ; =0x04001000
+ ldr r0, _02255074 ; =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 MOD40_02254FD4
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_0225506C: .word 0x02255340
+_02255070: .word 0x04001000
+_02255074: .word 0xFFFFE0FF
+ thumb_func_end MOD40_02254FE8
+
+ thumb_func_start MOD40_02255078
+MOD40_02255078: ; 0x02255078
+ 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 _02255094
+ cmp r0, #1
+ beq _022550A2
+ pop {r3, r4, r5, pc}
+_02255094:
+ add r0, r4, #0
+ bl MOD40_0225530C
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_022550A2:
+ add r0, r4, #0
+ mov r1, #5
+ bl MOD40_02254FBC
+ cmp r0, #0
+ beq _022550BC
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r5, #0
+ bl MOD40_02254FD4
+_022550BC:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD40_02255078
+
+ thumb_func_start MOD40_022550C0
+MOD40_022550C0: ; 0x022550C0
+ 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, _02255138 ; =0x00000663
+ bl MOD20_02252B28
+ ldr r0, [r5, #0x34]
+ mov r1, #3
+ bl MOD20_02253F28
+ ldr r0, [r5, #0x40]
+ mov r1, #5
+ bl MOD20_02253F28
+ ldr r0, [r5, #0x44]
+ mov r1, #5
+ bl MOD20_02253F28
+ ldr r0, [r5, #0x38]
+ mov r1, #0
+ bl MOD20_02253F28
+ ldr r0, [r5, #0x3c]
+ mov r1, #0
+ bl MOD20_02253F28
+ ldr r0, [r5, #0x48]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x4c]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x50]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x54]
+ mov r1, #1
+ bl MOD20_02253F78
+ mov r1, #1
+ mov r2, #2
+ ldrsb r1, [r4, r1]
+ ldrsb r2, [r4, r2]
+ add r0, r5, #0
+ bl MOD40_02254F14
+ add r0, r6, #0
+ bl MOD40_02254FD4
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02255138: .word 0x00000663
+ thumb_func_end MOD40_022550C0
+
+ thumb_func_start MOD40_0225513C
+MOD40_0225513C: ; 0x0225513C
+ 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, _022551B4 ; =0x00000663
+ bl MOD20_02252B28
+ ldr r0, [r5, #0x34]
+ mov r1, #2
+ bl MOD20_02253F28
+ ldr r0, [r5, #0x40]
+ mov r1, #5
+ bl MOD20_02253F28
+ ldr r0, [r5, #0x44]
+ mov r1, #4
+ bl MOD20_02253F28
+ ldr r0, [r5, #0x38]
+ mov r1, #0
+ bl MOD20_02253F28
+ ldr r0, [r5, #0x3c]
+ mov r1, #0
+ bl MOD20_02253F28
+ ldr r0, [r5, #0x48]
+ mov r1, #0
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x4c]
+ mov r1, #0
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x50]
+ mov r1, #0
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x54]
+ mov r1, #0
+ bl MOD20_02253F78
+ mov r1, #3
+ mov r2, #4
+ ldrsb r1, [r4, r1]
+ ldrsb r2, [r4, r2]
+ add r0, r5, #0
+ bl MOD40_02254F14
+ add r0, r6, #0
+ bl MOD40_02254FD4
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_022551B4: .word 0x00000663
+ thumb_func_end MOD40_0225513C
+
+ thumb_func_start MOD40_022551B8
+MOD40_022551B8: ; 0x022551B8
+ 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 r2, r0, #0
+ ldrb r0, [r2]
+ cmp r0, #0
+ beq _022551E2
+ mov r1, #1
+ mov r3, #2
+ ldrsb r1, [r2, r1]
+ ldrsb r2, [r2, r3]
+ add r0, r4, #0
+ bl MOD40_02254F14
+ b _022551F0
+_022551E2:
+ mov r1, #3
+ mov r3, #4
+ ldrsb r1, [r2, r1]
+ ldrsb r2, [r2, r3]
+ add r0, r4, #0
+ bl MOD40_02254F14
+_022551F0:
+ add r0, r5, #0
+ bl MOD40_02254FD4
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD40_022551B8
+
+ thumb_func_start MOD40_022551F8
+MOD40_022551F8: ; 0x022551F8
+ 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 _0225521A
+ cmp r0, #1
+ beq _02255262
+ pop {r3, r4, r5, pc}
+_0225521A:
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x90
+ str r1, [r0]
+ ldr r0, [r4, #0x40]
+ mov r1, #4
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x44]
+ mov r1, #4
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x38]
+ mov r1, #1
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x3c]
+ mov r1, #1
+ bl MOD20_02253F28
+ ldr r0, _02255304 ; =0x00000663
+ bl MOD20_02252B28
+ ldr r0, _02255308 ; =0x00000126
+ bl MOD20_02252B48
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x94
+ str r1, [r0]
+ add r4, #0x98
+ add r0, r5, #0
+ str r1, [r4]
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_02255262:
+ add r0, r4, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _02255294
+ ldr r0, [r4, #0x58]
+ mov r1, #0
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x5c]
+ mov r1, #0
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x60]
+ mov r1, #0
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x64]
+ mov r1, #0
+ bl MOD20_02253F78
+ add r0, r5, #0
+ bl MOD40_02254FD4
+ pop {r3, r4, r5, pc}
+_02255294:
+ bl FUN_02005670
+ cmp r0, #0
+ bne _022552A2
+ ldr r0, _02255308 ; =0x00000126
+ bl MOD20_02252B48
+_022552A2:
+ add r0, r4, #0
+ add r0, #0x94
+ ldr r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x94
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x94
+ ldr r0, [r0]
+ cmp r0, #0xf
+ blo _02255300
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x94
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x98
+ ldr r1, [r0]
+ mov r0, #1
+ eor r1, r0
+ add r0, r4, #0
+ add r0, #0x98
+ str r1, [r0]
+ add r1, r4, #0
+ add r1, #0x98
+ ldr r0, [r4, #0x58]
+ ldr r1, [r1]
+ bl MOD20_02253F78
+ add r1, r4, #0
+ add r1, #0x98
+ ldr r0, [r4, #0x5c]
+ ldr r1, [r1]
+ bl MOD20_02253F78
+ add r1, r4, #0
+ add r1, #0x98
+ ldr r0, [r4, #0x60]
+ ldr r1, [r1]
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x64]
+ add r4, #0x98
+ ldr r1, [r4]
+ bl MOD20_02253F78
+_02255300:
+ pop {r3, r4, r5, pc}
+ nop
+_02255304: .word 0x00000663
+_02255308: .word 0x00000126
+ thumb_func_end MOD40_022551F8
+
+ thumb_func_start MOD40_0225530C
+MOD40_0225530C: ; 0x0225530C
+ mov r1, #1
+ add r0, #0x90
+ str r1, [r0]
+ bx lr
+ thumb_func_end MOD40_0225530C
+
+ .section .rodata
+ ; 0x02255314
+ .incbin "baserom.nds", 0x292AD4, 0x16C
+
+ .section .sinit
+ .word MOD40_02254840
diff --git a/arm9/modules/41/asm/module_41.s b/arm9/modules/41/asm/module_41.s
new file mode 100644
index 00000000..d0b3e013
--- /dev/null
+++ b/arm9/modules/41/asm/module_41.s
@@ -0,0 +1,2032 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD41_02254840
+MOD41_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD41_02254854
+ ldr r1, _02254850 ; =MOD41_02254AD8
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD41_02254854
+_02254850: .word MOD41_02254AD8
+ thumb_func_end MOD41_02254840
+
+ thumb_func_start MOD41_02254854
+MOD41_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x90
+ 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 MOD41_02254990
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD41_02254A88
+ 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 MOD41_02254A88
+ thumb_func_end MOD41_02254854
+
+ thumb_func_start MOD41_0225489C
+MOD41_0225489C: ; 0x0225489C
+ push {r4, r5}
+ mov r4, #0
+ add r5, r0, #0
+ mov r3, #1
+ add r2, r4, #0
+_022548A6:
+ add r1, r0, r4
+ str r3, [r5, #0x5c]
+ add r1, #0x4c
+ add r4, r4, #1
+ add r5, r5, #4
+ strb r2, [r1]
+ cmp r4, #3
+ blt _022548A6
+ str r3, [r0, #0x44]
+ pop {r4, r5}
+ bx lr
+ thumb_func_end MOD41_0225489C
+
+ thumb_func_start MOD41_022548BC
+MOD41_022548BC: ; 0x022548BC
+ lsl r3, r1, #2
+ add r3, r0, r3
+ str r2, [r3, #0x5c]
+ cmp r2, #0
+ beq _022548CA
+ mov r2, #0
+ b _022548CC
+_022548CA:
+ mov r2, #1
+_022548CC:
+ add r1, r0, r1
+ add r1, #0x4c
+ strb r2, [r1]
+ mov r1, #1
+ str r1, [r0, #0x44]
+ bx lr
+ thumb_func_end MOD41_022548BC
+
+ thumb_func_start MOD41_022548D8
+MOD41_022548D8: ; 0x022548D8
+ lsl r3, r1, #2
+ add r3, r0, r3
+ ldr r3, [r3, #0x5c]
+ cmp r3, #0
+ beq _022548EC
+ add r1, r0, r1
+ add r1, #0x4c
+ strb r2, [r1]
+ mov r1, #1
+ str r1, [r0, #0x44]
+_022548EC:
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD41_022548D8
+
+ thumb_func_start MOD41_022548F0
+MOD41_022548F0: ; 0x022548F0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #8]
+ add r4, r1, #0
+ bl MOD41_0225578C
+ str r0, [r4, #0x10]
+ ldr r0, [r5, #4]
+ add r1, r4, #0
+ mov r2, #0x48
+ bl FUN_020893F0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD41_022548F0
+
+ thumb_func_start MOD41_0225490C
+MOD41_0225490C: ; 0x0225490C
+ push {r4, lr}
+ add r4, r0, #0
+ add r1, r4, #0
+ ldr r0, [r4, #4]
+ add r1, #0x48
+ mov r2, #0x48
+ bl FUN_02089418
+ cmp r0, #0
+ beq _0225494C
+ add r0, r4, #0
+ add r0, #0x8c
+ ldr r0, [r0]
+ cmp r0, #2
+ bne _02254952
+ add r0, r4, #0
+ bl MOD41_02255108
+ add r0, r4, #0
+ bl MOD41_022550F8
+ cmp r0, #0
+ beq _02254952
+ add r0, r4, #0
+ mov r1, #4
+ add r0, #0x8c
+ str r1, [r0]
+ mov r0, #0
+ str r0, [r4, #0x50]
+ mov r0, #2
+ str r0, [r4, #0x54]
+ pop {r4, pc}
+_0225494C:
+ add r0, r4, #0
+ bl MOD41_02254954
+_02254952:
+ pop {r4, pc}
+ thumb_func_end MOD41_0225490C
+
+ thumb_func_start MOD41_02254954
+MOD41_02254954: ; 0x02254954
+ push {r4, lr}
+ add r4, r0, #0
+ add r1, r4, #0
+ add r3, r4, #0
+ mov r2, #1
+ add r1, #0x8c
+ str r2, [r1]
+ mov r1, #0
+ add r3, #0x48
+ strb r1, [r3]
+ add r3, r4, #0
+ add r3, #0x49
+ strb r1, [r3]
+ add r3, r4, #0
+ add r3, #0x4a
+ strb r1, [r3]
+ add r3, r4, #0
+ add r3, #0x4b
+ strb r1, [r3]
+ str r2, [r4, #0x50]
+ str r1, [r4, #0x54]
+ str r1, [r4, #0x58]
+ bl MOD41_0225489C
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #0
+ bl MOD41_022548BC
+ pop {r4, pc}
+ thumb_func_end MOD41_02254954
+
+ thumb_func_start MOD41_02254990
+MOD41_02254990: ; 0x02254990
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ str r3, [r5, #4]
+ bl MOD41_0225490C
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #8
+ add r1, #0x48
+ add r2, r6, #0
+ bl MOD41_0225524C
+ cmp r0, #0
+ beq _02254A28
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #3]
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _02254A30 ; =0x022557B0
+ ldr r2, _02254A34 ; =MOD41_02254A58
+ mov r1, #0xb
+ add r3, r5, #0
+ bl MOD20_02254130
+ str r0, [r5, #0x10]
+ mov r0, #0
+ str r0, [r5, #0x18]
+ ldr r0, [r5, #0x10]
+ mov r1, #3
+ mov r2, #4
+ bl MOD20_022542C0
+ ldr r0, [r5, #0x10]
+ mov r1, #5
+ mov r2, #4
+ bl MOD20_022542C0
+ mov r1, #4
+ ldr r0, [r5, #0x10]
+ add r2, r1, #0
+ bl MOD20_022542C0
+ ldr r0, [r5, #0x10]
+ mov r1, #6
+ mov r2, #4
+ bl MOD20_022542C0
+ ldr r0, [r5, #0x10]
+ mov r1, #7
+ mov r2, #4
+ bl MOD20_022542C0
+ ldr r0, [r5, #0x10]
+ mov r1, #9
+ mov r2, #4
+ bl MOD20_022542C0
+ ldr r0, [r5, #0x10]
+ mov r1, #8
+ mov r2, #4
+ bl MOD20_022542C0
+ ldr r0, [r5, #0x10]
+ mov r1, #0xa
+ mov r2, #4
+ bl MOD20_022542C0
+ add sp, #4
+ str r4, [r5, #0xc]
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_02254A28:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02254A30: .word 0x022557B0
+_02254A34: .word MOD41_02254A58
+ thumb_func_end MOD41_02254990
+
+ thumb_func_start MOD41_02254A38
+MOD41_02254A38: ; 0x02254A38
+ push {r4, lr}
+ add r4, r0, #0
+ add r1, r4, #0
+ add r1, #0x48
+ bl MOD41_022548F0
+ ldr r0, [r4, #0x10]
+ bl MOD20_02254198
+ ldr r0, [r4, #8]
+ bl MOD41_0225528C
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD41_02254A38
+
+ thumb_func_start MOD41_02254A58
+MOD41_02254A58: ; 0x02254A58
+ push {r3, lr}
+ add r2, r0, #0
+ str r2, [r3, #0x14]
+ str r1, [r3, #0x18]
+ cmp r2, #3
+ bhs _02254A84
+ cmp r1, #1
+ bne _02254A74
+ add r1, r2, #0
+ add r0, r3, #0
+ mov r2, #1
+ bl MOD41_022548D8
+ pop {r3, pc}
+_02254A74:
+ sub r0, r1, #2
+ cmp r0, #1
+ bhi _02254A84
+ add r1, r2, #0
+ add r0, r3, #0
+ mov r2, #0
+ bl MOD41_022548D8
+_02254A84:
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD41_02254A58
+
+ thumb_func_start MOD41_02254A88
+MOD41_02254A88: ; 0x02254A88
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #7
+ bhs _02254AD0
+ ldr r0, [r4, #0xc]
+ ldr r1, [r4, #0x10]
+ bl MOD20_02252C14
+ ldr r0, [r4, #0x44]
+ cmp r0, #0
+ beq _02254AAE
+ ldr r0, [r4, #8]
+ mov r1, #4
+ bl MOD41_022553A4
+ mov r0, #0
+ str r0, [r4, #0x44]
+_02254AAE:
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _02254AD4 ; =0x02255794
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254AD0
+ add r0, r4, #0
+ bl MOD41_02254A38
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0xc]
+ bl MOD20_022529A0
+_02254AD0:
+ pop {r3, r4, r5, pc}
+ nop
+_02254AD4: .word 0x02255794
+ thumb_func_end MOD41_02254A88
+
+ thumb_func_start MOD41_02254AD8
+MOD41_02254AD8: ; 0x02254AD8
+ mov r1, #1
+ strb r1, [r0, #3]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD41_02254AD8
+
+ thumb_func_start MOD41_02254AE0
+MOD41_02254AE0: ; 0x02254AE0
+ ldrb r3, [r0, #3]
+ ldrb r2, [r0]
+ cmp r3, #0
+ beq _02254AEA
+ mov r1, #6
+_02254AEA:
+ strb r1, [r0]
+ cmp r1, #0
+ beq _02254AFA
+ cmp r1, #6
+ beq _02254AFA
+ add r3, r0, #0
+ add r3, #0x8c
+ str r2, [r3]
+_02254AFA:
+ cmp r1, #6
+ bhi _02254B50
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02254B0A: ; jump table
+ .short _02254B50 - _02254B0A - 2 ; case 0
+ .short _02254B18 - _02254B0A - 2 ; case 1
+ .short _02254B22 - _02254B0A - 2 ; case 2
+ .short _02254B2C - _02254B0A - 2 ; case 3
+ .short _02254B36 - _02254B0A - 2 ; case 4
+ .short _02254B40 - _02254B0A - 2 ; case 5
+ .short _02254B4A - _02254B0A - 2 ; case 6
+_02254B18:
+ mov r1, #1
+ str r1, [r0, #0x50]
+ mov r1, #0
+ str r1, [r0, #0x54]
+ b _02254B50
+_02254B22:
+ mov r1, #0
+ str r1, [r0, #0x50]
+ mov r1, #1
+ str r1, [r0, #0x54]
+ b _02254B50
+_02254B2C:
+ mov r1, #0
+ str r1, [r0, #0x50]
+ mov r1, #1
+ str r1, [r0, #0x54]
+ b _02254B50
+_02254B36:
+ mov r1, #0
+ str r1, [r0, #0x50]
+ mov r1, #2
+ str r1, [r0, #0x54]
+ b _02254B50
+_02254B40:
+ mov r1, #0
+ str r1, [r0, #0x50]
+ mov r1, #3
+ str r1, [r0, #0x54]
+ b _02254B50
+_02254B4A:
+ add r1, r0, #0
+ add r1, #0x8c
+ str r2, [r1]
+_02254B50:
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD41_02254AE0
+
+ thumb_func_start MOD41_02254B58
+MOD41_02254B58: ; 0x02254B58
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254B68
+ cmp r0, #1
+ beq _02254B78
+ b _02254B94
+_02254B68:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD41_022553A4
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254B94
+_02254B78:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD41_022553C8
+ cmp r0, #0
+ beq _02254B94
+ ldr r0, [r4, #0xc]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ add r4, #0x8c
+ ldr r1, [r4]
+ bl MOD41_02254AE0
+_02254B94:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD41_02254B58
+
+ thumb_func_start MOD41_02254B98
+MOD41_02254B98: ; 0x02254B98
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #3]
+ cmp r1, #0
+ beq _02254BAC
+ mov r1, #6
+ bl MOD41_02254AE0
+ mov r0, #0
+ pop {r4, pc}
+_02254BAC:
+ ldr r0, [r4, #8]
+ bl MOD41_022553D4
+ cmp r0, #0
+ bne _02254BBA
+ mov r0, #0
+ pop {r4, pc}
+_02254BBA:
+ ldr r1, [r4, #0x18]
+ cmp r1, #1
+ bne _02254C36
+ ldr r0, [r4, #0x14]
+ cmp r0, #2
+ bhi _02254C36
+ mov r0, #0
+ str r0, [r4, #0x18]
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _02254BEE
+ cmp r0, #1
+ beq _02254C2C
+ cmp r0, #2
+ bne _02254C32
+ add r0, r4, #0
+ bl MOD41_02255170
+ ldr r0, [r4, #8]
+ mov r1, #5
+ bl MOD41_022553A4
+ ldr r0, _02254D18 ; =0x00000663
+ bl MOD20_02252B28
+ b _02254C32
+_02254BEE:
+ ldr r0, _02254D18 ; =0x00000663
+ bl MOD20_02252B28
+ add r0, r4, #0
+ bl MOD41_0225504C
+ mov r3, #0
+ mov r2, #0
+ eor r1, r3
+ eor r0, r2
+ orr r0, r1
+ beq _02254C32
+ mov r1, #0
+ add r0, r4, #0
+ add r2, r1, #0
+ bl MOD41_022548BC
+ mov r1, #1
+ add r0, r4, #0
+ add r2, r1, #0
+ bl MOD41_022548BC
+ ldr r0, [r4, #8]
+ mov r1, #3
+ bl MOD41_022553A4
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD41_02254AE0
+ b _02254C32
+_02254C2C:
+ ldr r0, _02254D1C ; =0x0000066E
+ bl MOD20_02252B28
+_02254C32:
+ mov r0, #0
+ pop {r4, pc}
+_02254C36:
+ cmp r1, #1
+ beq _02254C3E
+ cmp r1, #7
+ bne _02254D12
+_02254C3E:
+ ldr r1, [r4, #0x14]
+ add r0, r4, #0
+ add r0, #0x48
+ cmp r1, #0xa
+ bhi _02254D06
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02254C54: ; jump table
+ .short _02254D06 - _02254C54 - 2 ; case 0
+ .short _02254D06 - _02254C54 - 2 ; case 1
+ .short _02254D06 - _02254C54 - 2 ; case 2
+ .short _02254C6A - _02254C54 - 2 ; case 3
+ .short _02254C7C - _02254C54 - 2 ; case 4
+ .short _02254C90 - _02254C54 - 2 ; case 5
+ .short _02254CA4 - _02254C54 - 2 ; case 6
+ .short _02254CB8 - _02254C54 - 2 ; case 7
+ .short _02254CCC - _02254C54 - 2 ; case 8
+ .short _02254CE0 - _02254C54 - 2 ; case 9
+ .short _02254CF4 - _02254C54 - 2 ; case 10
+_02254C6A:
+ mov r1, #0
+ ldrsb r2, [r0, r1]
+ add r2, r2, #1
+ strb r2, [r0]
+ ldrsb r2, [r0, r1]
+ cmp r2, #9
+ ble _02254D06
+ strb r1, [r0]
+ b _02254D06
+_02254C7C:
+ mov r1, #1
+ ldrsb r2, [r0, r1]
+ add r2, r2, #1
+ strb r2, [r0, #1]
+ ldrsb r1, [r0, r1]
+ cmp r1, #9
+ ble _02254D06
+ mov r1, #0
+ strb r1, [r0, #1]
+ b _02254D06
+_02254C90:
+ mov r1, #0
+ ldrsb r2, [r0, r1]
+ sub r2, r2, #1
+ strb r2, [r0]
+ ldrsb r1, [r0, r1]
+ cmp r1, #0
+ bge _02254D06
+ mov r1, #9
+ strb r1, [r0]
+ b _02254D06
+_02254CA4:
+ mov r1, #1
+ ldrsb r2, [r0, r1]
+ sub r2, r2, #1
+ strb r2, [r0, #1]
+ ldrsb r1, [r0, r1]
+ cmp r1, #0
+ bge _02254D06
+ mov r1, #9
+ strb r1, [r0, #1]
+ b _02254D06
+_02254CB8:
+ mov r1, #2
+ ldrsb r2, [r0, r1]
+ add r2, r2, #1
+ strb r2, [r0, #2]
+ ldrsb r1, [r0, r1]
+ cmp r1, #5
+ ble _02254D06
+ mov r1, #0
+ strb r1, [r0, #2]
+ b _02254D06
+_02254CCC:
+ mov r1, #3
+ ldrsb r2, [r0, r1]
+ add r2, r2, #1
+ strb r2, [r0, #3]
+ ldrsb r1, [r0, r1]
+ cmp r1, #9
+ ble _02254D06
+ mov r1, #0
+ strb r1, [r0, #3]
+ b _02254D06
+_02254CE0:
+ mov r1, #2
+ ldrsb r2, [r0, r1]
+ sub r2, r2, #1
+ strb r2, [r0, #2]
+ ldrsb r1, [r0, r1]
+ cmp r1, #0
+ bge _02254D06
+ mov r1, #5
+ strb r1, [r0, #2]
+ b _02254D06
+_02254CF4:
+ mov r1, #3
+ ldrsb r2, [r0, r1]
+ sub r2, r2, #1
+ strb r2, [r0, #3]
+ ldrsb r1, [r0, r1]
+ cmp r1, #0
+ bge _02254D06
+ mov r1, #9
+ strb r1, [r0, #3]
+_02254D06:
+ ldr r0, [r4, #8]
+ mov r1, #5
+ bl MOD41_022553A4
+ mov r0, #0
+ str r0, [r4, #0x18]
+_02254D12:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_02254D18: .word 0x00000663
+_02254D1C: .word 0x0000066E
+ thumb_func_end MOD41_02254B98
+
+ thumb_func_start MOD41_02254D20
+MOD41_02254D20: ; 0x02254D20
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #3]
+ cmp r1, #0
+ beq _02254D34
+ mov r1, #6
+ bl MOD41_02254AE0
+ mov r0, #0
+ pop {r4, pc}
+_02254D34:
+ bl MOD41_02255108
+ cmp r0, #0
+ beq _02254D6C
+ ldr r0, [r4, #8]
+ mov r1, #5
+ bl MOD41_022553A4
+ add r0, r4, #0
+ bl MOD41_022550F8
+ cmp r0, #0
+ beq _02254D6C
+ mov r1, #0
+ add r0, r4, #0
+ add r2, r1, #0
+ bl MOD41_022548BC
+ ldr r0, [r4, #8]
+ mov r1, #6
+ bl MOD41_022553A4
+ add r0, r4, #0
+ mov r1, #4
+ bl MOD41_02254AE0
+ mov r0, #0
+ pop {r4, pc}
+_02254D6C:
+ ldr r0, [r4, #0x18]
+ cmp r0, #1
+ bne _02254E00
+ mov r0, #0
+ str r0, [r4, #0x18]
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _02254D86
+ cmp r0, #1
+ beq _02254D8E
+ cmp r0, #2
+ beq _02254DC0
+ b _02254E00
+_02254D86:
+ ldr r0, _02254E04 ; =0x0000066E
+ bl MOD20_02252B28
+ b _02254E00
+_02254D8E:
+ ldr r0, _02254E08 ; =0x00000663
+ bl MOD20_02252B28
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #0
+ bl MOD41_022548BC
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #1
+ bl MOD41_022548BC
+ add r0, r4, #0
+ bl MOD41_022550BC
+ ldr r0, [r4, #8]
+ mov r1, #4
+ bl MOD41_022553A4
+ add r0, r4, #0
+ mov r1, #3
+ bl MOD41_02254AE0
+ b _02254E00
+_02254DC0:
+ ldr r0, _02254E08 ; =0x00000663
+ bl MOD20_02252B28
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #1
+ bl MOD41_022548BC
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #0
+ bl MOD41_022548BC
+ add r0, r4, #0
+ bl MOD41_02255170
+ ldr r0, [r4, #8]
+ mov r1, #4
+ bl MOD41_022553A4
+ ldr r0, [r4, #8]
+ mov r1, #5
+ bl MOD41_022553A4
+ ldr r0, [r4, #8]
+ mov r1, #2
+ bl MOD41_022553A4
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD41_02254AE0
+_02254E00:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+_02254E04: .word 0x0000066E
+_02254E08: .word 0x00000663
+ thumb_func_end MOD41_02254D20
+
+ thumb_func_start MOD41_02254E0C
+MOD41_02254E0C: ; 0x02254E0C
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #3]
+ cmp r1, #0
+ beq _02254E20
+ mov r1, #6
+ bl MOD41_02254AE0
+ mov r0, #0
+ pop {r4, pc}
+_02254E20:
+ ldr r0, [r4, #0x18]
+ cmp r0, #1
+ bne _02254EAC
+ mov r0, #0
+ str r0, [r4, #0x18]
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _02254E3A
+ cmp r0, #1
+ beq _02254E64
+ cmp r0, #2
+ beq _02254E6C
+ b _02254EAC
+_02254E3A:
+ ldr r0, _02254EB0 ; =0x00000663
+ bl MOD20_02252B28
+ mov r1, #1
+ add r0, r4, #0
+ add r2, r1, #0
+ bl MOD41_022548BC
+ mov r1, #0
+ add r0, r4, #0
+ add r2, r1, #0
+ bl MOD41_022548BC
+ add r0, r4, #0
+ bl MOD41_022550D0
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD41_02254AE0
+ b _02254EAC
+_02254E64:
+ ldr r0, _02254EB4 ; =0x0000066E
+ bl MOD20_02252B28
+ b _02254EAC
+_02254E6C:
+ ldr r0, _02254EB0 ; =0x00000663
+ bl MOD20_02252B28
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #1
+ bl MOD41_022548BC
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #0
+ bl MOD41_022548BC
+ add r0, r4, #0
+ bl MOD41_02255170
+ ldr r0, [r4, #8]
+ mov r1, #4
+ bl MOD41_022553A4
+ ldr r0, [r4, #8]
+ mov r1, #5
+ bl MOD41_022553A4
+ ldr r0, [r4, #8]
+ mov r1, #2
+ bl MOD41_022553A4
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD41_02254AE0
+_02254EAC:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+_02254EB0: .word 0x00000663
+_02254EB4: .word 0x0000066E
+ thumb_func_end MOD41_02254E0C
+
+ thumb_func_start MOD41_02254EB8
+MOD41_02254EB8: ; 0x02254EB8
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #3]
+ cmp r1, #0
+ beq _02254ECC
+ mov r1, #6
+ bl MOD41_02254AE0
+ mov r0, #0
+ pop {r4, pc}
+_02254ECC:
+ ldr r0, [r4, #0x18]
+ cmp r0, #1
+ bne _02254F52
+ mov r0, #0
+ str r0, [r4, #0x18]
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _02254EE6
+ cmp r0, #1
+ beq _02254EEE
+ cmp r0, #2
+ beq _02254F20
+ b _02254F52
+_02254EE6:
+ ldr r0, _02254F58 ; =0x0000066E
+ bl MOD20_02252B28
+ b _02254F52
+_02254EEE:
+ ldr r0, _02254F5C ; =0x00000663
+ bl MOD20_02252B28
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #1
+ bl MOD41_022548BC
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #0
+ bl MOD41_022548BC
+ ldr r0, [r4, #8]
+ mov r1, #7
+ bl MOD41_022553A4
+ add r0, r4, #0
+ mov r1, #5
+ bl MOD41_02254AE0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254F52
+_02254F20:
+ ldr r0, _02254F5C ; =0x00000663
+ bl MOD20_02252B28
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #1
+ bl MOD41_022548BC
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #0
+ bl MOD41_022548BC
+ ldr r0, [r4, #8]
+ mov r1, #7
+ bl MOD41_022553A4
+ ldr r0, [r4, #8]
+ mov r1, #2
+ bl MOD41_022553A4
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD41_02254AE0
+_02254F52:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_02254F58: .word 0x0000066E
+_02254F5C: .word 0x00000663
+ thumb_func_end MOD41_02254EB8
+
+ thumb_func_start MOD41_02254F60
+MOD41_02254F60: ; 0x02254F60
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #3]
+ cmp r1, #0
+ beq _02254F74
+ mov r1, #6
+ bl MOD41_02254AE0
+ mov r0, #0
+ pop {r4, pc}
+_02254F74:
+ ldr r0, [r4, #0x18]
+ cmp r0, #1
+ bne _0225500A
+ mov r0, #0
+ str r0, [r4, #0x18]
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _02254F8E
+ cmp r0, #1
+ beq _02254FBA
+ cmp r0, #2
+ beq _02254FC2
+ b _0225500A
+_02254F8E:
+ ldr r0, _02255010 ; =0x00000663
+ bl MOD20_02252B28
+ mov r1, #0
+ add r0, r4, #0
+ add r2, r1, #0
+ bl MOD41_022548BC
+ mov r1, #1
+ add r0, r4, #0
+ add r2, r1, #0
+ bl MOD41_022548BC
+ ldr r0, [r4, #8]
+ mov r1, #6
+ bl MOD41_022553A4
+ add r0, r4, #0
+ mov r1, #4
+ bl MOD41_02254AE0
+ b _0225500A
+_02254FBA:
+ ldr r0, _02255014 ; =0x0000066E
+ bl MOD20_02252B28
+ b _0225500A
+_02254FC2:
+ ldr r0, _02255010 ; =0x00000663
+ bl MOD20_02252B28
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #1
+ bl MOD41_022548BC
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #0
+ bl MOD41_022548BC
+ add r0, r4, #0
+ bl MOD41_02255170
+ ldr r0, [r4, #8]
+ mov r1, #7
+ bl MOD41_022553A4
+ ldr r0, [r4, #8]
+ mov r1, #4
+ bl MOD41_022553A4
+ ldr r0, [r4, #8]
+ mov r1, #5
+ bl MOD41_022553A4
+ ldr r0, [r4, #8]
+ mov r1, #2
+ bl MOD41_022553A4
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD41_02254AE0
+_0225500A:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_02255010: .word 0x00000663
+_02255014: .word 0x0000066E
+ thumb_func_end MOD41_02254F60
+
+ thumb_func_start MOD41_02255018
+MOD41_02255018: ; 0x02255018
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02255028
+ cmp r0, #1
+ beq _02255038
+ b _02255046
+_02255028:
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl MOD41_022553A4
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02255046
+_02255038:
+ ldr r0, [r4, #8]
+ bl MOD41_022553D4
+ cmp r0, #0
+ beq _02255046
+ mov r0, #1
+ pop {r4, pc}
+_02255046:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD41_02255018
+
+ thumb_func_start MOD41_0225504C
+MOD41_0225504C: ; 0x0225504C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r5, #0
+ add r4, #0x48
+ bl FUN_02020BF4
+ str r0, [r5, #0x68]
+ str r1, [r5, #0x6c]
+ mov r2, #0
+ str r2, [r5, #0x70]
+ add r0, r5, #0
+ str r2, [r5, #0x74]
+ mov r1, #1
+ add r0, #0x88
+ str r1, [r0]
+ str r2, [r5, #0x78]
+ str r2, [r5, #0x7c]
+ mov r2, #2
+ ldrsb r3, [r4, r2]
+ mov r0, #3
+ ldrsb r0, [r4, r0]
+ add r6, r3, #0
+ ldrsb r3, [r4, r1]
+ mov r1, #0x48
+ mov r2, #0xa
+ mul r6, r2
+ ldrsb r1, [r5, r1]
+ add r0, r0, r6
+ mul r2, r1
+ add r2, r3, r2
+ mov r1, #0x3c
+ mul r1, r2
+ add r2, r0, r1
+ add r0, r5, #0
+ add r0, #0x80
+ str r2, [r0]
+ add r0, r5, #0
+ asr r1, r2, #0x1f
+ add r0, #0x84
+ str r1, [r0]
+ add r1, r5, #0
+ add r2, r5, #0
+ add r1, #0x80
+ add r2, #0x84
+ ldr r1, [r1]
+ ldr r2, [r2]
+ add r0, r5, #0
+ bl MOD41_02255190
+ add r0, r5, #0
+ add r0, #0x80
+ add r5, #0x84
+ ldr r0, [r0]
+ ldr r1, [r5]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD41_0225504C
+
+ thumb_func_start MOD41_022550BC
+MOD41_022550BC: ; 0x022550BC
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #0
+ add r0, #0x88
+ str r1, [r0]
+ bl FUN_02020BF4
+ str r0, [r4, #0x70]
+ str r1, [r4, #0x74]
+ pop {r4, pc}
+ thumb_func_end MOD41_022550BC
+
+ thumb_func_start MOD41_022550D0
+MOD41_022550D0: ; 0x022550D0
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ bl FUN_02020BF4
+ add r5, r4, #0
+ add r5, #0x68
+ ldr r7, [r4, #0x70]
+ ldr r2, [r4, #0x68]
+ ldr r6, [r4, #0x74]
+ sub r0, r0, r7
+ sbc r1, r6
+ ldr r3, [r5, #4]
+ add r0, r2, r0
+ adc r3, r1
+ str r0, [r4, #0x68]
+ str r3, [r5, #4]
+ mov r0, #1
+ add r4, #0x88
+ str r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD41_022550D0
+
+ thumb_func_start MOD41_022550F8
+MOD41_022550F8: ; 0x022550F8
+ add r0, #0x88
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _02255104
+ mov r0, #1
+ bx lr
+_02255104:
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD41_022550F8
+
+ thumb_func_start MOD41_02255108
+MOD41_02255108: ; 0x02255108
+ push {r4, r5, r6, lr}
+ add r4, r0, #0
+ add r0, #0x88
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0225516A
+ bl FUN_02020BF4
+ ldr r3, [r4, #0x68]
+ ldr r2, [r4, #0x6c]
+ sub r0, r0, r3
+ sbc r1, r2
+ bl FUN_02020C14
+ add r5, r0, #0
+ add r0, r4, #0
+ add r0, #0x80
+ add r6, r1, #0
+ ldr r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r2, [r0]
+ sub r0, r5, r1
+ mov ip, r6
+ mov r0, ip
+ sbc r0, r2
+ blo _02255148
+ add r0, r4, #0
+ bl MOD41_02255170
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02255148:
+ ldr r3, [r4, #0x78]
+ ldr r0, [r4, #0x7c]
+ eor r3, r5
+ eor r0, r6
+ orr r0, r3
+ beq _02255166
+ add r0, r4, #0
+ sub r1, r1, r5
+ sbc r2, r6
+ bl MOD41_02255190
+ str r5, [r4, #0x78]
+ str r6, [r4, #0x7c]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02255166:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_0225516A:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD41_02255108
+
+ thumb_func_start MOD41_02255170
+MOD41_02255170: ; 0x02255170
+ add r1, r0, #0
+ mov r2, #0
+ add r1, #0x88
+ str r2, [r1]
+ add r1, r0, #0
+ add r1, #0x48
+ strb r2, [r1]
+ add r1, r0, #0
+ add r1, #0x49
+ strb r2, [r1]
+ add r1, r0, #0
+ add r1, #0x4a
+ strb r2, [r1]
+ add r0, #0x4b
+ strb r2, [r0]
+ bx lr
+ thumb_func_end MOD41_02255170
+
+ thumb_func_start MOD41_02255190
+MOD41_02255190: ; 0x02255190
+ push {r3, r4, r5, r6}
+ add r3, r0, #0
+ ldr r0, _02255240 ; =0x04000280
+ mov r4, #1
+ strh r4, [r0]
+ add r4, r0, #0
+ add r4, #0x10
+ str r1, [r4]
+ str r2, [r4, #4]
+ add r1, r0, #0
+ mov r4, #0x3c
+ add r1, #0x18
+ mov r2, #0
+ str r4, [r1]
+ str r2, [r1, #4]
+ lsr r1, r0, #0xb
+_022551B0:
+ ldrh r2, [r0]
+ tst r2, r1
+ bne _022551B0
+ ldr r0, _02255244 ; =0x040002A0
+ ldr r6, _02255240 ; =0x04000280
+ ldr r0, [r0]
+ lsr r1, r6, #0xb
+_022551BE:
+ ldrh r2, [r6]
+ tst r2, r1
+ bne _022551BE
+ ldr r5, _02255248 ; =0x040002A8
+ mov r4, #0
+ ldr r2, [r5]
+ add r1, r5, #0
+ strh r4, [r6]
+ sub r1, #0x18
+ str r0, [r1]
+ mov r0, #0xa
+ sub r5, #0x10
+ str r0, [r5]
+ str r4, [r5, #4]
+ ldr r4, _02255240 ; =0x04000280
+ lsr r0, r4, #0xb
+_022551DE:
+ ldrh r1, [r4]
+ tst r1, r0
+ bne _022551DE
+ ldr r0, _02255244 ; =0x040002A0
+ ldr r1, [r0]
+ add r0, r3, #0
+ add r0, #0x48
+ strb r1, [r0]
+ ldr r1, _02255240 ; =0x04000280
+ lsr r0, r1, #0xb
+_022551F2:
+ ldrh r4, [r1]
+ tst r4, r0
+ bne _022551F2
+ ldr r0, _02255248 ; =0x040002A8
+ add r4, r3, #0
+ ldr r5, [r0]
+ add r4, #0x49
+ strb r5, [r4]
+ mov r4, #0
+ strh r4, [r1]
+ add r1, r0, #0
+ sub r1, #0x18
+ str r2, [r1]
+ mov r1, #0xa
+ sub r0, #0x10
+ str r1, [r0]
+ ldr r2, _02255240 ; =0x04000280
+ str r4, [r0, #4]
+ lsr r0, r2, #0xb
+_02255218:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _02255218
+ ldr r0, _02255244 ; =0x040002A0
+ ldr r2, _02255240 ; =0x04000280
+ ldr r1, [r0]
+ add r0, r3, #0
+ add r0, #0x4a
+ strb r1, [r0]
+ lsr r0, r2, #0xb
+_0225522C:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _0225522C
+ ldr r0, _02255248 ; =0x040002A8
+ add r3, #0x4b
+ ldr r0, [r0]
+ strb r0, [r3]
+ pop {r3, r4, r5, r6}
+ bx lr
+ nop
+_02255240: .word 0x04000280
+_02255244: .word 0x040002A0
+_02255248: .word 0x040002A8
+ thumb_func_end MOD41_02255190
+
+ thumb_func_start MOD41_0225524C
+MOD41_0225524C: ; 0x0225524C
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r0, #8
+ mov r1, #0xac
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02255288
+ add r0, #8
+ mov r1, #8
+ bl MOD20_022536F4
+ str r5, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ bl MOD20_02252D24
+ str r0, [r4, #0x30]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD41_022552A0
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _02255288
+ str r4, [r6]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02255288:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD41_0225524C
+
+ thumb_func_start MOD41_0225528C
+MOD41_0225528C: ; 0x0225528C
+ push {r4, lr}
+ add r4, r0, #0
+ beq _0225529C
+ bl MOD41_02255374
+ add r0, r4, #0
+ bl FUN_02016A18
+_0225529C:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD41_0225528C
+
+ thumb_func_start MOD41_022552A0
+MOD41_022552A0: ; 0x022552A0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ add r7, r0, #0
+ str r1, [sp, #0xc]
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #2
+ bl FUN_02006A34
+ mov r0, #0
+ str r0, [sp]
+ mov r2, #1
+ mov r3, #0xa
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x5e
+ lsl r3, r3, #8
+ bl FUN_02006A34
+ mov r0, #8
+ str r0, [sp]
+ add r0, r7, #0
+ add r0, #0x78
+ mov r1, #0xc
+ mov r2, #0x5c
+ mov r3, #0x5d
+ bl MOD20_02253FBC
+ mov r0, #8
+ str r0, [sp]
+ add r0, r7, #0
+ add r0, #0x8c
+ mov r1, #0xc
+ mov r2, #3
+ mov r3, #4
+ bl MOD20_02253FBC
+ add r0, r7, #0
+ str r0, [sp, #0x14]
+ add r0, #0x78
+ str r0, [sp, #0x14]
+ add r0, r7, #0
+ str r0, [sp, #0x10]
+ add r0, #0x8c
+ ldr r6, _02255370 ; =0x02255864
+ mov r4, #0
+ add r5, r7, #0
+ str r0, [sp, #0x10]
+_0225530E:
+ cmp r4, #0xd
+ blt _02255324
+ cmp r4, #0x10
+ bgt _02255324
+ ldr r0, [r7, #0x30]
+ ldr r2, [sp, #0x10]
+ add r1, r6, #0
+ bl MOD20_02253E74
+ str r0, [r5, #0x34]
+ b _02255336
+_02255324:
+ ldr r0, [r7, #0x30]
+ ldr r2, [sp, #0x14]
+ add r1, r6, #0
+ bl MOD20_02253E74
+ mov r1, #0x50
+ str r0, [r5, #0x34]
+ bl MOD20_02253FA4
+_02255336:
+ add r4, r4, #1
+ add r6, #0x10
+ add r5, r5, #4
+ cmp r4, #0x11
+ blt _0225530E
+ ldr r1, [sp, #0xc]
+ add r0, r7, #0
+ bl MOD41_022556D4
+ ldr r1, [sp, #0xc]
+ add r0, r7, #0
+ bl MOD41_02255714
+ ldr r0, [sp, #0xc]
+ ldr r0, [r0, #8]
+ cmp r0, #0
+ bne _0225535C
+ mov r1, #1
+ b _0225535E
+_0225535C:
+ mov r1, #0
+_0225535E:
+ add r0, r7, #0
+ bl MOD41_02255744
+ mov r0, #0
+ add r7, #0xa8
+ str r0, [r7]
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02255370: .word 0x02255864
+ thumb_func_end MOD41_022552A0
+
+ thumb_func_start MOD41_02255374
+MOD41_02255374: ; 0x02255374
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+_0225537C:
+ ldr r1, [r5, #0x34]
+ cmp r1, #0
+ beq _02255388
+ ldr r0, [r6, #0x30]
+ bl MOD20_02253F14
+_02255388:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0x11
+ blt _0225537C
+ add r0, r6, #0
+ add r0, #0x78
+ bl MOD20_02254014
+ add r6, #0x8c
+ add r0, r6, #0
+ bl MOD20_02254014
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD41_02255374
+
+ thumb_func_start MOD41_022553A4
+MOD41_022553A4: ; 0x022553A4
+ 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, _022553C4 ; =0x022557F8
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_022553C4: .word 0x022557F8
+ thumb_func_end MOD41_022553A4
+
+ thumb_func_start MOD41_022553C8
+MOD41_022553C8: ; 0x022553C8
+ ldr r3, _022553D0 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_022553D0: .word MOD20_02253794
+ thumb_func_end MOD41_022553C8
+
+ thumb_func_start MOD41_022553D4
+MOD41_022553D4: ; 0x022553D4
+ ldr r3, _022553DC ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_022553DC: .word MOD20_022537B8
+ thumb_func_end MOD41_022553D4
+
+ thumb_func_start MOD41_022553E0
+MOD41_022553E0: ; 0x022553E0
+ 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 MOD41_022553E0
+
+ thumb_func_start MOD41_022553F4
+MOD41_022553F4: ; 0x022553F4
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ ldr r2, _022554CC ; =0x022557DC
+ 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, #0x5b
+ 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, #0x5a
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, _022554D0 ; =0x04001000
+ ldr r0, _022554D4 ; =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]
+ ldr r1, [r4]
+ ldr r0, [r1, #0xc]
+ cmp r0, #1
+ beq _02255488
+ cmp r0, #2
+ beq _0225547E
+ cmp r0, #3
+ beq _0225549A
+ b _022554C0
+_0225547E:
+ add r0, r4, #0
+ mov r1, #6
+ bl MOD41_022553A4
+ b _022554C0
+_02255488:
+ ldr r0, [r4, #0x34]
+ mov r1, #3
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x38]
+ mov r1, #1
+ bl MOD20_02253F28
+ b _022554C0
+_0225549A:
+ ldr r0, [r1, #0x10]
+ cmp r0, #0
+ ldr r0, [r4, #0x34]
+ beq _022554B2
+ mov r1, #2
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x38]
+ mov r1, #1
+ bl MOD20_02253F28
+ b _022554C0
+_022554B2:
+ mov r1, #3
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x38]
+ mov r1, #0
+ bl MOD20_02253F28
+_022554C0:
+ add r0, r5, #0
+ bl MOD41_022553E0
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_022554CC: .word 0x022557DC
+_022554D0: .word 0x04001000
+_022554D4: .word 0xFFFFE0FF
+ thumb_func_end MOD41_022553F4
+
+ thumb_func_start MOD41_022554D8
+MOD41_022554D8: ; 0x022554D8
+ 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 _022554FA
+ cmp r0, #1
+ beq _02255508
+ pop {r3, r4, r5, pc}
+_022554FA:
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0xa0
+ str r1, [r0]
+ add r0, r5, #0
+ bl MOD20_022538B0
+_02255508:
+ add r0, r4, #0
+ mov r1, #6
+ bl MOD41_022553C8
+ cmp r0, #0
+ beq _02255522
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r5, #0
+ bl MOD41_022553E0
+_02255522:
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD41_022554D8
+
+ thumb_func_start MOD41_02255524
+MOD41_02255524: ; 0x02255524
+ 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
+ mov r1, #0
+ bl MOD41_02255744
+ ldr r0, [r4, #0x34]
+ mov r1, #2
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x38]
+ mov r1, #0
+ bl MOD20_02253F28
+ add r0, r5, #0
+ bl MOD41_022553E0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD41_02255524
+
+ thumb_func_start MOD41_02255558
+MOD41_02255558: ; 0x02255558
+ 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
+ mov r1, #1
+ bl MOD41_02255744
+ ldr r0, [r4, #0x34]
+ mov r1, #3
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x38]
+ mov r1, #1
+ bl MOD20_02253F28
+ add r0, r5, #0
+ bl MOD41_022553E0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD41_02255558
+
+ thumb_func_start MOD41_0225558C
+MOD41_0225558C: ; 0x0225558C
+ 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 MOD41_022556D4
+ add r0, r5, #0
+ bl MOD41_022553E0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD41_0225558C
+
+ thumb_func_start MOD41_022555B0
+MOD41_022555B0: ; 0x022555B0
+ 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 MOD41_02255714
+ add r0, r5, #0
+ bl MOD41_022553E0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD41_022555B0
+
+ thumb_func_start MOD41_022555D4
+MOD41_022555D4: ; 0x022555D4
+ 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 _022555F6
+ cmp r0, #1
+ beq _0225561A
+ pop {r3, r4, r5, pc}
+_022555F6:
+ ldr r0, [r4, #0x34]
+ mov r1, #2
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x38]
+ mov r1, #0
+ bl MOD20_02253F28
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xa4
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xa0
+ str r1, [r0]
+ add r0, r5, #0
+ bl MOD20_022538B0
+_0225561A:
+ add r0, r4, #0
+ add r0, #0xa0
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0225562C
+ add r0, r5, #0
+ bl MOD41_022553E0
+ pop {r3, r4, r5, pc}
+_0225562C:
+ add r0, r4, #0
+ add r0, #0xa4
+ ldr r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xa4
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xa4
+ ldr r0, [r0]
+ cmp r0, #8
+ blo _0225568A
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r1, [r0]
+ mov r0, #1
+ eor r1, r0
+ add r0, r4, #0
+ add r0, #0xa8
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ cmp r0, #0
+ ldr r0, [r4, #0x34]
+ beq _02255670
+ mov r1, #2
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x38]
+ mov r1, #1
+ bl MOD20_02253F28
+ b _0225567E
+_02255670:
+ mov r1, #3
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x38]
+ mov r1, #0
+ bl MOD20_02253F28
+_0225567E:
+ ldr r0, _0225568C ; =0x00000677
+ bl MOD20_02252B28
+ mov r0, #0
+ add r4, #0xa4
+ str r0, [r4]
+_0225568A:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0225568C: .word 0x00000677
+ thumb_func_end MOD41_022555D4
+
+ thumb_func_start MOD41_02255690
+MOD41_02255690: ; 0x02255690
+ 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 _022556B2
+ cmp r0, #1
+ beq _022556C0
+ pop {r3, r4, r5, pc}
+_022556B2:
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0xa0
+ str r1, [r0]
+ add r0, r5, #0
+ bl MOD20_022538B0
+_022556C0:
+ add r0, r4, #0
+ mov r1, #6
+ bl MOD41_022553C8
+ cmp r0, #0
+ beq _022556D2
+ add r0, r5, #0
+ bl MOD41_022553E0
+_022556D2:
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD41_02255690
+
+ thumb_func_start MOD41_022556D4
+MOD41_022556D4: ; 0x022556D4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #4]
+ cmp r0, #0
+ beq _022556E4
+ mov r1, #6
+ b _022556E6
+_022556E4:
+ mov r1, #5
+_022556E6:
+ ldr r0, [r5, #0x3c]
+ bl MOD20_02253F28
+ ldrb r0, [r4, #5]
+ cmp r0, #0
+ beq _022556F6
+ mov r1, #8
+ b _022556F8
+_022556F6:
+ mov r1, #7
+_022556F8:
+ ldr r0, [r5, #0x40]
+ bl MOD20_02253F28
+ ldrb r0, [r4, #6]
+ cmp r0, #0
+ beq _02255708
+ mov r1, #0xa
+ b _0225570A
+_02255708:
+ mov r1, #9
+_0225570A:
+ ldr r0, [r5, #0x44]
+ bl MOD20_02253F28
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD41_022556D4
+
+ thumb_func_start MOD41_02255714
+MOD41_02255714: ; 0x02255714
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ mov r1, #0
+ add r5, r0, #0
+ ldrsb r1, [r4, r1]
+ ldr r0, [r5, #0x68]
+ bl MOD20_02253F28
+ mov r1, #1
+ ldrsb r1, [r4, r1]
+ ldr r0, [r5, #0x6c]
+ bl MOD20_02253F28
+ mov r1, #2
+ ldrsb r1, [r4, r1]
+ ldr r0, [r5, #0x70]
+ bl MOD20_02253F28
+ mov r1, #3
+ ldrsb r1, [r4, r1]
+ ldr r0, [r5, #0x74]
+ bl MOD20_02253F28
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD41_02255714
+
+ thumb_func_start MOD41_02255744
+MOD41_02255744: ; 0x02255744
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x48]
+ add r4, r1, #0
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x4c]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x50]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x54]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x58]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x5c]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x60]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x64]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD41_02255744
+
+ thumb_func_start MOD41_0225578C
+MOD41_0225578C: ; 0x0225578C
+ add r0, #0xa8
+ ldr r0, [r0]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD41_0225578C
+
+ .section .rodata
+ ; 0x02255794
+ .incbin "baserom.nds", 0x293d54, 0x1E0
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_41.SINIT_START
+ .global SDK_OVERLAY.MODULE_41.SINIT_END
+SDK_OVERLAY.MODULE_41.SINIT_START:
+ .word MOD41_02254840
+ .word 0
+SDK_OVERLAY.MODULE_41.SINIT_END: