diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-05-11 17:43:55 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-05-11 17:43:55 -0400 |
commit | 17d5ec76a021218e0bf9741d6fc199fa0c540aa1 (patch) | |
tree | a631ff653a85a7560619264f41e39e7d4256903c | |
parent | bf8f421169262a7f634de5a1b291a8ac407be2d9 (diff) |
disassemble module 40
-rw-r--r-- | arm9/arm9.lcf | 28 | ||||
-rw-r--r-- | arm9/global.inc | 5 | ||||
-rw-r--r-- | arm9/modules/20/asm/module_20.s | 8 | ||||
-rw-r--r-- | arm9/modules/40/asm/module_40.s | 1417 |
4 files changed, 1450 insertions, 8 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 9eb19eb3..97baf90b 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -1673,10 +1673,21 @@ SECTIONS { SDK_OVERLAY.MODULE_39.BSS_SIZE = SDK_OVERLAY.MODULE_39.BSS_END - SDK_OVERLAY.MODULE_39.BSS_START; } >> MODULE_39 - .MODULE.40: { + .MODULE.40 : + { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_40.START = .; - FILE_292000.o (.text) /* 0x28E000 */ + module_40.o (.text) + module_40.o (.rodata) + module_40.o (.init) + SDK_OVERLAY.MODULE_40.SINIT_START = .; + module_40.o (.ctor) + module_40.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_40.SINIT_END = .; + . = ALIGN(32); + module_40.o (.sdata) + module_40.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_40.END = .; SDK_OVERLAY.MODULE_40.SIZE = SDK_OVERLAY.MODULE_40.END - SDK_OVERLAY.MODULE_40.START; @@ -1686,7 +1697,8 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_40.BSS_START = .; - FILE_292000.o (.bss) + module_40.o (.sbss) + module_40.o (.bss) . = ALIGN(32); SDK_OVERLAY.MODULE_40.BSS_END = .; SDK_OVERLAY.MODULE_40.BSS_SIZE = SDK_OVERLAY.MODULE_40.BSS_END - SDK_OVERLAY.MODULE_40.BSS_START; @@ -3049,7 +3061,15 @@ SECTIONS { WRITEW SDK_OVERLAY_MODULE_39_ID; WRITEW 0; - OVERLAY_TABLE(MODULE_40, 40) + WRITEW SDK_OVERLAY_MODULE_40_ID; + WRITEW SDK_OVERLAY.MODULE_40.START; + WRITEW SDK_OVERLAY.MODULE_40.SIZE; + WRITEW SDK_OVERLAY.MODULE_40.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_40.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_40.SINIT_END; + WRITEW SDK_OVERLAY_MODULE_40_ID; + WRITEW 0; + OVERLAY_TABLE(MODULE_41, 41) OVERLAY_TABLE(MODULE_42, 42) OVERLAY_TABLE(MODULE_43, 43) diff --git a/arm9/global.inc b/arm9/global.inc index c79de602..05893664 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -2657,6 +2657,11 @@ .extern FUN_020C39CC
.extern FUN_020C6034
.extern FUN_020C605C
+.extern FUN_02037790
+.extern FUN_0204BF94
+.extern FUN_0204BF9C
+.extern FUN_0204BFB0
+.extern MOD20_022542C0
.extern MOD05_021EC464
.extern MOD05_021ED9B4
.extern MOD05_021EC7B4
diff --git a/arm9/modules/20/asm/module_20.s b/arm9/modules/20/asm/module_20.s index 1c3ba821..2975c2d8 100644 --- a/arm9/modules/20/asm/module_20.s +++ b/arm9/modules/20/asm/module_20.s @@ -5,10 +5,10 @@ thumb_func_start MOD20_02252440 MOD20_02252440: ; 0x02252440 - ldr r3, _02252444 ; =0x02037791 + ldr r3, _02252444 ; =FUN_02037790 bx r3 .align 2, 0 -_02252444: .word 0x02037791 +_02252444: .word FUN_02037790 thumb_func_end MOD20_02252440 thumb_func_start MOD20_02252448 @@ -1136,11 +1136,11 @@ _02252C04: thumb_func_start MOD20_02252C08 MOD20_02252C08: ; 0x02252C08 - ldr r3, _02252C10 ; =0x0204646D + ldr r3, _02252C10 ; =FUN_0204646C ldr r0, [r0, #0x5c] bx r3 nop -_02252C10: .word 0x0204646D +_02252C10: .word FUN_0204646C thumb_func_end MOD20_02252C08 thumb_func_start MOD20_02252C14 diff --git a/arm9/modules/40/asm/module_40.s b/arm9/modules/40/asm/module_40.s new file mode 100644 index 00000000..af31d92c --- /dev/null +++ b/arm9/modules/40/asm/module_40.s @@ -0,0 +1,1417 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD40_02254840 +MOD40_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD40_02254854 + ldr r1, _02254850 ; =MOD40_022549D4 + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD40_02254854 +_02254850: .word MOD40_022549D4 + thumb_func_end MOD40_02254840 + + thumb_func_start MOD40_02254854 +MOD40_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x34 + add r7, r2, #0 + str r3, [sp] + bl FUN_02016998 + add r4, r0, #0 + beq _02254892 + ldr r3, [sp] + add r1, r6, #0 + add r2, r7, #0 + bl MOD40_0225489C + cmp r0, #0 + beq _0225488C + ldr r0, _02254898 ; =MOD40_02254998 + add r1, r4, #0 + mov r2, #1 + bl FUN_0200CA44 + cmp r0, #0 + beq _0225488C + str r4, [r5] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0225488C: + add r0, r4, #0 + bl FUN_02016A18 +_02254892: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02254898: .word MOD40_02254998 + thumb_func_end MOD40_02254854 + + thumb_func_start MOD40_0225489C +MOD40_0225489C: ; 0x0225489C + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r6, r2, #0 + bl MOD20_02252C3C + str r0, [r5, #0x10] + bl FUN_0204BF94 + strb r0, [r5, #3] + ldr r0, [r5, #0x10] + add r1, sp, #8 + add r2, sp, #4 + bl FUN_0204BF9C + ldr r0, [sp, #8] + strb r0, [r5, #6] + ldr r0, [sp, #4] + strb r0, [r5, #7] + add r0, r5, #3 + bl MOD40_02254940 + add r0, r5, #0 + add r0, #8 + add r1, r5, #3 + add r2, r6, #0 + bl MOD40_02254D6C + cmp r0, #0 + beq _02254930 + mov r0, #0 + strb r0, [r5] + strb r0, [r5, #1] + strb r0, [r5, #2] + mov r0, #8 + str r0, [sp] + ldr r0, _02254938 ; =0x02255328 + ldr r2, _0225493C ; =MOD40_02254990 + mov r1, #6 + add r3, r5, #0 + bl MOD20_02254130 + str r0, [r5, #0x14] + mov r0, #0 + str r0, [r5, #0x1c] + ldr r0, [r5, #0x14] + mov r1, #2 + mov r2, #4 + bl MOD20_022542C0 + ldr r0, [r5, #0x14] + mov r1, #3 + mov r2, #4 + bl MOD20_022542C0 + mov r1, #4 + ldr r0, [r5, #0x14] + add r2, r1, #0 + bl MOD20_022542C0 + ldr r0, [r5, #0x14] + mov r1, #5 + mov r2, #4 + bl MOD20_022542C0 + mov r0, #0 + str r0, [r5, #0x2c] + str r0, [r5, #0x30] + add sp, #0xc + str r4, [r5, #0xc] + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_02254930: + mov r0, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_02254938: .word 0x02255328 +_0225493C: .word MOD40_02254990 + thumb_func_end MOD40_0225489C + + thumb_func_start MOD40_02254940 +MOD40_02254940: ; 0x02254940 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + add r0, sp, #0 + bl FUN_02012690 + ldr r0, [sp] + cmp r0, #0x18 + blo _0225495A + mov r1, #0x18 + blx _u32_div_f + str r1, [sp] +_0225495A: + ldr r0, [sp, #4] + cmp r0, #0x3c + blo _0225496A + ldr r0, [sp] + mov r1, #0x3c + blx _u32_div_f + str r1, [sp] +_0225496A: + ldr r0, [sp] + strb r0, [r4, #1] + ldr r0, [sp, #4] + strb r0, [r4, #2] + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD40_02254940 + + thumb_func_start MOD40_02254978 +MOD40_02254978: ; 0x02254978 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + bl MOD20_02254198 + ldr r0, [r4, #8] + bl MOD40_02254DA8 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD40_02254978 + + thumb_func_start MOD40_02254990 +MOD40_02254990: ; 0x02254990 + str r0, [r3, #0x18] + str r1, [r3, #0x1c] + bx lr + .align 2, 0 + thumb_func_end MOD40_02254990 + + thumb_func_start MOD40_02254998 +MOD40_02254998: ; 0x02254998 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #5 + bhs _022549CE + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x14] + bl MOD20_02252C14 + ldrb r1, [r4] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _022549D0 ; =0x02255314 + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _022549CE + add r0, r4, #0 + bl MOD40_02254978 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0xc] + bl MOD20_022529A0 +_022549CE: + pop {r3, r4, r5, pc} + .align 2, 0 +_022549D0: .word 0x02255314 + thumb_func_end MOD40_02254998 + + thumb_func_start MOD40_022549D4 +MOD40_022549D4: ; 0x022549D4 + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD40_022549D4 + + thumb_func_start MOD40_022549DC +MOD40_022549DC: ; 0x022549DC + ldrb r2, [r0, #2] + cmp r2, #0 + bne _022549E4 + b _022549E6 +_022549E4: + mov r1, #4 +_022549E6: + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD40_022549DC + + thumb_func_start MOD40_022549F0 +MOD40_022549F0: ; 0x022549F0 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254A00 + cmp r0, #1 + beq _02254A10 + b _02254A3A +_02254A00: + ldr r0, [r4, #8] + mov r1, #0 + bl MOD40_02254F98 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A3A +_02254A10: + ldr r0, [r4, #8] + mov r1, #0 + bl MOD40_02254FBC + cmp r0, #0 + beq _02254A3A + ldr r0, [r4, #0xc] + bl MOD20_0225298C + ldrb r0, [r4, #3] + cmp r0, #0 + beq _02254A32 + add r0, r4, #0 + mov r1, #2 + bl MOD40_022549DC + b _02254A3A +_02254A32: + add r0, r4, #0 + mov r1, #1 + bl MOD40_022549DC +_02254A3A: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD40_022549F0 + + thumb_func_start MOD40_02254A40 +MOD40_02254A40: ; 0x02254A40 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _02254A54 + mov r1, #4 + bl MOD40_022549DC + mov r0, #0 + pop {r4, pc} +_02254A54: + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254A60 + cmp r0, #1 + beq _02254B32 + b _02254B46 +_02254A60: + ldr r1, [r4, #0x1c] + cmp r1, #1 + bne _02254A9A + ldr r0, [r4, #0x18] + cmp r0, #0 + bne _02254A9A + mov r0, #1 + strb r0, [r4, #3] + add r0, r4, #3 + bl MOD40_02254940 + mov r2, #6 + mov r3, #7 + ldrsb r2, [r4, r2] + ldrsb r3, [r4, r3] + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_0204BFB0 + ldr r0, [r4, #8] + mov r1, #2 + bl MOD40_02254F98 + mov r0, #0 + str r0, [r4, #0x1c] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254B46 +_02254A9A: + cmp r1, #1 + bne _02254AB0 + ldr r0, [r4, #0x18] + cmp r0, #1 + bne _02254AB0 + mov r0, #0 + str r0, [r4, #0x1c] + ldr r0, _02254B4C ; =0x0000066E + bl MOD20_02252B28 + b _02254B46 +_02254AB0: + cmp r1, #1 + beq _02254AB8 + cmp r1, #7 + bne _02254B46 +_02254AB8: + ldr r0, [r4, #0x18] + cmp r0, #5 + bhi _02254B24 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02254ACA: ; jump table + .short _02254B24 - _02254ACA - 2 ; case 0 + .short _02254B24 - _02254ACA - 2 ; case 1 + .short _02254AD6 - _02254ACA - 2 ; case 2 + .short _02254AEA - _02254ACA - 2 ; case 3 + .short _02254AFE - _02254ACA - 2 ; case 4 + .short _02254B12 - _02254ACA - 2 ; case 5 +_02254AD6: + mov r0, #6 + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #6] + ldrsb r0, [r4, r0] + cmp r0, #0x17 + ble _02254B24 + mov r0, #0 + strb r0, [r4, #6] + b _02254B24 +_02254AEA: + mov r0, #6 + ldrsb r1, [r4, r0] + sub r1, r1, #1 + strb r1, [r4, #6] + ldrsb r0, [r4, r0] + cmp r0, #0 + bge _02254B24 + mov r0, #0x17 + strb r0, [r4, #6] + b _02254B24 +_02254AFE: + mov r0, #7 + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #7] + ldrsb r0, [r4, r0] + cmp r0, #0x3b + ble _02254B24 + mov r0, #0 + strb r0, [r4, #7] + b _02254B24 +_02254B12: + mov r0, #7 + ldrsb r1, [r4, r0] + sub r1, r1, #1 + strb r1, [r4, #7] + ldrsb r0, [r4, r0] + cmp r0, #0 + bge _02254B24 + mov r0, #0x3b + strb r0, [r4, #7] +_02254B24: + mov r0, #0 + str r0, [r4, #0x1c] + ldr r0, [r4, #8] + mov r1, #4 + bl MOD40_02254F98 + b _02254B46 +_02254B32: + ldr r0, [r4, #8] + mov r1, #2 + bl MOD40_02254FBC + cmp r0, #0 + beq _02254B46 + add r0, r4, #0 + mov r1, #2 + bl MOD40_022549DC +_02254B46: + mov r0, #0 + pop {r4, pc} + nop +_02254B4C: .word 0x0000066E + thumb_func_end MOD40_02254A40 + + thumb_func_start MOD40_02254B50 +MOD40_02254B50: ; 0x02254B50 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _02254B68 + mov r1, #4 + bl MOD40_022549DC + add sp, #8 + mov r0, #0 + pop {r4, pc} +_02254B68: + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254B74 + cmp r0, #1 + beq _02254C02 + b _02254C12 +_02254B74: + add r0, r4, #3 + bl MOD40_02254D4C + cmp r0, #0 + beq _02254B8C + add r0, r4, #0 + mov r1, #3 + bl MOD40_022549DC + add sp, #8 + mov r0, #0 + pop {r4, pc} +_02254B8C: + ldr r1, [r4, #0x1c] + cmp r1, #1 + bne _02254BB2 + ldr r0, [r4, #0x18] + cmp r0, #1 + bne _02254BB2 + mov r0, #0 + strb r0, [r4, #3] + ldr r0, [r4, #8] + mov r1, #3 + bl MOD40_02254F98 + mov r0, #0 + str r0, [r4, #0x1c] + add r0, r4, #0 + mov r1, #1 + bl MOD40_022549DC + b _02254C12 +_02254BB2: + cmp r1, #1 + bne _02254BC4 + ldr r0, [r4, #0x18] + cmp r0, #0 + bne _02254BC4 + ldr r0, _02254C18 ; =0x0000066E + bl MOD20_02252B28 + b _02254C12 +_02254BC4: + add r0, r4, #0 + bl MOD40_02254CE4 + cmp r0, #0 + bne _02254BD4 + add r0, r4, #0 + bl MOD40_02254CE8 +_02254BD4: + add r0, r4, #0 + add r1, sp, #4 + add r2, sp, #0 + bl MOD40_02254D00 + cmp r0, #0 + beq _02254C12 + mov r0, #5 + ldrsb r0, [r4, r0] + ldr r1, [sp] + cmp r1, r0 + beq _02254C12 + strb r1, [r4, #5] + ldr r0, [sp, #4] + mov r1, #4 + strb r0, [r4, #4] + ldr r0, [r4, #8] + bl MOD40_02254F98 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254C12 +_02254C02: + ldr r0, [r4, #8] + mov r1, #4 + bl MOD40_02254FBC + cmp r0, #0 + beq _02254C12 + mov r0, #0 + strb r0, [r4, #1] +_02254C12: + mov r0, #0 + add sp, #8 + pop {r4, pc} + .align 2, 0 +_02254C18: .word 0x0000066E + thumb_func_end MOD40_02254B50 + + thumb_func_start MOD40_02254C1C +MOD40_02254C1C: ; 0x02254C1C + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _02254C34 + mov r1, #4 + bl MOD40_022549DC + add sp, #8 + mov r0, #0 + pop {r4, pc} +_02254C34: + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254C40 + cmp r0, #1 + beq _02254C50 + b _02254CDC +_02254C40: + ldr r0, [r4, #8] + mov r1, #5 + bl MOD40_02254F98 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254CDC +_02254C50: + add r0, r4, #3 + bl MOD40_02254D4C + cmp r0, #0 + bne _02254C76 + ldr r0, [r4, #8] + bl MOD40_0225530C + ldr r0, [r4, #8] + mov r1, #2 + bl MOD40_02254F98 + add r0, r4, #0 + mov r1, #2 + bl MOD40_022549DC + add sp, #8 + mov r0, #0 + pop {r4, pc} +_02254C76: + ldr r0, [r4, #0x1c] + cmp r0, #1 + bne _02254CA6 + ldr r0, [r4, #0x18] + cmp r0, #1 + bne _02254CA6 + mov r0, #0 + strb r0, [r4, #3] + ldr r0, [r4, #8] + bl MOD40_0225530C + ldr r0, [r4, #8] + mov r1, #3 + bl MOD40_02254F98 + mov r0, #0 + str r0, [r4, #0x1c] + add r0, r4, #0 + mov r1, #1 + bl MOD40_022549DC + add sp, #8 + mov r0, #0 + pop {r4, pc} +_02254CA6: + add r0, r4, #0 + bl MOD40_02254CE4 + cmp r0, #0 + bne _02254CB6 + add r0, r4, #0 + bl MOD40_02254CE8 +_02254CB6: + add r0, r4, #0 + add r1, sp, #4 + add r2, sp, #0 + bl MOD40_02254D00 + cmp r0, #0 + beq _02254CDC + mov r0, #5 + ldrsb r0, [r4, r0] + ldr r1, [sp] + cmp r1, r0 + beq _02254CDC + strb r1, [r4, #5] + ldr r0, [sp, #4] + mov r1, #4 + strb r0, [r4, #4] + ldr r0, [r4, #8] + bl MOD40_02254F98 +_02254CDC: + mov r0, #0 + add sp, #8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD40_02254C1C + + thumb_func_start MOD40_02254CE4 +MOD40_02254CE4: ; 0x02254CE4 + ldr r0, [r0, #0x2c] + bx lr + thumb_func_end MOD40_02254CE4 + + thumb_func_start MOD40_02254CE8 +MOD40_02254CE8: ; 0x02254CE8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x2c] + cmp r0, #0 + bne _02254CFE + add r0, r4, #0 + add r0, #0x20 + bl FUN_02012690 + mov r0, #1 + str r0, [r4, #0x30] +_02254CFE: + pop {r4, pc} + thumb_func_end MOD40_02254CE8 + + thumb_func_start MOD40_02254D00 +MOD40_02254D00: ; 0x02254D00 + ldr r3, [r0, #0x30] + cmp r3, #0 + beq _02254D12 + ldr r3, [r0, #0x20] + str r3, [r1] + ldr r0, [r0, #0x24] + str r0, [r2] + mov r0, #1 + bx lr +_02254D12: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD40_02254D00 + + thumb_func_start MOD40_02254D18 +MOD40_02254D18: ; 0x02254D18 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254D28 + cmp r0, #1 + beq _02254D38 + b _02254D46 +_02254D28: + ldr r0, [r4, #8] + mov r1, #1 + bl MOD40_02254F98 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254D46 +_02254D38: + ldr r0, [r4, #8] + bl MOD40_02254FC8 + cmp r0, #0 + beq _02254D46 + mov r0, #1 + pop {r4, pc} +_02254D46: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD40_02254D18 + + thumb_func_start MOD40_02254D4C +MOD40_02254D4C: ; 0x02254D4C + mov r1, #1 + mov r2, #3 + ldrsb r3, [r0, r1] + ldrsb r2, [r0, r2] + cmp r3, r2 + bne _02254D64 + mov r2, #2 + ldrsb r3, [r0, r2] + mov r2, #4 + ldrsb r0, [r0, r2] + cmp r3, r0 + beq _02254D66 +_02254D64: + mov r1, #0 +_02254D66: + add r0, r1, #0 + bx lr + .align 2, 0 + thumb_func_end MOD40_02254D4C + + thumb_func_start MOD40_02254D6C +MOD40_02254D6C: ; 0x02254D6C + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + mov r0, #8 + mov r1, #0x9c + bl FUN_02016998 + add r4, r0, #0 + beq _02254DA2 + add r0, #8 + mov r1, #8 + bl MOD20_022536F4 + str r5, [r4] + bl MOD20_02252D34 + str r0, [r4, #4] + bl MOD20_02252D24 + str r0, [r4, #0x30] + add r0, r4, #0 + add r1, r5, #0 + bl MOD40_02254DBC + str r4, [r6] + mov r0, #1 + pop {r4, r5, r6, pc} +_02254DA2: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD40_02254D6C + + thumb_func_start MOD40_02254DA8 +MOD40_02254DA8: ; 0x02254DA8 + push {r4, lr} + add r4, r0, #0 + beq _02254DB8 + bl MOD40_02254EE4 + add r0, r4, #0 + bl FUN_02016A18 +_02254DB8: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD40_02254DA8 + + thumb_func_start MOD40_02254DBC +MOD40_02254DBC: ; 0x02254DBC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + mov r3, #0 + str r3, [sp] + mov r2, #1 + add r5, r0, #0 + str r1, [sp, #0xc] + str r2, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #2 + bl FUN_02006A34 + mov r0, #0 + str r0, [sp] + mov r2, #1 + mov r3, #0xa + str r2, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #0x4f + lsl r3, r3, #8 + bl FUN_02006A34 + mov r0, #8 + str r0, [sp] + add r0, r5, #0 + add r0, #0x68 + mov r1, #0xc + mov r2, #0x4d + mov r3, #0x4e + bl MOD20_02253FBC + mov r0, #8 + str r0, [sp] + add r0, r5, #0 + add r0, #0x7c + mov r1, #0xc + mov r2, #3 + mov r3, #4 + bl MOD20_02253FBC + add r0, r5, #0 + str r0, [sp, #0x14] + add r0, #0x68 + str r0, [sp, #0x14] + add r0, r5, #0 + str r0, [sp, #0x10] + add r0, #0x7c + ldr r7, _02254EE0 ; =0x022553B0 + mov r4, #0 + add r6, r5, #0 + str r0, [sp, #0x10] +_02254E2A: + cmp r4, #9 + blt _02254E40 + cmp r4, #0xc + bgt _02254E40 + ldr r0, [r5, #0x30] + ldr r2, [sp, #0x10] + add r1, r7, #0 + bl MOD20_02253E74 + str r0, [r6, #0x34] + b _02254E52 +_02254E40: + ldr r0, [r5, #0x30] + ldr r2, [sp, #0x14] + add r1, r7, #0 + bl MOD20_02253E74 + mov r1, #0x50 + str r0, [r6, #0x34] + bl MOD20_02253FA4 +_02254E52: + add r4, r4, #1 + add r7, #0x10 + add r6, r6, #4 + cmp r4, #0xd + blt _02254E2A + ldr r0, [sp, #0xc] + ldrb r0, [r0] + cmp r0, #0 + ldr r0, [r5, #0x34] + beq _02254EB2 + mov r1, #3 + bl MOD20_02253F28 + ldr r0, [r5, #0x40] + mov r1, #5 + bl MOD20_02253F28 + ldr r0, [r5, #0x44] + mov r1, #5 + bl MOD20_02253F28 + ldr r0, [r5, #0x48] + mov r1, #1 + bl MOD20_02253F78 + ldr r0, [r5, #0x4c] + mov r1, #1 + bl MOD20_02253F78 + ldr r0, [r5, #0x50] + mov r1, #1 + bl MOD20_02253F78 + ldr r0, [r5, #0x54] + mov r1, #1 + bl MOD20_02253F78 + ldr r1, [sp, #0xc] + mov r2, #1 + ldrsb r1, [r1, r2] + ldr r2, [sp, #0xc] + mov r3, #2 + ldrsb r2, [r2, r3] + add r0, r5, #0 + bl MOD40_02254F14 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_02254EB2: + mov r1, #2 + bl MOD20_02253F28 + ldr r0, [r5, #0x40] + mov r1, #5 + bl MOD20_02253F28 + ldr r0, [r5, #0x44] + mov r1, #4 + bl MOD20_02253F28 + ldr r1, [sp, #0xc] + mov r2, #3 + ldrsb r1, [r1, r2] + ldr r2, [sp, #0xc] + mov r3, #4 + ldrsb r2, [r2, r3] + add r0, r5, #0 + bl MOD40_02254F14 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_02254EE0: .word 0x022553B0 + thumb_func_end MOD40_02254DBC + + thumb_func_start MOD40_02254EE4 +MOD40_02254EE4: ; 0x02254EE4 + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 +_02254EEC: + ldr r1, [r5, #0x34] + cmp r1, #0 + beq _02254EF8 + ldr r0, [r6, #0x30] + bl MOD20_02253F14 +_02254EF8: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xd + blt _02254EEC + add r0, r6, #0 + add r0, #0x68 + bl MOD20_02254014 + add r6, #0x7c + add r0, r6, #0 + bl MOD20_02254014 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD40_02254EE4 + + thumb_func_start MOD40_02254F14 +MOD40_02254F14: ; 0x02254F14 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _02254F8C ; =0x04000280 + mov r3, #0 + strh r3, [r0] + str r1, [r0, #0x10] + add r1, r0, #0 + add r4, r2, #0 + mov r2, #0xa + add r1, #0x18 + str r2, [r1] + str r3, [r1, #4] + lsr r1, r0, #0xb +_02254F2E: + ldrh r2, [r0] + tst r2, r1 + bne _02254F2E + ldr r1, _02254F90 ; =0x040002A0 + ldr r0, [r5, #0x58] + ldr r1, [r1] + bl MOD20_02253F28 + ldr r2, _02254F8C ; =0x04000280 + lsr r0, r2, #0xb +_02254F42: + ldrh r1, [r2] + tst r1, r0 + bne _02254F42 + ldr r1, _02254F94 ; =0x040002A8 + ldr r0, [r5, #0x5c] + ldr r1, [r1] + bl MOD20_02253F28 + ldr r0, _02254F8C ; =0x04000280 + mov r3, #0 + strh r3, [r0] + add r1, r0, #0 + str r4, [r0, #0x10] + mov r2, #0xa + add r1, #0x18 + str r2, [r1] + str r3, [r1, #4] + lsr r1, r0, #0xb +_02254F66: + ldrh r2, [r0] + tst r2, r1 + bne _02254F66 + ldr r1, _02254F90 ; =0x040002A0 + ldr r0, [r5, #0x60] + ldr r1, [r1] + bl MOD20_02253F28 + ldr r2, _02254F8C ; =0x04000280 + lsr r0, r2, #0xb +_02254F7A: + ldrh r1, [r2] + tst r1, r0 + bne _02254F7A + ldr r1, _02254F94 ; =0x040002A8 + ldr r0, [r5, #0x64] + ldr r1, [r1] + bl MOD20_02253F28 + pop {r3, r4, r5, pc} + .align 2, 0 +_02254F8C: .word 0x04000280 +_02254F90: .word 0x040002A0 +_02254F94: .word 0x040002A8 + thumb_func_end MOD40_02254F14 + + thumb_func_start MOD40_02254F98 +MOD40_02254F98: ; 0x02254F98 + push {lr} + sub sp, #0xc + add r2, r0, #0 + add r0, #8 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + ldr r0, _02254FB8 ; =0x0225535C + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254FB8: .word 0x0225535C + thumb_func_end MOD40_02254F98 + + thumb_func_start MOD40_02254FBC +MOD40_02254FBC: ; 0x02254FBC + ldr r3, _02254FC4 ; =MOD20_02253794 + add r0, #8 + bx r3 + nop +_02254FC4: .word MOD20_02253794 + thumb_func_end MOD40_02254FBC + + thumb_func_start MOD40_02254FC8 +MOD40_02254FC8: ; 0x02254FC8 + ldr r3, _02254FD0 ; =MOD20_022537B8 + add r0, #8 + bx r3 + nop +_02254FD0: .word MOD20_022537B8 + thumb_func_end MOD40_02254FC8 + + thumb_func_start MOD40_02254FD4 +MOD40_02254FD4: ; 0x02254FD4 + push {r4, lr} + add r4, r0, #0 + bl MOD20_022538A0 + add r0, #8 + add r1, r4, #0 + bl MOD20_02253888 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD40_02254FD4 + + thumb_func_start MOD40_02254FE8 +MOD40_02254FE8: ; 0x02254FE8 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + add r5, r0, #0 + ldr r0, [r5, #4] + ldr r2, _0225506C ; =0x02255340 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r1, #0x4c + mov r3, #6 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r1, #0x4b + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C + ldr r0, [r5, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r1, _02255070 ; =0x04001000 + ldr r0, _02255074 ; =0xFFFFE0FF + ldr r3, [r1] + ldr r2, [r1] + str r3, [sp, #0x10] + and r0, r2 + lsl r2, r3, #0x13 + lsr r3, r2, #0x1b + mov r2, #4 + orr r2, r3 + lsl r2, r2, #8 + orr r0, r2 + str r0, [r1] + add r0, r4, #0 + bl MOD40_02254FD4 + add sp, #0x14 + pop {r4, r5, pc} + nop +_0225506C: .word 0x02255340 +_02255070: .word 0x04001000 +_02255074: .word 0xFFFFE0FF + thumb_func_end MOD40_02254FE8 + + thumb_func_start MOD40_02255078 +MOD40_02255078: ; 0x02255078 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r5, #0 + bl MOD20_022538AC + cmp r0, #0 + beq _02255094 + cmp r0, #1 + beq _022550A2 + pop {r3, r4, r5, pc} +_02255094: + add r0, r4, #0 + bl MOD40_0225530C + add r0, r5, #0 + bl MOD20_022538B0 + pop {r3, r4, r5, pc} +_022550A2: + add r0, r4, #0 + mov r1, #5 + bl MOD40_02254FBC + cmp r0, #0 + beq _022550BC + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_020178A0 + add r0, r5, #0 + bl MOD40_02254FD4 +_022550BC: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD40_02255078 + + thumb_func_start MOD40_022550C0 +MOD40_022550C0: ; 0x022550C0 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r5, r0, #0 + add r0, r6, #0 + bl MOD20_022538A4 + add r4, r0, #0 + ldr r0, _02255138 ; =0x00000663 + bl MOD20_02252B28 + ldr r0, [r5, #0x34] + mov r1, #3 + bl MOD20_02253F28 + ldr r0, [r5, #0x40] + mov r1, #5 + bl MOD20_02253F28 + ldr r0, [r5, #0x44] + mov r1, #5 + bl MOD20_02253F28 + ldr r0, [r5, #0x38] + mov r1, #0 + bl MOD20_02253F28 + ldr r0, [r5, #0x3c] + mov r1, #0 + bl MOD20_02253F28 + ldr r0, [r5, #0x48] + mov r1, #1 + bl MOD20_02253F78 + ldr r0, [r5, #0x4c] + mov r1, #1 + bl MOD20_02253F78 + ldr r0, [r5, #0x50] + mov r1, #1 + bl MOD20_02253F78 + ldr r0, [r5, #0x54] + mov r1, #1 + bl MOD20_02253F78 + mov r1, #1 + mov r2, #2 + ldrsb r1, [r4, r1] + ldrsb r2, [r4, r2] + add r0, r5, #0 + bl MOD40_02254F14 + add r0, r6, #0 + bl MOD40_02254FD4 + pop {r4, r5, r6, pc} + .align 2, 0 +_02255138: .word 0x00000663 + thumb_func_end MOD40_022550C0 + + thumb_func_start MOD40_0225513C +MOD40_0225513C: ; 0x0225513C + push {r4, r5, r6, lr} + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r5, r0, #0 + add r0, r6, #0 + bl MOD20_022538A4 + add r4, r0, #0 + ldr r0, _022551B4 ; =0x00000663 + bl MOD20_02252B28 + ldr r0, [r5, #0x34] + mov r1, #2 + bl MOD20_02253F28 + ldr r0, [r5, #0x40] + mov r1, #5 + bl MOD20_02253F28 + ldr r0, [r5, #0x44] + mov r1, #4 + bl MOD20_02253F28 + ldr r0, [r5, #0x38] + mov r1, #0 + bl MOD20_02253F28 + ldr r0, [r5, #0x3c] + mov r1, #0 + bl MOD20_02253F28 + ldr r0, [r5, #0x48] + mov r1, #0 + bl MOD20_02253F78 + ldr r0, [r5, #0x4c] + mov r1, #0 + bl MOD20_02253F78 + ldr r0, [r5, #0x50] + mov r1, #0 + bl MOD20_02253F78 + ldr r0, [r5, #0x54] + mov r1, #0 + bl MOD20_02253F78 + mov r1, #3 + mov r2, #4 + ldrsb r1, [r4, r1] + ldrsb r2, [r4, r2] + add r0, r5, #0 + bl MOD40_02254F14 + add r0, r6, #0 + bl MOD40_02254FD4 + pop {r4, r5, r6, pc} + .align 2, 0 +_022551B4: .word 0x00000663 + thumb_func_end MOD40_0225513C + + thumb_func_start MOD40_022551B8 +MOD40_022551B8: ; 0x022551B8 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r5, #0 + bl MOD20_022538A4 + add r2, r0, #0 + ldrb r0, [r2] + cmp r0, #0 + beq _022551E2 + mov r1, #1 + mov r3, #2 + ldrsb r1, [r2, r1] + ldrsb r2, [r2, r3] + add r0, r4, #0 + bl MOD40_02254F14 + b _022551F0 +_022551E2: + mov r1, #3 + mov r3, #4 + ldrsb r1, [r2, r1] + ldrsb r2, [r2, r3] + add r0, r4, #0 + bl MOD40_02254F14 +_022551F0: + add r0, r5, #0 + bl MOD40_02254FD4 + pop {r3, r4, r5, pc} + thumb_func_end MOD40_022551B8 + + thumb_func_start MOD40_022551F8 +MOD40_022551F8: ; 0x022551F8 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + add r0, r5, #0 + bl MOD20_022538A4 + add r0, r5, #0 + bl MOD20_022538AC + cmp r0, #0 + beq _0225521A + cmp r0, #1 + beq _02255262 + pop {r3, r4, r5, pc} +_0225521A: + add r0, r4, #0 + mov r1, #0 + add r0, #0x90 + str r1, [r0] + ldr r0, [r4, #0x40] + mov r1, #4 + bl MOD20_02253F28 + ldr r0, [r4, #0x44] + mov r1, #4 + bl MOD20_02253F28 + ldr r0, [r4, #0x38] + mov r1, #1 + bl MOD20_02253F28 + ldr r0, [r4, #0x3c] + mov r1, #1 + bl MOD20_02253F28 + ldr r0, _02255304 ; =0x00000663 + bl MOD20_02252B28 + ldr r0, _02255308 ; =0x00000126 + bl MOD20_02252B48 + add r0, r4, #0 + mov r1, #0 + add r0, #0x94 + str r1, [r0] + add r4, #0x98 + add r0, r5, #0 + str r1, [r4] + bl MOD20_022538B0 + pop {r3, r4, r5, pc} +_02255262: + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + cmp r0, #0 + beq _02255294 + ldr r0, [r4, #0x58] + mov r1, #0 + bl MOD20_02253F78 + ldr r0, [r4, #0x5c] + mov r1, #0 + bl MOD20_02253F78 + ldr r0, [r4, #0x60] + mov r1, #0 + bl MOD20_02253F78 + ldr r0, [r4, #0x64] + mov r1, #0 + bl MOD20_02253F78 + add r0, r5, #0 + bl MOD40_02254FD4 + pop {r3, r4, r5, pc} +_02255294: + bl FUN_02005670 + cmp r0, #0 + bne _022552A2 + ldr r0, _02255308 ; =0x00000126 + bl MOD20_02252B48 +_022552A2: + add r0, r4, #0 + add r0, #0x94 + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x94 + str r1, [r0] + add r0, r4, #0 + add r0, #0x94 + ldr r0, [r0] + cmp r0, #0xf + blo _02255300 + add r0, r4, #0 + mov r1, #0 + add r0, #0x94 + str r1, [r0] + add r0, r4, #0 + add r0, #0x98 + ldr r1, [r0] + mov r0, #1 + eor r1, r0 + add r0, r4, #0 + add r0, #0x98 + str r1, [r0] + add r1, r4, #0 + add r1, #0x98 + ldr r0, [r4, #0x58] + ldr r1, [r1] + bl MOD20_02253F78 + add r1, r4, #0 + add r1, #0x98 + ldr r0, [r4, #0x5c] + ldr r1, [r1] + bl MOD20_02253F78 + add r1, r4, #0 + add r1, #0x98 + ldr r0, [r4, #0x60] + ldr r1, [r1] + bl MOD20_02253F78 + ldr r0, [r4, #0x64] + add r4, #0x98 + ldr r1, [r4] + bl MOD20_02253F78 +_02255300: + pop {r3, r4, r5, pc} + nop +_02255304: .word 0x00000663 +_02255308: .word 0x00000126 + thumb_func_end MOD40_022551F8 + + thumb_func_start MOD40_0225530C +MOD40_0225530C: ; 0x0225530C + mov r1, #1 + add r0, #0x90 + str r1, [r0] + bx lr + thumb_func_end MOD40_0225530C + + .section .rodata + ; 0x02255314 + .incbin "baserom.nds", 0x292AD4, 0x16C + + .section .sinit + .word MOD40_02254840 |