Files
pokediamond/arm9/modules/70/asm/module_70.s
2020-05-29 16:14:54 -04:00

1714 lines
29 KiB
ArmAsm

.include "asm/macros.inc"
.include "global.inc"
.section .text
.balign 4, 0
thumb_func_start MOD70_021D74E0
MOD70_021D74E0: ; 0x021D74E0
push {r3, r4, r5, lr}
mov r2, #1
add r5, r0, #0
mov r0, #3
mov r1, #0x3c
lsl r2, r2, #0xe
bl FUN_0201681C
mov r2, #7
mov r0, #3
mov r1, #0x3d
lsl r2, r2, #0xe
bl FUN_0201681C
add r0, r5, #0
mov r1, #0xdc
mov r2, #0x3c
bl FUN_02006268
add r4, r0, #0
beq _021D7558
add r0, r5, #0
bl FUN_0200628C
add r1, r4, #0
add r1, #0xcc
str r0, [r1]
add r0, r4, #0
mov r1, #0
add r0, #0xd4
str r1, [r0]
add r0, r4, #0
add r0, #0xcc
ldr r0, [r0]
bl FUN_0202B1F0
add r1, r4, #0
add r1, #0xd0
str r0, [r1]
add r1, r4, #0
add r1, #0xcc
ldr r1, [r1]
add r0, r4, #0
bl MOD70_021D7724
add r0, r4, #0
add r1, r4, #0
bl MOD70_021D77CC
add r1, r4, #0
add r1, #0xc8
str r0, [r1]
add r0, r4, #0
add r0, #0xc8
ldr r0, [r0]
mov r1, #0
bl MOD70_021D7930
add r4, #0xd8
str r0, [r4]
_021D7558:
mov r0, #1
pop {r3, r4, r5, pc}
thumb_func_end MOD70_021D74E0
thumb_func_start MOD70_021D755C
MOD70_021D755C: ; 0x021D755C
push {r3, r4, r5, lr}
add r5, r0, #0
bl FUN_02006278
add r4, r0, #0
add r0, #0xc8
ldr r0, [r0]
bl MOD70_021D78A0
add r0, r4, #0
bl MOD70_021D7760
add r0, r5, #0
bl FUN_0200627C
mov r0, #0x3d
bl FUN_020168D0
mov r0, #0x3c
bl FUN_020168D0
mov r0, #1
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_end MOD70_021D755C
thumb_func_start MOD70_021D758C
MOD70_021D758C: ; 0x021D758C
push {r3, r4, r5, lr}
add r5, r1, #0
bl FUN_02006278
add r4, r0, #0
add r0, #0xd8
ldr r0, [r0]
cmp r0, #0
beq _021D75B8
add r0, r4, #0
add r0, #0xc8
ldr r0, [r0]
bl MOD70_021D7958
cmp r0, #0
bne _021D75B0
mov r0, #0
pop {r3, r4, r5, pc}
_021D75B0:
add r0, r4, #0
mov r1, #0
add r0, #0xd8
str r1, [r0]
_021D75B8:
ldr r0, [r5]
cmp r0, #0
beq _021D75C4
cmp r0, #1
beq _021D768A
b _021D768E
_021D75C4:
ldr r0, _021D7694 ; =0x021C48B8
mov r1, #2
ldr r0, [r0, #0x48]
add r2, r0, #0
tst r2, r1
beq _021D75E0
add r0, r4, #0
mov r1, #1
bl MOD70_021D7698
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
b _021D768E
_021D75E0:
mov r2, #1
add r3, r0, #0
tst r3, r2
beq _021D75F8
ldr r0, [r4, #0x1c]
mov r1, #4
eor r0, r2
str r0, [r4, #0x1c]
add r0, r4, #0
bl MOD70_021D7698
b _021D768E
_021D75F8:
mov r2, #0x20
tst r2, r0
beq _021D7612
add r0, r4, #0
bl MOD70_021D76AC
cmp r0, #0
beq _021D768E
add r0, r4, #0
mov r1, #3
bl MOD70_021D7698
b _021D768E
_021D7612:
mov r2, #0x10
tst r2, r0
beq _021D762C
add r0, r4, #0
bl MOD70_021D76E8
cmp r0, #0
beq _021D768E
add r0, r4, #0
mov r1, #3
bl MOD70_021D7698
b _021D768E
_021D762C:
mov r2, #0x40
tst r2, r0
beq _021D765C
ldr r0, [r4, #0x18]
sub r0, r0, #1
str r0, [r4, #0x18]
bpl _021D7654
add r0, r4, #0
bl MOD70_021D76AC
cmp r0, #0
beq _021D768E
ldr r0, [r4, #0x14]
mov r1, #3
sub r0, r0, #1
str r0, [r4, #0x18]
add r0, r4, #0
bl MOD70_021D7698
b _021D768E
_021D7654:
add r0, r4, #0
bl MOD70_021D7698
b _021D768E
_021D765C:
mov r2, #0x80
tst r0, r2
beq _021D768E
ldr r0, [r4, #0x18]
add r2, r0, #1
str r2, [r4, #0x18]
ldr r0, [r4, #0x14]
cmp r2, r0
blt _021D7682
add r0, r4, #0
bl MOD70_021D76E8
cmp r0, #0
beq _021D768E
add r0, r4, #0
mov r1, #3
bl MOD70_021D7698
b _021D768E
_021D7682:
add r0, r4, #0
bl MOD70_021D7698
b _021D768E
_021D768A:
mov r0, #1
pop {r3, r4, r5, pc}
_021D768E:
mov r0, #0
pop {r3, r4, r5, pc}
nop
_021D7694: .word 0x021C48B8
thumb_func_end MOD70_021D758C
thumb_func_start MOD70_021D7698
MOD70_021D7698: ; 0x021D7698
push {r4, lr}
add r4, r0, #0
add r0, #0xc8
ldr r0, [r0]
bl MOD70_021D7930
add r4, #0xd8
str r0, [r4]
pop {r4, pc}
.align 2, 0
thumb_func_end MOD70_021D7698
thumb_func_start MOD70_021D76AC
MOD70_021D76AC: ; 0x021D76AC
push {r3, lr}
add r1, r0, #0
add r1, #0xd4
ldr r1, [r1]
add r2, r1, #1
add r1, r0, #0
add r1, #0xd4
str r2, [r1]
add r1, r0, #0
add r1, #0xd4
ldr r2, [r1]
add r1, r0, #0
add r1, #0xd0
ldr r1, [r1]
cmp r2, r1
blt _021D76D4
add r1, r0, #0
mov r2, #0
add r1, #0xd4
str r2, [r1]
_021D76D4:
add r1, r0, #0
add r2, r0, #0
add r1, #0xcc
add r2, #0xd4
ldr r1, [r1]
ldr r2, [r2]
bl MOD70_021D777C
mov r0, #1
pop {r3, pc}
thumb_func_end MOD70_021D76AC
thumb_func_start MOD70_021D76E8
MOD70_021D76E8: ; 0x021D76E8
push {r3, lr}
add r1, r0, #0
add r1, #0xd4
ldr r1, [r1]
sub r2, r1, #1
add r1, r0, #0
add r1, #0xd4
str r2, [r1]
add r1, r0, #0
add r1, #0xd4
ldr r1, [r1]
cmp r1, #0
bge _021D7710
add r1, r0, #0
add r1, #0xd0
ldr r1, [r1]
sub r2, r1, #1
add r1, r0, #0
add r1, #0xd4
str r2, [r1]
_021D7710:
add r1, r0, #0
add r2, r0, #0
add r1, #0xcc
add r2, #0xd4
ldr r1, [r1]
ldr r2, [r2]
bl MOD70_021D777C
mov r0, #1
pop {r3, pc}
thumb_func_end MOD70_021D76E8
thumb_func_start MOD70_021D7724
MOD70_021D7724: ; 0x021D7724
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
str r0, [sp]
str r1, [sp, #4]
mov r4, #0
add r5, r0, #0
mov r6, #0xc
mov r7, #0x3c
_021D7734:
add r0, r6, #0
add r1, r7, #0
bl FUN_020219F4
str r0, [r5, #0x20]
mov r0, #8
mov r1, #0x3c
bl FUN_020219F4
str r0, [r5, #0x24]
add r4, r4, #1
add r5, #0x1c
cmp r4, #6
blt _021D7734
ldr r0, [sp]
mov r2, #0
ldr r1, [sp, #4]
str r2, [r0, #0x1c]
bl MOD70_021D777C
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end MOD70_021D7724
thumb_func_start MOD70_021D7760
MOD70_021D7760: ; 0x021D7760
push {r3, r4, r5, lr}
add r5, r0, #0
mov r4, #0
_021D7766:
ldr r0, [r5, #0x20]
bl FUN_02021A20
ldr r0, [r5, #0x24]
bl FUN_02021A20
add r4, r4, #1
add r5, #0x1c
cmp r4, #6
blt _021D7766
pop {r3, r4, r5, pc}
thumb_func_end MOD70_021D7760
thumb_func_start MOD70_021D777C
MOD70_021D777C: ; 0x021D777C
push {r3, r4, r5, r6, r7, lr}
add r7, r1, #0
add r6, r0, #0
str r2, [sp]
add r0, r7, #0
add r1, r2, #0
bl FUN_0202B21C
str r0, [r6]
ldr r1, [sp]
add r0, r7, #0
bl FUN_0202B250
str r0, [r6, #0x14]
ldr r1, [sp]
add r0, r7, #0
add r2, r6, #4
bl FUN_0202B31C
ldr r0, [r6, #0x14]
mov r4, #0
cmp r0, #0
ble _021D77C4
add r5, r6, #0
add r5, #0x20
_021D77AE:
ldr r1, [sp]
add r0, r7, #0
add r2, r4, #0
add r3, r5, #0
bl FUN_0202B29C
ldr r0, [r6, #0x14]
add r4, r4, #1
add r5, #0x1c
cmp r4, r0
blt _021D77AE
_021D77C4:
mov r0, #0
str r0, [r6, #0x18]
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD70_021D777C
thumb_func_start MOD70_021D77CC
MOD70_021D77CC: ; 0x021D77CC
push {r3, r4, r5, r6, lr}
sub sp, #0x14
add r6, r1, #0
add r5, r0, #0
ldr r1, _021D7894 ; =0x00000E1C
mov r0, #0x3d
bl AllocFromHeap
add r4, r0, #0
beq _021D788C
str r5, [r4]
str r6, [r4, #4]
mov r0, #0x3d
bl FUN_02016B94
str r0, [r4, #0x10]
bl FUN_020B0FC0
mov r0, #0
str r0, [sp]
mov r1, #0x80
str r1, [sp, #4]
str r0, [sp, #8]
mov r3, #0x20
str r3, [sp, #0xc]
mov r2, #0x3d
str r2, [sp, #0x10]
add r2, r0, #0
bl FUN_02009EAC
add r1, r4, #0
mov r0, #0x40
add r1, #0x38
mov r2, #0x3d
bl FUN_02008C9C
str r0, [r4, #0x34]
ldr r2, _021D7898 ; =0x00000139
mov r0, #0
mov r1, #0x1a
mov r3, #0x3d
bl FUN_0200A86C
mov r2, #6
lsl r2, r2, #6
str r0, [r4, r2]
mov r0, #1
mov r1, #0x1a
sub r2, #0x16
mov r3, #0x3d
bl FUN_0200A86C
mov r2, #0x61
lsl r2, r2, #2
str r0, [r4, r2]
mov r0, #1
mov r1, #0x1a
add r2, #0xc8
mov r3, #0x3d
bl FUN_0200A86C
mov r1, #0x62
lsl r1, r1, #2
str r0, [r4, r1]
mov r0, #0x3d
bl FUN_0200AA80
mov r1, #0x63
lsl r1, r1, #2
str r0, [r4, r1]
sub r1, #0x8c
add r0, r1, #0
mov r1, #0x3d
bl FUN_020219F4
mov r1, #0x19
lsl r1, r1, #4
str r0, [r4, r1]
sub r1, #0x90
add r0, r1, #0
mov r1, #0x3d
bl FUN_020219F4
mov r1, #0x65
lsl r1, r1, #2
str r0, [r4, r1]
mov r0, #0x3d
bl FUN_020669C0
mov r1, #0x66
lsl r1, r1, #2
str r0, [r4, r1]
ldr r0, _021D789C ; =MOD70_021D790C
add r1, r4, #0
bl FUN_02015F10
_021D788C:
add r0, r4, #0
add sp, #0x14
pop {r3, r4, r5, r6, pc}
nop
_021D7894: .word 0x00000E1C
_021D7898: .word 0x00000139
_021D789C: .word MOD70_021D790C
thumb_func_end MOD70_021D77CC
thumb_func_start MOD70_021D78A0
MOD70_021D78A0: ; 0x021D78A0
push {r4, lr}
add r4, r0, #0
beq _021D790A
mov r0, #0
add r1, r0, #0
bl FUN_02015F10
mov r0, #0x66
lsl r0, r0, #2
ldr r0, [r4, r0]
bl FreeToHeap
mov r0, #0x65
lsl r0, r0, #2
ldr r0, [r4, r0]
bl FUN_02021A20
mov r0, #0x19
lsl r0, r0, #4
ldr r0, [r4, r0]
bl FUN_02021A20
mov r0, #0x63
lsl r0, r0, #2
ldr r0, [r4, r0]
bl FUN_0200AB18
mov r0, #0x62
lsl r0, r0, #2
ldr r0, [r4, r0]
bl FUN_0200A8B8
mov r0, #0x61
lsl r0, r0, #2
ldr r0, [r4, r0]
bl FUN_0200A8B8
mov r0, #6
lsl r0, r0, #6
ldr r0, [r4, r0]
bl FUN_0200A8B8
ldr r0, [r4, #0x34]
bl FUN_0201FD58
bl FUN_02009FA0
ldr r0, [r4, #0x10]
bl FreeToHeap
add r0, r4, #0
bl FreeToHeap
_021D790A:
pop {r4, pc}
thumb_func_end MOD70_021D78A0
thumb_func_start MOD70_021D790C
MOD70_021D790C: ; 0x021D790C
push {r3, lr}
ldr r0, [r0, #0x34]
bl FUN_0201FDEC
bl FUN_02009F80
ldr r3, _021D7928 ; =0x027E0000
ldr r1, _021D792C ; =0x00003FF8
mov r0, #1
ldr r2, [r3, r1]
orr r0, r2
str r0, [r3, r1]
pop {r3, pc}
nop
_021D7928: .word 0x027E0000
_021D792C: .word 0x00003FF8
thumb_func_end MOD70_021D790C
thumb_func_start MOD70_021D7930
MOD70_021D7930: ; 0x021D7930
push {r3, lr}
add r2, r1, #0
str r2, [r0, #0xc]
mov r1, #0
lsl r3, r2, #2
str r1, [r0, #8]
ldr r2, _021D7954 ; =0x021D82E0
add r1, r0, #0
ldr r2, [r2, r3]
add r1, #8
blx r2
cmp r0, #0
bne _021D794E
mov r0, #1
pop {r3, pc}
_021D794E:
mov r0, #0
pop {r3, pc}
nop
_021D7954: .word 0x021D82E0
thumb_func_end MOD70_021D7930
thumb_func_start MOD70_021D7958
MOD70_021D7958: ; 0x021D7958
push {r3, lr}
ldr r2, [r0, #0xc]
add r1, r0, #0
lsl r3, r2, #2
ldr r2, _021D796C ; =0x021D82E0
add r1, #8
ldr r2, [r2, r3]
blx r2
pop {r3, pc}
nop
_021D796C: .word 0x021D82E0
thumb_func_end MOD70_021D7958
thumb_func_start MOD70_021D7970
MOD70_021D7970: ; 0x021D7970
push {r4, r5, lr}
sub sp, #0xc
add r4, r1, #0
ldr r1, [r4]
add r5, r0, #0
cmp r1, #0
beq _021D7984
cmp r1, #1
beq _021D79AC
b _021D79BA
_021D7984:
bl MOD70_021D7AF4
add r0, r5, #0
bl MOD70_021D7F70
mov r0, #6
str r0, [sp]
mov r1, #1
str r1, [sp, #4]
mov r0, #0x3d
str r0, [sp, #8]
mov r0, #3
add r2, r1, #0
mov r3, #0
bl FUN_0200E1D0
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021D79BA
_021D79AC:
bl FUN_0200E308
cmp r0, #0
beq _021D79BA
add sp, #0xc
mov r0, #1
pop {r4, r5, pc}
_021D79BA:
mov r0, #0
add sp, #0xc
pop {r4, r5, pc}
thumb_func_end MOD70_021D7970
thumb_func_start MOD70_021D79C0
MOD70_021D79C0: ; 0x021D79C0
push {r4, r5, lr}
sub sp, #0xc
add r4, r1, #0
add r5, r0, #0
ldr r0, [r4]
cmp r0, #0
beq _021D79D4
cmp r0, #1
beq _021D79FA
b _021D7A14
_021D79D4:
ldr r0, _021D7A1C ; =0x0000060E
bl FUN_020054C8
mov r1, #0
mov r0, #6
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
mov r0, #0x3d
str r0, [sp, #8]
mov r0, #3
add r2, r1, #0
add r3, r1, #0
bl FUN_0200E1D0
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021D7A14
_021D79FA:
bl FUN_0200E308
cmp r0, #0
beq _021D7A14
add r0, r5, #0
bl MOD70_021D7FC4
add r0, r5, #0
bl MOD70_021D7C10
add sp, #0xc
mov r0, #1
pop {r4, r5, pc}
_021D7A14:
mov r0, #0
add sp, #0xc
pop {r4, r5, pc}
nop
_021D7A1C: .word 0x0000060E
thumb_func_end MOD70_021D79C0
thumb_func_start MOD70_021D7A20
MOD70_021D7A20: ; 0x021D7A20
push {r3, r4, r5, r6, r7, lr}
ldr r7, [r0, #4]
str r0, [sp]
ldr r0, [r7, #0x14]
mov r4, #0
cmp r0, #0
ble _021D7A82
ldr r5, [sp]
add r6, r7, #0
_021D7A32:
ldr r0, [r7, #0x18]
cmp r4, r0
bne _021D7A5E
mov r0, #0x16
lsl r0, r0, #4
ldr r0, [r5, r0]
mov r1, #0
bl FUN_02020398
mov r0, #0x16
lsl r0, r0, #4
ldr r0, [r5, r0]
mov r1, #0
bl FUN_02020310
mov r0, #1
bl FUN_02005E80
ldrh r0, [r6, #0x30]
bl FUN_02005578
b _021D7A76
_021D7A5E:
mov r0, #0x16
lsl r0, r0, #4
ldr r0, [r5, r0]
mov r1, #1
bl FUN_02020398
mov r0, #0x16
lsl r0, r0, #4
ldr r0, [r5, r0]
add r1, r4, #1
bl FUN_02020310
_021D7A76:
ldr r0, [r7, #0x14]
add r4, r4, #1
add r5, r5, #4
add r6, #0x1c
cmp r4, r0
blt _021D7A32
_021D7A82:
ldr r0, [sp]
bl MOD70_021D7D98
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end MOD70_021D7A20
thumb_func_start MOD70_021D7A8C
MOD70_021D7A8C: ; 0x021D7A8C
push {r4, lr}
add r4, r1, #0
ldr r1, [r4]
cmp r1, #3
bhi _021D7AD6
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_021D7AA2: ; jump table
.short _021D7AAA - _021D7AA2 - 2 ; case 0
.short _021D7AB6 - _021D7AA2 - 2 ; case 1
.short _021D7AC2 - _021D7AA2 - 2 ; case 2
.short _021D7ACE - _021D7AA2 - 2 ; case 3
_021D7AAA:
bl MOD70_021D7CC0
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021D7AD6
_021D7AB6:
bl MOD70_021D820C
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021D7AD6
_021D7AC2:
bl MOD70_021D80C8
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021D7AD6
_021D7ACE:
bl MOD70_021D7CB0
mov r0, #1
pop {r4, pc}
_021D7AD6:
mov r0, #0
pop {r4, pc}
.align 2, 0
thumb_func_end MOD70_021D7A8C
thumb_func_start MOD70_021D7ADC
MOD70_021D7ADC: ; 0x021D7ADC
push {r4, lr}
add r4, r0, #0
ldr r0, _021D7AF0 ; =0x000005DC
bl FUN_020054C8
add r0, r4, #0
bl MOD70_021D7D98
mov r0, #1
pop {r4, pc}
.align 2, 0
_021D7AF0: .word 0x000005DC
thumb_func_end MOD70_021D7ADC
thumb_func_start MOD70_021D7AF4
MOD70_021D7AF4: ; 0x021D7AF4
push {r3, r4, r5, lr}
sub sp, #0x10
add r5, r0, #0
ldr r0, _021D7BF8 ; =0x021D8284
bl FUN_0201E66C
ldr r2, _021D7BFC ; =0x04000304
ldrh r1, [r2]
lsr r0, r2, #0xb
orr r0, r1
strh r0, [r2]
ldr r0, _021D7C00 ; =0x021D823C
bl FUN_02016BBC
ldr r0, [r5, #0x10]
ldr r2, _021D7C04 ; =0x021D8268
mov r1, #1
mov r3, #0
bl FUN_02016C18
ldr r0, [r5, #0x10]
ldr r2, _021D7C08 ; =0x021D824C
mov r1, #2
mov r3, #0
bl FUN_02016C18
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
mov r1, #1
str r1, [sp, #8]
mov r0, #0x3d
str r0, [sp, #0xc]
ldr r2, [r5, #0x10]
mov r0, #0x65
mov r3, #2
bl FUN_0200687C
mov r1, #0
str r1, [sp]
str r1, [sp, #4]
mov r0, #1
str r0, [sp, #8]
mov r0, #0x3d
str r0, [sp, #0xc]
ldr r2, [r5, #0x10]
mov r0, #0x65
mov r3, #2
bl FUN_020068C8
mov r0, #0x40
str r0, [sp]
mov r0, #0x3d
mov r2, #0
str r0, [sp, #4]
mov r0, #0x65
mov r1, #2
add r3, r2, #0
bl FUN_02006930
mov r2, #0
str r2, [sp]
mov r1, #1
ldr r0, [r5, #0x10]
add r3, r1, #0
bl FUN_02017F48
mov r2, #0
str r2, [sp]
mov r0, #0x20
str r0, [sp, #4]
str r0, [sp, #8]
str r2, [sp, #0xc]
ldr r0, [r5, #0x10]
mov r1, #1
add r3, r2, #0
bl FUN_02018540
add r0, r5, #0
mov r1, #1
bl MOD70_021D7C2C
add r4, r0, #0
add r0, r5, #0
bl MOD70_021D7CB0
mov r0, #0
str r0, [sp]
mov r0, #0x3d
str r0, [sp, #4]
lsl r2, r4, #0x10
ldr r0, [r5, #0x10]
mov r1, #1
lsr r2, r2, #0x10
mov r3, #2
bl FUN_0200CB00
add r0, r5, #0
lsl r2, r4, #0x10
add r0, #0x14
mov r1, #0
lsr r2, r2, #0x10
mov r3, #2
bl FUN_0200CCA4
add r0, r5, #0
lsl r2, r4, #0x10
add r0, #0x24
mov r1, #0
lsr r2, r2, #0x10
mov r3, #2
bl FUN_0200CCA4
ldr r0, [r5, #0x10]
mov r1, #1
bl FUN_02017CD0
mov r3, #8
ldr r0, _021D7C0C ; =0x04000050
mov r1, #0
mov r2, #6
str r3, [sp]
bl G2x_SetBlendAlpha_
mov r0, #0x10
mov r1, #1
bl FUN_0201E6E4
add sp, #0x10
pop {r3, r4, r5, pc}
.align 2, 0
_021D7BF8: .word 0x021D8284
_021D7BFC: .word 0x04000304
_021D7C00: .word 0x021D823C
_021D7C04: .word 0x021D8268
_021D7C08: .word 0x021D824C
_021D7C0C: .word 0x04000050
thumb_func_end MOD70_021D7AF4
thumb_func_start MOD70_021D7C10
MOD70_021D7C10: ; 0x021D7C10
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x10]
mov r1, #1
bl FUN_020178A0
ldr r0, [r4, #0x10]
mov r1, #2
bl FUN_020178A0
add r0, r4, #0
bl MOD70_021D7C98
pop {r4, pc}
thumb_func_end MOD70_021D7C10
thumb_func_start MOD70_021D7C2C
MOD70_021D7C2C: ; 0x021D7C2C
push {r4, r5, lr}
sub sp, #0x14
mov r2, #1
add r5, r0, #0
str r2, [sp]
mov r0, #0x1e
str r0, [sp, #4]
mov r0, #2
add r4, r1, #0
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
lsl r0, r4, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x10]
add r1, r5, #0
ldr r0, [r5, #0x10]
add r1, #0x14
add r3, r2, #0
bl FUN_02019064
mov r0, #0x13
str r0, [sp]
mov r0, #0x1e
str r0, [sp, #4]
mov r0, #4
str r0, [sp, #8]
mov r0, #0
str r0, [sp, #0xc]
add r0, r4, #0
add r0, #0x3c
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x10]
add r1, r5, #0
mov r2, #1
ldr r0, [r5, #0x10]
add r1, #0x24
add r3, r2, #0
bl FUN_02019064
add r0, r5, #0
add r0, #0x14
bl FUN_02019270
add r5, #0x24
add r0, r5, #0
bl FUN_02019270
add r4, #0xb4
add r0, r4, #0
add sp, #0x14
pop {r4, r5, pc}
.align 2, 0
thumb_func_end MOD70_021D7C2C
thumb_func_start MOD70_021D7C98
MOD70_021D7C98: ; 0x021D7C98
push {r3, r4, r5, lr}
add r5, r0, #0
mov r4, #0
add r5, #0x14
_021D7CA0:
add r0, r5, #0
bl FUN_02019178
add r4, r4, #1
add r5, #0x10
cmp r4, #2
blt _021D7CA0
pop {r3, r4, r5, pc}
thumb_func_end MOD70_021D7C98
thumb_func_start MOD70_021D7CB0
MOD70_021D7CB0: ; 0x021D7CB0
push {r4, lr}
add r4, r0, #0
bl MOD70_021D7CE8
add r0, r4, #0
bl MOD70_021D7D98
pop {r4, pc}
thumb_func_end MOD70_021D7CB0
thumb_func_start MOD70_021D7CC0
MOD70_021D7CC0: ; 0x021D7CC0
push {r4, lr}
add r4, r0, #0
add r0, #0x14
mov r1, #0xf
bl FUN_02019620
add r0, r4, #0
add r0, #0x24
mov r1, #0xf
bl FUN_02019620
add r0, r4, #0
add r0, #0x14
bl FUN_02019548
add r4, #0x24
add r0, r4, #0
bl FUN_02019548
pop {r4, pc}
thumb_func_end MOD70_021D7CC0
thumb_func_start MOD70_021D7CE8
MOD70_021D7CE8: ; 0x021D7CE8
push {r3, r4, r5, r6, lr}
sub sp, #0xc
add r5, r0, #0
ldr r4, [r5, #4]
mov r1, #0
str r1, [sp]
mov r0, #1
str r0, [sp, #4]
mov r0, #0x63
lsl r0, r0, #2
add r6, r5, #0
ldr r0, [r5, r0]
ldr r2, [r4]
mov r3, #4
add r6, #0x14
bl FUN_0200AD38
mov r0, #0
str r0, [sp]
mov r1, #1
str r1, [sp, #4]
mov r0, #0x63
lsl r0, r0, #2
mov r2, #0x7d
ldr r3, [r4, #4]
lsl r2, r2, #4
add r2, r3, r2
ldr r0, [r5, r0]
mov r3, #4
bl FUN_0200AD38
mov r0, #0x63
lsl r0, r0, #2
ldr r0, [r5, r0]
ldr r2, [r4, #8]
mov r1, #2
bl FUN_0200B764
mov r0, #0
str r0, [sp]
mov r0, #1
str r0, [sp, #4]
mov r0, #0x63
lsl r0, r0, #2
ldr r0, [r5, r0]
ldr r2, [r4, #0xc]
mov r1, #3
mov r3, #2
bl FUN_0200AD38
mov r2, #6
lsl r2, r2, #6
ldr r0, [r5, r2]
add r2, #0x10
ldr r2, [r5, r2]
mov r1, #0
bl FUN_0200A8E0
mov r2, #0x63
lsl r2, r2, #2
add r1, r2, #0
ldr r0, [r5, r2]
add r1, #8
add r2, r2, #4
ldr r1, [r5, r1]
ldr r2, [r5, r2]
bl FUN_0200B7B8
add r0, r6, #0
mov r1, #0xf
bl FUN_02019620
mov r1, #0
str r1, [sp]
mov r2, #0xff
str r2, [sp, #4]
str r1, [sp, #8]
add r2, #0x95
ldr r2, [r5, r2]
add r0, r6, #0
add r3, r1, #0
bl FUN_0201BD84
add r0, r6, #0
bl FUN_02019548
add sp, #0xc
pop {r3, r4, r5, r6, pc}
thumb_func_end MOD70_021D7CE8
thumb_func_start MOD70_021D7D98
MOD70_021D7D98: ; 0x021D7D98
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r0, #0
ldr r4, [r5, #4]
mov r0, #0x1c
ldr r1, [r4, #0x18]
add r2, r4, #0
mul r0, r1
add r2, #0x20
add r7, r2, r0
add r0, r5, #0
str r0, [sp, #0xc]
add r0, #0x24
mov r1, #0xf
str r0, [sp, #0xc]
bl FUN_02019620
ldr r0, [r4, #0x1c]
cmp r0, #0
beq _021D7DC8
cmp r0, #1
bne _021D7DC6
b _021D7F1C
_021D7DC6:
b _021D7F66
_021D7DC8:
mov r1, #0
str r1, [sp]
mov r0, #0xff
str r0, [sp, #4]
str r1, [sp, #8]
ldr r0, [sp, #0xc]
ldr r2, [r7]
add r3, r1, #0
bl FUN_0201BD84
mov r2, #6
lsl r2, r2, #6
ldr r0, [r5, r2]
add r2, #0x10
ldr r2, [r5, r2]
mov r1, #5
bl FUN_0200A8E0
mov r1, #0
str r1, [sp]
mov r2, #0xff
str r2, [sp, #4]
str r1, [sp, #8]
add r2, #0x91
ldr r0, [sp, #0xc]
ldr r2, [r5, r2]
mov r3, #0x48
bl FUN_0201BD84
mov r2, #0x61
lsl r2, r2, #2
ldr r0, [r5, r2]
add r2, #0xc
ldrh r1, [r7, #0x10]
ldr r2, [r5, r2]
bl FUN_0200A8E0
mov r1, #0
str r1, [sp]
mov r2, #0xff
str r2, [sp, #4]
str r1, [sp, #8]
add r2, #0x91
ldr r0, [sp, #0xc]
ldr r2, [r5, r2]
mov r3, #0x5e
bl FUN_0201BD84
ldrh r0, [r7, #0x10]
ldr r1, [r7, #8]
bl FUN_02068A20
cmp r0, #0
beq _021D7E3A
cmp r0, #1
beq _021D7E4C
b _021D7E5E
_021D7E3A:
mov r2, #6
lsl r2, r2, #6
ldr r0, [r5, r2]
add r2, #0x10
ldr r2, [r5, r2]
mov r1, #3
bl FUN_0200A8E0
b _021D7E68
_021D7E4C:
mov r2, #6
lsl r2, r2, #6
ldr r0, [r5, r2]
add r2, #0x10
ldr r2, [r5, r2]
mov r1, #4
bl FUN_0200A8E0
b _021D7E68
_021D7E5E:
mov r0, #0x19
lsl r0, r0, #4
ldr r0, [r5, r0]
bl FUN_02021A4C
_021D7E68:
mov r1, #0
str r1, [sp]
mov r2, #0xff
str r2, [sp, #4]
str r1, [sp, #8]
add r2, #0x91
ldr r0, [sp, #0xc]
ldr r2, [r5, r2]
mov r3, #0xae
bl FUN_0201BD84
mov r2, #6
lsl r2, r2, #6
ldr r0, [r5, r2]
add r2, #0x10
ldr r2, [r5, r2]
mov r1, #1
bl FUN_0200A8E0
mov r0, #1
str r0, [sp]
str r0, [sp, #4]
mov r0, #0x63
lsl r0, r0, #2
ldrb r2, [r7, #0x12]
ldr r0, [r5, r0]
mov r1, #0
mov r3, #4
bl FUN_0200AD38
mov r2, #0x63
lsl r2, r2, #2
add r1, r2, #0
ldr r0, [r5, r2]
add r1, #8
add r2, r2, #4
ldr r1, [r5, r1]
ldr r2, [r5, r2]
bl FUN_0200B7B8
mov r1, #0
str r1, [sp]
mov r2, #0xff
str r2, [sp, #4]
str r1, [sp, #8]
add r2, #0x95
ldr r0, [sp, #0xc]
ldr r2, [r5, r2]
mov r3, #0xc2
bl FUN_0201BD84
mov r2, #6
lsl r2, r2, #6
ldr r0, [r5, r2]
add r2, #0x10
ldr r2, [r5, r2]
mov r1, #2
bl FUN_0200A8E0
mov r0, #0x10
str r0, [sp]
mov r2, #0xff
str r2, [sp, #4]
mov r1, #0
str r1, [sp, #8]
add r2, #0x91
ldr r0, [sp, #0xc]
ldr r2, [r5, r2]
add r3, r1, #0
bl FUN_0201BD84
mov r1, #0x19
lsl r1, r1, #4
mov r0, #0
ldr r1, [r5, r1]
add r2, r0, #0
bl FUN_02002E14
add r3, r0, #0
mov r0, #0x10
str r0, [sp]
mov r0, #0xff
str r0, [sp, #4]
mov r1, #0
str r1, [sp, #8]
ldr r0, [sp, #0xc]
ldr r2, [r7, #4]
bl FUN_0201BD84
b _021D7F66
_021D7F1C:
mov r4, #0
_021D7F1E:
ldrh r1, [r7, #0x14]
cmp r1, #0
beq _021D7F66
mov r0, #0x62
mov r2, #0x19
lsl r0, r0, #2
lsl r2, r2, #4
ldr r0, [r5, r0]
ldr r2, [r5, r2]
bl FUN_0200A8E0
lsr r0, r4, #0x1f
add r0, r4, r0
asr r0, r0, #1
lsl r0, r0, #4
str r0, [sp]
mov r0, #0xff
str r0, [sp, #4]
mov r0, #0
mov r2, #0x19
str r0, [sp, #8]
lsl r2, r2, #4
mov r3, #1
add r6, r4, #0
and r6, r3
mov r3, #0x60
ldr r0, [sp, #0xc]
ldr r2, [r5, r2]
mov r1, #0
mul r3, r6
bl FUN_0201BD84
add r4, r4, #1
add r7, r7, #2
cmp r4, #4
blt _021D7F1E
_021D7F66:
ldr r0, [sp, #0xc]
bl FUN_02019548
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end MOD70_021D7D98
thumb_func_start MOD70_021D7F70
MOD70_021D7F70: ; 0x021D7F70
push {r3, r4, lr}
sub sp, #0xc
add r4, r0, #0
mov r0, #0x3d
str r0, [sp]
mov r0, #0x1b
mov r1, #0x29
mov r2, #0
add r3, sp, #8
bl FUN_02006C30
mov r1, #0x5e
lsl r1, r1, #2
str r0, [r4, r1]
mov r0, #0x3d
str r0, [sp]
mov r0, #0x1b
mov r1, #0x2a
mov r2, #0
add r3, sp, #4
bl FUN_02006C5C
mov r1, #0x5f
lsl r1, r1, #2
str r0, [r4, r1]
add r1, #0x20
mov r2, #0x32
mov r0, #0
add r1, r4, r1
lsl r2, r2, #6
bl MIi_CpuClearFast
ldr r1, [sp, #8]
ldr r2, [sp, #4]
add r0, r4, #0
bl MOD70_021D7FF8
add r0, r4, #0
bl MOD70_021D80C8
add sp, #0xc
pop {r3, r4, pc}
thumb_func_end MOD70_021D7F70
thumb_func_start MOD70_021D7FC4
MOD70_021D7FC4: ; 0x021D7FC4
push {r3, r4, r5, r6, r7, lr}
add r7, r0, #0
mov r6, #0x16
mov r4, #0
add r5, r7, #0
lsl r6, r6, #4
_021D7FD0:
ldr r0, [r5, r6]
cmp r0, #0
beq _021D7FDA
bl FUN_0201FFC8
_021D7FDA:
add r4, r4, #1
add r5, r5, #4
cmp r4, #6
blt _021D7FD0
mov r0, #0x5e
lsl r0, r0, #2
ldr r0, [r7, r0]
bl FreeToHeap
mov r0, #0x5f
lsl r0, r0, #2
ldr r0, [r7, r0]
bl FreeToHeap
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end MOD70_021D7FC4
thumb_func_start MOD70_021D7FF8
MOD70_021D7FF8: ; 0x021D7FF8
push {r4, r5, r6, r7, lr}
sub sp, #0x94
mov r3, #0
add r5, r0, #0
str r1, [sp, #0x7c]
str r2, [sp, #0x80]
str r3, [sp, #0x74]
str r3, [sp, #0x84]
str r3, [sp, #0x88]
str r3, [sp, #0x8c]
add r0, sp, #0x90
strb r3, [r0]
add r0, sp, #0x2c
str r0, [sp, #0x70]
add r0, sp, #0x18
str r0, [sp, #0x78]
ldr r0, [r5, #0x34]
mov r1, #0x28
str r0, [sp, #0x50]
add r0, sp, #0x70
str r0, [sp, #0x54]
mov r0, #1
str r0, [sp, #0x68]
mov r0, #0x3d
str r3, [sp, #0x60]
str r0, [sp, #0x6c]
str r0, [sp]
add r2, r3, #0
mov r0, #0x1b
add r3, sp, #0x14
bl FUN_02006BB0
str r0, [sp, #0xc]
mov r0, #0x1b
mov r1, #0x27
add r2, sp, #0x10
mov r3, #0x3d
bl FUN_02006C08
mov r4, #0
ldr r6, _021D80C4 ; =0x021D82AC
str r0, [sp, #8]
str r4, [sp, #4]
add r7, r4, #0
_021D8050:
add r0, sp, #0x2c
bl FUN_020B1A24
add r0, sp, #0x18
bl FUN_020B19DC
ldr r0, [sp, #0x14]
add r1, r4, #0
mov r2, #1
add r3, sp, #0x2c
bl FUN_020B1768
ldr r0, [sp, #0x10]
add r1, r7, #0
mov r2, #1
add r3, sp, #0x18
bl FUN_020B1240
ldr r0, [r6]
lsl r0, r0, #0xc
str r0, [sp, #0x58]
ldr r0, [r6, #4]
lsl r0, r0, #0xc
str r0, [sp, #0x5c]
ldr r0, [sp, #4]
add r0, r0, #1
str r0, [sp, #0x64]
add r0, sp, #0x50
bl FUN_0201FF84
mov r1, #0x16
lsl r1, r1, #4
str r0, [r5, r1]
add r0, r1, #0
ldr r0, [r5, r0]
mov r1, #0
bl FUN_020200A0
mov r0, #0x32
lsl r0, r0, #6
add r4, r4, r0
ldr r0, [sp, #4]
add r7, #0x20
add r0, r0, #1
add r6, #8
add r5, r5, #4
str r0, [sp, #4]
cmp r0, #6
blt _021D8050
ldr r0, [sp, #8]
bl FreeToHeap
ldr r0, [sp, #0xc]
bl FreeToHeap
add sp, #0x94
pop {r4, r5, r6, r7, pc}
nop
_021D80C4: .word 0x021D82AC
thumb_func_end MOD70_021D7FF8
thumb_func_start MOD70_021D80C8
MOD70_021D80C8: ; 0x021D80C8
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x38
add r7, r0, #0
ldr r0, [r7, #4]
mov r4, #0
str r0, [sp, #0x20]
ldr r0, [r0, #0x14]
cmp r0, #0
bgt _021D80DC
b _021D81E4
_021D80DC:
ldr r5, [sp, #0x20]
str r4, [sp, #0x18]
add r0, r5, #0
str r0, [sp, #0x1c]
add r0, #0x33
str r0, [sp, #0x1c]
mov r0, #0x67
lsl r0, r0, #2
add r0, r7, r0
str r4, [sp, #0x14]
add r6, r7, #0
str r0, [sp, #0x24]
_021D80F4:
mov r0, #1
str r0, [sp]
ldr r0, [r5, #0x28]
add r2, r5, #0
str r0, [sp, #4]
mov r0, #1
str r0, [sp, #8]
ldr r0, [r5, #0x2c]
add r2, #0x32
str r0, [sp, #0xc]
mov r0, #0x66
lsl r0, r0, #2
ldrh r1, [r5, #0x30]
ldrb r2, [r2]
ldr r0, [r7, r0]
mov r3, #0x20
bl CreateMon
mov r0, #0x66
lsl r0, r0, #2
ldr r0, [r7, r0]
ldr r2, [sp, #0x1c]
mov r1, #0x70
bl FUN_02067830
mov r1, #0x66
lsl r1, r1, #2
ldr r1, [r7, r1]
add r0, sp, #0x28
mov r2, #2
bl FUN_02068B68
ldr r0, [sp, #0x24]
add r1, sp, #0x28
str r0, [sp]
ldr r0, [r5, #0x28]
ldr r3, _021D8208 ; =0x021D822C
str r0, [sp, #4]
mov r0, #0
str r0, [sp, #8]
mov r0, #2
str r0, [sp, #0xc]
ldrh r0, [r5, #0x30]
mov r2, #0x3d
str r0, [sp, #0x10]
add r0, sp, #0x28
ldrh r0, [r0]
ldrh r1, [r1, #2]
bl FUN_02012530
mov r1, #0x32
ldr r0, [sp, #0x24]
lsl r1, r1, #6
bl DC_FlushRange
mov r2, #0x32
ldr r0, [sp, #0x24]
ldr r1, [sp, #0x18]
lsl r2, r2, #6
bl GX_LoadOBJ
mov r0, #0x20
str r0, [sp]
mov r0, #0x3d
str r0, [sp, #4]
add r0, sp, #0x28
add r1, sp, #0x28
ldrh r0, [r0]
ldrh r1, [r1, #4]
ldr r3, [sp, #0x14]
mov r2, #1
bl FUN_02006930
ldr r0, [sp, #0x20]
ldr r0, [r0, #0x18]
cmp r4, r0
bne _021D81A8
mov r0, #1
bl FUN_02005E80
ldrh r0, [r5, #0x30]
bl FUN_02005578
mov r0, #0x16
lsl r0, r0, #4
ldr r0, [r6, r0]
mov r1, #0
bl FUN_02020398
b _021D81B4
_021D81A8:
mov r0, #0x16
lsl r0, r0, #4
ldr r0, [r6, r0]
mov r1, #1
bl FUN_02020398
_021D81B4:
mov r0, #0x16
lsl r0, r0, #4
ldr r0, [r6, r0]
mov r1, #1
bl FUN_020200A0
ldr r0, [sp, #0x1c]
ldr r1, [sp, #0x18]
add r0, #0x1c
str r0, [sp, #0x1c]
mov r0, #0x32
lsl r0, r0, #6
add r0, r1, r0
str r0, [sp, #0x18]
ldr r0, [sp, #0x14]
add r4, r4, #1
add r0, #0x20
str r0, [sp, #0x14]
ldr r0, [sp, #0x20]
add r5, #0x1c
ldr r0, [r0, #0x14]
add r6, r6, #4
cmp r4, r0
blt _021D80F4
_021D81E4:
cmp r4, #6
bge _021D8202
lsl r0, r4, #2
mov r6, #0x16
add r5, r7, r0
mov r7, #0
lsl r6, r6, #4
_021D81F2:
ldr r0, [r5, r6]
add r1, r7, #0
bl FUN_020200A0
add r4, r4, #1
add r5, r5, #4
cmp r4, #6
blt _021D81F2
_021D8202:
add sp, #0x38
pop {r3, r4, r5, r6, r7, pc}
nop
_021D8208: .word 0x021D822C
thumb_func_end MOD70_021D80C8
thumb_func_start MOD70_021D820C
MOD70_021D820C: ; 0x021D820C
push {r3, r4, r5, r6, r7, lr}
mov r4, #0
mov r6, #0x16
add r5, r0, #0
add r7, r4, #0
lsl r6, r6, #4
_021D8218:
ldr r0, [r5, r6]
add r1, r7, #0
bl FUN_020200A0
add r4, r4, #1
add r5, r5, #4
cmp r4, #6
blt _021D8218
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD70_021D820C
.section .rodata
; 0x021D822C
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x1F, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1E, 0x00
.byte 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00
.byte 0x78, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00
.byte 0xC8, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00
.byte 0xD8, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00
.section .data
; 0x021D82E0
.byte 0x71, 0x79, 0x1D, 0x02, 0xC1, 0x79, 0x1D, 0x02, 0x21, 0x7A, 0x1D, 0x02, 0x8D, 0x7A, 0x1D, 0x02
.byte 0xDD, 0x7A, 0x1D, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00