diff options
Diffstat (limited to 'arm9/modules/05/asm/mod05_021D7F4C.s')
-rw-r--r-- | arm9/modules/05/asm/mod05_021D7F4C.s | 224 |
1 files changed, 224 insertions, 0 deletions
diff --git a/arm9/modules/05/asm/mod05_021D7F4C.s b/arm9/modules/05/asm/mod05_021D7F4C.s new file mode 100644 index 00000000..2ba8b668 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021D7F4C.s @@ -0,0 +1,224 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021D7F4C +MOD05_021D7F4C: ; 0x021D7F4C + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + add r0, r5, #0 + mov r1, #0x14 + add r6, r2, #0 + bl AllocFromHeap + add r4, r0, #0 + str r7, [r4] + str r5, [r4, #4] + mov r0, #0x14 + add r7, r6, #0 + mul r7, r0 + str r6, [r4, #8] + add r0, r5, #0 + add r1, r7, #0 + bl AllocFromHeap + str r0, [r4, #0xc] + ldr r1, [r4, #0xc] + mov r0, #0 + add r2, r7, #0 + bl MIi_CpuClear32 + add r0, r6, #0 + bl FUN_0201B578 + add r1, r0, #0 + add r0, r5, #0 + bl AllocFromHeap + str r0, [r4, #0x10] + ldr r1, [r4, #0x10] + add r0, r6, #0 + bl FUN_0201B580 + str r0, [r4, #0x10] + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021D7F9C +MOD05_021D7F9C: ; 0x021D7F9C + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #8] + mov r6, #0 + cmp r0, #0 + ble _021D7FBC + add r4, r6, #0 +_021D7FAA: + ldr r0, [r5, #0xc] + add r0, r0, r4 + bl MOD05_021D80A4 + ldr r0, [r5, #8] + add r6, r6, #1 + add r4, #0x14 + cmp r6, r0 + blt _021D7FAA +_021D7FBC: + ldr r0, [r5, #0xc] + bl FreeToHeap + ldr r0, [r5, #0x10] + bl FreeToHeap + add r0, r5, #0 + bl FreeToHeap + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021D7FD0 +MOD05_021D7FD0: ; 0x021D7FD0 + ldr r3, _021D7FD8 ; =FUN_0201B5CC + ldr r0, [r0, #0x10] + bx r3 + nop +_021D7FD8: .word FUN_0201B5CC + + thumb_func_start MOD05_021D7FDC +MOD05_021D7FDC: ; 0x021D7FDC + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4] + ldr r0, [r0] + bl FUN_020373AC + cmp r0, #0 + beq _021D7FFE + ldr r0, [r4, #0xc] + ldr r3, [r0, #0x10] + cmp r3, #0 + beq _021D7FFE + ldr r1, [r4] + ldr r2, [r4, #0x10] + ldr r1, [r1] + add r0, r4, #0 + blx r3 +_021D7FFE: + pop {r4, pc} + + thumb_func_start MOD05_021D8000 +MOD05_021D8000: ; 0x021D8000 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4] + ldr r0, [r0] + bl FUN_020373AC + cmp r0, #0 + beq _021D8022 + ldr r0, [r4, #0xc] + ldr r3, [r0, #0x14] + cmp r3, #0 + beq _021D8022 + ldr r1, [r4] + ldr r2, [r4, #0x10] + ldr r1, [r1] + add r0, r4, #0 + blx r3 +_021D8022: + pop {r4, pc} + + thumb_func_start MOD05_021D8024 +MOD05_021D8024: ; 0x021D8024 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r2, [r5, #8] + add r6, r1, #0 + mov r1, #0 + ldr r4, [r5, #0xc] + cmp r2, #0 + ble _021D8094 +_021D8034: + ldr r0, [r4, #4] + cmp r0, #0 + bne _021D808C + ldr r0, _021D809C ; =MOD05_021D7FDC + ldr r2, [r6] + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #4] + ldr r0, [r5, #0x10] + ldr r1, _021D80A0 ; =MOD05_021D8000 + ldr r3, [r6] + add r2, r4, #0 + bl FUN_0201B60C + str r0, [r4, #8] + str r5, [r4] + str r6, [r4, #0xc] + ldr r0, [r4, #4] + cmp r0, #0 + bne _021D8062 + bl ErrorHandling +_021D8062: + ldr r0, [r4, #8] + cmp r0, #0 + bne _021D806C + bl ErrorHandling +_021D806C: + ldrh r1, [r6, #4] + cmp r1, #0 + beq _021D807A + ldr r0, [r5, #4] + bl AllocFromHeap + str r0, [r4, #0x10] +_021D807A: + ldr r3, [r6, #8] + cmp r3, #0 + beq _021D8088 + ldr r1, [r5] + ldr r2, [r4, #0x10] + add r0, r4, #0 + blx r3 +_021D8088: + add r0, r4, #0 + pop {r4, r5, r6, pc} +_021D808C: + add r1, r1, #1 + add r4, #0x14 + cmp r1, r2 + blt _021D8034 +_021D8094: + bl ErrorHandling + mov r0, #0 + pop {r4, r5, r6, pc} + .balign 4, 0 +_021D809C: .word MOD05_021D7FDC +_021D80A0: .word MOD05_021D8000 + + thumb_func_start MOD05_021D80A4 +MOD05_021D80A4: ; 0x021D80A4 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #4] + cmp r1, #0 + beq _021D80E2 + ldr r1, [r4, #0xc] + ldr r3, [r1, #0xc] + cmp r3, #0 + beq _021D80BE + ldr r1, [r4] + ldr r2, [r4, #0x10] + ldr r1, [r1] + blx r3 +_021D80BE: + ldr r0, [r4, #0xc] + ldrh r0, [r0, #4] + cmp r0, #0 + beq _021D80CC + ldr r0, [r4, #0x10] + bl FreeToHeap +_021D80CC: + ldr r0, [r4, #4] + bl FUN_0200CAB4 + ldr r0, [r4, #8] + bl FUN_0200CAB4 + mov r0, #0 + add r1, r4, #0 + mov r2, #0x14 + bl MIi_CpuClear32 +_021D80E2: + pop {r4, pc} + + thumb_func_start MOD05_021D80E4 +MOD05_021D80E4: ; 0x021D80E4 + ldr r0, [r0, #0x10] + bx lr |