mirror of
https://github.com/pret/pokediamond.git
synced 2026-08-20 07:44:54 -05:00
1505 lines
27 KiB
ArmAsm
1505 lines
27 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "global.inc"
|
|
.section .text
|
|
.balign 4, 0
|
|
|
|
thumb_func_start MOD60_021D74E0
|
|
MOD60_021D74E0: ; 0x021D74E0
|
|
push {r3, r4, r5, lr}
|
|
add r4, r0, #0
|
|
bl FUN_0200628C
|
|
mov r2, #1
|
|
add r5, r0, #0
|
|
mov r0, #3
|
|
mov r1, #0x26
|
|
lsl r2, r2, #0x10
|
|
bl FUN_0201681C
|
|
mov r1, #0xad
|
|
add r0, r4, #0
|
|
lsl r1, r1, #2
|
|
mov r2, #0x26
|
|
bl FUN_02006268
|
|
mov r2, #0xad
|
|
mov r1, #0
|
|
lsl r2, r2, #2
|
|
add r4, r0, #0
|
|
bl memset
|
|
add r0, r5, #0
|
|
bl FUN_02024FD8
|
|
ldrh r1, [r4, #0x18]
|
|
mov r2, #0xf
|
|
lsl r0, r0, #0x10
|
|
bic r1, r2
|
|
lsr r2, r0, #0x10
|
|
mov r0, #0xf
|
|
and r0, r2
|
|
orr r0, r1
|
|
strh r0, [r4, #0x18]
|
|
add r0, r5, #0
|
|
bl FUN_0202502C
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x10
|
|
lsl r0, r0, #0x1f
|
|
ldrh r1, [r4, #0x18]
|
|
mov r2, #0x40
|
|
lsr r0, r0, #0x19
|
|
bic r1, r2
|
|
orr r0, r1
|
|
strh r0, [r4, #0x18]
|
|
add r0, r5, #0
|
|
bl FUN_02025048
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x10
|
|
lsl r0, r0, #0x1f
|
|
ldrh r1, [r4, #0x18]
|
|
mov r2, #0x80
|
|
lsr r0, r0, #0x18
|
|
bic r1, r2
|
|
orr r0, r1
|
|
strh r0, [r4, #0x18]
|
|
add r0, r5, #0
|
|
bl FUN_02025010
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x10
|
|
lsl r0, r0, #0x1e
|
|
ldrh r1, [r4, #0x18]
|
|
mov r2, #0x30
|
|
lsr r0, r0, #0x1a
|
|
bic r1, r2
|
|
orr r0, r1
|
|
strh r0, [r4, #0x18]
|
|
add r0, r5, #0
|
|
bl FUN_02025064
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x10
|
|
lsl r0, r0, #0x1e
|
|
ldrh r2, [r4, #0x18]
|
|
ldr r1, _021D75A8 ; =0xFFFFFCFF
|
|
lsr r0, r0, #0x16
|
|
and r1, r2
|
|
orr r0, r1
|
|
strh r0, [r4, #0x18]
|
|
add r0, r5, #0
|
|
bl FUN_02025084
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x10
|
|
lsl r0, r0, #0x1b
|
|
ldrh r2, [r4, #0x18]
|
|
ldr r1, _021D75AC ; =0xFFFF83FF
|
|
lsr r0, r0, #0x11
|
|
and r1, r2
|
|
orr r0, r1
|
|
strh r0, [r4, #0x18]
|
|
mov r0, #0x26
|
|
str r0, [r4]
|
|
str r5, [r4, #0x1c]
|
|
mov r0, #1
|
|
pop {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_021D75A8: .word 0xFFFFFCFF
|
|
_021D75AC: .word 0xFFFF83FF
|
|
thumb_func_end MOD60_021D74E0
|
|
|
|
thumb_func_start MOD60_021D75B0
|
|
MOD60_021D75B0: ; 0x021D75B0
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
bl FUN_02006278
|
|
add r4, r0, #0
|
|
ldr r0, [r4, #0x10]
|
|
lsl r0, r0, #0x1e
|
|
lsr r0, r0, #0x1e
|
|
cmp r0, #1
|
|
bne _021D7680
|
|
ldrh r1, [r4, #0x18]
|
|
mov r0, #0xf
|
|
bic r1, r0
|
|
add r0, r4, #0
|
|
add r0, #0x5e
|
|
ldrh r2, [r0]
|
|
mov r0, #0xf
|
|
and r2, r0
|
|
orr r1, r2
|
|
strh r1, [r4, #0x18]
|
|
ldrh r1, [r4, #0x18]
|
|
mov r2, #0x40
|
|
add r0, #0xf7
|
|
bic r1, r2
|
|
add r2, r4, #0
|
|
add r2, #0xb2
|
|
ldrh r2, [r2]
|
|
lsl r2, r2, #0x1f
|
|
lsr r2, r2, #0x19
|
|
orr r1, r2
|
|
strh r1, [r4, #0x18]
|
|
ldrh r0, [r4, r0]
|
|
ldrh r1, [r4, #0x18]
|
|
mov r2, #0x80
|
|
lsl r0, r0, #0x1f
|
|
bic r1, r2
|
|
lsr r0, r0, #0x18
|
|
orr r0, r1
|
|
strh r0, [r4, #0x18]
|
|
ldrh r1, [r4, #0x18]
|
|
mov r0, #0x30
|
|
bic r1, r0
|
|
ldr r0, _021D76AC ; =0x0000015A
|
|
ldrh r2, [r4, r0]
|
|
lsl r2, r2, #0x1e
|
|
lsr r2, r2, #0x1a
|
|
orr r1, r2
|
|
strh r1, [r4, #0x18]
|
|
ldrh r2, [r4, #0x18]
|
|
ldr r1, _021D76B0 ; =0xFFFFFCFF
|
|
and r1, r2
|
|
add r2, r0, #0
|
|
add r2, #0x54
|
|
ldrh r2, [r4, r2]
|
|
add r0, #0xa8
|
|
lsl r2, r2, #0x1e
|
|
lsr r2, r2, #0x16
|
|
orr r1, r2
|
|
strh r1, [r4, #0x18]
|
|
ldrh r0, [r4, r0]
|
|
ldrh r2, [r4, #0x18]
|
|
ldr r1, _021D76B4 ; =0xFFFF83FF
|
|
lsl r0, r0, #0x1b
|
|
and r1, r2
|
|
lsr r0, r0, #0x11
|
|
orr r0, r1
|
|
strh r0, [r4, #0x18]
|
|
ldrh r1, [r4, #0x18]
|
|
ldr r0, [r4, #0x1c]
|
|
lsl r1, r1, #0x1c
|
|
lsr r1, r1, #0x1c
|
|
bl FUN_02024FE0
|
|
ldrh r1, [r4, #0x18]
|
|
ldr r0, [r4, #0x1c]
|
|
lsl r1, r1, #0x19
|
|
lsr r1, r1, #0x1f
|
|
bl FUN_02025034
|
|
ldrh r1, [r4, #0x18]
|
|
ldr r0, [r4, #0x1c]
|
|
lsl r1, r1, #0x18
|
|
lsr r1, r1, #0x1f
|
|
bl FUN_02025050
|
|
ldrh r1, [r4, #0x18]
|
|
ldr r0, [r4, #0x1c]
|
|
lsl r1, r1, #0x1a
|
|
lsr r1, r1, #0x1e
|
|
bl FUN_02025018
|
|
ldrh r1, [r4, #0x18]
|
|
ldr r0, [r4, #0x1c]
|
|
lsl r1, r1, #0x16
|
|
lsr r1, r1, #0x1e
|
|
bl FUN_0202506C
|
|
ldrh r1, [r4, #0x18]
|
|
ldr r0, [r4, #0x1c]
|
|
lsl r1, r1, #0x11
|
|
lsr r1, r1, #0x1b
|
|
bl FUN_0202508C
|
|
b _021D769A
|
|
_021D7680:
|
|
cmp r0, #2
|
|
bne _021D769A
|
|
ldrh r0, [r4, #0x18]
|
|
lsl r0, r0, #0x1a
|
|
lsr r0, r0, #0x1e
|
|
bl FUN_02004D60
|
|
ldrh r1, [r4, #0x18]
|
|
mov r0, #0
|
|
lsl r1, r1, #0x16
|
|
lsr r1, r1, #0x1e
|
|
bl FUN_02024F9C
|
|
_021D769A:
|
|
add r0, r5, #0
|
|
bl FUN_0200627C
|
|
ldr r0, [r4]
|
|
bl FUN_020168D0
|
|
mov r0, #1
|
|
pop {r3, r4, r5, pc}
|
|
nop
|
|
_021D76AC: .word 0x0000015A
|
|
_021D76B0: .word 0xFFFFFCFF
|
|
_021D76B4: .word 0xFFFF83FF
|
|
thumb_func_end MOD60_021D75B0
|
|
|
|
thumb_func_start MOD60_021D76B8
|
|
MOD60_021D76B8: ; 0x021D76B8
|
|
push {r3, r4, lr}
|
|
sub sp, #0xc
|
|
bl FUN_02006278
|
|
add r4, r0, #0
|
|
ldr r1, [r4, #4]
|
|
cmp r1, #4
|
|
bhi _021D77A0
|
|
add r1, r1, r1
|
|
add r1, pc
|
|
ldrh r1, [r1, #6]
|
|
lsl r1, r1, #0x10
|
|
asr r1, r1, #0x10
|
|
add pc, r1
|
|
_021D76D4: ; jump table
|
|
.short _021D76DE - _021D76D4 - 2 ; case 0
|
|
.short _021D7706 - _021D76D4 - 2 ; case 1
|
|
.short _021D7714 - _021D76D4 - 2 ; case 2
|
|
.short _021D777E - _021D76D4 - 2 ; case 3
|
|
.short _021D778C - _021D76D4 - 2 ; case 4
|
|
_021D76DE:
|
|
bl MOD60_021D7834
|
|
cmp r0, #0
|
|
bne _021D76EC
|
|
add sp, #0xc
|
|
mov r0, #0
|
|
pop {r3, r4, pc}
|
|
_021D76EC:
|
|
mov r3, #0
|
|
str r3, [r4, #0xc]
|
|
mov r0, #6
|
|
mov r1, #1
|
|
str r0, [sp]
|
|
str r1, [sp, #4]
|
|
ldr r0, [r4]
|
|
add r2, r1, #0
|
|
str r0, [sp, #8]
|
|
mov r0, #3
|
|
bl FUN_0200E1D0
|
|
b _021D77A0
|
|
_021D7706:
|
|
bl FUN_0200E308
|
|
cmp r0, #0
|
|
bne _021D77A0
|
|
add sp, #0xc
|
|
mov r0, #0
|
|
pop {r3, r4, pc}
|
|
_021D7714:
|
|
ldr r0, _021D77AC ; =0x021C48B8
|
|
mov r1, #1
|
|
ldr r0, [r0, #0x48]
|
|
tst r1, r0
|
|
beq _021D773C
|
|
ldr r1, [r4, #0x10]
|
|
lsl r1, r1, #0x1b
|
|
lsr r1, r1, #0x1d
|
|
cmp r1, #6
|
|
bne _021D773C
|
|
ldr r0, _021D77B0 ; =0x0000061B
|
|
bl FUN_020054C8
|
|
ldr r1, [r4, #0x10]
|
|
mov r0, #3
|
|
bic r1, r0
|
|
mov r0, #1
|
|
orr r0, r1
|
|
str r0, [r4, #0x10]
|
|
b _021D774E
|
|
_021D773C:
|
|
mov r1, #2
|
|
tst r0, r1
|
|
beq _021D774E
|
|
ldr r2, [r4, #0x10]
|
|
mov r0, #3
|
|
bic r2, r0
|
|
add r0, r2, #0
|
|
orr r0, r1
|
|
str r0, [r4, #0x10]
|
|
_021D774E:
|
|
ldr r0, [r4, #0x10]
|
|
lsl r0, r0, #0x1e
|
|
lsr r0, r0, #0x1e
|
|
beq _021D7772
|
|
mov r1, #0
|
|
str r1, [r4, #0xc]
|
|
mov r0, #6
|
|
str r0, [sp]
|
|
mov r0, #1
|
|
str r0, [sp, #4]
|
|
ldr r0, [r4]
|
|
add r2, r1, #0
|
|
str r0, [sp, #8]
|
|
mov r0, #3
|
|
add r3, r1, #0
|
|
bl FUN_0200E1D0
|
|
b _021D77A0
|
|
_021D7772:
|
|
add r0, r4, #0
|
|
bl MOD60_021D801C
|
|
add sp, #0xc
|
|
mov r0, #0
|
|
pop {r3, r4, pc}
|
|
_021D777E:
|
|
bl FUN_0200E308
|
|
cmp r0, #0
|
|
bne _021D77A0
|
|
add sp, #0xc
|
|
mov r0, #0
|
|
pop {r3, r4, pc}
|
|
_021D778C:
|
|
bl MOD60_021D78E8
|
|
cmp r0, #0
|
|
beq _021D779A
|
|
add sp, #0xc
|
|
mov r0, #1
|
|
pop {r3, r4, pc}
|
|
_021D779A:
|
|
add sp, #0xc
|
|
mov r0, #0
|
|
pop {r3, r4, pc}
|
|
_021D77A0:
|
|
ldr r0, [r4, #4]
|
|
add r0, r0, #1
|
|
str r0, [r4, #4]
|
|
mov r0, #0
|
|
add sp, #0xc
|
|
pop {r3, r4, pc}
|
|
.align 2, 0
|
|
_021D77AC: .word 0x021C48B8
|
|
_021D77B0: .word 0x0000061B
|
|
thumb_func_end MOD60_021D76B8
|
|
|
|
thumb_func_start MOD60_021D77B4
|
|
MOD60_021D77B4: ; 0x021D77B4
|
|
push {r4, lr}
|
|
sub sp, #0x28
|
|
ldr r4, _021D77D0 ; =0x021D8140
|
|
add r3, sp, #0
|
|
mov r2, #5
|
|
_021D77BE:
|
|
ldmia r4!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
sub r2, r2, #1
|
|
bne _021D77BE
|
|
add r0, sp, #0
|
|
bl FUN_0201E66C
|
|
add sp, #0x28
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_021D77D0: .word 0x021D8140
|
|
thumb_func_end MOD60_021D77B4
|
|
|
|
thumb_func_start MOD60_021D77D4
|
|
MOD60_021D77D4: ; 0x021D77D4
|
|
push {r4, lr}
|
|
sub sp, #8
|
|
add r4, r0, #0
|
|
ldr r0, [r4, #0x10]
|
|
lsl r0, r0, #0xa
|
|
lsr r0, r0, #0x1f
|
|
beq _021D7804
|
|
ldr r2, _021D7824 ; =0x00000202
|
|
mov r1, #1
|
|
ldrh r0, [r4, r2]
|
|
add r2, #0x39
|
|
mov r3, #0xf
|
|
lsl r0, r0, #0x18
|
|
lsr r0, r0, #0x18
|
|
str r0, [sp]
|
|
ldr r0, [r4]
|
|
str r0, [sp, #4]
|
|
ldr r0, [r4, #0x14]
|
|
bl FUN_0200CD68
|
|
ldr r1, [r4, #0x10]
|
|
ldr r0, _021D7828 ; =0xFFDFFFFF
|
|
and r0, r1
|
|
str r0, [r4, #0x10]
|
|
_021D7804:
|
|
bl FUN_0200BC30
|
|
bl FUN_020AEEB8
|
|
ldr r0, [r4, #0x14]
|
|
bl FUN_0201AB60
|
|
ldr r3, _021D782C ; =0x027E0000
|
|
ldr r1, _021D7830 ; =0x00003FF8
|
|
mov r0, #1
|
|
ldr r2, [r3, r1]
|
|
orr r0, r2
|
|
str r0, [r3, r1]
|
|
add sp, #8
|
|
pop {r4, pc}
|
|
nop
|
|
_021D7824: .word 0x00000202
|
|
_021D7828: .word 0xFFDFFFFF
|
|
_021D782C: .word 0x027E0000
|
|
_021D7830: .word 0x00003FF8
|
|
thumb_func_end MOD60_021D77D4
|
|
|
|
thumb_func_start MOD60_021D7834
|
|
MOD60_021D7834: ; 0x021D7834
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldr r1, [r4, #8]
|
|
cmp r1, #0
|
|
beq _021D7848
|
|
cmp r1, #1
|
|
beq _021D7888
|
|
cmp r1, #2
|
|
beq _021D78A2
|
|
b _021D78D0
|
|
_021D7848:
|
|
mov r0, #0
|
|
add r1, r0, #0
|
|
bl FUN_02015F10
|
|
bl FUN_02015F1C
|
|
bl FUN_0201E6D8
|
|
bl FUN_0201E740
|
|
mov r2, #1
|
|
lsl r2, r2, #0x1a
|
|
ldr r1, [r2]
|
|
ldr r0, _021D78DC ; =0xFFFFE0FF
|
|
and r1, r0
|
|
str r1, [r2]
|
|
ldr r2, _021D78E0 ; =0x04001000
|
|
ldr r1, [r2]
|
|
and r0, r1
|
|
str r0, [r2]
|
|
bl MOD60_021D77B4
|
|
mov r0, #0
|
|
bl FUN_0200E388
|
|
mov r0, #1
|
|
bl FUN_0200E388
|
|
add r0, r4, #0
|
|
bl MOD60_021D7990
|
|
b _021D78D0
|
|
_021D7888:
|
|
bl MOD60_021D7A40
|
|
ldr r3, [r4]
|
|
mov r0, #1
|
|
mov r1, #0x1a
|
|
mov r2, #0xce
|
|
bl FUN_0200A86C
|
|
str r0, [r4, #0x20]
|
|
add r0, r4, #0
|
|
bl MOD60_021D7DF8
|
|
b _021D78D0
|
|
_021D78A2:
|
|
bl MOD60_021D7BA4
|
|
add r0, r4, #0
|
|
bl MOD60_021D7D18
|
|
ldr r1, [r4]
|
|
mov r0, #0x20
|
|
bl FUN_0201C24C
|
|
mov r0, #0x10
|
|
mov r1, #1
|
|
bl FUN_0201E6E4
|
|
bl FUN_02033F20
|
|
ldr r0, _021D78E4 ; =MOD60_021D77D4
|
|
add r1, r4, #0
|
|
bl FUN_02015F10
|
|
mov r0, #0
|
|
str r0, [r4, #8]
|
|
mov r0, #1
|
|
pop {r4, pc}
|
|
_021D78D0:
|
|
ldr r0, [r4, #8]
|
|
add r0, r0, #1
|
|
str r0, [r4, #8]
|
|
mov r0, #0
|
|
pop {r4, pc}
|
|
nop
|
|
_021D78DC: .word 0xFFFFE0FF
|
|
_021D78E0: .word 0x04001000
|
|
_021D78E4: .word MOD60_021D77D4
|
|
thumb_func_end MOD60_021D7834
|
|
|
|
thumb_func_start MOD60_021D78E8
|
|
MOD60_021D78E8: ; 0x021D78E8
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
str r0, [sp]
|
|
ldr r0, [r0, #8]
|
|
cmp r0, #0
|
|
beq _021D78F8
|
|
cmp r0, #1
|
|
beq _021D7946
|
|
b _021D7978
|
|
_021D78F8:
|
|
bl FUN_0201C29C
|
|
ldr r0, [sp]
|
|
bl MOD60_021D7CD4
|
|
ldr r6, [sp]
|
|
mov r7, #0
|
|
_021D7906:
|
|
add r0, r6, #0
|
|
add r0, #0x5c
|
|
ldrh r0, [r0]
|
|
mov r4, #0
|
|
cmp r0, #0
|
|
ble _021D7928
|
|
add r5, r6, #0
|
|
_021D7914:
|
|
ldr r0, [r5, #0x60]
|
|
bl FUN_02021A20
|
|
add r0, r6, #0
|
|
add r0, #0x5c
|
|
ldrh r0, [r0]
|
|
add r4, r4, #1
|
|
add r5, r5, #4
|
|
cmp r4, r0
|
|
blt _021D7914
|
|
_021D7928:
|
|
add r7, r7, #1
|
|
add r6, #0x54
|
|
cmp r7, #7
|
|
blt _021D7906
|
|
ldr r0, [sp]
|
|
ldr r0, [r0, #0x20]
|
|
bl FUN_0200A8B8
|
|
ldr r0, [sp]
|
|
bl MOD60_021D7B98
|
|
ldr r0, [sp]
|
|
bl MOD60_021D7A14
|
|
b _021D7978
|
|
_021D7946:
|
|
mov r0, #0
|
|
add r1, r0, #0
|
|
bl FUN_02015F10
|
|
bl FUN_02015F1C
|
|
bl FUN_0201E6D8
|
|
bl FUN_0201E740
|
|
mov r2, #1
|
|
lsl r2, r2, #0x1a
|
|
ldr r1, [r2]
|
|
ldr r0, _021D7988 ; =0xFFFFE0FF
|
|
and r1, r0
|
|
str r1, [r2]
|
|
ldr r2, _021D798C ; =0x04001000
|
|
ldr r1, [r2]
|
|
and r0, r1
|
|
str r0, [r2]
|
|
ldr r0, [sp]
|
|
mov r1, #0
|
|
str r1, [r0, #8]
|
|
mov r0, #1
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_021D7978:
|
|
ldr r0, [sp]
|
|
ldr r0, [r0, #8]
|
|
add r1, r0, #1
|
|
ldr r0, [sp]
|
|
str r1, [r0, #8]
|
|
mov r0, #0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021D7988: .word 0xFFFFE0FF
|
|
_021D798C: .word 0x04001000
|
|
thumb_func_end MOD60_021D78E8
|
|
|
|
thumb_func_start MOD60_021D7990
|
|
MOD60_021D7990: ; 0x021D7990
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x80
|
|
add r6, r0, #0
|
|
ldr r0, [r6]
|
|
bl FUN_02016B94
|
|
add r3, sp, #0
|
|
ldr r4, _021D7A08 ; =0x021D8114
|
|
str r0, [r6, #0x14]
|
|
add r2, r3, #0
|
|
ldmia r4!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r4!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
add r0, r2, #0
|
|
bl FUN_02016BBC
|
|
ldr r4, _021D7A0C ; =0x021D8168
|
|
add r3, sp, #0x10
|
|
mov r2, #0xe
|
|
_021D79B8:
|
|
ldmia r4!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
sub r2, r2, #1
|
|
bne _021D79B8
|
|
ldr r5, _021D7A10 ; =0x021D8104
|
|
mov r7, #0
|
|
add r4, sp, #0x10
|
|
_021D79C6:
|
|
ldr r1, [r5]
|
|
ldr r0, [r6, #0x14]
|
|
lsl r1, r1, #0x18
|
|
lsr r1, r1, #0x18
|
|
add r2, r4, #0
|
|
mov r3, #0
|
|
bl FUN_02016C18
|
|
ldr r1, [r5]
|
|
ldr r0, [r6, #0x14]
|
|
lsl r1, r1, #0x18
|
|
lsr r1, r1, #0x18
|
|
bl FUN_02018744
|
|
add r7, r7, #1
|
|
add r4, #0x1c
|
|
add r5, r5, #4
|
|
cmp r7, #4
|
|
blt _021D79C6
|
|
mov r0, #0
|
|
ldr r3, [r6]
|
|
mov r1, #0x20
|
|
add r2, r0, #0
|
|
bl FUN_02017F18
|
|
ldr r3, [r6]
|
|
mov r0, #4
|
|
mov r1, #0x20
|
|
mov r2, #0
|
|
bl FUN_02017F18
|
|
add sp, #0x80
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_021D7A08: .word 0x021D8114
|
|
_021D7A0C: .word 0x021D8168
|
|
_021D7A10: .word 0x021D8104
|
|
thumb_func_end MOD60_021D7990
|
|
|
|
thumb_func_start MOD60_021D7A14
|
|
MOD60_021D7A14: ; 0x021D7A14
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldr r0, [r4, #0x14]
|
|
mov r1, #4
|
|
bl FUN_020178A0
|
|
ldr r0, [r4, #0x14]
|
|
mov r1, #2
|
|
bl FUN_020178A0
|
|
ldr r0, [r4, #0x14]
|
|
mov r1, #1
|
|
bl FUN_020178A0
|
|
ldr r0, [r4, #0x14]
|
|
mov r1, #0
|
|
bl FUN_020178A0
|
|
ldr r0, [r4, #0x14]
|
|
bl FreeToHeap
|
|
pop {r4, pc}
|
|
thumb_func_end MOD60_021D7A14
|
|
|
|
thumb_func_start MOD60_021D7A40
|
|
MOD60_021D7A40: ; 0x021D7A40
|
|
push {r3, r4, r5, r6, lr}
|
|
sub sp, #0x24
|
|
add r5, r0, #0
|
|
ldr r1, [r5]
|
|
mov r0, #0x49
|
|
bl NARC_ctor
|
|
add r4, r0, #0
|
|
mov r0, #0x49
|
|
mov r1, #1
|
|
bl GetNarcMemberSizeByIdPair
|
|
add r1, r0, #0
|
|
ldr r0, [r5]
|
|
bl AllocFromHeapAtEnd
|
|
add r6, r0, #0
|
|
add r0, r4, #0
|
|
mov r1, #1
|
|
add r2, r6, #0
|
|
bl NARC_ReadWholeMember
|
|
add r0, r6, #0
|
|
add r1, sp, #0x20
|
|
bl FUN_020B0088
|
|
ldr r3, [sp, #0x20]
|
|
mov r1, #0
|
|
str r1, [sp]
|
|
ldr r2, [r3, #0x14]
|
|
ldr r0, [r5, #0x14]
|
|
ldr r3, [r3, #0x10]
|
|
bl FUN_02017E14
|
|
ldr r3, [sp, #0x20]
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
ldr r2, [r3, #0x14]
|
|
ldr r0, [r5, #0x14]
|
|
ldr r3, [r3, #0x10]
|
|
mov r1, #4
|
|
bl FUN_02017E14
|
|
add r0, r6, #0
|
|
bl FreeToHeap
|
|
mov r0, #0x49
|
|
mov r1, #0
|
|
bl GetNarcMemberSizeByIdPair
|
|
add r1, r0, #0
|
|
ldr r0, [r5]
|
|
bl AllocFromHeapAtEnd
|
|
add r6, r0, #0
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
add r2, r6, #0
|
|
bl NARC_ReadWholeMember
|
|
add r0, r6, #0
|
|
add r1, sp, #0x1c
|
|
bl FUN_020B0138
|
|
ldr r1, [sp, #0x1c]
|
|
mov r0, #0
|
|
ldr r1, [r1, #0xc]
|
|
mov r2, #0x20
|
|
add r3, r0, #0
|
|
bl FUN_02017FB4
|
|
ldr r1, [sp, #0x1c]
|
|
mov r0, #4
|
|
ldr r1, [r1, #0xc]
|
|
mov r2, #0x20
|
|
mov r3, #0
|
|
bl FUN_02017FB4
|
|
add r0, r6, #0
|
|
bl FreeToHeap
|
|
mov r0, #0x49
|
|
mov r1, #2
|
|
bl GetNarcMemberSizeByIdPair
|
|
add r1, r0, #0
|
|
ldr r0, [r5]
|
|
bl AllocFromHeap
|
|
str r0, [r5, #0x24]
|
|
ldr r2, [r5, #0x24]
|
|
add r0, r4, #0
|
|
mov r1, #2
|
|
bl NARC_ReadWholeMember
|
|
add r1, r5, #0
|
|
ldr r0, [r5, #0x24]
|
|
add r1, #0x28
|
|
bl FUN_020B0180
|
|
add r0, r4, #0
|
|
bl NARC_dtor
|
|
mov r3, #0
|
|
str r3, [sp]
|
|
mov r0, #0x20
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
mov r0, #0x11
|
|
str r0, [sp, #0xc]
|
|
ldr r0, [r5, #0x14]
|
|
mov r1, #2
|
|
mov r2, #1
|
|
bl FUN_02018540
|
|
mov r3, #0
|
|
str r3, [sp]
|
|
mov r0, #0x20
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
mov r0, #0x11
|
|
str r0, [sp, #0xc]
|
|
ldr r0, [r5, #0x14]
|
|
mov r1, #4
|
|
mov r2, #1
|
|
bl FUN_02018540
|
|
ldr r0, [r5, #0x28]
|
|
mov r1, #0x20
|
|
str r1, [sp]
|
|
mov r1, #2
|
|
str r1, [sp, #4]
|
|
add r1, r0, #0
|
|
add r1, #0xc
|
|
str r1, [sp, #8]
|
|
mov r1, #0
|
|
str r1, [sp, #0xc]
|
|
str r1, [sp, #0x10]
|
|
ldrh r2, [r0]
|
|
add r3, r1, #0
|
|
lsl r2, r2, #0x15
|
|
lsr r2, r2, #0x18
|
|
str r2, [sp, #0x14]
|
|
ldrh r0, [r0, #2]
|
|
add r2, r1, #0
|
|
lsl r0, r0, #0x15
|
|
lsr r0, r0, #0x18
|
|
str r0, [sp, #0x18]
|
|
ldr r0, [r5, #0x14]
|
|
bl FUN_020181EC
|
|
mov r2, #3
|
|
add r3, r2, #0
|
|
ldr r0, [r5, #0x14]
|
|
mov r1, #0
|
|
sub r3, #0x1b
|
|
bl FUN_020179E0
|
|
ldr r0, [r5, #0x14]
|
|
mov r1, #2
|
|
bl FUN_0201AC68
|
|
ldr r0, [r5, #0x14]
|
|
mov r1, #0
|
|
bl FUN_0201AC68
|
|
ldr r0, [r5, #0x14]
|
|
mov r1, #4
|
|
bl FUN_0201AC68
|
|
add sp, #0x24
|
|
pop {r3, r4, r5, r6, pc}
|
|
thumb_func_end MOD60_021D7A40
|
|
|
|
thumb_func_start MOD60_021D7B98
|
|
MOD60_021D7B98: ; 0x021D7B98
|
|
ldr r3, _021D7BA0 ; =FreeToHeap
|
|
ldr r0, [r0, #0x24]
|
|
bx r3
|
|
nop
|
|
_021D7BA0: .word FreeToHeap
|
|
thumb_func_end MOD60_021D7B98
|
|
|
|
thumb_func_start MOD60_021D7BA4
|
|
MOD60_021D7BA4: ; 0x021D7BA4
|
|
push {r3, r4, lr}
|
|
sub sp, #0x14
|
|
add r4, r0, #0
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
mov r0, #0xc
|
|
str r0, [sp, #4]
|
|
mov r0, #2
|
|
str r0, [sp, #8]
|
|
mov r0, #0xd
|
|
str r0, [sp, #0xc]
|
|
mov r0, #0xa
|
|
str r0, [sp, #0x10]
|
|
add r1, r4, #0
|
|
mov r2, #1
|
|
ldr r0, [r4, #0x14]
|
|
add r1, #0x2c
|
|
add r3, r2, #0
|
|
bl FUN_02019064
|
|
mov r0, #3
|
|
str r0, [sp]
|
|
mov r0, #0x1e
|
|
str r0, [sp, #4]
|
|
mov r0, #0xe
|
|
str r0, [sp, #8]
|
|
mov r0, #0xd
|
|
str r0, [sp, #0xc]
|
|
mov r0, #0x22
|
|
str r0, [sp, #0x10]
|
|
add r1, r4, #0
|
|
mov r2, #1
|
|
ldr r0, [r4, #0x14]
|
|
add r1, #0x3c
|
|
add r3, r2, #0
|
|
bl FUN_02019064
|
|
mov r0, #0x13
|
|
str r0, [sp]
|
|
mov r0, #0x1b
|
|
str r0, [sp, #4]
|
|
mov r0, #4
|
|
str r0, [sp, #8]
|
|
mov r0, #0xc
|
|
str r0, [sp, #0xc]
|
|
ldr r0, _021D7CC8 ; =0x000001C6
|
|
add r1, r4, #0
|
|
str r0, [sp, #0x10]
|
|
ldr r0, [r4, #0x14]
|
|
add r1, #0x4c
|
|
mov r2, #1
|
|
mov r3, #2
|
|
bl FUN_02019064
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
ldr r0, [r4]
|
|
ldr r2, _021D7CCC ; =0x00000232
|
|
str r0, [sp, #4]
|
|
ldr r0, [r4, #0x14]
|
|
mov r1, #1
|
|
mov r3, #0xe
|
|
bl FUN_0200CB00
|
|
ldrh r0, [r4, #0x18]
|
|
ldr r2, _021D7CD0 ; =0x0000023B
|
|
mov r1, #1
|
|
lsl r0, r0, #0x11
|
|
lsr r0, r0, #0x1b
|
|
lsl r0, r0, #0x18
|
|
lsr r0, r0, #0x18
|
|
str r0, [sp]
|
|
ldr r0, [r4]
|
|
mov r3, #0xf
|
|
str r0, [sp, #4]
|
|
ldr r0, [r4, #0x14]
|
|
bl FUN_0200CD68
|
|
mov r1, #0x1a
|
|
ldr r2, [r4]
|
|
mov r0, #0
|
|
lsl r1, r1, #4
|
|
bl FUN_02002ED0
|
|
mov r1, #0x1a
|
|
ldr r2, [r4]
|
|
mov r0, #4
|
|
lsl r1, r1, #4
|
|
bl FUN_02002ED0
|
|
mov r1, #6
|
|
ldr r2, [r4]
|
|
mov r0, #0
|
|
lsl r1, r1, #6
|
|
bl FUN_02002EEC
|
|
mov r1, #6
|
|
ldr r2, [r4]
|
|
mov r0, #4
|
|
lsl r1, r1, #6
|
|
bl FUN_02002EEC
|
|
add r0, r4, #0
|
|
add r0, #0x2c
|
|
mov r1, #0
|
|
bl FUN_02019620
|
|
add r0, r4, #0
|
|
add r0, #0x3c
|
|
mov r1, #0xff
|
|
bl FUN_02019620
|
|
add r0, r4, #0
|
|
add r0, #0x4c
|
|
mov r1, #0xff
|
|
bl FUN_02019620
|
|
add r0, r4, #0
|
|
add r0, #0x4c
|
|
bl FUN_020192B8
|
|
add r0, r4, #0
|
|
add r0, #0x3c
|
|
bl FUN_020192B8
|
|
add r0, r4, #0
|
|
add r0, #0x2c
|
|
bl FUN_020192B8
|
|
add r0, r4, #0
|
|
ldr r2, _021D7CCC ; =0x00000232
|
|
add r0, #0x3c
|
|
mov r1, #1
|
|
mov r3, #0xe
|
|
bl FUN_0200CCA4
|
|
add r4, #0x4c
|
|
ldr r2, _021D7CD0 ; =0x0000023B
|
|
add r0, r4, #0
|
|
mov r1, #1
|
|
mov r3, #0xf
|
|
bl FUN_0200D0BC
|
|
add sp, #0x14
|
|
pop {r3, r4, pc}
|
|
nop
|
|
_021D7CC8: .word 0x000001C6
|
|
_021D7CCC: .word 0x00000232
|
|
_021D7CD0: .word 0x0000023B
|
|
thumb_func_end MOD60_021D7BA4
|
|
|
|
thumb_func_start MOD60_021D7CD4
|
|
MOD60_021D7CD4: ; 0x021D7CD4
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r5, r0, #0
|
|
add r0, #0x3c
|
|
mov r1, #0
|
|
bl FUN_0200CCF8
|
|
add r0, r5, #0
|
|
add r0, #0x4c
|
|
mov r1, #0
|
|
bl FUN_0200D0E0
|
|
mov r6, #0
|
|
add r5, #0x2c
|
|
add r7, r6, #0
|
|
_021D7CF0:
|
|
lsl r4, r6, #4
|
|
add r0, r5, r4
|
|
bl FUN_02019570
|
|
add r0, r5, r4
|
|
add r1, r7, #0
|
|
bl FUN_02019620
|
|
add r0, r5, r4
|
|
bl FUN_020192B8
|
|
add r0, r5, r4
|
|
bl FUN_02019178
|
|
add r0, r6, #1
|
|
lsl r0, r0, #0x10
|
|
lsr r6, r0, #0x10
|
|
cmp r6, #3
|
|
blo _021D7CF0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
thumb_func_end MOD60_021D7CD4
|
|
|
|
thumb_func_start MOD60_021D7D18
|
|
MOD60_021D7D18: ; 0x021D7D18
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x10
|
|
add r6, r0, #0
|
|
ldr r1, [r6]
|
|
mov r0, #0x28
|
|
bl FUN_020219F4
|
|
add r5, r0, #0
|
|
ldr r0, [r6, #0x20]
|
|
mov r1, #0
|
|
add r2, r5, #0
|
|
bl FUN_0200A8E0
|
|
mov r3, #2
|
|
str r3, [sp]
|
|
mov r1, #0
|
|
ldr r0, _021D7DEC ; =0x00010200
|
|
str r1, [sp, #4]
|
|
str r0, [sp, #8]
|
|
add r0, r6, #0
|
|
add r0, #0x2c
|
|
add r2, r5, #0
|
|
str r1, [sp, #0xc]
|
|
bl FUN_0201BDE0
|
|
add r0, r5, #0
|
|
bl FUN_02021A4C
|
|
ldr r1, _021D7DF0 ; =gGameVersion
|
|
ldr r0, [r6, #0x20]
|
|
ldrb r1, [r1]
|
|
add r2, r5, #0
|
|
sub r1, #9
|
|
bl FUN_0200A8E0
|
|
mov r1, #0
|
|
str r1, [sp]
|
|
ldr r0, _021D7DF4 ; =0x0001020F
|
|
str r1, [sp, #4]
|
|
str r0, [sp, #8]
|
|
add r0, r6, #0
|
|
str r1, [sp, #0xc]
|
|
add r0, #0x4c
|
|
mov r1, #1
|
|
add r2, r5, #0
|
|
mov r3, #4
|
|
bl FUN_0201BDE0
|
|
add r7, r6, #0
|
|
mov r4, #0
|
|
add r7, #0x3c
|
|
_021D7D7E:
|
|
add r0, r5, #0
|
|
bl FUN_02021A4C
|
|
ldr r0, [r6, #0x20]
|
|
add r1, r4, #3
|
|
add r2, r5, #0
|
|
bl FUN_0200A8E0
|
|
lsl r0, r4, #4
|
|
str r0, [sp]
|
|
mov r0, #0xff
|
|
str r0, [sp, #4]
|
|
ldr r0, _021D7DF4 ; =0x0001020F
|
|
mov r1, #0
|
|
str r0, [sp, #8]
|
|
mov r0, #0
|
|
str r0, [sp, #0xc]
|
|
add r0, r7, #0
|
|
add r2, r5, #0
|
|
mov r3, #4
|
|
bl FUN_0201BDE0
|
|
add r0, r4, #1
|
|
lsl r0, r0, #0x10
|
|
lsr r4, r0, #0x10
|
|
cmp r4, #7
|
|
blo _021D7D7E
|
|
mov r4, #0
|
|
_021D7DB6:
|
|
add r0, r6, #0
|
|
add r1, r4, #0
|
|
bl MOD60_021D7EA4
|
|
add r0, r4, #1
|
|
lsl r0, r0, #0x10
|
|
lsr r4, r0, #0x10
|
|
cmp r4, #7
|
|
blo _021D7DB6
|
|
add r0, r6, #0
|
|
add r0, #0x2c
|
|
bl FUN_020191D0
|
|
add r0, r6, #0
|
|
add r0, #0x3c
|
|
bl FUN_020191D0
|
|
add r6, #0x4c
|
|
add r0, r6, #0
|
|
bl FUN_020191D0
|
|
add r0, r5, #0
|
|
bl FUN_02021A20
|
|
add sp, #0x10
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021D7DEC: .word 0x00010200
|
|
_021D7DF0: .word gGameVersion
|
|
_021D7DF4: .word 0x0001020F
|
|
thumb_func_end MOD60_021D7D18
|
|
|
|
thumb_func_start MOD60_021D7DF8
|
|
MOD60_021D7DF8: ; 0x021D7DF8
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #8
|
|
mov r5, #0
|
|
add r6, r0, #0
|
|
str r5, [sp, #4]
|
|
_021D7E02:
|
|
ldr r0, [sp, #4]
|
|
ldr r2, [sp, #4]
|
|
lsl r7, r0, #2
|
|
ldr r0, _021D7E9C ; =0x021D8124
|
|
mov r1, #0x54
|
|
mul r1, r2
|
|
add r1, r6, r1
|
|
str r1, [sp]
|
|
ldr r0, [r0, r7]
|
|
add r1, #0x5c
|
|
mov r4, #0
|
|
strh r0, [r1]
|
|
cmp r0, #0
|
|
ble _021D7E44
|
|
_021D7E1E:
|
|
add r0, r5, #1
|
|
lsl r0, r0, #0x10
|
|
add r1, r5, #0
|
|
lsr r5, r0, #0x10
|
|
ldr r0, [r6, #0x20]
|
|
add r1, #0xa
|
|
bl FUN_0200A914
|
|
ldr r1, [sp]
|
|
lsl r2, r4, #2
|
|
add r1, r1, r2
|
|
str r0, [r1, #0x60]
|
|
add r0, r4, #1
|
|
lsl r0, r0, #0x10
|
|
lsr r4, r0, #0x10
|
|
ldr r0, _021D7E9C ; =0x021D8124
|
|
ldr r0, [r0, r7]
|
|
cmp r4, r0
|
|
blt _021D7E1E
|
|
_021D7E44:
|
|
ldr r0, [sp, #4]
|
|
add r0, r0, #1
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x10
|
|
str r0, [sp, #4]
|
|
cmp r0, #7
|
|
blo _021D7E02
|
|
ldrh r0, [r6, #0x18]
|
|
lsl r0, r0, #0x1c
|
|
lsr r1, r0, #0x1c
|
|
add r0, r6, #0
|
|
add r0, #0x5e
|
|
strh r1, [r0]
|
|
ldrh r0, [r6, #0x18]
|
|
lsl r0, r0, #0x19
|
|
lsr r1, r0, #0x1f
|
|
add r0, r6, #0
|
|
add r0, #0xb2
|
|
strh r1, [r0]
|
|
ldrh r0, [r6, #0x18]
|
|
ldr r1, _021D7EA0 ; =0x00000106
|
|
lsl r0, r0, #0x18
|
|
lsr r0, r0, #0x1f
|
|
strh r0, [r6, r1]
|
|
ldrh r0, [r6, #0x18]
|
|
lsl r0, r0, #0x1a
|
|
lsr r2, r0, #0x1e
|
|
add r0, r1, #0
|
|
add r0, #0x54
|
|
strh r2, [r6, r0]
|
|
ldrh r0, [r6, #0x18]
|
|
lsl r0, r0, #0x16
|
|
lsr r2, r0, #0x1e
|
|
add r0, r1, #0
|
|
add r0, #0xa8
|
|
strh r2, [r6, r0]
|
|
ldrh r0, [r6, #0x18]
|
|
add r1, #0xfc
|
|
lsl r0, r0, #0x11
|
|
lsr r0, r0, #0x1b
|
|
strh r0, [r6, r1]
|
|
add sp, #8
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021D7E9C: .word 0x021D8124
|
|
_021D7EA0: .word 0x00000106
|
|
thumb_func_end MOD60_021D7DF8
|
|
|
|
thumb_func_start MOD60_021D7EA4
|
|
MOD60_021D7EA4: ; 0x021D7EA4
|
|
push {r4, r5, r6, r7, lr}
|
|
sub sp, #0x24
|
|
str r0, [sp, #0x10]
|
|
lsl r0, r1, #4
|
|
str r0, [sp, #0x18]
|
|
mov r0, #6
|
|
str r1, [sp, #0x14]
|
|
lsl r0, r0, #6
|
|
str r0, [sp]
|
|
mov r0, #0x10
|
|
str r0, [sp, #4]
|
|
ldr r3, _021D8010 ; =0x021D80FC
|
|
ldr r2, [sp, #0x14]
|
|
ldr r0, [sp, #0x10]
|
|
ldrsb r2, [r3, r2]
|
|
ldr r3, [sp, #0x18]
|
|
add r0, #0x3c
|
|
add r2, #0x64
|
|
lsl r2, r2, #0x10
|
|
lsl r3, r3, #0x10
|
|
mov r1, #0xff
|
|
lsr r2, r2, #0x10
|
|
lsr r3, r3, #0x10
|
|
bl FUN_020196F4
|
|
ldr r0, [sp, #0x14]
|
|
cmp r0, #5
|
|
bne _021D7F26
|
|
add r2, r0, #0
|
|
ldr r0, [sp, #0x18]
|
|
mov r1, #0x54
|
|
str r0, [sp]
|
|
mov r0, #0xff
|
|
mul r2, r1
|
|
ldr r3, [sp, #0x10]
|
|
str r0, [sp, #4]
|
|
ldr r0, _021D8014 ; =0x0003040F
|
|
add r3, r3, r2
|
|
str r0, [sp, #8]
|
|
mov r1, #0
|
|
add r2, r3, #0
|
|
ldr r0, [sp, #0x10]
|
|
str r1, [sp, #0xc]
|
|
add r2, #0x5e
|
|
ldrh r2, [r2]
|
|
add r0, #0x3c
|
|
lsl r2, r2, #2
|
|
add r2, r3, r2
|
|
ldr r2, [r2, #0x60]
|
|
mov r3, #0x94
|
|
bl FUN_0201BDE0
|
|
ldr r0, [sp, #0x10]
|
|
add r0, #0x3c
|
|
bl FUN_020191D0
|
|
ldr r0, [sp, #0x10]
|
|
ldr r1, [r0, #0x10]
|
|
mov r0, #2
|
|
lsl r0, r0, #0x14
|
|
orr r1, r0
|
|
ldr r0, [sp, #0x10]
|
|
add sp, #0x24
|
|
str r1, [r0, #0x10]
|
|
pop {r4, r5, r6, r7, pc}
|
|
_021D7F26:
|
|
cmp r0, #3
|
|
bne _021D7F3C
|
|
mov r1, #0x54
|
|
mul r1, r0
|
|
ldr r0, [sp, #0x10]
|
|
add r0, r0, r1
|
|
add r0, #0x5e
|
|
ldrh r0, [r0]
|
|
bl FUN_02004D60
|
|
b _021D7F54
|
|
_021D7F3C:
|
|
cmp r0, #4
|
|
bne _021D7F54
|
|
ldr r1, [sp, #0x14]
|
|
mov r2, #0x54
|
|
mul r2, r1
|
|
ldr r1, [sp, #0x10]
|
|
mov r0, #0
|
|
add r1, r1, r2
|
|
add r1, #0x5e
|
|
ldrh r1, [r1]
|
|
bl FUN_02024F9C
|
|
_021D7F54:
|
|
ldr r0, [sp, #0x14]
|
|
mov r1, #0x54
|
|
mul r1, r0
|
|
ldr r0, [sp, #0x10]
|
|
mov r7, #0
|
|
add r5, r0, r1
|
|
add r0, r5, #0
|
|
add r0, #0x5c
|
|
ldrh r0, [r0]
|
|
add r4, r7, #0
|
|
cmp r0, #0
|
|
bls _021D8002
|
|
bls _021D8002
|
|
ldr r1, _021D8010 ; =0x021D80FC
|
|
ldr r0, [sp, #0x14]
|
|
add r0, r1, r0
|
|
str r0, [sp, #0x1c]
|
|
ldr r0, [sp, #0x10]
|
|
str r0, [sp, #0x20]
|
|
add r0, #0x3c
|
|
str r0, [sp, #0x20]
|
|
_021D7F7E:
|
|
add r0, r5, #0
|
|
add r0, #0x5e
|
|
ldrh r0, [r0]
|
|
cmp r4, r0
|
|
bne _021D7F8C
|
|
ldr r0, _021D8014 ; =0x0003040F
|
|
b _021D7F8E
|
|
_021D7F8C:
|
|
ldr r0, _021D8018 ; =0x0001020F
|
|
_021D7F8E:
|
|
ldr r1, [sp, #0x14]
|
|
cmp r1, #4
|
|
bne _021D7FC8
|
|
lsl r1, r4, #2
|
|
add r6, r5, r1
|
|
ldr r1, [sp, #0x18]
|
|
add r3, r7, #0
|
|
str r1, [sp]
|
|
mov r1, #0xff
|
|
str r1, [sp, #4]
|
|
str r0, [sp, #8]
|
|
mov r0, #0
|
|
str r0, [sp, #0xc]
|
|
ldr r0, [sp, #0x20]
|
|
ldr r2, [r6, #0x60]
|
|
mov r1, #0
|
|
add r3, #0x64
|
|
bl FUN_0201BDE0
|
|
mov r0, #0
|
|
ldr r1, [r6, #0x60]
|
|
add r2, r0, #0
|
|
bl FUN_02002E14
|
|
add r0, #0xc
|
|
add r0, r7, r0
|
|
lsl r0, r0, #0x18
|
|
asr r7, r0, #0x18
|
|
b _021D7FF2
|
|
_021D7FC8:
|
|
ldr r1, [sp, #0x18]
|
|
lsl r2, r4, #2
|
|
str r1, [sp]
|
|
mov r1, #0xff
|
|
str r1, [sp, #4]
|
|
str r0, [sp, #8]
|
|
mov r0, #0
|
|
mov r1, #0
|
|
str r0, [sp, #0xc]
|
|
add r2, r5, r2
|
|
ldr r6, [sp, #0x1c]
|
|
add r3, r1, #0
|
|
ldrsb r6, [r6, r3]
|
|
mov r3, #0x30
|
|
mul r3, r4
|
|
add r3, #0x64
|
|
ldr r0, [sp, #0x20]
|
|
ldr r2, [r2, #0x60]
|
|
add r3, r6, r3
|
|
bl FUN_0201BDE0
|
|
_021D7FF2:
|
|
add r0, r4, #1
|
|
lsl r0, r0, #0x10
|
|
lsr r4, r0, #0x10
|
|
add r0, r5, #0
|
|
add r0, #0x5c
|
|
ldrh r0, [r0]
|
|
cmp r4, r0
|
|
blo _021D7F7E
|
|
_021D8002:
|
|
ldr r0, [sp, #0x10]
|
|
add r0, #0x3c
|
|
str r0, [sp, #0x10]
|
|
bl FUN_020191D0
|
|
add sp, #0x24
|
|
pop {r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_021D8010: .word 0x021D80FC
|
|
_021D8014: .word 0x0003040F
|
|
_021D8018: .word 0x0001020F
|
|
thumb_func_end MOD60_021D7EA4
|
|
|
|
thumb_func_start MOD60_021D801C
|
|
MOD60_021D801C: ; 0x021D801C
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
ldr r0, [r5, #0x10]
|
|
add r1, r5, #0
|
|
lsl r0, r0, #0x1b
|
|
lsr r2, r0, #0x1d
|
|
mov r0, #0x54
|
|
add r1, #0x5c
|
|
mul r0, r2
|
|
add r4, r1, r0
|
|
cmp r2, #6
|
|
beq _021D8080
|
|
ldr r0, _021D80F8 ; =0x021C48B8
|
|
ldr r1, [r0, #0x48]
|
|
mov r0, #0x10
|
|
tst r0, r1
|
|
beq _021D805C
|
|
ldrh r0, [r4, #2]
|
|
ldrh r1, [r4]
|
|
add r0, r0, #1
|
|
bl _s32_div_f
|
|
strh r1, [r4, #2]
|
|
ldr r1, [r5, #0x10]
|
|
add r0, r5, #0
|
|
lsl r1, r1, #0x1b
|
|
lsr r1, r1, #0x1d
|
|
lsl r1, r1, #0x10
|
|
lsr r1, r1, #0x10
|
|
bl MOD60_021D7EA4
|
|
b _021D8080
|
|
_021D805C:
|
|
mov r0, #0x20
|
|
tst r0, r1
|
|
beq _021D8080
|
|
ldrh r1, [r4]
|
|
ldrh r0, [r4, #2]
|
|
add r0, r0, r1
|
|
sub r0, r0, #1
|
|
bl _s32_div_f
|
|
strh r1, [r4, #2]
|
|
ldr r1, [r5, #0x10]
|
|
add r0, r5, #0
|
|
lsl r1, r1, #0x1b
|
|
lsr r1, r1, #0x1d
|
|
lsl r1, r1, #0x10
|
|
lsr r1, r1, #0x10
|
|
bl MOD60_021D7EA4
|
|
_021D8080:
|
|
ldr r0, _021D80F8 ; =0x021C48B8
|
|
ldr r1, [r0, #0x48]
|
|
mov r0, #0x40
|
|
tst r0, r1
|
|
beq _021D80BE
|
|
ldr r0, [r5, #0x10]
|
|
mov r1, #7
|
|
lsl r0, r0, #0x1b
|
|
lsr r0, r0, #0x1d
|
|
add r0, r0, #6
|
|
bl _u32_div_f
|
|
ldr r2, [r5, #0x10]
|
|
mov r0, #0x1c
|
|
bic r2, r0
|
|
lsl r0, r1, #0x1d
|
|
add r3, r2, #0
|
|
lsr r0, r0, #0x1b
|
|
orr r3, r0
|
|
str r3, [r5, #0x10]
|
|
lsl r3, r3, #0x1b
|
|
lsr r3, r3, #0x1d
|
|
lsl r3, r3, #4
|
|
add r3, #0x18
|
|
ldr r0, [r5, #0x14]
|
|
mov r1, #0
|
|
mov r2, #3
|
|
neg r3, r3
|
|
bl FUN_0201AEE4
|
|
pop {r3, r4, r5, pc}
|
|
_021D80BE:
|
|
mov r0, #0x80
|
|
tst r0, r1
|
|
beq _021D80F6
|
|
ldr r0, [r5, #0x10]
|
|
mov r1, #7
|
|
lsl r0, r0, #0x1b
|
|
lsr r0, r0, #0x1d
|
|
add r0, r0, #1
|
|
bl _u32_div_f
|
|
ldr r2, [r5, #0x10]
|
|
mov r0, #0x1c
|
|
bic r2, r0
|
|
lsl r0, r1, #0x1d
|
|
add r3, r2, #0
|
|
lsr r0, r0, #0x1b
|
|
orr r3, r0
|
|
str r3, [r5, #0x10]
|
|
lsl r3, r3, #0x1b
|
|
lsr r3, r3, #0x1d
|
|
lsl r3, r3, #4
|
|
add r3, #0x18
|
|
ldr r0, [r5, #0x14]
|
|
mov r1, #0
|
|
mov r2, #3
|
|
neg r3, r3
|
|
bl FUN_0201AEE4
|
|
_021D80F6:
|
|
pop {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_021D80F8: .word 0x021C48B8
|
|
thumb_func_end MOD60_021D801C
|
|
|
|
.section .rodata
|
|
; 0x021D80FC
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
|
|
.byte 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
|
|
.byte 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1F, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1E, 0x00, 0x00, 0x01, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1D, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x01, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|