summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-05-11 17:22:54 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2020-05-11 17:22:54 -0400
commitbf8f421169262a7f634de5a1b291a8ac407be2d9 (patch)
treebc085b92b087047060371305ea21a2e48e5d2c3b
parent72753a7b4b6bea9b35314dff70995fb7d415413a (diff)
Disassemble module 39
-rw-r--r--arm9/arm9.lcf28
-rw-r--r--arm9/global.inc1
-rw-r--r--arm9/modules/01/src/module_01.cpp2
-rw-r--r--arm9/modules/39/asm/module_39.s1457
4 files changed, 1483 insertions, 5 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf
index 201fbfe5..9eb19eb3 100644
--- a/arm9/arm9.lcf
+++ b/arm9/arm9.lcf
@@ -1642,10 +1642,21 @@ SECTIONS {
SDK_OVERLAY.MODULE_38.BSS_SIZE = SDK_OVERLAY.MODULE_38.BSS_END - SDK_OVERLAY.MODULE_38.BSS_START;
} >> MODULE_38
- .MODULE.39: {
+ .MODULE.39 :
+ {
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_39.START = .;
- FILE_291200.o (.text) /* 0x28D200 */
+ module_39.o (.text)
+ module_39.o (.rodata)
+ module_39.o (.init)
+ // SDK_OVERLAY.MODULE_39.SINIT_START = .;
+ module_39.o (.ctor)
+ module_39.o (.sinit)
+ // WRITEW 0;
+ // SDK_OVERLAY.MODULE_39.SINIT_END = .;
+ . = ALIGN(32);
+ module_39.o (.sdata)
+ module_39.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_39.END = .;
SDK_OVERLAY.MODULE_39.SIZE = SDK_OVERLAY.MODULE_39.END - SDK_OVERLAY.MODULE_39.START;
@@ -1655,7 +1666,8 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_39.BSS_START = .;
- FILE_291200.o (.bss)
+ module_39.o (.sbss)
+ module_39.o (.bss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_39.BSS_END = .;
SDK_OVERLAY.MODULE_39.BSS_SIZE = SDK_OVERLAY.MODULE_39.BSS_END - SDK_OVERLAY.MODULE_39.BSS_START;
@@ -3028,7 +3040,15 @@ SECTIONS {
WRITEW SDK_OVERLAY_MODULE_38_ID;
WRITEW 0;
- OVERLAY_TABLE(MODULE_39, 39)
+ WRITEW SDK_OVERLAY_MODULE_39_ID;
+ WRITEW SDK_OVERLAY.MODULE_39.START;
+ WRITEW SDK_OVERLAY.MODULE_39.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_39.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_39.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_39.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_39_ID;
+ WRITEW 0;
+
OVERLAY_TABLE(MODULE_40, 40)
OVERLAY_TABLE(MODULE_41, 41)
OVERLAY_TABLE(MODULE_42, 42)
diff --git a/arm9/global.inc b/arm9/global.inc
index a3c1c70e..c79de602 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -2658,6 +2658,7 @@
.extern FUN_020C6034
.extern FUN_020C605C
.extern MOD05_021EC464
+.extern MOD05_021ED9B4
.extern MOD05_021EC7B4
.extern MOD20_02253A04
.extern MOD20_02253FAC
diff --git a/arm9/modules/01/src/module_01.cpp b/arm9/modules/01/src/module_01.cpp
index 21b371e0..9da5f8d5 100644
--- a/arm9/modules/01/src/module_01.cpp
+++ b/arm9/modules/01/src/module_01.cpp
@@ -8,4 +8,4 @@ public:
THUMB_FUNC Unk021D7500() { unk4++; }
};
-static class Unk021D7500 UNK_021D7500;
+static Unk021D7500 UNK_021D7500;
diff --git a/arm9/modules/39/asm/module_39.s b/arm9/modules/39/asm/module_39.s
new file mode 100644
index 00000000..92d51179
--- /dev/null
+++ b/arm9/modules/39/asm/module_39.s
@@ -0,0 +1,1457 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD39_02254840
+MOD39_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD39_02254854
+ ldr r1, _02254850 ; =MOD39_022549D4
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD39_02254854
+_02254850: .word MOD39_022549D4
+ thumb_func_end MOD39_02254840
+
+ thumb_func_start MOD39_02254854
+MOD39_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x68
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD39_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD39_02254998
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word MOD39_02254998
+ thumb_func_end MOD39_02254854
+
+ thumb_func_start MOD39_0225489C
+MOD39_0225489C: ; 0x0225489C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ str r0, [sp, #4]
+ add r0, r1, #0
+ str r1, [sp, #8]
+ str r2, [sp, #0xc]
+ bl MOD20_02252C40
+ bl FUN_0206BB1C
+ str r0, [sp, #0x10]
+ bl FUN_0206B9AC
+ ldr r1, [sp, #4]
+ mov r6, #0
+ add r1, #0x34
+ strb r0, [r1]
+ ldr r0, [sp, #4]
+ add r0, #0x34
+ ldrb r0, [r0]
+ cmp r0, #0
+ ble _02254906
+ ldr r4, [sp, #4]
+ add r5, r4, #0
+_022548CC:
+ ldr r0, [sp, #0x10]
+ add r1, r6, #0
+ bl FUN_0206B9B0
+ add r7, r0, #0
+ bl FUN_0206B688
+ str r0, [r4, #4]
+ add r0, r7, #0
+ mov r1, #5
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r5, #0x1c]
+ add r0, r7, #0
+ mov r1, #0x70
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r5, #0x28]
+ ldr r0, [sp, #4]
+ str r7, [r4, #0x48]
+ add r0, #0x34
+ ldrb r0, [r0]
+ add r6, r6, #1
+ add r4, r4, #4
+ add r5, r5, #2
+ cmp r6, r0
+ blt _022548CC
+_02254906:
+ ldr r0, [sp, #4]
+ mov r1, #0
+ add r0, #0x36
+ strb r1, [r0]
+ ldr r0, [sp, #4]
+ add r0, #0x34
+ ldrb r0, [r0]
+ cmp r0, #1
+ bls _0225491A
+ mov r1, #1
+_0225491A:
+ ldr r0, [sp, #4]
+ ldr r2, [sp, #0xc]
+ add r0, #0x37
+ strb r1, [r0]
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #4]
+ add r0, #0x38
+ add r1, r1, #4
+ bl MOD39_02254C1C
+ cmp r0, #0
+ beq _02254964
+ ldr r0, [sp, #4]
+ mov r1, #0
+ strb r1, [r0]
+ strb r1, [r0, #1]
+ strb r1, [r0, #2]
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _0225496C ; =0x02255300
+ ldr r2, _02254970 ; =MOD39_0225498C
+ ldr r3, [sp, #4]
+ mov r1, #3
+ bl MOD20_02254130
+ ldr r1, [sp, #4]
+ str r0, [r1, #0x40]
+ ldr r0, [sp, #4]
+ mov r1, #0
+ add r0, #0x46
+ strh r1, [r0]
+ ldr r1, [sp, #8]
+ ldr r0, [sp, #4]
+ add sp, #0x14
+ str r1, [r0, #0x3c]
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_02254964:
+ mov r0, #0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0225496C: .word 0x02255300
+_02254970: .word MOD39_0225498C
+ thumb_func_end MOD39_0225489C
+
+ thumb_func_start MOD39_02254974
+MOD39_02254974: ; 0x02254974
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x40]
+ bl MOD20_02254198
+ ldr r0, [r4, #0x38]
+ bl MOD39_02254C58
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD39_02254974
+
+ thumb_func_start MOD39_0225498C
+MOD39_0225498C: ; 0x0225498C
+ add r2, r3, #0
+ add r2, #0x44
+ strh r0, [r2]
+ add r3, #0x46
+ strh r1, [r3]
+ bx lr
+ thumb_func_end MOD39_0225498C
+
+ thumb_func_start MOD39_02254998
+MOD39_02254998: ; 0x02254998
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #3
+ bhs _022549CE
+ ldr r0, [r4, #0x3c]
+ ldr r1, [r4, #0x40]
+ bl MOD20_02252C14
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _022549D0 ; =0x0225530C
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _022549CE
+ add r0, r4, #0
+ bl MOD39_02254974
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x3c]
+ bl MOD20_022529A0
+_022549CE:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022549D0: .word 0x0225530C
+ thumb_func_end MOD39_02254998
+
+ thumb_func_start MOD39_022549D4
+MOD39_022549D4: ; 0x022549D4
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD39_022549D4
+
+ thumb_func_start MOD39_022549DC
+MOD39_022549DC: ; 0x022549DC
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _022549E4
+ b _022549E6
+_022549E4:
+ mov r1, #2
+_022549E6:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD39_022549DC
+
+ thumb_func_start MOD39_022549F0
+MOD39_022549F0: ; 0x022549F0
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A00
+ cmp r0, #1
+ beq _02254A10
+ b _02254A2A
+_02254A00:
+ ldr r0, [r4, #0x38]
+ mov r1, #0
+ bl MOD39_02254DA4
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A2A
+_02254A10:
+ ldr r0, [r4, #0x38]
+ mov r1, #0
+ bl MOD39_02254DC8
+ cmp r0, #0
+ beq _02254A2A
+ ldr r0, [r4, #0x3c]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD39_022549DC
+_02254A2A:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD39_022549F0
+
+ thumb_func_start MOD39_02254A30
+MOD39_02254A30: ; 0x02254A30
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _02254A44
+ mov r1, #2
+ bl MOD39_022549DC
+ mov r0, #0
+ pop {r4, pc}
+_02254A44:
+ ldrb r1, [r4, #1]
+ cmp r1, #3
+ bhi _02254B48
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02254A56: ; jump table
+ .short _02254A5E - _02254A56 - 2 ; case 0
+ .short _02254ACC - _02254A56 - 2 ; case 1
+ .short _02254ADC - _02254A56 - 2 ; case 2
+ .short _02254B38 - _02254A56 - 2 ; case 3
+_02254A5E:
+ add r1, r4, #0
+ add r1, #0x46
+ ldrh r1, [r1]
+ cmp r1, #1
+ bne _02254B48
+ add r1, r4, #0
+ add r1, #0x44
+ ldrh r1, [r1]
+ cmp r1, #0
+ beq _02254AA8
+ cmp r1, #1
+ beq _02254A7C
+ cmp r1, #2
+ beq _02254A92
+ b _02254AC4
+_02254A7C:
+ bl MOD39_02254B50
+ cmp r0, #0
+ beq _02254AC4
+ ldr r0, [r4, #0x38]
+ mov r1, #4
+ bl MOD39_02254DA4
+ mov r0, #1
+ strb r0, [r4, #1]
+ b _02254AC4
+_02254A92:
+ bl MOD39_02254B9C
+ cmp r0, #0
+ beq _02254AC4
+ ldr r0, [r4, #0x38]
+ mov r1, #5
+ bl MOD39_02254DA4
+ mov r0, #1
+ strb r0, [r4, #1]
+ b _02254AC4
+_02254AA8:
+ add r0, #0x34
+ ldrb r0, [r0]
+ cmp r0, #1
+ bls _02254ABE
+ ldr r0, [r4, #0x38]
+ mov r1, #2
+ bl MOD39_02254DA4
+ mov r0, #2
+ strb r0, [r4, #1]
+ b _02254AC4
+_02254ABE:
+ ldr r0, _02254B4C ; =0x0000066E
+ bl MOD20_02252B28
+_02254AC4:
+ mov r0, #0
+ add r4, #0x46
+ strh r0, [r4]
+ b _02254B48
+_02254ACC:
+ ldr r0, [r4, #0x38]
+ bl MOD39_02254DD4
+ cmp r0, #0
+ beq _02254B48
+ mov r0, #0
+ strb r0, [r4, #1]
+ b _02254B48
+_02254ADC:
+ add r0, #0x46
+ ldrh r0, [r0]
+ cmp r0, #2
+ bne _02254AF2
+ ldr r0, [r4, #0x38]
+ mov r1, #3
+ bl MOD39_02254DA4
+ mov r0, #0
+ strb r0, [r4, #1]
+ b _02254B48
+_02254AF2:
+ cmp r0, #3
+ bne _02254B48
+ add r0, r4, #0
+ add r0, #0x36
+ ldrb r0, [r0]
+ lsl r0, r0, #2
+ add r0, r4, r0
+ ldr r0, [r0, #0x48]
+ str r0, [r4, #0x60]
+ add r0, r4, #0
+ add r0, #0x37
+ ldrb r0, [r0]
+ lsl r0, r0, #2
+ add r0, r4, r0
+ ldr r0, [r0, #0x48]
+ str r0, [r4, #0x64]
+ add r0, r4, #0
+ add r0, #0x60
+ bl MOD05_021ED9B4
+ add r1, r4, #0
+ add r1, #0x35
+ strb r0, [r1]
+ ldr r0, [r4, #0x38]
+ mov r1, #3
+ bl MOD39_02254DA4
+ ldr r0, [r4, #0x38]
+ mov r1, #6
+ bl MOD39_02254DA4
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254B48
+_02254B38:
+ ldr r0, [r4, #0x38]
+ mov r1, #6
+ bl MOD39_02254DC8
+ cmp r0, #0
+ beq _02254B48
+ mov r0, #0
+ strb r0, [r4, #1]
+_02254B48:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+_02254B4C: .word 0x0000066E
+ thumb_func_end MOD39_02254A30
+
+ thumb_func_start MOD39_02254B50
+MOD39_02254B50: ; 0x02254B50
+ push {r3, r4}
+ add r1, r0, #0
+ add r1, #0x34
+ ldrb r1, [r1]
+ cmp r1, #2
+ bls _02254B94
+ add r2, r0, #0
+ mov r1, #0
+ add r2, #0x36
+_02254B62:
+ ldrb r3, [r2]
+ add r3, r3, #1
+ strb r3, [r2]
+ add r3, r0, #0
+ add r3, #0x36
+ ldrb r4, [r3]
+ add r3, r0, #0
+ add r3, #0x34
+ ldrb r3, [r3]
+ cmp r4, r3
+ blo _02254B7E
+ add r3, r0, #0
+ add r3, #0x36
+ strb r1, [r3]
+_02254B7E:
+ add r3, r0, #0
+ add r3, #0x36
+ ldrb r4, [r3]
+ add r3, r0, #0
+ add r3, #0x37
+ ldrb r3, [r3]
+ cmp r4, r3
+ beq _02254B62
+ mov r0, #1
+ pop {r3, r4}
+ bx lr
+_02254B94:
+ mov r0, #0
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD39_02254B50
+
+ thumb_func_start MOD39_02254B9C
+MOD39_02254B9C: ; 0x02254B9C
+ push {r3, r4}
+ add r1, r0, #0
+ add r1, #0x34
+ ldrb r1, [r1]
+ cmp r1, #2
+ bls _02254BE0
+ add r2, r0, #0
+ mov r1, #0
+ add r2, #0x37
+_02254BAE:
+ ldrb r3, [r2]
+ add r3, r3, #1
+ strb r3, [r2]
+ add r3, r0, #0
+ add r3, #0x37
+ ldrb r4, [r3]
+ add r3, r0, #0
+ add r3, #0x34
+ ldrb r3, [r3]
+ cmp r4, r3
+ blo _02254BCA
+ add r3, r0, #0
+ add r3, #0x37
+ strb r1, [r3]
+_02254BCA:
+ add r3, r0, #0
+ add r3, #0x37
+ ldrb r4, [r3]
+ add r3, r0, #0
+ add r3, #0x36
+ ldrb r3, [r3]
+ cmp r4, r3
+ beq _02254BAE
+ mov r0, #1
+ pop {r3, r4}
+ bx lr
+_02254BE0:
+ mov r0, #0
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD39_02254B9C
+
+ thumb_func_start MOD39_02254BE8
+MOD39_02254BE8: ; 0x02254BE8
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254BF8
+ cmp r0, #1
+ beq _02254C08
+ b _02254C16
+_02254BF8:
+ ldr r0, [r4, #0x38]
+ mov r1, #1
+ bl MOD39_02254DA4
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254C16
+_02254C08:
+ ldr r0, [r4, #0x38]
+ bl MOD39_02254DD4
+ cmp r0, #0
+ beq _02254C16
+ mov r0, #1
+ pop {r4, pc}
+_02254C16:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD39_02254BE8
+
+ thumb_func_start MOD39_02254C1C
+MOD39_02254C1C: ; 0x02254C1C
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r0, #8
+ mov r1, #0x88
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254C52
+ add r0, #8
+ mov r1, #4
+ bl MOD20_022536F4
+ str r5, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ bl MOD20_02252D24
+ str r0, [r4, #0x20]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD39_02254C6C
+ str r4, [r6]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254C52:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD39_02254C1C
+
+ thumb_func_start MOD39_02254C58
+MOD39_02254C58: ; 0x02254C58
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02254C68
+ bl MOD39_02254D78
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254C68:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD39_02254C58
+
+ thumb_func_start MOD39_02254C6C
+MOD39_02254C6C: ; 0x02254C6C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ mov r0, #1
+ str r1, [sp, #0xc]
+ bl MOD20_022539C4
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x4a
+ bl FUN_02006A34
+ mov r1, #0x14
+ blx _u32_div_f
+ ldr r1, [sp, #0xc]
+ str r0, [r5, #0x64]
+ add r2, r1, #0
+ add r2, #0x30
+ ldrb r2, [r2]
+ mov r3, #0
+ bl MOD20_02253A04
+ mov r0, #8
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0x3c
+ mov r1, #0xc
+ mov r2, #0x48
+ mov r3, #0x49
+ bl MOD20_02253FBC
+ mov r0, #8
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0x50
+ mov r1, #0xc
+ mov r2, #5
+ mov r3, #6
+ bl MOD20_02253FBC
+ add r0, r5, #0
+ str r0, [sp, #0x10]
+ add r0, #0x3c
+ ldr r7, _02254D74 ; =0x02255408
+ mov r4, #0
+ add r6, r5, #0
+ str r0, [sp, #0x10]
+_02254CD6:
+ ldr r0, [r5, #0x20]
+ ldr r2, [sp, #0x10]
+ add r1, r7, #0
+ bl MOD20_02253E74
+ str r0, [r6, #0x24]
+ add r4, r4, #1
+ add r7, #0x10
+ add r6, r6, #4
+ cmp r4, #4
+ blt _02254CD6
+ cmp r4, #6
+ bge _02254D18
+ ldr r1, _02254D74 ; =0x02255408
+ lsl r0, r4, #4
+ add r7, r1, r0
+ lsl r0, r4, #2
+ add r6, r5, r0
+ add r0, r5, #0
+ str r0, [sp, #0x14]
+ add r0, #0x50
+ str r0, [sp, #0x14]
+_02254D02:
+ ldr r0, [r5, #0x20]
+ ldr r2, [sp, #0x14]
+ add r1, r7, #0
+ bl MOD20_02253E74
+ str r0, [r6, #0x24]
+ add r4, r4, #1
+ add r7, #0x10
+ add r6, r6, #4
+ cmp r4, #6
+ blt _02254D02
+_02254D18:
+ ldr r0, [sp, #0xc]
+ add r0, #0x32
+ ldrb r2, [r0]
+ ldr r0, [sp, #0xc]
+ lsl r1, r2, #1
+ add r3, r0, r1
+ ldrh r0, [r3, #0x24]
+ mov r1, #4
+ str r0, [sp]
+ ldrh r3, [r3, #0x18]
+ add r0, r5, #0
+ bl MOD39_02254FA4
+ ldr r0, [sp, #0xc]
+ add r0, #0x33
+ ldrb r2, [r0]
+ ldr r0, [sp, #0xc]
+ lsl r1, r2, #1
+ add r3, r0, r1
+ ldrh r0, [r3, #0x24]
+ mov r1, #5
+ str r0, [sp]
+ ldrh r3, [r3, #0x18]
+ add r0, r5, #0
+ bl MOD39_02254FA4
+ ldr r0, [sp, #0xc]
+ add r0, #0x30
+ str r0, [sp, #0xc]
+ ldrb r0, [r0]
+ cmp r0, #1
+ bhi _02254D70
+ ldr r0, [r5, #0x38]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x30]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x24]
+ mov r1, #0xa
+ bl MOD20_02253F28
+_02254D70:
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254D74: .word 0x02255408
+ thumb_func_end MOD39_02254C6C
+
+ thumb_func_start MOD39_02254D78
+MOD39_02254D78: ; 0x02254D78
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r0, #0x50
+ bl MOD20_02254014
+ add r0, r6, #0
+ add r0, #0x3c
+ bl MOD20_02254014
+ mov r4, #0
+ add r5, r6, #0
+_02254D8E:
+ ldr r1, [r5, #0x24]
+ cmp r1, #0
+ beq _02254D9A
+ ldr r0, [r6, #0x20]
+ bl MOD20_02253F14
+_02254D9A:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #6
+ blt _02254D8E
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD39_02254D78
+
+ thumb_func_start MOD39_02254DA4
+MOD39_02254DA4: ; 0x02254DA4
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254DC4 ; =0x022553A8
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254DC4: .word 0x022553A8
+ thumb_func_end MOD39_02254DA4
+
+ thumb_func_start MOD39_02254DC8
+MOD39_02254DC8: ; 0x02254DC8
+ ldr r3, _02254DD0 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254DD0: .word MOD20_02253794
+ thumb_func_end MOD39_02254DC8
+
+ thumb_func_start MOD39_02254DD4
+MOD39_02254DD4: ; 0x02254DD4
+ ldr r3, _02254DDC ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254DDC: .word MOD20_022537B8
+ thumb_func_end MOD39_02254DD4
+
+ thumb_func_start MOD39_02254DE0
+MOD39_02254DE0: ; 0x02254DE0
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD39_02254DE0
+
+ thumb_func_start MOD39_02254DF4
+MOD39_02254DF4: ; 0x02254DF4
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD20_022538A4
+ ldr r0, [r5, #4]
+ ldr r2, _02254E7C ; =0x02255330
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x47
+ mov r3, #6
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x46
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, _02254E80 ; =0x04001000
+ ldr r0, _02254E84 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #4
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r4, #0
+ bl MOD39_02254DE0
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+_02254E7C: .word 0x02255330
+_02254E80: .word 0x04001000
+_02254E84: .word 0xFFFFE0FF
+ thumb_func_end MOD39_02254DF4
+
+ thumb_func_start MOD39_02254E88
+MOD39_02254E88: ; 0x02254E88
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _02254EA4
+ cmp r0, #1
+ beq _02254EB0
+ pop {r3, r4, r5, pc}
+_02254EA4:
+ mov r0, #1
+ str r0, [r4, #0x68]
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_02254EB0:
+ add r0, r4, #0
+ mov r1, #6
+ bl MOD39_02254DC8
+ cmp r0, #0
+ beq _02254ECA
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r5, #0
+ bl MOD39_02254DE0
+_02254ECA:
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD39_02254E88
+
+ thumb_func_start MOD39_02254ECC
+MOD39_02254ECC: ; 0x02254ECC
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ ldr r0, _02254EF4 ; =0x00000669
+ bl MOD20_02252B28
+ ldr r0, [r4, #0x24]
+ mov r1, #0xa
+ bl MOD20_02253F28
+ add r0, r5, #0
+ bl MOD39_02254DE0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02254EF4: .word 0x00000669
+ thumb_func_end MOD39_02254ECC
+
+ thumb_func_start MOD39_02254EF8
+MOD39_02254EF8: ; 0x02254EF8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ ldr r0, [r4, #0x24]
+ mov r1, #9
+ bl MOD20_02253F28
+ add r0, r5, #0
+ bl MOD39_02254DE0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD39_02254EF8
+
+ thumb_func_start MOD39_02254F1C
+MOD39_02254F1C: ; 0x02254F1C
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A4
+ add r7, r0, #0
+ add r0, #0x32
+ ldrb r5, [r0]
+ ldr r0, _02254F5C ; =0x00000663
+ bl MOD20_02252B28
+ lsl r0, r5, #1
+ add r3, r7, r0
+ ldrh r0, [r3, #0x24]
+ mov r1, #4
+ add r2, r5, #0
+ str r0, [sp]
+ ldrh r3, [r3, #0x18]
+ add r0, r4, #0
+ bl MOD39_02254FA4
+ add r0, r4, #0
+ bl MOD39_02254FF8
+ add r0, r6, #0
+ bl MOD39_02254DE0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254F5C: .word 0x00000663
+ thumb_func_end MOD39_02254F1C
+
+ thumb_func_start MOD39_02254F60
+MOD39_02254F60: ; 0x02254F60
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A4
+ add r7, r0, #0
+ add r0, #0x33
+ ldrb r5, [r0]
+ ldr r0, _02254FA0 ; =0x00000663
+ bl MOD20_02252B28
+ lsl r0, r5, #1
+ add r3, r7, r0
+ ldrh r0, [r3, #0x24]
+ mov r1, #5
+ add r2, r5, #0
+ str r0, [sp]
+ ldrh r3, [r3, #0x18]
+ add r0, r4, #0
+ bl MOD39_02254FA4
+ add r0, r4, #0
+ bl MOD39_02254FF8
+ add r0, r6, #0
+ bl MOD39_02254DE0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254FA0: .word 0x00000663
+ thumb_func_end MOD39_02254F60
+
+ thumb_func_start MOD39_02254FA4
+MOD39_02254FA4: ; 0x02254FA4
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ lsl r0, r1, #2
+ add r0, r5, r0
+ add r6, r2, #0
+ add r7, r3, #0
+ ldr r4, [r0, #0x24]
+ cmp r1, #5
+ bne _02254FBA
+ mov r1, #4
+ b _02254FCC
+_02254FBA:
+ add r0, r7, #0
+ mov r1, #0x1c
+ bl FUN_02068678
+ cmp r0, #0
+ beq _02254FCA
+ mov r1, #4
+ b _02254FCC
+_02254FCA:
+ mov r1, #5
+_02254FCC:
+ add r0, r4, #0
+ bl MOD20_02253F28
+ ldr r2, [r5, #0x64]
+ lsl r1, r6, #4
+ add r0, r4, #0
+ add r1, r2, r1
+ bl MOD20_02253FA4
+ add r1, sp, #8
+ ldrh r1, [r1, #0x10]
+ add r0, r7, #0
+ mov r2, #0
+ bl FUN_0206B7BC
+ add r1, r0, #0
+ add r0, r4, #0
+ add r1, r1, #1
+ bl MOD20_02253F9C
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD39_02254FA4
+
+ thumb_func_start MOD39_02254FF8
+MOD39_02254FF8: ; 0x02254FF8
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #3
+ mov r2, #0x16
+ ldr r0, [r4, #0x2c]
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0xe
+ bl MOD20_02253F64
+ mov r1, #0xb
+ lsl r1, r1, #0x10
+ ldr r0, [r4, #0x30]
+ lsr r2, r1, #1
+ bl MOD20_02253F64
+ ldr r0, [r4, #0x2c]
+ mov r1, #5
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x30]
+ mov r1, #6
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x28]
+ mov r1, #0
+ bl MOD20_02253F28
+ pop {r4, pc}
+ thumb_func_end MOD39_02254FF8
+
+ thumb_func_start MOD39_02255030
+MOD39_02255030: ; 0x02255030
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _0225505C
+ ldr r0, [r4, #0x68]
+ cmp r0, #0
+ beq _0225505C
+ add r0, r5, #0
+ bl MOD39_02254DE0
+ pop {r4, r5, r6, pc}
+_0225505C:
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _0225506C
+ cmp r0, #1
+ beq _02255086
+ pop {r4, r5, r6, pc}
+_0225506C:
+ mov r0, #0
+ str r0, [r4, #0x68]
+ add r0, r4, #0
+ bl MOD39_02254FF8
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD39_0225509C
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r4, r5, r6, pc}
+_02255086:
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD39_02255114
+ cmp r0, #0
+ beq _02255098
+ add r0, r5, #0
+ bl MOD39_02254DE0
+_02255098:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD39_02255030
+
+ thumb_func_start MOD39_0225509C
+MOD39_0225509C: ; 0x0225509C
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ add r5, r1, #0
+ mov r1, #0
+ str r1, [r4, #0x70]
+ str r1, [r4, #0x74]
+ str r1, [r4, #0x78]
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0x31
+ ldrb r0, [r0]
+ cmp r0, #3
+ bhi _022550FA
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_022550C4: ; jump table
+ .short _022550EE - _022550C4 - 2 ; case 0
+ .short _022550E0 - _022550C4 - 2 ; case 1
+ .short _022550D2 - _022550C4 - 2 ; case 2
+ .short _022550CC - _022550C4 - 2 ; case 3
+_022550CC:
+ ldr r0, _02255104 ; =0x02255378
+ str r0, [r4, #0x6c]
+ b _022550FA
+_022550D2:
+ ldr r0, _02255108 ; =0x02255318
+ mov r1, #1
+ str r0, [r4, #0x6c]
+ ldr r0, [r4, #0x28]
+ bl MOD20_02253F28
+ b _022550FA
+_022550E0:
+ ldr r0, _0225510C ; =0x0225534C
+ mov r1, #2
+ str r0, [r4, #0x6c]
+ ldr r0, [r4, #0x28]
+ bl MOD20_02253F28
+ b _022550FA
+_022550EE:
+ ldr r0, _02255110 ; =0x02255468
+ mov r1, #3
+ str r0, [r4, #0x6c]
+ ldr r0, [r4, #0x28]
+ bl MOD20_02253F28
+_022550FA:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD39_02255114
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02255104: .word 0x02255378
+_02255108: .word 0x02255318
+_0225510C: .word 0x0225534C
+_02255110: .word 0x02255468
+ thumb_func_end MOD39_0225509C
+
+ thumb_func_start MOD39_02255114
+MOD39_02255114: ; 0x02255114
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ add r5, r4, #0
+ add r6, r4, #0
+ mov r7, #0x16
+ add r5, #0x84
+ add r6, #0x78
+ lsl r7, r7, #0xe
+_02255124:
+ ldr r0, [r4, #0x70]
+ cmp r0, #0
+ beq _02255138
+ cmp r0, #1
+ bne _02255130
+ b _02255280
+_02255130:
+ cmp r0, #2
+ bne _02255136
+ b _022552DC
+_02255136:
+ b _022552FA
+_02255138:
+ beq _0225513C
+ b _022552FA
+_0225513C:
+ add r6, r4, #0
+ add r5, r4, #0
+ add r6, #0x7c
+ mov r7, #1
+ add r5, #0x74
+_02255146:
+ ldr r0, [r5]
+ ldr r1, [r4, #0x74]
+ add r0, r0, #1
+ str r0, [r5]
+ ldr r0, [r4, #0x6c]
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ add r0, r0, #7
+ cmp r0, #6
+ bls _0225515C
+ b _02255276
+_0225515C:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02255168: ; jump table
+ .short _02255252 - _02255168 - 2 ; case 0
+ .short _02255240 - _02255168 - 2 ; case 1
+ .short _0225522C - _02255168 - 2 ; case 2
+ .short _02255212 - _02255168 - 2 ; case 3
+ .short _022551C2 - _02255168 - 2 ; case 4
+ .short _0225517A - _02255168 - 2 ; case 5
+ .short _02255176 - _02255168 - 2 ; case 6
+_02255176:
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225517A:
+ ldr r0, [r5]
+ ldr r1, [r4, #0x74]
+ add r0, r0, #1
+ str r0, [r5]
+ ldr r0, [r4, #0x6c]
+ lsl r1, r1, #2
+ ldr r1, [r0, r1]
+ add r0, r4, #0
+ add r0, #0x84
+ str r1, [r0]
+ ldr r0, [r5]
+ ldr r1, [r4, #0x74]
+ add r0, r0, #1
+ str r0, [r5]
+ ldr r0, [r4, #0x6c]
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ str r0, [r4, #0x7c]
+ ldr r0, [r6]
+ lsl r0, r0, #0xc
+ str r0, [r6]
+ ldr r1, [r4, #0x78]
+ ldr r0, [r4, #0x7c]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0x80
+ str r1, [r0]
+ add r1, r4, #0
+ add r1, #0x84
+ ldr r0, [r6]
+ ldr r1, [r1]
+ blx _u32_div_f
+ str r0, [r6]
+ str r7, [r4, #0x70]
+ b _02255276
+_022551C2:
+ ldr r0, [r5]
+ ldr r1, [r4, #0x74]
+ add r0, r0, #1
+ str r0, [r5]
+ ldr r0, [r4, #0x6c]
+ lsl r1, r1, #2
+ ldr r1, [r0, r1]
+ add r0, r4, #0
+ add r0, #0x84
+ str r1, [r0]
+ ldr r0, [r5]
+ ldr r1, [r4, #0x74]
+ add r0, r0, #1
+ str r0, [r5]
+ ldr r0, [r4, #0x6c]
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ mov r1, #0
+ str r0, [r4, #0x7c]
+ ldr r0, [r6]
+ mvn r1, r1
+ lsl r0, r0, #0xc
+ mul r1, r0
+ str r1, [r6]
+ ldr r1, [r4, #0x78]
+ ldr r0, [r4, #0x7c]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0x80
+ str r1, [r0]
+ add r1, r4, #0
+ add r1, #0x84
+ ldr r0, [r6]
+ ldr r1, [r1]
+ blx _u32_div_f
+ str r0, [r6]
+ mov r0, #1
+ str r0, [r4, #0x70]
+ b _02255276
+_02255212:
+ ldr r0, [r5]
+ ldr r1, [r4, #0x74]
+ add r0, r0, #1
+ str r0, [r5]
+ ldr r0, [r4, #0x6c]
+ lsl r1, r1, #2
+ ldr r1, [r0, r1]
+ add r0, r4, #0
+ add r0, #0x84
+ str r1, [r0]
+ mov r0, #2
+ str r0, [r4, #0x70]
+ b _02255276
+_0225522C:
+ ldr r0, [r5]
+ ldr r1, [r4, #0x74]
+ add r0, r0, #1
+ str r0, [r5]
+ ldr r0, [r4, #0x6c]
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ bl MOD20_02252B28
+ b _02255276
+_02255240:
+ ldr r0, [r4, #0x2c]
+ mov r1, #6
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x30]
+ mov r1, #5
+ bl MOD20_02253F28
+ b _02255276
+_02255252:
+ ldr r1, [r5]
+ ldr r0, [r4, #0x74]
+ add r1, r1, #1
+ str r1, [r5]
+ ldr r2, [r4, #0x6c]
+ lsl r0, r0, #2
+ ldr r0, [r2, r0]
+ ldr r2, [r4, #0x74]
+ add r1, r1, #1
+ str r1, [r5]
+ lsl r0, r0, #2
+ add r0, r4, r0
+ ldr r1, [r4, #0x6c]
+ lsl r2, r2, #2
+ ldr r0, [r0, #0x24]
+ ldr r1, [r1, r2]
+ bl MOD20_02253F28
+_02255276:
+ ldr r0, [r4, #0x70]
+ cmp r0, #0
+ bne _0225527E
+ b _02255146
+_0225527E:
+ b _022552FA
+_02255280:
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _022552CC
+ ldr r0, [r5]
+ sub r0, r0, #1
+ str r0, [r5]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _022552A4
+ ldr r1, [r6]
+ ldr r0, [r4, #0x7c]
+ add r0, r1, r0
+ str r0, [r6]
+ b _022552AC
+_022552A4:
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ str r0, [r4, #0x78]
+_022552AC:
+ mov r1, #3
+ ldr r2, [r4, #0x78]
+ lsl r1, r1, #0x10
+ add r1, r2, r1
+ ldr r0, [r4, #0x2c]
+ add r2, r7, #0
+ bl MOD20_02253F64
+ mov r1, #0xb
+ ldr r2, [r4, #0x78]
+ lsl r1, r1, #0x10
+ sub r1, r1, r2
+ ldr r0, [r4, #0x30]
+ add r2, r7, #0
+ bl MOD20_02253F64
+_022552CC:
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _022552FA
+ mov r0, #0
+ str r0, [r4, #0x70]
+ b _02255124
+_022552DC:
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _022552F4
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ add r4, #0x84
+ sub r0, r0, #1
+ str r0, [r4]
+ b _022552FA
+_022552F4:
+ mov r0, #0
+ str r0, [r4, #0x70]
+ b _02255124
+_022552FA:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD39_02255114
+
+ .section .rodata
+ ; 0x02255300
+ .incbin "baserom.nds", 0x291cc0, 0x1E4
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_39.SINIT_START
+ .global SDK_OVERLAY.MODULE_39.SINIT_END
+SDK_OVERLAY.MODULE_39.SINIT_START:
+ .word MOD39_02254840
+ .word 0
+SDK_OVERLAY.MODULE_39.SINIT_END: