diff options
Diffstat (limited to 'arm9/modules/45/asm')
-rw-r--r-- | arm9/modules/45/asm/module_45.s | 1061 |
1 files changed, 1061 insertions, 0 deletions
diff --git a/arm9/modules/45/asm/module_45.s b/arm9/modules/45/asm/module_45.s new file mode 100644 index 00000000..96762d44 --- /dev/null +++ b/arm9/modules/45/asm/module_45.s @@ -0,0 +1,1061 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD45_02254840 +MOD45_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD45_02254854 + ldr r1, _02254850 ; =MOD45_02254A30 + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD45_02254854 +_02254850: .word MOD45_02254A30 + thumb_func_end MOD45_02254840 + + thumb_func_start MOD45_02254854 +MOD45_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 MOD45_0225489C + cmp r0, #0 + beq _0225488C + ldr r0, _02254898 ; =MOD45_022549EC + 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 MOD45_022549EC + thumb_func_end MOD45_02254854 + + thumb_func_start MOD45_0225489C +MOD45_0225489C: ; 0x0225489C + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r5, r0, #0 + add r4, r1, #0 + add r0, sp, #4 + add r6, r2, #0 + bl FUN_020126B4 + add r0, r4, #0 + bl MOD20_02252C3C + add r1, r5, #0 + add r1, #0x98 + str r0, [r1] + add r0, r5, #4 + add r1, r5, #0 + add r2, sp, #4 + bl MOD45_0225492C + add r0, r5, #0 + ldrb r1, [r5, #0x12] + add r0, #0xa8 + add r2, r6, #0 + str r1, [r0] + add r0, r5, #0 + add r0, #0xa8 + ldr r1, [r0] + ldr r0, [r5, #8] + sub r0, r0, #1 + add r1, r1, r0 + add r0, r5, #0 + add r0, #0xac + str r1, [r0] + add r0, r5, #0 + add r0, #0x90 + add r1, r5, #4 + bl MOD45_02254B90 + cmp r0, #0 + beq _0225491C + mov r0, #0 + strb r0, [r5] + strb r0, [r5, #1] + strb r0, [r5, #2] + mov r0, #8 + str r0, [sp] + ldr r0, _02254924 ; =0x02255018 + ldr r2, _02254928 ; =MOD45_022549E0 + mov r1, #0x25 + add r3, r5, #0 + bl MOD20_02254130 + add r1, r5, #0 + add r1, #0x9c + str r0, [r1] + add r0, r5, #0 + mov r1, #0 + add r0, #0xa0 + str r1, [r0] + add r5, #0x94 + add sp, #0x14 + str r4, [r5] + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_0225491C: + mov r0, #0 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + nop +_02254924: .word 0x02255018 +_02254928: .word MOD45_022549E0 + thumb_func_end MOD45_0225489C + + thumb_func_start MOD45_0225492C +MOD45_0225492C: ; 0x0225492C + push {r3, r4, r5, r6, r7, lr} + add r4, r2, #0 + add r6, r0, #0 + ldr r0, [r4, #4] + str r1, [sp] + str r0, [r6] + ldr r0, [r4, #8] + str r0, [r6, #8] + ldr r1, [r6] + ldr r0, _022549BC ; =0x022550AB + ldrb r0, [r0, r1] + str r0, [r6, #4] + ldr r0, [r6] + cmp r0, #2 + bne _02254970 + ldr r5, [r4] + mov r1, #0x19 + add r0, r5, #0 + lsl r1, r1, #4 + bl _u32_div_f + cmp r1, #0 + beq _0225496C + add r0, r5, #0 + mov r1, #0x64 + bl _u32_div_f + cmp r1, #0 + beq _02254970 + mov r0, #3 + tst r0, r5 + bne _02254970 +_0225496C: + mov r0, #0x1d + str r0, [r6, #4] +_02254970: + ldr r0, [r4, #8] + mov r1, #7 + sub r0, r0, #1 + bl _u32_div_f + mov r2, #7 + ldr r3, [r4, #0xc] + sub r0, r2, r1 + add r7, r3, r0 + cmp r7, #7 + blo _02254990 + add r0, r7, #0 + add r1, r2, #0 + bl _u32_div_f + add r7, r1, #0 +_02254990: + ldr r0, [r6, #4] + mov r4, #0 + cmp r0, #0 + bls _022549BA + add r5, r6, #0 +_0225499A: + ldr r0, [sp] + add r2, r4, #1 + strh r2, [r5, #0xc] + add r0, #0x98 + ldr r0, [r0] + ldr r1, [r6] + bl FUN_0204C064 + strb r0, [r5, #0xf] + add r0, r7, r4 + strb r0, [r5, #0xe] + ldr r0, [r6, #4] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, r0 + blo _0225499A +_022549BA: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022549BC: .word 0x022550AB + thumb_func_end MOD45_0225492C + + thumb_func_start MOD45_022549C0 +MOD45_022549C0: ; 0x022549C0 + push {r4, lr} + add r4, r0, #0 + add r0, #0x9c + ldr r0, [r0] + bl MOD20_02254198 + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + bl MOD45_02254BCC + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD45_022549C0 + + thumb_func_start MOD45_022549E0 +MOD45_022549E0: ; 0x022549E0 + add r2, r3, #0 + add r2, #0xa4 + str r0, [r2] + add r3, #0xa0 + str r1, [r3] + bx lr + thumb_func_end MOD45_022549E0 + + thumb_func_start MOD45_022549EC +MOD45_022549EC: ; 0x022549EC + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #3 + bhs _02254A2A + add r0, r4, #0 + add r0, #0x94 + add r1, #0x9c + ldr r0, [r0] + ldr r1, [r1] + bl MOD20_02252C14 + ldrb r1, [r4] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _02254A2C ; =0x0225500C + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _02254A2A + add r0, r4, #0 + bl MOD45_022549C0 + add r0, r5, #0 + bl FUN_0200CAB4 + add r4, #0x94 + ldr r0, [r4] + bl MOD20_022529A0 +_02254A2A: + pop {r3, r4, r5, pc} + .align 2, 0 +_02254A2C: .word 0x0225500C + thumb_func_end MOD45_022549EC + + thumb_func_start MOD45_02254A30 +MOD45_02254A30: ; 0x02254A30 + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD45_02254A30 + + thumb_func_start MOD45_02254A38 +MOD45_02254A38: ; 0x02254A38 + ldrb r2, [r0, #2] + cmp r2, #0 + bne _02254A40 + b _02254A42 +_02254A40: + mov r1, #2 +_02254A42: + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD45_02254A38 + + thumb_func_start MOD45_02254A4C +MOD45_02254A4C: ; 0x02254A4C + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254A5C + cmp r0, #1 + beq _02254A70 + b _02254A92 +_02254A5C: + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + mov r1, #0 + bl MOD45_02254C7C + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A92 +_02254A70: + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + mov r1, #0 + bl MOD45_02254CA0 + cmp r0, #0 + beq _02254A92 + add r0, r4, #0 + add r0, #0x94 + ldr r0, [r0] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD45_02254A38 +_02254A92: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD45_02254A4C + + thumb_func_start MOD45_02254A98 +MOD45_02254A98: ; 0x02254A98 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldrb r1, [r5, #2] + cmp r1, #0 + beq _02254AAC + mov r1, #2 + bl MOD45_02254A38 + mov r0, #0 + pop {r3, r4, r5, pc} +_02254AAC: + ldrb r0, [r5, #1] + cmp r0, #0 + beq _02254AB8 + cmp r0, #1 + beq _02254B3E + b _02254B52 +_02254AB8: + add r0, r5, #0 + add r0, #0xa0 + ldr r0, [r0] + cmp r0, #1 + bne _02254B52 + add r0, r5, #0 + mov r1, #0 + add r0, #0xa0 + str r1, [r0] + add r0, r5, #0 + add r0, #0xa8 + ldr r2, [r0] + add r0, r5, #0 + add r0, #0xa4 + ldr r1, [r0] + cmp r1, r2 + blo _02254B52 + add r0, r5, #0 + add r0, #0xac + ldr r0, [r0] + cmp r1, r0 + bhi _02254B52 + add r0, r5, #0 + add r0, #0x98 + sub r4, r1, r2 + ldr r0, [r0] + ldr r1, [r5, #4] + add r2, r4, #1 + bl FUN_0204C064 + cmp r0, #0 + beq _02254B08 + add r0, r5, #0 + add r0, #0x98 + ldr r0, [r0] + ldr r1, [r5, #4] + add r2, r4, #1 + bl FUN_0204C02C + b _02254B16 +_02254B08: + add r0, r5, #0 + add r0, #0x98 + ldr r0, [r0] + ldr r1, [r5, #4] + add r2, r4, #1 + bl FUN_0204BFF0 +_02254B16: + add r3, r5, #0 + add r3, #0x13 + lsl r2, r4, #2 + ldrb r1, [r3, r2] + mov r0, #1 + eor r0, r1 + strb r0, [r3, r2] + add r0, r5, #0 + add r0, #0x8c + str r4, [r0] + add r0, r5, #0 + add r0, #0x90 + ldr r0, [r0] + mov r1, #2 + bl MOD45_02254C7C + ldrb r0, [r5, #1] + add r0, r0, #1 + strb r0, [r5, #1] + b _02254B52 +_02254B3E: + add r0, r5, #0 + add r0, #0x90 + ldr r0, [r0] + mov r1, #2 + bl MOD45_02254CA0 + cmp r0, #0 + beq _02254B52 + mov r0, #0 + strb r0, [r5, #1] +_02254B52: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD45_02254A98 + + thumb_func_start MOD45_02254B58 +MOD45_02254B58: ; 0x02254B58 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254B68 + cmp r0, #1 + beq _02254B7C + b _02254B8C +_02254B68: + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + mov r1, #1 + bl MOD45_02254C7C + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254B8C +_02254B7C: + add r4, #0x90 + ldr r0, [r4] + bl MOD45_02254CAC + cmp r0, #0 + beq _02254B8C + mov r0, #1 + pop {r4, pc} +_02254B8C: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD45_02254B58 + + thumb_func_start MOD45_02254B90 +MOD45_02254B90: ; 0x02254B90 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + mov r0, #8 + mov r1, #0x3c + 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 r0, r4, #0 + add r1, r5, #0 + bl MOD45_02254BE0 + 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 MOD45_02254B90 + + thumb_func_start MOD45_02254BCC +MOD45_02254BCC: ; 0x02254BCC + push {r4, lr} + add r4, r0, #0 + beq _02254BDC + bl MOD45_02254C64 + add r0, r4, #0 + bl FUN_02016A18 +_02254BDC: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD45_02254BCC + + thumb_func_start MOD45_02254BE0 +MOD45_02254BE0: ; 0x02254BE0 + push {r4, r5, lr} + sub sp, #0xc + mov r3, #0 + str r3, [sp] + mov r2, #1 + add r5, r0, #0 + add r4, r1, #0 + str r2, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #0x72 + bl FUN_02006A34 + mov r0, #8 + str r0, [sp] + add r0, r5, #0 + add r0, #0x28 + mov r1, #0xc + mov r2, #0x70 + mov r3, #0x71 + bl MOD20_02253FBC + add r2, r5, #0 + ldr r0, [r5, #0x20] + ldr r1, _02254C2C ; =0x022550B8 + add r2, #0x28 + bl MOD20_02253E74 + str r0, [r5, #0x24] + ldr r1, [r4, #8] + lsl r1, r1, #2 + add r1, r4, r1 + ldrb r1, [r1, #0xa] + bl MOD45_02254C30 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02254C2C: .word 0x022550B8 + thumb_func_end MOD45_02254BE0 + + thumb_func_start MOD45_02254C30 +MOD45_02254C30: ; 0x02254C30 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r5, r0, #0 + add r0, r6, #0 + mov r1, #7 + bl _u32_div_f + add r4, r1, #0 + add r0, r6, #0 + mov r1, #7 + bl _u32_div_f + add r2, r0, #0 + lsl r1, r4, #1 + lsl r3, r2, #1 + add r1, r4, r1 + add r2, r2, r3 + add r1, r1, #5 + add r2, r2, #6 + add r0, r5, #0 + lsl r1, r1, #0xf + lsl r2, r2, #0xf + bl MOD20_02253F64 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD45_02254C30 + + thumb_func_start MOD45_02254C64 +MOD45_02254C64: ; 0x02254C64 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x20] + ldr r1, [r4, #0x24] + bl MOD20_02253F14 + add r4, #0x28 + add r0, r4, #0 + bl MOD20_02254014 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD45_02254C64 + + thumb_func_start MOD45_02254C7C +MOD45_02254C7C: ; 0x02254C7C + 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, _02254C9C ; =0x02255140 + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254C9C: .word 0x02255140 + thumb_func_end MOD45_02254C7C + + thumb_func_start MOD45_02254CA0 +MOD45_02254CA0: ; 0x02254CA0 + ldr r3, _02254CA8 ; =MOD20_02253794 + add r0, #8 + bx r3 + nop +_02254CA8: .word MOD20_02253794 + thumb_func_end MOD45_02254CA0 + + thumb_func_start MOD45_02254CAC +MOD45_02254CAC: ; 0x02254CAC + ldr r3, _02254CB4 ; =MOD20_022537B8 + add r0, #8 + bx r3 + nop +_02254CB4: .word MOD20_022537B8 + thumb_func_end MOD45_02254CAC + + thumb_func_start MOD45_02254CB8 +MOD45_02254CB8: ; 0x02254CB8 + 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 MOD45_02254CB8 + + thumb_func_start MOD45_02254CCC +MOD45_02254CCC: ; 0x02254CCC + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + 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, [r5, #4] + ldr r2, _02254D60 ; =0x022550FC + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r5, #4] + ldr r2, _02254D64 ; =0x022550E0 + mov r1, #7 + mov r3, #0 + bl FUN_02016C18 + add r0, r5, #0 + add r1, r4, #0 + bl MOD45_02254DDC + add r0, r5, #0 + add r1, r4, #0 + bl MOD45_02254E74 + 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, #0x6f + mov r3, #7 + bl FUN_0200687C + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C + ldr r0, [r5, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r0, [r5, #4] + mov r1, #7 + bl FUN_02017CD0 + ldr r1, _02254D68 ; =0x04001000 + ldr r0, _02254D6C ; =0xFFFFE0FF + ldr r3, [r1] + ldr r2, [r1] + str r3, [sp, #0x10] + and r0, r2 + lsl r2, r3, #0x13 + lsr r3, r2, #0x1b + mov r2, #0xc + orr r2, r3 + lsl r2, r2, #8 + orr r0, r2 + str r0, [r1] + add r0, r6, #0 + bl MOD45_02254CB8 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_02254D60: .word 0x022550FC +_02254D64: .word 0x022550E0 +_02254D68: .word 0x04001000 +_02254D6C: .word 0xFFFFE0FF + thumb_func_end MOD45_02254CCC + + thumb_func_start MOD45_02254D70 +MOD45_02254D70: ; 0x02254D70 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #7 + bl FUN_020178A0 + add r0, r5, #0 + bl MOD45_02254CB8 + pop {r3, r4, r5, pc} + thumb_func_end MOD45_02254D70 + + thumb_func_start MOD45_02254D94 +MOD45_02254D94: ; 0x02254D94 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + add r5, r0, #0 + add r0, r4, #0 + bl MOD20_022538A4 + add r2, r0, #0 + add r0, #0x88 + ldr r0, [r0] + lsl r3, r0, #2 + add r0, r2, r3 + ldrb r0, [r0, #0xf] + cmp r0, #0 + beq _02254DBA + mov r1, #0x8f + b _02254DBC +_02254DBA: + mov r1, #0x83 +_02254DBC: + add r2, r2, r3 + ldrb r2, [r2, #0xe] + lsl r1, r1, #0x10 + ldr r0, [r5, #4] + lsr r1, r1, #0x10 + bl MOD45_02254E28 + ldr r0, [r5, #4] + mov r1, #7 + bl FUN_02017CD0 + add r0, r4, #0 + bl MOD45_02254CB8 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD45_02254D94 + + thumb_func_start MOD45_02254DDC +MOD45_02254DDC: ; 0x02254DDC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r7, 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] + add r6, r1, #0 + ldr r2, [r7, #4] + mov r0, #0xc + mov r1, #0x6e + mov r3, #7 + bl FUN_020068C8 + ldr r0, [r6, #4] + mov r4, #0 + cmp r0, #0 + bls _02254E22 + add r5, r6, #0 +_02254E08: + ldrb r0, [r5, #0xf] + cmp r0, #0 + beq _02254E18 + ldrb r2, [r5, #0xe] + ldr r0, [r7, #4] + mov r1, #0x8f + bl MOD45_02254E28 +_02254E18: + ldr r0, [r6, #4] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, r0 + blo _02254E08 +_02254E22: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD45_02254DDC + + thumb_func_start MOD45_02254E28 +MOD45_02254E28: ; 0x02254E28 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r7, r2, #0 + add r5, r0, #0 + add r6, r1, #0 + add r0, r7, #0 + mov r1, #7 + bl _u32_div_f + add r4, r1, #0 + add r0, r7, #0 + mov r1, #7 + bl _u32_div_f + lsl r1, r0, #1 + add r0, r0, r1 + add r0, r0, #5 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + lsl r3, r4, #1 + str r0, [sp] + mov r0, #2 + add r3, r4, r3 + str r0, [sp, #4] + add r3, r3, #4 + str r0, [sp, #8] + mov r0, #0 + lsl r3, r3, #0x18 + str r0, [sp, #0xc] + add r0, r5, #0 + mov r1, #7 + add r2, r6, #0 + lsr r3, r3, #0x18 + bl FUN_02018540 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD45_02254E28 + + thumb_func_start MOD45_02254E74 +MOD45_02254E74: ; 0x02254E74 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + mov r3, #0 + add r7, r0, #0 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + str r3, [sp, #0xc] + add r6, r1, #0 + ldr r0, [r7, #4] + mov r1, #6 + mov r2, #0x82 + bl FUN_02018540 + ldr r0, [r7, #4] + ldr r1, [r6] + bl MOD45_02254EBC + ldr r0, [r6, #4] + mov r4, #0 + cmp r0, #0 + bls _02254EB8 + add r5, r6, #0 +_02254EA4: + ldrb r2, [r5, #0xe] + ldr r0, [r7, #4] + add r1, r4, #1 + bl MOD45_02254F14 + ldr r0, [r6, #4] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, r0 + blo _02254EA4 +_02254EB8: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD45_02254E74 + + thumb_func_start MOD45_02254EBC +MOD45_02254EBC: ; 0x02254EBC + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + ldr r0, _02254F10 ; =0x022550C6 + lsl r1, r1, #1 + ldrh r4, [r0, r1] + mov r0, #0 + str r0, [sp, #0x10] +_02254ECC: + ldr r0, [sp, #0x10] + mov r5, #0 + add r0, r0, #2 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 +_02254ED6: + add r3, r5, #0 + add r2, r4, r5 + add r3, #0xc + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + str r6, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + add r0, r7, #0 + mov r1, #6 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + add r5, r5, #1 + cmp r5, #4 + blt _02254ED6 + ldr r0, [sp, #0x10] + add r4, #0xc + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #2 + blt _02254ECC + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_02254F10: .word 0x022550C6 + thumb_func_end MOD45_02254EBC + + thumb_func_start MOD45_02254F14 +MOD45_02254F14: ; 0x02254F14 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r2, #0 + str r0, [sp, #0x10] + str r1, [sp, #0x14] + add r0, r5, #0 + mov r1, #7 + bl _u32_div_f + add r6, r1, #0 + lsl r0, r6, #1 + add r0, r6, r0 + add r4, r0, #4 + add r0, r5, #0 + mov r1, #7 + bl _u32_div_f + lsl r1, r0, #1 + add r0, r0, r1 + add r5, r0, #5 + cmp r6, #0 + bne _02254F44 + mov r6, #1 + b _02254F46 +_02254F44: + mov r6, #0 +_02254F46: + ldr r0, [sp, #0x14] + mov r1, #0xa + bl _u32_div_f + add r7, r0, #0 + ldr r0, [sp, #0x14] + mov r1, #0xa + bl _u32_div_f + str r1, [sp, #0x18] + cmp r7, #0 + beq _02254FAE + mov r0, #0x14 + add r2, r6, #0 + mul r2, r0 + ldr r0, _02255008 ; =0x02255118 + lsl r1, r7, #1 + add r0, r0, r2 + ldrh r7, [r1, r0] + lsl r0, r5, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + lsl r3, r4, #0x18 + ldr r0, [sp, #0x10] + mov r1, #6 + add r2, r7, #0 + lsr r3, r3, #0x18 + bl FUN_02018540 + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + add r7, #0xc + str r0, [sp, #0xc] + lsl r2, r7, #0x10 + lsl r3, r4, #0x18 + ldr r0, [sp, #0x10] + mov r1, #6 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 +_02254FAE: + mov r0, #0x14 + add r3, r6, #0 + mul r3, r0 + ldr r0, [sp, #0x18] + ldr r2, _02255008 ; =0x02255118 + lsl r1, r0, #1 + add r0, r2, r3 + ldrh r6, [r1, r0] + lsl r0, r5, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + add r3, r4, #1 + str r0, [sp, #0xc] + lsl r3, r3, #0x18 + ldr r0, [sp, #0x10] + mov r1, #6 + add r2, r6, #0 + lsr r3, r3, #0x18 + bl FUN_02018540 + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + add r6, #0xc + add r3, r4, #1 + str r0, [sp, #0xc] + lsl r2, r6, #0x10 + lsl r3, r3, #0x18 + ldr r0, [sp, #0x10] + mov r1, #6 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02255008: .word 0x02255118 + thumb_func_end MOD45_02254F14 + + .section .rodata + ; 0x0225500C + .incbin "baserom.nds", 0x2961CC, 0x164 + + .section .sinit + .word MOD45_02254840 |