mirror of
https://github.com/pret/pokediamond.git
synced 2026-03-21 17:54:29 -05:00
2358 lines
41 KiB
ArmAsm
2358 lines
41 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "global.inc"
|
|
|
|
.extern FX_SinCosTable_
|
|
|
|
.section .rodata
|
|
|
|
.global UNK_020ED64C
|
|
UNK_020ED64C: ; 0x020ED64C
|
|
.byte 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x02
|
|
.byte 0x02, 0x02, 0x02, 0x01, 0x01, 0x02, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00
|
|
|
|
.global UNK_020ED668
|
|
UNK_020ED668: ; 0x020ED668
|
|
.word sub_02015A34
|
|
|
|
.global UNK_020ED66C
|
|
UNK_020ED66C: ; 0x020ED66C
|
|
.byte 0x06, 0x00, 0x00, 0x00
|
|
|
|
.global UNK_020ED670
|
|
UNK_020ED670: ; 0x020ED670
|
|
.byte 0x01, 0x00, 0x00, 0x00
|
|
.word sub_02015AEC
|
|
.byte 0x06, 0x00, 0x00, 0x00
|
|
.byte 0x01, 0x00, 0x00, 0x00
|
|
.word sub_02015BAC
|
|
.byte 0x04, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.word sub_02015BE8
|
|
.byte 0x03, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.word sub_02015C24
|
|
.byte 0x04, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
|
|
.global UNK_020ED6A4
|
|
UNK_020ED6A4: ; 0x020ED6A4
|
|
.word sub_020151B8
|
|
.word sub_020151C8
|
|
.word sub_020151D0
|
|
.word sub_02015300
|
|
.word sub_020153E0
|
|
.word sub_02015218
|
|
.word sub_02015240
|
|
.word sub_02015264
|
|
.word sub_0201528C
|
|
.word sub_020152B0
|
|
.word sub_020152D8
|
|
.word sub_02015404
|
|
.word sub_02015428
|
|
.word sub_02015444
|
|
.word sub_02015470
|
|
.word sub_0201549C
|
|
.word sub_0201551C
|
|
.word sub_02015550
|
|
.word sub_02015588
|
|
.word sub_020155D0
|
|
.word sub_02015620
|
|
.word sub_020156E8
|
|
.word sub_02015730
|
|
.word sub_02015798
|
|
.word sub_0201585C
|
|
.word sub_02015868
|
|
.word sub_020158A0
|
|
.word sub_020158AC
|
|
.word sub_020158B8
|
|
.word sub_020158C4
|
|
.word sub_020158D0
|
|
.word sub_020157EC
|
|
.word sub_02015800
|
|
.word sub_02015840
|
|
|
|
.text
|
|
|
|
thumb_func_start sub_02014BF4
|
|
sub_02014BF4: ; 0x02014BF4
|
|
push {r3-r7, lr}
|
|
add r7, r1, #0x0
|
|
mov r1, #0xc
|
|
add r5, r0, #0x0
|
|
add r6, r2, #0x0
|
|
bl Heap_Alloc
|
|
add r4, r0, #0x0
|
|
strb r6, [r4, #0x8]
|
|
mov r0, #0x1d
|
|
strb r7, [r4, #0x9]
|
|
lsl r0, r0, #0x4
|
|
add r6, r7, #0x0
|
|
mul r6, r0
|
|
add r0, r5, #0x0
|
|
add r1, r6, #0x0
|
|
str r5, [r4, #0x4]
|
|
bl Heap_Alloc
|
|
mov r1, #0x0
|
|
add r2, r6, #0x0
|
|
str r0, [r4, #0x0]
|
|
bl MI_CpuFill8
|
|
add r0, r4, #0x0
|
|
pop {r3-r7, pc}
|
|
|
|
thumb_func_start sub_02014C28
|
|
sub_02014C28: ; 0x02014C28
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
ldr r0, [r4, #0x0]
|
|
bl Heap_Free
|
|
add r0, r4, #0x0
|
|
bl Heap_Free
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_02014C3C
|
|
sub_02014C3C: ; 0x02014C3C
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
cmp r4, #0x19
|
|
blo _02014C48
|
|
bl GF_AssertFail
|
|
_02014C48:
|
|
ldr r0, _02014C50 ; =UNK_020ED64C
|
|
ldrb r0, [r0, r4]
|
|
pop {r4, pc}
|
|
nop
|
|
_02014C50: .word UNK_020ED64C
|
|
|
|
thumb_func_start sub_02014C54
|
|
sub_02014C54: ; 0x02014C54
|
|
push {r4-r7, lr}
|
|
sub sp, #0xc
|
|
add r5, r0, #0x0
|
|
str r3, [sp, #0x4]
|
|
add r0, r2, #0x0
|
|
ldrh r6, [r0, #0x0]
|
|
ldrh r0, [r0, #0x2]
|
|
add r7, r1, #0x0
|
|
ldrb r1, [r5, #0x9]
|
|
str r0, [sp, #0x8]
|
|
ldr r0, [sp, #0x4]
|
|
str r2, [sp, #0x0]
|
|
cmp r0, r1
|
|
blo _02014C74
|
|
bl GF_AssertFail
|
|
_02014C74:
|
|
ldr r0, [sp, #0x4]
|
|
mov r1, #0x1d
|
|
add r4, r0, #0x0
|
|
lsl r1, r1, #0x4
|
|
ldr r0, [r5, #0x0]
|
|
mul r4, r1
|
|
add r0, r0, r4
|
|
ldr r0, [r0, #0x10]
|
|
cmp r0, #0x0
|
|
beq _02014C8C
|
|
bl GF_AssertFail
|
|
_02014C8C:
|
|
ldr r0, [r5, #0x0]
|
|
mov r2, #0x1d
|
|
add r0, r0, r4
|
|
mov r1, #0x0
|
|
lsl r2, r2, #0x4
|
|
bl MI_CpuFill8
|
|
ldr r0, [r5, #0x0]
|
|
mov r1, #0x1
|
|
add r0, r0, r4
|
|
str r1, [r0, #0x10]
|
|
ldr r0, [r5, #0x0]
|
|
cmp r6, #0x86
|
|
str r7, [r0, r4]
|
|
blt _02014CAE
|
|
mov r6, #0x0
|
|
str r6, [sp, #0x8]
|
|
_02014CAE:
|
|
ldr r0, [r5, #0x0]
|
|
add r0, r0, r4
|
|
str r6, [r0, #0x14]
|
|
ldrb r0, [r5, #0x8]
|
|
cmp r0, #0x0
|
|
beq _02014CC0
|
|
ldr r0, [sp, #0x0]
|
|
ldrb r2, [r0, #0x4]
|
|
b _02014CC2
|
|
_02014CC0:
|
|
mov r2, #0x0
|
|
_02014CC2:
|
|
ldr r0, [r5, #0x0]
|
|
add r1, r0, r4
|
|
mov r0, #0x73
|
|
lsl r0, r0, #0x2
|
|
strb r2, [r1, r0]
|
|
ldr r1, [r5, #0x0]
|
|
ldr r2, [r5, #0x4]
|
|
add r1, r1, r4
|
|
ldr r1, [r1, #0x14]
|
|
mov r0, #0x5e
|
|
bl AllocAtEndAndReadWholeNarcMemberByIdPair
|
|
ldr r1, [r5, #0x0]
|
|
mov r2, #0x0
|
|
add r1, r1, r4
|
|
str r0, [r1, #0x8]
|
|
ldr r0, [r5, #0x0]
|
|
mov r6, #0x1c
|
|
add r1, r0, r4
|
|
ldr r0, [r1, #0x8]
|
|
str r0, [r1, #0xc]
|
|
ldr r0, [r5, #0x0]
|
|
add r0, r0, r4
|
|
str r2, [r0, #0x1c]
|
|
ldr r0, [r5, #0x0]
|
|
add r0, r0, r4
|
|
str r2, [r0, #0x20]
|
|
ldr r0, [r5, #0x0]
|
|
add r1, r0, r4
|
|
ldr r0, _02014D74 ; =0x000001CD
|
|
strb r2, [r1, r0]
|
|
ldr r1, [r5, #0x0]
|
|
add r3, r1, r4
|
|
add r1, r0, #0x1
|
|
strb r6, [r3, r1]
|
|
ldr r1, [r5, #0x0]
|
|
add r0, r0, #0x2
|
|
add r1, r1, r4
|
|
strb r2, [r1, r0]
|
|
ldr r1, [r5, #0x0]
|
|
ldr r0, _02014D78 ; =sub_02014DD8
|
|
add r1, r1, r4
|
|
bl SysTask_CreateOnMainQueue
|
|
ldr r1, [r5, #0x0]
|
|
add r1, r1, r4
|
|
str r0, [r1, #0x4]
|
|
ldr r0, [r5, #0x0]
|
|
add r1, r0, r4
|
|
ldr r0, [sp, #0x8]
|
|
str r0, [r1, #0x54]
|
|
add r0, r7, #0x0
|
|
mov r1, #0x0
|
|
bl sub_0200782C
|
|
ldr r1, [r5, #0x0]
|
|
add r1, r1, r4
|
|
str r0, [r1, #0x58]
|
|
add r0, r7, #0x0
|
|
mov r1, #0x1
|
|
bl sub_0200782C
|
|
ldr r1, [r5, #0x0]
|
|
add r1, r1, r4
|
|
str r0, [r1, #0x5c]
|
|
ldr r1, [r5, #0x0]
|
|
mov r0, #0x0
|
|
add r1, r1, r4
|
|
str r0, [r1, #0x60]
|
|
ldr r1, [r5, #0x0]
|
|
add r1, r1, r4
|
|
str r0, [r1, #0x64]
|
|
ldr r1, [r5, #0x0]
|
|
add r1, r1, r4
|
|
str r0, [r1, #0x68]
|
|
ldr r1, [r5, #0x0]
|
|
add r1, r1, r4
|
|
str r0, [r1, #0x6c]
|
|
ldr r1, [r5, #0x0]
|
|
add r1, r1, r4
|
|
str r0, [r1, #0x70]
|
|
ldr r1, [r5, #0x0]
|
|
add r1, r1, r4
|
|
str r0, [r1, #0x74]
|
|
ldr r1, [r5, #0x0]
|
|
add r1, r1, r4
|
|
str r0, [r1, #0x78]
|
|
add sp, #0xc
|
|
pop {r4-r7, pc}
|
|
.balign 4
|
|
_02014D74: .word 0x000001CD
|
|
_02014D78: .word sub_02014DD8
|
|
|
|
thumb_func_start sub_02014D7C
|
|
sub_02014D7C: ; 0x02014D7C
|
|
push {r3-r5, lr}
|
|
add r5, r0, #0x0
|
|
ldrb r0, [r5, #0x9]
|
|
add r4, r1, #0x0
|
|
cmp r4, r0
|
|
blo _02014D8C
|
|
bl GF_AssertFail
|
|
_02014D8C:
|
|
mov r0, #0x1d
|
|
lsl r0, r0, #0x4
|
|
ldr r1, [r5, #0x0]
|
|
mul r0, r4
|
|
add r0, r1, r0
|
|
ldr r0, [r0, #0x20]
|
|
pop {r3-r5, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_02014D9C
|
|
sub_02014D9C: ; 0x02014D9C
|
|
push {r3-r5, lr}
|
|
add r5, r0, #0x0
|
|
mov r0, #0x1d
|
|
lsl r0, r0, #0x4
|
|
add r4, r1, #0x0
|
|
mul r4, r0
|
|
ldr r0, [r5, #0x0]
|
|
add r0, r0, r4
|
|
ldr r0, [r0, #0x4]
|
|
cmp r0, #0x0
|
|
beq _02014DD6
|
|
bl SysTask_Destroy
|
|
ldr r1, [r5, #0x0]
|
|
mov r0, #0x0
|
|
add r1, r1, r4
|
|
str r0, [r1, #0x4]
|
|
ldr r1, [r5, #0x0]
|
|
mov r2, #0x1
|
|
add r1, r1, r4
|
|
str r2, [r1, #0x20]
|
|
ldr r1, [r5, #0x0]
|
|
add r1, r1, r4
|
|
str r0, [r1, #0x10]
|
|
ldr r0, [r5, #0x0]
|
|
add r0, r0, r4
|
|
ldr r0, [r0, #0x8]
|
|
bl Heap_Free
|
|
_02014DD6:
|
|
pop {r3-r5, pc}
|
|
|
|
thumb_func_start sub_02014DD8
|
|
sub_02014DD8: ; 0x02014DD8
|
|
push {r3-r5, lr}
|
|
add r4, r1, #0x0
|
|
add r5, r0, #0x0
|
|
ldr r0, [r4, #0x54]
|
|
cmp r0, #0x0
|
|
bne _02014DEC
|
|
add r0, r4, #0x0
|
|
bl sub_02014E10
|
|
b _02014DF0
|
|
_02014DEC:
|
|
sub r0, r0, #0x1
|
|
str r0, [r4, #0x54]
|
|
_02014DF0:
|
|
ldr r0, [r4, #0x1c]
|
|
cmp r0, #0x0
|
|
beq _02014E0E
|
|
mov r0, #0x1
|
|
str r0, [r4, #0x20]
|
|
mov r0, #0x0
|
|
str r0, [r4, #0x10]
|
|
add r0, r5, #0x0
|
|
bl SysTask_Destroy
|
|
mov r0, #0x0
|
|
str r0, [r4, #0x4]
|
|
ldr r0, [r4, #0x8]
|
|
bl Heap_Free
|
|
_02014E0E:
|
|
pop {r3-r5, pc}
|
|
|
|
thumb_func_start sub_02014E10
|
|
sub_02014E10: ; 0x02014E10
|
|
push {r3-r7, lr}
|
|
add r5, r0, #0x0
|
|
mov r6, #0x0
|
|
str r6, [r5, #0x18]
|
|
add r7, r5, #0x0
|
|
str r6, [r5, #0x44]
|
|
add r4, r6, #0x0
|
|
add r7, #0x7c
|
|
_02014E20:
|
|
mov r0, #0x54
|
|
add r1, r4, #0x0
|
|
mul r1, r0
|
|
add r0, r7, r1
|
|
ldr r1, [r7, r1]
|
|
cmp r1, #0x0
|
|
beq _02014E4E
|
|
add r1, r0, #0x0
|
|
add r1, #0x2d
|
|
ldrb r1, [r1, #0x0]
|
|
cmp r1, #0x0
|
|
bne _02014E40
|
|
ldr r2, [r0, #0x50]
|
|
add r1, r5, #0x0
|
|
blx r2
|
|
b _02014E54
|
|
_02014E40:
|
|
add r1, r0, #0x0
|
|
add r1, #0x2d
|
|
ldrb r1, [r1, #0x0]
|
|
add r0, #0x2d
|
|
sub r1, r1, #0x1
|
|
strb r1, [r0, #0x0]
|
|
b _02014E54
|
|
_02014E4E:
|
|
add r0, r6, #0x1
|
|
lsl r0, r0, #0x18
|
|
lsr r6, r0, #0x18
|
|
_02014E54:
|
|
add r0, r4, #0x1
|
|
lsl r0, r0, #0x18
|
|
lsr r4, r0, #0x18
|
|
cmp r4, #0x4
|
|
blo _02014E20
|
|
cmp r6, #0x4
|
|
bne _02014E68
|
|
ldr r0, _02014EFC ; =0x000001CD
|
|
mov r1, #0x0
|
|
strb r1, [r5, r0]
|
|
_02014E68:
|
|
ldr r0, _02014EFC ; =0x000001CD
|
|
ldrb r1, [r5, r0]
|
|
cmp r1, #0x0
|
|
beq _02014E7E
|
|
add r0, r5, #0x0
|
|
bl sub_020156E8
|
|
add r0, r5, #0x0
|
|
bl sub_02015730
|
|
pop {r3-r7, pc}
|
|
_02014E7E:
|
|
add r0, r0, #0x2
|
|
ldrb r0, [r5, r0]
|
|
cmp r0, #0x0
|
|
beq _02014E96
|
|
ldr r0, [r5, #0x0]
|
|
bl sub_02007F20
|
|
cmp r0, #0x0
|
|
bne _02014EF8
|
|
ldr r0, _02014F00 ; =0x000001CF
|
|
mov r1, #0x0
|
|
strb r1, [r5, r0]
|
|
_02014E96:
|
|
add r6, r5, #0x0
|
|
add r4, r5, #0x0
|
|
ldr r7, _02014F04 ; =UNK_020ED6A4
|
|
add r6, #0xc
|
|
add r4, #0x44
|
|
_02014EA0:
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
ldr r0, [r5, #0xc]
|
|
ldr r0, [r0, #0x0]
|
|
cmp r0, #0x22
|
|
blo _02014EB2
|
|
bl GF_AssertFail
|
|
_02014EB2:
|
|
ldr r1, [r5, #0xc]
|
|
add r0, r5, #0x0
|
|
ldr r1, [r1, #0x0]
|
|
lsl r1, r1, #0x2
|
|
ldr r1, [r7, r1]
|
|
blx r1
|
|
ldr r0, [r5, #0x1c]
|
|
cmp r0, #0x0
|
|
bne _02014EF8
|
|
ldr r0, [r6, #0x0]
|
|
add r0, r0, #0x4
|
|
str r0, [r6, #0x0]
|
|
ldr r0, [r5, #0x18]
|
|
cmp r0, #0x0
|
|
bne _02014EF8
|
|
ldr r0, _02014EFC ; =0x000001CD
|
|
ldrb r0, [r5, r0]
|
|
cmp r0, #0x0
|
|
beq _02014EE6
|
|
add r0, r5, #0x0
|
|
bl sub_020156E8
|
|
add r0, r5, #0x0
|
|
bl sub_02015730
|
|
pop {r3-r7, pc}
|
|
_02014EE6:
|
|
mov r0, #0x1
|
|
ldr r1, [r5, #0x44]
|
|
lsl r0, r0, #0x8
|
|
cmp r1, r0
|
|
blt _02014EA0
|
|
bl GF_AssertFail
|
|
mov r0, #0x1
|
|
str r0, [r5, #0x1c]
|
|
_02014EF8:
|
|
pop {r3-r7, pc}
|
|
nop
|
|
_02014EFC: .word 0x000001CD
|
|
_02014F00: .word 0x000001CF
|
|
_02014F04: .word UNK_020ED6A4
|
|
|
|
thumb_func_start sub_02014F08
|
|
sub_02014F08: ; 0x02014F08
|
|
push {r4, lr}
|
|
lsl r1, r1, #0x2
|
|
ldr r4, [r0, r1]
|
|
cmp r2, #0x1
|
|
beq _02014F16
|
|
bl GF_AssertFail
|
|
_02014F16:
|
|
add r0, r4, #0x0
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_02014F1C
|
|
sub_02014F1C: ; 0x02014F1C
|
|
ldr r3, _02014F24 ; =sub_02014F08
|
|
add r2, r1, #0x0
|
|
mov r1, #0x0
|
|
bx r3
|
|
.balign 4
|
|
_02014F24: .word sub_02014F08
|
|
|
|
thumb_func_start sub_02014F28
|
|
sub_02014F28: ; 0x02014F28
|
|
ldr r3, _02014F30 ; =sub_02014F1C
|
|
mov r1, #0x1
|
|
bx r3
|
|
nop
|
|
_02014F30: .word sub_02014F1C
|
|
|
|
thumb_func_start sub_02014F34
|
|
sub_02014F34: ; 0x02014F34
|
|
push {r3-r5, lr}
|
|
add r5, r1, #0x0
|
|
mov r3, #0x0
|
|
add r0, #0x7c
|
|
mov r2, #0x54
|
|
_02014F3E:
|
|
add r1, r3, #0x0
|
|
mul r1, r2
|
|
add r4, r0, r1
|
|
ldr r1, [r0, r1]
|
|
cmp r1, #0x0
|
|
bne _02014F68
|
|
add r0, r4, #0x0
|
|
mov r1, #0x0
|
|
mov r2, #0x54
|
|
bl MI_CpuFill8
|
|
mov r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
mov r0, #0xc
|
|
add r1, r5, #0x0
|
|
mul r1, r0
|
|
ldr r0, _02014F7C ; =UNK_020ED668
|
|
ldr r0, [r0, r1]
|
|
str r0, [r4, #0x50]
|
|
add r0, r4, #0x0
|
|
pop {r3-r5, pc}
|
|
_02014F68:
|
|
add r1, r3, #0x1
|
|
lsl r1, r1, #0x18
|
|
lsr r3, r1, #0x18
|
|
cmp r3, #0x4
|
|
blo _02014F3E
|
|
bl GF_AssertFail
|
|
mov r0, #0x0
|
|
pop {r3-r5, pc}
|
|
nop
|
|
_02014F7C: .word UNK_020ED668
|
|
|
|
thumb_func_start sub_02014F80
|
|
sub_02014F80: ; 0x02014F80
|
|
push {r4, lr}
|
|
add r4, r1, #0x0
|
|
ldr r1, [r0, #0xc]
|
|
add r1, r1, #0x4
|
|
str r1, [r0, #0xc]
|
|
add r0, r1, #0x0
|
|
bl sub_02014F28
|
|
str r0, [r4, #0x0]
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start sub_02014F94
|
|
sub_02014F94: ; 0x02014F94
|
|
push {r4, lr}
|
|
add r4, r1, #0x0
|
|
ldr r1, [r0, #0xc]
|
|
add r1, r1, #0x4
|
|
str r1, [r0, #0xc]
|
|
add r0, r1, #0x0
|
|
bl sub_02014F28
|
|
strb r0, [r4, #0x0]
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start sub_02014FA8
|
|
sub_02014FA8: ; 0x02014FA8
|
|
push {r4, lr}
|
|
add r4, r1, #0x0
|
|
ldr r1, [r0, #0xc]
|
|
add r1, r1, #0x4
|
|
str r1, [r0, #0xc]
|
|
add r0, r1, #0x0
|
|
bl sub_02014F28
|
|
strb r0, [r4, #0x0]
|
|
ldrb r0, [r4, #0x0]
|
|
cmp r0, #0x8
|
|
blo _02014FC4
|
|
bl GF_AssertFail
|
|
_02014FC4:
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_02014FC8
|
|
sub_02014FC8: ; 0x02014FC8
|
|
push {r3-r5, lr}
|
|
add r5, r0, #0x0
|
|
add r4, r2, #0x0
|
|
bl sub_02014FA8
|
|
add r0, r5, #0x0
|
|
add r1, r4, #0x0
|
|
bl sub_02014FA8
|
|
pop {r3-r5, pc}
|
|
|
|
thumb_func_start sub_02014FDC
|
|
sub_02014FDC: ; 0x02014FDC
|
|
push {r3-r6, lr}
|
|
sub sp, #0x4
|
|
add r5, r0, #0x0
|
|
add r4, r2, #0x0
|
|
add r6, r3, #0x0
|
|
bl sub_02014FA8
|
|
add r0, r5, #0x0
|
|
add r1, sp, #0x0
|
|
bl sub_02014F94
|
|
add r0, sp, #0x0
|
|
ldrb r0, [r0, #0x0]
|
|
cmp r0, #0x12
|
|
bne _0201501C
|
|
add r1, sp, #0x0
|
|
add r0, r5, #0x0
|
|
add r1, #0x2
|
|
bl sub_02014FA8
|
|
add r0, sp, #0x0
|
|
ldrb r0, [r0, #0x2]
|
|
add r1, r6, #0x0
|
|
lsl r0, r0, #0x2
|
|
add r0, r5, r0
|
|
ldr r0, [r0, #0x24]
|
|
str r0, [r4, #0x0]
|
|
add r0, r5, #0x0
|
|
bl sub_02014F80
|
|
add sp, #0x4
|
|
pop {r3-r6, pc}
|
|
_0201501C:
|
|
cmp r0, #0x13
|
|
bne _02015048
|
|
add r1, sp, #0x0
|
|
add r2, sp, #0x0
|
|
add r0, r5, #0x0
|
|
add r1, #0x2
|
|
add r2, #0x1
|
|
bl sub_02014FC8
|
|
add r0, sp, #0x0
|
|
ldrb r1, [r0, #0x2]
|
|
add sp, #0x4
|
|
lsl r1, r1, #0x2
|
|
add r1, r5, r1
|
|
ldr r1, [r1, #0x24]
|
|
str r1, [r4, #0x0]
|
|
ldrb r0, [r0, #0x1]
|
|
lsl r0, r0, #0x2
|
|
add r0, r5, r0
|
|
ldr r0, [r0, #0x24]
|
|
str r0, [r6, #0x0]
|
|
pop {r3-r6, pc}
|
|
_02015048:
|
|
bl GF_AssertFail
|
|
add sp, #0x4
|
|
pop {r3-r6, pc}
|
|
|
|
thumb_func_start sub_02015050
|
|
sub_02015050: ; 0x02015050
|
|
push {r3-r6, lr}
|
|
sub sp, #0x4
|
|
add r5, r0, #0x0
|
|
add r4, r2, #0x0
|
|
add r6, r3, #0x0
|
|
bl sub_02014FA8
|
|
add r1, sp, #0x0
|
|
add r0, r5, #0x0
|
|
add r1, #0x1
|
|
bl sub_02014F94
|
|
add r0, r5, #0x0
|
|
add r1, sp, #0x0
|
|
bl sub_02014F94
|
|
add r0, sp, #0x0
|
|
ldrb r0, [r0, #0x1]
|
|
cmp r0, #0x12
|
|
bne _02015082
|
|
add r0, r5, #0x0
|
|
add r1, r4, #0x0
|
|
bl sub_02014F80
|
|
b _020150A2
|
|
_02015082:
|
|
cmp r0, #0x13
|
|
bne _0201509E
|
|
add r1, sp, #0x0
|
|
add r0, r5, #0x0
|
|
add r1, #0x3
|
|
bl sub_02014FA8
|
|
add r0, sp, #0x0
|
|
ldrb r0, [r0, #0x3]
|
|
lsl r0, r0, #0x2
|
|
add r0, r5, r0
|
|
ldr r0, [r0, #0x24]
|
|
str r0, [r4, #0x0]
|
|
b _020150A2
|
|
_0201509E:
|
|
bl GF_AssertFail
|
|
_020150A2:
|
|
add r0, sp, #0x0
|
|
ldrb r0, [r0, #0x0]
|
|
cmp r0, #0x12
|
|
bne _020150B6
|
|
add r0, r5, #0x0
|
|
add r1, r6, #0x0
|
|
bl sub_02014F80
|
|
add sp, #0x4
|
|
pop {r3-r6, pc}
|
|
_020150B6:
|
|
cmp r0, #0x13
|
|
bne _020150D4
|
|
add r1, sp, #0x0
|
|
add r0, r5, #0x0
|
|
add r1, #0x2
|
|
bl sub_02014FA8
|
|
add r0, sp, #0x0
|
|
ldrb r0, [r0, #0x2]
|
|
add sp, #0x4
|
|
lsl r0, r0, #0x2
|
|
add r0, r5, r0
|
|
ldr r0, [r0, #0x24]
|
|
str r0, [r6, #0x0]
|
|
pop {r3-r6, pc}
|
|
_020150D4:
|
|
bl GF_AssertFail
|
|
add sp, #0x4
|
|
pop {r3-r6, pc}
|
|
|
|
thumb_func_start sub_020150DC
|
|
sub_020150DC: ; 0x020150DC
|
|
push {r3-r7, lr}
|
|
sub sp, #0x8
|
|
add r4, r2, #0x0
|
|
add r2, sp, #0x0
|
|
add r2, #0x3
|
|
add r5, r0, #0x0
|
|
add r6, r3, #0x0
|
|
bl sub_02014FC8
|
|
add r0, sp, #0x0
|
|
ldrb r0, [r0, #0x3]
|
|
add r1, sp, #0x0
|
|
lsl r0, r0, #0x2
|
|
add r0, r5, r0
|
|
ldr r7, [r0, #0x24]
|
|
add r0, r5, #0x0
|
|
bl sub_02014F94
|
|
add r0, sp, #0x0
|
|
ldrb r0, [r0, #0x0]
|
|
cmp r0, #0x14
|
|
bne _02015112
|
|
add r0, r5, #0x0
|
|
add r1, r6, #0x0
|
|
bl sub_02014F80
|
|
b _02015132
|
|
_02015112:
|
|
cmp r0, #0x15
|
|
bne _0201512E
|
|
add r1, sp, #0x0
|
|
add r0, r5, #0x0
|
|
add r1, #0x2
|
|
bl sub_02014FA8
|
|
add r0, sp, #0x0
|
|
ldrb r0, [r0, #0x2]
|
|
lsl r0, r0, #0x2
|
|
add r0, r5, r0
|
|
ldr r0, [r0, #0x24]
|
|
str r0, [r6, #0x0]
|
|
b _02015132
|
|
_0201512E:
|
|
bl GF_AssertFail
|
|
_02015132:
|
|
add r0, r5, #0x0
|
|
add r1, sp, #0x0
|
|
bl sub_02014F94
|
|
add r0, sp, #0x0
|
|
ldrb r0, [r0, #0x0]
|
|
cmp r0, #0x14
|
|
bne _0201514C
|
|
add r0, r5, #0x0
|
|
add r1, sp, #0x4
|
|
bl sub_02014F80
|
|
b _0201516C
|
|
_0201514C:
|
|
cmp r0, #0x15
|
|
bne _02015168
|
|
add r1, sp, #0x0
|
|
add r0, r5, #0x0
|
|
add r1, #0x1
|
|
bl sub_02014FA8
|
|
add r0, sp, #0x0
|
|
ldrb r0, [r0, #0x1]
|
|
lsl r0, r0, #0x2
|
|
add r0, r5, r0
|
|
ldr r0, [r0, #0x24]
|
|
str r0, [sp, #0x4]
|
|
b _0201516C
|
|
_02015168:
|
|
bl GF_AssertFail
|
|
_0201516C:
|
|
ldr r0, [sp, #0x4]
|
|
add r0, r7, r0
|
|
lsr r2, r0, #0x1f
|
|
lsl r1, r0, #0x10
|
|
sub r1, r1, r2
|
|
mov r0, #0x10
|
|
ror r1, r0
|
|
add r0, r2, r1
|
|
str r0, [r4, #0x0]
|
|
add sp, #0x8
|
|
pop {r3-r7, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_02015184
|
|
sub_02015184: ; 0x02015184
|
|
ldr r2, [r0, #0x0]
|
|
ldr r0, [r1, #0x0]
|
|
sub r0, r2, r0
|
|
bpl _02015190
|
|
mov r0, #0xf
|
|
bx lr
|
|
_02015190:
|
|
cmp r0, #0x0
|
|
ble _02015198
|
|
mov r0, #0x10
|
|
bx lr
|
|
_02015198:
|
|
mov r0, #0x11
|
|
bx lr
|
|
|
|
thumb_func_start sub_0201519C
|
|
sub_0201519C: ; 0x0201519C
|
|
add r2, r0, #0x0
|
|
ldr r0, [r2, #0x0]
|
|
ldr r2, [r2, #0x74]
|
|
mov r1, #0x1
|
|
neg r3, r2
|
|
asr r2, r3, #0x2
|
|
lsr r2, r2, #0x1d
|
|
add r2, r3, r2
|
|
ldr r3, _020151B4 ; =sub_020079E0
|
|
asr r2, r2, #0x3
|
|
bx r3
|
|
nop
|
|
_020151B4: .word sub_020079E0
|
|
|
|
thumb_func_start sub_020151B8
|
|
sub_020151B8: ; 0x020151B8
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
bl sub_020151D0
|
|
mov r0, #0x1
|
|
str r0, [r4, #0x18]
|
|
str r0, [r4, #0x1c]
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start sub_020151C8
|
|
sub_020151C8: ; 0x020151C8
|
|
mov r1, #0x1
|
|
str r1, [r0, #0x18]
|
|
bx lr
|
|
.balign 4
|
|
|
|
thumb_func_start sub_020151D0
|
|
sub_020151D0: ; 0x020151D0
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
ldr r0, [r4, #0x0]
|
|
ldr r2, [r4, #0x58]
|
|
mov r1, #0x0
|
|
bl sub_02007558
|
|
ldr r0, [r4, #0x0]
|
|
ldr r2, [r4, #0x5c]
|
|
mov r1, #0x1
|
|
bl sub_02007558
|
|
ldr r0, [r4, #0x0]
|
|
mov r1, #0x9
|
|
mov r2, #0x0
|
|
bl sub_02007558
|
|
ldr r0, [r4, #0x0]
|
|
mov r1, #0xa
|
|
mov r2, #0x0
|
|
bl sub_02007558
|
|
mov r1, #0xc
|
|
add r2, r1, #0x0
|
|
ldr r0, [r4, #0x0]
|
|
add r2, #0xf4
|
|
bl sub_02007558
|
|
mov r1, #0xd
|
|
add r2, r1, #0x0
|
|
ldr r0, [r4, #0x0]
|
|
add r2, #0xf3
|
|
bl sub_02007558
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_02015218
|
|
sub_02015218: ; 0x02015218
|
|
push {r3-r4, lr}
|
|
sub sp, #0x4
|
|
add r1, sp, #0x0
|
|
add r1, #0x1
|
|
add r2, sp, #0x0
|
|
add r4, r0, #0x0
|
|
bl sub_02014FC8
|
|
add r0, sp, #0x0
|
|
ldrb r1, [r0, #0x0]
|
|
ldrb r0, [r0, #0x1]
|
|
lsl r1, r1, #0x2
|
|
add r1, r4, r1
|
|
lsl r0, r0, #0x2
|
|
ldr r1, [r1, #0x24]
|
|
add r0, r4, r0
|
|
str r1, [r0, #0x24]
|
|
add sp, #0x4
|
|
pop {r3-r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_02015240
|
|
sub_02015240: ; 0x02015240
|
|
push {r3-r4, lr}
|
|
sub sp, #0xc
|
|
add r1, sp, #0x0
|
|
add r2, sp, #0x8
|
|
add r3, sp, #0x4
|
|
add r4, r0, #0x0
|
|
bl sub_02014FDC
|
|
ldr r1, [sp, #0x8]
|
|
ldr r0, [sp, #0x4]
|
|
add r1, r1, r0
|
|
add r0, sp, #0x0
|
|
ldrb r0, [r0, #0x0]
|
|
lsl r0, r0, #0x2
|
|
add r0, r4, r0
|
|
str r1, [r0, #0x24]
|
|
add sp, #0xc
|
|
pop {r3-r4, pc}
|
|
|
|
thumb_func_start sub_02015264
|
|
sub_02015264: ; 0x02015264
|
|
push {r3-r4, lr}
|
|
sub sp, #0xc
|
|
add r1, sp, #0x0
|
|
add r2, sp, #0x8
|
|
add r3, sp, #0x4
|
|
add r4, r0, #0x0
|
|
bl sub_02014FDC
|
|
ldr r1, [sp, #0x8]
|
|
ldr r0, [sp, #0x4]
|
|
add r2, r1, #0x0
|
|
mul r2, r0
|
|
add r0, sp, #0x0
|
|
ldrb r0, [r0, #0x0]
|
|
lsl r0, r0, #0x2
|
|
add r0, r4, r0
|
|
str r2, [r0, #0x24]
|
|
add sp, #0xc
|
|
pop {r3-r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_0201528C
|
|
sub_0201528C: ; 0x0201528C
|
|
push {r3-r4, lr}
|
|
sub sp, #0xc
|
|
add r1, sp, #0x0
|
|
add r2, sp, #0x8
|
|
add r3, sp, #0x4
|
|
add r4, r0, #0x0
|
|
bl sub_02015050
|
|
ldr r1, [sp, #0x8]
|
|
ldr r0, [sp, #0x4]
|
|
sub r1, r1, r0
|
|
add r0, sp, #0x0
|
|
ldrb r0, [r0, #0x0]
|
|
lsl r0, r0, #0x2
|
|
add r0, r4, r0
|
|
str r1, [r0, #0x24]
|
|
add sp, #0xc
|
|
pop {r3-r4, pc}
|
|
|
|
thumb_func_start sub_020152B0
|
|
sub_020152B0: ; 0x020152B0
|
|
push {r3-r4, lr}
|
|
sub sp, #0xc
|
|
add r1, sp, #0x0
|
|
add r2, sp, #0x8
|
|
add r3, sp, #0x4
|
|
add r4, r0, #0x0
|
|
bl sub_02015050
|
|
ldr r0, [sp, #0x8]
|
|
ldr r1, [sp, #0x4]
|
|
bl _s32_div_f
|
|
add r1, sp, #0x0
|
|
ldrb r1, [r1, #0x0]
|
|
lsl r1, r1, #0x2
|
|
add r1, r4, r1
|
|
str r0, [r1, #0x24]
|
|
add sp, #0xc
|
|
pop {r3-r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_020152D8
|
|
sub_020152D8: ; 0x020152D8
|
|
push {r3-r4, lr}
|
|
sub sp, #0xc
|
|
add r1, sp, #0x0
|
|
add r2, sp, #0x8
|
|
add r3, sp, #0x4
|
|
add r4, r0, #0x0
|
|
bl sub_02015050
|
|
ldr r0, [sp, #0x8]
|
|
ldr r1, [sp, #0x4]
|
|
bl _s32_div_f
|
|
add r0, sp, #0x0
|
|
ldrb r0, [r0, #0x0]
|
|
lsl r0, r0, #0x2
|
|
add r0, r4, r0
|
|
str r1, [r0, #0x24]
|
|
add sp, #0xc
|
|
pop {r3-r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_02015300
|
|
sub_02015300: ; 0x02015300
|
|
push {r3-r5, lr}
|
|
sub sp, #0x10
|
|
add r1, sp, #0x0
|
|
add r5, r0, #0x0
|
|
bl sub_02014F94
|
|
add r0, sp, #0x0
|
|
ldrb r0, [r0, #0x0]
|
|
cmp r0, #0x14
|
|
bne _02015334
|
|
add r1, sp, #0x0
|
|
add r0, r5, #0x0
|
|
add r1, #0x3
|
|
bl sub_02014FA8
|
|
add r0, sp, #0x0
|
|
ldrb r0, [r0, #0x3]
|
|
add r1, sp, #0x8
|
|
lsl r0, r0, #0x2
|
|
add r0, r5, r0
|
|
ldr r0, [r0, #0x24]
|
|
str r0, [sp, #0xc]
|
|
add r0, r5, #0x0
|
|
bl sub_02014F80
|
|
b _02015362
|
|
_02015334:
|
|
cmp r0, #0x15
|
|
bne _0201535E
|
|
add r1, sp, #0x0
|
|
add r2, sp, #0x0
|
|
add r0, r5, #0x0
|
|
add r1, #0x3
|
|
add r2, #0x2
|
|
bl sub_02014FC8
|
|
add r0, sp, #0x0
|
|
ldrb r1, [r0, #0x3]
|
|
lsl r1, r1, #0x2
|
|
add r1, r5, r1
|
|
ldr r1, [r1, #0x24]
|
|
str r1, [sp, #0xc]
|
|
ldrb r0, [r0, #0x2]
|
|
lsl r0, r0, #0x2
|
|
add r0, r5, r0
|
|
ldr r0, [r0, #0x24]
|
|
str r0, [sp, #0x8]
|
|
b _02015362
|
|
_0201535E:
|
|
bl GF_AssertFail
|
|
_02015362:
|
|
add r1, sp, #0x0
|
|
add r0, r5, #0x0
|
|
add r1, #0x1
|
|
bl sub_02014F94
|
|
add r0, sp, #0x0
|
|
ldrb r0, [r0, #0x1]
|
|
cmp r0, #0x11
|
|
bls _02015378
|
|
bl GF_AssertFail
|
|
_02015378:
|
|
add r0, sp, #0xc
|
|
add r1, sp, #0x8
|
|
bl sub_02015184
|
|
add r4, r0, #0x0
|
|
add r0, r5, #0x0
|
|
add r1, sp, #0x0
|
|
bl sub_02014F94
|
|
add r0, sp, #0x0
|
|
ldrb r0, [r0, #0x0]
|
|
cmp r0, #0x14
|
|
bne _020153A6
|
|
add r1, sp, #0x0
|
|
add r0, r5, #0x0
|
|
add r1, #0x3
|
|
bl sub_02014FA8
|
|
add r0, r5, #0x0
|
|
add r1, sp, #0x4
|
|
bl sub_02014F80
|
|
b _020153CA
|
|
_020153A6:
|
|
cmp r0, #0x15
|
|
bne _020153C6
|
|
add r1, sp, #0x0
|
|
add r2, sp, #0x0
|
|
add r0, r5, #0x0
|
|
add r1, #0x3
|
|
add r2, #0x2
|
|
bl sub_02014FC8
|
|
add r0, sp, #0x0
|
|
ldrb r0, [r0, #0x2]
|
|
lsl r0, r0, #0x2
|
|
add r0, r5, r0
|
|
ldr r0, [r0, #0x24]
|
|
str r0, [sp, #0x4]
|
|
b _020153CA
|
|
_020153C6:
|
|
bl GF_AssertFail
|
|
_020153CA:
|
|
add r0, sp, #0x0
|
|
ldrb r1, [r0, #0x1]
|
|
cmp r1, r4
|
|
bne _020153DC
|
|
ldrb r0, [r0, #0x3]
|
|
ldr r1, [sp, #0x4]
|
|
lsl r0, r0, #0x2
|
|
add r0, r5, r0
|
|
str r1, [r0, #0x24]
|
|
_020153DC:
|
|
add sp, #0x10
|
|
pop {r3-r5, pc}
|
|
|
|
thumb_func_start sub_020153E0
|
|
sub_020153E0: ; 0x020153E0
|
|
push {r3-r4, lr}
|
|
sub sp, #0x4
|
|
add r4, r0, #0x0
|
|
add r1, sp, #0x0
|
|
bl sub_02014FA8
|
|
ldr r0, [r4, #0xc]
|
|
add r0, r0, #0x4
|
|
str r0, [r4, #0xc]
|
|
bl sub_02014F28
|
|
add r1, sp, #0x0
|
|
ldrb r1, [r1, #0x0]
|
|
lsl r1, r1, #0x2
|
|
add r1, r4, r1
|
|
str r0, [r1, #0x24]
|
|
add sp, #0x4
|
|
pop {r3-r4, pc}
|
|
|
|
thumb_func_start sub_02015404
|
|
sub_02015404: ; 0x02015404
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
ldr r0, [r4, #0x50]
|
|
cmp r0, #0x0
|
|
beq _02015412
|
|
bl GF_AssertFail
|
|
_02015412:
|
|
ldr r0, [r4, #0xc]
|
|
add r0, r0, #0x4
|
|
str r0, [r4, #0xc]
|
|
str r0, [r4, #0x50]
|
|
ldr r0, [r4, #0xc]
|
|
bl sub_02014F28
|
|
str r0, [r4, #0x48]
|
|
mov r0, #0x0
|
|
str r0, [r4, #0x4c]
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start sub_02015428
|
|
sub_02015428: ; 0x02015428
|
|
ldr r1, [r0, #0x4c]
|
|
add r2, r1, #0x1
|
|
str r2, [r0, #0x4c]
|
|
ldr r1, [r0, #0x48]
|
|
cmp r2, r1
|
|
blt _0201543E
|
|
mov r1, #0x0
|
|
str r1, [r0, #0x50]
|
|
str r1, [r0, #0x4c]
|
|
str r1, [r0, #0x48]
|
|
bx lr
|
|
_0201543E:
|
|
ldr r1, [r0, #0x50]
|
|
str r1, [r0, #0xc]
|
|
bx lr
|
|
|
|
thumb_func_start sub_02015444
|
|
sub_02015444: ; 0x02015444
|
|
push {r4, lr}
|
|
sub sp, #0x8
|
|
add r4, r0, #0x0
|
|
add r1, sp, #0x4
|
|
bl sub_02014F80
|
|
add r0, r4, #0x0
|
|
add r1, sp, #0x0
|
|
bl sub_02014FA8
|
|
add r2, sp, #0x0
|
|
ldrb r2, [r2, #0x0]
|
|
ldr r0, [r4, #0x0]
|
|
ldr r1, [sp, #0x4]
|
|
lsl r2, r2, #0x2
|
|
add r2, r4, r2
|
|
ldr r2, [r2, #0x24]
|
|
bl sub_02007558
|
|
add sp, #0x8
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_02015470
|
|
sub_02015470: ; 0x02015470
|
|
push {r4, lr}
|
|
sub sp, #0x8
|
|
add r4, r0, #0x0
|
|
add r1, sp, #0x4
|
|
bl sub_02014F80
|
|
add r0, r4, #0x0
|
|
add r1, sp, #0x0
|
|
bl sub_02014FA8
|
|
add r2, sp, #0x0
|
|
ldrb r2, [r2, #0x0]
|
|
ldr r0, [r4, #0x0]
|
|
ldr r1, [sp, #0x4]
|
|
lsl r2, r2, #0x2
|
|
add r2, r4, r2
|
|
ldr r2, [r2, #0x24]
|
|
bl sub_020079E0
|
|
add sp, #0x8
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_0201549C
|
|
sub_0201549C: ; 0x0201549C
|
|
push {r3-r4, lr}
|
|
sub sp, #0xc
|
|
add r1, sp, #0x8
|
|
add r4, r0, #0x0
|
|
bl sub_02014F80
|
|
add r1, sp, #0x0
|
|
add r0, r4, #0x0
|
|
add r1, #0x1
|
|
bl sub_02014F94
|
|
add r0, sp, #0x0
|
|
ldrb r0, [r0, #0x1]
|
|
cmp r0, #0x14
|
|
bne _020154C4
|
|
add r0, r4, #0x0
|
|
add r1, sp, #0x4
|
|
bl sub_02014F80
|
|
b _020154E4
|
|
_020154C4:
|
|
cmp r0, #0x15
|
|
bne _020154E0
|
|
add r1, sp, #0x0
|
|
add r0, r4, #0x0
|
|
add r1, #0x2
|
|
bl sub_02014FA8
|
|
add r0, sp, #0x0
|
|
ldrb r0, [r0, #0x2]
|
|
lsl r0, r0, #0x2
|
|
add r0, r4, r0
|
|
ldr r0, [r0, #0x24]
|
|
str r0, [sp, #0x4]
|
|
b _020154E4
|
|
_020154E0:
|
|
bl GF_AssertFail
|
|
_020154E4:
|
|
add r0, r4, #0x0
|
|
add r1, sp, #0x0
|
|
bl sub_02014F94
|
|
add r0, sp, #0x0
|
|
ldrb r0, [r0, #0x0]
|
|
cmp r0, #0x16
|
|
bne _02015502
|
|
ldr r0, [r4, #0x0]
|
|
ldr r1, [sp, #0x8]
|
|
ldr r2, [sp, #0x4]
|
|
bl sub_02007558
|
|
add sp, #0xc
|
|
pop {r3-r4, pc}
|
|
_02015502:
|
|
cmp r0, #0x17
|
|
bne _02015514
|
|
ldr r0, [r4, #0x0]
|
|
ldr r1, [sp, #0x8]
|
|
ldr r2, [sp, #0x4]
|
|
bl sub_020079E0
|
|
add sp, #0xc
|
|
pop {r3-r4, pc}
|
|
_02015514:
|
|
bl GF_AssertFail
|
|
add sp, #0xc
|
|
pop {r3-r4, pc}
|
|
|
|
thumb_func_start sub_0201551C
|
|
sub_0201551C: ; 0x0201551C
|
|
push {r3-r4, lr}
|
|
sub sp, #0xc
|
|
add r1, sp, #0x0
|
|
add r2, sp, #0x8
|
|
add r3, sp, #0x4
|
|
add r4, r0, #0x0
|
|
bl sub_020150DC
|
|
ldr r0, [sp, #0x8]
|
|
ldr r2, [sp, #0x4]
|
|
asr r0, r0, #0x4
|
|
lsl r1, r0, #0x2
|
|
ldr r0, _0201554C ; =FX_SinCosTable_
|
|
ldrsh r0, [r0, r1]
|
|
mul r0, r2
|
|
asr r1, r0, #0xc
|
|
add r0, sp, #0x0
|
|
ldrb r0, [r0, #0x0]
|
|
lsl r0, r0, #0x2
|
|
add r0, r4, r0
|
|
str r1, [r0, #0x24]
|
|
add sp, #0xc
|
|
pop {r3-r4, pc}
|
|
nop
|
|
_0201554C: .word FX_SinCosTable_
|
|
|
|
thumb_func_start sub_02015550
|
|
sub_02015550: ; 0x02015550
|
|
push {r3-r4, lr}
|
|
sub sp, #0xc
|
|
add r1, sp, #0x0
|
|
add r2, sp, #0x8
|
|
add r3, sp, #0x4
|
|
add r4, r0, #0x0
|
|
bl sub_020150DC
|
|
ldr r1, [sp, #0x8]
|
|
ldr r0, [sp, #0x4]
|
|
asr r1, r1, #0x4
|
|
lsl r1, r1, #0x1
|
|
add r1, r1, #0x1
|
|
lsl r2, r1, #0x1
|
|
ldr r1, _02015584 ; =FX_SinCosTable_
|
|
ldrsh r1, [r1, r2]
|
|
mul r1, r0
|
|
add r0, sp, #0x0
|
|
ldrb r0, [r0, #0x0]
|
|
asr r1, r1, #0xc
|
|
lsl r0, r0, #0x2
|
|
add r0, r4, r0
|
|
str r1, [r0, #0x24]
|
|
add sp, #0xc
|
|
pop {r3-r4, pc}
|
|
nop
|
|
_02015584: .word FX_SinCosTable_
|
|
|
|
thumb_func_start sub_02015588
|
|
sub_02015588: ; 0x02015588
|
|
push {r3-r4, lr}
|
|
sub sp, #0x4
|
|
add r1, sp, #0x0
|
|
add r4, r0, #0x0
|
|
add r1, #0x1
|
|
bl sub_02014FA8
|
|
add r0, r4, #0x0
|
|
add r1, sp, #0x0
|
|
bl sub_02014F94
|
|
add r0, sp, #0x0
|
|
ldrb r1, [r0, #0x0]
|
|
cmp r1, #0x8
|
|
bne _020155B4
|
|
ldrb r0, [r0, #0x1]
|
|
add sp, #0x4
|
|
lsl r0, r0, #0x2
|
|
add r0, r4, r0
|
|
ldr r0, [r0, #0x24]
|
|
str r0, [r4, #0x60]
|
|
pop {r3-r4, pc}
|
|
_020155B4:
|
|
cmp r1, #0x9
|
|
bne _020155C6
|
|
ldrb r0, [r0, #0x1]
|
|
add sp, #0x4
|
|
lsl r0, r0, #0x2
|
|
add r0, r4, r0
|
|
ldr r0, [r0, #0x24]
|
|
str r0, [r4, #0x64]
|
|
pop {r3-r4, pc}
|
|
_020155C6:
|
|
bl GF_AssertFail
|
|
add sp, #0x4
|
|
pop {r3-r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_020155D0
|
|
sub_020155D0: ; 0x020155D0
|
|
push {r3-r4, lr}
|
|
sub sp, #0x4
|
|
add r1, sp, #0x0
|
|
add r4, r0, #0x0
|
|
add r1, #0x1
|
|
bl sub_02014FA8
|
|
add r0, r4, #0x0
|
|
add r1, sp, #0x0
|
|
bl sub_02014F94
|
|
add r0, sp, #0x0
|
|
ldrb r1, [r0, #0x0]
|
|
cmp r1, #0x8
|
|
bne _02015600
|
|
ldrb r0, [r0, #0x1]
|
|
ldr r1, [r4, #0x60]
|
|
add sp, #0x4
|
|
lsl r0, r0, #0x2
|
|
add r0, r4, r0
|
|
ldr r0, [r0, #0x24]
|
|
add r0, r1, r0
|
|
str r0, [r4, #0x60]
|
|
pop {r3-r4, pc}
|
|
_02015600:
|
|
cmp r1, #0x9
|
|
bne _02015616
|
|
ldrb r0, [r0, #0x1]
|
|
ldr r1, [r4, #0x64]
|
|
add sp, #0x4
|
|
lsl r0, r0, #0x2
|
|
add r0, r4, r0
|
|
ldr r0, [r0, #0x24]
|
|
add r0, r1, r0
|
|
str r0, [r4, #0x64]
|
|
pop {r3-r4, pc}
|
|
_02015616:
|
|
bl GF_AssertFail
|
|
add sp, #0x4
|
|
pop {r3-r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_02015620
|
|
sub_02015620: ; 0x02015620
|
|
push {r3-r5, lr}
|
|
sub sp, #0x8
|
|
add r1, sp, #0x0
|
|
add r1, #0x3
|
|
add r5, r0, #0x0
|
|
bl sub_02014F94
|
|
add r0, sp, #0x0
|
|
ldrb r0, [r0, #0x3]
|
|
cmp r0, #0x8
|
|
bne _0201563C
|
|
add r4, r5, #0x0
|
|
add r4, #0x60
|
|
b _0201567C
|
|
_0201563C:
|
|
cmp r0, #0x9
|
|
bne _02015646
|
|
add r4, r5, #0x0
|
|
add r4, #0x64
|
|
b _0201567C
|
|
_02015646:
|
|
cmp r0, #0xa
|
|
bne _02015650
|
|
add r4, r5, #0x0
|
|
add r4, #0x68
|
|
b _0201567C
|
|
_02015650:
|
|
cmp r0, #0xb
|
|
bne _0201565A
|
|
add r4, r5, #0x0
|
|
add r4, #0x6c
|
|
b _0201567C
|
|
_0201565A:
|
|
cmp r0, #0xc
|
|
bne _02015664
|
|
add r4, r5, #0x0
|
|
add r4, #0x70
|
|
b _0201567C
|
|
_02015664:
|
|
cmp r0, #0xd
|
|
bne _0201566E
|
|
add r4, r5, #0x0
|
|
add r4, #0x74
|
|
b _0201567C
|
|
_0201566E:
|
|
cmp r0, #0xe
|
|
bne _02015678
|
|
add r4, r5, #0x0
|
|
add r4, #0x78
|
|
b _0201567C
|
|
_02015678:
|
|
bl GF_AssertFail
|
|
_0201567C:
|
|
add r1, sp, #0x0
|
|
add r0, r5, #0x0
|
|
add r1, #0x1
|
|
bl sub_02014F94
|
|
add r0, sp, #0x0
|
|
ldrb r0, [r0, #0x1]
|
|
cmp r0, #0x14
|
|
bne _02015698
|
|
add r0, r5, #0x0
|
|
add r1, sp, #0x4
|
|
bl sub_02014F80
|
|
b _020156B8
|
|
_02015698:
|
|
cmp r0, #0x15
|
|
bne _020156B4
|
|
add r1, sp, #0x0
|
|
add r0, r5, #0x0
|
|
add r1, #0x2
|
|
bl sub_02014FA8
|
|
add r0, sp, #0x0
|
|
ldrb r0, [r0, #0x2]
|
|
lsl r0, r0, #0x2
|
|
add r0, r5, r0
|
|
ldr r0, [r0, #0x24]
|
|
str r0, [sp, #0x4]
|
|
b _020156B8
|
|
_020156B4:
|
|
bl GF_AssertFail
|
|
_020156B8:
|
|
add r0, r5, #0x0
|
|
add r1, sp, #0x0
|
|
bl sub_02014F94
|
|
add r0, sp, #0x0
|
|
ldrb r0, [r0, #0x0]
|
|
cmp r0, #0x16
|
|
bne _020156D0
|
|
ldr r0, [sp, #0x4]
|
|
add sp, #0x8
|
|
str r0, [r4, #0x0]
|
|
pop {r3-r5, pc}
|
|
_020156D0:
|
|
cmp r0, #0x17
|
|
bne _020156E0
|
|
ldr r0, [sp, #0x4]
|
|
ldr r1, [r4, #0x0]
|
|
add sp, #0x8
|
|
add r0, r1, r0
|
|
str r0, [r4, #0x0]
|
|
pop {r3-r5, pc}
|
|
_020156E0:
|
|
bl GF_AssertFail
|
|
add sp, #0x8
|
|
pop {r3-r5, pc}
|
|
|
|
thumb_func_start sub_020156E8
|
|
sub_020156E8: ; 0x020156E8
|
|
push {r3-r5, lr}
|
|
add r4, r0, #0x0
|
|
mov r0, #0x73
|
|
lsl r0, r0, #0x2
|
|
ldrb r0, [r4, r0]
|
|
cmp r0, #0x0
|
|
ldr r0, [r4, #0x0]
|
|
beq _0201570A
|
|
ldr r3, [r4, #0x60]
|
|
ldr r2, [r4, #0x68]
|
|
ldr r5, [r4, #0x58]
|
|
add r2, r3, r2
|
|
mov r1, #0x0
|
|
sub r2, r5, r2
|
|
bl sub_02007558
|
|
b _0201571A
|
|
_0201570A:
|
|
ldr r3, [r4, #0x58]
|
|
ldr r2, [r4, #0x60]
|
|
ldr r5, [r4, #0x68]
|
|
add r2, r3, r2
|
|
mov r1, #0x0
|
|
add r2, r5, r2
|
|
bl sub_02007558
|
|
_0201571A:
|
|
ldr r3, [r4, #0x5c]
|
|
ldr r2, [r4, #0x64]
|
|
ldr r5, [r4, #0x6c]
|
|
add r2, r3, r2
|
|
ldr r0, [r4, #0x0]
|
|
mov r1, #0x1
|
|
add r2, r5, r2
|
|
bl sub_02007558
|
|
pop {r3-r5, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_02015730
|
|
sub_02015730: ; 0x02015730
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
mov r1, #0xc
|
|
add r2, r1, #0x0
|
|
ldr r3, [r4, #0x70]
|
|
add r2, #0xf4
|
|
ldr r0, [r4, #0x0]
|
|
add r2, r3, r2
|
|
bl sub_02007558
|
|
mov r1, #0xd
|
|
add r2, r1, #0x0
|
|
ldr r3, [r4, #0x74]
|
|
add r2, #0xf3
|
|
ldr r0, [r4, #0x0]
|
|
add r2, r3, r2
|
|
bl sub_02007558
|
|
ldr r2, [r4, #0x78]
|
|
ldr r0, [r4, #0x0]
|
|
lsl r2, r2, #0x10
|
|
mov r1, #0x9
|
|
lsr r2, r2, #0x10
|
|
bl sub_02007558
|
|
ldr r0, _02015794 ; =0x000001CE
|
|
ldrb r0, [r4, r0]
|
|
cmp r0, #0x1b
|
|
bne _02015778
|
|
ldr r0, [r4, #0x74]
|
|
cmp r0, #0x0
|
|
bge _02015792
|
|
add r0, r4, #0x0
|
|
bl sub_0201519C
|
|
pop {r4, pc}
|
|
_02015778:
|
|
cmp r0, #0x1d
|
|
bne _0201578A
|
|
ldr r0, [r4, #0x74]
|
|
cmp r0, #0x0
|
|
beq _02015792
|
|
add r0, r4, #0x0
|
|
bl sub_0201519C
|
|
pop {r4, pc}
|
|
_0201578A:
|
|
cmp r0, #0x1c
|
|
beq _02015792
|
|
bl GF_AssertFail
|
|
_02015792:
|
|
pop {r4, pc}
|
|
.balign 4
|
|
_02015794: .word 0x000001CE
|
|
|
|
thumb_func_start sub_02015798
|
|
sub_02015798: ; 0x02015798
|
|
push {r3-r4, lr}
|
|
sub sp, #0x4
|
|
add r4, r0, #0x0
|
|
add r1, sp, #0x0
|
|
bl sub_02014FA8
|
|
ldr r0, [r4, #0xc]
|
|
add r0, r0, #0x4
|
|
str r0, [r4, #0xc]
|
|
bl sub_02014F28
|
|
lsl r0, r0, #0x18
|
|
lsr r0, r0, #0x18
|
|
cmp r0, #0x8
|
|
beq _020157BA
|
|
cmp r0, #0xa
|
|
bne _020157CA
|
|
_020157BA:
|
|
add r0, sp, #0x0
|
|
ldrb r0, [r0, #0x0]
|
|
add sp, #0x4
|
|
lsl r0, r0, #0x2
|
|
add r0, r4, r0
|
|
ldr r0, [r0, #0x24]
|
|
str r0, [r4, #0x68]
|
|
pop {r3-r4, pc}
|
|
_020157CA:
|
|
cmp r0, #0x9
|
|
beq _020157D2
|
|
cmp r0, #0xb
|
|
bne _020157E2
|
|
_020157D2:
|
|
add r0, sp, #0x0
|
|
ldrb r0, [r0, #0x0]
|
|
add sp, #0x4
|
|
lsl r0, r0, #0x2
|
|
add r0, r4, r0
|
|
ldr r0, [r0, #0x24]
|
|
str r0, [r4, #0x6c]
|
|
pop {r3-r4, pc}
|
|
_020157E2:
|
|
bl GF_AssertFail
|
|
add sp, #0x4
|
|
pop {r3-r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_020157EC
|
|
sub_020157EC: ; 0x020157EC
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
add r1, r4, #0x0
|
|
add r1, #0x54
|
|
bl sub_02014F80
|
|
mov r0, #0x1
|
|
str r0, [r4, #0x18]
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_02015800
|
|
sub_02015800: ; 0x02015800
|
|
push {r3-r4, lr}
|
|
sub sp, #0xc
|
|
add r1, sp, #0x4
|
|
add r1, #0x2
|
|
add r4, r0, #0x0
|
|
bl sub_02014F94
|
|
add r1, sp, #0x4
|
|
add r0, r4, #0x0
|
|
add r1, #0x1
|
|
bl sub_02014F94
|
|
add r0, r4, #0x0
|
|
add r1, sp, #0x4
|
|
bl sub_02014F94
|
|
add r0, r4, #0x0
|
|
add r1, sp, #0x8
|
|
bl sub_02014F80
|
|
ldr r0, [sp, #0x8]
|
|
add r3, sp, #0x4
|
|
str r0, [sp, #0x0]
|
|
ldrb r1, [r3, #0x2]
|
|
ldrb r2, [r3, #0x1]
|
|
ldrb r3, [r3, #0x0]
|
|
ldr r0, [r4, #0x0]
|
|
bl sub_02007E68
|
|
add sp, #0xc
|
|
pop {r3-r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_02015840
|
|
sub_02015840: ; 0x02015840
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
ldr r0, [r4, #0x0]
|
|
bl sub_02007F20
|
|
cmp r0, #0x0
|
|
beq _02015856
|
|
ldr r0, _02015858 ; =0x000001CF
|
|
mov r1, #0x1
|
|
strb r1, [r4, r0]
|
|
str r1, [r4, #0x18]
|
|
_02015856:
|
|
pop {r4, pc}
|
|
.balign 4
|
|
_02015858: .word 0x000001CF
|
|
|
|
thumb_func_start sub_0201585C
|
|
sub_0201585C: ; 0x0201585C
|
|
ldr r1, _02015864 ; =0x000001CD
|
|
mov r2, #0x1
|
|
strb r2, [r0, r1]
|
|
bx lr
|
|
.balign 4
|
|
_02015864: .word 0x000001CD
|
|
|
|
thumb_func_start sub_02015868
|
|
sub_02015868: ; 0x02015868
|
|
push {r4, lr}
|
|
ldr r1, _0201589C ; =0x000001CE
|
|
add r4, r0, #0x0
|
|
add r1, r4, r1
|
|
bl sub_02014F94
|
|
ldr r0, _0201589C ; =0x000001CE
|
|
mov r1, #0x1
|
|
ldrb r0, [r4, r0]
|
|
add r2, r1, #0x0
|
|
cmp r0, #0x1b
|
|
beq _02015886
|
|
cmp r0, #0x1d
|
|
beq _02015886
|
|
mov r2, #0x0
|
|
_02015886:
|
|
cmp r2, #0x0
|
|
bne _02015890
|
|
cmp r0, #0x1c
|
|
beq _02015890
|
|
mov r1, #0x0
|
|
_02015890:
|
|
cmp r1, #0x0
|
|
bne _02015898
|
|
bl GF_AssertFail
|
|
_02015898:
|
|
pop {r4, pc}
|
|
nop
|
|
_0201589C: .word 0x000001CE
|
|
|
|
thumb_func_start sub_020158A0
|
|
sub_020158A0: ; 0x020158A0
|
|
ldr r3, _020158A8 ; =sub_0201598C
|
|
mov r1, #0x0
|
|
bx r3
|
|
nop
|
|
_020158A8: .word sub_0201598C
|
|
|
|
thumb_func_start sub_020158AC
|
|
sub_020158AC: ; 0x020158AC
|
|
ldr r3, _020158B4 ; =sub_0201598C
|
|
mov r1, #0x1
|
|
bx r3
|
|
nop
|
|
_020158B4: .word sub_0201598C
|
|
|
|
thumb_func_start sub_020158B8
|
|
sub_020158B8: ; 0x020158B8
|
|
ldr r3, _020158C0 ; =sub_0201598C
|
|
mov r1, #0x2
|
|
bx r3
|
|
nop
|
|
_020158C0: .word sub_0201598C
|
|
|
|
thumb_func_start sub_020158C4
|
|
sub_020158C4: ; 0x020158C4
|
|
ldr r3, _020158CC ; =sub_0201598C
|
|
mov r1, #0x3
|
|
bx r3
|
|
nop
|
|
_020158CC: .word sub_0201598C
|
|
|
|
thumb_func_start sub_020158D0
|
|
sub_020158D0: ; 0x020158D0
|
|
ldr r3, _020158D8 ; =sub_0201598C
|
|
mov r1, #0x4
|
|
bx r3
|
|
nop
|
|
_020158D8: .word sub_0201598C
|
|
|
|
thumb_func_start sub_020158DC
|
|
sub_020158DC: ; 0x020158DC
|
|
push {r3, lr}
|
|
cmp r0, #0x18
|
|
bne _020158E8
|
|
ldr r0, [r2, #0x0]
|
|
str r0, [r3, #0x0]
|
|
pop {r3, pc}
|
|
_020158E8:
|
|
cmp r0, #0x19
|
|
bne _020158F6
|
|
ldr r1, [r1, #0x0]
|
|
ldr r0, [r2, #0x0]
|
|
add r0, r1, r0
|
|
str r0, [r3, #0x0]
|
|
pop {r3, pc}
|
|
_020158F6:
|
|
cmp r0, #0x1a
|
|
bne _02015904
|
|
ldr r1, [r3, #0x0]
|
|
ldr r0, [r2, #0x0]
|
|
add r0, r1, r0
|
|
str r0, [r3, #0x0]
|
|
pop {r3, pc}
|
|
_02015904:
|
|
bl GF_AssertFail
|
|
pop {r3, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_0201590C
|
|
sub_0201590C: ; 0x0201590C
|
|
push {r3, lr}
|
|
sub r0, #0x23
|
|
cmp r0, #0x4
|
|
bhi _02015984
|
|
add r0, r0, r0
|
|
add r0, pc
|
|
ldrh r0, [r0, #0x6]
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
add pc, r0
|
|
_02015920: ; jump table (using 16-bit offset)
|
|
.short _0201592A - _02015920 - 2; case 0
|
|
.short _0201593C - _02015920 - 2; case 1
|
|
.short _0201594E - _02015920 - 2; case 2
|
|
.short _02015960 - _02015920 - 2; case 3
|
|
.short _02015972 - _02015920 - 2; case 4
|
|
_0201592A:
|
|
add r0, r1, #0x0
|
|
add r0, #0x3c
|
|
str r0, [r1, #0x24]
|
|
add r0, r2, #0x0
|
|
add r0, #0x68
|
|
str r0, [r1, #0x28]
|
|
ldr r0, [r2, #0x68]
|
|
str r0, [r1, #0x30]
|
|
pop {r3, pc}
|
|
_0201593C:
|
|
add r0, r1, #0x0
|
|
add r0, #0x40
|
|
str r0, [r1, #0x24]
|
|
add r0, r2, #0x0
|
|
add r0, #0x6c
|
|
str r0, [r1, #0x28]
|
|
ldr r0, [r2, #0x6c]
|
|
str r0, [r1, #0x30]
|
|
pop {r3, pc}
|
|
_0201594E:
|
|
add r0, r1, #0x0
|
|
add r0, #0x44
|
|
str r0, [r1, #0x24]
|
|
add r0, r2, #0x0
|
|
add r0, #0x70
|
|
str r0, [r1, #0x28]
|
|
ldr r0, [r2, #0x70]
|
|
str r0, [r1, #0x30]
|
|
pop {r3, pc}
|
|
_02015960:
|
|
add r0, r1, #0x0
|
|
add r0, #0x48
|
|
str r0, [r1, #0x24]
|
|
add r0, r2, #0x0
|
|
add r0, #0x74
|
|
str r0, [r1, #0x28]
|
|
ldr r0, [r2, #0x74]
|
|
str r0, [r1, #0x30]
|
|
pop {r3, pc}
|
|
_02015972:
|
|
add r0, r1, #0x0
|
|
add r0, #0x4c
|
|
str r0, [r1, #0x24]
|
|
add r0, r2, #0x0
|
|
add r0, #0x78
|
|
str r0, [r1, #0x28]
|
|
ldr r0, [r2, #0x78]
|
|
str r0, [r1, #0x30]
|
|
pop {r3, pc}
|
|
_02015984:
|
|
bl GF_AssertFail
|
|
pop {r3, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_0201598C
|
|
sub_0201598C: ; 0x0201598C
|
|
push {r3-r7, lr}
|
|
sub sp, #0x8
|
|
add r6, r1, #0x0
|
|
lsl r1, r6, #0x18
|
|
lsr r1, r1, #0x18
|
|
add r5, r0, #0x0
|
|
bl sub_02014F34
|
|
str r0, [sp, #0x4]
|
|
ldr r1, [sp, #0x4]
|
|
add r0, r5, #0x0
|
|
add r1, #0x2c
|
|
bl sub_02014F94
|
|
ldr r1, [sp, #0x4]
|
|
add r0, r5, #0x0
|
|
add r1, #0x2d
|
|
bl sub_02014F94
|
|
mov r0, #0xc
|
|
mul r0, r6
|
|
ldr r1, _02015A28 ; =UNK_020ED66C
|
|
str r0, [sp, #0x0]
|
|
ldr r0, [r1, r0]
|
|
mov r4, #0x0
|
|
cmp r0, #0x0
|
|
ble _020159E2
|
|
ldr r1, _02015A2C ; =UNK_020ED668
|
|
ldr r0, [sp, #0x0]
|
|
add r6, r1, r0
|
|
ldr r0, [sp, #0x4]
|
|
add r7, r0, #0x4
|
|
_020159CC:
|
|
lsl r1, r4, #0x2
|
|
add r0, r5, #0x0
|
|
add r1, r7, r1
|
|
bl sub_02014F80
|
|
add r0, r4, #0x1
|
|
lsl r0, r0, #0x18
|
|
lsr r4, r0, #0x18
|
|
ldr r0, [r6, #0x4]
|
|
cmp r4, r0
|
|
blt _020159CC
|
|
_020159E2:
|
|
ldr r1, _02015A30 ; =UNK_020ED670
|
|
ldr r0, [sp, #0x0]
|
|
add r2, r5, #0x0
|
|
ldr r0, [r1, r0]
|
|
lsl r1, r0, #0x2
|
|
ldr r0, [sp, #0x4]
|
|
add r0, r0, r1
|
|
ldr r0, [r0, #0x4]
|
|
ldr r1, [sp, #0x4]
|
|
lsl r0, r0, #0x18
|
|
lsr r0, r0, #0x18
|
|
bl sub_0201590C
|
|
ldr r0, [sp, #0x4]
|
|
add r0, #0x2d
|
|
ldrb r0, [r0, #0x0]
|
|
cmp r0, #0x0
|
|
bne _02015A14
|
|
ldr r0, [sp, #0x4]
|
|
add r1, r5, #0x0
|
|
add r2, r0, #0x0
|
|
ldr r2, [r2, #0x50]
|
|
blx r2
|
|
add sp, #0x8
|
|
pop {r3-r7, pc}
|
|
_02015A14:
|
|
ldr r0, [sp, #0x4]
|
|
add r0, #0x2d
|
|
ldrb r0, [r0, #0x0]
|
|
sub r1, r0, #0x1
|
|
ldr r0, [sp, #0x4]
|
|
add r0, #0x2d
|
|
str r0, [sp, #0x4]
|
|
strb r1, [r0, #0x0]
|
|
add sp, #0x8
|
|
pop {r3-r7, pc}
|
|
.balign 4
|
|
_02015A28: .word UNK_020ED66C
|
|
_02015A2C: .word UNK_020ED668
|
|
_02015A30: .word UNK_020ED670
|
|
|
|
thumb_func_start sub_02015A34
|
|
sub_02015A34: ; 0x02015A34
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
ldr r0, [r4, #0x1c]
|
|
ldr r1, [r4, #0x10]
|
|
add r0, r0, #0x1
|
|
ldr r2, [r4, #0x14]
|
|
mul r0, r1
|
|
add r0, r2, r0
|
|
lsl r0, r0, #0x10
|
|
lsr r1, r0, #0x10
|
|
ldr r0, [r4, #0x4]
|
|
sub r0, #0x1e
|
|
cmp r0, #0x3
|
|
bhi _02015AC0
|
|
add r0, r0, r0
|
|
add r0, pc
|
|
ldrh r0, [r0, #0x6]
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
add pc, r0
|
|
_02015A5C: ; jump table (using 16-bit offset)
|
|
.short _02015A64 - _02015A5C - 2; case 0
|
|
.short _02015A78 - _02015A5C - 2; case 1
|
|
.short _02015A90 - _02015A5C - 2; case 2
|
|
.short _02015AA6 - _02015A5C - 2; case 3
|
|
_02015A64:
|
|
asr r0, r1, #0x4
|
|
lsl r1, r0, #0x2
|
|
ldr r0, _02015AE8 ; =FX_SinCosTable_
|
|
ldr r2, [r4, #0xc]
|
|
ldrsh r0, [r0, r1]
|
|
mul r0, r2
|
|
asr r1, r0, #0xc
|
|
ldr r0, [r4, #0x24]
|
|
str r1, [r0, #0x0]
|
|
b _02015AC4
|
|
_02015A78:
|
|
asr r1, r1, #0x4
|
|
lsl r1, r1, #0x1
|
|
add r1, r1, #0x1
|
|
lsl r2, r1, #0x1
|
|
ldr r1, _02015AE8 ; =FX_SinCosTable_
|
|
ldr r0, [r4, #0xc]
|
|
ldrsh r1, [r1, r2]
|
|
mul r1, r0
|
|
ldr r0, [r4, #0x24]
|
|
asr r1, r1, #0xc
|
|
str r1, [r0, #0x0]
|
|
b _02015AC4
|
|
_02015A90:
|
|
asr r0, r1, #0x4
|
|
lsl r1, r0, #0x2
|
|
ldr r0, _02015AE8 ; =FX_SinCosTable_
|
|
ldr r2, [r4, #0xc]
|
|
ldrsh r0, [r0, r1]
|
|
mul r0, r2
|
|
asr r0, r0, #0xc
|
|
neg r1, r0
|
|
ldr r0, [r4, #0x24]
|
|
str r1, [r0, #0x0]
|
|
b _02015AC4
|
|
_02015AA6:
|
|
asr r1, r1, #0x4
|
|
lsl r1, r1, #0x1
|
|
add r1, r1, #0x1
|
|
lsl r2, r1, #0x1
|
|
ldr r1, _02015AE8 ; =FX_SinCosTable_
|
|
ldr r0, [r4, #0xc]
|
|
ldrsh r1, [r1, r2]
|
|
mul r1, r0
|
|
asr r0, r1, #0xc
|
|
neg r1, r0
|
|
ldr r0, [r4, #0x24]
|
|
str r1, [r0, #0x0]
|
|
b _02015AC4
|
|
_02015AC0:
|
|
bl GF_AssertFail
|
|
_02015AC4:
|
|
add r0, r4, #0x0
|
|
add r0, #0x2c
|
|
ldrb r0, [r0, #0x0]
|
|
add r1, r4, #0x0
|
|
ldr r2, [r4, #0x24]
|
|
ldr r3, [r4, #0x28]
|
|
add r1, #0x30
|
|
bl sub_020158DC
|
|
ldr r0, [r4, #0x1c]
|
|
add r1, r0, #0x1
|
|
str r1, [r4, #0x1c]
|
|
ldr r0, [r4, #0x18]
|
|
cmp r1, r0
|
|
blt _02015AE6
|
|
mov r0, #0x0
|
|
str r0, [r4, #0x0]
|
|
_02015AE6:
|
|
pop {r4, pc}
|
|
.balign 4
|
|
_02015AE8: .word FX_SinCosTable_
|
|
|
|
thumb_func_start sub_02015AEC
|
|
sub_02015AEC: ; 0x02015AEC
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
ldr r0, [r4, #0x1c]
|
|
ldr r1, [r4, #0x10]
|
|
add r0, r0, #0x1
|
|
mul r0, r1
|
|
ldr r1, [r4, #0x18]
|
|
bl _s32_div_f
|
|
ldr r1, [r4, #0x14]
|
|
add r0, r1, r0
|
|
lsl r0, r0, #0x10
|
|
lsr r1, r0, #0x10
|
|
ldr r0, [r4, #0x4]
|
|
sub r0, #0x1e
|
|
cmp r0, #0x3
|
|
bhi _02015B7E
|
|
add r0, r0, r0
|
|
add r0, pc
|
|
ldrh r0, [r0, #0x6]
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
add pc, r0
|
|
_02015B1A: ; jump table (using 16-bit offset)
|
|
.short _02015B22 - _02015B1A - 2; case 0
|
|
.short _02015B36 - _02015B1A - 2; case 1
|
|
.short _02015B4E - _02015B1A - 2; case 2
|
|
.short _02015B64 - _02015B1A - 2; case 3
|
|
_02015B22:
|
|
asr r0, r1, #0x4
|
|
lsl r1, r0, #0x2
|
|
ldr r0, _02015BA8 ; =FX_SinCosTable_
|
|
ldr r2, [r4, #0xc]
|
|
ldrsh r0, [r0, r1]
|
|
mul r0, r2
|
|
asr r1, r0, #0xc
|
|
ldr r0, [r4, #0x24]
|
|
str r1, [r0, #0x0]
|
|
b _02015B82
|
|
_02015B36:
|
|
asr r1, r1, #0x4
|
|
lsl r1, r1, #0x1
|
|
add r1, r1, #0x1
|
|
lsl r2, r1, #0x1
|
|
ldr r1, _02015BA8 ; =FX_SinCosTable_
|
|
ldr r0, [r4, #0xc]
|
|
ldrsh r1, [r1, r2]
|
|
mul r1, r0
|
|
ldr r0, [r4, #0x24]
|
|
asr r1, r1, #0xc
|
|
str r1, [r0, #0x0]
|
|
b _02015B82
|
|
_02015B4E:
|
|
asr r0, r1, #0x4
|
|
lsl r1, r0, #0x2
|
|
ldr r0, _02015BA8 ; =FX_SinCosTable_
|
|
ldr r2, [r4, #0xc]
|
|
ldrsh r0, [r0, r1]
|
|
mul r0, r2
|
|
asr r0, r0, #0xc
|
|
neg r1, r0
|
|
ldr r0, [r4, #0x24]
|
|
str r1, [r0, #0x0]
|
|
b _02015B82
|
|
_02015B64:
|
|
asr r1, r1, #0x4
|
|
lsl r1, r1, #0x1
|
|
add r1, r1, #0x1
|
|
lsl r2, r1, #0x1
|
|
ldr r1, _02015BA8 ; =FX_SinCosTable_
|
|
ldr r0, [r4, #0xc]
|
|
ldrsh r1, [r1, r2]
|
|
mul r1, r0
|
|
asr r0, r1, #0xc
|
|
neg r1, r0
|
|
ldr r0, [r4, #0x24]
|
|
str r1, [r0, #0x0]
|
|
b _02015B82
|
|
_02015B7E:
|
|
bl GF_AssertFail
|
|
_02015B82:
|
|
add r0, r4, #0x0
|
|
add r0, #0x2c
|
|
ldrb r0, [r0, #0x0]
|
|
add r1, r4, #0x0
|
|
ldr r2, [r4, #0x24]
|
|
ldr r3, [r4, #0x28]
|
|
add r1, #0x30
|
|
bl sub_020158DC
|
|
ldr r0, [r4, #0x1c]
|
|
add r1, r0, #0x1
|
|
str r1, [r4, #0x1c]
|
|
ldr r0, [r4, #0x18]
|
|
cmp r1, r0
|
|
blt _02015BA4
|
|
mov r0, #0x0
|
|
str r0, [r4, #0x0]
|
|
_02015BA4:
|
|
pop {r4, pc}
|
|
nop
|
|
_02015BA8: .word FX_SinCosTable_
|
|
|
|
thumb_func_start sub_02015BAC
|
|
sub_02015BAC: ; 0x02015BAC
|
|
push {r3-r5, lr}
|
|
add r4, r0, #0x0
|
|
ldr r1, [r4, #0x24]
|
|
ldr r3, [r4, #0xc]
|
|
ldr r2, [r4, #0x14]
|
|
ldr r5, [r4, #0x8]
|
|
mul r2, r3
|
|
ldr r0, [r1, #0x0]
|
|
add r2, r5, r2
|
|
add r0, r0, r2
|
|
str r0, [r1, #0x0]
|
|
add r0, r4, #0x0
|
|
add r0, #0x2c
|
|
add r1, r4, #0x0
|
|
ldrb r0, [r0, #0x0]
|
|
ldr r2, [r4, #0x24]
|
|
ldr r3, [r4, #0x28]
|
|
add r1, #0x30
|
|
bl sub_020158DC
|
|
ldr r0, [r4, #0x14]
|
|
add r1, r0, #0x1
|
|
str r1, [r4, #0x14]
|
|
ldr r0, [r4, #0x10]
|
|
cmp r1, r0
|
|
blt _02015BE4
|
|
mov r0, #0x0
|
|
str r0, [r4, #0x0]
|
|
_02015BE4:
|
|
pop {r3-r5, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_02015BE8
|
|
sub_02015BE8: ; 0x02015BE8
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
ldr r0, [r4, #0x10]
|
|
add r1, r0, #0x1
|
|
ldr r0, [r4, #0x8]
|
|
mul r0, r1
|
|
ldr r1, [r4, #0xc]
|
|
bl _s32_div_f
|
|
ldr r1, [r4, #0x24]
|
|
str r0, [r1, #0x0]
|
|
add r0, r4, #0x0
|
|
add r0, #0x2c
|
|
add r1, r4, #0x0
|
|
ldrb r0, [r0, #0x0]
|
|
ldr r2, [r4, #0x24]
|
|
ldr r3, [r4, #0x28]
|
|
add r1, #0x30
|
|
bl sub_020158DC
|
|
ldr r0, [r4, #0x10]
|
|
add r1, r0, #0x1
|
|
str r1, [r4, #0x10]
|
|
ldr r0, [r4, #0xc]
|
|
cmp r1, r0
|
|
blt _02015C20
|
|
mov r0, #0x0
|
|
str r0, [r4, #0x0]
|
|
_02015C20:
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_02015C24
|
|
sub_02015C24: ; 0x02015C24
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
ldr r1, [r4, #0xc]
|
|
ldr r0, [r4, #0x14]
|
|
ldr r2, [r4, #0x8]
|
|
mul r0, r1
|
|
ldr r1, [r4, #0x24]
|
|
add r2, r2, r0
|
|
ldr r0, [r1, #0x0]
|
|
add r0, r0, r2
|
|
str r0, [r1, #0x0]
|
|
add r0, r4, #0x0
|
|
add r0, #0x2c
|
|
ldrb r0, [r0, #0x0]
|
|
cmp r0, #0x18
|
|
beq _02015C48
|
|
cmp r0, #0x1a
|
|
bne _02015C6E
|
|
_02015C48:
|
|
cmp r2, #0x0
|
|
ldr r2, [r4, #0x10]
|
|
bge _02015C5E
|
|
ldr r1, [r4, #0x24]
|
|
ldr r0, [r1, #0x0]
|
|
cmp r0, r2
|
|
bgt _02015CA4
|
|
str r2, [r1, #0x0]
|
|
mov r0, #0x0
|
|
str r0, [r4, #0x0]
|
|
b _02015CA4
|
|
_02015C5E:
|
|
ldr r1, [r4, #0x24]
|
|
ldr r0, [r1, #0x0]
|
|
cmp r0, r2
|
|
blt _02015CA4
|
|
str r2, [r1, #0x0]
|
|
mov r0, #0x0
|
|
str r0, [r4, #0x0]
|
|
b _02015CA4
|
|
_02015C6E:
|
|
cmp r0, #0x19
|
|
bne _02015CA0
|
|
ldr r1, [r4, #0x24]
|
|
ldr r3, [r4, #0x30]
|
|
ldr r0, [r1, #0x0]
|
|
add r3, r3, r0
|
|
cmp r2, #0x0
|
|
ldr r2, [r4, #0x10]
|
|
bge _02015C90
|
|
cmp r3, r2
|
|
bgt _02015CA4
|
|
sub r2, r2, r3
|
|
add r0, r0, r2
|
|
str r0, [r1, #0x0]
|
|
mov r0, #0x0
|
|
str r0, [r4, #0x0]
|
|
b _02015CA4
|
|
_02015C90:
|
|
cmp r3, r2
|
|
blt _02015CA4
|
|
sub r2, r3, r2
|
|
sub r0, r0, r2
|
|
str r0, [r1, #0x0]
|
|
mov r0, #0x0
|
|
str r0, [r4, #0x0]
|
|
b _02015CA4
|
|
_02015CA0:
|
|
bl GF_AssertFail
|
|
_02015CA4:
|
|
add r0, r4, #0x0
|
|
add r0, #0x2c
|
|
ldrb r0, [r0, #0x0]
|
|
add r1, r4, #0x0
|
|
ldr r2, [r4, #0x24]
|
|
ldr r3, [r4, #0x28]
|
|
add r1, #0x30
|
|
bl sub_020158DC
|
|
ldr r0, [r4, #0x14]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x14]
|
|
pop {r4, pc}
|
|
.balign 4
|