diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-05-12 10:15:49 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-05-12 10:15:49 -0400 |
commit | 06d9754567cb6e7028e4dbc35da903edf9f83b9a (patch) | |
tree | 7fcb8cef7364b55d93b20d3302553664afb0fcec | |
parent | bb1e6c1518570ef67c85343405ad27485b5a9692 (diff) |
Disassemble module 51
-rw-r--r-- | arm9/arm9.lcf | 28 | ||||
-rw-r--r-- | arm9/global.inc | 4 | ||||
-rw-r--r-- | arm9/modules/51/asm/module_51.s | 1911 |
3 files changed, 1939 insertions, 4 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 2755047d..1cf77560 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -2014,10 +2014,21 @@ SECTIONS { SDK_OVERLAY.MODULE_50.BSS_SIZE = SDK_OVERLAY.MODULE_50.BSS_END - SDK_OVERLAY.MODULE_50.BSS_START; } >> MODULE_50 - .MODULE.51: { + .MODULE.51 : + { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_51.START = .; - FILE_298A00.o (.text) /* 0x294A00 */ + module_51.o (.text) + module_51.o (.rodata) + module_51.o (.init) + SDK_OVERLAY.MODULE_51.SINIT_START = .; + module_51.o (.ctor) + module_51.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_51.SINIT_END = .; + . = ALIGN(32); + module_51.o (.sdata) + module_51.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_51.END = .; SDK_OVERLAY.MODULE_51.SIZE = SDK_OVERLAY.MODULE_51.END - SDK_OVERLAY.MODULE_51.START; @@ -2027,7 +2038,8 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_51.BSS_START = .; - FILE_298A00.o (.bss) + module_51.o (.sbss) + module_51.o (.bss) . = ALIGN(32); SDK_OVERLAY.MODULE_51.BSS_END = .; SDK_OVERLAY.MODULE_51.BSS_SIZE = SDK_OVERLAY.MODULE_51.BSS_END - SDK_OVERLAY.MODULE_51.BSS_START; @@ -3280,7 +3292,15 @@ SECTIONS { WRITEW SDK_OVERLAY_MODULE_50_ID; WRITEW 0; - OVERLAY_TABLE(MODULE_51, 51) + WRITEW SDK_OVERLAY_MODULE_51_ID; + WRITEW SDK_OVERLAY.MODULE_51.START; + WRITEW SDK_OVERLAY.MODULE_51.SIZE; + WRITEW SDK_OVERLAY.MODULE_51.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_51.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_51.SINIT_END; + WRITEW SDK_OVERLAY_MODULE_51_ID; + WRITEW 0; + OVERLAY_TABLE(MODULE_52, 52) OVERLAY_TABLE(MODULE_53, 53) OVERLAY_TABLE(MODULE_54, 54) diff --git a/arm9/global.inc b/arm9/global.inc index 6f76948a..909ea0f7 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -5567,6 +5567,10 @@ .extern FUN_02083298
.extern FUN_02083A34
.extern FUN_02083A7C
+.extern FUN_020254F0
+.extern FUN_020254F8
+.extern FUN_0202EF70
+.extern FUN_02052CF0
.extern SDK_OVERLAY_MODULE_00_ID
.extern SDK_OVERLAY_MODULE_01_ID
.extern SDK_OVERLAY_MODULE_02_ID
diff --git a/arm9/modules/51/asm/module_51.s b/arm9/modules/51/asm/module_51.s new file mode 100644 index 00000000..94a4dd93 --- /dev/null +++ b/arm9/modules/51/asm/module_51.s @@ -0,0 +1,1911 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD51_02254840 +MOD51_02254840: ; 0x02254840 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4, #0xc] + ldr r0, [r4, #0x14] + ldr r1, [r1, #0x7c] + cmp r1, #0 + beq _022548EE + ldr r1, [r4] + cmp r1, #3 + bhi _022548EE + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02254860: ; jump table + .short _02254868 - _02254860 - 2 ; case 0 + .short _0225487A - _02254860 - 2 ; case 1 + .short _022548D0 - _02254860 - 2 ; case 2 + .short _022548EE - _02254860 - 2 ; case 3 +_02254868: + bl MOD51_02254B54 + add r0, r4, #0 + bl MOD51_022548F0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_0225487A: + add r0, r4, #0 + bl MOD51_02254C80 + add r0, r4, #0 + bl MOD51_02254D50 + mov r0, #1 + mov r1, #4 + bl FUN_02002C84 + mov r1, #0x72 + lsl r1, r1, #2 + ldr r0, [r4, #0x14] + add r1, r4, r1 + bl MOD51_02254944 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E74C + mov r0, #2 + mov r1, #1 + bl FUN_0201E74C + mov r0, #4 + mov r1, #1 + bl FUN_0201E74C + mov r0, #8 + mov r1, #1 + bl FUN_0201E74C + add r0, r4, #0 + bl MOD51_0225571C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_022548D0: + add r0, r4, #0 + bl MOD51_02255690 + add r0, r4, #0 + bl MOD51_02255030 + add r0, r4, #0 + bl MOD51_022552FC + add r0, r4, #0 + bl MOD51_02254F30 + ldr r0, [r4, #0x28] + bl FUN_0201FDEC +_022548EE: + pop {r4, pc} + thumb_func_end MOD51_02254840 + + thumb_func_start MOD51_022548F0 +MOD51_022548F0: ; 0x022548F0 + push {r3, r4, lr} + sub sp, #4 + mov r1, #0xa1 + lsl r1, r1, #2 + add r4, r0, #0 + mov r2, #0 + add r0, r1, #0 + str r2, [r4, r1] + sub r0, #0x10 + strh r2, [r4, r0] + add r0, r1, #0 + sub r0, #0xe + strh r2, [r4, r0] + add r0, r1, #0 + sub r0, #0xc + strh r2, [r4, r0] + sub r1, #0xa + mov r0, #4 + strh r2, [r4, r1] + bl FUN_0200AA80 + mov r2, #9 + str r0, [r4, #0x18] + mov r0, #0 + mov r1, #0x1a + lsl r2, r2, #6 + mov r3, #4 + bl FUN_0200A86C + str r0, [r4, #0x1c] + mov r0, #4 + add r3, r4, #0 + str r0, [sp] + mov r0, #0x4a + mov r1, #3 + mov r2, #1 + add r3, #0x24 + bl FUN_02006BDC + str r0, [r4, #0x20] + add sp, #4 + pop {r3, r4, pc} + thumb_func_end MOD51_022548F0 + + thumb_func_start MOD51_02254944 +MOD51_02254944: ; 0x02254944 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r7, r0, #0 + mov r0, #0xa0 + str r0, [sp, #0x20] + mov r0, #0xd0 + str r0, [sp, #0x1c] + mov r0, #3 + str r0, [sp, #0x18] + ldr r0, _02254A3C ; =0x00000265 + add r5, r1, #0 + mov r4, #0 + mov r6, #1 + str r0, [sp, #0x14] +_02254960: + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0xc + str r0, [sp, #0xc] + ldr r0, [sp, #0x20] + add r2, r4, #4 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsl r2, r2, #0x18 + str r0, [sp, #0x10] + add r0, r7, #0 + add r1, r5, #0 + lsr r2, r2, #0x18 + mov r3, #1 + bl FUN_02019064 + add r0, r5, #0 + mov r1, #0 + bl FUN_02019620 + add r0, r5, #0 + bl FUN_020191D0 + ldr r0, [sp, #0x18] + add r2, r4, #4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r0, #5 + str r0, [sp, #8] + mov r0, #0xc + str r0, [sp, #0xc] + ldr r0, [sp, #0x1c] + add r1, r5, #0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsl r2, r2, #0x18 + str r0, [sp, #0x10] + add r0, r7, #0 + add r1, #0x10 + lsr r2, r2, #0x18 + mov r3, #2 + bl FUN_02019064 + add r0, r5, #0 + add r0, #0x10 + mov r1, #0 + bl FUN_02019620 + add r0, r5, #0 + add r0, #0x10 + bl FUN_020191D0 + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0xf + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0xc + str r0, [sp, #0xc] + ldr r0, [sp, #0x14] + add r2, r4, #4 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r1, r5, #0 + lsl r2, r2, #0x18 + str r0, [sp, #0x10] + add r0, r7, #0 + add r1, #0x20 + lsr r2, r2, #0x18 + mov r3, #0xc + bl FUN_02019064 + add r0, r5, #0 + add r0, #0x20 + mov r1, #0 + bl FUN_02019620 + add r0, r5, #0 + add r0, #0x20 + bl FUN_020191D0 + ldr r0, [sp, #0x20] + add r4, r4, #1 + add r0, #0x10 + str r0, [sp, #0x20] + ldr r0, [sp, #0x1c] + add r6, #8 + add r0, #0x87 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x18] + add r5, #0x38 + add r0, #8 + str r0, [sp, #0x18] + ldr r0, [sp, #0x14] + add r0, #0x1e + str r0, [sp, #0x14] + cmp r4, #3 + blt _02254960 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02254A3C: .word 0x00000265 + thumb_func_end MOD51_02254944 + + thumb_func_start MOD51_02254A40 +MOD51_02254A40: ; 0x02254A40 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_02254A46: + add r0, r5, #0 + add r0, #0x10 + bl FUN_02019178 + add r0, r5, #0 + bl FUN_02019178 + add r0, r5, #0 + add r0, #0x20 + bl FUN_02019178 + add r4, r4, #1 + add r5, #0x38 + cmp r4, #3 + blt _02254A46 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD51_02254A40 + + thumb_func_start MOD51_02254A68 +MOD51_02254A68: ; 0x02254A68 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r1, #0xa3 + mov r2, #4 + ldr r0, _02254AB0 ; =MOD51_02254840 + lsl r1, r1, #2 + add r3, r2, #0 + bl FUN_020061E8 + add r6, r0, #0 + bl FUN_0201B6C8 + add r4, r0, #0 + str r5, [r4, #0xc] + ldr r0, [r5, #8] + str r0, [r4, #0x14] + ldr r0, [r5, #0x7c] + str r0, [r4, #4] + ldr r0, [r5, #0x78] + str r0, [r4, #8] + ldr r0, [r5, #0xc] + bl FUN_020238F4 + str r0, [r4, #0x10] + mov r0, #0 + mov r1, #0xa2 + str r0, [r4] + lsl r1, r1, #2 + str r6, [r4, r1] + ldr r2, [r5, #0x7c] + ldr r0, _02254AB4 ; =0x000004DC + sub r1, #0x18 + ldr r0, [r2, r0] + str r0, [r4, r1] + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_02254AB0: .word MOD51_02254840 +_02254AB4: .word 0x000004DC + thumb_func_end MOD51_02254A68 + + thumb_func_start MOD51_02254AB8 +MOD51_02254AB8: ; 0x02254AB8 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, [r6] + cmp r0, #2 + bne _02254B2C + ldr r0, [r6, #0x14] + str r0, [sp] + mov r0, #3 + str r0, [r6] + mov r0, #1 + bl FUN_02002CC0 + mov r0, #0x59 + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_02009C0C + mov r0, #0x5a + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_02009E04 + mov r7, #0x55 + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #2 +_02254AEC: + ldr r0, [r5, r7] + bl FUN_02008E2C + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _02254AEC + ldr r0, [r6, #0x28] + bl FUN_0201FD58 + ldr r0, [r6, #0x1c] + bl FUN_0200A8B8 + ldr r0, [r6, #0x18] + bl FUN_0200AB18 + mov r0, #0x72 + lsl r0, r0, #2 + add r0, r6, r0 + bl MOD51_02254A40 + ldr r0, [sp] + bl MOD51_02254B30 + ldr r0, [r6, #0x20] + bl FUN_02016A18 + mov r0, #0xa2 + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_0200621C +_02254B2C: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD51_02254AB8 + + thumb_func_start MOD51_02254B30 +MOD51_02254B30: ; 0x02254B30 + push {r4, lr} + add r4, r0, #0 + mov r1, #4 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #5 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #6 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #7 + bl FUN_020178A0 + pop {r4, pc} + thumb_func_end MOD51_02254B30 + + thumb_func_start MOD51_02254B54 +MOD51_02254B54: ; 0x02254B54 + push {r3, r4, r5, lr} + sub sp, #0x80 + add r4, r0, #0 + bl MOD51_02254B30 + ldr r5, _02254C70 ; =0x022557A8 + add r3, sp, #0x64 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #4 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #4 + bl FUN_02018744 + mov r0, #1 + mov r1, #0 + bl FUN_0201E74C + ldr r5, _02254C74 ; =0x0225578C + add r3, sp, #0x48 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #5 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #5 + bl FUN_02018744 + mov r0, #2 + mov r1, #0 + bl FUN_0201E74C + ldr r5, _02254C78 ; =0x022557C4 + add r3, sp, #0x2c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #6 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #6 + bl FUN_02018744 + mov r0, #4 + mov r1, #0 + bl FUN_0201E74C + ldr r5, _02254C7C ; =0x02255754 + add r3, sp, #0x10 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #7 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #8 + mov r1, #0 + bl FUN_0201E74C + mov r0, #0x60 + mov r1, #0 + str r0, [sp] + mov r2, #4 + mov r0, #0x4a + add r3, r1, #0 + str r2, [sp, #4] + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + mov r0, #5 + lsl r0, r0, #0xa + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #4 + str r0, [sp, #0xc] + mov r0, #0x4a + mov r1, #2 + add r2, r4, #0 + mov r3, #7 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + mov r0, #6 + lsl r0, r0, #8 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r1, #4 + mov r0, #0x4a + add r2, r4, #0 + mov r3, #7 + str r1, [sp, #0xc] + bl FUN_020068C8 + mov r0, #4 + mov r1, #0 + bl FUN_02054590 + add sp, #0x80 + pop {r3, r4, r5, pc} + nop +_02254C70: .word 0x022557A8 +_02254C74: .word 0x0225578C +_02254C78: .word 0x022557C4 +_02254C7C: .word 0x02255754 + thumb_func_end MOD51_02254B54 + + thumb_func_start MOD51_02254C80 +MOD51_02254C80: ; 0x02254C80 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r0, #0 + add r1, r6, #0 + mov r0, #0xa + add r1, #0x2c + mov r2, #4 + bl FUN_02008C9C + mov r7, #0x55 + str r0, [r6, #0x28] + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #2 +_02254C9C: + mov r0, #1 + add r1, r4, #0 + mov r2, #4 + bl FUN_02008DEC + str r0, [r5, r7] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _02254C9C + ldr r0, _02254D4C ; =0x000003E7 + mov r1, #0x4a + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0x55 + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r2, #5 + mov r3, #1 + bl FUN_02008F34 + mov r1, #0x59 + lsl r1, r1, #2 + str r0, [r6, r1] + ldr r0, _02254D4C ; =0x000003E7 + mov r2, #1 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + str r2, [sp, #8] + mov r0, #4 + sub r1, #0xc + str r0, [sp, #0xc] + ldr r0, [r6, r1] + mov r1, #0x4a + mov r3, #0 + bl FUN_02008FEC + mov r1, #0x5a + lsl r1, r1, #2 + str r0, [r6, r1] + ldr r0, _02254D4C ; =0x000003E7 + sub r1, #0xc + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + ldr r0, [r6, r1] + mov r1, #0x4a + mov r2, #6 + mov r3, #1 + bl FUN_020090AC + mov r1, #0x5b + lsl r1, r1, #2 + str r0, [r6, r1] + ldr r0, _02254D4C ; =0x000003E7 + sub r1, #0xc + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + ldr r0, [r6, r1] + mov r1, #0x4a + mov r2, #7 + mov r3, #1 + bl FUN_020090AC + mov r1, #0x17 + lsl r1, r1, #4 + str r0, [r6, r1] + sub r1, #0xc + ldr r0, [r6, r1] + bl FUN_02009B04 + mov r0, #0x5a + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_02009D68 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02254D4C: .word 0x000003E7 + thumb_func_end MOD51_02254C80 + + thumb_func_start MOD51_02254D50 +MOD51_02254D50: ; 0x02254D50 + push {r4, r5, r6, r7, lr} + sub sp, #0x5c + ldr r1, _02254E28 ; =0x000003E7 + add r5, r0, #0 + mov r0, #0 + str r1, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + mov r3, #0x55 + str r0, [sp, #0x10] + lsl r3, r3, #2 + ldr r2, [r5, r3] + str r2, [sp, #0x14] + add r2, r3, #4 + ldr r2, [r5, r2] + str r2, [sp, #0x18] + add r2, r3, #0 + add r2, #8 + ldr r2, [r5, r2] + str r2, [sp, #0x1c] + add r2, r3, #0 + add r2, #0xc + ldr r2, [r5, r2] + add r3, #0x20 + str r2, [sp, #0x20] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + add r0, r5, r3 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02008AA4 + ldr r0, [r5, #0x28] + mov r4, #0 + str r0, [sp, #0x2c] + mov r0, #0x5d + lsl r0, r0, #2 + add r0, r5, r0 + str r0, [sp, #0x30] + mov r0, #1 + lsl r0, r0, #0xc + mov r7, #0x3f + str r4, [sp, #0x3c] + str r0, [sp, #0x40] + str r0, [sp, #0x44] + str r0, [sp, #0x48] + add r0, sp, #0x2c + strh r4, [r0, #0x20] + mov r0, #2 + str r0, [sp, #0x54] + mov r0, #4 + ldr r6, _02254E2C ; =0x02255734 + str r4, [sp, #0x50] + str r0, [sp, #0x58] + lsl r7, r7, #0x18 +_02254DC4: + mov r0, #0x3a + lsl r0, r0, #0xe + str r0, [sp, #0x34] + ldr r0, [r6] + cmp r0, #0 + ble _02254DE0 + lsl r0, r0, #0xc + bl _fflt + add r1, r0, #0 + add r0, r7, #0 + bl _fadd + b _02254DEC +_02254DE0: + lsl r0, r0, #0xc + bl _fflt + add r1, r7, #0 + bl _fsub +_02254DEC: + bl _ffix + mov r1, #3 + lsl r1, r1, #0x12 + add r0, r0, r1 + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FE94 + mov r1, #0x66 + lsl r1, r1, #2 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200BC + mov r0, #0x66 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r4, #0 + bl FUN_02020130 + add r4, r4, #1 + add r6, r6, #4 + add r5, r5, #4 + cmp r4, #3 + blt _02254DC4 + add sp, #0x5c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02254E28: .word 0x000003E7 +_02254E2C: .word 0x02255734 + thumb_func_end MOD51_02254D50 + + thumb_func_start MOD51_02254E30 +MOD51_02254E30: ; 0x02254E30 + add r1, r1, #1 + cmp r1, #0x1e + bne _02254E38 + mov r1, #0 +_02254E38: + add r0, r1, #0 + bx lr + thumb_func_end MOD51_02254E30 + + thumb_func_start MOD51_02254E3C +MOD51_02254E3C: ; 0x02254E3C + add r0, r0, r1 + cmp r0, #0x1e + blt _02254E44 + sub r0, #0x1e +_02254E44: + bx lr + .align 2, 0 + thumb_func_end MOD51_02254E3C + + thumb_func_start MOD51_02254E48 +MOD51_02254E48: ; 0x02254E48 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r3, r1, #0 + add r5, r0, #0 + add r4, r3, #0 + mov r0, #0x38 + mul r4, r0 + mov r0, #0x7e + add r6, r2, #0 + lsl r0, r0, #2 + add r1, r5, r0 + ldr r0, [r6, #0x10] + mov r2, #8 + str r0, [r1, r4] + mov r0, #0x20 + str r0, [sp] + str r2, [sp, #4] + ldr r2, [r5, #0x24] + mov r7, #0 + add r2, #0xc + str r2, [sp, #8] + str r7, [sp, #0xc] + ldr r2, [r1, r4] + mov r1, #0x18 + mul r1, r2 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + str r1, [sp, #0x10] + str r0, [sp, #0x14] + mov r0, #0x30 + str r0, [sp, #0x18] + lsl r3, r3, #0x1b + ldr r0, [r5, #0x14] + mov r1, #7 + add r2, r7, #0 + lsr r3, r3, #0x18 + bl FUN_02018170 + mov r0, #0x72 + lsl r0, r0, #2 + add r7, r5, r0 + add r0, r7, r4 + mov r1, #0 + bl FUN_02019620 + mov r0, #0x76 + lsl r0, r0, #2 + add r0, r5, r0 + str r0, [sp, #0x1c] + add r0, r0, r4 + mov r1, #0 + bl FUN_02019620 + mov r0, #0x7a + lsl r0, r0, #2 + add r5, r5, r0 + add r0, r5, r4 + mov r1, #0 + bl FUN_02019620 + mov r0, #2 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02254F2C ; =0x00010200 + mov r3, #0 + str r0, [sp, #8] + str r3, [sp, #0xc] + ldr r2, [r6] + add r0, r7, r4 + mov r1, #1 + bl FUN_0201BDE0 + mov r0, #6 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02254F2C ; =0x00010200 + mov r3, #0 + str r0, [sp, #8] + str r3, [sp, #0xc] + ldr r0, [sp, #0x1c] + ldr r2, [r6, #4] + add r0, r0, r4 + mov r1, #1 + bl FUN_0201BDE0 + add r0, r7, r4 + bl FUN_02019220 + ldr r0, [sp, #0x1c] + add r0, r0, r4 + bl FUN_02019220 + ldr r2, [r6, #8] + cmp r2, #0 + beq _02254F22 + mov r0, #2 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02254F2C ; =0x00010200 + mov r3, #0 + str r0, [sp, #8] + add r0, r5, r4 + mov r1, #1 + str r3, [sp, #0xc] + bl FUN_0201BDE0 +_02254F22: + add r0, r5, r4 + bl FUN_02019220 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02254F2C: .word 0x00010200 + thumb_func_end MOD51_02254E48 + + thumb_func_start MOD51_02254F30 +MOD51_02254F30: ; 0x02254F30 + push {r3, r4, r5, r6, r7, lr} + mov r1, #0x27 + add r5, r0, #0 + lsl r1, r1, #4 + add r0, r1, #0 + ldr r2, [r5, r1] + add r1, #8 + add r0, #0xdc + ldrh r1, [r5, r1] + ldr r0, [r2, r0] + bl MOD51_02254E3C + add r6, r0, #0 + mov r0, #0x27 + lsl r0, r0, #4 + ldr r1, [r5, r0] + add r0, #0xd8 + ldr r7, [r1, r0] + cmp r7, #3 + ble _02254F5A + mov r7, #3 +_02254F5A: + mov r0, #0x9e + lsl r0, r0, #2 + ldrh r1, [r5, r0] + add r0, r0, #4 + ldr r0, [r5, r0] + cmp r1, r0 + beq _02254F78 + add r0, r5, #0 + bl MOD51_0225571C + mov r0, #0x9e + lsl r0, r0, #2 + ldrh r1, [r5, r0] + add r0, r0, #4 + str r1, [r5, r0] +_02254F78: + mov r0, #0xa1 + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, #1 + bne _02254FE2 + mov r4, #0 + cmp r7, #0 + ble _02254FB0 +_02254F88: + mov r2, #0x27 + lsl r2, r2, #4 + mov r3, #0x1c + ldr r2, [r5, r2] + mul r3, r6 + add r0, r5, #0 + add r1, r4, #0 + add r2, r2, r3 + bl MOD51_02254E48 + mov r0, #0x27 + lsl r0, r0, #4 + ldr r0, [r5, r0] + add r1, r6, #0 + bl MOD51_02254E30 + add r4, r4, #1 + add r6, r0, #0 + cmp r4, r7 + blt _02254F88 +_02254FB0: + ldr r0, [r5, #0x14] + mov r1, #7 + bl FUN_0201886C + mov r1, #6 + lsl r1, r1, #8 + bl DC_FlushRange + ldr r0, [r5, #0x14] + mov r1, #7 + bl FUN_0201886C + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r3, #6 + ldr r0, [r5, #0x14] + mov r1, #7 + lsl r3, r3, #8 + bl FUN_02017CE8 + mov r0, #0xa1 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r5, r0] +_02254FE2: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD51_02254F30 + + thumb_func_start MOD51_02254FE4 +MOD51_02254FE4: ; 0x02254FE4 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #0x3a + lsl r0, r0, #0xe + str r0, [sp] + cmp r1, #0 + ble _02255006 + lsl r0, r1, #0xc + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _02255014 +_02255006: + lsl r0, r1, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_02255014: + bl _ffix + mov r1, #3 + lsl r1, r1, #0x12 + add r0, r0, r1 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r0, r4, #0 + add r1, sp, #0 + bl FUN_02020044 + add sp, #0xc + pop {r3, r4, pc} + thumb_func_end MOD51_02254FE4 + + thumb_func_start MOD51_02255030 +MOD51_02255030: ; 0x02255030 + push {r4, lr} + mov r1, #0x27 + add r4, r0, #0 + lsl r1, r1, #4 + add r0, r1, #0 + ldr r2, [r4, r1] + add r0, #0xd8 + ldr r2, [r2, r0] + add r0, r1, #4 + strh r2, [r4, r0] + ldrh r0, [r4, r0] + cmp r0, #3 + bls _02255060 + add r0, r1, #6 + ldrh r0, [r4, r0] + cmp r0, #3 + bhi _02255060 + add r0, r1, #0 + mov r2, #1 + add r0, #0xa + strh r2, [r4, r0] + mov r0, #0 + add r1, #8 + strh r0, [r4, r1] +_02255060: + mov r1, #0x1a + lsl r1, r1, #4 + ldr r0, [r4, r1] + add r1, #0xda + ldrh r1, [r4, r1] + bl FUN_020200A0 + ldr r0, _022550AC ; =0x0000027A + ldrh r0, [r4, r0] + cmp r0, #0 + beq _022550A0 + bl FUN_02020A98 + cmp r0, #0 + bne _022550A0 + mov r1, #0x9e + lsl r1, r1, #2 + ldrh r2, [r4, r1] + sub r1, r1, #4 + ldrh r1, [r4, r1] + mov r0, #0x60 + mul r0, r2 + sub r1, r1, #3 + bl _s32_div_f + add r1, r0, #0 + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r4, r0] + add r1, #0x30 + bl MOD51_02254FE4 +_022550A0: + mov r0, #0x9d + lsl r0, r0, #2 + ldrh r1, [r4, r0] + add r0, r0, #2 + strh r1, [r4, r0] + pop {r4, pc} + .align 2, 0 +_022550AC: .word 0x0000027A + thumb_func_end MOD51_02255030 + + thumb_func_start MOD51_022550B0 +MOD51_022550B0: ; 0x022550B0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, _022551D8 ; =0x02255770 + bl FUN_02020988 + add r7, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r7, r0 + bne _022550C6 + b _022551D2 +_022550C6: + cmp r7, #0 + beq _022550D4 + cmp r7, #1 + beq _02255100 + cmp r7, #5 + beq _022551CA + b _02255132 +_022550D4: + lsl r0, r7, #2 + add r1, r5, r0 + mov r0, #0x66 + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, r7, #4 + bl FUN_02020130 + mov r0, #0x9e + lsl r0, r0, #2 + ldrh r0, [r5, r0] + cmp r0, #0 + beq _022551CA + ldr r0, _022551DC ; =0x000005E5 + bl FUN_020054C8 + mov r0, #0x9e + lsl r0, r0, #2 + ldrh r1, [r5, r0] + sub r1, r1, #1 + strh r1, [r5, r0] + b _022551CA +_02255100: + lsl r0, r7, #2 + add r1, r5, r0 + mov r0, #0x66 + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, r7, #4 + bl FUN_02020130 + mov r0, #0x9e + lsl r0, r0, #2 + ldrh r1, [r5, r0] + sub r0, r0, #4 + ldrh r0, [r5, r0] + sub r0, r0, #3 + cmp r1, r0 + bge _022551CA + ldr r0, _022551DC ; =0x000005E5 + bl FUN_020054C8 + mov r0, #0x9e + lsl r0, r0, #2 + ldrh r1, [r5, r0] + add r1, r1, #1 + strh r1, [r5, r0] + b _022551CA +_02255132: + mov r2, #0x27 + lsl r2, r2, #4 + add r1, r2, #0 + ldr r0, [r5, r2] + add r1, #0xd8 + ldr r3, [r0, r1] + sub r1, r7, #1 + cmp r3, r1 + blt _022551CA + add r1, r2, #0 + add r1, #0xdc + add r2, #8 + ldr r0, [r0, r1] + ldrh r1, [r5, r2] + add r1, r1, r7 + sub r1, r1, #2 + bl MOD51_02254E3C + mov r1, #0x1c + mov r4, #0 + mul r1, r0 + add r6, r4, #0 + str r1, [sp] +_02255160: + add r0, r4, #0 + bl FUN_0202EF18 + cmp r0, #0 + beq _0225519C + ldr r1, [r5, #4] + add r0, #0x50 + add r1, r1, r6 + ldrb r1, [r1, #0xd] + cmp r1, #2 + bne _0225519C + mov r1, #0x27 + lsl r1, r1, #4 + ldr r2, [r5, r1] + ldr r1, [sp] + ldr r0, [r0] + add r1, r1, r2 + ldr r1, [r1, #0xc] + cmp r0, r1 + bne _0225519C + ldr r0, _022551DC ; =0x000005E5 + bl FUN_020054C8 + mov r1, #0x18 + ldr r2, [r5, #4] + mul r1, r4 + mov r0, #1 + add r1, r2, r1 + strb r0, [r1, #0xf] + b _022551A4 +_0225519C: + add r4, r4, #1 + add r6, #0x18 + cmp r4, #0xa + blt _02255160 +_022551A4: + bl FUN_0202EF70 + bl FUN_020239BC + mov r1, #0x27 + lsl r1, r1, #4 + ldr r2, [r5, r1] + ldr r1, [sp] + add r1, r2, r1 + ldr r1, [r1, #0xc] + cmp r1, r0 + bne _022551CA + ldr r0, _022551DC ; =0x000005E5 + bl FUN_020054C8 + ldr r1, [r5, #4] + ldr r0, _022551E0 ; =0x000004BF + mov r2, #1 + strb r2, [r1, r0] +_022551CA: + mov r0, #0x71 + sub r1, r7, #2 + lsl r0, r0, #2 + str r1, [r5, r0] +_022551D2: + add r0, r7, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_022551D8: .word 0x02255770 +_022551DC: .word 0x000005E5 +_022551E0: .word 0x000004BF + thumb_func_end MOD51_022550B0 + + thumb_func_start MOD51_022551E4 +MOD51_022551E4: ; 0x022551E4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r0, #0 + ldr r0, _02255290 ; =0x02255740 + bl FUN_02020968 + mov r1, #0 + mvn r1, r1 + str r0, [sp] + cmp r0, r1 + beq _0225528A + cmp r0, #0 + bne _02255256 + add r0, sp, #8 + add r1, sp, #4 + bl FUN_02020AB0 + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r7, r0] + ldr r1, [sp, #4] + bl MOD51_02254FE4 + mov r0, #0x9d + lsl r0, r0, #2 + ldrh r0, [r7, r0] + cmp r0, #3 + bls _0225528A + sub r4, r0, #2 + mov r0, #0x60 + add r1, r4, #0 + bl _s32_div_f + mov r1, #0 + cmp r4, #0 + ble _0225528A + ldr r5, [sp, #4] + add r2, r1, #0 + add r3, r1, #0 +_02255232: + add r6, r2, #0 + add r6, #0x30 + cmp r5, r6 + blo _0225524A + add r6, r3, r0 + add r6, #0x30 + cmp r5, r6 + bhs _0225524A + mov r0, #0x9e + lsl r0, r0, #2 + strh r1, [r7, r0] + b _0225528A +_0225524A: + add r1, r1, #1 + add r2, r2, r0 + add r3, r3, r0 + cmp r1, r4 + blt _02255232 + b _0225528A +_02255256: + mov r1, #0x27 + lsl r1, r1, #4 + add r0, r1, #0 + ldr r2, [r7, r1] + add r0, #0xd8 + ldr r2, [r2, r0] + ldr r0, [sp] + cmp r2, r0 + blt _0225528A + add r0, r1, #0 + sub r0, #0xac + ldr r2, [r7, r0] + ldr r0, [sp] + sub r3, r0, #1 + cmp r2, r3 + bne _0225528A + sub r1, #0x74 + add r2, r7, r1 + mov r0, #0x38 + add r1, r3, #0 + mul r1, r0 + ldr r0, [r2, r1] + cmp r0, #5 + bge _0225528A + add r0, r0, #1 + str r0, [r2, r1] +_0225528A: + ldr r0, [sp] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02255290: .word 0x02255740 + thumb_func_end MOD51_022551E4 + + thumb_func_start MOD51_02255294 +MOD51_02255294: ; 0x02255294 + push {r4, lr} + add r4, r0, #0 + ldr r0, _022552F4 ; =0x021C48B8 + mov r1, #2 + ldr r2, [r0, #0x48] + lsl r1, r1, #8 + add r0, r2, #0 + tst r0, r1 + beq _022552C6 + sub r1, #0x68 + ldr r0, [r4, r1] + mov r1, #4 + bl FUN_02020130 + mov r0, #0x9e + lsl r0, r0, #2 + ldrh r1, [r4, r0] + cmp r1, #0 + beq _022552F0 + sub r1, r1, #1 + strh r1, [r4, r0] + ldr r0, _022552F8 ; =0x000005E5 + bl FUN_020054C8 + pop {r4, pc} +_022552C6: + lsr r0, r1, #1 + tst r0, r2 + beq _022552F0 + sub r1, #0x64 + ldr r0, [r4, r1] + mov r1, #5 + bl FUN_02020130 + mov r0, #0x9e + lsl r0, r0, #2 + sub r1, r0, #4 + ldrh r1, [r4, r1] + ldrh r2, [r4, r0] + sub r1, r1, #3 + cmp r2, r1 + bge _022552F0 + add r1, r2, #1 + strh r1, [r4, r0] + ldr r0, _022552F8 ; =0x000005E5 + bl FUN_020054C8 +_022552F0: + pop {r4, pc} + nop +_022552F4: .word 0x021C48B8 +_022552F8: .word 0x000005E5 + thumb_func_end MOD51_02255294 + + thumb_func_start MOD51_022552FC +MOD51_022552FC: ; 0x022552FC + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5, #0xc] + mov r4, #0 + mvn r4, r4 + bl FUN_0204646C + cmp r0, #0 + bne _02255332 + add r0, r5, #0 + bl MOD51_022550B0 + add r6, r0, #0 + add r0, r5, #0 + bl MOD51_022551E4 + add r4, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r6, r0 + bne _02255332 + cmp r4, r0 + bne _02255332 + add r0, r5, #0 + bl MOD51_02255294 +_02255332: + mov r2, #0x27 + lsl r2, r2, #4 + add r0, r2, #0 + ldr r1, [r5, r2] + add r0, #0xd8 + ldr r0, [r1, r0] + sub r3, r4, #1 + str r0, [sp] + add r0, r2, #0 + add r0, #0x10 + add r0, r5, r0 + str r0, [sp, #4] + sub r2, #0xa8 + ldr r0, [r5, #0x14] + ldr r1, [r5, #0x24] + add r2, r5, r2 + bl MOD51_0225535C + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD51_022552FC + + thumb_func_start MOD51_0225535C +MOD51_0225535C: ; 0x0225535C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x40] + str r1, [sp, #0x20] + add r5, r2, #0 + mov r1, #0 + str r0, [sp, #0x40] + ldr r4, [sp, #0x44] + cmp r0, #3 + ble _02255376 + mov r0, #3 + str r0, [sp, #0x40] +_02255376: + ldr r2, [sp, #0x40] + mov r0, #0 + cmp r2, #0 + ble _0225539C + add r2, r5, #0 +_02255380: + cmp r3, r0 + beq _0225538E + ldr r6, [r2, #0x34] + cmp r6, #0 + beq _0225538E + sub r6, r6, #1 + str r6, [r2, #0x34] +_0225538E: + ldr r6, [r2, #0x34] + add r0, r0, #1 + add r1, r1, r6 + ldr r6, [sp, #0x40] + add r2, #0x38 + cmp r0, r6 + blt _02255380 +_0225539C: + cmp r1, #0 + bne _022553AC + ldr r0, [r4] + cmp r0, #0 + bne _022553AC + add sp, #0x28 + str r1, [r4] + pop {r3, r4, r5, r6, r7, pc} +_022553AC: + ldr r0, [sp, #0x40] + str r1, [r4] + mov r4, #0 + cmp r0, #0 + ble _02255422 + ldr r0, [sp, #0x20] + add r7, r4, #0 + add r0, #0xc + str r0, [sp, #0x20] +_022553BE: + ldr r1, [r5, #0x34] + lsl r3, r7, #0x18 + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r0, r0, #1 + str r0, [sp, #0x24] + mov r0, #0x20 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + ldr r0, [sp, #0x20] + lsr r3, r3, #0x18 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x24] + ldr r1, [r5, #0x30] + lsl r2, r0, #3 + mov r0, #0x18 + mul r0, r1 + add r0, r2, r0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x10] + mov r0, #0x20 + str r0, [sp, #0x14] + mov r0, #0x30 + str r0, [sp, #0x18] + ldr r0, [sp, #0x1c] + mov r1, #7 + mov r2, #0 + bl FUN_02018170 + ldr r3, [sp, #0x24] + add r1, r4, #4 + lsl r6, r3, #2 + ldr r3, _02255450 ; =0x02255728 + lsl r1, r1, #0x18 + ldr r0, [sp, #0x1c] + ldr r3, [r3, r6] + lsr r1, r1, #0x18 + mov r2, #3 + bl FUN_020179E0 + ldr r0, [sp, #0x40] + add r4, r4, #1 + add r5, #0x38 + add r7, #8 + cmp r4, r0 + blt _022553BE +_02255422: + ldr r0, [sp, #0x1c] + mov r1, #7 + bl FUN_0201886C + mov r1, #6 + lsl r1, r1, #8 + bl DC_FlushRange + ldr r0, [sp, #0x1c] + mov r1, #7 + bl FUN_0201886C + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r3, #6 + ldr r0, [sp, #0x1c] + mov r1, #7 + lsl r3, r3, #8 + bl FUN_02017CE8 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02255450: .word 0x02255728 + thumb_func_end MOD51_0225535C + + thumb_func_start MOD51_02255454 +MOD51_02255454: ; 0x02255454 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r0, #0 + mov r4, #0 + ldr r0, [sp, #0x28] + add r5, r1, #0 + add r7, r2, #0 + str r3, [sp, #8] + str r4, [sp, #0xc] + bl FUN_020239BC + cmp r5, r0 + beq _02255478 + add r0, r6, #0 + add r1, r5, #0 + bl FUN_02025614 + add r4, r0, #0 +_02255478: + cmp r4, #0 + ble _022554D8 + cmp r4, #1 + bne _0225548C + ldr r2, [sp, #0x28] + add r0, r7, #0 + mov r1, #0 + bl FUN_0200ABC0 + b _022554CA +_0225548C: + cmp r4, #2 + blt _022554CA + sub r5, r4, #2 + mov r0, #0xa + mov r1, #0x59 + bl FUN_020219F4 + add r4, r0, #0 + add r0, r6, #0 + add r1, r5, #0 + bl FUN_020254F0 + add r1, r0, #0 + add r0, r4, #0 + bl FUN_02021E28 + add r0, r6, #0 + add r1, r5, #0 + bl FUN_020254F8 + mov r1, #0 + str r1, [sp] + str r0, [sp, #4] + add r0, r7, #0 + add r2, r4, #0 + add r3, r1, #0 + bl FUN_0200ABB4 + add r0, r4, #0 + bl FUN_02021A20 +_022554CA: + ldr r1, [sp, #8] + add r0, r7, #0 + mov r2, #0xce + mov r3, #0x59 + bl FUN_0200A9C4 + str r0, [sp, #0xc] +_022554D8: + ldr r0, [sp, #0xc] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD51_02255454 + + thumb_func_start MOD51_022554E0 +MOD51_022554E0: ; 0x022554E0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r7, r0, #0 + add r6, r2, #0 + ldr r2, [r7, #4] + ldr r0, _022555BC ; =0x000004D8 + str r1, [sp, #4] + mov r1, #0x27 + ldr r0, [r2, r0] + lsl r1, r1, #4 + str r0, [sp, #0xc] + add r0, r1, #0 + ldr r4, [r7, r1] + add r0, #0xd8 + ldr r0, [r4, r0] + str r3, [sp, #8] + cmp r0, #0x1e + bne _02255508 + add r1, #0xdc + b _0225550A +_02255508: + add r1, #0xd8 +_0225550A: + add r5, r4, r1 + ldr r1, [r5] + mov r0, #0x1c + mul r0, r1 + add r0, r4, r0 + ldr r0, [r0, #4] + cmp r0, #0 + beq _0225551E + bl FUN_02021A20 +_0225551E: + ldr r1, [r5] + mov r0, #0x1c + mul r0, r1 + add r0, r4, r0 + ldr r0, [r0, #8] + cmp r0, #0 + beq _02255530 + bl FUN_02021A20 +_02255530: + ldr r0, [sp, #8] + bl FUN_0202398C + add r1, r0, #0 + ldr r2, [r5] + mov r0, #0x1c + mul r0, r2 + ldr r0, [r4, r0] + bl FUN_02021E28 + ldr r0, [r5] + mov r1, #0x1c + add r2, r0, #0 + mul r2, r1 + add r0, r4, r2 + ldrh r2, [r6] + strh r2, [r0, #0x14] + ldrh r2, [r6, #2] + strh r2, [r0, #0x16] + ldrh r2, [r6, #4] + strh r2, [r0, #0x18] + ldrh r2, [r6, #6] + strh r2, [r0, #0x1a] + ldr r0, [r5] + mul r1, r0 + ldr r0, [sp, #4] + add r1, r4, r1 + str r0, [r1, #0xc] + ldr r0, [sp, #8] + bl FUN_020239CC + ldr r2, [r5] + mov r1, #0x1c + mul r1, r2 + add r1, r4, r1 + str r0, [r1, #0x10] + add r0, r6, #0 + mov r1, #0x59 + bl FUN_020137D4 + ldr r2, [r5] + mov r1, #0x1c + mul r1, r2 + add r1, r4, r1 + str r0, [r1, #4] + ldr r0, [r7, #0x10] + ldr r1, [sp, #4] + str r0, [sp] + ldr r0, [sp, #0xc] + ldr r2, [r7, #0x18] + ldr r3, [r7, #0x1c] + bl MOD51_02255454 + ldr r2, [r5] + mov r1, #0x1c + mul r1, r2 + add r1, r4, r1 + str r0, [r1, #8] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + mov r0, #0xd3 + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #0x1e + bne _022555B8 + mov r1, #0 + str r1, [r4, r0] +_022555B8: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022555BC: .word 0x000004D8 + thumb_func_end MOD51_022554E0 + + thumb_func_start MOD51_022555C0 +MOD51_022555C0: ; 0x022555C0 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r0, r1, #0 + str r1, [sp] + add r7, r2, #0 + bl FUN_0201385C + cmp r0, #0 + bne _022555D6 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_022555D6: + mov r1, #0x27 + lsl r1, r1, #4 + ldr r0, [r6, r1] + add r1, #0xd8 + ldr r1, [r0, r1] + mov r4, #0 + cmp r1, #0 + ble _02255610 + add r5, r4, #0 +_022555E8: + add r1, r0, r5 + ldr r0, [r1, #0xc] + cmp r7, r0 + bne _022555FC + ldr r0, [sp] + add r1, #0x14 + bl FUN_02013928 + cmp r0, #0 + bne _02255610 +_022555FC: + mov r0, #0x27 + lsl r0, r0, #4 + mov r1, #0xd2 + ldr r0, [r6, r0] + lsl r1, r1, #2 + ldr r1, [r0, r1] + add r4, r4, #1 + add r5, #0x1c + cmp r4, r1 + blt _022555E8 +_02255610: + mov r0, #0x27 + lsl r0, r0, #4 + ldr r1, [r6, r0] + add r0, #0xd8 + ldr r0, [r1, r0] + cmp r4, r0 + beq _02255626 + cmp r0, #0 + beq _02255626 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02255626: + mov r0, #0x1c + mul r0, r4 + add r1, r1, r0 + ldr r0, [r1, #0xc] + cmp r7, r0 + beq _0225563A + ldr r0, [sp] + add r1, #0x14 + bl FUN_02013928 +_0225563A: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD51_022555C0 + + thumb_func_start MOD51_02255640 +MOD51_02255640: ; 0x02255640 + push {r4, r5, r6, lr} + add r6, r1, #0 + mov r1, #0x9e + add r4, r0, #0 + lsl r1, r1, #2 + ldrh r0, [r4, r1] + sub r1, r1, #4 + ldrh r1, [r4, r1] + mov r5, #0 + sub r1, r1, #3 + cmp r0, r1 + bne _0225565A + mov r5, #1 +_0225565A: + add r1, r3, #0 + add r0, r4, #0 + add r3, r6, #0 + bl MOD51_022554E0 + ldr r1, _0225568C ; =0x0000027A + ldrh r0, [r4, r1] + cmp r0, #0 + beq _02255682 + cmp r5, #0 + beq _02255682 + add r0, r1, #0 + sub r0, #0xa + ldr r2, [r4, r0] + add r0, r1, #0 + add r0, #0xce + ldr r0, [r2, r0] + sub r2, r0, #3 + sub r0, r1, #2 + strh r2, [r4, r0] +_02255682: + add r0, r4, #0 + bl MOD51_0225571C + pop {r4, r5, r6, pc} + nop +_0225568C: .word 0x0000027A + thumb_func_end MOD51_02255640 + + thumb_func_start MOD51_02255690 +MOD51_02255690: ; 0x02255690 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp] + ldr r0, [r0, #0xc] + bl FUN_0204646C + cmp r0, #0 + bne _02255714 + mov r0, #4 + bl FUN_02023928 + str r0, [sp, #4] + mov r6, #0 +_022556AA: + add r0, r6, #0 + bl FUN_0202EF18 + add r7, r0, #0 + beq _022556E6 + add r4, r7, #0 + add r4, #0x50 + ldr r0, _02255718 ; =0x02255800 + add r5, r4, #0 + add r5, #8 + str r4, [r0, #4] + str r5, [r0] + add r0, r4, #0 + ldr r1, [sp, #4] + add r0, #0x10 + bl FUN_0202393C + ldr r0, [sp] + ldr r2, [r7, #0x50] + add r1, r5, #0 + bl MOD51_022555C0 + cmp r0, #0 + beq _022556E6 + ldr r0, [sp] + ldr r1, [sp, #4] + ldr r3, [r4] + add r2, r5, #0 + bl MOD51_02255640 +_022556E6: + add r6, r6, #1 + cmp r6, #0x10 + blt _022556AA + ldr r0, [sp] + ldr r0, [r0, #8] + bl FUN_02052CF0 + add r4, r0, #0 + beq _0225570E + ldr r0, [sp] + ldr r0, [r0, #0x10] + bl FUN_020239BC + add r3, r0, #0 + ldr r0, [sp] + add r2, r4, #0 + add r1, r0, #0 + ldr r1, [r1, #0x10] + bl MOD51_02255640 +_0225570E: + ldr r0, [sp, #4] + bl FUN_02016A18 +_02255714: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02255718: .word 0x02255800 + thumb_func_end MOD51_02255690 + + thumb_func_start MOD51_0225571C +MOD51_0225571C: ; 0x0225571C + mov r1, #0xa1 + mov r2, #1 + lsl r1, r1, #2 + str r2, [r0, r1] + bx lr + .align 2, 0 + thumb_func_end MOD51_0225571C + + .section .rodata + ; 0x02255728 + .incbin "baserom.nds", 0x2998E8, 0xB8 + + .section .bss + ; 0x2255800 + .space 4 |