summaryrefslogtreecommitdiff
path: root/arm9/modules/05/asm/mod05_021E3340.s
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/modules/05/asm/mod05_021E3340.s')
-rw-r--r--arm9/modules/05/asm/mod05_021E3340.s128
1 files changed, 128 insertions, 0 deletions
diff --git a/arm9/modules/05/asm/mod05_021E3340.s b/arm9/modules/05/asm/mod05_021E3340.s
new file mode 100644
index 00000000..264edb7b
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021E3340.s
@@ -0,0 +1,128 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E3340
+MOD05_021E3340: ; 0x021E3340
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r4, r0, #0
+ bl FUN_02046528
+ add r5, r0, #0
+ add r0, r4, #0
+ bl FUN_0204652C
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #4
+ bhi _021E3414
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E3366: ; jump table
+ .short _021E3370 - _021E3366 - 2 ; case 0
+ .short _021E3388 - _021E3366 - 2 ; case 1
+ .short _021E33A0 - _021E3366 - 2 ; case 2
+ .short _021E33E4 - _021E3366 - 2 ; case 3
+ .short _021E33FE - _021E3366 - 2 ; case 4
+_021E3370:
+ mov r0, #2
+ add r1, r0, #0
+ str r0, [sp]
+ sub r1, #0x12
+ mov r2, #0
+ mov r3, #0x3f
+ bl FUN_0200A208
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E3414
+_021E3388:
+ mov r0, #2
+ bl FUN_0200A344
+ cmp r0, #0
+ beq _021E3414
+ ldr r0, [r5, #8]
+ bl MOD19_022524F4
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E3414
+_021E33A0:
+ ldr r0, [r5, #8]
+ bl MOD19_02252504
+ cmp r0, #0
+ beq _021E3414
+ ldr r0, [r5, #0xc]
+ bl FUN_0204C1A8
+ add r6, r0, #0
+ ldr r0, _021E341C ; =SDK_OVERLAY_MODULE_19_ID
+ bl UnloadOverlayByID
+ ldr r0, _021E3420 ; =SDK_OVERLAY_MODULE_20_ID
+ mov r1, #2
+ bl HandleLoadOverlay
+ add r0, r6, #0
+ bl FUN_0204BEB8
+ mov r0, #1
+ bl FUN_0200A03C
+ str r0, [sp]
+ ldr r1, [r5, #4]
+ ldr r2, [r5, #0xc]
+ ldr r3, [r5, #8]
+ add r0, r5, #0
+ add r1, #0x14
+ bl MOD20_02252448
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E3414
+_021E33E4:
+ mov r1, #0
+ mov r0, #2
+ add r2, r1, #0
+ str r0, [sp]
+ mov r0, #4
+ sub r2, #0x10
+ mov r3, #0x3f
+ bl FUN_0200A208
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E3414
+_021E33FE:
+ mov r0, #2
+ bl FUN_0200A344
+ cmp r0, #0
+ beq _021E3414
+ add r0, r4, #0
+ bl FreeToHeap
+ add sp, #4
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_021E3414:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021E341C: .word SDK_OVERLAY_MODULE_19_ID
+_021E3420: .word SDK_OVERLAY_MODULE_20_ID
+
+ thumb_func_start MOD05_021E3424
+MOD05_021E3424: ; 0x021E3424
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0xb
+ mov r1, #4
+ bl AllocFromHeapAtEnd
+ add r2, r0, #0
+ mov r0, #0
+ str r0, [r2]
+ ldr r1, _021E3440 ; =MOD05_021E3340
+ add r0, r4, #0
+ bl FUN_0204640C
+ pop {r4, pc}
+ .balign 4, 0
+_021E3440: .word MOD05_021E3340