diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-05-12 07:48:07 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-05-12 07:48:07 -0400 |
commit | ea1871defd6104b96e43d66d15a63a0e4fb880b4 (patch) | |
tree | 65a60ce70d9181427f01b07a71e706cd9a919dc4 | |
parent | 6c0648d955d234d47be95871ec9def6093939ccd (diff) |
Disassemble module 43
-rw-r--r-- | arm9/arm9.lcf | 28 | ||||
-rw-r--r-- | arm9/global.inc | 1 | ||||
-rw-r--r-- | arm9/modules/43/asm/module_43.s | 1140 |
3 files changed, 1165 insertions, 4 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 637b1174..2191e08a 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -1766,10 +1766,21 @@ SECTIONS { SDK_OVERLAY.MODULE_42.BSS_SIZE = SDK_OVERLAY.MODULE_42.BSS_END - SDK_OVERLAY.MODULE_42.BSS_START; } >> MODULE_42 - .MODULE.43: { + .MODULE.43 : + { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_43.START = .; - FILE_294A00.o (.text) /* 0x290A00 */ + module_43.o (.text) + module_43.o (.rodata) + module_43.o (.init) + // SDK_OVERLAY.MODULE_43.SINIT_START = .; + module_43.o (.ctor) + module_43.o (.sinit) + // WRITEW 0; + // SDK_OVERLAY.MODULE_43.SINIT_END = .; + . = ALIGN(32); + module_43.o (.sdata) + module_43.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_43.END = .; SDK_OVERLAY.MODULE_43.SIZE = SDK_OVERLAY.MODULE_43.END - SDK_OVERLAY.MODULE_43.START; @@ -1779,7 +1790,8 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_43.BSS_START = .; - FILE_294A00.o (.bss) + module_43.o (.sbss) + module_43.o (.bss) . = ALIGN(32); SDK_OVERLAY.MODULE_43.BSS_END = .; SDK_OVERLAY.MODULE_43.BSS_SIZE = SDK_OVERLAY.MODULE_43.BSS_END - SDK_OVERLAY.MODULE_43.BSS_START; @@ -3112,7 +3124,15 @@ SECTIONS { WRITEW SDK_OVERLAY_MODULE_42_ID; WRITEW 0; - OVERLAY_TABLE(MODULE_43, 43) + WRITEW SDK_OVERLAY_MODULE_43_ID; + WRITEW SDK_OVERLAY.MODULE_43.START; + WRITEW SDK_OVERLAY.MODULE_43.SIZE; + WRITEW SDK_OVERLAY.MODULE_43.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_43.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_43.SINIT_END; + WRITEW SDK_OVERLAY_MODULE_43_ID; + WRITEW 0; + OVERLAY_TABLE(MODULE_44, 44) OVERLAY_TABLE(MODULE_45, 45) OVERLAY_TABLE(MODULE_46, 46) diff --git a/arm9/global.inc b/arm9/global.inc index 1ede1e92..78ae941b 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -2664,6 +2664,7 @@ .extern FUN_0204BFB0
.extern FUN_0204C080
.extern FUN_0204C0A4
+.extern FUN_020252B8
.extern MOD20_02254420
.extern MOD20_02254460
.extern MOD20_02254488
diff --git a/arm9/modules/43/asm/module_43.s b/arm9/modules/43/asm/module_43.s new file mode 100644 index 00000000..78bb538f --- /dev/null +++ b/arm9/modules/43/asm/module_43.s @@ -0,0 +1,1140 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD43_02254840 +MOD43_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD43_02254854 + ldr r1, _02254850 ; =MOD43_02254970 + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD43_02254854 +_02254850: .word MOD43_02254970 + thumb_func_end MOD43_02254840 + + thumb_func_start MOD43_02254854 +MOD43_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0xb0 + 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 MOD43_0225489C + cmp r0, #0 + beq _0225488C + ldr r0, _02254898 ; =MOD43_0225493C + 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 MOD43_0225493C + thumb_func_end MOD43_02254854 + + thumb_func_start MOD43_0225489C +MOD43_0225489C: ; 0x0225489C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r1, #0 + add r1, r5, #0 + add r1, #0xac + str r7, [r1] + str r2, [sp] + bl MOD43_02254A88 + str r0, [r5, #0xc] + add r0, r5, #0 + add r0, #0xac + ldr r0, [r0] + bl MOD20_02252C38 + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_02034E30 + bl FUN_02034DCC + add r6, r0, #0 + ldr r0, [r4, #0x1c] + ldr r0, [r0] + bl FUN_02034908 + cmp r0, #0 + beq _022548E0 + ldr r0, [r4, #0x1c] + ldr r0, [r0, #8] + str r0, [r5, #4] + ldr r0, [r4, #0x1c] + ldr r0, [r0, #0xc] + b _022548E6 +_022548E0: + ldr r0, [r6, #8] + str r0, [r5, #4] + ldr r0, [r6, #0xc] +_022548E6: + str r0, [r5, #8] + ldr r1, [r5, #4] + asr r0, r1, #4 + lsr r0, r0, #0x1b + add r0, r1, r0 + asr r0, r0, #5 + str r0, [r5, #4] + ldr r1, [r5, #8] + asr r0, r1, #4 + lsr r0, r0, #0x1b + add r0, r1, r0 + asr r0, r0, #5 + str r0, [r5, #8] + add r0, r5, #0 + add r1, r7, #0 + bl MOD43_02254B60 + add r0, r5, #0 + ldr r2, [sp] + add r0, #0xa8 + add r1, r5, #4 + bl MOD43_02254B8C + cmp r0, #0 + beq _02254924 + mov r0, #0 + strb r0, [r5] + strb r0, [r5, #1] + strb r0, [r5, #2] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02254924: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD43_0225489C + + thumb_func_start MOD43_02254928 +MOD43_02254928: ; 0x02254928 + push {r4, lr} + add r4, r0, #0 + add r0, #0xa8 + ldr r0, [r0] + bl MOD43_02254BCC + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD43_02254928 + + thumb_func_start MOD43_0225493C +MOD43_0225493C: ; 0x0225493C + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4] + add r5, r0, #0 + cmp r1, #3 + bhs _0225496A + lsl r2, r1, #2 + ldr r1, _0225496C ; =0x022550A8 + add r0, r4, #0 + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _0225496A + add r0, r4, #0 + bl MOD43_02254928 + add r0, r5, #0 + bl FUN_0200CAB4 + add r4, #0xac + ldr r0, [r4] + bl MOD20_022529A0 +_0225496A: + pop {r3, r4, r5, pc} + .align 2, 0 +_0225496C: .word 0x022550A8 + thumb_func_end MOD43_0225493C + + thumb_func_start MOD43_02254970 +MOD43_02254970: ; 0x02254970 + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD43_02254970 + + thumb_func_start MOD43_02254978 +MOD43_02254978: ; 0x02254978 + ldrb r2, [r0, #2] + cmp r2, #0 + bne _02254980 + b _02254982 +_02254980: + mov r1, #2 +_02254982: + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD43_02254978 + + thumb_func_start MOD43_0225498C +MOD43_0225498C: ; 0x0225498C + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _0225499C + cmp r0, #1 + beq _022549B0 + b _022549D2 +_0225499C: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #0 + bl MOD43_02254BD8 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _022549D2 +_022549B0: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #0 + bl MOD43_02254BFC + cmp r0, #0 + beq _022549D2 + add r0, r4, #0 + add r0, #0xac + ldr r0, [r0] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD43_02254978 +_022549D2: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD43_0225498C + + thumb_func_start MOD43_022549D8 +MOD43_022549D8: ; 0x022549D8 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _022549F0 + mov r1, #2 + bl MOD43_02254978 + add sp, #8 + mov r0, #0 + pop {r4, pc} +_022549F0: + bl MOD43_02254AF8 + add r1, r4, #0 + add r1, #0x94 + str r0, [r1] + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #2 + bl MOD43_02254BFC + cmp r0, #0 + beq _02254A48 + add r0, sp, #4 + add r1, sp, #0 + bl MOD20_02252BB8 + cmp r0, #0 + beq _02254A48 + ldr r0, [sp, #4] + sub r0, #0x10 + cmp r0, #0xc0 + bhs _02254A22 + mov r1, #1 + b _02254A24 +_02254A22: + mov r1, #0 +_02254A24: + ldr r0, [sp] + sub r0, #0x10 + cmp r0, #0xc0 + bhs _02254A30 + mov r0, #1 + b _02254A32 +_02254A30: + mov r0, #0 +_02254A32: + tst r0, r1 + beq _02254A48 + add r0, r4, #0 + bl MOD43_02254A88 + str r0, [r4, #0xc] + add r4, #0xa8 + ldr r0, [r4] + mov r1, #2 + bl MOD43_02254BD8 +_02254A48: + mov r0, #0 + add sp, #8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD43_022549D8 + + thumb_func_start MOD43_02254A50 +MOD43_02254A50: ; 0x02254A50 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254A60 + cmp r0, #1 + beq _02254A74 + b _02254A84 +_02254A60: + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #1 + bl MOD43_02254BD8 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A84 +_02254A74: + add r4, #0xa8 + ldr r0, [r4] + bl MOD43_02254C08 + cmp r0, #0 + beq _02254A84 + mov r0, #1 + pop {r4, pc} +_02254A84: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD43_02254A50 + + thumb_func_start MOD43_02254A88 +MOD43_02254A88: ; 0x02254A88 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r0, #0xac + ldr r0, [r0] + bl MOD20_02252C40 + bl FUN_02024ECC + mov r4, #0 + add r6, r0, #0 + add r7, r4, #0 +_02254A9E: + add r0, r6, #0 + add r1, r4, #0 + bl FUN_020252B8 + cmp r0, #1 + bne _02254AEA + add r0, r6, #0 + add r1, r4, #0 + bl FUN_02025238 + cmp r0, #5 + bne _02254AEA + ldr r1, _02254AF4 ; =0x022550B4 + lsl r0, r4, #1 + ldr r2, _02254AF4 ; =0x022550B4 + add r1, r1, r0 + ldrb r0, [r2, r0] + strb r0, [r5, #0x10] + ldrb r0, [r1, #1] + strb r0, [r5, #0x11] + b _02254ACC +_02254AC8: + add r1, r1, #2 + add r4, r4, #1 +_02254ACC: + add r0, r4, #1 + cmp r0, #0x76 + bhs _02254AE2 + ldrb r2, [r5, #0x10] + ldrb r0, [r1, #2] + cmp r2, r0 + bne _02254AE2 + ldrb r2, [r5, #0x11] + ldrb r0, [r1, #3] + cmp r2, r0 + beq _02254AC8 +_02254AE2: + add r7, r7, #1 + add r5, r5, #2 + cmp r7, #0x40 + bge _02254AF0 +_02254AEA: + add r4, r4, #1 + cmp r4, #0x76 + blo _02254A9E +_02254AF0: + add r0, r7, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02254AF4: .word 0x022550B4 + thumb_func_end MOD43_02254A88 + + thumb_func_start MOD43_02254AF8 +MOD43_02254AF8: ; 0x02254AF8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r0, #0xac + ldr r0, [r0] + mov r6, #0 + bl MOD20_02252C30 + cmp r0, #0 + beq _02254B5C + add r0, r5, #0 + add r0, #0xac + ldr r0, [r0] + bl MOD20_02252C38 + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_02034E30 + bl FUN_02034DCC + add r7, r0, #0 + ldr r0, [r4, #0x1c] + ldr r0, [r0] + bl FUN_02034908 + cmp r0, #0 + beq _02254B36 + ldr r1, [r4, #0x1c] + ldr r0, [r1, #8] + ldr r1, [r1, #0xc] + b _02254B3A +_02254B36: + ldr r0, [r7, #8] + ldr r1, [r7, #0xc] +_02254B3A: + asr r2, r0, #4 + lsr r2, r2, #0x1b + add r2, r0, r2 + asr r0, r2, #5 + asr r2, r1, #4 + lsr r2, r2, #0x1b + add r2, r1, r2 + asr r1, r2, #5 + ldr r2, [r5, #4] + cmp r0, r2 + bne _02254B56 + ldr r2, [r5, #8] + cmp r1, r2 + beq _02254B5C +_02254B56: + str r0, [r5, #4] + str r1, [r5, #8] + mov r6, #1 +_02254B5C: + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD43_02254AF8 + + thumb_func_start MOD43_02254B60 +MOD43_02254B60: ; 0x02254B60 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, r1, #0 + bl MOD20_02252C40 + bl FUN_020462AC + add r6, r0, #0 + mov r4, #0 +_02254B72: + add r0, r6, #0 + add r1, r4, #0 + bl FUN_0205F524 + add r1, r5, #0 + add r1, #0x98 + add r4, r4, #1 + add r5, r5, #4 + str r0, [r1] + cmp r4, #4 + blt _02254B72 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD43_02254B60 + + thumb_func_start MOD43_02254B8C +MOD43_02254B8C: ; 0x02254B8C + push {r4, r5, r6, lr} + add r5, r1, #0 + mov r1, #0x16 + add r6, r0, #0 + mov r0, #8 + lsl r1, r1, #4 + bl FUN_02016998 + add r4, r0, #0 + beq _02254BC6 + 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 r5, #0x8c + mov r0, #0x15 + ldr r1, [r5] + lsl r0, r0, #4 + str r1, [r4, r0] + str r4, [r6] + mov r0, #1 + pop {r4, r5, r6, pc} +_02254BC6: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD43_02254B8C + + thumb_func_start MOD43_02254BCC +MOD43_02254BCC: ; 0x02254BCC + push {r3, lr} + cmp r0, #0 + beq _02254BD6 + bl FUN_02016A18 +_02254BD6: + pop {r3, pc} + thumb_func_end MOD43_02254BCC + + thumb_func_start MOD43_02254BD8 +MOD43_02254BD8: ; 0x02254BD8 + 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, _02254BF8 ; =0x022551BC + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254BF8: .word 0x022551BC + thumb_func_end MOD43_02254BD8 + + thumb_func_start MOD43_02254BFC +MOD43_02254BFC: ; 0x02254BFC + ldr r3, _02254C04 ; =MOD20_02253794 + add r0, #8 + bx r3 + nop +_02254C04: .word MOD20_02253794 + thumb_func_end MOD43_02254BFC + + thumb_func_start MOD43_02254C08 +MOD43_02254C08: ; 0x02254C08 + ldr r3, _02254C10 ; =MOD20_022537B8 + add r0, #8 + bx r3 + nop +_02254C10: .word MOD20_022537B8 + thumb_func_end MOD43_02254C08 + + thumb_func_start MOD43_02254C14 +MOD43_02254C14: ; 0x02254C14 + 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 MOD43_02254C14 + + thumb_func_start MOD43_02254C28 +MOD43_02254C28: ; 0x02254C28 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r5, r0, #0 + ldr r0, _02254CC0 ; =0x0400104C + mov r3, #0 + strb r3, [r0] + strb r3, [r0, #1] + ldr r0, [r5, #4] + ldr r2, _02254CC4 ; =0x022551A0 + mov r1, #6 + 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, #0x75 + mov r3, #6 + bl FUN_0200687C + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r1, #0x74 + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C + add r0, r5, #0 + lsr r1, r4, #5 + bl MOD43_02254CD0 + ldr r0, [r5, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r1, _02254CC8 ; =0x04001000 + ldr r0, _02254CCC ; =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, r5, #0 + bl MOD43_02254E78 + add r0, r6, #0 + bl MOD43_02254C14 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_02254CC0: .word 0x0400104C +_02254CC4: .word 0x022551A0 +_02254CC8: .word 0x04001000 +_02254CCC: .word 0xFFFFE0FF + thumb_func_end MOD43_02254C28 + + thumb_func_start MOD43_02254CD0 +MOD43_02254CD0: ; 0x02254CD0 + push {r3, r4, r5, r6, lr} + sub sp, #0x24 + add r4, r1, #0 + mov r1, #0x66 + add r5, r0, #0 + mov r0, #0x1a + lsl r1, r1, #2 + mov r2, #0 + mov r3, #8 + bl FUN_0200A738 + add r6, r0, #0 + beq _02254D44 + mov r0, #0x14 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + ldr r0, [r5, #4] + add r1, sp, #0x14 + mov r2, #6 + mov r3, #0x12 + bl FUN_02019064 + add r0, sp, #0x14 + mov r1, #4 + bl FUN_02019620 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _02254D48 ; =0x00010104 + add r2, r6, #0 + str r0, [sp, #8] + add r0, sp, #0x14 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, sp, #0x14 + bl FUN_02019270 + add r0, sp, #0x14 + bl FUN_02019548 + add r0, sp, #0x14 + bl FUN_02019178 + add r0, r6, #0 + bl FUN_02021A20 +_02254D44: + add sp, #0x24 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_02254D48: .word 0x00010104 + thumb_func_end MOD43_02254CD0 + + thumb_func_start MOD43_02254D4C +MOD43_02254D4C: ; 0x02254D4C + 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 _02254D68 + cmp r0, #1 + beq _02254D78 + pop {r3, r4, r5, pc} +_02254D68: + mov r0, #0x57 + mov r1, #1 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r5, #0 + bl MOD20_022538B0 + pop {r3, r4, r5, pc} +_02254D78: + add r0, r4, #0 + mov r1, #2 + bl MOD43_02254BFC + cmp r0, #0 + beq _02254DA0 + add r0, r4, #0 + bl MOD43_02255000 + ldr r0, _02254DA4 ; =0x0400104C + mov r1, #0 + strb r1, [r0] + strb r1, [r0, #1] + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_020178A0 + add r0, r5, #0 + bl MOD43_02254C14 +_02254DA0: + pop {r3, r4, r5, pc} + nop +_02254DA4: .word 0x0400104C + thumb_func_end MOD43_02254D4C + + thumb_func_start MOD43_02254DA8 +MOD43_02254DA8: ; 0x02254DA8 + 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 _02254DCE + cmp r0, #1 + beq _02254E02 + cmp r0, #2 + beq _02254E10 + pop {r3, r4, r5, pc} +_02254DCE: + mov r1, #0x55 + mov r0, #6 + lsl r1, r1, #2 + str r0, [r4, r1] + mov r2, #0 + add r0, r1, #4 + str r2, [r4, r0] + add r0, r1, #0 + add r0, #8 + str r2, [r4, r0] + ldr r2, [r4, r1] + lsl r0, r2, #4 + orr r0, r2 + ldr r2, _02254E70 ; =0x0400104C + strb r0, [r2] + ldr r1, [r4, r1] + lsl r0, r1, #4 + orr r0, r1 + strb r0, [r2, #1] + ldr r0, _02254E74 ; =0x00000678 + bl MOD20_02252B28 + add r0, r5, #0 + bl MOD20_022538B0 + pop {r3, r4, r5, pc} +_02254E02: + add r0, r4, #0 + bl MOD43_02254F9C + add r0, r5, #0 + bl MOD20_022538B0 + pop {r3, r4, r5, pc} +_02254E10: + mov r0, #0x57 + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #0 + beq _02254E22 + add r0, r5, #0 + bl MOD43_02254C14 + pop {r3, r4, r5, pc} +_02254E22: + sub r1, r0, #4 + ldr r1, [r4, r1] + add r2, r1, #1 + sub r1, r0, #4 + str r2, [r4, r1] + ldr r1, [r4, r1] + cmp r1, #3 + blt _02254E6E + mov r2, #0 + sub r1, r0, #4 + str r2, [r4, r1] + add r1, r0, #0 + sub r1, #8 + ldr r1, [r4, r1] + sub r2, r1, #1 + add r1, r0, #0 + sub r1, #8 + str r2, [r4, r1] + add r1, r0, #0 + sub r1, #8 + ldr r2, [r4, r1] + lsl r1, r2, #4 + orr r2, r1 + ldr r1, _02254E70 ; =0x0400104C + strb r2, [r1] + add r2, r0, #0 + sub r2, #8 + ldr r3, [r4, r2] + sub r0, #8 + lsl r2, r3, #4 + orr r2, r3 + strb r2, [r1, #1] + ldr r0, [r4, r0] + cmp r0, #0 + bne _02254E6E + add r0, r5, #0 + bl MOD43_02254C14 +_02254E6E: + pop {r3, r4, r5, pc} + .align 2, 0 +_02254E70: .word 0x0400104C +_02254E74: .word 0x00000678 + thumb_func_end MOD43_02254DA8 + + thumb_func_start MOD43_02254E78 +MOD43_02254E78: ; 0x02254E78 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r6, r0, #0 + ldr r7, [r6] + 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, #0x78 + bl FUN_02006A34 + mov r0, #8 + str r0, [sp] + mov r0, #0x4e + lsl r0, r0, #2 + add r0, r6, r0 + mov r1, #0xc + mov r2, #0x76 + mov r3, #0x77 + bl MOD20_02253FBC + mov r2, #0 + add r0, sp, #0xc + strb r2, [r0, #0x12] + mov r1, #2 + strb r1, [r0, #0x13] + strb r2, [r0, #0x15] + ldr r0, [r7] + ldr r1, [r7, #4] + add r2, sp, #0x10 + add r3, sp, #0xc + bl MOD20_02254420 + ldr r0, [sp, #0x10] + mov r2, #0x4e + lsl r0, r0, #0xc + str r0, [sp, #0x14] + ldr r0, [sp, #0xc] + lsl r2, r2, #2 + lsl r0, r0, #0xc + str r0, [sp, #0x18] + mov r1, #0 + add r0, sp, #0xc + strb r1, [r0, #0x14] + strh r1, [r0, #0x10] + ldr r0, [r6, #0x20] + add r1, sp, #0x14 + add r2, r6, r2 + bl MOD20_02253E74 + mov r1, #1 + str r0, [r6, #0x24] + bl MOD20_02253FAC + mov r1, #1 + add r0, sp, #0xc + strb r1, [r0, #0x14] + mov r1, #7 + strh r1, [r0, #0x10] + mov r5, #0 + str r5, [sp, #0x14] + str r5, [sp, #0x18] + add r4, r6, #0 +_02254EFC: + mov r2, #0x4e + lsl r2, r2, #2 + ldr r0, [r6, #0x20] + add r1, sp, #0x14 + add r2, r6, r2 + bl MOD20_02253E74 + mov r1, #1 + str r0, [r4, #0x28] + bl MOD20_02253FAC + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #0x40 + blt _02254EFC + add r0, r6, #0 + bl MOD43_02254F9C + mov r5, #0 + add r4, r6, #0 +_02254F24: + add r0, r5, #0 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD20_02254460 + ldr r0, [sp, #0x10] + mov r1, #2 + lsl r0, r0, #0xc + str r0, [sp, #0x14] + ldr r0, [sp, #0xc] + mov r2, #0x4e + lsl r0, r0, #0xc + str r0, [sp, #0x18] + add r0, sp, #0xc + strb r1, [r0, #0x14] + add r1, r5, #0 + add r1, #0xe + strh r1, [r0, #0x10] + lsl r2, r2, #2 + ldr r0, [r6, #0x20] + add r1, sp, #0x14 + add r2, r6, r2 + bl MOD20_02253E74 + mov r1, #0x4a + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r1, #0 + ldr r0, [r4, r0] + mov r1, #1 + bl MOD20_02253FAC + add r0, r7, #0 + add r0, #0x94 + ldr r0, [r0] + cmp r0, #0 + bne _02254F7A + mov r0, #0x4a + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl MOD20_02253F78 +_02254F7A: + add r5, r5, #1 + add r4, r4, #4 + add r7, r7, #4 + cmp r5, #4 + blt _02254F24 + ldr r0, _02254F98 ; =MOD43_02255078 + add r1, r6, #0 + mov r2, #3 + bl FUN_0200CA44 + mov r1, #0x53 + lsl r1, r1, #2 + str r0, [r6, r1] + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02254F98: .word MOD43_02255078 + thumb_func_end MOD43_02254E78 + + thumb_func_start MOD43_02254F9C +MOD43_02254F9C: ; 0x02254F9C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r0, #0 + ldr r1, [r7] + mov r4, #0 + ldr r0, [r1, #8] + cmp r0, #0 + ble _02254FE2 + add r6, r4, #0 + add r5, r7, #0 +_02254FB0: + add r1, r1, r6 + ldrb r0, [r1, #0xc] + ldrb r1, [r1, #0xd] + add r2, sp, #4 + add r3, sp, #0 + bl MOD20_02254420 + ldr r1, [sp, #4] + ldr r2, [sp] + ldr r0, [r5, #0x28] + lsl r1, r1, #0xc + lsl r2, r2, #0xc + bl MOD20_02253F64 + ldr r0, [r5, #0x28] + mov r1, #0 + bl MOD20_02253F78 + ldr r1, [r7] + add r4, r4, #1 + ldr r0, [r1, #8] + add r6, r6, #2 + add r5, r5, #4 + cmp r4, r0 + blt _02254FB0 +_02254FE2: + cmp r4, #0x40 + bge _02254FFC + lsl r0, r4, #2 + add r5, r7, r0 + mov r6, #1 +_02254FEC: + ldr r0, [r5, #0x28] + add r1, r6, #0 + bl MOD20_02253F78 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x40 + blt _02254FEC +_02254FFC: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD43_02254F9C + + thumb_func_start MOD43_02255000 +MOD43_02255000: ; 0x02255000 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, #0 + beq _0225501A + bl FUN_0200CAB4 + mov r0, #0x53 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r5, r0] +_0225501A: + mov r6, #0 + add r4, r5, #0 + add r7, r6, #0 +_02255020: + mov r0, #0x4a + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #0 + beq _02255036 + ldr r0, [r5, #0x20] + bl MOD20_02253F14 + mov r0, #0x4a + lsl r0, r0, #2 + str r7, [r4, r0] +_02255036: + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #4 + blt _02255020 + mov r6, #0 + add r4, r5, #0 + add r7, r6, #0 +_02255044: + ldr r1, [r4, #0x28] + cmp r1, #0 + beq _02255052 + ldr r0, [r5, #0x20] + bl MOD20_02253F14 + str r7, [r4, #0x28] +_02255052: + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #0x40 + blt _02255044 + ldr r1, [r5, #0x24] + cmp r1, #0 + beq _0225506A + ldr r0, [r5, #0x20] + bl MOD20_02253F14 + mov r0, #0 + str r0, [r5, #0x24] +_0225506A: + mov r0, #0x4e + lsl r0, r0, #2 + add r0, r5, r0 + bl MOD20_02254014 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD43_02255000 + + thumb_func_start MOD43_02255078 +MOD43_02255078: ; 0x02255078 + push {r4, lr} + sub sp, #8 + add r4, r1, #0 + ldr r1, [r4] + add r0, r1, #0 + add r0, #0x90 + ldr r0, [r0] + cmp r0, #0 + beq _022550A2 + ldmia r1!, {r0, r1} + add r2, sp, #4 + add r3, sp, #0 + bl MOD20_02254420 + ldr r1, [sp, #4] + ldr r2, [sp] + ldr r0, [r4, #0x24] + lsl r1, r1, #0xc + lsl r2, r2, #0xc + bl MOD20_02253F64 +_022550A2: + add sp, #8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD43_02255078 + + .section .rodata + ; 0x022550A8 + .incbin "baserom.nds", 0x295268, 0x144 + + ; .section .sinit + .global SDK_OVERLAY.MODULE_43.SINIT_START + .global SDK_OVERLAY.MODULE_43.SINIT_END +SDK_OVERLAY.MODULE_43.SINIT_START: + .word MOD43_02254840 + .word 0 +SDK_OVERLAY.MODULE_43.SINIT_END: |