summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-05-11 18:14:16 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2020-05-11 18:14:16 -0400
commit60ab234010d172d888d2444cd426e0e8463a110f (patch)
treeacd4f705a539559be98de3f6a148bb10fce39d3c
parentd104a46ce13665a41a4ba4b7bab4239fffe1ef06 (diff)
Disassemble module 41
-rw-r--r--arm9/arm9.lcf28
-rw-r--r--arm9/global.inc1
-rw-r--r--arm9/modules/41/asm/module_41.s2032
3 files changed, 2057 insertions, 4 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf
index 97baf90b..8883447f 100644
--- a/arm9/arm9.lcf
+++ b/arm9/arm9.lcf
@@ -1704,10 +1704,21 @@ SECTIONS {
SDK_OVERLAY.MODULE_40.BSS_SIZE = SDK_OVERLAY.MODULE_40.BSS_END - SDK_OVERLAY.MODULE_40.BSS_START;
} >> MODULE_40
- .MODULE.41: {
+ .MODULE.41 :
+ {
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_41.START = .;
- FILE_292E00.o (.text) /* 0x28EE00 */
+ module_41.o (.text)
+ module_41.o (.rodata)
+ module_41.o (.init)
+ // SDK_OVERLAY.MODULE_41.SINIT_START = .;
+ module_41.o (.ctor)
+ module_41.o (.sinit)
+ // WRITEW 0;
+ // SDK_OVERLAY.MODULE_41.SINIT_END = .;
+ . = ALIGN(32);
+ module_41.o (.sdata)
+ module_41.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_41.END = .;
SDK_OVERLAY.MODULE_41.SIZE = SDK_OVERLAY.MODULE_41.END - SDK_OVERLAY.MODULE_41.START;
@@ -1717,7 +1728,8 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_41.BSS_START = .;
- FILE_292E00.o (.bss)
+ module_41.o (.sbss)
+ module_41.o (.bss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_41.BSS_END = .;
SDK_OVERLAY.MODULE_41.BSS_SIZE = SDK_OVERLAY.MODULE_41.BSS_END - SDK_OVERLAY.MODULE_41.BSS_START;
@@ -3070,7 +3082,15 @@ SECTIONS {
WRITEW SDK_OVERLAY_MODULE_40_ID;
WRITEW 0;
- OVERLAY_TABLE(MODULE_41, 41)
+ WRITEW SDK_OVERLAY_MODULE_41_ID;
+ WRITEW SDK_OVERLAY.MODULE_41.START;
+ WRITEW SDK_OVERLAY.MODULE_41.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_41.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_41.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_41.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_41_ID;
+ WRITEW 0;
+
OVERLAY_TABLE(MODULE_42, 42)
OVERLAY_TABLE(MODULE_43, 43)
OVERLAY_TABLE(MODULE_44, 44)
diff --git a/arm9/global.inc b/arm9/global.inc
index 05893664..5cee7a46 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -2653,6 +2653,7 @@
.extern FUN_020C3674
.extern FUN_020C36A8
.extern FUN_020C3910
+.extern FUN_02020C14
.extern FUN_020C3980
.extern FUN_020C39CC
.extern FUN_020C6034
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: