mirror of
https://github.com/pret/pokediamond.git
synced 2026-08-19 23:34:51 -05:00
3592 lines
63 KiB
ArmAsm
3592 lines
63 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "global.inc"
|
|
.section .text
|
|
.balign 4, 0
|
|
|
|
thumb_func_start MOD64_021D74E0
|
|
MOD64_021D74E0: ; 0x021D74E0
|
|
push {r3, r4, r5, lr}
|
|
sub sp, #0x10
|
|
mov r2, #1
|
|
add r4, r0, #0
|
|
mov r0, #3
|
|
mov r1, #0x2f
|
|
lsl r2, r2, #0x12
|
|
bl FUN_0201681C
|
|
ldr r1, _021D7630 ; =0x000006B4
|
|
add r0, r4, #0
|
|
mov r2, #0x2f
|
|
bl FUN_02006268
|
|
add r5, r0, #0
|
|
bne _021D7504
|
|
bl ErrorHandling
|
|
_021D7504:
|
|
ldr r2, _021D7630 ; =0x000006B4
|
|
add r0, r5, #0
|
|
mov r1, #0
|
|
bl memset
|
|
mov r0, #0x25
|
|
lsl r0, r0, #4
|
|
add r0, r5, r0
|
|
mov r1, #0x2f
|
|
mov r2, #0x20
|
|
bl FUN_02016B20
|
|
add r0, r4, #0
|
|
bl FUN_0200628C
|
|
add r4, r0, #0
|
|
ldr r0, [r4, #4]
|
|
bl FUN_02025084
|
|
ldr r1, _021D7634 ; =0x000006A8
|
|
str r0, [r5, r1]
|
|
ldr r0, [r4, #4]
|
|
bl FUN_02024FF4
|
|
ldr r1, _021D7638 ; =0x000006AC
|
|
str r0, [r5, r1]
|
|
mov r0, #8
|
|
mov r1, #0x2f
|
|
bl FUN_0201C24C
|
|
ldr r0, _021D763C ; =MOD64_021D77A4
|
|
add r1, r5, #0
|
|
bl FUN_02015F10
|
|
bl FUN_02015F1C
|
|
bl FUN_0201CC08
|
|
mov r0, #4
|
|
bl FUN_0201CC24
|
|
cmp r0, #1
|
|
beq _021D755E
|
|
bl ErrorHandling
|
|
_021D755E:
|
|
add r0, r5, #0
|
|
mov r1, #0x2f
|
|
bl MOD64_021D7810
|
|
mov r0, #0x2f
|
|
bl FUN_02016B94
|
|
add r1, r5, #0
|
|
add r1, #0x94
|
|
str r0, [r1]
|
|
mov r1, #1
|
|
mov r0, #0
|
|
str r0, [sp, #4]
|
|
add r0, sp, #0
|
|
str r1, [sp]
|
|
str r1, [sp, #8]
|
|
str r1, [sp, #0xc]
|
|
bl FUN_02016BBC
|
|
add r0, r5, #0
|
|
add r0, #0x94
|
|
ldr r0, [r0]
|
|
mov r1, #0x2f
|
|
bl MOD64_021D7970
|
|
mov r0, #1
|
|
add r1, r0, #0
|
|
bl FUN_0201E6E4
|
|
mov r0, #2
|
|
mov r1, #0
|
|
bl FUN_0201E6E4
|
|
add r0, r5, #0
|
|
mov r1, #0x2f
|
|
bl MOD64_021D7A54
|
|
add r0, r5, #0
|
|
mov r1, #0x2f
|
|
bl MOD64_021D87CC
|
|
add r0, r5, #0
|
|
mov r1, #0x2f
|
|
bl MOD64_021D8EF4
|
|
add r0, r5, #0
|
|
mov r1, #0x2f
|
|
bl MOD64_021D7B04
|
|
add r0, r5, #0
|
|
mov r1, #0x2f
|
|
bl MOD64_021D7C34
|
|
add r0, r5, #0
|
|
mov r1, #0x2f
|
|
bl MOD64_021D7C74
|
|
add r0, r5, #0
|
|
mov r1, #0x2f
|
|
bl MOD64_021D7F60
|
|
add r0, r5, #0
|
|
mov r1, #0x2f
|
|
bl MOD64_021D824C
|
|
add r0, r5, #0
|
|
bl MOD64_021D82CC
|
|
add r0, r5, #0
|
|
bl MOD64_021D8354
|
|
mov r1, #6
|
|
lsl r1, r1, #8
|
|
add r0, r5, #0
|
|
add r1, r5, r1
|
|
mov r2, #0x2f
|
|
bl MOD64_021D892C
|
|
mov r1, #6
|
|
lsl r1, r1, #8
|
|
add r0, r5, #0
|
|
add r1, r5, r1
|
|
mov r2, #0x2f
|
|
bl MOD64_021D89FC
|
|
mov r0, #6
|
|
lsl r0, r0, #8
|
|
add r0, r5, r0
|
|
bl MOD64_021D8AE0
|
|
mov r0, #0x65
|
|
lsl r0, r0, #4
|
|
add r0, r5, r0
|
|
add r1, r5, #0
|
|
mov r2, #0x2f
|
|
bl MOD64_021D8B70
|
|
mov r1, #0
|
|
mov r0, #0x3c
|
|
add r2, r1, #0
|
|
bl FUN_0200433C
|
|
mov r0, #1
|
|
add sp, #0x10
|
|
pop {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_021D7630: .word 0x000006B4
|
|
_021D7634: .word 0x000006A8
|
|
_021D7638: .word 0x000006AC
|
|
_021D763C: .word MOD64_021D77A4
|
|
thumb_func_end MOD64_021D74E0
|
|
|
|
thumb_func_start MOD64_021D7640
|
|
MOD64_021D7640: ; 0x021D7640
|
|
push {r3, r4, r5, r6, lr}
|
|
sub sp, #4
|
|
add r4, r1, #0
|
|
bl FUN_02006278
|
|
ldr r2, _021D76F0 ; =0x000008C3
|
|
add r1, sp, #0
|
|
strh r2, [r1]
|
|
ldr r1, [r4]
|
|
add r6, r0, #0
|
|
cmp r1, #4
|
|
bhi _021D76E2
|
|
add r1, r1, r1
|
|
add r1, pc
|
|
ldrh r1, [r1, #6]
|
|
lsl r1, r1, #0x10
|
|
asr r1, r1, #0x10
|
|
add pc, r1
|
|
_021D7664: ; jump table
|
|
.short _021D766E - _021D7664 - 2 ; case 0
|
|
.short _021D7684 - _021D7664 - 2 ; case 1
|
|
.short _021D76A0 - _021D7664 - 2 ; case 2
|
|
.short _021D76BC - _021D7664 - 2 ; case 3
|
|
.short _021D76C8 - _021D7664 - 2 ; case 4
|
|
_021D766E:
|
|
bl MOD64_021D77C8
|
|
add r0, sp, #0
|
|
mov r1, #0
|
|
mov r2, #2
|
|
bl GX_LoadBGPltt
|
|
ldr r0, [r4]
|
|
add r0, r0, #1
|
|
str r0, [r4]
|
|
b _021D76E2
|
|
_021D7684:
|
|
bl MOD64_021D7808
|
|
cmp r0, #0
|
|
beq _021D76E2
|
|
mov r0, #0
|
|
bl FUN_0200E388
|
|
mov r0, #1
|
|
bl FUN_0200E388
|
|
ldr r0, [r4]
|
|
add r0, r0, #1
|
|
str r0, [r4]
|
|
b _021D76E2
|
|
_021D76A0:
|
|
mov r1, #0x2f
|
|
bl MOD64_021D80A4
|
|
add r5, r0, #0
|
|
add r0, r6, #0
|
|
mov r1, #0x2f
|
|
bl MOD64_021D8100
|
|
cmp r5, #1
|
|
bne _021D76E2
|
|
ldr r0, [r4]
|
|
add r0, r0, #1
|
|
str r0, [r4]
|
|
b _021D76E2
|
|
_021D76BC:
|
|
bl MOD64_021D77E8
|
|
ldr r0, [r4]
|
|
add r0, r0, #1
|
|
str r0, [r4]
|
|
b _021D76E2
|
|
_021D76C8:
|
|
bl MOD64_021D7808
|
|
cmp r0, #0
|
|
beq _021D76E2
|
|
mov r0, #0
|
|
bl FUN_0200E388
|
|
mov r0, #1
|
|
bl FUN_0200E388
|
|
add sp, #4
|
|
mov r0, #1
|
|
pop {r3, r4, r5, r6, pc}
|
|
_021D76E2:
|
|
add r0, r6, #0
|
|
bl MOD64_021D81D8
|
|
mov r0, #0
|
|
add sp, #4
|
|
pop {r3, r4, r5, r6, pc}
|
|
nop
|
|
_021D76F0: .word 0x000008C3
|
|
thumb_func_end MOD64_021D7640
|
|
|
|
thumb_func_start MOD64_021D76F4
|
|
MOD64_021D76F4: ; 0x021D76F4
|
|
push {r4, r5, r6, lr}
|
|
add r5, r0, #0
|
|
bl FUN_02006278
|
|
add r4, r0, #0
|
|
add r0, r5, #0
|
|
bl FUN_0200628C
|
|
add r6, r0, #0
|
|
mov r0, #0
|
|
add r1, r0, #0
|
|
bl FUN_02015F10
|
|
ldr r0, [r4, #0x54]
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x10
|
|
bl MOD64_021D9044
|
|
str r0, [r6]
|
|
bl FUN_0201CD04
|
|
cmp r0, #1
|
|
beq _021D7726
|
|
bl ErrorHandling
|
|
_021D7726:
|
|
mov r0, #0x65
|
|
lsl r0, r0, #4
|
|
add r0, r4, r0
|
|
bl MOD64_021D8C0C
|
|
mov r0, #6
|
|
lsl r0, r0, #8
|
|
add r0, r4, r0
|
|
bl MOD64_021D8A78
|
|
mov r1, #6
|
|
lsl r1, r1, #8
|
|
add r0, r4, #0
|
|
add r1, r4, r1
|
|
bl MOD64_021D89B8
|
|
mov r0, #6
|
|
lsl r0, r0, #8
|
|
add r0, r4, r0
|
|
bl MOD64_021D8B44
|
|
add r0, r4, #0
|
|
bl MOD64_021D82BC
|
|
add r0, r4, #0
|
|
bl MOD64_021D8034
|
|
add r0, r4, #0
|
|
bl MOD64_021D7CE0
|
|
add r0, r4, #0
|
|
bl MOD64_021D7C08
|
|
add r0, r4, #0
|
|
bl MOD64_021D7C64
|
|
add r0, r4, #0
|
|
bl MOD64_021D7AEC
|
|
add r0, r4, #0
|
|
bl MOD64_021D8FAC
|
|
add r0, r4, #0
|
|
add r0, #0x94
|
|
ldr r0, [r0]
|
|
bl MOD64_021D7A38
|
|
add r4, #0x94
|
|
ldr r0, [r4]
|
|
bl FreeToHeap
|
|
bl MOD64_021D7828
|
|
bl FUN_0201C29C
|
|
add r0, r5, #0
|
|
bl FUN_0200627C
|
|
mov r0, #0x2f
|
|
bl FUN_020168D0
|
|
mov r0, #1
|
|
pop {r4, r5, r6, pc}
|
|
thumb_func_end MOD64_021D76F4
|
|
|
|
thumb_func_start MOD64_021D77A4
|
|
MOD64_021D77A4: ; 0x021D77A4
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
bl FUN_02009F80
|
|
add r0, r4, #0
|
|
add r0, #0x94
|
|
ldr r0, [r0]
|
|
bl FUN_0201AB60
|
|
mov r0, #2
|
|
lsl r0, r0, #8
|
|
ldr r0, [r4, r0]
|
|
bl FUN_020081C4
|
|
bl FUN_0201C30C
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
thumb_func_end MOD64_021D77A4
|
|
|
|
thumb_func_start MOD64_021D77C8
|
|
MOD64_021D77C8: ; 0x021D77C8
|
|
push {lr}
|
|
sub sp, #0xc
|
|
mov r0, #6
|
|
str r0, [sp]
|
|
mov r1, #1
|
|
str r1, [sp, #4]
|
|
mov r0, #0x2f
|
|
str r0, [sp, #8]
|
|
mov r0, #0
|
|
add r2, r1, #0
|
|
add r3, r0, #0
|
|
bl FUN_0200E1D0
|
|
add sp, #0xc
|
|
pop {pc}
|
|
.align 2, 0
|
|
thumb_func_end MOD64_021D77C8
|
|
|
|
thumb_func_start MOD64_021D77E8
|
|
MOD64_021D77E8: ; 0x021D77E8
|
|
push {lr}
|
|
sub sp, #0xc
|
|
mov r0, #6
|
|
str r0, [sp]
|
|
mov r0, #1
|
|
str r0, [sp, #4]
|
|
mov r0, #0x2f
|
|
str r0, [sp, #8]
|
|
mov r0, #0
|
|
add r1, r0, #0
|
|
add r2, r0, #0
|
|
add r3, r0, #0
|
|
bl FUN_0200E1D0
|
|
add sp, #0xc
|
|
pop {pc}
|
|
thumb_func_end MOD64_021D77E8
|
|
|
|
thumb_func_start MOD64_021D7808
|
|
MOD64_021D7808: ; 0x021D7808
|
|
ldr r3, _021D780C ; =FUN_0200E308
|
|
bx r3
|
|
.align 2, 0
|
|
_021D780C: .word FUN_0200E308
|
|
thumb_func_end MOD64_021D7808
|
|
|
|
thumb_func_start MOD64_021D7810
|
|
MOD64_021D7810: ; 0x021D7810
|
|
push {r3, r4, r5, lr}
|
|
add r4, r1, #0
|
|
add r5, r0, #0
|
|
bl MOD64_021D783C
|
|
add r0, r4, #0
|
|
bl MOD64_021D785C
|
|
add r0, r5, #0
|
|
bl MOD64_021D78B4
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end MOD64_021D7810
|
|
|
|
thumb_func_start MOD64_021D7828
|
|
MOD64_021D7828: ; 0x021D7828
|
|
push {r3, lr}
|
|
bl FUN_02009FA0
|
|
bl FUN_0201D12C
|
|
bl FUN_0201E08C
|
|
bl MOD64_021D7964
|
|
pop {r3, pc}
|
|
thumb_func_end MOD64_021D7828
|
|
|
|
thumb_func_start MOD64_021D783C
|
|
MOD64_021D783C: ; 0x021D783C
|
|
push {r4, lr}
|
|
sub sp, #0x28
|
|
ldr r4, _021D7858 ; =0x021D90E8
|
|
add r3, sp, #0
|
|
mov r2, #5
|
|
_021D7846:
|
|
ldmia r4!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
sub r2, r2, #1
|
|
bne _021D7846
|
|
add r0, sp, #0
|
|
bl FUN_0201E66C
|
|
add sp, #0x28
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_021D7858: .word 0x021D90E8
|
|
thumb_func_end MOD64_021D783C
|
|
|
|
thumb_func_start MOD64_021D785C
|
|
MOD64_021D785C: ; 0x021D785C
|
|
push {r4, r5, lr}
|
|
sub sp, #0x24
|
|
add r4, r0, #0
|
|
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]
|
|
add r2, r0, #0
|
|
str r4, [sp, #0x10]
|
|
bl FUN_02009EAC
|
|
ldr r5, _021D78AC ; =0x021D9074
|
|
add r3, sp, #0x14
|
|
add r2, r3, #0
|
|
ldmia r5!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r5!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
add r0, r2, #0
|
|
ldr r1, _021D78B0 ; =0x00200010
|
|
mov r2, #0x10
|
|
str r4, [sp, #0x20]
|
|
bl FUN_0201D060
|
|
mov r0, #0x20
|
|
add r1, r4, #0
|
|
bl FUN_0201E00C
|
|
bl FUN_0201D168
|
|
bl FUN_0201E0BC
|
|
add sp, #0x24
|
|
pop {r4, r5, pc}
|
|
nop
|
|
_021D78AC: .word 0x021D9074
|
|
_021D78B0: .word 0x00200010
|
|
thumb_func_end MOD64_021D785C
|
|
|
|
thumb_func_start MOD64_021D78B4
|
|
MOD64_021D78B4: ; 0x021D78B4
|
|
push {r3, r4, lr}
|
|
sub sp, #4
|
|
add r4, r0, #0
|
|
bl FUN_020BB7F4
|
|
bl G3X_InitMtxStack
|
|
ldr r0, _021D7940 ; =0x04000060
|
|
ldr r1, _021D7944 ; =0xFFFFCFFD
|
|
ldrh r2, [r0]
|
|
and r2, r1
|
|
strh r2, [r0]
|
|
ldrh r3, [r0]
|
|
add r2, r1, #2
|
|
and r3, r2
|
|
mov r2, #0x10
|
|
orr r2, r3
|
|
strh r2, [r0]
|
|
ldrh r3, [r0]
|
|
ldr r2, _021D7948 ; =0x0000CFFB
|
|
and r2, r3
|
|
strh r2, [r0]
|
|
add r2, r1, #2
|
|
ldrh r3, [r0]
|
|
add r1, r1, #2
|
|
and r3, r2
|
|
mov r2, #8
|
|
orr r2, r3
|
|
strh r2, [r0]
|
|
ldrh r2, [r0]
|
|
add r3, r4, #0
|
|
and r2, r1
|
|
mov r1, #0x20
|
|
orr r1, r2
|
|
strh r1, [r0]
|
|
ldr r1, _021D794C ; =0x00001084
|
|
ldr r0, _021D7950 ; =0x0000063C
|
|
mov r2, #0
|
|
_021D7900:
|
|
add r2, r2, #1
|
|
strh r1, [r3, r0]
|
|
add r3, r3, #2
|
|
cmp r2, #8
|
|
blt _021D7900
|
|
ldr r0, _021D7950 ; =0x0000063C
|
|
add r0, r4, r0
|
|
bl G3X_SetEdgeColorTable
|
|
mov r1, #0
|
|
ldr r0, _021D7954 ; =0x000043FF
|
|
ldr r2, _021D7958 ; =0x00007FFF
|
|
mov r3, #0x3f
|
|
str r1, [sp]
|
|
bl G3X_SetClearColor
|
|
ldr r1, _021D795C ; =0x04000540
|
|
mov r0, #2
|
|
str r0, [r1]
|
|
ldr r0, _021D7960 ; =0xBFFF0000
|
|
str r0, [r1, #0x40]
|
|
mov r0, #1
|
|
add r1, r0, #0
|
|
bl FUN_020AEB70
|
|
mov r0, #1
|
|
lsl r0, r0, #0xe
|
|
mov r1, #1
|
|
bl FUN_020AEDF4
|
|
add sp, #4
|
|
pop {r3, r4, pc}
|
|
.align 2, 0
|
|
_021D7940: .word 0x04000060
|
|
_021D7944: .word 0xFFFFCFFD
|
|
_021D7948: .word 0x0000CFFB
|
|
_021D794C: .word 0x00001084
|
|
_021D7950: .word 0x0000063C
|
|
_021D7954: .word 0x000043FF
|
|
_021D7958: .word 0x00007FFF
|
|
_021D795C: .word 0x04000540
|
|
_021D7960: .word 0xBFFF0000
|
|
thumb_func_end MOD64_021D78B4
|
|
|
|
thumb_func_start MOD64_021D7964
|
|
MOD64_021D7964: ; 0x021D7964
|
|
push {r3, lr}
|
|
bl FUN_020AEAF4
|
|
bl FUN_020AEC60
|
|
pop {r3, pc}
|
|
thumb_func_end MOD64_021D7964
|
|
|
|
thumb_func_start MOD64_021D7970
|
|
MOD64_021D7970: ; 0x021D7970
|
|
push {r4, r5, r6, r7, lr}
|
|
sub sp, #0x54
|
|
add r4, r1, #0
|
|
ldr r1, _021D7A28 ; =0x04000008
|
|
add r5, r0, #0
|
|
ldrh r2, [r1]
|
|
mov r0, #3
|
|
mov r7, #1
|
|
bic r2, r0
|
|
add r0, r2, #0
|
|
orr r0, r7
|
|
add r3, sp, #0x38
|
|
ldr r6, _021D7A2C ; =0x021D90B0
|
|
strh r0, [r1]
|
|
ldmia r6!, {r0, r1}
|
|
add r2, r3, #0
|
|
stmia r3!, {r0, r1}
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldr r0, [r6]
|
|
add r1, r7, #0
|
|
str r0, [r3]
|
|
add r0, r5, #0
|
|
mov r3, #0
|
|
bl FUN_02016C18
|
|
add r0, r7, #0
|
|
mov r1, #0x20
|
|
mov r2, #0
|
|
add r3, r4, #0
|
|
bl FUN_02017F18
|
|
add r0, r5, #0
|
|
add r1, r7, #0
|
|
bl FUN_02018744
|
|
ldr r6, _021D7A30 ; =0x021D9094
|
|
add r3, sp, #0x1c
|
|
ldmia r6!, {r0, r1}
|
|
add r2, r3, #0
|
|
stmia r3!, {r0, r1}
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldr r0, [r6]
|
|
mov r1, #2
|
|
str r0, [r3]
|
|
add r0, r5, #0
|
|
mov r3, #0
|
|
bl FUN_02016C18
|
|
mov r0, #2
|
|
mov r1, #0x20
|
|
mov r2, #0
|
|
add r3, r4, #0
|
|
bl FUN_02017F18
|
|
add r0, r5, #0
|
|
mov r1, #2
|
|
bl FUN_02018744
|
|
ldr r6, _021D7A34 ; =0x021D90CC
|
|
add r3, sp, #0
|
|
ldmia r6!, {r0, r1}
|
|
add r2, r3, #0
|
|
stmia r3!, {r0, r1}
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldr r0, [r6]
|
|
mov r1, #3
|
|
str r0, [r3]
|
|
add r0, r5, #0
|
|
mov r3, #0
|
|
bl FUN_02016C18
|
|
mov r0, #3
|
|
mov r1, #0x20
|
|
mov r2, #0
|
|
add r3, r4, #0
|
|
bl FUN_02017F18
|
|
add r0, r5, #0
|
|
mov r1, #3
|
|
bl FUN_02018744
|
|
add sp, #0x54
|
|
pop {r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_021D7A28: .word 0x04000008
|
|
_021D7A2C: .word 0x021D90B0
|
|
_021D7A30: .word 0x021D9094
|
|
_021D7A34: .word 0x021D90CC
|
|
thumb_func_end MOD64_021D7970
|
|
|
|
thumb_func_start MOD64_021D7A38
|
|
MOD64_021D7A38: ; 0x021D7A38
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
mov r1, #1
|
|
bl FUN_020178A0
|
|
add r0, r4, #0
|
|
mov r1, #2
|
|
bl FUN_020178A0
|
|
add r0, r4, #0
|
|
mov r1, #3
|
|
bl FUN_020178A0
|
|
pop {r4, pc}
|
|
thumb_func_end MOD64_021D7A38
|
|
|
|
thumb_func_start MOD64_021D7A54
|
|
MOD64_021D7A54: ; 0x021D7A54
|
|
push {r4, r5, lr}
|
|
sub sp, #0x14
|
|
add r4, r1, #0
|
|
add r5, r0, #0
|
|
add r0, r4, #0
|
|
mov r1, #1
|
|
bl FUN_02018FF4
|
|
add r1, r5, #0
|
|
add r1, #0x98
|
|
str r0, [r1]
|
|
add r0, r5, #0
|
|
add r0, #0x98
|
|
ldr r0, [r0]
|
|
bl FUN_0201901C
|
|
mov r0, #0x13
|
|
str r0, [sp]
|
|
mov r0, #0x17
|
|
str r0, [sp, #4]
|
|
mov r3, #4
|
|
add r1, r5, #0
|
|
str r3, [sp, #8]
|
|
mov r0, #2
|
|
str r0, [sp, #0xc]
|
|
mov r0, #0x1f
|
|
str r0, [sp, #0x10]
|
|
add r0, r5, #0
|
|
add r0, #0x94
|
|
add r1, #0x98
|
|
ldr r0, [r0]
|
|
ldr r1, [r1]
|
|
mov r2, #1
|
|
bl FUN_02019064
|
|
add r0, r5, #0
|
|
add r0, #0x98
|
|
ldr r0, [r0]
|
|
mov r1, #0xf
|
|
bl FUN_02019620
|
|
ldr r0, _021D7AE8 ; =0x000006A8
|
|
mov r1, #1
|
|
ldr r0, [r5, r0]
|
|
lsl r2, r1, #9
|
|
lsl r0, r0, #0x18
|
|
lsr r0, r0, #0x18
|
|
str r0, [sp]
|
|
add r0, r5, #0
|
|
str r4, [sp, #4]
|
|
add r0, #0x94
|
|
ldr r0, [r0]
|
|
mov r3, #0
|
|
bl FUN_0200CD68
|
|
mov r0, #0x20
|
|
str r0, [sp]
|
|
mov r0, #0x52
|
|
mov r1, #0x10
|
|
mov r2, #0
|
|
mov r3, #0x40
|
|
str r4, [sp, #4]
|
|
bl FUN_02006930
|
|
add r5, #0x98
|
|
mov r1, #0
|
|
mov r2, #2
|
|
ldr r0, [r5]
|
|
lsl r2, r2, #8
|
|
add r3, r1, #0
|
|
bl FUN_0200D0BC
|
|
add sp, #0x14
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_021D7AE8: .word 0x000006A8
|
|
thumb_func_end MOD64_021D7A54
|
|
|
|
thumb_func_start MOD64_021D7AEC
|
|
MOD64_021D7AEC: ; 0x021D7AEC
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
add r0, #0x98
|
|
ldr r0, [r0]
|
|
bl FUN_02019178
|
|
add r4, #0x98
|
|
ldr r0, [r4]
|
|
bl FreeToHeap
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
thumb_func_end MOD64_021D7AEC
|
|
|
|
thumb_func_start MOD64_021D7B04
|
|
MOD64_021D7B04: ; 0x021D7B04
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r5, r0, #0
|
|
add r0, r1, #0
|
|
bl FUN_02006D98
|
|
mov r1, #2
|
|
lsl r1, r1, #8
|
|
str r0, [r5, r1]
|
|
ldr r3, _021D7BA4 ; =0x021064B8
|
|
lsl r0, r1, #6
|
|
mov r1, #0
|
|
ldr r3, [r3]
|
|
add r2, r1, #0
|
|
blx r3
|
|
ldr r3, _021D7BA8 ; =0x021064C0
|
|
add r4, r0, #0
|
|
ldr r3, [r3]
|
|
mov r0, #0x80
|
|
mov r1, #0
|
|
mov r2, #1
|
|
blx r3
|
|
ldr r2, _021D7BAC ; =0x7FFF0000
|
|
add r6, r0, #0
|
|
mov r0, #2
|
|
lsl r0, r0, #8
|
|
and r2, r4
|
|
lsl r1, r4, #0x10
|
|
lsr r2, r2, #0x10
|
|
ldr r0, [r5, r0]
|
|
lsr r1, r1, #0xd
|
|
lsl r2, r2, #4
|
|
bl FUN_020081A8
|
|
ldr r2, _021D7BB0 ; =0xFFFF0000
|
|
mov r0, #2
|
|
lsl r0, r0, #8
|
|
and r2, r6
|
|
lsl r1, r6, #0x10
|
|
lsr r2, r2, #0x10
|
|
ldr r0, [r5, r0]
|
|
lsr r1, r1, #0xd
|
|
lsl r2, r2, #3
|
|
bl FUN_020081B4
|
|
mov r2, #0x81
|
|
lsl r2, r2, #2
|
|
add r0, r5, r2
|
|
add r1, r5, #0
|
|
sub r2, #0x81
|
|
bl MOD64_021D7BB4
|
|
mov r2, #0x82
|
|
lsl r2, r2, #2
|
|
add r0, r5, r2
|
|
add r1, r5, #0
|
|
sub r2, #0x82
|
|
bl MOD64_021D7BB4
|
|
mov r2, #0x83
|
|
lsl r2, r2, #2
|
|
add r0, r5, r2
|
|
add r1, r5, #0
|
|
sub r2, #0x83
|
|
bl MOD64_021D7BB4
|
|
mov r6, #0x81
|
|
mov r4, #0
|
|
mov r7, #6
|
|
lsl r6, r6, #2
|
|
_021D7B8E:
|
|
ldr r0, [r5, r6]
|
|
add r1, r7, #0
|
|
mov r2, #1
|
|
bl FUN_02007558
|
|
add r4, r4, #1
|
|
add r5, r5, #4
|
|
cmp r4, #3
|
|
blt _021D7B8E
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021D7BA4: .word 0x021064B8
|
|
_021D7BA8: .word 0x021064C0
|
|
_021D7BAC: .word 0x7FFF0000
|
|
_021D7BB0: .word 0xFFFF0000
|
|
thumb_func_end MOD64_021D7B04
|
|
|
|
thumb_func_start MOD64_021D7BB4
|
|
MOD64_021D7BB4: ; 0x021D7BB4
|
|
push {r4, r5, r6, lr}
|
|
sub sp, #0x20
|
|
add r6, r2, #0
|
|
add r5, r0, #0
|
|
lsl r0, r6, #0x10
|
|
add r4, r1, #0
|
|
lsr r0, r0, #0x10
|
|
mov r1, #0
|
|
bl FUN_02068A20
|
|
add r2, r0, #0
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
lsl r1, r6, #0x10
|
|
lsl r2, r2, #0x18
|
|
str r0, [sp, #8]
|
|
add r0, sp, #0x10
|
|
lsr r1, r1, #0x10
|
|
lsr r2, r2, #0x18
|
|
mov r3, #2
|
|
bl FUN_02068C00
|
|
ldr r0, _021D7C04 ; =0x000003FF
|
|
add r1, sp, #0x10
|
|
str r0, [sp]
|
|
mov r0, #0
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
str r0, [sp, #0xc]
|
|
mov r0, #2
|
|
lsl r0, r0, #8
|
|
ldr r0, [r4, r0]
|
|
mov r2, #0x80
|
|
mov r3, #0x60
|
|
bl FUN_020073A0
|
|
str r0, [r5]
|
|
add sp, #0x20
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_021D7C04: .word 0x000003FF
|
|
thumb_func_end MOD64_021D7BB4
|
|
|
|
thumb_func_start MOD64_021D7C08
|
|
MOD64_021D7C08: ; 0x021D7C08
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r7, r0, #0
|
|
mov r6, #0x81
|
|
mov r4, #0
|
|
add r5, r7, #0
|
|
lsl r6, r6, #2
|
|
_021D7C14:
|
|
ldr r0, [r5, r6]
|
|
cmp r0, #0
|
|
beq _021D7C1E
|
|
bl FUN_02007534
|
|
_021D7C1E:
|
|
add r4, r4, #1
|
|
add r5, r5, #4
|
|
cmp r4, #3
|
|
blt _021D7C14
|
|
mov r0, #2
|
|
lsl r0, r0, #8
|
|
ldr r0, [r7, r0]
|
|
bl FUN_020072E8
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
thumb_func_end MOD64_021D7C08
|
|
|
|
thumb_func_start MOD64_021D7C34
|
|
MOD64_021D7C34: ; 0x021D7C34
|
|
push {r4, r5, r6, lr}
|
|
sub sp, #0x10
|
|
ldr r5, _021D7C5C ; =0x021D9084
|
|
add r3, sp, #0
|
|
add r4, r0, #0
|
|
add r6, r1, #0
|
|
add r2, r3, #0
|
|
ldmia r5!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r5!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
add r0, r2, #0
|
|
str r6, [sp, #0xc]
|
|
bl FUN_02013CD4
|
|
ldr r1, _021D7C60 ; =0x0000064C
|
|
str r0, [r4, r1]
|
|
add sp, #0x10
|
|
pop {r4, r5, r6, pc}
|
|
nop
|
|
_021D7C5C: .word 0x021D9084
|
|
_021D7C60: .word 0x0000064C
|
|
thumb_func_end MOD64_021D7C34
|
|
|
|
thumb_func_start MOD64_021D7C64
|
|
MOD64_021D7C64: ; 0x021D7C64
|
|
ldr r1, _021D7C6C ; =0x0000064C
|
|
ldr r3, _021D7C70 ; =FUN_02013D18
|
|
ldr r0, [r0, r1]
|
|
bx r3
|
|
.align 2, 0
|
|
_021D7C6C: .word 0x0000064C
|
|
_021D7C70: .word FUN_02013D18
|
|
thumb_func_end MOD64_021D7C64
|
|
|
|
thumb_func_start MOD64_021D7C74
|
|
MOD64_021D7C74: ; 0x021D7C74
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
add r4, r1, #0
|
|
add r1, r5, #0
|
|
mov r0, #2
|
|
add r1, #0xbc
|
|
add r2, r4, #0
|
|
bl FUN_02008C9C
|
|
mov r1, #0x79
|
|
lsl r1, r1, #2
|
|
str r0, [r5, r1]
|
|
mov r0, #2
|
|
mov r1, #0
|
|
add r2, r4, #0
|
|
bl FUN_02008DEC
|
|
mov r1, #0x7a
|
|
lsl r1, r1, #2
|
|
str r0, [r5, r1]
|
|
mov r0, #2
|
|
mov r1, #1
|
|
add r2, r4, #0
|
|
bl FUN_02008DEC
|
|
mov r1, #0x7b
|
|
lsl r1, r1, #2
|
|
str r0, [r5, r1]
|
|
mov r0, #2
|
|
add r1, r0, #0
|
|
add r2, r4, #0
|
|
bl FUN_02008DEC
|
|
mov r1, #0x1f
|
|
lsl r1, r1, #4
|
|
str r0, [r5, r1]
|
|
mov r0, #2
|
|
mov r1, #3
|
|
add r2, r4, #0
|
|
bl FUN_02008DEC
|
|
mov r1, #0x7d
|
|
lsl r1, r1, #2
|
|
str r0, [r5, r1]
|
|
mov r0, #0x10
|
|
mov r1, #1
|
|
bl FUN_0201E6E4
|
|
mov r0, #0x10
|
|
mov r1, #1
|
|
bl FUN_0201E74C
|
|
pop {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
thumb_func_end MOD64_021D7C74
|
|
|
|
thumb_func_start MOD64_021D7CE0
|
|
MOD64_021D7CE0: ; 0x021D7CE0
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
mov r0, #0x79
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
bl FUN_0201FD58
|
|
mov r0, #0x7a
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
bl FUN_02008E2C
|
|
mov r0, #0x7b
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
bl FUN_02008E2C
|
|
mov r0, #0x1f
|
|
lsl r0, r0, #4
|
|
ldr r0, [r4, r0]
|
|
bl FUN_02008E2C
|
|
mov r0, #0x7d
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
bl FUN_02008E2C
|
|
pop {r4, pc}
|
|
thumb_func_end MOD64_021D7CE0
|
|
|
|
thumb_func_start MOD64_021D7D18
|
|
MOD64_021D7D18: ; 0x021D7D18
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r6, r1, #0
|
|
add r7, r2, #0
|
|
add r5, r0, #0
|
|
add r4, r3, #0
|
|
mov r1, #0
|
|
mov r2, #0x98
|
|
bl memset
|
|
add r0, r5, #0
|
|
add r1, r6, #0
|
|
add r2, r4, #0
|
|
bl MOD64_021D7D7C
|
|
ldr r3, [sp, #0x18]
|
|
add r0, r5, #0
|
|
add r1, r7, #0
|
|
add r2, r4, #0
|
|
bl MOD64_021D7DC0
|
|
mov r1, #1
|
|
lsl r1, r1, #0xc
|
|
add r0, r5, #0
|
|
add r2, r1, #0
|
|
add r3, r1, #0
|
|
bl MOD64_021D7EE0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
thumb_func_end MOD64_021D7D18
|
|
|
|
thumb_func_start MOD64_021D7D50
|
|
MOD64_021D7D50: ; 0x021D7D50
|
|
push {r4, r5, r6, lr}
|
|
add r4, r1, #0
|
|
add r6, r2, #0
|
|
add r5, r0, #0
|
|
mov r1, #0
|
|
mov r2, #0x98
|
|
bl memset
|
|
add r0, r5, #0
|
|
add r1, r4, #0
|
|
add r2, r6, #0
|
|
bl MOD64_021D7D7C
|
|
mov r1, #1
|
|
lsl r1, r1, #0xc
|
|
add r0, r5, #0
|
|
add r2, r1, #0
|
|
add r3, r1, #0
|
|
bl MOD64_021D7EE0
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
thumb_func_end MOD64_021D7D50
|
|
|
|
thumb_func_start MOD64_021D7D7C
|
|
MOD64_021D7D7C: ; 0x021D7D7C
|
|
push {r3, r4, lr}
|
|
sub sp, #4
|
|
add r3, r2, #0
|
|
mov r2, #0
|
|
add r4, r0, #0
|
|
str r2, [sp]
|
|
mov r0, #0x52
|
|
bl FUN_02006C98
|
|
str r0, [r4, #0x54]
|
|
bl FUN_020BC13C
|
|
str r0, [r4, #0x58]
|
|
ldrh r1, [r0, #0xe]
|
|
add r1, r0, r1
|
|
ldr r1, [r1, #0xc]
|
|
add r0, r0, r1
|
|
str r0, [r4, #0x5c]
|
|
ldr r0, [r4, #0x54]
|
|
bl FUN_020BC0FC
|
|
str r0, [r4, #0x60]
|
|
bl FUN_0201B3C4
|
|
ldr r0, [r4, #0x54]
|
|
ldr r1, [r4, #0x60]
|
|
bl FUN_0201B3A8
|
|
ldr r1, [r4, #0x5c]
|
|
add r0, r4, #0
|
|
bl FUN_020B80B4
|
|
add sp, #4
|
|
pop {r3, r4, pc}
|
|
thumb_func_end MOD64_021D7D7C
|
|
|
|
thumb_func_start MOD64_021D7DC0
|
|
MOD64_021D7DC0: ; 0x021D7DC0
|
|
push {r3, r4, r5, r6, lr}
|
|
sub sp, #4
|
|
add r6, r2, #0
|
|
mov r2, #0
|
|
add r4, r0, #0
|
|
add r5, r3, #0
|
|
str r2, [sp]
|
|
mov r0, #0x52
|
|
add r3, r6, #0
|
|
bl FUN_02006C98
|
|
str r0, [r4, #0x64]
|
|
mov r1, #0
|
|
bl FUN_020BC4C8
|
|
str r0, [r4, #0x68]
|
|
ldr r1, [r4, #0x68]
|
|
ldr r2, [r4, #0x5c]
|
|
add r0, r5, #0
|
|
bl FUN_020BB8D0
|
|
str r0, [r4, #0x6c]
|
|
ldr r1, [r4, #0x68]
|
|
ldr r2, [r4, #0x5c]
|
|
ldr r3, [r4, #0x60]
|
|
bl FUN_020B8110
|
|
ldr r1, [r4, #0x6c]
|
|
add r0, r4, #0
|
|
bl FUN_020B7EFC
|
|
add sp, #4
|
|
pop {r3, r4, r5, r6, pc}
|
|
.align 2, 0
|
|
thumb_func_end MOD64_021D7DC0
|
|
|
|
thumb_func_start MOD64_021D7E04
|
|
MOD64_021D7E04: ; 0x021D7E04
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
ldr r0, [r5, #0x54]
|
|
add r4, r1, #0
|
|
cmp r0, #0
|
|
beq _021D7E14
|
|
bl FreeToHeap
|
|
_021D7E14:
|
|
ldr r0, [r5, #0x64]
|
|
cmp r0, #0
|
|
beq _021D7E28
|
|
ldr r1, [r5, #0x6c]
|
|
add r0, r4, #0
|
|
bl thunk_FUN_020ae84c
|
|
ldr r0, [r5, #0x64]
|
|
bl FreeToHeap
|
|
_021D7E28:
|
|
add r0, r5, #0
|
|
mov r1, #0
|
|
mov r2, #0x98
|
|
bl memset
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end MOD64_021D7E04
|
|
|
|
thumb_func_start MOD64_021D7E34
|
|
MOD64_021D7E34: ; 0x021D7E34
|
|
push {r4, lr}
|
|
sub sp, #0x48
|
|
add r4, r0, #0
|
|
add r0, sp, #0x24
|
|
bl MTX_Identity33_
|
|
add r0, r4, #0
|
|
add r0, #0x90
|
|
ldrh r0, [r0]
|
|
ldr r3, _021D7ECC ; =0x020FFA38
|
|
asr r0, r0, #4
|
|
lsl r2, r0, #1
|
|
lsl r1, r2, #1
|
|
add r2, r2, #1
|
|
lsl r2, r2, #1
|
|
ldrsh r1, [r3, r1]
|
|
ldrsh r2, [r3, r2]
|
|
add r0, sp, #0
|
|
bl MTX_RotX33_
|
|
add r1, sp, #0x24
|
|
add r0, sp, #0
|
|
add r2, r1, #0
|
|
bl MTX_Concat33
|
|
add r0, r4, #0
|
|
add r0, #0x92
|
|
ldrh r0, [r0]
|
|
ldr r3, _021D7ECC ; =0x020FFA38
|
|
asr r0, r0, #4
|
|
lsl r2, r0, #1
|
|
lsl r1, r2, #1
|
|
add r2, r2, #1
|
|
lsl r2, r2, #1
|
|
ldrsh r1, [r3, r1]
|
|
ldrsh r2, [r3, r2]
|
|
add r0, sp, #0
|
|
bl MTX_RotY33_
|
|
add r1, sp, #0x24
|
|
add r0, sp, #0
|
|
add r2, r1, #0
|
|
bl MTX_Concat33
|
|
add r0, r4, #0
|
|
add r0, #0x94
|
|
ldrh r0, [r0]
|
|
ldr r3, _021D7ECC ; =0x020FFA38
|
|
asr r0, r0, #4
|
|
lsl r2, r0, #1
|
|
lsl r1, r2, #1
|
|
add r2, r2, #1
|
|
lsl r2, r2, #1
|
|
ldrsh r1, [r3, r1]
|
|
ldrsh r2, [r3, r2]
|
|
add r0, sp, #0
|
|
bl MTX_RotZ33_
|
|
add r1, sp, #0x24
|
|
add r0, sp, #0
|
|
add r2, r1, #0
|
|
bl MTX_Concat33
|
|
ldr r0, [r4, #0x74]
|
|
cmp r0, #0
|
|
beq _021D7EC8
|
|
add r1, r4, #0
|
|
add r0, r4, #0
|
|
add r4, #0x84
|
|
add r1, #0x78
|
|
add r2, sp, #0x24
|
|
add r3, r4, #0
|
|
bl FUN_0201B26C
|
|
_021D7EC8:
|
|
add sp, #0x48
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_021D7ECC: .word 0x020FFA38
|
|
thumb_func_end MOD64_021D7E34
|
|
|
|
thumb_func_start MOD64_021D7ED0
|
|
MOD64_021D7ED0: ; 0x021D7ED0
|
|
str r1, [r0, #0x74]
|
|
bx lr
|
|
thumb_func_end MOD64_021D7ED0
|
|
|
|
thumb_func_start MOD64_021D7ED4
|
|
MOD64_021D7ED4: ; 0x021D7ED4
|
|
str r1, [r0, #0x78]
|
|
str r2, [r0, #0x7c]
|
|
add r0, #0x80
|
|
str r3, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
thumb_func_end MOD64_021D7ED4
|
|
|
|
thumb_func_start MOD64_021D7EE0
|
|
MOD64_021D7EE0: ; 0x021D7EE0
|
|
push {r3, r4}
|
|
add r4, r0, #0
|
|
add r4, #0x84
|
|
str r1, [r4]
|
|
add r1, r0, #0
|
|
add r1, #0x88
|
|
str r2, [r1]
|
|
add r0, #0x8c
|
|
str r3, [r0]
|
|
pop {r3, r4}
|
|
bx lr
|
|
.align 2, 0
|
|
thumb_func_end MOD64_021D7EE0
|
|
|
|
thumb_func_start MOD64_021D7EF8
|
|
MOD64_021D7EF8: ; 0x021D7EF8
|
|
push {r3, r4}
|
|
add r4, r0, #0
|
|
add r4, #0x90
|
|
strh r1, [r4]
|
|
add r1, r0, #0
|
|
add r1, #0x92
|
|
strh r2, [r1]
|
|
add r0, #0x94
|
|
strh r3, [r0]
|
|
pop {r3, r4}
|
|
bx lr
|
|
.align 2, 0
|
|
thumb_func_end MOD64_021D7EF8
|
|
|
|
thumb_func_start MOD64_021D7F10
|
|
MOD64_021D7F10: ; 0x021D7F10
|
|
ldr r1, [r0, #0x6c]
|
|
ldr r2, [r0, #0x70]
|
|
ldr r1, [r1, #8]
|
|
ldrh r1, [r1, #4]
|
|
lsl r3, r1, #0xc
|
|
mov r1, #1
|
|
lsl r1, r1, #0xc
|
|
add r1, r2, r1
|
|
cmp r1, r3
|
|
bge _021D7F2A
|
|
str r1, [r0, #0x70]
|
|
mov r2, #0
|
|
b _021D7F2E
|
|
_021D7F2A:
|
|
str r3, [r0, #0x70]
|
|
mov r2, #1
|
|
_021D7F2E:
|
|
ldr r1, [r0, #0x70]
|
|
ldr r0, [r0, #0x6c]
|
|
str r1, [r0]
|
|
add r0, r2, #0
|
|
bx lr
|
|
thumb_func_end MOD64_021D7F10
|
|
|
|
thumb_func_start MOD64_021D7F38
|
|
MOD64_021D7F38: ; 0x021D7F38
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
mov r0, #1
|
|
ldr r1, [r4, #0x70]
|
|
lsl r0, r0, #0xc
|
|
add r0, r1, r0
|
|
ldr r1, [r4, #0x6c]
|
|
ldr r1, [r1, #8]
|
|
ldrh r1, [r1, #4]
|
|
lsl r1, r1, #0xc
|
|
bl _s32_div_f
|
|
str r1, [r4, #0x70]
|
|
ldr r0, [r4, #0x6c]
|
|
str r1, [r0]
|
|
pop {r4, pc}
|
|
thumb_func_end MOD64_021D7F38
|
|
|
|
thumb_func_start MOD64_021D7F58
|
|
MOD64_021D7F58: ; 0x021D7F58
|
|
str r1, [r0, #0x70]
|
|
ldr r0, [r0, #0x6c]
|
|
str r1, [r0]
|
|
bx lr
|
|
thumb_func_end MOD64_021D7F58
|
|
|
|
thumb_func_start MOD64_021D7F60
|
|
MOD64_021D7F60: ; 0x021D7F60
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #8
|
|
add r6, r0, #0
|
|
mov r0, #0x25
|
|
add r7, r1, #0
|
|
lsl r0, r0, #4
|
|
add r1, r6, r0
|
|
add r0, #0x10
|
|
str r1, [sp]
|
|
add r0, r6, r0
|
|
mov r1, #1
|
|
mov r2, #0
|
|
add r3, r7, #0
|
|
bl MOD64_021D7D18
|
|
mov r0, #0x26
|
|
lsl r0, r0, #4
|
|
add r0, r6, r0
|
|
mov r1, #1
|
|
bl MOD64_021D7ED0
|
|
mov r0, #0xbe
|
|
lsl r0, r0, #2
|
|
add r0, r6, r0
|
|
mov r1, #8
|
|
add r2, r7, #0
|
|
bl MOD64_021D7D50
|
|
mov r0, #0xbe
|
|
lsl r0, r0, #2
|
|
add r0, r6, r0
|
|
mov r1, #0
|
|
bl MOD64_021D7ED0
|
|
mov r0, #0x26
|
|
lsl r0, r0, #4
|
|
add r1, r6, r0
|
|
lsr r0, r0, #1
|
|
add r5, r1, r0
|
|
mov r0, #0x25
|
|
lsl r0, r0, #4
|
|
add r0, r6, r0
|
|
mov r4, #2
|
|
str r0, [sp, #4]
|
|
_021D7FB8:
|
|
sub r0, r4, #2
|
|
lsl r2, r0, #1
|
|
ldr r0, [sp, #4]
|
|
add r1, r2, #3
|
|
str r0, [sp]
|
|
add r0, r5, #0
|
|
add r2, r2, #2
|
|
add r3, r7, #0
|
|
bl MOD64_021D7D18
|
|
add r0, r5, #0
|
|
mov r1, #0
|
|
bl MOD64_021D7ED0
|
|
add r4, r4, #1
|
|
add r5, #0x98
|
|
cmp r4, #4
|
|
ble _021D7FB8
|
|
ldr r0, _021D8028 ; =0x00000558
|
|
mov r1, #9
|
|
add r0, r6, r0
|
|
add r2, r7, #0
|
|
bl MOD64_021D7D50
|
|
ldr r0, _021D8028 ; =0x00000558
|
|
mov r1, #1
|
|
add r0, r6, r0
|
|
bl MOD64_021D7ED0
|
|
ldr r0, _021D8028 ; =0x00000558
|
|
mov r3, #0xa
|
|
ldr r2, _021D802C ; =0xFFFE4000
|
|
add r0, r6, r0
|
|
mov r1, #0
|
|
lsl r3, r3, #0xe
|
|
bl MOD64_021D7ED4
|
|
ldr r0, _021D8028 ; =0x00000558
|
|
mov r1, #0xe
|
|
lsl r1, r1, #0xa
|
|
mov r2, #1
|
|
add r0, r6, r0
|
|
lsl r2, r2, #0xc
|
|
add r3, r1, #0
|
|
bl MOD64_021D7EE0
|
|
ldr r0, _021D8028 ; =0x00000558
|
|
mov r1, #0
|
|
ldr r2, _021D8030 ; =0x00007FFF
|
|
add r0, r6, r0
|
|
add r3, r1, #0
|
|
bl MOD64_021D7EF8
|
|
add sp, #8
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021D8028: .word 0x00000558
|
|
_021D802C: .word 0xFFFE4000
|
|
_021D8030: .word 0x00007FFF
|
|
thumb_func_end MOD64_021D7F60
|
|
|
|
thumb_func_start MOD64_021D8034
|
|
MOD64_021D8034: ; 0x021D8034
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r6, r0, #0
|
|
mov r0, #0x26
|
|
lsl r0, r0, #4
|
|
add r7, r0, #0
|
|
mov r4, #0
|
|
add r5, r6, r0
|
|
sub r7, #0x10
|
|
_021D8044:
|
|
add r0, r5, #0
|
|
add r1, r6, r7
|
|
bl MOD64_021D7E04
|
|
add r4, r4, #1
|
|
add r5, #0x98
|
|
cmp r4, #6
|
|
blt _021D8044
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
thumb_func_end MOD64_021D8034
|
|
|
|
thumb_func_start MOD64_021D8058
|
|
MOD64_021D8058: ; 0x021D8058
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
mov r0, #0
|
|
ldr r2, _021D809C ; =0xFFFFF000
|
|
add r1, r0, #0
|
|
add r3, r0, #0
|
|
bl FUN_020B8418
|
|
ldr r1, _021D80A0 ; =0x00007FFF
|
|
mov r0, #0
|
|
bl FUN_020B8404
|
|
ldr r0, _021D80A0 ; =0x00007FFF
|
|
mov r2, #0
|
|
add r1, r0, #0
|
|
bl FUN_020B83E0
|
|
ldr r0, _021D80A0 ; =0x00007FFF
|
|
mov r2, #0
|
|
add r1, r0, #0
|
|
bl FUN_020B83BC
|
|
mov r0, #0x26
|
|
lsl r0, r0, #4
|
|
mov r4, #0
|
|
add r5, r5, r0
|
|
_021D808C:
|
|
add r0, r5, #0
|
|
bl MOD64_021D7E34
|
|
add r4, r4, #1
|
|
add r5, #0x98
|
|
cmp r4, #6
|
|
blt _021D808C
|
|
pop {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_021D809C: .word 0xFFFFF000
|
|
_021D80A0: .word 0x00007FFF
|
|
thumb_func_end MOD64_021D8058
|
|
|
|
thumb_func_start MOD64_021D80A4
|
|
MOD64_021D80A4: ; 0x021D80A4
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldr r1, [r4, #8]
|
|
cmp r1, #1
|
|
bne _021D80B2
|
|
mov r0, #0
|
|
pop {r4, pc}
|
|
_021D80B2:
|
|
bl MOD64_021D83D0
|
|
cmp r0, #5
|
|
bhi _021D80F4
|
|
add r0, r0, r0
|
|
add r0, pc
|
|
ldrh r0, [r0, #6]
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
add pc, r0
|
|
_021D80C6: ; jump table
|
|
.short _021D80F4 - _021D80C6 - 2 ; case 0
|
|
.short _021D80F4 - _021D80C6 - 2 ; case 1
|
|
.short _021D80F4 - _021D80C6 - 2 ; case 2
|
|
.short _021D80D2 - _021D80C6 - 2 ; case 3
|
|
.short _021D80F4 - _021D80C6 - 2 ; case 4
|
|
.short _021D80F0 - _021D80C6 - 2 ; case 5
|
|
_021D80D2:
|
|
add r0, r4, #0
|
|
bl MOD64_021D8384
|
|
ldr r0, _021D80F8 ; =0x021C48B8
|
|
mov r1, #1
|
|
ldr r0, [r0, #0x48]
|
|
tst r0, r1
|
|
beq _021D80F4
|
|
add r0, r4, #0
|
|
bl MOD64_021D83C4
|
|
ldr r0, _021D80FC ; =0x000005DC
|
|
bl FUN_020054C8
|
|
b _021D80F4
|
|
_021D80F0:
|
|
mov r0, #1
|
|
pop {r4, pc}
|
|
_021D80F4:
|
|
mov r0, #0
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_021D80F8: .word 0x021C48B8
|
|
_021D80FC: .word 0x000005DC
|
|
thumb_func_end MOD64_021D80A4
|
|
|
|
thumb_func_start MOD64_021D8100
|
|
MOD64_021D8100: ; 0x021D8100
|
|
push {r3, r4, r5, lr}
|
|
add r4, r0, #0
|
|
add r5, r1, #0
|
|
bl MOD64_021D83D0
|
|
cmp r0, #5
|
|
bhi _021D81CA
|
|
add r0, r0, r0
|
|
add r0, pc
|
|
ldrh r0, [r0, #6]
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
add pc, r0
|
|
_021D811A: ; jump table
|
|
.short _021D8126 - _021D811A - 2 ; case 0
|
|
.short _021D8146 - _021D811A - 2 ; case 1
|
|
.short _021D815E - _021D811A - 2 ; case 2
|
|
.short _021D81B0 - _021D811A - 2 ; case 3
|
|
.short _021D81BA - _021D811A - 2 ; case 4
|
|
.short _021D81C4 - _021D811A - 2 ; case 5
|
|
_021D8126:
|
|
mov r1, #1
|
|
str r1, [r4, #8]
|
|
mov r0, #0x24
|
|
str r0, [r4, #0xc]
|
|
add r0, r4, #0
|
|
bl MOD64_021D83C4
|
|
mov r0, #6
|
|
str r0, [sp]
|
|
ldr r0, _021D81CC ; =0x04000050
|
|
mov r1, #8
|
|
mov r2, #0x15
|
|
mov r3, #0xa
|
|
bl G2x_SetBlendAlpha_
|
|
pop {r3, r4, r5, pc}
|
|
_021D8146:
|
|
ldr r0, [r4, #0xc]
|
|
sub r0, r0, #1
|
|
str r0, [r4, #0xc]
|
|
bpl _021D81CA
|
|
add r0, r4, #0
|
|
mov r1, #1
|
|
bl MOD64_021D83C4
|
|
ldr r0, _021D81D0 ; =0x000006CA
|
|
bl FUN_020054C8
|
|
pop {r3, r4, r5, pc}
|
|
_021D815E:
|
|
mov r0, #0x26
|
|
lsl r0, r0, #4
|
|
add r0, r4, r0
|
|
bl MOD64_021D7F10
|
|
cmp r0, #0
|
|
beq _021D81CA
|
|
mov r0, #0x26
|
|
lsl r0, r0, #4
|
|
add r0, r4, r0
|
|
mov r1, #0
|
|
bl MOD64_021D7ED0
|
|
mov r0, #0xbe
|
|
lsl r0, r0, #2
|
|
add r0, r4, r0
|
|
mov r1, #1
|
|
bl MOD64_021D7ED0
|
|
mov r0, #0x39
|
|
lsl r0, r0, #4
|
|
add r0, r4, r0
|
|
mov r1, #1
|
|
bl MOD64_021D7ED0
|
|
ldr r0, _021D81D4 ; =0x00000428
|
|
mov r1, #1
|
|
add r0, r4, r0
|
|
bl MOD64_021D7ED0
|
|
mov r0, #0x13
|
|
lsl r0, r0, #6
|
|
add r0, r4, r0
|
|
mov r1, #1
|
|
bl MOD64_021D7ED0
|
|
add r0, r4, #0
|
|
mov r1, #1
|
|
bl MOD64_021D83C4
|
|
pop {r3, r4, r5, pc}
|
|
_021D81B0:
|
|
add r0, r4, #0
|
|
add r1, r5, #0
|
|
bl MOD64_021D83D4
|
|
pop {r3, r4, r5, pc}
|
|
_021D81BA:
|
|
add r0, r4, #0
|
|
add r1, r5, #0
|
|
bl MOD64_021D8570
|
|
pop {r3, r4, r5, pc}
|
|
_021D81C4:
|
|
ldr r0, _021D81CC ; =0x04000050
|
|
mov r1, #0
|
|
strh r1, [r0]
|
|
_021D81CA:
|
|
pop {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_021D81CC: .word 0x04000050
|
|
_021D81D0: .word 0x000006CA
|
|
_021D81D4: .word 0x00000428
|
|
thumb_func_end MOD64_021D8100
|
|
|
|
thumb_func_start MOD64_021D81D8
|
|
MOD64_021D81D8: ; 0x021D81D8
|
|
push {r4, lr}
|
|
sub sp, #8
|
|
add r4, r0, #0
|
|
bl FUN_020222AC
|
|
mov r1, #0
|
|
mov r0, #0x11
|
|
add r2, r1, #0
|
|
bl FUN_020BB1C0
|
|
bl FUN_020BB394
|
|
bl FUN_020B02C8
|
|
mov r0, #2
|
|
lsl r0, r0, #8
|
|
ldr r0, [r4, r0]
|
|
bl FUN_02006ED4
|
|
ldr r0, _021D8248 ; =0x0000064C
|
|
ldr r0, [r4, r0]
|
|
bl FUN_02013D5C
|
|
mov r2, #1
|
|
mov r0, #0x12
|
|
add r1, sp, #4
|
|
str r2, [sp, #4]
|
|
bl FUN_020BB1C0
|
|
mov r1, #0
|
|
mov r0, #0x11
|
|
add r2, r1, #0
|
|
bl FUN_020BB1C0
|
|
bl FUN_0201EBA4
|
|
add r0, r4, #0
|
|
bl MOD64_021D8058
|
|
mov r2, #1
|
|
mov r0, #0x12
|
|
add r1, sp, #0
|
|
str r2, [sp]
|
|
bl FUN_020BB1C0
|
|
mov r0, #0
|
|
add r1, r0, #0
|
|
bl FUN_020222B4
|
|
mov r0, #0x79
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
bl FUN_0201FDEC
|
|
add sp, #8
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_021D8248: .word 0x0000064C
|
|
thumb_func_end MOD64_021D81D8
|
|
|
|
thumb_func_start MOD64_021D824C
|
|
MOD64_021D824C: ; 0x021D824C
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
add r0, r1, #0
|
|
bl FUN_0201EB64
|
|
mov r1, #0x5f
|
|
lsl r1, r1, #4
|
|
str r0, [r4, r1]
|
|
ldr r0, [r4, r1]
|
|
add r1, r1, #4
|
|
add r1, r4, r1
|
|
bl MOD64_021D8268
|
|
pop {r4, pc}
|
|
thumb_func_end MOD64_021D824C
|
|
|
|
thumb_func_start MOD64_021D8268
|
|
MOD64_021D8268: ; 0x021D8268
|
|
push {r4, lr}
|
|
sub sp, #0x20
|
|
mov r3, #0
|
|
str r3, [r1]
|
|
str r3, [r1, #4]
|
|
add r4, r0, #0
|
|
ldr r2, _021D82B4 ; =0x0000EAAB
|
|
str r3, [r1, #8]
|
|
add r0, sp, #0xc
|
|
strh r2, [r0]
|
|
strh r3, [r0, #2]
|
|
strh r3, [r0, #4]
|
|
str r3, [sp]
|
|
mov r0, #1
|
|
str r0, [sp, #4]
|
|
add r0, r1, #0
|
|
mov r1, #0x4b
|
|
ldr r3, _021D82B8 ; =0x00000FA4
|
|
lsl r1, r1, #0xe
|
|
add r2, sp, #0xc
|
|
str r4, [sp, #8]
|
|
bl FUN_0201ECA8
|
|
mov r1, #0
|
|
mov r0, #1
|
|
lsl r0, r0, #0xc
|
|
str r0, [sp, #0x18]
|
|
str r1, [sp, #0x14]
|
|
str r1, [sp, #0x1c]
|
|
add r0, sp, #0x14
|
|
add r1, r4, #0
|
|
bl FUN_0201EC58
|
|
add r0, r4, #0
|
|
bl FUN_0201EB8C
|
|
add sp, #0x20
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_021D82B4: .word 0x0000EAAB
|
|
_021D82B8: .word 0x00000FA4
|
|
thumb_func_end MOD64_021D8268
|
|
|
|
thumb_func_start MOD64_021D82BC
|
|
MOD64_021D82BC: ; 0x021D82BC
|
|
mov r1, #0x5f
|
|
lsl r1, r1, #4
|
|
ldr r3, _021D82C8 ; =FUN_0201EB70
|
|
ldr r0, [r0, r1]
|
|
bx r3
|
|
nop
|
|
_021D82C8: .word FUN_0201EB70
|
|
thumb_func_end MOD64_021D82BC
|
|
|
|
thumb_func_start MOD64_021D82CC
|
|
MOD64_021D82CC: ; 0x021D82CC
|
|
push {r4, r5, r6, r7}
|
|
mov r5, #0
|
|
add r4, r5, #0
|
|
add r6, r0, #0
|
|
sub r3, r5, #4
|
|
add r1, r5, #0
|
|
sub r4, #0x2c
|
|
mov r2, #0x20
|
|
_021D82DC:
|
|
cmp r5, #0
|
|
beq _021D82EA
|
|
cmp r5, #1
|
|
beq _021D82F2
|
|
cmp r5, #2
|
|
beq _021D82FC
|
|
b _021D8306
|
|
_021D82EA:
|
|
str r4, [r6, #0x58]
|
|
str r3, [r6, #0x5c]
|
|
str r2, [r6, #0x60]
|
|
b _021D8306
|
|
_021D82F2:
|
|
str r1, [r6, #0x58]
|
|
str r3, [r6, #0x5c]
|
|
mov r7, #0x3e
|
|
str r7, [r6, #0x60]
|
|
b _021D8306
|
|
_021D82FC:
|
|
mov r7, #0x26
|
|
str r7, [r6, #0x58]
|
|
str r3, [r6, #0x5c]
|
|
mov r7, #0x1a
|
|
str r7, [r6, #0x60]
|
|
_021D8306:
|
|
add r5, r5, #1
|
|
add r6, #0xc
|
|
cmp r5, #3
|
|
blt _021D82DC
|
|
mov r5, #0
|
|
mov r2, #0x82
|
|
mov r1, #0x52
|
|
mov r4, #0x4e
|
|
mov r3, #0x37
|
|
_021D8318:
|
|
cmp r5, #0
|
|
beq _021D8326
|
|
cmp r5, #1
|
|
beq _021D8330
|
|
cmp r5, #2
|
|
beq _021D833A
|
|
b _021D8346
|
|
_021D8326:
|
|
add r6, r0, #0
|
|
str r4, [r0, #0x7c]
|
|
add r6, #0x80
|
|
str r3, [r6]
|
|
b _021D8346
|
|
_021D8330:
|
|
add r6, r0, #0
|
|
str r2, [r0, #0x7c]
|
|
add r6, #0x80
|
|
str r1, [r6]
|
|
b _021D8346
|
|
_021D833A:
|
|
mov r6, #0xac
|
|
add r7, r0, #0
|
|
str r6, [r0, #0x7c]
|
|
add r7, #0x80
|
|
mov r6, #0x32
|
|
str r6, [r7]
|
|
_021D8346:
|
|
add r5, r5, #1
|
|
add r0, #8
|
|
cmp r5, #3
|
|
blt _021D8318
|
|
pop {r4, r5, r6, r7}
|
|
bx lr
|
|
.align 2, 0
|
|
thumb_func_end MOD64_021D82CC
|
|
|
|
thumb_func_start MOD64_021D8354
|
|
MOD64_021D8354: ; 0x021D8354
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r5, r0, #0
|
|
mov r0, #0x26
|
|
lsl r0, r0, #4
|
|
mov r4, #0
|
|
add r6, r5, r0
|
|
mov r7, #0x98
|
|
_021D8362:
|
|
add r0, r4, #2
|
|
add r1, r0, #0
|
|
mul r1, r7
|
|
add r0, r6, r1
|
|
ldr r1, [r5, #0x58]
|
|
ldr r2, [r5, #0x5c]
|
|
ldr r3, [r5, #0x60]
|
|
lsl r1, r1, #0xc
|
|
lsl r2, r2, #0xc
|
|
lsl r3, r3, #0xc
|
|
bl MOD64_021D7ED4
|
|
add r4, r4, #1
|
|
add r5, #0xc
|
|
cmp r4, #3
|
|
blt _021D8362
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
thumb_func_end MOD64_021D8354
|
|
|
|
thumb_func_start MOD64_021D8384
|
|
MOD64_021D8384: ; 0x021D8384
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldr r0, _021D83BC ; =0x021C48B8
|
|
ldr r1, [r0, #0x48]
|
|
mov r0, #0x20
|
|
tst r0, r1
|
|
beq _021D83A0
|
|
ldr r0, [r4, #0x54]
|
|
sub r0, r0, #1
|
|
bmi _021D83A0
|
|
str r0, [r4, #0x54]
|
|
ldr r0, _021D83C0 ; =0x000005DC
|
|
bl FUN_020054C8
|
|
_021D83A0:
|
|
ldr r0, _021D83BC ; =0x021C48B8
|
|
ldr r1, [r0, #0x48]
|
|
mov r0, #0x10
|
|
tst r0, r1
|
|
beq _021D83BA
|
|
ldr r0, [r4, #0x54]
|
|
add r0, r0, #1
|
|
cmp r0, #3
|
|
bge _021D83BA
|
|
str r0, [r4, #0x54]
|
|
ldr r0, _021D83C0 ; =0x000005DC
|
|
bl FUN_020054C8
|
|
_021D83BA:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_021D83BC: .word 0x021C48B8
|
|
_021D83C0: .word 0x000005DC
|
|
thumb_func_end MOD64_021D8384
|
|
|
|
thumb_func_start MOD64_021D83C4
|
|
MOD64_021D83C4: ; 0x021D83C4
|
|
ldr r2, [r0]
|
|
add r1, r2, r1
|
|
str r1, [r0]
|
|
mov r1, #0
|
|
str r1, [r0, #4]
|
|
bx lr
|
|
thumb_func_end MOD64_021D83C4
|
|
|
|
thumb_func_start MOD64_021D83D0
|
|
MOD64_021D83D0: ; 0x021D83D0
|
|
ldr r0, [r0]
|
|
bx lr
|
|
thumb_func_end MOD64_021D83D0
|
|
|
|
thumb_func_start MOD64_021D83D4
|
|
MOD64_021D83D4: ; 0x021D83D4
|
|
push {r3, r4, lr}
|
|
sub sp, #0xc
|
|
add r4, r0, #0
|
|
ldr r2, [r4, #4]
|
|
cmp r2, #8
|
|
bls _021D83E2
|
|
b _021D8510
|
|
_021D83E2:
|
|
add r2, r2, r2
|
|
add r2, pc
|
|
ldrh r2, [r2, #6]
|
|
lsl r2, r2, #0x10
|
|
asr r2, r2, #0x10
|
|
add pc, r2
|
|
_021D83EE: ; jump table
|
|
.short _021D8400 - _021D83EE - 2 ; case 0
|
|
.short _021D8422 - _021D83EE - 2 ; case 1
|
|
.short _021D843A - _021D83EE - 2 ; case 2
|
|
.short _021D8450 - _021D83EE - 2 ; case 3
|
|
.short _021D8480 - _021D83EE - 2 ; case 4
|
|
.short _021D849E - _021D83EE - 2 ; case 5
|
|
.short _021D84CE - _021D83EE - 2 ; case 6
|
|
.short _021D84EC - _021D83EE - 2 ; case 7
|
|
.short _021D8506 - _021D83EE - 2 ; case 8
|
|
_021D8400:
|
|
mov r2, #0x5f
|
|
lsl r2, r2, #4
|
|
ldr r1, [r4, r2]
|
|
add r2, r2, #4
|
|
add r0, #0x10
|
|
add r2, r4, r2
|
|
bl MOD64_021D8864
|
|
mov r0, #2
|
|
mov r1, #1
|
|
bl FUN_0201E6E4
|
|
ldr r0, [r4, #4]
|
|
add sp, #0xc
|
|
add r0, r0, #1
|
|
str r0, [r4, #4]
|
|
pop {r3, r4, pc}
|
|
_021D8422:
|
|
add r0, #0x10
|
|
bl MOD64_021D8928
|
|
cmp r0, #0
|
|
beq _021D8510
|
|
mov r0, #6
|
|
str r0, [r4, #0xc]
|
|
ldr r0, [r4, #4]
|
|
add sp, #0xc
|
|
add r0, r0, #1
|
|
str r0, [r4, #4]
|
|
pop {r3, r4, pc}
|
|
_021D843A:
|
|
ldr r1, [r4, #0xc]
|
|
sub r1, r1, #1
|
|
str r1, [r4, #0xc]
|
|
bpl _021D8510
|
|
bl MOD64_021D8554
|
|
ldr r0, [r4, #4]
|
|
add sp, #0xc
|
|
add r0, r0, #1
|
|
str r0, [r4, #4]
|
|
pop {r3, r4, pc}
|
|
_021D8450:
|
|
ldr r0, _021D8514 ; =0x0001020F
|
|
mov r2, #5
|
|
str r0, [sp]
|
|
ldr r0, _021D8518 ; =0x000006AC
|
|
lsl r2, r2, #6
|
|
ldr r0, [r4, r0]
|
|
mov r3, #0
|
|
str r0, [sp, #4]
|
|
add r0, r4, #0
|
|
add r0, #0xac
|
|
str r0, [sp, #8]
|
|
add r0, r4, #0
|
|
add r0, #0x98
|
|
ldr r0, [r0]
|
|
bl MOD64_021D8744
|
|
mov r1, #0x6b
|
|
lsl r1, r1, #4
|
|
strb r0, [r4, r1]
|
|
ldr r0, [r4, #4]
|
|
add sp, #0xc
|
|
add r0, r0, #1
|
|
str r0, [r4, #4]
|
|
pop {r3, r4, pc}
|
|
_021D8480:
|
|
mov r0, #0x6b
|
|
lsl r0, r0, #4
|
|
ldrb r0, [r4, r0]
|
|
bl FUN_0201BD70
|
|
cmp r0, #0
|
|
bne _021D8510
|
|
add r0, r4, #0
|
|
bl MOD64_021D87B8
|
|
ldr r0, [r4, #4]
|
|
add sp, #0xc
|
|
add r0, r0, #1
|
|
str r0, [r4, #4]
|
|
pop {r3, r4, pc}
|
|
_021D849E:
|
|
ldr r0, _021D8514 ; =0x0001020F
|
|
mov r2, #5
|
|
str r0, [sp]
|
|
ldr r0, _021D8518 ; =0x000006AC
|
|
lsl r2, r2, #6
|
|
ldr r0, [r4, r0]
|
|
mov r3, #7
|
|
str r0, [sp, #4]
|
|
add r0, r4, #0
|
|
add r0, #0xac
|
|
str r0, [sp, #8]
|
|
add r0, r4, #0
|
|
add r0, #0x98
|
|
ldr r0, [r0]
|
|
bl MOD64_021D8744
|
|
mov r1, #0x6b
|
|
lsl r1, r1, #4
|
|
strb r0, [r4, r1]
|
|
ldr r0, [r4, #4]
|
|
add sp, #0xc
|
|
add r0, r0, #1
|
|
str r0, [r4, #4]
|
|
pop {r3, r4, pc}
|
|
_021D84CE:
|
|
mov r0, #0x6b
|
|
lsl r0, r0, #4
|
|
ldrb r0, [r4, r0]
|
|
bl FUN_0201BD70
|
|
cmp r0, #0
|
|
bne _021D8510
|
|
add r0, r4, #0
|
|
bl MOD64_021D87B8
|
|
ldr r0, [r4, #4]
|
|
add sp, #0xc
|
|
add r0, r0, #1
|
|
str r0, [r4, #4]
|
|
pop {r3, r4, pc}
|
|
_021D84EC:
|
|
mov r0, #6
|
|
lsl r0, r0, #8
|
|
add r0, r4, r0
|
|
mov r1, #1
|
|
bl MOD64_021D8B58
|
|
mov r0, #0
|
|
str r0, [r4, #8]
|
|
ldr r0, [r4, #4]
|
|
add sp, #0xc
|
|
add r0, r0, #1
|
|
str r0, [r4, #4]
|
|
pop {r3, r4, pc}
|
|
_021D8506:
|
|
bl MOD64_021D851C
|
|
add r0, r4, #0
|
|
bl MOD64_021D8554
|
|
_021D8510:
|
|
add sp, #0xc
|
|
pop {r3, r4, pc}
|
|
.align 2, 0
|
|
_021D8514: .word 0x0001020F
|
|
_021D8518: .word 0x000006AC
|
|
thumb_func_end MOD64_021D83D4
|
|
|
|
thumb_func_start MOD64_021D851C
|
|
MOD64_021D851C: ; 0x021D851C
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r6, r0, #0
|
|
mov r0, #0x26
|
|
lsl r0, r0, #4
|
|
mov r5, #0
|
|
add r4, r6, r0
|
|
mov r7, #0x98
|
|
_021D852A:
|
|
ldr r0, [r6, #0x54]
|
|
cmp r0, r5
|
|
bne _021D853E
|
|
add r0, r5, #2
|
|
add r1, r0, #0
|
|
mul r1, r7
|
|
add r0, r4, r1
|
|
bl MOD64_021D7F38
|
|
b _021D854C
|
|
_021D853E:
|
|
add r1, r5, #2
|
|
mov r0, #0x98
|
|
mul r0, r1
|
|
add r0, r4, r0
|
|
mov r1, #0
|
|
bl MOD64_021D7F58
|
|
_021D854C:
|
|
add r5, r5, #1
|
|
cmp r5, #3
|
|
blt _021D852A
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
thumb_func_end MOD64_021D851C
|
|
|
|
thumb_func_start MOD64_021D8554
|
|
MOD64_021D8554: ; 0x021D8554
|
|
add r2, r0, #0
|
|
ldr r0, [r2, #0x54]
|
|
ldr r3, _021D856C ; =MOD64_021D8B64
|
|
lsl r1, r0, #3
|
|
mov r0, #6
|
|
lsl r0, r0, #8
|
|
add r0, r2, r0
|
|
add r2, r2, r1
|
|
ldr r1, [r2, #0x7c]
|
|
add r2, #0x80
|
|
ldr r2, [r2]
|
|
bx r3
|
|
.align 2, 0
|
|
_021D856C: .word MOD64_021D8B64
|
|
thumb_func_end MOD64_021D8554
|
|
|
|
thumb_func_start MOD64_021D8570
|
|
MOD64_021D8570: ; 0x021D8570
|
|
push {r3, r4, r5, lr}
|
|
sub sp, #8
|
|
add r4, r0, #0
|
|
ldr r2, [r4, #4]
|
|
add r5, r1, #0
|
|
cmp r2, #4
|
|
bls _021D8580
|
|
b _021D86D0
|
|
_021D8580:
|
|
add r2, r2, r2
|
|
add r2, pc
|
|
ldrh r2, [r2, #6]
|
|
lsl r2, r2, #0x10
|
|
asr r2, r2, #0x10
|
|
add pc, r2
|
|
_021D858C: ; jump table
|
|
.short _021D8596 - _021D858C - 2 ; case 0
|
|
.short _021D85C2 - _021D858C - 2 ; case 1
|
|
.short _021D8604 - _021D858C - 2 ; case 2
|
|
.short _021D8644 - _021D858C - 2 ; case 3
|
|
.short _021D867C - _021D858C - 2 ; case 4
|
|
_021D8596:
|
|
mov r0, #6
|
|
lsl r0, r0, #8
|
|
add r0, r4, r0
|
|
mov r1, #0
|
|
bl MOD64_021D8B58
|
|
add r0, r4, #0
|
|
bl MOD64_021D8554
|
|
add r0, r4, #0
|
|
bl MOD64_021D902C
|
|
add r0, r4, #0
|
|
bl MOD64_021D8D40
|
|
ldr r0, [r4, #4]
|
|
add sp, #8
|
|
add r0, r0, #1
|
|
str r0, [r4, #4]
|
|
mov r0, #1
|
|
str r0, [r4, #8]
|
|
pop {r3, r4, r5, pc}
|
|
_021D85C2:
|
|
mov r0, #0x65
|
|
lsl r0, r0, #4
|
|
add r0, r4, r0
|
|
mov r1, #1
|
|
bl MOD64_021D8C30
|
|
ldr r0, [r4, #0x54]
|
|
mov r2, #0
|
|
lsl r0, r0, #2
|
|
add r1, r4, r0
|
|
mov r0, #0x81
|
|
lsl r0, r0, #2
|
|
ldr r0, [r1, r0]
|
|
mov r1, #6
|
|
bl FUN_02007558
|
|
add r0, r4, #0
|
|
bl MOD64_021D8DCC
|
|
cmp r0, #0
|
|
beq _021D86D0
|
|
ldr r0, [r4, #0x54]
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x10
|
|
bl MOD64_021D9044
|
|
bl FUN_02005578
|
|
ldr r0, [r4, #4]
|
|
add sp, #8
|
|
add r0, r0, #1
|
|
str r0, [r4, #4]
|
|
pop {r3, r4, r5, pc}
|
|
_021D8604:
|
|
ldr r0, _021D86D4 ; =0x0001020F
|
|
mov r2, #0xff
|
|
str r0, [sp]
|
|
str r2, [sp, #4]
|
|
add r0, r4, #0
|
|
add r0, #0x98
|
|
ldr r3, [r4, #0x54]
|
|
ldr r0, [r0]
|
|
add r2, #0x41
|
|
add r3, r3, #1
|
|
bl MOD64_021D86DC
|
|
add r0, r4, #0
|
|
add r1, r4, #0
|
|
str r5, [sp]
|
|
add r0, #0x94
|
|
ldr r0, [r0]
|
|
ldr r2, _021D86D8 ; =0x0000029E
|
|
add r1, #0xb0
|
|
mov r3, #1
|
|
bl FUN_02002198
|
|
add r1, r4, #0
|
|
add r1, #0xb8
|
|
str r0, [r1]
|
|
mov r0, #0
|
|
str r0, [r4, #8]
|
|
ldr r0, [r4, #4]
|
|
add sp, #8
|
|
add r0, r0, #1
|
|
str r0, [r4, #4]
|
|
pop {r3, r4, r5, pc}
|
|
_021D8644:
|
|
add r0, #0xb8
|
|
ldr r0, [r0]
|
|
bl FUN_020021AC
|
|
cmp r0, #0
|
|
beq _021D8660
|
|
mov r1, #1
|
|
mvn r1, r1
|
|
cmp r0, r1
|
|
beq _021D866C
|
|
add r1, r1, #1
|
|
add sp, #8
|
|
cmp r0, r1
|
|
pop {r3, r4, r5, pc}
|
|
_021D8660:
|
|
add r0, r4, #0
|
|
mov r1, #1
|
|
bl MOD64_021D83C4
|
|
add sp, #8
|
|
pop {r3, r4, r5, pc}
|
|
_021D866C:
|
|
ldr r0, [r4, #4]
|
|
add r0, r0, #1
|
|
str r0, [r4, #4]
|
|
add r0, r4, #0
|
|
bl MOD64_021D8DB0
|
|
add sp, #8
|
|
pop {r3, r4, r5, pc}
|
|
_021D867C:
|
|
bl MOD64_021D8DCC
|
|
cmp r0, #0
|
|
beq _021D86D0
|
|
mov r1, #0
|
|
add r0, r4, #0
|
|
mvn r1, r1
|
|
bl MOD64_021D83C4
|
|
mov r0, #7
|
|
str r0, [r4, #4]
|
|
mov r0, #0x65
|
|
lsl r0, r0, #4
|
|
add r0, r4, r0
|
|
mov r1, #0
|
|
bl MOD64_021D8C30
|
|
ldr r0, [r4, #0x54]
|
|
mov r2, #1
|
|
lsl r0, r0, #2
|
|
add r1, r4, r0
|
|
mov r0, #0x81
|
|
lsl r0, r0, #2
|
|
ldr r0, [r1, r0]
|
|
mov r1, #6
|
|
bl FUN_02007558
|
|
ldr r0, _021D86D4 ; =0x0001020F
|
|
mov r2, #0xff
|
|
str r0, [sp]
|
|
add r0, r4, #0
|
|
str r2, [sp, #4]
|
|
add r0, #0x98
|
|
ldr r0, [r0]
|
|
add r1, r5, #0
|
|
add r2, #0x41
|
|
mov r3, #7
|
|
bl MOD64_021D86DC
|
|
mov r1, #0x6b
|
|
lsl r1, r1, #4
|
|
strb r0, [r4, r1]
|
|
_021D86D0:
|
|
add sp, #8
|
|
pop {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_021D86D4: .word 0x0001020F
|
|
_021D86D8: .word 0x0000029E
|
|
thumb_func_end MOD64_021D8570
|
|
|
|
thumb_func_start MOD64_021D86DC
|
|
MOD64_021D86DC: ; 0x021D86DC
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x10
|
|
add r4, r1, #0
|
|
add r5, r0, #0
|
|
add r6, r3, #0
|
|
mov r0, #0
|
|
mov r1, #0x1a
|
|
add r3, r4, #0
|
|
bl FUN_0200A86C
|
|
add r4, r0, #0
|
|
bne _021D86F8
|
|
bl ErrorHandling
|
|
_021D86F8:
|
|
add r0, r4, #0
|
|
add r1, r6, #0
|
|
bl FUN_0200A914
|
|
add r6, r0, #0
|
|
add r0, r5, #0
|
|
mov r1, #0xf
|
|
bl FUN_02019620
|
|
mov r3, #0
|
|
ldr r0, [sp, #0x2c]
|
|
str r3, [sp]
|
|
str r0, [sp, #4]
|
|
ldr r0, [sp, #0x28]
|
|
mov r1, #1
|
|
str r0, [sp, #8]
|
|
add r0, r5, #0
|
|
add r2, r6, #0
|
|
str r3, [sp, #0xc]
|
|
bl FUN_0201BDE0
|
|
mov r1, #0
|
|
mov r2, #2
|
|
add r7, r0, #0
|
|
add r0, r5, #0
|
|
lsl r2, r2, #8
|
|
add r3, r1, #0
|
|
bl FUN_0200D0BC
|
|
add r0, r6, #0
|
|
bl FUN_02021A20
|
|
add r0, r4, #0
|
|
bl FUN_0200A8B8
|
|
add r0, r7, #0
|
|
add sp, #0x10
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
thumb_func_end MOD64_021D86DC
|
|
|
|
thumb_func_start MOD64_021D8744
|
|
MOD64_021D8744: ; 0x021D8744
|
|
push {r4, r5, r6, r7, lr}
|
|
sub sp, #0x14
|
|
ldr r4, [sp, #0x30]
|
|
add r5, r0, #0
|
|
ldr r0, [r4]
|
|
add r6, r1, #0
|
|
add r7, r2, #0
|
|
str r3, [sp, #0x10]
|
|
cmp r0, #0
|
|
beq _021D875C
|
|
bl ErrorHandling
|
|
_021D875C:
|
|
mov r0, #0
|
|
mov r1, #0x1a
|
|
add r2, r7, #0
|
|
add r3, r6, #0
|
|
bl FUN_0200A86C
|
|
add r6, r0, #0
|
|
bne _021D8770
|
|
bl ErrorHandling
|
|
_021D8770:
|
|
ldr r1, [sp, #0x10]
|
|
add r0, r6, #0
|
|
bl FUN_0200A914
|
|
str r0, [r4]
|
|
add r0, r5, #0
|
|
mov r1, #0xf
|
|
bl FUN_02019620
|
|
mov r3, #0
|
|
ldr r0, [sp, #0x2c]
|
|
str r3, [sp]
|
|
str r0, [sp, #4]
|
|
ldr r0, [sp, #0x28]
|
|
mov r1, #1
|
|
str r0, [sp, #8]
|
|
str r3, [sp, #0xc]
|
|
ldr r2, [r4]
|
|
add r0, r5, #0
|
|
bl FUN_0201BDE0
|
|
mov r1, #0
|
|
mov r2, #2
|
|
add r4, r0, #0
|
|
add r0, r5, #0
|
|
lsl r2, r2, #8
|
|
add r3, r1, #0
|
|
bl FUN_0200D0BC
|
|
add r0, r6, #0
|
|
bl FUN_0200A8B8
|
|
add r0, r4, #0
|
|
add sp, #0x14
|
|
pop {r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
thumb_func_end MOD64_021D8744
|
|
|
|
thumb_func_start MOD64_021D87B8
|
|
MOD64_021D87B8: ; 0x021D87B8
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
add r0, #0xac
|
|
ldr r0, [r0]
|
|
bl FUN_02021A20
|
|
mov r0, #0
|
|
add r4, #0xac
|
|
str r0, [r4]
|
|
pop {r4, pc}
|
|
thumb_func_end MOD64_021D87B8
|
|
|
|
thumb_func_start MOD64_021D87CC
|
|
MOD64_021D87CC: ; 0x021D87CC
|
|
push {r4, lr}
|
|
sub sp, #8
|
|
add r2, r0, #0
|
|
add r4, r1, #0
|
|
mov r1, #1
|
|
add r2, #0xb0
|
|
strb r1, [r2]
|
|
add r2, r0, #0
|
|
mov r3, #0x17
|
|
add r2, #0xb1
|
|
strb r3, [r2]
|
|
add r2, r0, #0
|
|
mov r3, #0xc
|
|
add r2, #0xb2
|
|
strb r3, [r2]
|
|
add r2, r0, #0
|
|
mov r3, #5
|
|
add r2, #0xb3
|
|
strb r3, [r2]
|
|
add r2, r0, #0
|
|
mov r3, #4
|
|
add r2, #0xb4
|
|
strb r3, [r2]
|
|
add r2, r0, #0
|
|
mov r3, #3
|
|
add r2, #0xb5
|
|
strb r3, [r2]
|
|
add r2, r0, #0
|
|
mov r3, #0xa7
|
|
add r2, #0xb6
|
|
strh r3, [r2]
|
|
mov r2, #0
|
|
str r2, [sp]
|
|
str r4, [sp, #4]
|
|
add r0, #0x94
|
|
ldr r0, [r0]
|
|
ldr r2, _021D882C ; =0x0000029E
|
|
add r3, r1, #0
|
|
bl FUN_0200CB00
|
|
mov r0, #0
|
|
mov r1, #0x60
|
|
add r2, r4, #0
|
|
bl FUN_02002ED0
|
|
add sp, #8
|
|
pop {r4, pc}
|
|
nop
|
|
_021D882C: .word 0x0000029E
|
|
thumb_func_end MOD64_021D87CC
|
|
|
|
thumb_func_start MOD64_021D8830
|
|
MOD64_021D8830: ; 0x021D8830
|
|
str r1, [r0]
|
|
str r1, [r0, #4]
|
|
sub r1, r2, r1
|
|
str r1, [r0, #8]
|
|
str r3, [r0, #0xc]
|
|
bx lr
|
|
thumb_func_end MOD64_021D8830
|
|
|
|
thumb_func_start MOD64_021D883C
|
|
MOD64_021D883C: ; 0x021D883C
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
ldr r3, [r5, #0xc]
|
|
cmp r1, r3
|
|
blt _021D884A
|
|
mov r4, #1
|
|
b _021D884C
|
|
_021D884A:
|
|
mov r4, #0
|
|
_021D884C:
|
|
ldr r2, [r5, #8]
|
|
add r0, r2, #0
|
|
mul r0, r1
|
|
add r1, r3, #0
|
|
bl _s32_div_f
|
|
ldr r1, [r5, #4]
|
|
add r0, r0, r1
|
|
str r0, [r5]
|
|
add r0, r4, #0
|
|
pop {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
thumb_func_end MOD64_021D883C
|
|
|
|
thumb_func_start MOD64_021D8864
|
|
MOD64_021D8864: ; 0x021D8864
|
|
push {r4, r5, r6, lr}
|
|
add r5, r0, #0
|
|
ldr r0, [r5, #0x40]
|
|
add r4, r1, #0
|
|
add r6, r2, #0
|
|
cmp r0, #0
|
|
beq _021D8876
|
|
bl ErrorHandling
|
|
_021D8876:
|
|
ldr r1, _021D88B8 ; =0xFFFFEAAB
|
|
ldr r2, _021D88BC ; =0xFFFFDC72
|
|
add r0, r5, #0
|
|
mov r3, #6
|
|
bl MOD64_021D8830
|
|
add r0, r5, #0
|
|
mov r1, #0x4b
|
|
mov r2, #0x32
|
|
add r0, #0x10
|
|
lsl r1, r1, #0xe
|
|
lsl r2, r2, #0xe
|
|
mov r3, #6
|
|
bl MOD64_021D8830
|
|
add r0, r5, #0
|
|
mov r2, #9
|
|
add r0, #0x20
|
|
mov r1, #0
|
|
lsl r2, r2, #0xe
|
|
mov r3, #6
|
|
bl MOD64_021D8830
|
|
mov r2, #0
|
|
str r2, [r5, #0x3c]
|
|
str r4, [r5, #0x30]
|
|
str r6, [r5, #0x34]
|
|
ldr r0, _021D88C0 ; =MOD64_021D88C4
|
|
add r1, r5, #0
|
|
str r2, [r5, #0x38]
|
|
bl FUN_0200CA44
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_021D88B8: .word 0xFFFFEAAB
|
|
_021D88BC: .word 0xFFFFDC72
|
|
_021D88C0: .word MOD64_021D88C4
|
|
thumb_func_end MOD64_021D8864
|
|
|
|
thumb_func_start MOD64_021D88C4
|
|
MOD64_021D88C4: ; 0x021D88C4
|
|
push {r4, r5, r6, lr}
|
|
sub sp, #8
|
|
add r5, r1, #0
|
|
ldr r1, [r5, #0x38]
|
|
add r6, r0, #0
|
|
add r0, r5, #0
|
|
bl MOD64_021D883C
|
|
add r4, r0, #0
|
|
add r0, r5, #0
|
|
ldr r1, [r5, #0x38]
|
|
add r0, #0x10
|
|
bl MOD64_021D883C
|
|
add r0, r5, #0
|
|
ldr r1, [r5, #0x38]
|
|
add r0, #0x20
|
|
bl MOD64_021D883C
|
|
ldr r1, [r5]
|
|
add r0, sp, #0
|
|
strh r1, [r0]
|
|
mov r1, #0
|
|
strh r1, [r0, #2]
|
|
strh r1, [r0, #4]
|
|
ldr r1, [r5, #0x30]
|
|
add r0, sp, #0
|
|
bl FUN_0201EF90
|
|
ldr r0, [r5, #0x10]
|
|
ldr r1, [r5, #0x30]
|
|
bl FUN_0201EFE0
|
|
ldr r1, [r5, #0x20]
|
|
ldr r0, [r5, #0x34]
|
|
str r1, [r0, #8]
|
|
ldr r0, [r5, #0x38]
|
|
add r0, r0, #1
|
|
str r0, [r5, #0x38]
|
|
cmp r4, #1
|
|
bne _021D8924
|
|
add r0, r6, #0
|
|
bl FUN_0200CAB4
|
|
mov r0, #0
|
|
str r0, [r5, #0x40]
|
|
mov r0, #1
|
|
str r0, [r5, #0x3c]
|
|
_021D8924:
|
|
add sp, #8
|
|
pop {r4, r5, r6, pc}
|
|
thumb_func_end MOD64_021D88C4
|
|
|
|
thumb_func_start MOD64_021D8928
|
|
MOD64_021D8928: ; 0x021D8928
|
|
ldr r0, [r0, #0x3c]
|
|
bx lr
|
|
thumb_func_end MOD64_021D8928
|
|
|
|
thumb_func_start MOD64_021D892C
|
|
MOD64_021D892C: ; 0x021D892C
|
|
push {r4, r5, r6, lr}
|
|
sub sp, #0x10
|
|
add r6, r2, #0
|
|
mov r2, #0xa
|
|
add r5, r0, #0
|
|
str r2, [sp]
|
|
mov r0, #1
|
|
str r0, [sp, #4]
|
|
mov r0, #0x7a
|
|
add r4, r1, #0
|
|
str r6, [sp, #8]
|
|
lsl r0, r0, #2
|
|
ldr r0, [r5, r0]
|
|
mov r1, #0x52
|
|
mov r3, #0
|
|
bl FUN_02008F34
|
|
str r0, [r4, #4]
|
|
bl FUN_02009B04
|
|
ldr r0, [r4, #4]
|
|
bl FUN_02009474
|
|
mov r2, #0xb
|
|
str r2, [sp]
|
|
mov r0, #1
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
mov r0, #0x7b
|
|
str r6, [sp, #0xc]
|
|
lsl r0, r0, #2
|
|
ldr r0, [r5, r0]
|
|
mov r1, #0x52
|
|
mov r3, #0
|
|
bl FUN_02008FEC
|
|
str r0, [r4, #8]
|
|
bl FUN_02009D68
|
|
ldr r0, [r4, #8]
|
|
bl FUN_02009474
|
|
mov r2, #0xc
|
|
str r2, [sp]
|
|
mov r0, #2
|
|
str r0, [sp, #4]
|
|
mov r0, #0x1f
|
|
str r6, [sp, #8]
|
|
lsl r0, r0, #4
|
|
ldr r0, [r5, r0]
|
|
mov r1, #0x52
|
|
mov r3, #0
|
|
bl FUN_020090AC
|
|
str r0, [r4, #0xc]
|
|
mov r2, #0xd
|
|
str r2, [sp]
|
|
mov r0, #3
|
|
str r0, [sp, #4]
|
|
mov r0, #0x7d
|
|
str r6, [sp, #8]
|
|
lsl r0, r0, #2
|
|
ldr r0, [r5, r0]
|
|
mov r1, #0x52
|
|
mov r3, #0
|
|
bl FUN_020090AC
|
|
str r0, [r4, #0x10]
|
|
add sp, #0x10
|
|
pop {r4, r5, r6, pc}
|
|
thumb_func_end MOD64_021D892C
|
|
|
|
thumb_func_start MOD64_021D89B8
|
|
MOD64_021D89B8: ; 0x021D89B8
|
|
push {r3, r4, r5, lr}
|
|
add r4, r1, #0
|
|
add r5, r0, #0
|
|
ldr r0, [r4, #4]
|
|
bl FUN_02009C0C
|
|
ldr r0, [r4, #8]
|
|
bl FUN_02009E04
|
|
mov r0, #0x7a
|
|
lsl r0, r0, #2
|
|
ldr r0, [r5, r0]
|
|
ldr r1, [r4, #4]
|
|
bl FUN_02009490
|
|
mov r0, #0x7b
|
|
lsl r0, r0, #2
|
|
ldr r0, [r5, r0]
|
|
ldr r1, [r4, #8]
|
|
bl FUN_02009490
|
|
mov r0, #0x1f
|
|
lsl r0, r0, #4
|
|
ldr r0, [r5, r0]
|
|
ldr r1, [r4, #0xc]
|
|
bl FUN_02009490
|
|
mov r0, #0x7d
|
|
lsl r0, r0, #2
|
|
ldr r0, [r5, r0]
|
|
ldr r1, [r4, #0x10]
|
|
bl FUN_02009490
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end MOD64_021D89B8
|
|
|
|
thumb_func_start MOD64_021D89FC
|
|
MOD64_021D89FC: ; 0x021D89FC
|
|
push {r4, r5, r6, lr}
|
|
sub sp, #0x70
|
|
add r5, r0, #0
|
|
mov r0, #0xd
|
|
str r0, [sp]
|
|
sub r0, #0xe
|
|
str r0, [sp, #4]
|
|
add r6, r2, #0
|
|
str r0, [sp, #8]
|
|
mov r0, #0
|
|
mov r2, #0x7a
|
|
add r4, r1, #0
|
|
str r0, [sp, #0xc]
|
|
mov r1, #1
|
|
lsl r2, r2, #2
|
|
str r1, [sp, #0x10]
|
|
ldr r1, [r5, r2]
|
|
mov r3, #0xc
|
|
str r1, [sp, #0x14]
|
|
add r1, r2, #4
|
|
ldr r1, [r5, r1]
|
|
str r1, [sp, #0x18]
|
|
add r1, r2, #0
|
|
add r1, #8
|
|
ldr r1, [r5, r1]
|
|
add r2, #0xc
|
|
str r1, [sp, #0x1c]
|
|
ldr r1, [r5, r2]
|
|
mov r2, #0xb
|
|
str r1, [sp, #0x20]
|
|
str r0, [sp, #0x24]
|
|
str r0, [sp, #0x28]
|
|
add r0, sp, #0x4c
|
|
mov r1, #0xa
|
|
bl FUN_02008AA4
|
|
mov r0, #0x79
|
|
lsl r0, r0, #2
|
|
ldr r0, [r5, r0]
|
|
str r0, [sp, #0x2c]
|
|
add r0, sp, #0x4c
|
|
str r0, [sp, #0x30]
|
|
mov r0, #0x20
|
|
str r0, [sp, #0x40]
|
|
mov r0, #1
|
|
str r0, [sp, #0x44]
|
|
mov r0, #0
|
|
str r0, [sp, #0x34]
|
|
str r0, [sp, #0x38]
|
|
add r0, sp, #0x2c
|
|
str r6, [sp, #0x48]
|
|
bl FUN_0201FF84
|
|
mov r1, #0
|
|
str r0, [r4]
|
|
bl FUN_020200A0
|
|
mov r0, #0
|
|
str r0, [r4, #0x1c]
|
|
str r0, [r4, #0x20]
|
|
add sp, #0x70
|
|
pop {r4, r5, r6, pc}
|
|
thumb_func_end MOD64_021D89FC
|
|
|
|
thumb_func_start MOD64_021D8A78
|
|
MOD64_021D8A78: ; 0x021D8A78
|
|
ldr r3, _021D8A80 ; =FUN_0201FFC8
|
|
ldr r0, [r0]
|
|
bx r3
|
|
nop
|
|
_021D8A80: .word FUN_0201FFC8
|
|
thumb_func_end MOD64_021D8A78
|
|
|
|
thumb_func_start MOD64_021D8A84
|
|
MOD64_021D8A84: ; 0x021D8A84
|
|
mov r3, #0
|
|
str r3, [r0]
|
|
str r1, [r0, #4]
|
|
str r2, [r0, #8]
|
|
str r3, [r0, #0xc]
|
|
bx lr
|
|
thumb_func_end MOD64_021D8A84
|
|
|
|
thumb_func_start MOD64_021D8A90
|
|
MOD64_021D8A90: ; 0x021D8A90
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldr r1, [r4, #0xc]
|
|
ldr r0, _021D8AD8 ; =0x0000FFFF
|
|
mul r0, r1
|
|
ldr r1, [r4, #8]
|
|
bl _s32_div_f
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x10
|
|
asr r0, r0, #4
|
|
lsl r1, r0, #2
|
|
ldr r0, _021D8ADC ; =0x020FFA38
|
|
ldr r2, [r4, #4]
|
|
ldrsh r0, [r0, r1]
|
|
asr r3, r2, #0x1f
|
|
asr r1, r0, #0x1f
|
|
bl _ll_mul
|
|
mov r2, #2
|
|
mov r3, #0
|
|
lsl r2, r2, #0xa
|
|
add r2, r0, r2
|
|
adc r1, r3
|
|
lsl r0, r1, #0x14
|
|
lsr r1, r2, #0xc
|
|
orr r1, r0
|
|
str r1, [r4]
|
|
ldr r0, [r4, #0xc]
|
|
ldr r1, [r4, #8]
|
|
add r0, r0, #1
|
|
bl _s32_div_f
|
|
str r1, [r4, #0xc]
|
|
pop {r4, pc}
|
|
nop
|
|
_021D8AD8: .word 0x0000FFFF
|
|
_021D8ADC: .word 0x020FFA38
|
|
thumb_func_end MOD64_021D8A90
|
|
|
|
thumb_func_start MOD64_021D8AE0
|
|
MOD64_021D8AE0: ; 0x021D8AE0
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldr r0, [r4, #0x28]
|
|
cmp r0, #0
|
|
beq _021D8AEE
|
|
bl ErrorHandling
|
|
_021D8AEE:
|
|
add r0, r4, #0
|
|
mov r1, #2
|
|
add r0, #0x2c
|
|
lsl r1, r1, #0xe
|
|
mov r2, #0x20
|
|
bl MOD64_021D8A84
|
|
ldr r0, _021D8B0C ; =MOD64_021D8B10
|
|
add r1, r4, #0
|
|
mov r2, #0
|
|
bl FUN_0200CA44
|
|
str r0, [r4, #0x28]
|
|
pop {r4, pc}
|
|
nop
|
|
_021D8B0C: .word MOD64_021D8B10
|
|
thumb_func_end MOD64_021D8AE0
|
|
|
|
thumb_func_start MOD64_021D8B10
|
|
MOD64_021D8B10: ; 0x021D8B10
|
|
push {r4, r5, lr}
|
|
sub sp, #0xc
|
|
add r4, r1, #0
|
|
add r0, r4, #0
|
|
add r0, #0x2c
|
|
bl MOD64_021D8A90
|
|
add r5, r4, #0
|
|
add r5, #0x1c
|
|
add r3, sp, #0
|
|
ldmia r5!, {r0, r1}
|
|
add r2, r3, #0
|
|
stmia r3!, {r0, r1}
|
|
ldr r0, [r5]
|
|
str r0, [r3]
|
|
ldr r1, [sp, #4]
|
|
ldr r0, [r4, #0x2c]
|
|
add r0, r1, r0
|
|
str r0, [sp, #4]
|
|
ldr r0, [r4]
|
|
add r1, r2, #0
|
|
bl FUN_02020044
|
|
add sp, #0xc
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
thumb_func_end MOD64_021D8B10
|
|
|
|
thumb_func_start MOD64_021D8B44
|
|
MOD64_021D8B44: ; 0x021D8B44
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldr r0, [r4, #0x28]
|
|
cmp r0, #0
|
|
beq _021D8B56
|
|
bl FUN_0200CAB4
|
|
mov r0, #0
|
|
str r0, [r4, #0x28]
|
|
_021D8B56:
|
|
pop {r4, pc}
|
|
thumb_func_end MOD64_021D8B44
|
|
|
|
thumb_func_start MOD64_021D8B58
|
|
MOD64_021D8B58: ; 0x021D8B58
|
|
ldr r3, _021D8B60 ; =FUN_020200A0
|
|
ldr r0, [r0]
|
|
bx r3
|
|
nop
|
|
_021D8B60: .word FUN_020200A0
|
|
thumb_func_end MOD64_021D8B58
|
|
|
|
thumb_func_start MOD64_021D8B64
|
|
MOD64_021D8B64: ; 0x021D8B64
|
|
lsl r1, r1, #0xc
|
|
str r1, [r0, #0x1c]
|
|
lsl r1, r2, #0xc
|
|
str r1, [r0, #0x20]
|
|
bx lr
|
|
.align 2, 0
|
|
thumb_func_end MOD64_021D8B64
|
|
|
|
thumb_func_start MOD64_021D8B70
|
|
MOD64_021D8B70: ; 0x021D8B70
|
|
push {r4, r5, r6, lr}
|
|
sub sp, #0x38
|
|
add r5, r0, #0
|
|
add r3, r5, #0
|
|
add r6, r2, #0
|
|
add r4, r1, #0
|
|
mov r0, #0x52
|
|
mov r1, #0xe
|
|
mov r2, #0
|
|
add r3, #0x14
|
|
str r6, [sp]
|
|
bl FUN_02006BB0
|
|
add r2, r5, #0
|
|
str r0, [r5, #0xc]
|
|
mov r0, #0x52
|
|
mov r1, #0xf
|
|
add r2, #0x18
|
|
add r3, r6, #0
|
|
bl FUN_02006C08
|
|
str r0, [r5, #0x10]
|
|
ldr r0, _021D8C04 ; =0x0000064C
|
|
ldr r0, [r4, r0]
|
|
str r0, [sp, #4]
|
|
ldr r0, [r5, #0x14]
|
|
str r0, [sp, #8]
|
|
add r0, sp, #4
|
|
bl FUN_02013D98
|
|
str r0, [r5]
|
|
ldr r0, _021D8C04 ; =0x0000064C
|
|
ldr r0, [r4, r0]
|
|
str r0, [sp, #0x2c]
|
|
ldr r0, [r5, #0x18]
|
|
str r0, [sp, #0x30]
|
|
mov r0, #1
|
|
str r0, [sp, #0x34]
|
|
add r0, sp, #0x2c
|
|
bl FUN_02013E14
|
|
str r0, [r5, #4]
|
|
ldr r0, _021D8C04 ; =0x0000064C
|
|
mov r2, #0
|
|
ldr r0, [r4, r0]
|
|
mov r1, #0x1f
|
|
str r0, [sp, #0xc]
|
|
ldr r0, [r5]
|
|
str r0, [sp, #0x10]
|
|
ldr r0, [r5, #4]
|
|
str r0, [sp, #0x14]
|
|
add r0, sp, #4
|
|
strh r2, [r0, #0x14]
|
|
strh r2, [r0, #0x16]
|
|
strh r2, [r0, #0x18]
|
|
str r1, [sp, #0x20]
|
|
ldr r1, _021D8C08 ; =0x000003FE
|
|
str r1, [sp, #0x24]
|
|
strh r2, [r0, #0x24]
|
|
add r0, sp, #0xc
|
|
bl FUN_02013E84
|
|
str r0, [r5, #8]
|
|
mov r1, #0
|
|
bl FUN_02013EB0
|
|
mov r1, #0x40
|
|
ldr r0, [r5, #8]
|
|
add r2, r1, #0
|
|
bl FUN_02013ED8
|
|
add sp, #0x38
|
|
pop {r4, r5, r6, pc}
|
|
nop
|
|
_021D8C04: .word 0x0000064C
|
|
_021D8C08: .word 0x000003FE
|
|
thumb_func_end MOD64_021D8B70
|
|
|
|
thumb_func_start MOD64_021D8C0C
|
|
MOD64_021D8C0C: ; 0x021D8C0C
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldr r0, [r4, #8]
|
|
bl FUN_02013EA8
|
|
ldr r0, [r4]
|
|
bl FUN_02013DD4
|
|
ldr r0, [r4, #4]
|
|
bl FUN_02013E44
|
|
ldr r0, [r4, #0xc]
|
|
bl FreeToHeap
|
|
ldr r0, [r4, #0x10]
|
|
bl FreeToHeap
|
|
pop {r4, pc}
|
|
thumb_func_end MOD64_021D8C0C
|
|
|
|
thumb_func_start MOD64_021D8C30
|
|
MOD64_021D8C30: ; 0x021D8C30
|
|
ldr r3, _021D8C38 ; =FUN_02013EB0
|
|
ldr r0, [r0, #8]
|
|
bx r3
|
|
nop
|
|
_021D8C38: .word FUN_02013EB0
|
|
thumb_func_end MOD64_021D8C30
|
|
|
|
thumb_func_start MOD64_021D8C3C
|
|
MOD64_021D8C3C: ; 0x021D8C3C
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r5, r0, #0
|
|
ldr r0, [r5, #0x54]
|
|
add r6, r1, #0
|
|
add r7, r2, #0
|
|
str r3, [sp]
|
|
cmp r0, #0
|
|
beq _021D8C50
|
|
bl ErrorHandling
|
|
_021D8C50:
|
|
ldr r4, [sp, #0x24]
|
|
add r0, r5, #0
|
|
add r0, #0x1c
|
|
add r1, r6, #0
|
|
add r2, r7, #0
|
|
add r3, r4, #0
|
|
bl MOD64_021D8830
|
|
add r0, r5, #0
|
|
ldr r1, [sp]
|
|
ldr r2, [sp, #0x18]
|
|
add r0, #0x2c
|
|
add r3, r4, #0
|
|
bl MOD64_021D8830
|
|
add r0, r5, #0
|
|
ldr r1, [sp, #0x1c]
|
|
ldr r2, [sp, #0x20]
|
|
add r0, #0x3c
|
|
add r3, r4, #0
|
|
bl MOD64_021D8830
|
|
mov r2, #0
|
|
str r2, [r5, #0x4c]
|
|
mov r0, #1
|
|
str r0, [r5, #0x50]
|
|
ldr r0, _021D8C90 ; =MOD64_021D8CC8
|
|
add r1, r5, #0
|
|
bl FUN_0200CA44
|
|
str r0, [r5, #0x54]
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_021D8C90: .word MOD64_021D8CC8
|
|
thumb_func_end MOD64_021D8C3C
|
|
|
|
thumb_func_start MOD64_021D8C94
|
|
MOD64_021D8C94: ; 0x021D8C94
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldr r0, [r4, #0x54]
|
|
cmp r0, #0
|
|
beq _021D8CA2
|
|
bl ErrorHandling
|
|
_021D8CA2:
|
|
mov r0, #1
|
|
mvn r0, r0
|
|
str r0, [r4, #0x50]
|
|
ldr r1, [r4, #0x28]
|
|
ldr r0, [r4, #0x4c]
|
|
cmp r0, r1
|
|
blt _021D8CB6
|
|
ldr r0, [r4, #0x50]
|
|
add r0, r1, r0
|
|
str r0, [r4, #0x4c]
|
|
_021D8CB6:
|
|
ldr r0, _021D8CC4 ; =MOD64_021D8CC8
|
|
add r1, r4, #0
|
|
mov r2, #0
|
|
bl FUN_0200CA44
|
|
str r0, [r4, #0x54]
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_021D8CC4: .word MOD64_021D8CC8
|
|
thumb_func_end MOD64_021D8C94
|
|
|
|
thumb_func_start MOD64_021D8CC8
|
|
MOD64_021D8CC8: ; 0x021D8CC8
|
|
push {r4, r5, r6, lr}
|
|
add r5, r1, #0
|
|
add r6, r0, #0
|
|
add r0, r5, #0
|
|
ldr r1, [r5, #0x4c]
|
|
add r0, #0x1c
|
|
bl MOD64_021D883C
|
|
add r4, r0, #0
|
|
add r0, r5, #0
|
|
ldr r1, [r5, #0x4c]
|
|
add r0, #0x2c
|
|
bl MOD64_021D883C
|
|
add r0, r5, #0
|
|
ldr r1, [r5, #0x4c]
|
|
add r0, #0x3c
|
|
bl MOD64_021D883C
|
|
mov r2, #1
|
|
ldr r1, [r5, #0x1c]
|
|
lsl r2, r2, #0x12
|
|
sub r1, r1, r2
|
|
ldr r3, [r5, #0x2c]
|
|
lsl r1, r1, #4
|
|
sub r2, r3, r2
|
|
lsl r2, r2, #4
|
|
ldr r0, [r5, #8]
|
|
asr r1, r1, #0x10
|
|
asr r2, r2, #0x10
|
|
bl FUN_02013EC4
|
|
ldr r1, [r5, #0x3c]
|
|
ldr r0, [r5, #8]
|
|
add r2, r1, #0
|
|
bl FUN_02013EE0
|
|
cmp r4, #1
|
|
beq _021D8D1C
|
|
ldr r0, [r5, #0x4c]
|
|
cmp r0, #0
|
|
bge _021D8D26
|
|
_021D8D1C:
|
|
add r0, r6, #0
|
|
bl FUN_0200CAB4
|
|
mov r0, #0
|
|
str r0, [r5, #0x54]
|
|
_021D8D26:
|
|
ldr r1, [r5, #0x4c]
|
|
ldr r0, [r5, #0x50]
|
|
add r0, r1, r0
|
|
str r0, [r5, #0x4c]
|
|
pop {r4, r5, r6, pc}
|
|
thumb_func_end MOD64_021D8CC8
|
|
|
|
thumb_func_start MOD64_021D8D30
|
|
MOD64_021D8D30: ; 0x021D8D30
|
|
ldr r0, [r0, #0x54]
|
|
cmp r0, #0
|
|
bne _021D8D3A
|
|
mov r0, #1
|
|
bx lr
|
|
_021D8D3A:
|
|
mov r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
thumb_func_end MOD64_021D8D30
|
|
|
|
thumb_func_start MOD64_021D8D40
|
|
MOD64_021D8D40: ; 0x021D8D40
|
|
push {r3, r4, r5, r6, lr}
|
|
sub sp, #0x14
|
|
add r5, r0, #0
|
|
ldr r0, [r5, #0x54]
|
|
mov r2, #1
|
|
lsl r0, r0, #3
|
|
add r1, r5, r0
|
|
ldr r0, [r1, #0x7c]
|
|
add r1, #0x80
|
|
lsl r6, r0, #0xc
|
|
ldr r0, [r1]
|
|
ldr r1, _021D8DAC ; =0x00000666
|
|
add r0, #0x30
|
|
lsl r4, r0, #0xc
|
|
mov r0, #6
|
|
lsl r0, r0, #0x10
|
|
str r0, [sp]
|
|
str r1, [sp, #4]
|
|
lsl r2, r2, #0xc
|
|
str r2, [sp, #8]
|
|
mov r0, #6
|
|
sub r1, #0x16
|
|
str r0, [sp, #0xc]
|
|
add r0, r5, r1
|
|
add r1, r6, #0
|
|
lsl r2, r2, #7
|
|
add r3, r4, #0
|
|
bl MOD64_021D8C3C
|
|
mov r0, #6
|
|
mov r3, #1
|
|
mov r1, #0x21
|
|
str r4, [sp]
|
|
lsl r0, r0, #0x10
|
|
str r0, [sp, #4]
|
|
ldr r0, _021D8DAC ; =0x00000666
|
|
lsl r3, r3, #0xc
|
|
str r0, [sp, #8]
|
|
str r3, [sp, #0xc]
|
|
mov r0, #6
|
|
str r0, [sp, #0x10]
|
|
ldr r2, [r5, #0x54]
|
|
lsl r1, r1, #4
|
|
lsl r2, r2, #2
|
|
add r0, r5, r1
|
|
add r2, r5, r2
|
|
sub r1, #0xc
|
|
ldr r1, [r2, r1]
|
|
add r2, r6, #0
|
|
lsl r3, r3, #7
|
|
bl MOD64_021D8DDC
|
|
add sp, #0x14
|
|
pop {r3, r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_021D8DAC: .word 0x00000666
|
|
thumb_func_end MOD64_021D8D40
|
|
|
|
thumb_func_start MOD64_021D8DB0
|
|
MOD64_021D8DB0: ; 0x021D8DB0
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
mov r0, #0x65
|
|
lsl r0, r0, #4
|
|
add r0, r4, r0
|
|
bl MOD64_021D8C94
|
|
mov r0, #0x21
|
|
lsl r0, r0, #4
|
|
add r0, r4, r0
|
|
bl MOD64_021D8E34
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
thumb_func_end MOD64_021D8DB0
|
|
|
|
thumb_func_start MOD64_021D8DCC
|
|
MOD64_021D8DCC: ; 0x021D8DCC
|
|
mov r1, #0x65
|
|
lsl r1, r1, #4
|
|
ldr r3, _021D8DD8 ; =MOD64_021D8D30
|
|
add r0, r0, r1
|
|
bx r3
|
|
nop
|
|
_021D8DD8: .word MOD64_021D8D30
|
|
thumb_func_end MOD64_021D8DCC
|
|
|
|
thumb_func_start MOD64_021D8DDC
|
|
MOD64_021D8DDC: ; 0x021D8DDC
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r5, r0, #0
|
|
ldr r0, [r5, #0x3c]
|
|
add r6, r1, #0
|
|
add r7, r2, #0
|
|
str r3, [sp]
|
|
cmp r0, #0
|
|
beq _021D8DF0
|
|
bl ErrorHandling
|
|
_021D8DF0:
|
|
ldr r4, [sp, #0x28]
|
|
ldr r2, [sp]
|
|
add r0, r5, #4
|
|
add r1, r7, #0
|
|
add r3, r4, #0
|
|
bl MOD64_021D8830
|
|
add r0, r5, #0
|
|
ldr r1, [sp, #0x18]
|
|
ldr r2, [sp, #0x1c]
|
|
add r0, #0x14
|
|
add r3, r4, #0
|
|
bl MOD64_021D8830
|
|
add r0, r5, #0
|
|
ldr r1, [sp, #0x20]
|
|
ldr r2, [sp, #0x24]
|
|
add r0, #0x24
|
|
add r3, r4, #0
|
|
bl MOD64_021D8830
|
|
str r6, [r5]
|
|
mov r2, #0
|
|
str r2, [r5, #0x34]
|
|
mov r0, #1
|
|
str r0, [r5, #0x38]
|
|
ldr r0, _021D8E30 ; =MOD64_021D8E68
|
|
add r1, r5, #0
|
|
bl FUN_0200CA44
|
|
str r0, [r5, #0x3c]
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_021D8E30: .word MOD64_021D8E68
|
|
thumb_func_end MOD64_021D8DDC
|
|
|
|
thumb_func_start MOD64_021D8E34
|
|
MOD64_021D8E34: ; 0x021D8E34
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldr r0, [r4, #0x3c]
|
|
cmp r0, #0
|
|
beq _021D8E42
|
|
bl ErrorHandling
|
|
_021D8E42:
|
|
mov r0, #1
|
|
mvn r0, r0
|
|
str r0, [r4, #0x38]
|
|
ldr r1, [r4, #0x10]
|
|
ldr r0, [r4, #0x34]
|
|
cmp r0, r1
|
|
blt _021D8E56
|
|
ldr r0, [r4, #0x38]
|
|
add r0, r1, r0
|
|
str r0, [r4, #0x34]
|
|
_021D8E56:
|
|
ldr r0, _021D8E64 ; =MOD64_021D8E68
|
|
add r1, r4, #0
|
|
mov r2, #0
|
|
bl FUN_0200CA44
|
|
str r0, [r4, #0x3c]
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_021D8E64: .word MOD64_021D8E68
|
|
thumb_func_end MOD64_021D8E34
|
|
|
|
thumb_func_start MOD64_021D8E68
|
|
MOD64_021D8E68: ; 0x021D8E68
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r5, r1, #0
|
|
ldr r1, [r5, #0x34]
|
|
add r7, r0, #0
|
|
add r0, r5, #4
|
|
bl MOD64_021D883C
|
|
add r6, r0, #0
|
|
add r0, r5, #0
|
|
ldr r1, [r5, #0x34]
|
|
add r0, #0x14
|
|
bl MOD64_021D883C
|
|
add r0, r5, #0
|
|
ldr r1, [r5, #0x34]
|
|
add r0, #0x24
|
|
bl MOD64_021D883C
|
|
ldr r2, [r5, #0x24]
|
|
asr r0, r2, #0x1f
|
|
lsr r1, r2, #0xc
|
|
lsl r0, r0, #0x14
|
|
lsl r3, r2, #0x14
|
|
mov r2, #2
|
|
orr r0, r1
|
|
mov r1, #0
|
|
lsl r2, r2, #0xa
|
|
add r2, r3, r2
|
|
adc r0, r1
|
|
lsl r0, r0, #0x14
|
|
lsr r2, r2, #0xc
|
|
orr r2, r0
|
|
asr r4, r2, #0xc
|
|
ldr r2, [r5, #4]
|
|
ldr r0, [r5]
|
|
asr r2, r2, #0xc
|
|
bl FUN_02007558
|
|
ldr r2, [r5, #0x14]
|
|
ldr r0, [r5]
|
|
mov r1, #1
|
|
asr r2, r2, #0xc
|
|
bl FUN_02007558
|
|
ldr r0, [r5]
|
|
mov r1, #0xc
|
|
add r2, r4, #0
|
|
bl FUN_02007558
|
|
ldr r0, [r5]
|
|
mov r1, #0xd
|
|
add r2, r4, #0
|
|
bl FUN_02007558
|
|
cmp r6, #1
|
|
beq _021D8EDE
|
|
ldr r0, [r5, #0x34]
|
|
cmp r0, #0
|
|
bge _021D8EE8
|
|
_021D8EDE:
|
|
add r0, r7, #0
|
|
bl FUN_0200CAB4
|
|
mov r0, #0
|
|
str r0, [r5, #0x3c]
|
|
_021D8EE8:
|
|
ldr r1, [r5, #0x34]
|
|
ldr r0, [r5, #0x38]
|
|
add r0, r1, r0
|
|
str r0, [r5, #0x34]
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
thumb_func_end MOD64_021D8E68
|
|
|
|
thumb_func_start MOD64_021D8EF4
|
|
MOD64_021D8EF4: ; 0x021D8EF4
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x20
|
|
str r0, [sp, #0x14]
|
|
mov r0, #0x20
|
|
str r0, [sp]
|
|
add r0, r1, #0
|
|
str r1, [sp, #0x18]
|
|
str r0, [sp, #4]
|
|
mov r0, #0x52
|
|
mov r1, #0x11
|
|
mov r2, #0
|
|
mov r3, #0xa0
|
|
bl FUN_02006930
|
|
ldr r5, [sp, #0x14]
|
|
mov r4, #0
|
|
mov r6, #1
|
|
_021D8F16:
|
|
ldr r0, [sp, #0x18]
|
|
mov r1, #1
|
|
bl FUN_02018FF4
|
|
add r1, r5, #0
|
|
add r1, #0x9c
|
|
str r0, [r1]
|
|
add r0, r5, #0
|
|
add r0, #0x9c
|
|
ldr r0, [r0]
|
|
bl FUN_0201901C
|
|
cmp r4, #0
|
|
beq _021D8F3C
|
|
cmp r4, #1
|
|
beq _021D8F44
|
|
cmp r4, #2
|
|
beq _021D8F4C
|
|
b _021D8F52
|
|
_021D8F3C:
|
|
mov r0, #0xc
|
|
str r0, [sp, #0x1c]
|
|
mov r7, #4
|
|
b _021D8F52
|
|
_021D8F44:
|
|
mov r0, #4
|
|
str r0, [sp, #0x1c]
|
|
mov r7, #0xe
|
|
b _021D8F52
|
|
_021D8F4C:
|
|
mov r0, #0x14
|
|
str r0, [sp, #0x1c]
|
|
mov r7, #0xd
|
|
_021D8F52:
|
|
lsl r0, r7, #0x18
|
|
lsr r0, r0, #0x18
|
|
str r0, [sp]
|
|
mov r0, #0xb
|
|
str r0, [sp, #4]
|
|
mov r0, #4
|
|
str r0, [sp, #8]
|
|
mov r0, #5
|
|
str r0, [sp, #0xc]
|
|
lsl r0, r6, #0x10
|
|
lsr r0, r0, #0x10
|
|
str r0, [sp, #0x10]
|
|
ldr r0, [sp, #0x14]
|
|
add r1, r5, #0
|
|
ldr r3, [sp, #0x1c]
|
|
add r0, #0x94
|
|
add r1, #0x9c
|
|
lsl r3, r3, #0x18
|
|
ldr r0, [r0]
|
|
ldr r1, [r1]
|
|
mov r2, #3
|
|
lsr r3, r3, #0x18
|
|
bl FUN_02019064
|
|
ldr r0, _021D8FA8 ; =0x0001020A
|
|
mov r2, #5
|
|
str r0, [sp]
|
|
add r0, r5, #0
|
|
add r0, #0x9c
|
|
ldr r0, [r0]
|
|
ldr r1, [sp, #0x18]
|
|
lsl r2, r2, #6
|
|
add r3, r4, #4
|
|
bl MOD64_021D8FD0
|
|
add r4, r4, #1
|
|
add r5, r5, #4
|
|
add r6, #0x40
|
|
cmp r4, #3
|
|
blt _021D8F16
|
|
add sp, #0x20
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021D8FA8: .word 0x0001020A
|
|
thumb_func_end MOD64_021D8EF4
|
|
|
|
thumb_func_start MOD64_021D8FAC
|
|
MOD64_021D8FAC: ; 0x021D8FAC
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
mov r4, #0
|
|
_021D8FB2:
|
|
add r0, r5, #0
|
|
add r0, #0x9c
|
|
ldr r0, [r0]
|
|
bl FUN_02019178
|
|
add r0, r5, #0
|
|
add r0, #0x9c
|
|
ldr r0, [r0]
|
|
bl FreeToHeap
|
|
add r4, r4, #1
|
|
add r5, r5, #4
|
|
cmp r4, #3
|
|
blt _021D8FB2
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end MOD64_021D8FAC
|
|
|
|
thumb_func_start MOD64_021D8FD0
|
|
MOD64_021D8FD0: ; 0x021D8FD0
|
|
push {r4, r5, r6, lr}
|
|
sub sp, #0x10
|
|
add r4, r1, #0
|
|
add r5, r0, #0
|
|
add r6, r3, #0
|
|
mov r0, #0
|
|
mov r1, #0x1a
|
|
add r3, r4, #0
|
|
bl FUN_0200A86C
|
|
add r4, r0, #0
|
|
bne _021D8FEC
|
|
bl ErrorHandling
|
|
_021D8FEC:
|
|
add r0, r4, #0
|
|
add r1, r6, #0
|
|
bl FUN_0200A914
|
|
ldr r1, [sp, #0x20]
|
|
add r6, r0, #0
|
|
lsl r1, r1, #0x18
|
|
add r0, r5, #0
|
|
lsr r1, r1, #0x18
|
|
bl FUN_02019620
|
|
mov r1, #0
|
|
str r1, [sp]
|
|
mov r0, #0xff
|
|
str r0, [sp, #4]
|
|
ldr r0, [sp, #0x20]
|
|
add r2, r6, #0
|
|
str r0, [sp, #8]
|
|
add r0, r5, #0
|
|
mov r3, #1
|
|
str r1, [sp, #0xc]
|
|
bl FUN_0201BDE0
|
|
add r0, r6, #0
|
|
bl FUN_02021A20
|
|
add r0, r4, #0
|
|
bl FUN_0200A8B8
|
|
add sp, #0x10
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
thumb_func_end MOD64_021D8FD0
|
|
|
|
thumb_func_start MOD64_021D902C
|
|
MOD64_021D902C: ; 0x021D902C
|
|
add r1, r0, #0
|
|
add r1, #0xa8
|
|
ldr r1, [r1]
|
|
ldr r3, _021D9040 ; =FUN_02019570
|
|
lsl r1, r1, #2
|
|
add r0, r0, r1
|
|
add r0, #0x9c
|
|
ldr r0, [r0]
|
|
bx r3
|
|
nop
|
|
_021D9040: .word FUN_02019570
|
|
thumb_func_end MOD64_021D902C
|
|
|
|
thumb_func_start MOD64_021D9044
|
|
MOD64_021D9044: ; 0x021D9044
|
|
push {r3, lr}
|
|
cmp r0, #0
|
|
beq _021D9054
|
|
cmp r0, #1
|
|
beq _021D9058
|
|
cmp r0, #2
|
|
beq _021D905C
|
|
b _021D9060
|
|
_021D9054:
|
|
ldr r0, _021D9068 ; =0x00000183
|
|
pop {r3, pc}
|
|
_021D9058:
|
|
ldr r0, _021D906C ; =0x00000186
|
|
pop {r3, pc}
|
|
_021D905C:
|
|
ldr r0, _021D9070 ; =0x00000189
|
|
pop {r3, pc}
|
|
_021D9060:
|
|
bl ErrorHandling
|
|
mov r0, #0
|
|
pop {r3, pc}
|
|
.align 2, 0
|
|
_021D9068: .word 0x00000183
|
|
_021D906C: .word 0x00000186
|
|
_021D9070: .word 0x00000189
|
|
thumb_func_end MOD64_021D9044
|
|
|
|
.section .rodata
|
|
; 0x021D9074
|
|
.byte 0x20, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 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, 0x01, 0x03, 0x00, 0x02, 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, 0x00, 0x01
|
|
.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, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00
|
|
; 0x021D9110
|