summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-05-10 12:21:48 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2020-05-10 12:21:48 -0400
commitca2e39c684eada4aec909f6f222806b7914b97d0 (patch)
treebb40c93d89c64714a581a7d84438004ec3db2e52
parentfc6f621d01f371f03ae49862819352bfc71abd05 (diff)
Dism modules 34-36; meaningful elf
-rw-r--r--arm9/Makefile2
-rw-r--r--arm9/arm9.lcf84
-rw-r--r--arm9/global.inc5
-rw-r--r--arm9/modules/34/asm/module_34.s601
-rw-r--r--arm9/modules/35/asm/module_35.s1142
-rw-r--r--arm9/modules/36/asm/module_36.s1571
6 files changed, 3392 insertions, 13 deletions
diff --git a/arm9/Makefile b/arm9/Makefile
index 16fd7371..c9cdd9fc 100644
--- a/arm9/Makefile
+++ b/arm9/Makefile
@@ -183,7 +183,7 @@ $(BUILD_DIR)/$(LD_SCRIPT): $(LD_SCRIPT) $(LD_TEMPLATE) undefined_syms.txt macros
$(ROM): $(O_FILES) $(BUILD_DIR)/$(LD_SCRIPT) $(BIN_FILES)
$(LD) $(LDFLAGS) $(BUILD_DIR)/$(LD_SCRIPT) -o $(ELF) $(O_FILES) $(BIN_FILES)
-
+ $(OBJCOPY) --update-section arm9=$@ -j arm9 $(ELF)
# Make sure build directory exists before compiling anything
DUMMY != mkdir -p $(ALL_DIRS)
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf
index c3841d9e..cf2bdfb8 100644
--- a/arm9/arm9.lcf
+++ b/arm9/arm9.lcf
@@ -1486,10 +1486,21 @@ SECTIONS {
SDK_OVERLAY.MODULE_33.BSS_SIZE = SDK_OVERLAY.MODULE_33.BSS_END - SDK_OVERLAY.MODULE_33.BSS_START;
} >> MODULE_33
- .MODULE.34: {
+ .MODULE.34 :
+ {
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_34.START = .;
- FILE_28E200.o (.text) /* 0x28A200 */
+ module_34.o (.text)
+ module_34.o (.rodata)
+ module_34.o (.init)
+ // SDK_OVERLAY.MODULE_34.SINIT_START = .;
+ module_34.o (.ctor)
+ module_34.o (.sinit)
+ // WRITEW 0;
+ // SDK_OVERLAY.MODULE_34.SINIT_END = .;
+ . = ALIGN(32);
+ module_34.o (.sdata)
+ module_34.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_34.END = .;
SDK_OVERLAY.MODULE_34.SIZE = SDK_OVERLAY.MODULE_34.END - SDK_OVERLAY.MODULE_34.START;
@@ -1499,16 +1510,28 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_34.BSS_START = .;
- FILE_28E200.o (.bss)
+ module_34.o (.sbss)
+ module_34.o (.bss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_34.BSS_END = .;
SDK_OVERLAY.MODULE_34.BSS_SIZE = SDK_OVERLAY.MODULE_34.BSS_END - SDK_OVERLAY.MODULE_34.BSS_START;
} >> MODULE_34
- .MODULE.35: {
+ .MODULE.35 :
+ {
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_35.START = .;
- FILE_28E800.o (.text) /* 0x28A800 */
+ module_35.o (.text)
+ module_35.o (.rodata)
+ module_35.o (.init)
+ SDK_OVERLAY.MODULE_35.SINIT_START = .;
+ module_35.o (.ctor)
+ module_35.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_35.SINIT_END = .;
+ . = ALIGN(32);
+ module_35.o (.sdata)
+ module_35.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_35.END = .;
SDK_OVERLAY.MODULE_35.SIZE = SDK_OVERLAY.MODULE_35.END - SDK_OVERLAY.MODULE_35.START;
@@ -1518,16 +1541,28 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_35.BSS_START = .;
- FILE_28E800.o (.bss)
+ module_35.o (.sbss)
+ module_35.o (.bss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_35.BSS_END = .;
SDK_OVERLAY.MODULE_35.BSS_SIZE = SDK_OVERLAY.MODULE_35.BSS_END - SDK_OVERLAY.MODULE_35.BSS_START;
} >> MODULE_35
- .MODULE.36: {
+ .MODULE.36 :
+ {
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_36.START = .;
- FILE_28F200.o (.text) /* 0x28B200 */
+ module_36.o (.text)
+ module_36.o (.rodata)
+ module_36.o (.init)
+ // SDK_OVERLAY.MODULE_36.SINIT_START = .;
+ module_36.o (.ctor)
+ module_36.o (.sinit)
+ // WRITEW 0;
+ // SDK_OVERLAY.MODULE_36.SINIT_END = .;
+ . = ALIGN(32);
+ module_36.o (.sdata)
+ module_36.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_36.END = .;
SDK_OVERLAY.MODULE_36.SIZE = SDK_OVERLAY.MODULE_36.END - SDK_OVERLAY.MODULE_36.START;
@@ -1537,7 +1572,8 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_36.BSS_START = .;
- FILE_28F200.o (.bss)
+ module_36.o (.sbss)
+ module_36.o (.bss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_36.BSS_END = .;
SDK_OVERLAY.MODULE_36.BSS_SIZE = SDK_OVERLAY.MODULE_36.BSS_END - SDK_OVERLAY.MODULE_36.BSS_START;
@@ -2922,9 +2958,33 @@ SECTIONS {
WRITEW SDK_OVERLAY_MODULE_33_ID;
WRITEW 0;
- OVERLAY_TABLE(MODULE_34, 34)
- OVERLAY_TABLE(MODULE_35, 35)
- OVERLAY_TABLE(MODULE_36, 36)
+ WRITEW SDK_OVERLAY_MODULE_34_ID;
+ WRITEW SDK_OVERLAY.MODULE_34.START;
+ WRITEW SDK_OVERLAY.MODULE_34.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_34.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_34.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_34.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_34_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_35_ID;
+ WRITEW SDK_OVERLAY.MODULE_35.START;
+ WRITEW SDK_OVERLAY.MODULE_35.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_35.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_35.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_35.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_35_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_36_ID;
+ WRITEW SDK_OVERLAY.MODULE_36.START;
+ WRITEW SDK_OVERLAY.MODULE_36.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_36.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_36.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_36.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_36_ID;
+ WRITEW 0;
+
OVERLAY_TABLE(MODULE_37, 37)
OVERLAY_TABLE(MODULE_38, 38)
OVERLAY_TABLE(MODULE_39, 39)
diff --git a/arm9/global.inc b/arm9/global.inc
index a4be1f0c..a69c7bdb 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -2654,6 +2654,11 @@
.extern FUN_020C39CC
.extern FUN_020C6034
.extern FUN_020C605C
+.extern MOD05_021EC464
+.extern MOD05_021EC7B4
+.extern MOD20_02253A04
+.extern MOD20_02253FAC
+.extern MOD20_02253FB4
.extern MOD05_021D74E0
.extern FUN_021D7660
.extern FUN_021D76AC
diff --git a/arm9/modules/34/asm/module_34.s b/arm9/modules/34/asm/module_34.s
new file mode 100644
index 00000000..a12d1a4a
--- /dev/null
+++ b/arm9/modules/34/asm/module_34.s
@@ -0,0 +1,601 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD34_02254840
+MOD34_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD34_02254854
+ ldr r1, _02254850 ; =MOD34_02254948
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD34_02254854
+_02254850: .word MOD34_02254948
+ thumb_func_end MOD34_02254840
+
+ thumb_func_start MOD34_02254854
+MOD34_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x38
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD34_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD34_0225490C
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word MOD34_0225490C
+ thumb_func_end MOD34_02254854
+
+ thumb_func_start MOD34_0225489C
+MOD34_0225489C: ; 0x0225489C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, #0x24
+ add r1, r5, #4
+ bl MOD34_02254A5C
+ cmp r0, #0
+ beq _022548DC
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ str r4, [r5, #0x28]
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _022548E0 ; =0x02254C7C
+ ldr r2, _022548E4 ; =MOD34_02254904
+ mov r1, #6
+ add r3, r5, #0
+ bl MOD20_02254130
+ str r0, [r5, #0x2c]
+ mov r1, #0
+ str r1, [r5, #0x30]
+ mov r0, #1
+_022548D0:
+ add r1, r1, #1
+ str r0, [r5, #8]
+ add r5, r5, #4
+ cmp r1, #6
+ blt _022548D0
+ pop {r3, r4, r5, pc}
+_022548DC:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022548E0: .word 0x02254C7C
+_022548E4: .word MOD34_02254904
+ thumb_func_end MOD34_0225489C
+
+ thumb_func_start MOD34_022548E8
+MOD34_022548E8: ; 0x022548E8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x2c]
+ cmp r0, #0
+ beq _022548F6
+ bl MOD20_02254198
+_022548F6:
+ ldr r0, [r4, #0x24]
+ bl MOD34_02254A8C
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD34_022548E8
+
+ thumb_func_start MOD34_02254904
+MOD34_02254904: ; 0x02254904
+ str r1, [r3, #0x30]
+ str r0, [r3, #0x34]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD34_02254904
+
+ thumb_func_start MOD34_0225490C
+MOD34_0225490C: ; 0x0225490C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #3
+ bhs _02254942
+ ldr r0, [r4, #0x28]
+ ldr r1, [r4, #0x2c]
+ bl MOD20_02252C14
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _02254944 ; =0x02254C70
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254942
+ add r0, r4, #0
+ bl MOD34_022548E8
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x28]
+ bl MOD20_022529A0
+_02254942:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02254944: .word 0x02254C70
+ thumb_func_end MOD34_0225490C
+
+ thumb_func_start MOD34_02254948
+MOD34_02254948: ; 0x02254948
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD34_02254948
+
+ thumb_func_start MOD34_02254950
+MOD34_02254950: ; 0x02254950
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254958
+ b _0225495A
+_02254958:
+ mov r1, #2
+_0225495A:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD34_02254950
+
+ thumb_func_start MOD34_02254964
+MOD34_02254964: ; 0x02254964
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254974
+ cmp r0, #1
+ beq _02254984
+ b _0225499E
+_02254974:
+ ldr r0, [r4, #0x24]
+ mov r1, #0
+ bl MOD34_02254A98
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _0225499E
+_02254984:
+ ldr r0, [r4, #0x24]
+ mov r1, #0
+ bl MOD34_02254ABC
+ cmp r0, #0
+ beq _0225499E
+ ldr r0, [r4, #0x28]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD34_02254950
+_0225499E:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD34_02254964
+
+ thumb_func_start MOD34_022549A4
+MOD34_022549A4: ; 0x022549A4
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _022549B8
+ mov r1, #2
+ bl MOD34_02254950
+ mov r0, #0
+ pop {r4, pc}
+_022549B8:
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _022549C4
+ cmp r0, #1
+ beq _022549F6
+ b _02254A1A
+_022549C4:
+ ldr r0, [r4, #0x30]
+ cmp r0, #1
+ bne _02254A1A
+ ldr r1, [r4, #0x34]
+ lsl r0, r1, #2
+ add r0, r4, r0
+ ldr r0, [r0, #8]
+ cmp r0, #0
+ beq _022549EE
+ strh r1, [r4, #0x20]
+ ldr r0, [r4, #0x24]
+ mov r1, #2
+ bl MOD34_02254A98
+ ldr r0, _02254A20 ; =0x00000663
+ bl MOD20_02252B28
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A1A
+_022549EE:
+ ldr r0, _02254A24 ; =0x0000066E
+ bl MOD20_02252B28
+ b _02254A1A
+_022549F6:
+ ldr r0, [r4, #0x30]
+ cmp r0, #2
+ bne _02254A0A
+ ldr r0, [r4, #0x24]
+ mov r1, #3
+ bl MOD34_02254A98
+ mov r0, #0
+ strb r0, [r4, #1]
+ b _02254A1A
+_02254A0A:
+ cmp r0, #3
+ bne _02254A1A
+ ldr r0, [r4, #0x24]
+ mov r1, #3
+ bl MOD34_02254A98
+ mov r0, #0
+ strb r0, [r4, #1]
+_02254A1A:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_02254A20: .word 0x00000663
+_02254A24: .word 0x0000066E
+ thumb_func_end MOD34_022549A4
+
+ thumb_func_start MOD34_02254A28
+MOD34_02254A28: ; 0x02254A28
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A38
+ cmp r0, #1
+ beq _02254A48
+ b _02254A56
+_02254A38:
+ ldr r0, [r4, #0x24]
+ mov r1, #1
+ bl MOD34_02254A98
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A56
+_02254A48:
+ ldr r0, [r4, #0x24]
+ bl MOD34_02254AC8
+ cmp r0, #0
+ beq _02254A56
+ mov r0, #1
+ pop {r4, pc}
+_02254A56:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD34_02254A28
+
+ thumb_func_start MOD34_02254A5C
+MOD34_02254A5C: ; 0x02254A5C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x20
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254A88
+ add r0, #8
+ mov r1, #4
+ bl MOD20_022536F4
+ str r6, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ cmp r0, #0
+ beq _02254A88
+ str r4, [r5]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254A88:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD34_02254A5C
+
+ thumb_func_start MOD34_02254A8C
+MOD34_02254A8C: ; 0x02254A8C
+ push {r3, lr}
+ cmp r0, #0
+ beq _02254A96
+ bl FUN_02016A18
+_02254A96:
+ pop {r3, pc}
+ thumb_func_end MOD34_02254A8C
+
+ thumb_func_start MOD34_02254A98
+MOD34_02254A98: ; 0x02254A98
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254AB8 ; =0x02254CBC
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254AB8: .word 0x02254CBC
+ thumb_func_end MOD34_02254A98
+
+ thumb_func_start MOD34_02254ABC
+MOD34_02254ABC: ; 0x02254ABC
+ ldr r3, _02254AC4 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254AC4: .word MOD20_02253794
+ thumb_func_end MOD34_02254ABC
+
+ thumb_func_start MOD34_02254AC8
+MOD34_02254AC8: ; 0x02254AC8
+ ldr r3, _02254AD0 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254AD0: .word MOD20_022537B8
+ thumb_func_end MOD34_02254AC8
+
+ thumb_func_start MOD34_02254AD4
+MOD34_02254AD4: ; 0x02254AD4
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD34_02254AD4
+
+ thumb_func_start MOD34_02254AE8
+MOD34_02254AE8: ; 0x02254AE8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ str r1, [sp, #0x10]
+ add r0, r1, #0
+ bl MOD20_022538A0
+ add r6, r0, #0
+ ldr r0, [sp, #0x10]
+ bl MOD20_022538A4
+ add r5, r0, #0
+ ldr r0, [r6, #4]
+ ldr r2, _02254B8C ; =0x02254CA0
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r6, #4]
+ mov r0, #0xc
+ mov r1, #0x3b
+ mov r3, #6
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r6, #4]
+ mov r0, #0xc
+ mov r1, #0x3a
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ mov r4, #0
+ add r7, r4, #0
+_02254B4A:
+ ldr r2, [r5, #4]
+ add r0, r6, #0
+ add r1, r4, #0
+ add r3, r7, #0
+ bl MOD34_02254C1C
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #6
+ blt _02254B4A
+ ldr r0, [r6, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r0, _02254B90 ; =0x04001000
+ ldr r1, _02254B94 ; =0xFFFFE0FF
+ ldr r2, [r0]
+ ldr r4, [r0]
+ add r3, r2, #0
+ and r3, r1
+ lsl r1, r4, #0x13
+ lsr r2, r1, #0x1b
+ mov r1, #4
+ orr r1, r2
+ lsl r1, r1, #8
+ orr r1, r3
+ str r1, [r0]
+ ldr r0, [sp, #0x10]
+ str r4, [sp, #0x14]
+ bl MOD34_02254AD4
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254B8C: .word 0x02254CA0
+_02254B90: .word 0x04001000
+_02254B94: .word 0xFFFFE0FF
+ thumb_func_end MOD34_02254AE8
+
+ thumb_func_start MOD34_02254B98
+MOD34_02254B98: ; 0x02254B98
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ ldr r0, [r0, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r4, #0
+ bl MOD34_02254AD4
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD34_02254B98
+
+ thumb_func_start MOD34_02254BB4
+MOD34_02254BB4: ; 0x02254BB4
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r3, r0, #0
+ ldrh r1, [r3, #0x1c]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ add r2, r3, r2
+ ldr r2, [r2, #4]
+ mov r3, #1
+ bl MOD34_02254C1C
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ add r0, r5, #0
+ bl MOD34_02254AD4
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD34_02254BB4
+
+ thumb_func_start MOD34_02254BE8
+MOD34_02254BE8: ; 0x02254BE8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r3, r0, #0
+ ldrh r1, [r3, #0x1c]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ add r2, r3, r2
+ ldr r2, [r2, #4]
+ mov r3, #0
+ bl MOD34_02254C1C
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ add r0, r5, #0
+ bl MOD34_02254AD4
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD34_02254BE8
+
+ thumb_func_start MOD34_02254C1C
+MOD34_02254C1C: ; 0x02254C1C
+ push {r4, r5, r6, lr}
+ ldr r0, [r0, #4]
+ add r5, r1, #0
+ mov r1, #6
+ add r4, r2, #0
+ add r6, r3, #0
+ bl FUN_0201886C
+ ldr r1, _02254C6C ; =0x02254C94
+ lsl r2, r5, #1
+ ldrh r1, [r1, r2]
+ lsl r1, r1, #1
+ add r2, r0, r1
+ cmp r4, #0
+ beq _02254C44
+ add r1, r5, #1
+ mov r0, #0x48
+ add r5, r1, #0
+ mul r5, r0
+ b _02254C46
+_02254C44:
+ mov r5, #0
+_02254C46:
+ cmp r6, #0
+ beq _02254C4C
+ add r5, #0x24
+_02254C4C:
+ mov r3, #0
+ add r0, r3, #0
+_02254C50:
+ add r1, r0, #0
+ add r4, r2, #0
+_02254C54:
+ add r1, r1, #1
+ strh r5, [r4]
+ add r5, r5, #1
+ add r4, r4, #2
+ cmp r1, #6
+ blt _02254C54
+ add r3, r3, #1
+ add r2, #0x40
+ cmp r3, #6
+ blt _02254C50
+ pop {r4, r5, r6, pc}
+ nop
+_02254C6C: .word 0x02254C94
+ thumb_func_end MOD34_02254C1C
+
+ .section .rodata
+ ; 0x02254C70
+ .incbin "baserom.nds", 0x28e630, 0x88
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_34.SINIT_START
+ .global SDK_OVERLAY.MODULE_34.SINIT_END
+SDK_OVERLAY.MODULE_34.SINIT_START:
+ .word MOD34_02254840
+ .word 0
+SDK_OVERLAY.MODULE_34.SINIT_END:
diff --git a/arm9/modules/35/asm/module_35.s b/arm9/modules/35/asm/module_35.s
new file mode 100644
index 00000000..fe5b7b14
--- /dev/null
+++ b/arm9/modules/35/asm/module_35.s
@@ -0,0 +1,1142 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD35_02254840
+MOD35_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD35_02254854
+ ldr r1, _02254850 ; =MOD35_02254924
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD35_02254854
+_02254850: .word MOD35_02254924
+ thumb_func_end MOD35_02254840
+
+ thumb_func_start MOD35_02254854
+MOD35_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x34
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD35_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD35_022548F0
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word MOD35_022548F0
+ thumb_func_end MOD35_02254854
+
+ thumb_func_start MOD35_0225489C
+MOD35_0225489C: ; 0x0225489C
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r6, r2, #0
+ bl MOD20_02252C40
+ bl FUN_02023D58
+ str r0, [r5, #0x30]
+ ldr r1, [r5, #0x30]
+ add r0, r5, #4
+ bl MOD35_02254A50
+ add r0, r5, #0
+ add r0, #0x28
+ add r1, r5, #4
+ add r2, r6, #0
+ bl MOD35_02254ADC
+ cmp r0, #0
+ beq _022548D6
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ str r4, [r5, #0x2c]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_022548D6:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD35_0225489C
+
+ thumb_func_start MOD35_022548DC
+MOD35_022548DC: ; 0x022548DC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x28]
+ bl MOD35_02254B38
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD35_022548DC
+
+ thumb_func_start MOD35_022548F0
+MOD35_022548F0: ; 0x022548F0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrb r1, [r4]
+ add r5, r0, #0
+ cmp r1, #3
+ bhs _0225491C
+ lsl r2, r1, #2
+ ldr r1, _02254920 ; =0x022550B8
+ add r0, r4, #0
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _0225491C
+ add r0, r4, #0
+ bl MOD35_022548DC
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x2c]
+ bl MOD20_022529A0
+_0225491C:
+ pop {r3, r4, r5, pc}
+ nop
+_02254920: .word 0x022550B8
+ thumb_func_end MOD35_022548F0
+
+ thumb_func_start MOD35_02254924
+MOD35_02254924: ; 0x02254924
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD35_02254924
+
+ thumb_func_start MOD35_0225492C
+MOD35_0225492C: ; 0x0225492C
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254934
+ b _02254936
+_02254934:
+ mov r1, #2
+_02254936:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD35_0225492C
+
+ thumb_func_start MOD35_02254940
+MOD35_02254940: ; 0x02254940
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254950
+ cmp r0, #1
+ beq _02254960
+ b _0225497A
+_02254950:
+ ldr r0, [r4, #0x28]
+ mov r1, #0
+ bl MOD35_02254C48
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _0225497A
+_02254960:
+ ldr r0, [r4, #0x28]
+ mov r1, #0
+ bl MOD35_02254C6C
+ cmp r0, #0
+ beq _0225497A
+ ldr r0, [r4, #0x2c]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD35_0225492C
+_0225497A:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD35_02254940
+
+ thumb_func_start MOD35_02254980
+MOD35_02254980: ; 0x02254980
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _02254994
+ mov r1, #2
+ bl MOD35_0225492C
+ mov r0, #0
+ pop {r4, pc}
+_02254994:
+ ldrb r1, [r4, #1]
+ cmp r1, #0
+ beq _022549A0
+ cmp r1, #1
+ beq _022549C0
+ b _022549D0
+_022549A0:
+ bl MOD35_02254A08
+ cmp r0, #0
+ beq _022549D0
+ ldr r1, [r4, #0x30]
+ add r0, r4, #4
+ bl MOD35_02254A50
+ ldr r0, [r4, #0x28]
+ mov r1, #2
+ bl MOD35_02254C48
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549D0
+_022549C0:
+ ldr r0, [r4, #0x28]
+ mov r1, #2
+ bl MOD35_02254C6C
+ cmp r0, #0
+ beq _022549D0
+ mov r0, #0
+ strb r0, [r4, #1]
+_022549D0:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD35_02254980
+
+ thumb_func_start MOD35_022549D4
+MOD35_022549D4: ; 0x022549D4
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _022549E4
+ cmp r0, #1
+ beq _022549F4
+ b _02254A02
+_022549E4:
+ ldr r0, [r4, #0x28]
+ mov r1, #1
+ bl MOD35_02254C48
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A02
+_022549F4:
+ ldr r0, [r4, #0x28]
+ bl MOD35_02254C78
+ cmp r0, #0
+ beq _02254A02
+ mov r0, #1
+ pop {r4, pc}
+_02254A02:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD35_022549D4
+
+ thumb_func_start MOD35_02254A08
+MOD35_02254A08: ; 0x02254A08
+ push {r3, lr}
+ sub sp, #8
+ ldr r0, [r0, #0x2c]
+ bl MOD20_02252C08
+ cmp r0, #0
+ bne _02254A48
+ add r0, sp, #4
+ add r1, sp, #0
+ bl FUN_02020ACC
+ cmp r0, #0
+ beq _02254A48
+ ldr r0, [sp, #4]
+ sub r0, #0x10
+ cmp r0, #0xbf
+ bhs _02254A2E
+ mov r1, #1
+ b _02254A30
+_02254A2E:
+ mov r1, #0
+_02254A30:
+ ldr r0, [sp]
+ sub r0, #0x10
+ cmp r0, #0x9f
+ bhs _02254A3C
+ mov r0, #1
+ b _02254A3E
+_02254A3C:
+ mov r0, #0
+_02254A3E:
+ tst r0, r1
+ beq _02254A48
+ add sp, #8
+ mov r0, #1
+ pop {r3, pc}
+_02254A48:
+ mov r0, #0
+ add sp, #8
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD35_02254A08
+
+ thumb_func_start MOD35_02254A50
+MOD35_02254A50: ; 0x02254A50
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ str r0, [sp]
+ add r0, r1, #0
+ str r1, [sp, #4]
+ bl MOD05_021EC464
+ ldr r1, [sp]
+ strb r0, [r1]
+ ldr r0, [sp, #4]
+ bl FUN_02023C90
+ ldr r1, [sp]
+ mov r7, #0
+ strb r0, [r1, #1]
+ add r0, r1, #0
+ ldrb r0, [r0]
+ cmp r0, #0
+ ble _02254AD6
+ add r5, r1, #0
+ add r6, r1, #0
+_02254A7A:
+ ldr r0, [sp, #4]
+ add r1, r7, #0
+ bl FUN_02023C74
+ str r0, [sp, #8]
+ bl FUN_02023C7C
+ add r4, r0, #0
+ bl FUN_02066A6C
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ bl FUN_0206B688
+ str r0, [r5, #4]
+ add r0, r4, #0
+ mov r1, #5
+ mov r2, #0
+ bl FUN_020672BC
+ strh r0, [r6, #0x1c]
+ add r0, r4, #0
+ mov r1, #0x70
+ mov r2, #0
+ bl FUN_020672BC
+ strh r0, [r6, #0x20]
+ ldr r0, [sp, #8]
+ bl MOD05_021EC7B4
+ str r0, [r5, #0xc]
+ add r0, r4, #0
+ bl FUN_020689E8
+ str r0, [r5, #0x14]
+ ldr r1, [sp, #0xc]
+ add r0, r4, #0
+ bl FUN_02066A94
+ ldr r0, [sp]
+ add r7, r7, #1
+ ldrb r0, [r0]
+ add r5, r5, #4
+ add r6, r6, #2
+ cmp r7, r0
+ blt _02254A7A
+_02254AD6:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD35_02254A50
+
+ thumb_func_start MOD35_02254ADC
+MOD35_02254ADC: ; 0x02254ADC
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r0, #8
+ mov r1, #0x90
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254B2E
+ add r0, #8
+ mov r1, #4
+ bl MOD20_022536F4
+ str r5, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ bl MOD20_02252D24
+ str r0, [r4, #0x20]
+ add r0, r4, #0
+ mov r2, #0
+ add r0, #0x88
+ str r2, [r0]
+ ldr r0, _02254B34 ; =MOD35_02254E60
+ add r1, r4, #0
+ bl FUN_0200CA98
+ add r1, r4, #0
+ add r1, #0x8c
+ str r0, [r1]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD35_02254B54
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _02254B2E
+ str r4, [r6]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254B2E:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ nop
+_02254B34: .word MOD35_02254E60
+ thumb_func_end MOD35_02254ADC
+
+ thumb_func_start MOD35_02254B38
+MOD35_02254B38: ; 0x02254B38
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02254B52
+ bl MOD35_02254C18
+ add r0, r4, #0
+ add r0, #0x8c
+ ldr r0, [r0]
+ bl FUN_0200CAB4
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254B52:
+ pop {r4, pc}
+ thumb_func_end MOD35_02254B38
+
+ thumb_func_start MOD35_02254B54
+MOD35_02254B54: ; 0x02254B54
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ add r7, r0, #0
+ mov r0, #1
+ str r1, [sp, #0xc]
+ bl MOD20_022539C4
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x54
+ bl FUN_02006A34
+ mov r1, #0x14
+ bl _u32_div_f
+ ldr r1, [sp, #0xc]
+ str r0, [sp, #0x14]
+ str r0, [r7, #0x78]
+ bl MOD35_02254E88
+ mov r0, #8
+ str r0, [sp]
+ add r0, r7, #0
+ add r0, #0x50
+ mov r1, #0xc
+ mov r2, #0x52
+ mov r3, #0x53
+ bl MOD20_02253FBC
+ mov r0, #8
+ str r0, [sp]
+ add r0, r7, #0
+ add r0, #0x64
+ mov r1, #0xc
+ mov r2, #5
+ mov r3, #6
+ bl MOD20_02253FBC
+ add r0, r7, #0
+ str r0, [sp, #0x1c]
+ add r0, #0x50
+ str r0, [sp, #0x1c]
+ add r0, r7, #0
+ mov r4, #0
+ str r0, [sp, #0x18]
+ add r0, #0x64
+ ldr r6, _02254C14 ; =0x02255110
+ add r5, r7, #0
+ str r4, [sp, #0x10]
+ str r0, [sp, #0x18]
+_02254BC2:
+ cmp r4, #0
+ blt _02254BE2
+ cmp r4, #2
+ bgt _02254BE2
+ ldr r0, [r7, #0x20]
+ ldr r2, [sp, #0x18]
+ add r1, r6, #0
+ bl MOD20_02253E74
+ ldr r2, [sp, #0x14]
+ ldr r1, [sp, #0x10]
+ str r0, [r5, #0x24]
+ add r1, r2, r1
+ bl MOD20_02253FA4
+ b _02254BEE
+_02254BE2:
+ ldr r0, [r7, #0x20]
+ ldr r2, [sp, #0x1c]
+ add r1, r6, #0
+ bl MOD20_02253E74
+ str r0, [r5, #0x24]
+_02254BEE:
+ ldr r0, [r5, #0x24]
+ mov r1, #1
+ bl MOD20_02253FAC
+ ldr r0, [sp, #0x10]
+ add r4, r4, #1
+ add r0, #0x20
+ add r6, #0x10
+ add r5, r5, #4
+ str r0, [sp, #0x10]
+ cmp r4, #0xb
+ blt _02254BC2
+ ldr r1, [sp, #0xc]
+ add r0, r7, #0
+ bl MOD35_02254EC8
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254C14: .word 0x02255110
+ thumb_func_end MOD35_02254B54
+
+ thumb_func_start MOD35_02254C18
+MOD35_02254C18: ; 0x02254C18
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+_02254C20:
+ ldr r1, [r5, #0x24]
+ cmp r1, #0
+ beq _02254C2C
+ ldr r0, [r6, #0x20]
+ bl MOD20_02253F14
+_02254C2C:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0xb
+ blt _02254C20
+ add r0, r6, #0
+ add r0, #0x64
+ bl MOD20_02254014
+ add r6, #0x50
+ add r0, r6, #0
+ bl MOD20_02254014
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD35_02254C18
+
+ thumb_func_start MOD35_02254C48
+MOD35_02254C48: ; 0x02254C48
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254C68 ; =0x022550E0
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254C68: .word 0x022550E0
+ thumb_func_end MOD35_02254C48
+
+ thumb_func_start MOD35_02254C6C
+MOD35_02254C6C: ; 0x02254C6C
+ ldr r3, _02254C74 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254C74: .word MOD20_02253794
+ thumb_func_end MOD35_02254C6C
+
+ thumb_func_start MOD35_02254C78
+MOD35_02254C78: ; 0x02254C78
+ ldr r3, _02254C80 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254C80: .word MOD20_022537B8
+ thumb_func_end MOD35_02254C78
+
+ thumb_func_start MOD35_02254C84
+MOD35_02254C84: ; 0x02254C84
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD35_02254C84
+
+ thumb_func_start MOD35_02254C98
+MOD35_02254C98: ; 0x02254C98
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ ldr r2, _02254D24 ; =0x022550C4
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x51
+ mov r3, #6
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x50
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, _02254D28 ; =0x0400104C
+ mov r0, #0
+ strb r0, [r1]
+ strb r0, [r1, #1]
+ sub r1, #0x4c
+ ldr r3, [r1]
+ ldr r2, [r1]
+ ldr r0, _02254D2C ; =0xFFFFE0FF
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #4
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r4, #0
+ bl MOD35_02254C84
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_02254D24: .word 0x022550C4
+_02254D28: .word 0x0400104C
+_02254D2C: .word 0xFFFFE0FF
+ thumb_func_end MOD35_02254C98
+
+ thumb_func_start MOD35_02254D30
+MOD35_02254D30: ; 0x02254D30
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _02254D4C
+ cmp r0, #1
+ beq _02254D5A
+ pop {r3, r4, r5, pc}
+_02254D4C:
+ mov r0, #1
+ add r4, #0x84
+ str r0, [r4]
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_02254D5A:
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD35_02254C6C
+ cmp r0, #0
+ beq _02254D7C
+ ldr r0, _02254D80 ; =0x0400104C
+ mov r1, #0
+ strb r1, [r0]
+ strb r1, [r0, #1]
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r5, #0
+ bl MOD35_02254C84
+_02254D7C:
+ pop {r3, r4, r5, pc}
+ nop
+_02254D80: .word 0x0400104C
+ thumb_func_end MOD35_02254D30
+
+ thumb_func_start MOD35_02254D84
+MOD35_02254D84: ; 0x02254D84
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #3
+ bhi _02254E50
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02254DAE: ; jump table
+ .short _02254DB6 - _02254DAE - 2 ; case 0
+ .short _02254DDC - _02254DAE - 2 ; case 1
+ .short _02254DF4 - _02254DAE - 2 ; case 2
+ .short _02254E4A - _02254DAE - 2 ; case 3
+_02254DB6:
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x80
+ str r1, [r0]
+ mov r0, #0xa
+ str r0, [r4, #0x7c]
+ add r0, r4, #0
+ bl MOD35_02254E58
+ ldr r0, _02254E54 ; =0x00000678
+ bl MOD20_02252B28
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r4, r5, r6, pc}
+_02254DDC:
+ ldr r0, [r4, #0x78]
+ add r1, r6, #0
+ bl MOD35_02254E88
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD35_02254EC8
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r4, r5, r6, pc}
+_02254DF4:
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _02254E10
+ mov r0, #0
+ str r0, [r4, #0x7c]
+ add r0, r4, #0
+ bl MOD35_02254E58
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r4, r5, r6, pc}
+_02254E10:
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x80
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ cmp r0, #4
+ blo _02254E50
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x80
+ str r1, [r0]
+ ldr r0, [r4, #0x7c]
+ sub r0, r0, #1
+ str r0, [r4, #0x7c]
+ add r0, r4, #0
+ bl MOD35_02254E58
+ ldr r0, [r4, #0x7c]
+ cmp r0, #0
+ bne _02254E50
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r4, r5, r6, pc}
+_02254E4A:
+ add r0, r5, #0
+ bl MOD35_02254C84
+_02254E50:
+ pop {r4, r5, r6, pc}
+ nop
+_02254E54: .word 0x00000678
+ thumb_func_end MOD35_02254D84
+
+ thumb_func_start MOD35_02254E58
+MOD35_02254E58: ; 0x02254E58
+ mov r1, #1
+ add r0, #0x88
+ str r1, [r0]
+ bx lr
+ thumb_func_end MOD35_02254E58
+
+ thumb_func_start MOD35_02254E60
+MOD35_02254E60: ; 0x02254E60
+ add r0, r1, #0
+ add r0, #0x88
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _02254E82
+ ldr r2, [r1, #0x7c]
+ ldr r3, _02254E84 ; =0x0400104C
+ lsl r0, r2, #4
+ orr r0, r2
+ strb r0, [r3]
+ ldr r2, [r1, #0x7c]
+ add r1, #0x88
+ lsl r0, r2, #4
+ orr r0, r2
+ strb r0, [r3, #1]
+ mov r0, #0
+ str r0, [r1]
+_02254E82:
+ bx lr
+ .align 2, 0
+_02254E84: .word 0x0400104C
+ thumb_func_end MOD35_02254E60
+
+ thumb_func_start MOD35_02254E88
+MOD35_02254E88: ; 0x02254E88
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ mov r0, #1
+ add r4, r1, #0
+ add r1, r0, #0
+ mov r2, #0
+ bl FUN_0206B6D4
+ ldrb r1, [r4]
+ cmp r1, #0
+ beq _02254EA4
+ ldr r1, [r4, #4]
+ b _02254EA6
+_02254EA4:
+ add r1, r0, #0
+_02254EA6:
+ str r1, [sp]
+ ldrb r1, [r4]
+ cmp r1, #1
+ bls _02254EB2
+ ldr r1, [r4, #8]
+ b _02254EB4
+_02254EB2:
+ add r1, r0, #0
+_02254EB4:
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r1, sp, #0
+ mov r2, #3
+ mov r3, #1
+ bl MOD20_02253A04
+ add sp, #0xc
+ pop {r4, r5, pc}
+ thumb_func_end MOD35_02254E88
+
+ thumb_func_start MOD35_02254EC8
+MOD35_02254EC8: ; 0x02254EC8
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ mov r0, #0
+ add r6, r1, #0
+ str r0, [sp]
+ ldrb r0, [r6]
+ cmp r0, #0
+ ble _02254F00
+ add r4, r6, #0
+ add r5, r7, #0
+_02254EDC:
+ ldrh r0, [r4, #0x1c]
+ ldrh r1, [r4, #0x20]
+ mov r2, #0
+ bl FUN_0206B7BC
+ add r1, r0, #0
+ ldr r0, [r5, #0x24]
+ add r1, r1, #1
+ bl MOD20_02253F9C
+ ldr r0, [sp]
+ ldrb r1, [r6]
+ add r0, r0, #1
+ add r4, r4, #2
+ add r5, r5, #4
+ str r0, [sp]
+ cmp r0, r1
+ blt _02254EDC
+_02254F00:
+ mov r0, #1
+ mov r1, #0
+ add r2, r0, #0
+ bl FUN_0206B7BC
+ add r1, r0, #0
+ ldr r0, [r7, #0x2c]
+ add r1, r1, #1
+ bl MOD20_02253F9C
+ ldrb r0, [r6]
+ cmp r0, #0
+ beq _02254F36
+ ldrh r0, [r6, #0x1c]
+ mov r1, #0x1c
+ bl FUN_02068678
+ cmp r0, #0
+ ldr r0, [r7, #0x24]
+ beq _02254F30
+ mov r1, #6
+ bl MOD20_02253F28
+ b _02254F36
+_02254F30:
+ mov r1, #7
+ bl MOD20_02253F28
+_02254F36:
+ add r0, r7, #0
+ ldr r1, [r6, #0xc]
+ add r0, #0x30
+ bl MOD35_02254FD8
+ add r0, r7, #0
+ ldr r1, [r6, #0x10]
+ add r0, #0x3c
+ bl MOD35_02254FD8
+ ldr r0, [r7, #0x48]
+ ldr r1, [r6, #0x14]
+ bl MOD35_02255094
+ ldr r0, [r7, #0x4c]
+ ldr r1, [r6, #0x18]
+ bl MOD35_02255094
+ ldrb r0, [r6]
+ cmp r0, #0
+ bne _02254F64
+ mov r4, #1
+ b _02254F66
+_02254F64:
+ mov r4, #0
+_02254F66:
+ ldr r0, [r7, #0x24]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r7, #0x30]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r7, #0x34]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r7, #0x38]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r7, #0x48]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldrb r0, [r6]
+ cmp r0, #1
+ bhi _02254F98
+ mov r4, #1
+ b _02254F9A
+_02254F98:
+ mov r4, #0
+_02254F9A:
+ ldr r0, [r7, #0x28]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r7, #0x3c]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r7, #0x40]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r7, #0x44]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r7, #0x4c]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldrb r0, [r6, #1]
+ cmp r0, #0
+ bne _02254FCC
+ mov r1, #1
+ b _02254FCE
+_02254FCC:
+ mov r1, #0
+_02254FCE:
+ ldr r0, [r7, #0x2c]
+ bl MOD20_02253F78
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD35_02254EC8
+
+ thumb_func_start MOD35_02254FD8
+MOD35_02254FD8: ; 0x02254FD8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r7, r1, #0
+ str r0, [sp]
+ cmp r7, #0x64
+ bls _02254FE6
+ mov r7, #0x64
+_02254FE6:
+ ldr r2, _02255088 ; =0x04000280
+ mov r3, #0
+ strh r3, [r2]
+ add r0, r2, #0
+ str r7, [r2, #0x10]
+ mov r1, #0x64
+ add r0, #0x18
+ str r1, [r0]
+ str r3, [r0, #4]
+ lsr r0, r2, #0xb
+_02254FFA:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _02254FFA
+ ldr r0, _0225508C ; =0x040002A0
+ ldr r4, _02255088 ; =0x04000280
+ ldr r0, [r0]
+ str r0, [sp, #4]
+ lsr r0, r4, #0xb
+_0225500A:
+ ldrh r1, [r4]
+ tst r1, r0
+ bne _0225500A
+ ldr r3, _02255090 ; =0x040002A8
+ mov r1, #0
+ ldr r2, [r3]
+ add r0, r3, #0
+ strh r1, [r4]
+ sub r0, #0x18
+ str r2, [r0]
+ mov r0, #0xa
+ sub r3, #0x10
+ str r0, [r3]
+ ldr r2, _02255088 ; =0x04000280
+ str r1, [r3, #4]
+ lsr r0, r2, #0xb
+_0225502A:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _0225502A
+ ldr r0, _0225508C ; =0x040002A0
+ ldr r2, _02255088 ; =0x04000280
+ ldr r0, [r0]
+ str r0, [sp, #8]
+ lsr r0, r2, #0xb
+_0225503A:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _0225503A
+ ldr r0, _02255090 ; =0x040002A8
+ ldr r5, [sp]
+ ldr r0, [r0]
+ mov r6, #0
+ str r0, [sp, #0xc]
+ add r4, sp, #4
+_0225504C:
+ ldr r0, [r5]
+ ldr r1, [r4]
+ bl MOD20_02253F28
+ add r6, r6, #1
+ add r4, r4, #4
+ add r5, r5, #4
+ cmp r6, #3
+ blt _0225504C
+ cmp r7, #0x64
+ bhs _02255066
+ mov r1, #1
+ b _02255068
+_02255066:
+ mov r1, #0
+_02255068:
+ ldr r0, [sp]
+ ldr r0, [r0]
+ bl MOD20_02253F78
+ cmp r7, #0xa
+ bhs _02255078
+ mov r1, #1
+ b _0225507A
+_02255078:
+ mov r1, #0
+_0225507A:
+ ldr r0, [sp]
+ ldr r0, [r0, #4]
+ bl MOD20_02253F78
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02255088: .word 0x04000280
+_0225508C: .word 0x040002A0
+_02255090: .word 0x040002A8
+ thumb_func_end MOD35_02254FD8
+
+ thumb_func_start MOD35_02255094
+MOD35_02255094: ; 0x02255094
+ push {r3, lr}
+ cmp r1, #0
+ beq _022550A0
+ cmp r1, #1
+ beq _022550A8
+ b _022550B0
+_022550A0:
+ mov r1, #0xa
+ bl MOD20_02253F28
+ pop {r3, pc}
+_022550A8:
+ mov r1, #0xb
+ bl MOD20_02253F28
+ pop {r3, pc}
+_022550B0:
+ mov r1, #0xc
+ bl MOD20_02253F28
+ pop {r3, pc}
+ thumb_func_end MOD35_02255094
+
+ .section .rodata
+ ; 0x022550B8
+ .incbin "baserom.nds", 0x28f078, 0x108
+
+ .section .sinit
+ .word MOD35_02254840
diff --git a/arm9/modules/36/asm/module_36.s b/arm9/modules/36/asm/module_36.s
new file mode 100644
index 00000000..d15b1d72
--- /dev/null
+++ b/arm9/modules/36/asm/module_36.s
@@ -0,0 +1,1571 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD36_02254840
+MOD36_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD36_02254854
+ ldr r1, _02254850 ; =MOD36_02254990
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD36_02254854
+_02254850: .word MOD36_02254990
+ thumb_func_end MOD36_02254840
+
+ thumb_func_start MOD36_02254854
+MOD36_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ add r5, r0, #0
+ ldr r1, _02254898 ; =0x00005B90
+ mov r0, #8
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD36_022548A0
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _0225489C ; =MOD36_02254938
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word 0x00005B90
+_0225489C: .word MOD36_02254938
+ thumb_func_end MOD36_02254854
+
+ thumb_func_start MOD36_022548A0
+MOD36_022548A0: ; 0x022548A0
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r4, r1, #0
+ ldr r1, _02254904 ; =0x00005B78
+ str r3, [r5, #0xc]
+ mov r0, #0
+ strb r0, [r5, r1]
+ mov r6, #1
+ add r3, r1, #1
+ strb r6, [r5, r3]
+ add r3, r1, #2
+ strb r0, [r5, r3]
+ add r0, r1, #4
+ add r0, r5, r0
+ add r1, r5, #4
+ bl MOD36_02254E30
+ cmp r0, #0
+ beq _022548FC
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ strb r0, [r5, #3]
+ add r0, r5, #4
+ bl MOD36_02254E10
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _02254908 ; =0x022553E8
+ ldr r2, _0225490C ; =MOD36_02254980
+ mov r1, #3
+ add r3, r5, #0
+ bl MOD20_02254130
+ ldr r1, _02254910 ; =0x00005B84
+ mov r2, #0
+ str r0, [r5, r1]
+ add r0, r1, #4
+ str r2, [r5, r0]
+ sub r0, r1, #4
+ str r4, [r5, r0]
+ add sp, #4
+ add r0, r6, #0
+ pop {r3, r4, r5, r6, pc}
+_022548FC:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02254904: .word 0x00005B78
+_02254908: .word 0x022553E8
+_0225490C: .word MOD36_02254980
+_02254910: .word 0x00005B84
+ thumb_func_end MOD36_022548A0
+
+ thumb_func_start MOD36_02254914
+MOD36_02254914: ; 0x02254914
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _02254930 ; =0x00005B84
+ ldr r0, [r4, r0]
+ bl MOD20_02254198
+ ldr r0, _02254934 ; =0x00005B7C
+ ldr r0, [r4, r0]
+ bl MOD36_02254E78
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+_02254930: .word 0x00005B84
+_02254934: .word 0x00005B7C
+ thumb_func_end MOD36_02254914
+
+ thumb_func_start MOD36_02254938
+MOD36_02254938: ; 0x02254938
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #3
+ bhs _02254974
+ ldr r1, _02254978 ; =0x00005B80
+ ldr r0, [r4, r1]
+ add r1, r1, #4
+ ldr r1, [r4, r1]
+ bl MOD20_02252C14
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _0225497C ; =0x022553F4
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254974
+ add r0, r4, #0
+ bl MOD36_02254914
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, _02254978 ; =0x00005B80
+ ldr r0, [r4, r0]
+ bl MOD20_022529A0
+_02254974:
+ pop {r3, r4, r5, pc}
+ nop
+_02254978: .word 0x00005B80
+_0225497C: .word 0x022553F4
+ thumb_func_end MOD36_02254938
+
+ thumb_func_start MOD36_02254980
+MOD36_02254980: ; 0x02254980
+ ldr r2, _0225498C ; =0x00005B88
+ str r1, [r3, r2]
+ add r1, r2, #4
+ str r0, [r3, r1]
+ bx lr
+ nop
+_0225498C: .word 0x00005B88
+ thumb_func_end MOD36_02254980
+
+ thumb_func_start MOD36_02254990
+MOD36_02254990: ; 0x02254990
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD36_02254990
+
+ thumb_func_start MOD36_02254998
+MOD36_02254998: ; 0x02254998
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _022549A0
+ b _022549A2
+_022549A0:
+ mov r1, #2
+_022549A2:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD36_02254998
+
+ thumb_func_start MOD36_022549AC
+MOD36_022549AC: ; 0x022549AC
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _022549BC
+ cmp r0, #1
+ beq _022549CE
+ b _022549EC
+_022549BC:
+ ldr r0, _022549F0 ; =0x00005B7C
+ mov r1, #0
+ ldr r0, [r4, r0]
+ bl MOD36_02254F0C
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549EC
+_022549CE:
+ ldr r0, _022549F0 ; =0x00005B7C
+ mov r1, #0
+ ldr r0, [r4, r0]
+ bl MOD36_02254F30
+ cmp r0, #0
+ beq _022549EC
+ ldr r0, _022549F4 ; =0x00005B80
+ ldr r0, [r4, r0]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD36_02254998
+_022549EC:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+_022549F0: .word 0x00005B7C
+_022549F4: .word 0x00005B80
+ thumb_func_end MOD36_022549AC
+
+ thumb_func_start MOD36_022549F8
+MOD36_022549F8: ; 0x022549F8
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _02254A0A
+ mov r1, #2
+ bl MOD36_02254998
+_02254A0A:
+ ldrb r0, [r4, #1]
+ cmp r0, #3
+ bhi _02254A30
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02254A1C: ; jump table
+ .short _02254A24 - _02254A1C - 2 ; case 0
+ .short _02254AF4 - _02254A1C - 2 ; case 1
+ .short _02254B4E - _02254A1C - 2 ; case 2
+ .short _02254B7C - _02254A1C - 2 ; case 3
+_02254A24:
+ ldr r0, _02254BCC ; =0x00005B80
+ ldr r0, [r4, r0]
+ bl MOD20_02252C08
+ cmp r0, #0
+ beq _02254A32
+_02254A30:
+ b _02254BC4
+_02254A32:
+ ldr r1, _02254BD0 ; =0x00005B88
+ ldr r0, [r4, r1]
+ cmp r0, #1
+ bne _02254AAE
+ add r0, r1, #4
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _02254A4C
+ cmp r0, #1
+ beq _02254A82
+ cmp r0, #2
+ beq _02254A8A
+ b _02254AA6
+_02254A4C:
+ add r0, r1, #0
+ mov r3, #1
+ sub r0, #0x10
+ strb r3, [r4, r0]
+ add r0, r1, #0
+ mov r2, #0
+ sub r0, #0xf
+ strb r2, [r4, r0]
+ add r0, r1, #0
+ sub r0, #0xe
+ sub r1, #0xc
+ strb r3, [r4, r0]
+ ldr r0, [r4, r1]
+ mov r1, #5
+ bl MOD36_02254F0C
+ ldr r0, _02254BD4 ; =0x00005B7C
+ mov r1, #7
+ ldr r0, [r4, r0]
+ bl MOD36_02254F0C
+ ldr r0, _02254BD8 ; =0x00000663
+ bl MOD20_02252B28
+ mov r0, #1
+ strb r0, [r4, #1]
+ b _02254AA6
+_02254A82:
+ ldr r0, _02254BDC ; =0x0000066E
+ bl MOD20_02252B28
+ b _02254AA6
+_02254A8A:
+ add r0, r1, #0
+ mov r2, #1
+ sub r0, #0xe
+ sub r1, #0xc
+ strb r2, [r4, r0]
+ ldr r0, [r4, r1]
+ mov r1, #5
+ bl MOD36_02254F0C
+ ldr r0, _02254BD8 ; =0x00000663
+ bl MOD20_02252B28
+ mov r0, #3
+ strb r0, [r4, #1]
+_02254AA6:
+ ldr r0, _02254BD0 ; =0x00005B88
+ mov r1, #0
+ str r1, [r4, r0]
+ b _02254BC4
+_02254AAE:
+ ldrb r0, [r4, #3]
+ cmp r0, #0
+ beq _02254ADA
+ add r0, r4, #0
+ ldr r6, [r4, #4]
+ ldr r5, [r4, #8]
+ bl MOD36_02254C44
+ cmp r0, #0
+ beq _02254AD4
+ ldr r0, [r4, #8]
+ add r1, r6, #0
+ str r0, [sp]
+ ldr r3, [r4, #4]
+ add r0, r4, #0
+ add r2, r5, #0
+ bl MOD36_02254C90
+ b _02254BC4
+_02254AD4:
+ mov r0, #0
+ strb r0, [r4, #3]
+ b _02254BC4
+_02254ADA:
+ add r0, r4, #0
+ bl MOD36_02254BE4
+ cmp r0, #0
+ beq _02254BC4
+ ldr r0, _02254BD4 ; =0x00005B7C
+ mov r1, #3
+ ldr r0, [r4, r0]
+ bl MOD36_02254F0C
+ mov r0, #1
+ strb r0, [r4, #3]
+ b _02254BC4
+_02254AF4:
+ ldr r1, _02254BD0 ; =0x00005B88
+ ldr r0, [r4, r1]
+ cmp r0, #1
+ bne _02254BC4
+ add r0, r1, #4
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _02254B0C
+ cmp r0, #1
+ beq _02254B14
+ cmp r0, #2
+ bne _02254B46
+_02254B0C:
+ ldr r0, _02254BDC ; =0x0000066E
+ bl MOD20_02252B28
+ b _02254B46
+_02254B14:
+ add r0, r1, #0
+ mov r2, #1
+ sub r0, #0x10
+ strb r2, [r4, r0]
+ add r0, r1, #0
+ sub r0, #0xf
+ strb r2, [r4, r0]
+ add r0, r1, #0
+ sub r0, #0xe
+ sub r1, #0xc
+ strb r2, [r4, r0]
+ ldr r0, [r4, r1]
+ mov r1, #5
+ bl MOD36_02254F0C
+ ldr r0, _02254BD4 ; =0x00005B7C
+ mov r1, #8
+ ldr r0, [r4, r0]
+ bl MOD36_02254F0C
+ ldr r0, _02254BD8 ; =0x00000663
+ bl MOD20_02252B28
+ mov r0, #2
+ strb r0, [r4, #1]
+_02254B46:
+ ldr r0, _02254BD0 ; =0x00005B88
+ mov r1, #0
+ str r1, [r4, r0]
+ b _02254BC4
+_02254B4E:
+ ldr r0, _02254BD4 ; =0x00005B7C
+ mov r1, #8
+ ldr r0, [r4, r0]
+ bl MOD36_02254F30
+ cmp r0, #0
+ beq _02254BC4
+ ldr r0, _02254BE0 ; =0x00005B78
+ mov r3, #0
+ strb r3, [r4, r0]
+ mov r2, #1
+ add r1, r0, #1
+ strb r2, [r4, r1]
+ add r1, r0, #2
+ strb r3, [r4, r1]
+ add r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #5
+ bl MOD36_02254F0C
+ mov r0, #0
+ strb r0, [r4, #1]
+ b _02254BC4
+_02254B7C:
+ ldr r1, _02254BD0 ; =0x00005B88
+ ldr r0, [r4, r1]
+ cmp r0, #2
+ bne _02254B9C
+ add r0, r1, #0
+ mov r2, #0
+ sub r0, #0xe
+ sub r1, #0xc
+ strb r2, [r4, r0]
+ ldr r0, [r4, r1]
+ mov r1, #5
+ bl MOD36_02254F0C
+ mov r0, #0
+ strb r0, [r4, #1]
+ b _02254BC4
+_02254B9C:
+ cmp r0, #3
+ bne _02254BC4
+ mov r0, #0
+ sub r1, #0xe
+ strb r0, [r4, r1]
+ add r0, r4, #4
+ bl MOD36_02254E10
+ ldr r0, _02254BD4 ; =0x00005B7C
+ mov r1, #5
+ ldr r0, [r4, r0]
+ bl MOD36_02254F0C
+ ldr r0, _02254BD4 ; =0x00005B7C
+ mov r1, #6
+ ldr r0, [r4, r0]
+ bl MOD36_02254F0C
+ mov r0, #0
+ strb r0, [r4, #1]
+_02254BC4:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02254BCC: .word 0x00005B80
+_02254BD0: .word 0x00005B88
+_02254BD4: .word 0x00005B7C
+_02254BD8: .word 0x00000663
+_02254BDC: .word 0x0000066E
+_02254BE0: .word 0x00005B78
+ thumb_func_end MOD36_022549F8
+
+ thumb_func_start MOD36_02254BE4
+MOD36_02254BE4: ; 0x02254BE4
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ add r0, sp, #4
+ add r1, sp, #0
+ bl MOD20_02252B68
+ cmp r0, #0
+ beq _02254C3E
+ ldr r1, [sp, #4]
+ ldr r2, [sp]
+ sub r1, #0x10
+ sub r2, #0x10
+ cmp r1, #0x9b
+ bhs _02254C06
+ mov r0, #1
+ b _02254C08
+_02254C06:
+ mov r0, #0
+_02254C08:
+ cmp r2, #0x95
+ bhs _02254C10
+ mov r3, #1
+ b _02254C12
+_02254C10:
+ mov r3, #0
+_02254C12:
+ tst r0, r3
+ beq _02254C3E
+ lsr r3, r1, #1
+ lsr r1, r2, #1
+ add r2, r4, #0
+ mov r0, #0x96
+ add r2, #0x10
+ mul r0, r3
+ str r3, [sp, #4]
+ str r1, [sp]
+ add r2, r2, r0
+ ldrb r0, [r2, r1]
+ cmp r0, #0
+ bne _02254C3E
+ mov r0, #1
+ strb r0, [r2, r1]
+ ldr r1, [sp, #4]
+ str r1, [r4, #4]
+ ldr r1, [sp]
+ add sp, #8
+ str r1, [r4, #8]
+ pop {r4, pc}
+_02254C3E:
+ mov r0, #0
+ add sp, #8
+ pop {r4, pc}
+ thumb_func_end MOD36_02254BE4
+
+ thumb_func_start MOD36_02254C44
+MOD36_02254C44: ; 0x02254C44
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ add r0, sp, #4
+ add r1, sp, #0
+ bl MOD20_02252B68
+ cmp r0, #0
+ beq _02254C8A
+ ldr r1, [sp, #4]
+ ldr r2, [sp]
+ sub r1, #0x10
+ sub r2, #0x10
+ cmp r1, #0x9b
+ bhs _02254C66
+ mov r0, #1
+ b _02254C68
+_02254C66:
+ mov r0, #0
+_02254C68:
+ cmp r2, #0x95
+ bhs _02254C70
+ mov r3, #1
+ b _02254C72
+_02254C70:
+ mov r3, #0
+_02254C72:
+ tst r0, r3
+ beq _02254C8A
+ lsr r1, r1, #1
+ lsr r0, r2, #1
+ str r1, [sp, #4]
+ str r0, [sp]
+ str r1, [r4, #4]
+ ldr r0, [sp]
+ add sp, #8
+ str r0, [r4, #8]
+ mov r0, #1
+ pop {r4, pc}
+_02254C8A:
+ mov r0, #0
+ add sp, #8
+ pop {r4, pc}
+ thumb_func_end MOD36_02254C44
+
+ thumb_func_start MOD36_02254C90
+MOD36_02254C90: ; 0x02254C90
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r6, r0, #0
+ ldr r0, [sp, #0x28]
+ add r4, r2, #0
+ add r5, r1, #0
+ str r3, [sp]
+ str r0, [sp, #0x28]
+ cmp r4, r0
+ bne _02254CAC
+ add r0, r3, #0
+ cmp r5, r0
+ bne _02254CAC
+ b _02254DCC
+_02254CAC:
+ ldr r0, [sp]
+ cmp r0, r5
+ bls _02254CB6
+ sub r1, r0, r5
+ b _02254CB8
+_02254CB6:
+ sub r1, r5, r0
+_02254CB8:
+ ldr r0, [sp, #0x28]
+ cmp r0, r4
+ bls _02254CC2
+ sub r2, r0, r4
+ b _02254CC4
+_02254CC2:
+ sub r2, r4, r0
+_02254CC4:
+ cmp r1, r2
+ bls _02254D46
+ ldr r0, [sp]
+ cmp r0, r5
+ bls _02254CD4
+ mov r0, #1
+ str r0, [sp, #4]
+ b _02254CDA
+_02254CD4:
+ mov r0, #0
+ mvn r0, r0
+ str r0, [sp, #4]
+_02254CDA:
+ cmp r1, #0
+ beq _02254CEC
+ ldr r0, [sp, #0x28]
+ sub r0, r0, r4
+ lsl r0, r0, #0xc
+ blx _s32_div_f
+ str r0, [sp, #0x10]
+ b _02254CF0
+_02254CEC:
+ mov r0, #0
+ str r0, [sp, #0x10]
+_02254CF0:
+ ldr r0, [sp, #0x10]
+ lsl r1, r4, #0xc
+ add r7, r1, r0
+ ldr r0, [sp, #4]
+ add r5, r5, r0
+ ldr r0, [sp]
+ cmp r5, r0
+ beq _02254DB0
+ mov r1, #0x96
+ add r0, r5, #0
+ mul r0, r1
+ add r4, r6, r0
+ ldr r0, [sp, #4]
+ mul r1, r0
+ str r1, [sp, #0xc]
+_02254D0E:
+ asr r1, r7, #0xc
+ cmp r5, #0x9c
+ bhs _02254D32
+ cmp r1, #0x96
+ bhs _02254D32
+ add r0, r4, r1
+ ldrb r2, [r0, #0x10]
+ cmp r2, #0
+ bne _02254D32
+ mov r2, #0
+ strb r2, [r0, #0x10]
+ str r5, [r6, #4]
+ str r1, [r6, #8]
+ ldr r0, _02254DD0 ; =0x00005B7C
+ mov r1, #3
+ ldr r0, [r6, r0]
+ bl MOD36_02254F0C
+_02254D32:
+ ldr r0, [sp, #0xc]
+ add r4, r4, r0
+ ldr r0, [sp, #4]
+ add r5, r5, r0
+ ldr r0, [sp, #0x10]
+ add r7, r7, r0
+ ldr r0, [sp]
+ cmp r5, r0
+ bne _02254D0E
+ b _02254DB0
+_02254D46:
+ ldr r0, [sp, #0x28]
+ cmp r0, r4
+ bls _02254D50
+ mov r7, #1
+ b _02254D54
+_02254D50:
+ mov r7, #0
+ mvn r7, r7
+_02254D54:
+ cmp r2, #0
+ beq _02254D68
+ ldr r0, [sp]
+ add r1, r2, #0
+ sub r0, r0, r5
+ lsl r0, r0, #0xc
+ blx _s32_div_f
+ str r0, [sp, #8]
+ b _02254D6C
+_02254D68:
+ mov r0, #0
+ str r0, [sp, #8]
+_02254D6C:
+ ldr r0, [sp, #8]
+ lsl r1, r5, #0xc
+ add r5, r1, r0
+ ldr r0, [sp, #0x28]
+ add r4, r4, r7
+ cmp r4, r0
+ beq _02254DB0
+_02254D7A:
+ asr r1, r5, #0xc
+ cmp r4, #0x96
+ bhs _02254DA4
+ cmp r1, #0x9c
+ bhs _02254DA4
+ mov r0, #0x96
+ mul r0, r1
+ add r0, r6, r0
+ add r0, r0, r4
+ ldrb r2, [r0, #0x10]
+ cmp r2, #0
+ bne _02254DA4
+ mov r2, #1
+ strb r2, [r0, #0x10]
+ str r1, [r6, #4]
+ ldr r0, _02254DD0 ; =0x00005B7C
+ str r4, [r6, #8]
+ ldr r0, [r6, r0]
+ mov r1, #3
+ bl MOD36_02254F0C
+_02254DA4:
+ ldr r0, [sp, #8]
+ add r4, r4, r7
+ add r5, r5, r0
+ ldr r0, [sp, #0x28]
+ cmp r4, r0
+ bne _02254D7A
+_02254DB0:
+ ldr r0, [sp, #0x28]
+ cmp r0, #0x96
+ bhs _02254DCC
+ ldr r0, [sp]
+ cmp r0, #0x9c
+ bhs _02254DCC
+ str r0, [r6, #4]
+ ldr r0, [sp, #0x28]
+ mov r1, #3
+ str r0, [r6, #8]
+ ldr r0, _02254DD0 ; =0x00005B7C
+ ldr r0, [r6, r0]
+ bl MOD36_02254F0C
+_02254DCC:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254DD0: .word 0x00005B7C
+ thumb_func_end MOD36_02254C90
+
+ thumb_func_start MOD36_02254DD4
+MOD36_02254DD4: ; 0x02254DD4
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254DE4
+ cmp r0, #1
+ beq _02254DF6
+ b _02254E06
+_02254DE4:
+ ldr r0, _02254E0C ; =0x00005B7C
+ mov r1, #1
+ ldr r0, [r4, r0]
+ bl MOD36_02254F0C
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254E06
+_02254DF6:
+ ldr r0, _02254E0C ; =0x00005B7C
+ ldr r0, [r4, r0]
+ bl MOD36_02254F3C
+ cmp r0, #0
+ beq _02254E06
+ mov r0, #1
+ pop {r4, pc}
+_02254E06:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_02254E0C: .word 0x00005B7C
+ thumb_func_end MOD36_02254DD4
+
+ thumb_func_start MOD36_02254E10
+MOD36_02254E10: ; 0x02254E10
+ push {r4, r5}
+ mov r4, #0
+ add r2, r4, #0
+ add r3, r4, #0
+_02254E18:
+ add r5, r3, #0
+_02254E1A:
+ add r1, r0, r5
+ add r5, r5, #1
+ strb r2, [r1, #0xc]
+ cmp r5, #0x96
+ blt _02254E1A
+ add r4, r4, #1
+ add r0, #0x96
+ cmp r4, #0x9c
+ blt _02254E18
+ pop {r4, r5}
+ bx lr
+ thumb_func_end MOD36_02254E10
+
+ thumb_func_start MOD36_02254E30
+MOD36_02254E30: ; 0x02254E30
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r0, #8
+ mov r1, #0x70
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254E74
+ add r0, #8
+ mov r1, #4
+ bl MOD20_022536F4
+ str r5, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ bl MOD20_02252D24
+ str r0, [r4, #0x20]
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x68
+ strh r1, [r0]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD36_02254E8C
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _02254E74
+ str r4, [r6]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254E74:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD36_02254E30
+
+ thumb_func_start MOD36_02254E78
+MOD36_02254E78: ; 0x02254E78
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02254E88
+ bl MOD36_02254EE4
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254E88:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD36_02254E78
+
+ thumb_func_start MOD36_02254E8C
+MOD36_02254E8C: ; 0x02254E8C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ add r7, r0, #0
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x59
+ bl FUN_02006A34
+ mov r0, #8
+ str r0, [sp]
+ add r0, r7, #0
+ add r0, #0x34
+ mov r1, #0xc
+ mov r2, #0x57
+ mov r3, #0x58
+ bl MOD20_02253FBC
+ add r0, r7, #0
+ str r0, [sp, #0xc]
+ add r0, #0x34
+ ldr r4, _02254EE0 ; =0x02255440
+ mov r6, #0
+ add r5, r7, #0
+ str r0, [sp, #0xc]
+_02254EC6:
+ ldr r0, [r7, #0x20]
+ ldr r2, [sp, #0xc]
+ add r1, r4, #0
+ bl MOD20_02253E74
+ str r0, [r5, #0x24]
+ add r6, r6, #1
+ add r4, #0x10
+ add r5, r5, #4
+ cmp r6, #4
+ blt _02254EC6
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254EE0: .word 0x02255440
+ thumb_func_end MOD36_02254E8C
+
+ thumb_func_start MOD36_02254EE4
+MOD36_02254EE4: ; 0x02254EE4
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+_02254EEC:
+ ldr r1, [r5, #0x24]
+ cmp r1, #0
+ beq _02254EF8
+ ldr r0, [r6, #0x20]
+ bl MOD20_02253F14
+_02254EF8:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _02254EEC
+ add r6, #0x34
+ add r0, r6, #0
+ bl MOD20_02254014
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD36_02254EE4
+
+ thumb_func_start MOD36_02254F0C
+MOD36_02254F0C: ; 0x02254F0C
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254F2C ; =0x02255480
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254F2C: .word 0x02255480
+ thumb_func_end MOD36_02254F0C
+
+ thumb_func_start MOD36_02254F30
+MOD36_02254F30: ; 0x02254F30
+ ldr r3, _02254F38 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254F38: .word MOD20_02253794
+ thumb_func_end MOD36_02254F30
+
+ thumb_func_start MOD36_02254F3C
+MOD36_02254F3C: ; 0x02254F3C
+ ldr r3, _02254F44 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254F44: .word MOD20_022537B8
+ thumb_func_end MOD36_02254F3C
+
+ thumb_func_start MOD36_02254F48
+MOD36_02254F48: ; 0x02254F48
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD36_02254F48
+
+ thumb_func_start MOD36_02254F5C
+MOD36_02254F5C: ; 0x02254F5C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ mov r0, #8
+ add r5, r1, #0
+ bl FUN_02016B90
+ cmp r0, #0
+ bne _02254F70
+ bl ErrorHandling
+_02254F70:
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ ldr r2, _0225502C ; =0x02255408
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #4]
+ ldr r2, _02255030 ; =0x02255424
+ mov r1, #7
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #8
+ bl FUN_02016B90
+ cmp r0, #0
+ bne _02254F9E
+ bl ErrorHandling
+_02254F9E:
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0xc
+ mov r1, #0x56
+ mov r3, #6
+ bl FUN_0200687C
+ add r6, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0xc
+ mov r1, #0x55
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ mov r0, #8
+ bl FUN_02016B90
+ cmp r0, #0
+ bne _02254FEA
+ bl ErrorHandling
+_02254FEA:
+ add r0, r4, #0
+ lsr r1, r6, #5
+ bl MOD36_0225503C
+ ldr r0, [r4, #4]
+ mov r1, #7
+ bl FUN_02017CD0
+ ldr r1, _02255034 ; =0x04001000
+ ldr r0, _02255038 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #0x14
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r5, #0
+ bl MOD36_02254F48
+ mov r0, #8
+ bl FUN_02016B90
+ cmp r0, #0
+ bne _02255028
+ bl ErrorHandling
+_02255028:
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_0225502C: .word 0x02255408
+_02255030: .word 0x02255424
+_02255034: .word 0x04001000
+_02255038: .word 0xFFFFE0FF
+ thumb_func_end MOD36_02254F5C
+
+ thumb_func_start MOD36_0225503C
+MOD36_0225503C: ; 0x0225503C
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ ldr r3, _02255098 ; =0x02255400
+ add r4, r0, #0
+ ldrh r5, [r3]
+ add r0, sp, #0
+ add r2, sp, #0
+ strh r5, [r0]
+ ldrh r5, [r3, #2]
+ strh r5, [r0, #2]
+ ldrh r5, [r3, #4]
+ ldrh r3, [r3, #6]
+ strh r5, [r0, #4]
+ strh r3, [r0, #6]
+ str r1, [r4, #0x58]
+ strh r1, [r0, #6]
+ add r1, r4, #0
+ ldr r0, [r4, #4]
+ add r1, #0x48
+ bl FUN_02019150
+ ldr r0, [r4]
+ mov r2, #0xbe
+ ldr r0, [r0, #8]
+ ldr r1, [r4, #0x54]
+ lsl r2, r2, #6
+ bl FUN_0208946C
+ cmp r0, #0
+ bne _02255082
+ add r0, r4, #0
+ add r0, #0x48
+ mov r1, #4
+ bl FUN_02019620
+_02255082:
+ add r0, r4, #0
+ add r0, #0x48
+ bl FUN_02019270
+ add r4, #0x48
+ add r0, r4, #0
+ bl FUN_02019548
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ nop
+_02255098: .word 0x02255400
+ thumb_func_end MOD36_0225503C
+
+ thumb_func_start MOD36_0225509C
+MOD36_0225509C: ; 0x0225509C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _022550B8
+ cmp r0, #1
+ beq _022550C4
+ pop {r3, r4, r5, pc}
+_022550B8:
+ mov r0, #1
+ str r0, [r4, #0x5c]
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_022550C4:
+ ldr r0, [r4]
+ mov r2, #0xbe
+ ldr r0, [r0, #8]
+ ldr r1, [r4, #0x54]
+ lsl r2, r2, #6
+ bl FUN_02089444
+ add r0, r4, #0
+ add r0, #0x48
+ bl FUN_02019178
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ ldr r0, [r4, #4]
+ mov r1, #7
+ bl FUN_020178A0
+ add r0, r5, #0
+ bl MOD36_02254F48
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD36_0225509C
+
+ thumb_func_start MOD36_022550F4
+MOD36_022550F4: ; 0x022550F4
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r0, #0x48
+ bl FUN_02019548
+ add r0, r4, #0
+ bl MOD36_02254F48
+ pop {r4, pc}
+ thumb_func_end MOD36_022550F4
+
+ thumb_func_start MOD36_0225510C
+MOD36_0225510C: ; 0x0225510C
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ ldr r1, [r4]
+ ldr r0, [r1]
+ lsl r2, r0, #1
+ ldr r0, [r1, #4]
+ mov r1, #0x14
+ lsl r3, r0, #1
+ asr r5, r3, #3
+ asr r0, r2, #3
+ mul r1, r5
+ add r5, r0, r1
+ mov r0, #2
+ str r0, [sp]
+ str r0, [sp, #4]
+ add r0, r4, #0
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x10
+ add r0, #0x48
+ mov r1, #1
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x10
+ bl FUN_020196F4
+ ldr r1, [r4, #0x54]
+ lsl r0, r5, #5
+ add r0, r1, r0
+ ldr r1, [r4, #0x58]
+ mov r2, #0x20
+ add r1, r1, r5
+ lsl r1, r1, #5
+ blx GXS_LoadBG3Char
+ add r0, r6, #0
+ bl MOD36_02254F48
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD36_0225510C
+
+ thumb_func_start MOD36_02255164
+MOD36_02255164: ; 0x02255164
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r0, #0x48
+ bl FUN_02019548
+ add r0, r4, #0
+ bl MOD36_02254F48
+ pop {r4, pc}
+ thumb_func_end MOD36_02255164
+
+ thumb_func_start MOD36_0225517C
+MOD36_0225517C: ; 0x0225517C
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A4
+ add r5, r0, #0
+ ldr r0, _022551D4 ; =0x00005B74
+ ldrb r0, [r5, r0]
+ cmp r0, #0
+ beq _0225519C
+ mov r1, #2
+ b _0225519E
+_0225519C:
+ mov r1, #1
+_0225519E:
+ ldr r0, [r4, #0x28]
+ bl MOD20_02253F28
+ ldr r0, _022551D8 ; =0x00005B75
+ ldrb r0, [r5, r0]
+ cmp r0, #0
+ beq _022551B0
+ mov r1, #4
+ b _022551B2
+_022551B0:
+ mov r1, #3
+_022551B2:
+ ldr r0, [r4, #0x2c]
+ bl MOD20_02253F28
+ ldr r0, _022551DC ; =0x00005B76
+ ldrb r0, [r5, r0]
+ cmp r0, #0
+ beq _022551C4
+ mov r1, #6
+ b _022551C6
+_022551C4:
+ mov r1, #5
+_022551C6:
+ ldr r0, [r4, #0x30]
+ bl MOD20_02253F28
+ add r0, r6, #0
+ bl MOD36_02254F48
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_022551D4: .word 0x00005B74
+_022551D8: .word 0x00005B75
+_022551DC: .word 0x00005B76
+ thumb_func_end MOD36_0225517C
+
+ thumb_func_start MOD36_022551E0
+MOD36_022551E0: ; 0x022551E0
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r0, r4, #0
+ add r0, #0x48
+ mov r1, #4
+ bl FUN_02019620
+ add r4, #0x48
+ add r0, r4, #0
+ bl FUN_02019548
+ add r0, r5, #0
+ bl MOD36_02254F48
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD36_022551E0
+
+ thumb_func_start MOD36_0225520C
+MOD36_0225520C: ; 0x0225520C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _02255236
+ ldr r1, [r4, #0x5c]
+ cmp r1, #0
+ beq _02255236
+ add r0, r5, #0
+ bl MOD36_02254F48
+ pop {r3, r4, r5, pc}
+_02255236:
+ cmp r0, #4
+ bls _0225523C
+ b _0225539A
+_0225523C:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02255248: ; jump table
+ .short _02255252 - _02255248 - 2 ; case 0
+ .short _02255286 - _02255248 - 2 ; case 1
+ .short _022552D8 - _02255248 - 2 ; case 2
+ .short _02255322 - _02255248 - 2 ; case 3
+ .short _02255356 - _02255248 - 2 ; case 4
+_02255252:
+ add r0, r4, #0
+ add r0, #0x68
+ ldrh r0, [r0]
+ mov r1, #0x15
+ lsl r1, r1, #4
+ add r2, r0, r1
+ add r0, r4, #0
+ add r0, #0x68
+ strh r2, [r0]
+ add r0, r4, #0
+ add r0, #0x6a
+ strh r1, [r0]
+ add r1, r4, #0
+ add r1, #0x68
+ ldrh r1, [r1]
+ ldr r0, [r4, #0x24]
+ bl MOD20_02253FB4
+ mov r0, #0
+ str r0, [r4, #0x64]
+ str r0, [r4, #0x60]
+ str r0, [r4, #0x5c]
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_02255286:
+ add r0, r4, #0
+ add r0, #0x68
+ ldrh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x6a
+ ldrh r0, [r0]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0x68
+ strh r1, [r0]
+ add r1, r4, #0
+ add r1, #0x68
+ ldrh r1, [r1]
+ ldr r0, [r4, #0x24]
+ bl MOD20_02253FB4
+ add r0, r4, #0
+ add r0, #0x6a
+ ldrh r1, [r0]
+ mov r0, #0x15
+ lsl r0, r0, #4
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0x6a
+ strh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x6a
+ mov r1, #3
+ ldrh r0, [r0]
+ lsl r1, r1, #0xc
+ cmp r0, r1
+ blo _0225539A
+ add r0, r4, #0
+ add r0, #0x6a
+ strh r1, [r0]
+ mov r0, #1
+ str r0, [r4, #0x64]
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_022552D8:
+ add r0, r4, #0
+ add r0, #0x68
+ ldrh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x6a
+ ldrh r0, [r0]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0x68
+ strh r1, [r0]
+ add r1, r4, #0
+ add r1, #0x68
+ ldrh r1, [r1]
+ ldr r0, [r4, #0x24]
+ bl MOD20_02253FB4
+ ldr r0, [r4, #0x60]
+ cmp r0, #0
+ beq _0225539A
+ bl FUN_0201BA60
+ mov r1, #7
+ and r0, r1
+ str r0, [r4, #0x6c]
+ add r0, r4, #0
+ add r0, #0x6a
+ ldrh r1, [r0]
+ mov r0, #0x1a
+ lsl r0, r0, #8
+ cmp r1, r0
+ bls _0225531A
+ add r4, #0x6a
+ strh r0, [r4]
+_0225531A:
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_02255322:
+ add r0, r4, #0
+ add r0, #0x68
+ ldrh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x6a
+ ldrh r0, [r0]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0x68
+ strh r1, [r0]
+ add r1, r4, #0
+ add r1, #0x68
+ ldrh r1, [r1]
+ ldr r0, [r4, #0x24]
+ bl MOD20_02253FB4
+ ldr r0, [r4, #0x6c]
+ cmp r0, #0
+ bne _0225534E
+ sub r0, r0, #1
+ str r0, [r4, #0x6c]
+ pop {r3, r4, r5, pc}
+_0225534E:
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_02255356:
+ add r0, r4, #0
+ add r0, #0x6a
+ ldrh r0, [r0]
+ cmp r0, #0x50
+ bls _0225538E
+ add r0, r4, #0
+ add r0, #0x6a
+ ldrh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x6a
+ sub r1, #0x50
+ strh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x68
+ ldrh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x6a
+ ldrh r0, [r0]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0x68
+ strh r1, [r0]
+ ldr r0, [r4, #0x24]
+ add r4, #0x68
+ ldrh r1, [r4]
+ bl MOD20_02253FB4
+ pop {r3, r4, r5, pc}
+_0225538E:
+ mov r0, #0
+ add r4, #0x6a
+ strh r0, [r4]
+ add r0, r5, #0
+ bl MOD36_02254F48
+_0225539A:
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD36_0225520C
+
+ thumb_func_start MOD36_0225539C
+MOD36_0225539C: ; 0x0225539C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _022553BE
+ cmp r0, #1
+ beq _022553CA
+ pop {r3, r4, r5, pc}
+_022553BE:
+ mov r0, #1
+ str r0, [r4, #0x60]
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_022553CA:
+ add r0, r4, #0
+ mov r1, #7
+ bl MOD36_02254F30
+ cmp r0, #0
+ beq _022553E2
+ ldr r0, _022553E4 ; =0x0000066A
+ bl MOD20_02252B28
+ add r0, r5, #0
+ bl MOD36_02254F48
+_022553E2:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022553E4: .word 0x0000066A
+ thumb_func_end MOD36_0225539C
+
+ .section .rodata
+ ; 0x022553E8
+ .incbin "baserom.nds", 0x28fda8, 0x110
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_36.SINIT_START
+ .global SDK_OVERLAY.MODULE_36.SINIT_END
+SDK_OVERLAY.MODULE_36.SINIT_START:
+ .word MOD36_02254840
+ .word 0
+SDK_OVERLAY.MODULE_36.SINIT_END: