mirror of
https://github.com/zeldaret/ph
synced 2026-05-24 15:20:55 -04:00
9343 lines
174 KiB
ArmAsm
9343 lines
174 KiB
ArmAsm
.include "macros/function.inc"
|
|
.include "include/itcm.inc"
|
|
|
|
.text
|
|
|
|
.global func_01ff8000
|
|
arm_func_start func_01ff8000
|
|
func_01ff8000: ; 0x01ff8000
|
|
mov r1, #0
|
|
mov r2, #0x1000
|
|
mov r3, #0
|
|
stmia r0!, {r2, r3}
|
|
stmia r0!, {r1, r2}
|
|
bx lr
|
|
arm_func_end func_01ff8000
|
|
|
|
.global func_01ff8018
|
|
thumb_func_start func_01ff8018
|
|
func_01ff8018: ; 0x01ff8018
|
|
str r2, [r0]
|
|
str r1, [r0, #4]
|
|
neg r1, r1
|
|
str r1, [r0, #8]
|
|
str r2, [r0, #0xc]
|
|
bx lr
|
|
thumb_func_end func_01ff8018
|
|
|
|
.global func_01ff8024
|
|
arm_func_start func_01ff8024
|
|
func_01ff8024: ; 0x01ff8024
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
sub sp, sp, #0x10
|
|
mov lr, r2
|
|
ldr r2, [r0, #4]
|
|
ldr r3, [r1, #8]
|
|
cmp lr, r1
|
|
smull r7, r6, r2, r3
|
|
ldr r3, [r0]
|
|
ldr r5, [r1]
|
|
addeq ip, sp, #0
|
|
smlal r7, r6, r3, r5
|
|
mov r5, r7, lsr #0xc
|
|
movne ip, lr
|
|
orr r5, r5, r6, lsl #20
|
|
str r5, [ip]
|
|
ldr r5, [r1, #0xc]
|
|
ldr r6, [r1, #4]
|
|
smull r7, r5, r2, r5
|
|
smlal r7, r5, r3, r6
|
|
mov r2, r7, lsr #0xc
|
|
orr r2, r2, r5, lsl #20
|
|
str r2, [ip, #4]
|
|
ldr r2, [r0, #0xc]
|
|
ldr r3, [r1, #8]
|
|
ldr r0, [r0, #8]
|
|
smull r6, r5, r2, r3
|
|
ldr r3, [r1]
|
|
add r4, sp, #0
|
|
smlal r6, r5, r0, r3
|
|
mov r3, r6, lsr #0xc
|
|
orr r3, r3, r5, lsl #20
|
|
str r3, [ip, #8]
|
|
ldr r3, [r1, #0xc]
|
|
ldr r1, [r1, #4]
|
|
smull r5, r3, r2, r3
|
|
smlal r5, r3, r0, r1
|
|
mov r0, r5, lsr #0xc
|
|
orr r0, r0, r3, lsl #20
|
|
str r0, [ip, #0xc]
|
|
cmp ip, r4
|
|
ldmeqia r4, {r0, r1, r2, r3}
|
|
stmeqia lr, {r0, r1, r2, r3}
|
|
add sp, sp, #0x10
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
arm_func_end func_01ff8024
|
|
|
|
.global func_01ff80d4
|
|
arm_func_start func_01ff80d4
|
|
func_01ff80d4: ; 0x01ff80d4
|
|
mov r2, #0x1000
|
|
str r2, [r0, #0x20]
|
|
mov r3, #0
|
|
stmia r0!, {r2, r3}
|
|
mov r1, #0
|
|
stmia r0!, {r1, r3}
|
|
stmia r0!, {r2, r3}
|
|
stmia r0!, {r1, r3}
|
|
bx lr
|
|
arm_func_end func_01ff80d4
|
|
|
|
.global func_01ff80f8
|
|
arm_func_start func_01ff80f8
|
|
func_01ff80f8: ; 0x01ff80f8
|
|
ldmia r0!, {r2, r3, ip}
|
|
stmia r1!, {r2, r3, ip}
|
|
ldmia r0!, {r2, r3, ip}
|
|
stmia r1!, {r2, r3, ip}
|
|
ldmia r0!, {r2, r3, ip}
|
|
stmia r1!, {r2, r3, ip}
|
|
mov r2, #0
|
|
str r2, [r1]
|
|
str r2, [r1, #4]
|
|
str r2, [r1, #8]
|
|
bx lr
|
|
arm_func_end func_01ff80f8
|
|
|
|
.global func_01ff8124
|
|
thumb_func_start func_01ff8124
|
|
func_01ff8124: ; 0x01ff8124
|
|
stmia r0!, {r1}
|
|
mov r1, #0
|
|
str r3, [r0, #0x1c]
|
|
mov r3, #0
|
|
stmia r0!, {r1, r3}
|
|
stmia r0!, {r1, r2, r3}
|
|
mov r2, #0
|
|
stmia r0!, {r1, r3}
|
|
bx lr
|
|
.align 2, 0
|
|
thumb_func_end func_01ff8124
|
|
|
|
.global func_01ff8138
|
|
arm_func_start func_01ff8138
|
|
func_01ff8138: ; 0x01ff8138
|
|
stmdb sp!, {r4, lr}
|
|
ldr r4, [r0]
|
|
ldr ip, [sp, #8]
|
|
smull lr, r4, r2, r4
|
|
mov lr, lr, lsr #0xc
|
|
orr lr, lr, r4, lsl #20
|
|
str lr, [r1]
|
|
ldr r4, [r0, #4]
|
|
smull lr, r4, r2, r4
|
|
mov lr, lr, lsr #0xc
|
|
orr lr, lr, r4, lsl #20
|
|
str lr, [r1, #4]
|
|
ldr lr, [r0, #8]
|
|
smull r4, lr, r2, lr
|
|
mov r2, r4, lsr #0xc
|
|
orr r2, r2, lr, lsl #20
|
|
str r2, [r1, #8]
|
|
ldr r2, [r0, #0xc]
|
|
smull lr, r2, r3, r2
|
|
mov lr, lr, lsr #0xc
|
|
orr lr, lr, r2, lsl #20
|
|
str lr, [r1, #0xc]
|
|
ldr r2, [r0, #0x10]
|
|
smull lr, r2, r3, r2
|
|
mov lr, lr, lsr #0xc
|
|
orr lr, lr, r2, lsl #20
|
|
str lr, [r1, #0x10]
|
|
ldr r2, [r0, #0x14]
|
|
smull lr, r2, r3, r2
|
|
mov r3, lr, lsr #0xc
|
|
orr r3, r3, r2, lsl #20
|
|
str r3, [r1, #0x14]
|
|
ldr r2, [r0, #0x18]
|
|
smull r3, r2, ip, r2
|
|
mov r3, r3, lsr #0xc
|
|
orr r3, r3, r2, lsl #20
|
|
str r3, [r1, #0x18]
|
|
ldr r2, [r0, #0x1c]
|
|
smull r3, r2, ip, r2
|
|
mov r3, r3, lsr #0xc
|
|
orr r3, r3, r2, lsl #20
|
|
str r3, [r1, #0x1c]
|
|
ldr r0, [r0, #0x20]
|
|
smull r2, r0, ip, r0
|
|
mov r2, r2, lsr #0xc
|
|
orr r2, r2, r0, lsl #20
|
|
str r2, [r1, #0x20]
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end func_01ff8138
|
|
|
|
.global func_01ff81f8
|
|
thumb_func_start func_01ff81f8
|
|
func_01ff81f8: ; 0x01ff81f8
|
|
mov r3, #1
|
|
lsl r3, r3, #0xc
|
|
str r3, [r0]
|
|
mov r3, #0
|
|
str r3, [r0, #4]
|
|
str r3, [r0, #8]
|
|
str r3, [r0, #0xc]
|
|
str r2, [r0, #0x10]
|
|
str r1, [r0, #0x14]
|
|
str r3, [r0, #0x18]
|
|
neg r1, r1
|
|
str r1, [r0, #0x1c]
|
|
str r2, [r0, #0x20]
|
|
bx lr
|
|
thumb_func_end func_01ff81f8
|
|
|
|
.global func_01ff8214
|
|
thumb_func_start func_01ff8214
|
|
func_01ff8214: ; 0x01ff8214
|
|
str r2, [r0]
|
|
str r2, [r0, #0x20]
|
|
mov r3, #0
|
|
str r3, [r0, #4]
|
|
str r3, [r0, #0xc]
|
|
str r3, [r0, #0x14]
|
|
str r3, [r0, #0x1c]
|
|
neg r2, r1
|
|
mov r3, #1
|
|
lsl r3, r3, #0xc
|
|
str r1, [r0, #0x18]
|
|
str r2, [r0, #8]
|
|
str r3, [r0, #0x10]
|
|
bx lr
|
|
thumb_func_end func_01ff8214
|
|
|
|
.global func_01ff8230
|
|
thumb_func_start func_01ff8230
|
|
func_01ff8230: ; 0x01ff8230
|
|
stmia r0!, {r2}
|
|
mov r3, #0
|
|
stmia r0!, {r1, r3}
|
|
neg r1, r1
|
|
stmia r0!, {r1, r2}
|
|
mov r1, #1
|
|
lsl r1, r1, #0xc
|
|
str r3, [r0]
|
|
str r3, [r0, #4]
|
|
str r3, [r0, #8]
|
|
str r1, [r0, #0xc]
|
|
bx lr
|
|
thumb_func_end func_01ff8230
|
|
|
|
.global func_01ff8248
|
|
arm_func_start func_01ff8248
|
|
func_01ff8248: ; 0x01ff8248
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x18
|
|
ldr sb, [r1]
|
|
ldr r8, [r1, #4]
|
|
ldr r7, [r1, #8]
|
|
smull r1, r6, sb, sb
|
|
str r1, [sp]
|
|
rsb r1, r3, #0x1000
|
|
smull r4, fp, r1, sb
|
|
ldr r5, [sp]
|
|
umull sl, ip, r8, r4
|
|
umull lr, r5, r1, r5
|
|
mla r5, r1, r6, r5
|
|
mov r6, lr, lsr #0x18
|
|
mov lr, sl, lsr #0x18
|
|
smull sb, sl, r2, sb
|
|
mov sb, sb, lsr #0xc
|
|
orr sb, sb, sl, lsl #20
|
|
str sb, [sp, #0x14]
|
|
ldr sl, [sp]
|
|
mov sb, r1, asr #0x1f
|
|
mla r5, sb, sl, r5
|
|
orr r6, r6, r5, lsl #8
|
|
add r5, r6, r3
|
|
mla ip, r8, fp, ip
|
|
mov r6, r8, asr #0x1f
|
|
mla ip, r6, r4, ip
|
|
smull r6, sl, r8, r8
|
|
str r5, [r0]
|
|
orr lr, lr, ip, lsl #8
|
|
str r6, [sp, #8]
|
|
umull r6, ip, r1, r6
|
|
str r6, [sp, #4]
|
|
mla ip, r1, sl, ip
|
|
ldr r6, [sp, #8]
|
|
mov r5, r7, asr #0x1f
|
|
mla ip, sb, r6, ip
|
|
ldr r6, [sp, #4]
|
|
mov r6, r6, lsr #0x18
|
|
orr r6, r6, ip, lsl #8
|
|
add r6, r6, r3
|
|
str r6, [r0, #0x10]
|
|
smull r6, sl, r7, r7
|
|
str r6, [sp, #0x10]
|
|
umull r6, ip, r1, r6
|
|
str r6, [sp, #0xc]
|
|
mla ip, r1, sl, ip
|
|
ldr r6, [sp, #0x10]
|
|
mla ip, sb, r6, ip
|
|
ldr r6, [sp, #0xc]
|
|
mov r6, r6, lsr #0x18
|
|
orr r6, r6, ip, lsl #8
|
|
add r3, r6, r3
|
|
str r3, [r0, #0x20]
|
|
smull r6, r3, r1, r8
|
|
smull r8, r1, r2, r8
|
|
mov r8, r8, lsr #0xc
|
|
orr r8, r8, r1, lsl #20
|
|
smull sb, r1, r2, r7
|
|
mov sb, sb, lsr #0xc
|
|
orr sb, sb, r1, lsl #20
|
|
add r2, lr, sb
|
|
sub r1, lr, sb
|
|
str r2, [r0, #4]
|
|
str r1, [r0, #0xc]
|
|
umull r2, r1, r7, r4
|
|
mla r1, r7, fp, r1
|
|
mla r1, r5, r4, r1
|
|
mov r4, r2, lsr #0x18
|
|
orr r4, r4, r1, lsl #8
|
|
sub r2, r4, r8
|
|
add r1, r4, r8
|
|
str r2, [r0, #8]
|
|
str r1, [r0, #0x18]
|
|
umull r2, r1, r7, r6
|
|
mla r1, r7, r3, r1
|
|
mla r1, r5, r6, r1
|
|
mov r3, r2, lsr #0x18
|
|
orr r3, r3, r1, lsl #8
|
|
ldr r1, [sp, #0x14]
|
|
add r2, r3, r1
|
|
sub r1, r3, r1
|
|
str r2, [r0, #0x14]
|
|
str r1, [r0, #0x1c]
|
|
add sp, sp, #0x18
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
arm_func_end func_01ff8248
|
|
|
|
.global func_01ff83a0
|
|
arm_func_start func_01ff83a0
|
|
func_01ff83a0: ; 0x01ff83a0
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x50
|
|
mov sl, r0
|
|
ldr r0, [sl, #0x14]
|
|
cmp sl, r1
|
|
addeq sb, sp, #0x2c
|
|
ldr r3, [sl, #0x18]
|
|
ldr r2, [sl, #0xc]
|
|
ldr r6, [sl, #0x20]
|
|
str r1, [sp]
|
|
movne sb, r1
|
|
smull fp, r8, r2, r6
|
|
smull r7, r1, r0, r3
|
|
subs r7, fp, r7
|
|
sbc ip, r8, r1
|
|
ldr r4, [sl, #0x10]
|
|
ldr r5, [sl, #0x1c]
|
|
adds r1, r7, #0x800
|
|
smull fp, r8, r4, r6
|
|
smull r7, r6, r0, r5
|
|
adc r0, ip, #0
|
|
subs r7, fp, r7
|
|
sbc r6, r8, r6
|
|
mov r8, r1, lsr #0xc
|
|
orr r8, r8, r0, lsl #20
|
|
smull r1, r0, r2, r5
|
|
adds r7, r7, #0x800
|
|
smull r5, r3, r4, r3
|
|
adc r2, r6, #0
|
|
mov r7, r7, lsr #0xc
|
|
orr r7, r7, r2, lsl #20
|
|
subs r1, r1, r5
|
|
sbc r5, r0, r3
|
|
ldr r2, [sl]
|
|
adds r6, r1, #0x800
|
|
ldr fp, [sl, #4]
|
|
smull r4, r3, r2, r7
|
|
smull r1, r0, fp, r8
|
|
adc r2, r5, #0
|
|
mov r6, r6, lsr #0xc
|
|
orr r6, r6, r2, lsl #20
|
|
subs r2, r4, r1
|
|
ldr r1, [sl, #8]
|
|
sbc r0, r3, r0
|
|
smlal r2, r0, r1, r6
|
|
adds r1, r2, #0x800
|
|
adc r2, r0, #0
|
|
mov r0, r1, lsr #0xc
|
|
mov r1, r8, asr #0x1f
|
|
str r1, [sp, #4]
|
|
mov r1, r7, asr #0x1f
|
|
str r1, [sp, #8]
|
|
mov r1, r6, asr #0x1f
|
|
str r1, [sp, #0xc]
|
|
orrs r0, r0, r2, lsl #20
|
|
mov r1, #0
|
|
addeq sp, sp, #0x50
|
|
subeq r0, r1, #1
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
bl func_01ff9a50
|
|
ldr r1, [sl, #8]
|
|
ldr r2, [sl, #0x1c]
|
|
ldr fp, [sl, #0x10]
|
|
smull r0, r4, r2, r1
|
|
smull r3, r2, fp, r1
|
|
ldr r5, [sl, #0x18]
|
|
str r2, [sp, #0x18]
|
|
str r3, [sp, #0x14]
|
|
smull r3, r2, r5, r1
|
|
str r2, [sp, #0x20]
|
|
ldr r2, [sl, #0x20]
|
|
str r3, [sp, #0x1c]
|
|
str r2, [sp, #0x10]
|
|
ldr r5, [sp, #0x10]
|
|
ldmia sl, {r3, lr}
|
|
smull ip, r5, lr, r5
|
|
subs r0, ip, r0
|
|
ldr r2, [sl, #0xc]
|
|
sbc r4, r5, r4
|
|
smull r1, r5, r2, r1
|
|
str r5, [sp, #0x28]
|
|
mov r5, r0, lsr #0xc
|
|
ldr fp, [sl, #0x14]
|
|
orr r5, r5, r4, lsl #20
|
|
smull r4, r2, lr, fp
|
|
ldr r0, [sp, #0x14]
|
|
subs r4, r4, r0
|
|
ldr r0, [sp, #0x18]
|
|
mov r4, r4, lsr #0xc
|
|
sbc r0, r2, r0
|
|
orr r4, r4, r0, lsl #20
|
|
ldr r0, [sp, #0x10]
|
|
ldr r2, [sp, #0x1c]
|
|
smull ip, r0, r3, r0
|
|
subs r2, ip, r2
|
|
ldr ip, [sp, #0x20]
|
|
sbc r0, r0, ip
|
|
smull ip, fp, r3, fp
|
|
ldr r3, [sp, #0x28]
|
|
subs r1, ip, r1
|
|
sbc r3, fp, r3
|
|
mov fp, r2, lsr #0xc
|
|
orr fp, fp, r0, lsl #20
|
|
mov r0, r1, lsr #0xc
|
|
orr r0, r0, r3, lsl #20
|
|
str r0, [sp, #0x24]
|
|
bl func_01ff9a18
|
|
smull r2, r1, r0, r5
|
|
mov r2, r2, lsr #0xc
|
|
orr r2, r2, r1, lsl #20
|
|
rsb lr, r2, #0
|
|
smull r2, r1, r0, r4
|
|
mov r4, r2, lsr #0xc
|
|
orr r4, r4, r1, lsl #20
|
|
smull r2, r1, r0, fp
|
|
mov r3, r2, lsr #0xc
|
|
orr r3, r3, r1, lsl #20
|
|
ldr r1, [sp, #0x24]
|
|
umull fp, r5, r0, r7
|
|
smull r2, r1, r0, r1
|
|
mov r2, r2, lsr #0xc
|
|
orr r2, r2, r1, lsl #20
|
|
ldr r1, [sp, #8]
|
|
mov ip, r0, asr #0x1f
|
|
mla r5, r0, r1, r5
|
|
mla r5, ip, r7, r5
|
|
mov r1, fp, lsr #0xc
|
|
orr r1, r1, r5, lsl #20
|
|
stmia sb, {r1, lr}
|
|
str r4, [sb, #8]
|
|
ldr r1, [sp, #4]
|
|
umull r5, r4, r0, r8
|
|
mla r4, r0, r1, r4
|
|
mla r4, ip, r8, r4
|
|
mov r1, r5, lsr #0xc
|
|
orr r1, r1, r4, lsl #20
|
|
rsb r1, r1, #0
|
|
str r1, [sb, #0xc]
|
|
ldr r1, [sp, #0xc]
|
|
rsb r2, r2, #0
|
|
str r3, [sb, #0x10]
|
|
str r2, [sb, #0x14]
|
|
umull r3, r2, r0, r6
|
|
mla r2, r0, r1, r2
|
|
mla r2, ip, r6, r2
|
|
mov r1, r3, lsr #0xc
|
|
orr r1, r1, r2, lsl #20
|
|
str r1, [sb, #0x18]
|
|
ldr r3, [sl]
|
|
ldr r1, [sl, #0x1c]
|
|
ldr r2, [sl, #0x18]
|
|
smull r5, r4, r3, r1
|
|
ldr r1, [sl, #4]
|
|
smull r3, r1, r2, r1
|
|
subs r2, r5, r3
|
|
sbc r1, r4, r1
|
|
mov r2, r2, lsr #0xc
|
|
orr r2, r2, r1, lsl #20
|
|
smull r2, r1, r0, r2
|
|
mov r2, r2, lsr #0xc
|
|
orr r2, r2, r1, lsl #20
|
|
rsb r1, r2, #0
|
|
str r1, [sb, #0x1c]
|
|
ldr r4, [sl]
|
|
ldr r3, [sl, #0x10]
|
|
ldr r2, [sl, #0xc]
|
|
ldr r1, [sl, #4]
|
|
smull r6, r5, r4, r3
|
|
smull r3, r1, r2, r1
|
|
subs r2, r6, r3
|
|
sbc r1, r5, r1
|
|
mov r2, r2, lsr #0xc
|
|
orr r2, r2, r1, lsl #20
|
|
mov r1, r2, asr #0x1f
|
|
umull r4, r3, r0, r2
|
|
mla r3, r0, r1, r3
|
|
add r0, sp, #0x2c
|
|
mla r3, ip, r2, r3
|
|
mov r1, r4, lsr #0xc
|
|
orr r1, r1, r3, lsl #20
|
|
str r1, [sb, #0x20]
|
|
cmp sb, r0
|
|
bne _01ff8684
|
|
ldr r1, [sp]
|
|
bl func_020079d8
|
|
_01ff8684:
|
|
mov r0, #0
|
|
add sp, sp, #0x50
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
arm_func_end func_01ff83a0
|
|
|
|
.global func_01ff8690
|
|
arm_func_start func_01ff8690
|
|
func_01ff8690: ; 0x01ff8690
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x40
|
|
mov ip, r2
|
|
ldr r3, [r0, #4]
|
|
ldr r2, [r1, #0xc]
|
|
cmp ip, r1
|
|
smull r7, r5, r3, r2
|
|
ldr r6, [r0]
|
|
ldr r4, [r1]
|
|
addeq sl, sp, #0x1c
|
|
smlal r7, r5, r6, r4
|
|
ldr r2, [r0, #8]
|
|
ldr r4, [r1, #0x18]
|
|
movne sl, ip
|
|
smlal r7, r5, r2, r4
|
|
mov r4, r7, lsr #0xc
|
|
orr r4, r4, r5, lsl #20
|
|
str r4, [sl]
|
|
ldr r4, [r1, #0x10]
|
|
ldr r5, [r1, #4]
|
|
smull r8, r7, r3, r4
|
|
smlal r8, r7, r6, r5
|
|
ldr r4, [r1, #0x1c]
|
|
smlal r8, r7, r2, r4
|
|
mov r4, r8, lsr #0xc
|
|
orr r4, r4, r7, lsl #20
|
|
str r4, [sl, #4]
|
|
ldr r4, [r1, #0x14]
|
|
ldr r5, [r1, #8]
|
|
smull r8, r7, r3, r4
|
|
smlal r8, r7, r6, r5
|
|
ldr r3, [r1, #0x20]
|
|
smlal r8, r7, r2, r3
|
|
mov r2, r8, lsr #0xc
|
|
orr r2, r2, r7, lsl #20
|
|
str r2, [sl, #8]
|
|
ldr sb, [r0, #0x10]
|
|
ldr r2, [r0, #0xc]
|
|
smull r7, r6, sb, r4
|
|
smlal r7, r6, r2, r5
|
|
ldr r4, [r0, #0x14]
|
|
smlal r7, r6, r4, r3
|
|
mov r3, r7, lsr #0xc
|
|
orr r3, r3, r6, lsl #20
|
|
str r3, [sl, #0x14]
|
|
ldr r3, [r1, #0x10]
|
|
ldr r5, [r1, #4]
|
|
smull r7, r6, sb, r3
|
|
smlal r7, r6, r2, r5
|
|
ldr r5, [r1, #0x1c]
|
|
mov r3, sb, asr #0x1f
|
|
smlal r7, r6, r4, r5
|
|
str r3, [sp]
|
|
mov r3, r7, lsr #0xc
|
|
orr r3, r3, r6, lsl #20
|
|
str r3, [sl, #0x10]
|
|
mov r3, r2, asr #0x1f
|
|
str r3, [sp, #4]
|
|
mov r3, r4, asr #0x1f
|
|
ldr r8, [r1, #0xc]
|
|
str r3, [sp, #8]
|
|
mov r3, r8, asr #0x1f
|
|
str r3, [sp, #0x18]
|
|
ldr r7, [r1]
|
|
ldr r6, [r1, #0x18]
|
|
mov r3, r7, asr #0x1f
|
|
str r3, [sp, #0xc]
|
|
umull r3, r5, r4, r6
|
|
mov fp, r6, asr #0x1f
|
|
str r3, [sp, #0x10]
|
|
mla r5, r4, fp, r5
|
|
ldr r3, [sp, #8]
|
|
add lr, sp, #0x1c
|
|
mla r5, r3, r6, r5
|
|
umull r3, r4, r2, r7
|
|
str r3, [sp, #0x14]
|
|
ldr r3, [sp, #0xc]
|
|
mla r4, r2, r3, r4
|
|
ldr r2, [sp, #4]
|
|
umull r3, fp, sb, r8
|
|
mla r4, r2, r7, r4
|
|
ldr r2, [sp, #0x14]
|
|
adds r3, r2, r3
|
|
ldr r2, [sp, #0x18]
|
|
mla fp, sb, r2, fp
|
|
ldr r2, [sp]
|
|
mla fp, r2, r8, fp
|
|
adc r4, r4, fp
|
|
ldr r2, [sp, #0x10]
|
|
ldr fp, [sp, #0x18]
|
|
adds r3, r2, r3
|
|
adc r2, r5, r4
|
|
mov r3, r3, lsr #0xc
|
|
orr r3, r3, r2, lsl #20
|
|
str r3, [sl, #0xc]
|
|
ldr r2, [r0, #0x1c]
|
|
ldr r5, [r0, #0x18]
|
|
ldr r4, [r0, #0x20]
|
|
umull r3, r0, r2, r8
|
|
mla r0, r2, fp, r0
|
|
mov sb, r2, asr #0x1f
|
|
mla r0, sb, r8, r0
|
|
smlal r3, r0, r5, r7
|
|
smlal r3, r0, r4, r6
|
|
mov r3, r3, lsr #0xc
|
|
orr r3, r3, r0, lsl #20
|
|
str r3, [sl, #0x18]
|
|
ldr r0, [r1, #0x10]
|
|
ldr r3, [r1, #4]
|
|
smull r7, r0, r2, r0
|
|
cmp sl, lr
|
|
smlal r7, r0, r5, r3
|
|
ldr r6, [r1, #0x1c]
|
|
addne sp, sp, #0x40
|
|
smlal r7, r0, r4, r6
|
|
mov r3, r7, lsr #0xc
|
|
orr r3, r3, r0, lsl #20
|
|
str r3, [sl, #0x1c]
|
|
ldr r0, [r1, #0x14]
|
|
ldr r6, [r1, #0x20]
|
|
ldr r3, [r1, #8]
|
|
smull r1, r0, r2, r0
|
|
smlal r1, r0, r5, r3
|
|
smlal r1, r0, r4, r6
|
|
mov r1, r1, lsr #0xc
|
|
orr r1, r1, r0, lsl #20
|
|
str r1, [sl, #0x20]
|
|
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
ldmia lr!, {r0, r1, r2, r3}
|
|
stmia ip!, {r0, r1, r2, r3}
|
|
ldmia lr!, {r0, r1, r2, r3}
|
|
stmia ip!, {r0, r1, r2, r3}
|
|
ldr r0, [lr]
|
|
str r0, [ip]
|
|
add sp, sp, #0x40
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
arm_func_end func_01ff8690
|
|
|
|
.global func_01ff88b0
|
|
arm_func_start func_01ff88b0
|
|
func_01ff88b0: ; 0x01ff88b0
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr r4, [r1, #0xc]
|
|
ldmia r0, {r3, ip}
|
|
smull r6, r5, ip, r4
|
|
ldr r4, [r1]
|
|
ldr r0, [r0, #8]
|
|
smlal r6, r5, r3, r4
|
|
ldr r4, [r1, #0x18]
|
|
smlal r6, r5, r0, r4
|
|
mov r4, r6, lsr #0xc
|
|
orr r4, r4, r5, lsl #20
|
|
str r4, [r2]
|
|
ldr r4, [r1, #0x10]
|
|
ldr r5, [r1, #4]
|
|
smull r6, lr, ip, r4
|
|
smlal r6, lr, r3, r5
|
|
ldr r4, [r1, #0x1c]
|
|
smlal r6, lr, r0, r4
|
|
mov r4, r6, lsr #0xc
|
|
orr r4, r4, lr, lsl #20
|
|
str r4, [r2, #4]
|
|
ldr lr, [r1, #0x14]
|
|
ldr r4, [r1, #8]
|
|
smull r5, lr, ip, lr
|
|
smlal r5, lr, r3, r4
|
|
ldr r1, [r1, #0x20]
|
|
smlal r5, lr, r0, r1
|
|
mov r0, r5, lsr #0xc
|
|
orr r0, r0, lr, lsl #20
|
|
str r0, [r2, #8]
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end func_01ff88b0
|
|
|
|
.global func_01ff892c
|
|
arm_func_start func_01ff892c
|
|
func_01ff892c: ; 0x01ff892c
|
|
mov r2, #0x1000
|
|
mov r3, #0
|
|
stmia r0!, {r2, r3}
|
|
mov r1, #0
|
|
stmia r0!, {r1, r3}
|
|
stmia r0!, {r2, r3}
|
|
stmia r0!, {r1, r3}
|
|
stmia r0!, {r2, r3}
|
|
stmia r0!, {r1, r3}
|
|
bx lr
|
|
arm_func_end func_01ff892c
|
|
|
|
.global func_01ff8954
|
|
arm_func_start func_01ff8954
|
|
func_01ff8954: ; 0x01ff8954
|
|
stmdb sp!, {r4}
|
|
mov ip, #0
|
|
ldmia r0!, {r2, r3, r4}
|
|
stmia r1!, {r2, r3, r4, ip}
|
|
ldmia r0!, {r2, r3, r4}
|
|
stmia r1!, {r2, r3, r4, ip}
|
|
ldmia r0!, {r2, r3, r4}
|
|
stmia r1!, {r2, r3, r4, ip}
|
|
mov ip, #0x1000
|
|
ldmia r0!, {r2, r3, r4}
|
|
stmia r1!, {r2, r3, r4, ip}
|
|
ldmia sp!, {r4}
|
|
bx lr
|
|
arm_func_end func_01ff8954
|
|
|
|
.global func_01ff8988
|
|
arm_func_start func_01ff8988
|
|
func_01ff8988: ; 0x01ff8988
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r7, r0
|
|
mov r6, r1
|
|
mov r5, r2
|
|
mov r4, r3
|
|
cmp r7, r6
|
|
beq _01ff89a8
|
|
bl func_020079d8
|
|
_01ff89a8:
|
|
ldr r0, [r7, #0xc]
|
|
ldr r1, [r7]
|
|
smull r3, r2, r4, r0
|
|
smlal r3, r2, r5, r1
|
|
ldr r0, [sp, #0x18]
|
|
ldr r1, [r7, #0x18]
|
|
ldr ip, [r7, #0x24]
|
|
smlal r3, r2, r0, r1
|
|
mov r1, r3, lsr #0xc
|
|
orr r1, r1, r2, lsl #20
|
|
add r1, ip, r1
|
|
str r1, [r6, #0x24]
|
|
ldr r1, [r7, #0x10]
|
|
ldr r2, [r7, #4]
|
|
smull ip, r3, r4, r1
|
|
smlal ip, r3, r5, r2
|
|
ldr r1, [r7, #0x1c]
|
|
ldr r2, [r7, #0x28]
|
|
smlal ip, r3, r0, r1
|
|
mov r1, ip, lsr #0xc
|
|
orr r1, r1, r3, lsl #20
|
|
add r1, r2, r1
|
|
str r1, [r6, #0x28]
|
|
ldr r1, [r7, #0x14]
|
|
ldr r2, [r7, #8]
|
|
smull ip, r3, r4, r1
|
|
smlal ip, r3, r5, r2
|
|
ldr r1, [r7, #0x20]
|
|
ldr r2, [r7, #0x2c]
|
|
smlal ip, r3, r0, r1
|
|
mov r0, ip, lsr #0xc
|
|
orr r0, r0, r3, lsl #20
|
|
add r0, r2, r0
|
|
str r0, [r6, #0x2c]
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
arm_func_end func_01ff8988
|
|
|
|
.global func_01ff8a34
|
|
thumb_func_start func_01ff8a34
|
|
func_01ff8a34: ; 0x01ff8a34
|
|
stmia r0!, {r1}
|
|
mov r1, #0
|
|
str r3, [r0, #0x1c]
|
|
mov r3, #0
|
|
stmia r0!, {r1, r3}
|
|
stmia r0!, {r1, r2, r3}
|
|
mov r2, #0
|
|
stmia r0!, {r1, r3}
|
|
add r0, #4
|
|
stmia r0!, {r1, r2, r3}
|
|
bx lr
|
|
.align 2, 0
|
|
thumb_func_end func_01ff8a34
|
|
|
|
.global func_01ff8a4c
|
|
arm_func_start func_01ff8a4c
|
|
func_01ff8a4c: ; 0x01ff8a4c
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
ldr ip, [sp, #0x10]
|
|
mov r5, r0
|
|
str ip, [sp]
|
|
mov r4, r1
|
|
bl func_01ff8138
|
|
ldr r0, [r5, #0x24]
|
|
str r0, [r4, #0x24]
|
|
ldr r0, [r5, #0x28]
|
|
str r0, [r4, #0x28]
|
|
ldr r0, [r5, #0x2c]
|
|
str r0, [r4, #0x2c]
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end func_01ff8a4c
|
|
|
|
.global func_01ff8a80
|
|
thumb_func_start func_01ff8a80
|
|
func_01ff8a80: ; 0x01ff8a80
|
|
str r1, [r0, #0x14]
|
|
neg r1, r1
|
|
str r1, [r0, #0x1c]
|
|
mov r1, #1
|
|
lsl r1, r1, #0xc
|
|
stmia r0!, {r1}
|
|
mov r3, #0
|
|
mov r1, #0
|
|
stmia r0!, {r1, r3}
|
|
stmia r0!, {r1, r2}
|
|
str r1, [r0, #4]
|
|
add r0, #0xc
|
|
stmia r0!, {r2, r3}
|
|
stmia r0!, {r1, r3}
|
|
bx lr
|
|
.align 2, 0
|
|
thumb_func_end func_01ff8a80
|
|
|
|
.global func_01ff8aa0
|
|
thumb_func_start func_01ff8aa0
|
|
func_01ff8aa0: ; 0x01ff8aa0
|
|
str r1, [r0, #0x18]
|
|
mov r3, #0
|
|
stmia r0!, {r2, r3}
|
|
neg r1, r1
|
|
stmia r0!, {r1, r3}
|
|
mov r1, #1
|
|
lsl r1, r1, #0xc
|
|
stmia r0!, {r1, r3}
|
|
add r0, #4
|
|
mov r1, #0
|
|
stmia r0!, {r1, r2, r3}
|
|
stmia r0!, {r1, r3}
|
|
bx lr
|
|
.align 2, 0
|
|
thumb_func_end func_01ff8aa0
|
|
|
|
.global func_01ff8abc
|
|
thumb_func_start func_01ff8abc
|
|
func_01ff8abc: ; 0x01ff8abc
|
|
stmia r0!, {r2}
|
|
mov r3, #0
|
|
stmia r0!, {r1, r3}
|
|
neg r1, r1
|
|
stmia r0!, {r1, r2, r3}
|
|
mov r1, #0
|
|
mov r2, #0
|
|
mov r3, #1
|
|
lsl r3, r3, #0xc
|
|
stmia r0!, {r1, r2, r3}
|
|
mov r3, #0
|
|
stmia r0!, {r1, r2, r3}
|
|
bx lr
|
|
.align 2, 0
|
|
thumb_func_end func_01ff8abc
|
|
|
|
.global func_01ff8ad8
|
|
arm_func_start func_01ff8ad8
|
|
func_01ff8ad8: ; 0x01ff8ad8
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
bl func_01ff8248
|
|
mov r0, #0
|
|
str r0, [r4, #0x24]
|
|
str r0, [r4, #0x28]
|
|
str r0, [r4, #0x2c]
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end func_01ff8ad8
|
|
|
|
.global func_01ff8af8
|
|
arm_func_start func_01ff8af8
|
|
func_01ff8af8: ; 0x01ff8af8
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x5c
|
|
mov sl, r0
|
|
ldr r0, [sl, #0x14]
|
|
cmp sl, r1
|
|
addeq sb, sp, #0x2c
|
|
ldr r3, [sl, #0x18]
|
|
ldr r2, [sl, #0xc]
|
|
ldr r6, [sl, #0x20]
|
|
str r1, [sp]
|
|
movne sb, r1
|
|
smull fp, r8, r2, r6
|
|
smull r7, r1, r0, r3
|
|
subs r7, fp, r7
|
|
sbc ip, r8, r1
|
|
ldr r4, [sl, #0x10]
|
|
ldr r5, [sl, #0x1c]
|
|
adds r1, r7, #0x800
|
|
smull fp, r8, r4, r6
|
|
smull r7, r6, r0, r5
|
|
adc r0, ip, #0
|
|
subs r7, fp, r7
|
|
sbc r6, r8, r6
|
|
mov r8, r1, lsr #0xc
|
|
orr r8, r8, r0, lsl #20
|
|
smull r1, r0, r2, r5
|
|
adds r7, r7, #0x800
|
|
smull r5, r3, r4, r3
|
|
adc r2, r6, #0
|
|
mov r7, r7, lsr #0xc
|
|
orr r7, r7, r2, lsl #20
|
|
subs r1, r1, r5
|
|
sbc r5, r0, r3
|
|
ldr r2, [sl]
|
|
adds r6, r1, #0x800
|
|
ldr fp, [sl, #4]
|
|
smull r4, r3, r2, r7
|
|
smull r1, r0, fp, r8
|
|
adc r2, r5, #0
|
|
mov r6, r6, lsr #0xc
|
|
orr r6, r6, r2, lsl #20
|
|
subs r2, r4, r1
|
|
ldr r1, [sl, #8]
|
|
sbc r0, r3, r0
|
|
smlal r2, r0, r1, r6
|
|
adds r1, r2, #0x800
|
|
adc r2, r0, #0
|
|
mov r0, r1, lsr #0xc
|
|
mov r1, r8, asr #0x1f
|
|
str r1, [sp, #4]
|
|
mov r1, r7, asr #0x1f
|
|
str r1, [sp, #8]
|
|
mov r1, r6, asr #0x1f
|
|
str r1, [sp, #0xc]
|
|
orrs r0, r0, r2, lsl #20
|
|
mov r1, #0
|
|
addeq sp, sp, #0x5c
|
|
subeq r0, r1, #1
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
bl func_01ff9a50
|
|
ldr r1, [sl, #8]
|
|
ldr r2, [sl, #0x1c]
|
|
ldr fp, [sl, #0x10]
|
|
smull r0, r4, r2, r1
|
|
smull r3, r2, fp, r1
|
|
ldr r5, [sl, #0x18]
|
|
str r2, [sp, #0x18]
|
|
str r3, [sp, #0x14]
|
|
smull r3, r2, r5, r1
|
|
str r2, [sp, #0x20]
|
|
ldr r2, [sl, #0x20]
|
|
str r3, [sp, #0x1c]
|
|
str r2, [sp, #0x10]
|
|
ldr r5, [sp, #0x10]
|
|
ldmia sl, {r3, lr}
|
|
smull ip, r5, lr, r5
|
|
subs r0, ip, r0
|
|
ldr r2, [sl, #0xc]
|
|
sbc r4, r5, r4
|
|
smull r1, r5, r2, r1
|
|
str r5, [sp, #0x28]
|
|
mov r5, r0, lsr #0xc
|
|
ldr fp, [sl, #0x14]
|
|
orr r5, r5, r4, lsl #20
|
|
smull r4, r2, lr, fp
|
|
ldr r0, [sp, #0x14]
|
|
subs r4, r4, r0
|
|
ldr r0, [sp, #0x18]
|
|
mov r4, r4, lsr #0xc
|
|
sbc r0, r2, r0
|
|
orr r4, r4, r0, lsl #20
|
|
ldr r0, [sp, #0x10]
|
|
ldr r2, [sp, #0x1c]
|
|
smull ip, r0, r3, r0
|
|
subs r2, ip, r2
|
|
ldr ip, [sp, #0x20]
|
|
sbc r0, r0, ip
|
|
smull ip, fp, r3, fp
|
|
ldr r3, [sp, #0x28]
|
|
subs r1, ip, r1
|
|
sbc r3, fp, r3
|
|
mov fp, r2, lsr #0xc
|
|
orr fp, fp, r0, lsl #20
|
|
mov r0, r1, lsr #0xc
|
|
orr r0, r0, r3, lsl #20
|
|
str r0, [sp, #0x24]
|
|
bl func_01ff9a18
|
|
smull r2, r1, r0, r5
|
|
mov r2, r2, lsr #0xc
|
|
orr r2, r2, r1, lsl #20
|
|
rsb lr, r2, #0
|
|
smull r2, r1, r0, r4
|
|
mov r4, r2, lsr #0xc
|
|
orr r4, r4, r1, lsl #20
|
|
smull r2, r1, r0, fp
|
|
mov r3, r2, lsr #0xc
|
|
orr r3, r3, r1, lsl #20
|
|
ldr r1, [sp, #0x24]
|
|
umull fp, r5, r0, r7
|
|
smull r2, r1, r0, r1
|
|
mov r2, r2, lsr #0xc
|
|
orr r2, r2, r1, lsl #20
|
|
ldr r1, [sp, #8]
|
|
mov ip, r0, asr #0x1f
|
|
mla r5, r0, r1, r5
|
|
mla r5, ip, r7, r5
|
|
mov r1, fp, lsr #0xc
|
|
orr r1, r1, r5, lsl #20
|
|
stmia sb, {r1, lr}
|
|
str r4, [sb, #8]
|
|
ldr r1, [sp, #4]
|
|
umull r5, r4, r0, r8
|
|
mla r4, r0, r1, r4
|
|
mla r4, ip, r8, r4
|
|
mov r1, r5, lsr #0xc
|
|
orr r1, r1, r4, lsl #20
|
|
rsb r1, r1, #0
|
|
str r1, [sb, #0xc]
|
|
ldr r1, [sp, #0xc]
|
|
rsb r2, r2, #0
|
|
str r3, [sb, #0x10]
|
|
str r2, [sb, #0x14]
|
|
umull r3, r2, r0, r6
|
|
mla r2, r0, r1, r2
|
|
mla r2, ip, r6, r2
|
|
mov r1, r3, lsr #0xc
|
|
orr r1, r1, r2, lsl #20
|
|
str r1, [sb, #0x18]
|
|
ldr r3, [sl]
|
|
ldr r1, [sl, #0x1c]
|
|
ldr r2, [sl, #0x18]
|
|
smull r5, r4, r3, r1
|
|
ldr r1, [sl, #4]
|
|
smull r3, r1, r2, r1
|
|
subs r2, r5, r3
|
|
sbc r1, r4, r1
|
|
mov r2, r2, lsr #0xc
|
|
orr r2, r2, r1, lsl #20
|
|
smull r2, r1, r0, r2
|
|
mov r2, r2, lsr #0xc
|
|
orr r2, r2, r1, lsl #20
|
|
rsb r1, r2, #0
|
|
str r1, [sb, #0x1c]
|
|
ldr r4, [sl]
|
|
ldr r3, [sl, #0x10]
|
|
ldr r2, [sl, #0xc]
|
|
ldr r1, [sl, #4]
|
|
smull r6, r5, r4, r3
|
|
smull r3, r1, r2, r1
|
|
subs r2, r6, r3
|
|
sbc r1, r5, r1
|
|
mov r2, r2, lsr #0xc
|
|
orr r2, r2, r1, lsl #20
|
|
mov r1, r2, asr #0x1f
|
|
umull r4, r3, r0, r2
|
|
mla r3, r0, r1, r3
|
|
mla r3, ip, r2, r3
|
|
mov r0, r4, lsr #0xc
|
|
orr r0, r0, r3, lsl #20
|
|
str r0, [sb, #0x20]
|
|
ldr r1, [sb, #0xc]
|
|
ldr r0, [sl, #0x28]
|
|
ldr r2, [sb]
|
|
smull r5, r4, r1, r0
|
|
ldr r0, [sl, #0x24]
|
|
ldr r3, [sb, #0x18]
|
|
smlal r5, r4, r2, r0
|
|
ldr r1, [sl, #0x2c]
|
|
add r0, sp, #0x2c
|
|
smlal r5, r4, r3, r1
|
|
mov r1, r5, lsr #0xc
|
|
orr r1, r1, r4, lsl #20
|
|
rsb r1, r1, #0
|
|
str r1, [sb, #0x24]
|
|
ldr r2, [sb, #0x10]
|
|
ldr r1, [sl, #0x28]
|
|
ldr r3, [sb, #4]
|
|
smull r5, r4, r2, r1
|
|
ldr r1, [sl, #0x24]
|
|
ldr r2, [sb, #0x1c]
|
|
smlal r5, r4, r3, r1
|
|
ldr r1, [sl, #0x2c]
|
|
cmp sb, r0
|
|
smlal r5, r4, r2, r1
|
|
mov r1, r5, lsr #0xc
|
|
orr r1, r1, r4, lsl #20
|
|
rsb r1, r1, #0
|
|
str r1, [sb, #0x28]
|
|
ldr r2, [sb, #0x14]
|
|
ldr r1, [sl, #0x28]
|
|
ldr r3, [sb, #8]
|
|
smull r6, r5, r2, r1
|
|
ldr r1, [sl, #0x24]
|
|
ldr r4, [sb, #0x20]
|
|
smlal r6, r5, r3, r1
|
|
ldr r2, [sl, #0x2c]
|
|
smlal r6, r5, r4, r2
|
|
mov r1, r6, lsr #0xc
|
|
orr r1, r1, r5, lsl #20
|
|
rsb r1, r1, #0
|
|
str r1, [sb, #0x2c]
|
|
bne _01ff8e78
|
|
ldr r1, [sp]
|
|
bl func_020079f4
|
|
_01ff8e78:
|
|
mov r0, #0
|
|
add sp, sp, #0x5c
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
arm_func_end func_01ff8af8
|
|
|
|
.global func_01ff8e84
|
|
arm_func_start func_01ff8e84
|
|
func_01ff8e84: ; 0x01ff8e84
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x4c
|
|
mov ip, r2
|
|
ldr r2, [r0, #4]
|
|
ldr r3, [r1, #0xc]
|
|
cmp ip, r1
|
|
smull r7, r4, r2, r3
|
|
ldr r6, [r0]
|
|
ldr r3, [r1]
|
|
addeq sl, sp, #0x1c
|
|
smlal r7, r4, r6, r3
|
|
ldr r5, [r0, #8]
|
|
ldr r3, [r1, #0x18]
|
|
movne sl, ip
|
|
smlal r7, r4, r5, r3
|
|
mov r3, r7, lsr #0xc
|
|
orr r3, r3, r4, lsl #20
|
|
str r3, [sl]
|
|
ldr r3, [r1, #0x10]
|
|
ldr r4, [r1, #4]
|
|
smull r8, r7, r2, r3
|
|
smlal r8, r7, r6, r4
|
|
ldr r3, [r1, #0x1c]
|
|
smlal r8, r7, r5, r3
|
|
mov r3, r8, lsr #0xc
|
|
orr r3, r3, r7, lsl #20
|
|
str r3, [sl, #4]
|
|
ldr r3, [r1, #0x14]
|
|
ldr r4, [r1, #8]
|
|
smull r8, r7, r2, r3
|
|
smlal r8, r7, r6, r4
|
|
ldr r2, [r1, #0x20]
|
|
smlal r8, r7, r5, r2
|
|
mov r5, r8, lsr #0xc
|
|
orr r5, r5, r7, lsl #20
|
|
str r5, [sl, #8]
|
|
ldr r8, [r0, #0x10]
|
|
ldr sb, [r0, #0xc]
|
|
smull r5, r3, r8, r3
|
|
smlal r5, r3, sb, r4
|
|
ldr r7, [r0, #0x14]
|
|
mov r6, sb, asr #0x1f
|
|
smlal r5, r3, r7, r2
|
|
mov r2, r5, lsr #0xc
|
|
orr r2, r2, r3, lsl #20
|
|
str r2, [sl, #0x14]
|
|
ldr r2, [r1, #0x10]
|
|
ldr r3, [r1, #4]
|
|
smull r5, r4, r8, r2
|
|
smlal r5, r4, sb, r3
|
|
ldr r3, [r1, #0x1c]
|
|
mov r2, r8, asr #0x1f
|
|
smlal r5, r4, r7, r3
|
|
str r2, [sp, #0x14]
|
|
mov r2, r5, lsr #0xc
|
|
orr r2, r2, r4, lsl #20
|
|
str r2, [sl, #0x10]
|
|
mov r2, r7, asr #0x1f
|
|
ldr r5, [r1]
|
|
str r2, [sp]
|
|
ldr r4, [r1, #0xc]
|
|
ldr lr, [r1, #0x18]
|
|
mov r2, r4, asr #0x1f
|
|
str r2, [sp, #4]
|
|
mov r2, r5, asr #0x1f
|
|
str r2, [sp, #8]
|
|
umull r2, r3, r7, lr
|
|
mov fp, lr, asr #0x1f
|
|
mla r3, r7, fp, r3
|
|
str r2, [sp, #0xc]
|
|
ldr r2, [sp]
|
|
ldr r7, [sp, #8]
|
|
mla r3, r2, lr, r3
|
|
umull fp, r2, sb, r5
|
|
mla r2, sb, r7, r2
|
|
mla r2, r6, r5, r2
|
|
ldr r6, [sp, #4]
|
|
umull sb, r7, r8, r4
|
|
mla r7, r8, r6, r7
|
|
ldr r8, [sp, #0x14]
|
|
adds r6, fp, sb
|
|
mla r7, r8, r4, r7
|
|
adc r7, r2, r7
|
|
ldr r2, [sp, #0xc]
|
|
adds r6, r2, r6
|
|
adc r2, r3, r7
|
|
mov r3, r6, lsr #0xc
|
|
orr r3, r3, r2, lsl #20
|
|
str r3, [sl, #0xc]
|
|
ldr r3, [r0, #0x1c]
|
|
ldr r6, [r0, #0x18]
|
|
smull r7, r4, r3, r4
|
|
smlal r7, r4, r6, r5
|
|
ldr r2, [r0, #0x20]
|
|
smlal r7, r4, r2, lr
|
|
mov r5, r7, lsr #0xc
|
|
orr r5, r5, r4, lsl #20
|
|
str r5, [sl, #0x18]
|
|
ldr r4, [r1, #0x10]
|
|
ldr r5, [r1, #4]
|
|
smull r8, r4, r3, r4
|
|
smlal r8, r4, r6, r5
|
|
ldr r7, [r1, #0x1c]
|
|
smlal r8, r4, r2, r7
|
|
mov r5, r8, lsr #0xc
|
|
orr r5, r5, r4, lsl #20
|
|
str r5, [sl, #0x1c]
|
|
ldr r5, [r1, #0x14]
|
|
ldr r4, [r1, #8]
|
|
smull r8, r7, r3, r5
|
|
smlal r8, r7, r6, r4
|
|
ldr r3, [r1, #0x20]
|
|
smlal r8, r7, r2, r3
|
|
mov r2, r8, lsr #0xc
|
|
orr r2, r2, r7, lsl #20
|
|
str r2, [sl, #0x20]
|
|
ldr r2, [r0, #0x28]
|
|
ldr sb, [r0, #0x24]
|
|
ldr r7, [r0, #0x2c]
|
|
smull r5, r0, r2, r5
|
|
smlal r5, r0, sb, r4
|
|
smlal r5, r0, r7, r3
|
|
mov r3, r5, lsr #0xc
|
|
orr r3, r3, r0, lsl #20
|
|
mov r0, r7, asr #0x1f
|
|
str r0, [sp, #0x18]
|
|
ldr r0, [r1, #0x2c]
|
|
mov fp, r2, asr #0x1f
|
|
adds r0, r0, r3
|
|
str r0, [sl, #0x2c]
|
|
ldr r3, [r1, #0x10]
|
|
ldr r4, [r1, #4]
|
|
smull r6, r3, r2, r3
|
|
smlal r6, r3, sb, r4
|
|
ldr r5, [r1, #0x1c]
|
|
ldr r0, [r1, #0x28]
|
|
smlal r6, r3, r7, r5
|
|
mov r4, r6, lsr #0xc
|
|
orr r4, r4, r3, lsl #20
|
|
adds r0, r0, r4
|
|
mov r8, sb, asr #0x1f
|
|
str r0, [sl, #0x28]
|
|
ldr r4, [r1]
|
|
ldr r3, [r1, #0xc]
|
|
umull r0, r5, sb, r4
|
|
mov lr, r4, asr #0x1f
|
|
mla r5, sb, lr, r5
|
|
mov sb, r3, asr #0x1f
|
|
str r0, [sp, #0x10]
|
|
mla r5, r8, r4, r5
|
|
umull r8, r0, r2, r3
|
|
mla r0, r2, sb, r0
|
|
ldr r4, [sp, #0x10]
|
|
mla r0, fp, r3, r0
|
|
adds r4, r4, r8
|
|
adc r2, r5, r0
|
|
ldr r6, [r1, #0x18]
|
|
ldr r8, [r1, #0x24]
|
|
mov r1, r6, asr #0x1f
|
|
umull r5, r3, r7, r6
|
|
mla r3, r7, r1, r3
|
|
adds r1, r5, r4
|
|
ldr r0, [sp, #0x18]
|
|
mov r1, r1, lsr #0xc
|
|
mla r3, r0, r6, r3
|
|
adc r0, r3, r2
|
|
orr r1, r1, r0, lsl #20
|
|
adds r0, r8, r1
|
|
add r4, sp, #0x1c
|
|
cmp sl, r4
|
|
addne sp, sp, #0x4c
|
|
str r0, [sl, #0x24]
|
|
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
ldmia r4!, {r0, r1, r2, r3}
|
|
stmia ip!, {r0, r1, r2, r3}
|
|
ldmia r4!, {r0, r1, r2, r3}
|
|
stmia ip!, {r0, r1, r2, r3}
|
|
ldmia r4, {r0, r1, r2, r3}
|
|
stmia ip, {r0, r1, r2, r3}
|
|
add sp, sp, #0x4c
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
arm_func_end func_01ff8e84
|
|
|
|
.global func_01ff9158
|
|
arm_func_start func_01ff9158
|
|
func_01ff9158: ; 0x01ff9158
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr r4, [r1, #0xc]
|
|
ldmia r0, {r3, ip}
|
|
smull r6, r5, ip, r4
|
|
ldr r4, [r1]
|
|
ldr r0, [r0, #8]
|
|
smlal r6, r5, r3, r4
|
|
ldr r4, [r1, #0x18]
|
|
smlal r6, r5, r0, r4
|
|
mov r6, r6, lsr #0xc
|
|
orr r6, r6, r5, lsl #20
|
|
str r6, [r2]
|
|
ldr r4, [r1, #0x24]
|
|
add r4, r6, r4
|
|
str r4, [r2]
|
|
ldr r4, [r1, #0x10]
|
|
ldr r5, [r1, #4]
|
|
smull r6, lr, ip, r4
|
|
smlal r6, lr, r3, r5
|
|
ldr r4, [r1, #0x1c]
|
|
smlal r6, lr, r0, r4
|
|
mov r5, r6, lsr #0xc
|
|
orr r5, r5, lr, lsl #20
|
|
str r5, [r2, #4]
|
|
ldr r4, [r1, #0x28]
|
|
add r4, r5, r4
|
|
str r4, [r2, #4]
|
|
ldr lr, [r1, #0x14]
|
|
ldr r4, [r1, #8]
|
|
smull r5, lr, ip, lr
|
|
smlal r5, lr, r3, r4
|
|
ldr r3, [r1, #0x20]
|
|
smlal r5, lr, r0, r3
|
|
mov r3, r5, lsr #0xc
|
|
orr r3, r3, lr, lsl #20
|
|
str r3, [r2, #8]
|
|
ldr r0, [r1, #0x2c]
|
|
add r0, r3, r0
|
|
str r0, [r2, #8]
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end func_01ff9158
|
|
|
|
.global func_01ff91f8
|
|
arm_func_start func_01ff91f8
|
|
func_01ff91f8: ; 0x01ff91f8
|
|
mov r2, #0x1000
|
|
mov r3, #0
|
|
stmia r0!, {r2, r3}
|
|
mov r1, #0
|
|
stmia r0!, {r1, r3}
|
|
stmia r0!, {r1, r2, r3}
|
|
stmia r0!, {r1, r3}
|
|
stmia r0!, {r1, r2, r3}
|
|
stmia r0!, {r1, r3}
|
|
stmia r0!, {r1, r2}
|
|
bx lr
|
|
arm_func_end func_01ff91f8
|
|
|
|
.global func_01ff9224
|
|
arm_func_start func_01ff9224
|
|
func_01ff9224: ; 0x01ff9224
|
|
ldmia r0!, {r2, r3, ip}
|
|
add r0, r0, #4
|
|
stmia r1!, {r2, r3, ip}
|
|
ldmia r0!, {r2, r3, ip}
|
|
add r0, r0, #4
|
|
stmia r1!, {r2, r3, ip}
|
|
ldmia r0!, {r2, r3, ip}
|
|
add r0, r0, #4
|
|
stmia r1!, {r2, r3, ip}
|
|
ldmia r0!, {r2, r3, ip}
|
|
add r0, r0, #4
|
|
stmia r1!, {r2, r3, ip}
|
|
bx lr
|
|
arm_func_end func_01ff9224
|
|
|
|
.global func_01ff9258
|
|
thumb_func_start func_01ff9258
|
|
func_01ff9258: ; 0x01ff9258
|
|
str r2, [r0]
|
|
str r2, [r0, #0x14]
|
|
str r1, [r0, #4]
|
|
neg r1, r1
|
|
str r1, [r0, #0x10]
|
|
mov r3, #1
|
|
mov r1, #0
|
|
lsl r3, r3, #0xc
|
|
mov r2, #0
|
|
add r0, #8
|
|
stmia r0!, {r1, r2}
|
|
add r0, #8
|
|
stmia r0!, {r1, r2}
|
|
stmia r0!, {r1, r2, r3}
|
|
stmia r0!, {r1, r2}
|
|
stmia r0!, {r1, r2, r3}
|
|
bx lr
|
|
.align 2, 0
|
|
thumb_func_end func_01ff9258
|
|
|
|
.global func_01ff927c
|
|
arm_func_start func_01ff927c
|
|
func_01ff927c: ; 0x01ff927c
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0xe8
|
|
cmp r2, r1
|
|
addeq sl, sp, #0xa8
|
|
str r2, [sp]
|
|
movne sl, r2
|
|
ldr r4, [r0, #4]
|
|
ldr r2, [r1, #0x10]
|
|
ldr r5, [r0]
|
|
smull r8, r7, r4, r2
|
|
ldr r2, [r1]
|
|
ldr r3, [r0, #8]
|
|
smlal r8, r7, r5, r2
|
|
ldr r6, [r1, #0x20]
|
|
ldr r2, [r0, #0xc]
|
|
smlal r8, r7, r3, r6
|
|
ldr r6, [r1, #0x30]
|
|
smlal r8, r7, r2, r6
|
|
mov r6, r8, lsr #0xc
|
|
orr r6, r6, r7, lsl #20
|
|
str r6, [sl]
|
|
ldr r6, [r1, #0x14]
|
|
ldr r7, [r1, #4]
|
|
smull sb, r8, r4, r6
|
|
smlal sb, r8, r5, r7
|
|
ldr r6, [r1, #0x24]
|
|
ldr r7, [r1, #0x34]
|
|
smlal sb, r8, r3, r6
|
|
smlal sb, r8, r2, r7
|
|
mov r6, sb, lsr #0xc
|
|
orr r6, r6, r8, lsl #20
|
|
str r6, [sl, #4]
|
|
ldr r6, [r1, #0x1c]
|
|
ldr r7, [r1, #0xc]
|
|
smull sb, r8, r4, r6
|
|
smlal sb, r8, r5, r7
|
|
ldr r6, [r1, #0x2c]
|
|
ldr r7, [r1, #0x3c]
|
|
smlal sb, r8, r3, r6
|
|
smlal sb, r8, r2, r7
|
|
mov r6, sb, lsr #0xc
|
|
orr r6, r6, r8, lsl #20
|
|
str r6, [sl, #0xc]
|
|
ldr fp, [r1, #0x18]
|
|
ldr ip, [r1, #8]
|
|
smull r7, r6, r4, fp
|
|
ldr r8, [r1, #0x38]
|
|
smlal r7, r6, r5, ip
|
|
ldr sb, [r1, #0x28]
|
|
mov lr, r8, asr #0x1f
|
|
smlal r7, r6, r3, sb
|
|
smlal r7, r6, r2, r8
|
|
mov r2, r7, lsr #0xc
|
|
orr r2, r2, r6, lsl #20
|
|
str r2, [sl, #8]
|
|
mov r2, fp, asr #0x1f
|
|
str r2, [sp, #4]
|
|
mov r2, ip, asr #0x1f
|
|
str r2, [sp, #8]
|
|
mov r2, sb, asr #0x1f
|
|
str r2, [sp, #0x8c]
|
|
ldr r6, [r0, #0x14]
|
|
ldr r7, [r0, #0x10]
|
|
mov r2, r6, asr #0x1f
|
|
str r2, [sp, #0xc]
|
|
mov r2, r7, asr #0x1f
|
|
ldr r5, [r0, #0x18]
|
|
str r2, [sp, #0x10]
|
|
mov r2, r5, asr #0x1f
|
|
ldr r4, [r0, #0x1c]
|
|
str r2, [sp, #0x14]
|
|
mov r2, r4, asr #0x1f
|
|
str r2, [sp, #0x18]
|
|
umull r2, r3, r4, r8
|
|
str r2, [sp, #0x1c]
|
|
mla r3, r4, lr, r3
|
|
ldr r2, [sp, #0x18]
|
|
mla r3, r2, r8, r3
|
|
umull r8, r2, r5, sb
|
|
str r8, [sp, #0x20]
|
|
ldr r8, [sp, #0x8c]
|
|
mla r2, r5, r8, r2
|
|
ldr r8, [sp, #0x14]
|
|
mla r2, r8, sb, r2
|
|
ldr r8, [sp, #8]
|
|
umull lr, sb, r7, ip
|
|
mla sb, r7, r8, sb
|
|
ldr r8, [sp, #0x10]
|
|
mla sb, r8, ip, sb
|
|
umull ip, r8, r6, fp
|
|
adds lr, lr, ip
|
|
ldr ip, [sp, #4]
|
|
mla r8, r6, ip, r8
|
|
ldr ip, [sp, #0xc]
|
|
mla r8, ip, fp, r8
|
|
adc sb, sb, r8
|
|
ldr r8, [sp, #0x20]
|
|
adds fp, r8, lr
|
|
adc r8, r2, sb
|
|
ldr r2, [sp, #0x1c]
|
|
adds sb, r2, fp
|
|
adc r2, r3, r8
|
|
mov r3, sb, lsr #0xc
|
|
orr r3, r3, r2, lsl #20
|
|
str r3, [sl, #0x18]
|
|
ldr r2, [r1, #0x14]
|
|
ldr r3, [r1, #4]
|
|
smull fp, r2, r6, r2
|
|
smlal fp, r2, r7, r3
|
|
ldr r8, [r1, #0x24]
|
|
ldr sb, [r1, #0x34]
|
|
smlal fp, r2, r5, r8
|
|
smlal fp, r2, r4, sb
|
|
mov r3, fp, lsr #0xc
|
|
orr r3, r3, r2, lsl #20
|
|
str r3, [sl, #0x14]
|
|
ldr r2, [r1, #0x1c]
|
|
ldr r3, [r1, #0xc]
|
|
smull fp, r2, r6, r2
|
|
smlal fp, r2, r7, r3
|
|
ldr r8, [r1, #0x2c]
|
|
ldr sb, [r1, #0x3c]
|
|
smlal fp, r2, r5, r8
|
|
smlal fp, r2, r4, sb
|
|
mov r3, fp, lsr #0xc
|
|
orr r3, r3, r2, lsl #20
|
|
str r3, [sl, #0x1c]
|
|
ldr sb, [r1, #0x10]
|
|
ldr fp, [r1, #0x30]
|
|
smull ip, r8, r6, sb
|
|
ldr r3, [r1]
|
|
ldr r2, [r1, #0x20]
|
|
smlal ip, r8, r7, r3
|
|
smlal ip, r8, r5, r2
|
|
smlal ip, r8, r4, fp
|
|
mov r4, ip, lsr #0xc
|
|
orr r4, r4, r8, lsl #20
|
|
str r4, [sl, #0x10]
|
|
mov r4, r3, asr #0x1f
|
|
mov r5, sb, asr #0x1f
|
|
str r4, [sp, #0x28]
|
|
mov r4, r2, asr #0x1f
|
|
str r5, [sp, #0x24]
|
|
ldr r7, [r0, #0x24]
|
|
str r4, [sp, #0x2c]
|
|
mov r4, r7, asr #0x1f
|
|
ldr r8, [r0, #0x20]
|
|
ldr r6, [r0, #0x28]
|
|
ldr r5, [r0, #0x2c]
|
|
mov lr, fp, asr #0x1f
|
|
str r4, [sp, #0x90]
|
|
mov r4, r8, asr #0x1f
|
|
str r4, [sp, #0x30]
|
|
mov r4, r6, asr #0x1f
|
|
str r4, [sp, #0x34]
|
|
mov r4, r5, asr #0x1f
|
|
str r4, [sp, #0x38]
|
|
umull ip, r4, r5, fp
|
|
str ip, [sp, #0x3c]
|
|
mla r4, r5, lr, r4
|
|
ldr ip, [sp, #0x38]
|
|
mla r4, ip, fp, r4
|
|
umull fp, lr, r6, r2
|
|
str fp, [sp, #0x40]
|
|
ldr fp, [sp, #0x2c]
|
|
mla lr, r6, fp, lr
|
|
ldr fp, [sp, #0x34]
|
|
mla lr, fp, r2, lr
|
|
umull r2, ip, r8, r3
|
|
str r2, [sp, #0x44]
|
|
ldr r2, [sp, #0x28]
|
|
mla ip, r8, r2, ip
|
|
ldr r2, [sp, #0x30]
|
|
mla ip, r2, r3, ip
|
|
umull r3, fp, r7, sb
|
|
ldr r2, [sp, #0x44]
|
|
adds r3, r2, r3
|
|
ldr r2, [sp, #0x24]
|
|
mla fp, r7, r2, fp
|
|
ldr r2, [sp, #0x90]
|
|
mla fp, r2, sb, fp
|
|
ldr r2, [sp, #0x40]
|
|
adc sb, ip, fp
|
|
adds fp, r2, r3
|
|
ldr r2, [sp, #0x3c]
|
|
adc r3, lr, sb
|
|
adds sb, r2, fp
|
|
adc r2, r4, r3
|
|
mov r3, sb, lsr #0xc
|
|
orr r3, r3, r2, lsl #20
|
|
str r3, [sl, #0x20]
|
|
ldr r2, [r1, #0x14]
|
|
ldr lr, [r1, #4]
|
|
str r2, [sp, #0x48]
|
|
ldr r3, [sp, #0x48]
|
|
mov r2, r2, asr #0x1f
|
|
umull ip, fp, r7, r3
|
|
mla fp, r7, r2, fp
|
|
ldr r2, [sp, #0x90]
|
|
ldr r4, [r1, #0x24]
|
|
mla fp, r2, r3, fp
|
|
smlal ip, fp, r8, lr
|
|
smlal ip, fp, r6, r4
|
|
ldr sb, [r1, #0x34]
|
|
smlal ip, fp, r5, sb
|
|
mov r2, ip, lsr #0xc
|
|
orr r2, r2, fp, lsl #20
|
|
str r2, [sl, #0x24]
|
|
ldr r2, [r1, #0x1c]
|
|
ldr lr, [r1, #0xc]
|
|
str r2, [sp, #0x4c]
|
|
ldr r3, [sp, #0x4c]
|
|
mov r2, r2, asr #0x1f
|
|
umull ip, fp, r7, r3
|
|
mla fp, r7, r2, fp
|
|
ldr r2, [sp, #0x90]
|
|
ldr r4, [r1, #0x2c]
|
|
mla fp, r2, r3, fp
|
|
smlal ip, fp, r8, lr
|
|
smlal ip, fp, r6, r4
|
|
ldr sb, [r1, #0x3c]
|
|
smlal ip, fp, r5, sb
|
|
mov r2, ip, lsr #0xc
|
|
orr r2, r2, fp, lsl #20
|
|
str r2, [sl, #0x2c]
|
|
ldr fp, [r1, #0x18]
|
|
ldr r3, [r1, #0x38]
|
|
mov ip, fp, asr #0x1f
|
|
str r3, [sp, #0x50]
|
|
umull r4, r3, r7, fp
|
|
mla r3, r7, ip, r3
|
|
ldr r7, [sp, #0x90]
|
|
ldr r2, [r1, #8]
|
|
mla r3, r7, fp, r3
|
|
smlal r4, r3, r8, r2
|
|
ldr sb, [r1, #0x28]
|
|
smlal r4, r3, r6, sb
|
|
ldr r6, [sp, #0x50]
|
|
smlal r4, r3, r5, r6
|
|
mov r4, r4, lsr #0xc
|
|
orr r4, r4, r3, lsl #20
|
|
str r4, [sl, #0x28]
|
|
ldr r4, [r0, #0x34]
|
|
ldr r3, [r0, #0x30]
|
|
smull r6, r5, r4, fp
|
|
smlal r6, r5, r3, r2
|
|
mov r2, r4, asr #0x1f
|
|
str r2, [sp, #0x54]
|
|
mov r2, r3, asr #0x1f
|
|
str r2, [sp, #0x58]
|
|
ldr r2, [r0, #0x38]
|
|
ldr ip, [r0, #0x3c]
|
|
smlal r6, r5, r2, sb
|
|
ldr r0, [sp, #0x50]
|
|
smlal r6, r5, ip, r0
|
|
mov r0, r6, lsr #0xc
|
|
orr r0, r0, r5, lsl #20
|
|
str r0, [sl, #0x38]
|
|
mov r0, r2, asr #0x1f
|
|
str r0, [sp, #0x5c]
|
|
mov r0, ip, asr #0x1f
|
|
str r0, [sp, #0x60]
|
|
ldr r8, [r1, #0x24]
|
|
ldr r7, [r1, #4]
|
|
mov r0, r8, asr #0x1f
|
|
ldr sb, [r1, #0x34]
|
|
str r0, [sp, #0x98]
|
|
mov r0, r7, asr #0x1f
|
|
ldr r6, [r1, #0x14]
|
|
str r0, [sp, #0x6c]
|
|
mov r0, r6, asr #0x1f
|
|
str r0, [sp, #0x70]
|
|
umull r0, fp, ip, sb
|
|
mov lr, sb, asr #0x1f
|
|
str r0, [sp, #0x64]
|
|
mla fp, ip, lr, fp
|
|
ldr r0, [sp, #0x60]
|
|
add r5, sp, #0xa8
|
|
mla fp, r0, sb, fp
|
|
umull r0, sb, r2, r8
|
|
str r0, [sp, #0x94]
|
|
ldr r0, [sp, #0x98]
|
|
mla sb, r2, r0, sb
|
|
ldr r0, [sp, #0x5c]
|
|
mla sb, r0, r8, sb
|
|
umull r0, r8, r3, r7
|
|
str r0, [sp, #0x68]
|
|
ldr r0, [sp, #0x6c]
|
|
mla r8, r3, r0, r8
|
|
ldr r0, [sp, #0x58]
|
|
mla r8, r0, r7, r8
|
|
umull r7, lr, r4, r6
|
|
ldr r0, [sp, #0x68]
|
|
adds r7, r0, r7
|
|
ldr r0, [sp, #0x70]
|
|
mla lr, r4, r0, lr
|
|
ldr r0, [sp, #0x54]
|
|
mla lr, r0, r6, lr
|
|
ldr r0, [sp, #0x94]
|
|
adc r6, r8, lr
|
|
adds r7, r0, r7
|
|
ldr r0, [sp, #0x64]
|
|
adc r6, sb, r6
|
|
adds r7, r0, r7
|
|
adc r0, fp, r6
|
|
mov r6, r7, lsr #0xc
|
|
orr r6, r6, r0, lsl #20
|
|
str r6, [sl, #0x34]
|
|
ldr r8, [r1, #0x20]
|
|
ldr sb, [r1, #0x30]
|
|
mov r0, r8, asr #0x1f
|
|
ldr r7, [r1]
|
|
str r0, [sp, #0xa0]
|
|
mov r0, r7, asr #0x1f
|
|
ldr r6, [r1, #0x10]
|
|
str r0, [sp, #0x7c]
|
|
mov r0, r6, asr #0x1f
|
|
str r0, [sp, #0x80]
|
|
umull r0, fp, ip, sb
|
|
mov lr, sb, asr #0x1f
|
|
str r0, [sp, #0x74]
|
|
mla fp, ip, lr, fp
|
|
ldr r0, [sp, #0x60]
|
|
mla fp, r0, sb, fp
|
|
umull r0, sb, r2, r8
|
|
str r0, [sp, #0x9c]
|
|
ldr r0, [sp, #0xa0]
|
|
mla sb, r2, r0, sb
|
|
ldr r0, [sp, #0x5c]
|
|
mla sb, r0, r8, sb
|
|
umull r0, r8, r3, r7
|
|
str r0, [sp, #0x78]
|
|
ldr r0, [sp, #0x7c]
|
|
mla r8, r3, r0, r8
|
|
ldr r0, [sp, #0x58]
|
|
mla r8, r0, r7, r8
|
|
umull r7, lr, r4, r6
|
|
ldr r0, [sp, #0x78]
|
|
adds r7, r0, r7
|
|
ldr r0, [sp, #0x80]
|
|
mla lr, r4, r0, lr
|
|
ldr r0, [sp, #0x54]
|
|
mla lr, r0, r6, lr
|
|
ldr r0, [sp, #0x9c]
|
|
adc r6, r8, lr
|
|
adds r7, r0, r7
|
|
ldr r0, [sp, #0x74]
|
|
adc r6, sb, r6
|
|
adds r7, r0, r7
|
|
adc r0, fp, r6
|
|
mov r6, r7, lsr #0xc
|
|
orr r6, r6, r0, lsl #20
|
|
str r6, [sl, #0x30]
|
|
ldr r8, [r1, #0x3c]
|
|
ldr r6, [r1, #0xc]
|
|
mov r0, r8, asr #0x1f
|
|
str r0, [sp, #0x84]
|
|
ldr r7, [r1, #0x2c]
|
|
ldr fp, [sp, #0x84]
|
|
mov r0, r7, asr #0x1f
|
|
str r0, [sp, #0x88]
|
|
ldr r0, [r1, #0x1c]
|
|
mov lr, r6, asr #0x1f
|
|
mov r1, r0, asr #0x1f
|
|
str r1, [sp, #0xa4]
|
|
umull sb, r1, ip, r8
|
|
mla r1, ip, fp, r1
|
|
ldr fp, [sp, #0x60]
|
|
mla r1, fp, r8, r1
|
|
ldr r8, [sp, #0x88]
|
|
umull ip, fp, r2, r7
|
|
mla fp, r2, r8, fp
|
|
ldr r2, [sp, #0x5c]
|
|
ldr r8, [sp, #0xa4]
|
|
mla fp, r2, r7, fp
|
|
umull r7, r2, r3, r6
|
|
mla r2, r3, lr, r2
|
|
ldr r3, [sp, #0x58]
|
|
mla r2, r3, r6, r2
|
|
umull r6, r3, r4, r0
|
|
mla r3, r4, r8, r3
|
|
ldr r4, [sp, #0x54]
|
|
mla r3, r4, r0, r3
|
|
adds r4, r7, r6
|
|
adc r0, r2, r3
|
|
adds r2, ip, r4
|
|
adc r0, fp, r0
|
|
adds r2, sb, r2
|
|
adc r0, r1, r0
|
|
mov r1, r2, lsr #0xc
|
|
orr r1, r1, r0, lsl #20
|
|
cmp sl, r5
|
|
addne sp, sp, #0xe8
|
|
str r1, [sl, #0x3c]
|
|
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
ldr r4, [sp]
|
|
ldmia r5!, {r0, r1, r2, r3}
|
|
stmia r4!, {r0, r1, r2, r3}
|
|
str r4, [sp]
|
|
ldmia r5!, {r0, r1, r2, r3}
|
|
stmia r4!, {r0, r1, r2, r3}
|
|
str r4, [sp]
|
|
ldmia r5!, {r0, r1, r2, r3}
|
|
stmia r4!, {r0, r1, r2, r3}
|
|
ldmia r5, {r0, r1, r2, r3}
|
|
stmia r4, {r0, r1, r2, r3}
|
|
str r4, [sp]
|
|
add sp, sp, #0xe8
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
arm_func_end func_01ff927c
|
|
|
|
.global func_01ff98e0
|
|
arm_func_start func_01ff98e0
|
|
func_01ff98e0: ; 0x01ff98e0
|
|
stmdb sp!, {r3, lr}
|
|
bl func_01ff9b24
|
|
bl func_01ff9a18
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end func_01ff98e0
|
|
|
|
.global func_01ff98f0
|
|
arm_func_start func_01ff98f0
|
|
func_01ff98f0: ; 0x01ff98f0
|
|
stmdb sp!, {r3, lr}
|
|
bl func_01ff9b24
|
|
ldr r1, _01ff9914 ; =0x04000280
|
|
_01ff98fc:
|
|
ldrh r0, [r1]
|
|
tst r0, #0x8000
|
|
bne _01ff98fc
|
|
ldr r1, _01ff9918 ; =0x040002a0
|
|
ldmia r1, {r0, r1}
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
arm_func_end func_01ff98f0
|
|
_01ff9914: .word 0x04000280
|
|
_01ff9918: .word 0x040002a0
|
|
|
|
.global func_01ff991c
|
|
arm_func_start func_01ff991c
|
|
func_01ff991c: ; 0x01ff991c
|
|
stmdb sp!, {r3, lr}
|
|
bl func_01ff9a50
|
|
bl func_01ff9a18
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end func_01ff991c
|
|
|
|
.global func_01ff992c
|
|
arm_func_start func_01ff992c
|
|
func_01ff992c: ; 0x01ff992c
|
|
stmdb sp!, {r3, lr}
|
|
bl func_01ff9a50
|
|
ldr r1, _01ff9950 ; =0x04000280
|
|
_01ff9938:
|
|
ldrh r0, [r1]
|
|
tst r0, #0x8000
|
|
bne _01ff9938
|
|
ldr r1, _01ff9954 ; =0x040002a0
|
|
ldmia r1, {r0, r1}
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
arm_func_end func_01ff992c
|
|
_01ff9950: .word 0x04000280
|
|
_01ff9954: .word 0x040002a0
|
|
|
|
.global func_01ff9958
|
|
arm_func_start func_01ff9958
|
|
func_01ff9958: ; 0x01ff9958
|
|
stmdb sp!, {r3, lr}
|
|
cmp r0, #0
|
|
movle r0, #0
|
|
ldmleia sp!, {r3, pc}
|
|
ldr r2, _01ff9988 ; =0x040002b0
|
|
mov r1, #1
|
|
strh r1, [r2]
|
|
mov r1, #0
|
|
str r1, [r2, #8]
|
|
str r0, [r2, #0xc]
|
|
bl func_01ff9af8
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
arm_func_end func_01ff9958
|
|
_01ff9988: .word 0x040002b0
|
|
|
|
.global func_01ff998c
|
|
arm_func_start func_01ff998c
|
|
func_01ff998c: ; 0x01ff998c
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
cmp r4, #0
|
|
ble _01ff99e4
|
|
bl func_01ff9a50
|
|
mov r0, r4
|
|
bl func_01ff9a80
|
|
bl func_01ff99f4
|
|
ldr r3, _01ff99ec ; =0x040002b0
|
|
_01ff99b0:
|
|
ldrh r2, [r3]
|
|
tst r2, #0x8000
|
|
bne _01ff99b0
|
|
ldr r3, _01ff99f0 ; =0x040002b4
|
|
mov r2, #0
|
|
ldr r3, [r3]
|
|
umull lr, ip, r0, r3
|
|
mla ip, r0, r2, ip
|
|
mla ip, r1, r3, ip
|
|
adds r0, lr, #0
|
|
adc r0, ip, #0x200
|
|
mov r0, r0, asr #0xa
|
|
ldmia sp!, {r4, pc}
|
|
_01ff99e4:
|
|
mov r0, #0
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
arm_func_end func_01ff998c
|
|
_01ff99ec: .word 0x040002b0
|
|
_01ff99f0: .word 0x040002b4
|
|
|
|
.global func_01ff99f4
|
|
arm_func_start func_01ff99f4
|
|
func_01ff99f4: ; 0x01ff99f4
|
|
ldr r1, _01ff9a10 ; =0x04000280
|
|
_01ff99f8:
|
|
ldrh r0, [r1]
|
|
tst r0, #0x8000
|
|
bne _01ff99f8
|
|
ldr r1, _01ff9a14 ; =0x040002a0
|
|
ldmia r1, {r0, r1}
|
|
bx lr
|
|
.align 2, 0
|
|
arm_func_end func_01ff99f4
|
|
_01ff9a10: .word 0x04000280
|
|
_01ff9a14: .word 0x040002a0
|
|
|
|
.global func_01ff9a18
|
|
arm_func_start func_01ff9a18
|
|
func_01ff9a18: ; 0x01ff9a18
|
|
ldr r1, _01ff9a48 ; =0x04000280
|
|
_01ff9a1c:
|
|
ldrh r0, [r1]
|
|
tst r0, #0x8000
|
|
bne _01ff9a1c
|
|
ldr r0, _01ff9a4c ; =0x040002a0
|
|
ldr r1, [r0]
|
|
ldr r0, [r0, #4]
|
|
adds r2, r1, #0x80000
|
|
adc r1, r0, #0
|
|
mov r0, r2, lsr #0x14
|
|
orr r0, r0, r1, lsl #12
|
|
bx lr
|
|
.align 2, 0
|
|
arm_func_end func_01ff9a18
|
|
_01ff9a48: .word 0x04000280
|
|
_01ff9a4c: .word 0x040002a0
|
|
|
|
.global func_01ff9a50
|
|
arm_func_start func_01ff9a50
|
|
func_01ff9a50: ; 0x01ff9a50
|
|
ldr r2, _01ff9a7c ; =0x04000280
|
|
mov r1, #1
|
|
strh r1, [r2]
|
|
mov r1, #0
|
|
str r1, [r2, #0x10]
|
|
mov r1, #0x1000
|
|
str r1, [r2, #0x14]
|
|
str r0, [r2, #0x18]
|
|
mov r0, #0
|
|
str r0, [r2, #0x1c]
|
|
bx lr
|
|
.align 2, 0
|
|
arm_func_end func_01ff9a50
|
|
_01ff9a7c: .word 0x04000280
|
|
|
|
.global func_01ff9a80
|
|
arm_func_start func_01ff9a80
|
|
func_01ff9a80: ; 0x01ff9a80
|
|
cmp r0, #0
|
|
ble _01ff9aa4
|
|
ldr r2, _01ff9ac0 ; =0x040002b0
|
|
mov r1, #1
|
|
strh r1, [r2]
|
|
mov r1, #0
|
|
str r1, [r2, #8]
|
|
str r0, [r2, #0xc]
|
|
bx lr
|
|
_01ff9aa4:
|
|
ldr r1, _01ff9ac0 ; =0x040002b0
|
|
mov r0, #1
|
|
strh r0, [r1]
|
|
mov r0, #0
|
|
str r0, [r1, #8]
|
|
str r0, [r1, #0xc]
|
|
bx lr
|
|
.align 2, 0
|
|
arm_func_end func_01ff9a80
|
|
_01ff9ac0: .word 0x040002b0
|
|
|
|
.global func_01ff9ac4
|
|
arm_func_start func_01ff9ac4
|
|
func_01ff9ac4: ; 0x01ff9ac4
|
|
cmp r0, #0
|
|
ble _01ff9ae0
|
|
ldr r1, _01ff9af4 ; =0x040002b8
|
|
mov r2, #0
|
|
str r2, [r1]
|
|
str r0, [r1, #4]
|
|
bx lr
|
|
_01ff9ae0:
|
|
ldr r0, _01ff9af4 ; =0x040002b8
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
str r1, [r0, #4]
|
|
bx lr
|
|
.align 2, 0
|
|
arm_func_end func_01ff9ac4
|
|
_01ff9af4: .word 0x040002b8
|
|
|
|
.global func_01ff9af8
|
|
arm_func_start func_01ff9af8
|
|
func_01ff9af8: ; 0x01ff9af8
|
|
ldr r1, _01ff9b1c ; =0x040002b0
|
|
_01ff9afc:
|
|
ldrh r0, [r1]
|
|
tst r0, #0x8000
|
|
bne _01ff9afc
|
|
ldr r0, _01ff9b20 ; =0x040002b4
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x200
|
|
mov r0, r0, lsr #0xa
|
|
bx lr
|
|
.align 2, 0
|
|
arm_func_end func_01ff9af8
|
|
_01ff9b1c: .word 0x040002b0
|
|
_01ff9b20: .word 0x040002b4
|
|
|
|
.global func_01ff9b24
|
|
arm_func_start func_01ff9b24
|
|
func_01ff9b24: ; 0x01ff9b24
|
|
ldr r3, _01ff9b48 ; =0x04000280
|
|
mov r2, #1
|
|
strh r2, [r3]
|
|
mov r2, #0
|
|
str r2, [r3, #0x10]
|
|
str r0, [r3, #0x14]
|
|
str r1, [r3, #0x18]
|
|
str r2, [r3, #0x1c]
|
|
bx lr
|
|
.align 2, 0
|
|
arm_func_end func_01ff9b24
|
|
_01ff9b48: .word 0x04000280
|
|
|
|
.global func_01ff9b4c
|
|
arm_func_start func_01ff9b4c
|
|
func_01ff9b4c: ; 0x01ff9b4c
|
|
ldr r2, _01ff9b80 ; =0x04000280
|
|
mov r3, #0
|
|
strh r3, [r2]
|
|
str r0, [r2, #0x10]
|
|
str r1, [r2, #0x18]
|
|
mov r0, r3
|
|
str r0, [r2, #0x1c]
|
|
_01ff9b68:
|
|
ldrh r0, [r2]
|
|
tst r0, #0x8000
|
|
bne _01ff9b68
|
|
ldr r0, _01ff9b84 ; =0x040002a0
|
|
ldr r0, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
arm_func_end func_01ff9b4c
|
|
_01ff9b80: .word 0x04000280
|
|
_01ff9b84: .word 0x040002a0
|
|
|
|
.global func_01ff9b88
|
|
arm_func_start func_01ff9b88
|
|
func_01ff9b88: ; 0x01ff9b88
|
|
ldr r2, _01ff9bbc ; =0x04000280
|
|
mov r3, #0
|
|
strh r3, [r2]
|
|
str r0, [r2, #0x10]
|
|
str r1, [r2, #0x18]
|
|
mov r0, r3
|
|
str r0, [r2, #0x1c]
|
|
_01ff9ba4:
|
|
ldrh r0, [r2]
|
|
tst r0, #0x8000
|
|
bne _01ff9ba4
|
|
ldr r0, _01ff9bc0 ; =0x040002a8
|
|
ldr r0, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
arm_func_end func_01ff9b88
|
|
_01ff9bbc: .word 0x04000280
|
|
_01ff9bc0: .word 0x040002a8
|
|
|
|
.global func_01ff9bc4
|
|
arm_func_start func_01ff9bc4
|
|
func_01ff9bc4: ; 0x01ff9bc4
|
|
ldr ip, [r0]
|
|
ldr r3, [r1]
|
|
add r3, ip, r3
|
|
str r3, [r2]
|
|
ldr ip, [r0, #4]
|
|
ldr r3, [r1, #4]
|
|
add r3, ip, r3
|
|
str r3, [r2, #4]
|
|
ldr r3, [r0, #8]
|
|
ldr r0, [r1, #8]
|
|
add r0, r3, r0
|
|
str r0, [r2, #8]
|
|
bx lr
|
|
arm_func_end func_01ff9bc4
|
|
|
|
.global func_01ff9bf8
|
|
arm_func_start func_01ff9bf8
|
|
func_01ff9bf8: ; 0x01ff9bf8
|
|
ldr ip, [r0]
|
|
ldr r3, [r1]
|
|
sub r3, ip, r3
|
|
str r3, [r2]
|
|
ldr ip, [r0, #4]
|
|
ldr r3, [r1, #4]
|
|
sub r3, ip, r3
|
|
str r3, [r2, #4]
|
|
ldr r3, [r0, #8]
|
|
ldr r0, [r1, #8]
|
|
sub r0, r3, r0
|
|
str r0, [r2, #8]
|
|
bx lr
|
|
arm_func_end func_01ff9bf8
|
|
|
|
.global func_01ff9c2c
|
|
arm_func_start func_01ff9c2c
|
|
func_01ff9c2c: ; 0x01ff9c2c
|
|
stmdb sp!, {r4, lr}
|
|
ldr r3, [r0, #4]
|
|
ldr r2, [r1, #4]
|
|
ldr ip, [r0]
|
|
smull r4, lr, r3, r2
|
|
ldr r2, [r1]
|
|
ldr r3, [r0, #8]
|
|
smlal r4, lr, ip, r2
|
|
ldr r0, [r1, #8]
|
|
smlal r4, lr, r3, r0
|
|
adds r0, r4, #0x800
|
|
adc r1, lr, #0
|
|
mov r0, r0, lsr #0xc
|
|
orr r0, r0, r1, lsl #20
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end func_01ff9c2c
|
|
|
|
.global func_01ff9c68
|
|
arm_func_start func_01ff9c68
|
|
func_01ff9c68: ; 0x01ff9c68
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
ldmia r0, {r5, lr}
|
|
ldr r6, [r1, #8]
|
|
ldr r0, [r0, #8]
|
|
ldmia r1, {r4, ip}
|
|
smull r8, r7, lr, r6
|
|
smull r3, r1, r0, ip
|
|
subs r3, r8, r3
|
|
sbc r1, r7, r1
|
|
adds r3, r3, #0x800
|
|
smull r8, r7, r0, r4
|
|
smull r6, r0, r5, r6
|
|
adc r1, r1, #0
|
|
subs r6, r8, r6
|
|
mov r3, r3, lsr #0xc
|
|
orr r3, r3, r1, lsl #20
|
|
sbc r7, r7, r0
|
|
adds r0, r6, #0x800
|
|
smull ip, r6, r5, ip
|
|
adc r5, r7, #0
|
|
smull r4, r1, lr, r4
|
|
mov r7, r0, lsr #0xc
|
|
subs r4, ip, r4
|
|
sbc r0, r6, r1
|
|
adds r1, r4, #0x800
|
|
str r3, [r2]
|
|
orr r7, r7, r5, lsl #20
|
|
adc r0, r0, #0
|
|
mov r1, r1, lsr #0xc
|
|
str r7, [r2, #4]
|
|
orr r1, r1, r0, lsl #20
|
|
str r1, [r2, #8]
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
arm_func_end func_01ff9c68
|
|
|
|
.global func_01ff9cec
|
|
arm_func_start func_01ff9cec
|
|
func_01ff9cec: ; 0x01ff9cec
|
|
ldr r1, [r0, #4]
|
|
ldr r2, [r0]
|
|
smull ip, r3, r1, r1
|
|
smlal ip, r3, r2, r2
|
|
ldr r0, [r0, #8]
|
|
ldr r2, _01ff9d44 ; =0x040002b0
|
|
smlal ip, r3, r0, r0
|
|
mov r1, #1
|
|
mov r0, r3, lsl #0x2
|
|
strh r1, [r2]
|
|
mov r1, ip, lsl #0x2
|
|
str r1, [r2, #8]
|
|
orr r0, r0, ip, lsr #30
|
|
str r0, [r2, #0xc]
|
|
_01ff9d24:
|
|
ldrh r0, [r2]
|
|
tst r0, #0x8000
|
|
bne _01ff9d24
|
|
ldr r0, _01ff9d48 ; =0x040002b4
|
|
ldr r0, [r0]
|
|
add r0, r0, #1
|
|
mov r0, r0, asr #0x1
|
|
bx lr
|
|
.align 2, 0
|
|
arm_func_end func_01ff9cec
|
|
_01ff9d44: .word 0x040002b0
|
|
_01ff9d48: .word 0x040002b4
|
|
|
|
.global func_01ff9d4c
|
|
arm_func_start func_01ff9d4c
|
|
func_01ff9d4c: ; 0x01ff9d4c
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
ldr r2, [r0, #4]
|
|
ldr r3, [r0]
|
|
smull r6, r5, r2, r2
|
|
smlal r6, r5, r3, r3
|
|
ldr r2, [r0, #8]
|
|
ldr r4, _01ff9e58 ; =0x04000280
|
|
smlal r6, r5, r2, r2
|
|
mov r3, #2
|
|
strh r3, [r4]
|
|
mov r3, #0
|
|
str r3, [r4, #0x10]
|
|
mov r3, #0x1000000
|
|
str r3, [r4, #0x14]
|
|
str r6, [r4, #0x18]
|
|
mov r2, r5, lsl #0x2
|
|
str r5, [r4, #0x1c]
|
|
mov r3, #1
|
|
strh r3, [r4, #0x30]
|
|
mov r3, r6, lsl #0x2
|
|
str r3, [r4, #0x38]
|
|
orr r2, r2, r6, lsr #30
|
|
str r2, [r4, #0x3c]
|
|
_01ff9da8:
|
|
ldrh r2, [r4, #0x30]
|
|
tst r2, #0x8000
|
|
bne _01ff9da8
|
|
ldr r2, _01ff9e5c ; =0x040002b4
|
|
ldr ip, [r2]
|
|
sub r3, r2, #0x34
|
|
_01ff9dc0:
|
|
ldrh r2, [r3]
|
|
tst r2, #0x8000
|
|
bne _01ff9dc0
|
|
ldr sb, _01ff9e60 ; =0x040002a0
|
|
ldr r5, [r0]
|
|
ldr r8, [sb]
|
|
mov r7, ip, asr #0x1f
|
|
umull r3, r2, r8, ip
|
|
umull r6, lr, r3, r5
|
|
mov r4, r5, asr #0x1f
|
|
mla r2, r8, r7, r2
|
|
ldr r7, [sb, #4]
|
|
mla lr, r3, r4, lr
|
|
mla r2, r7, ip, r2
|
|
mla lr, r2, r5, lr
|
|
adds r4, r6, #0
|
|
adc r4, lr, #0x1000
|
|
mov r4, r4, asr #0xd
|
|
str r4, [r1]
|
|
ldr ip, [r0, #4]
|
|
umull r5, lr, r3, ip
|
|
mov r4, ip, asr #0x1f
|
|
mla lr, r3, r4, lr
|
|
mla lr, r2, ip, lr
|
|
adds r4, r5, #0
|
|
adc r4, lr, #0x1000
|
|
mov r4, r4, asr #0xd
|
|
str r4, [r1, #4]
|
|
ldr ip, [r0, #8]
|
|
umull r4, lr, r3, ip
|
|
mov r0, ip, asr #0x1f
|
|
mla lr, r3, r0, lr
|
|
mla lr, r2, ip, lr
|
|
adds r0, r4, #0
|
|
adc r0, lr, #0x1000
|
|
mov r0, r0, asr #0xd
|
|
str r0, [r1, #8]
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
.align 2, 0
|
|
arm_func_end func_01ff9d4c
|
|
_01ff9e58: .word 0x04000280
|
|
_01ff9e5c: .word 0x040002b4
|
|
_01ff9e60: .word 0x040002a0
|
|
|
|
.global func_01ff9e64
|
|
arm_func_start func_01ff9e64
|
|
func_01ff9e64: ; 0x01ff9e64
|
|
stmdb sp!, {r4, lr}
|
|
ldr r4, [r1]
|
|
ldr lr, [r2]
|
|
smull ip, r4, r0, r4
|
|
mov ip, ip, lsr #0xc
|
|
orr ip, ip, r4, lsl #20
|
|
add r4, lr, ip
|
|
str r4, [r3]
|
|
ldr ip, [r1, #4]
|
|
ldr r4, [r2, #4]
|
|
smull lr, ip, r0, ip
|
|
mov lr, lr, lsr #0xc
|
|
orr lr, lr, ip, lsl #20
|
|
add r4, r4, lr
|
|
str r4, [r3, #4]
|
|
ldr r1, [r1, #8]
|
|
ldr ip, [r2, #8]
|
|
smull r2, r1, r0, r1
|
|
mov r0, r2, lsr #0xc
|
|
orr r0, r0, r1, lsl #20
|
|
add r0, ip, r0
|
|
str r0, [r3, #8]
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end func_01ff9e64
|
|
|
|
.global func_01ff9ec0
|
|
arm_func_start func_01ff9ec0
|
|
func_01ff9ec0: ; 0x01ff9ec0
|
|
stmdb sp!, {r4, lr}
|
|
ldr r3, [r0, #4]
|
|
ldr r2, [r1, #4]
|
|
ldr r4, [r0]
|
|
sub r2, r3, r2
|
|
smull ip, r3, r2, r2
|
|
ldr lr, [r1]
|
|
ldr r2, [r0, #8]
|
|
sub r4, r4, lr
|
|
ldr r0, [r1, #8]
|
|
smlal ip, r3, r4, r4
|
|
sub r0, r2, r0
|
|
smlal ip, r3, r0, r0
|
|
mov r0, r3, lsl #0x2
|
|
ldr r2, _01ff9f34 ; =0x040002b0
|
|
mov r1, #1
|
|
strh r1, [r2]
|
|
mov r1, ip, lsl #0x2
|
|
str r1, [r2, #8]
|
|
orr r0, r0, ip, lsr #30
|
|
str r0, [r2, #0xc]
|
|
_01ff9f14:
|
|
ldrh r0, [r2]
|
|
tst r0, #0x8000
|
|
bne _01ff9f14
|
|
ldr r0, _01ff9f38 ; =0x040002b4
|
|
ldr r0, [r0]
|
|
add r0, r0, #1
|
|
mov r0, r0, asr #0x1
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
arm_func_end func_01ff9ec0
|
|
_01ff9f34: .word 0x040002b0
|
|
_01ff9f38: .word 0x040002b4
|
|
|
|
.global func_01ff9f3c
|
|
arm_func_start func_01ff9f3c
|
|
func_01ff9f3c: ; 0x01ff9f3c
|
|
stmdb sp!, {r4, lr}
|
|
cmp r0, #0
|
|
ble _01ff9fd0
|
|
cmp r1, #0
|
|
ble _01ff9f88
|
|
cmp r1, r0
|
|
ble _01ff9f68
|
|
mov r2, r0
|
|
mov r4, #0
|
|
mov r0, #1
|
|
b _01ffa074
|
|
_01ff9f68:
|
|
bge _01ff9f80
|
|
mov r2, r1
|
|
mov r1, r0
|
|
ldr r4, _01ffa0d4 ; =0x00001922
|
|
mov r0, #0
|
|
b _01ffa074
|
|
_01ff9f80:
|
|
ldr r0, _01ffa0d8 ; =0x00000c91
|
|
ldmia sp!, {r4, pc}
|
|
_01ff9f88:
|
|
bge _01ff9fc8
|
|
rsb r1, r1, #0
|
|
cmp r1, r0
|
|
bge _01ff9fac
|
|
mov r2, r1
|
|
mov r1, r0
|
|
ldr r4, _01ffa0d4 ; =0x00001922
|
|
mov r0, #1
|
|
b _01ffa074
|
|
_01ff9fac:
|
|
ble _01ff9fc0
|
|
mov r2, r0
|
|
ldr r4, _01ffa0dc ; =0x00003244
|
|
mov r0, #0
|
|
b _01ffa074
|
|
_01ff9fc0:
|
|
ldr r0, _01ffa0e0 ; =0x000025b3
|
|
ldmia sp!, {r4, pc}
|
|
_01ff9fc8:
|
|
ldr r0, _01ffa0d4 ; =0x00001922
|
|
ldmia sp!, {r4, pc}
|
|
_01ff9fd0:
|
|
bge _01ffa064
|
|
cmp r1, #0
|
|
rsb r0, r0, #0
|
|
bge _01ffa01c
|
|
rsb r1, r1, #0
|
|
cmp r1, r0
|
|
ble _01ff9ffc
|
|
mov r2, r0
|
|
ldr r4, _01ffa0e4 ; =0xffffcdbc
|
|
mov r0, #1
|
|
b _01ffa074
|
|
_01ff9ffc:
|
|
bge _01ffa014
|
|
mov r2, r1
|
|
mov r1, r0
|
|
ldr r4, _01ffa0e8 ; =0xffffe6de
|
|
mov r0, #0
|
|
b _01ffa074
|
|
_01ffa014:
|
|
ldr r0, _01ffa0ec ; =0xffffda4d
|
|
ldmia sp!, {r4, pc}
|
|
_01ffa01c:
|
|
cmp r1, #0
|
|
ble _01ffa05c
|
|
cmp r1, r0
|
|
bge _01ffa040
|
|
mov r2, r1
|
|
mov r1, r0
|
|
ldr r4, _01ffa0e8 ; =0xffffe6de
|
|
mov r0, #1
|
|
b _01ffa074
|
|
_01ffa040:
|
|
ble _01ffa054
|
|
mov r4, #0
|
|
mov r2, r0
|
|
mov r0, r4
|
|
b _01ffa074
|
|
_01ffa054:
|
|
mvn r0, #0xc90
|
|
ldmia sp!, {r4, pc}
|
|
_01ffa05c:
|
|
ldr r0, _01ffa0e8 ; =0xffffe6de
|
|
ldmia sp!, {r4, pc}
|
|
_01ffa064:
|
|
cmp r1, #0
|
|
movge r0, #0
|
|
ldrlt r0, _01ffa0dc ; =0x00003244
|
|
ldmia sp!, {r4, pc}
|
|
_01ffa074:
|
|
cmp r1, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r4, pc}
|
|
cmp r0, #0
|
|
mov r0, r2
|
|
beq _01ffa0b0
|
|
bl func_01ff98e0
|
|
mov r1, r0, asr #0x5
|
|
ldr r0, _01ffa0f0 ; =data_02054f54
|
|
mov r1, r1, lsl #0x1
|
|
ldrsh r0, [r0, r1]
|
|
add r0, r4, r0
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
ldmia sp!, {r4, pc}
|
|
_01ffa0b0:
|
|
bl func_01ff98e0
|
|
mov r1, r0, asr #0x5
|
|
ldr r0, _01ffa0f0 ; =data_02054f54
|
|
mov r1, r1, lsl #0x1
|
|
ldrsh r0, [r0, r1]
|
|
sub r0, r4, r0
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
arm_func_end func_01ff9f3c
|
|
_01ffa0d4: .word 0x00001922
|
|
_01ffa0d8: .word 0x00000c91
|
|
_01ffa0dc: .word 0x00003244
|
|
_01ffa0e0: .word 0x000025b3
|
|
_01ffa0e4: .word 0xffffcdbc
|
|
_01ffa0e8: .word 0xffffe6de
|
|
_01ffa0ec: .word 0xffffda4d
|
|
_01ffa0f0: .word data_02054f54
|
|
|
|
.global func_01ffa0f4
|
|
arm_func_start func_01ffa0f4
|
|
func_01ffa0f4: ; 0x01ffa0f4
|
|
stmdb sp!, {r4, lr}
|
|
cmp r0, #0
|
|
ble _01ffa188
|
|
cmp r1, #0
|
|
ble _01ffa140
|
|
cmp r1, r0
|
|
ble _01ffa120
|
|
mov r2, r0
|
|
mov r4, #0
|
|
mov r0, #1
|
|
b _01ffa238
|
|
_01ffa120:
|
|
bge _01ffa138
|
|
mov r2, r1
|
|
mov r1, r0
|
|
mov r4, #0x4000
|
|
mov r0, #0
|
|
b _01ffa238
|
|
_01ffa138:
|
|
mov r0, #0x2000
|
|
ldmia sp!, {r4, pc}
|
|
_01ffa140:
|
|
bge _01ffa180
|
|
rsb r1, r1, #0
|
|
cmp r1, r0
|
|
bge _01ffa164
|
|
mov r2, r1
|
|
mov r1, r0
|
|
mov r4, #0x4000
|
|
mov r0, #1
|
|
b _01ffa238
|
|
_01ffa164:
|
|
ble _01ffa178
|
|
mov r2, r0
|
|
mov r4, #0x8000
|
|
mov r0, #0
|
|
b _01ffa238
|
|
_01ffa178:
|
|
mov r0, #0x6000
|
|
ldmia sp!, {r4, pc}
|
|
_01ffa180:
|
|
mov r0, #0x4000
|
|
ldmia sp!, {r4, pc}
|
|
_01ffa188:
|
|
bge _01ffa228
|
|
cmp r1, #0
|
|
rsb r0, r0, #0
|
|
bge _01ffa1dc
|
|
rsb r1, r1, #0
|
|
cmp r1, r0
|
|
ble _01ffa1b8
|
|
mov r4, #0x8000
|
|
mov r2, r0
|
|
rsb r4, r4, #0
|
|
mov r0, #1
|
|
b _01ffa238
|
|
_01ffa1b8:
|
|
bge _01ffa1d4
|
|
mov r4, #0x4000
|
|
mov r2, r1
|
|
mov r1, r0
|
|
rsb r4, r4, #0
|
|
mov r0, #0
|
|
b _01ffa238
|
|
_01ffa1d4:
|
|
mov r0, #0xa000
|
|
ldmia sp!, {r4, pc}
|
|
_01ffa1dc:
|
|
cmp r1, #0
|
|
ble _01ffa220
|
|
cmp r1, r0
|
|
bge _01ffa204
|
|
mov r4, #0x4000
|
|
mov r2, r1
|
|
mov r1, r0
|
|
rsb r4, r4, #0
|
|
mov r0, #1
|
|
b _01ffa238
|
|
_01ffa204:
|
|
ble _01ffa218
|
|
mov r4, #0
|
|
mov r2, r0
|
|
mov r0, r4
|
|
b _01ffa238
|
|
_01ffa218:
|
|
mov r0, #0xe000
|
|
ldmia sp!, {r4, pc}
|
|
_01ffa220:
|
|
mov r0, #0xc000
|
|
ldmia sp!, {r4, pc}
|
|
_01ffa228:
|
|
cmp r1, #0
|
|
movge r0, #0
|
|
movlt r0, #0x8000
|
|
ldmia sp!, {r4, pc}
|
|
_01ffa238:
|
|
cmp r1, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r4, pc}
|
|
cmp r0, #0
|
|
mov r0, r2
|
|
beq _01ffa274
|
|
bl func_01ff98e0
|
|
mov r1, r0, asr #0x5
|
|
ldr r0, _01ffa298 ; =data_02055058
|
|
mov r1, r1, lsl #0x1
|
|
ldrsh r0, [r0, r1]
|
|
add r0, r4, r0
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
ldmia sp!, {r4, pc}
|
|
_01ffa274:
|
|
bl func_01ff98e0
|
|
mov r1, r0, asr #0x5
|
|
ldr r0, _01ffa298 ; =data_02055058
|
|
mov r1, r1, lsl #0x1
|
|
ldrsh r0, [r0, r1]
|
|
sub r0, r4, r0
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
arm_func_end func_01ffa0f4
|
|
_01ffa298: .word data_02055058
|
|
|
|
.global func_01ffa29c
|
|
arm_func_start func_01ffa29c
|
|
func_01ffa29c: ; 0x01ffa29c
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r7, r0
|
|
mov r6, r1
|
|
mov r5, r2
|
|
mov r4, r3
|
|
bl func_0200ee4c
|
|
mov r1, #0xc
|
|
mul r2, r7, r1
|
|
add r1, r2, #0xb0
|
|
add r2, r2, #0x4000000
|
|
str r6, [r2, #0xb0]
|
|
add r1, r1, #0x4000000
|
|
str r5, [r1, #4]
|
|
str r4, [r1, #8]
|
|
bl func_0200ee60
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
arm_func_end func_01ffa29c
|
|
|
|
.global func_01ffa2dc
|
|
arm_func_start func_01ffa2dc
|
|
func_01ffa2dc: ; 0x01ffa2dc
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r7, r0
|
|
mov r6, r1
|
|
mov r5, r2
|
|
mov r4, r3
|
|
bl func_0200ee4c
|
|
mov r1, #0xc
|
|
mul r2, r7, r1
|
|
add r1, r2, #0xb0
|
|
add r2, r2, #0x4000000
|
|
str r6, [r2, #0xb0]
|
|
add r3, r1, #0x4000000
|
|
str r5, [r3, #4]
|
|
ldr r2, _01ffa344 ; =0x040000b0
|
|
str r4, [r3, #8]
|
|
ldr r1, [r2]
|
|
cmp r7, #0
|
|
ldr r1, [r2]
|
|
bne _01ffa33c
|
|
mov r2, #0
|
|
str r2, [r3]
|
|
ldr r1, _01ffa348 ; =0x81400001
|
|
str r2, [r3, #4]
|
|
str r1, [r3, #8]
|
|
_01ffa33c:
|
|
bl func_0200ee60
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
arm_func_end func_01ffa2dc
|
|
_01ffa344: .word 0x040000b0
|
|
_01ffa348: .word 0x81400001
|
|
|
|
.global func_01ffa34c
|
|
arm_func_start func_01ffa34c
|
|
func_01ffa34c: ; 0x01ffa34c
|
|
mov ip, #0xc
|
|
mul ip, r0, ip
|
|
add r0, ip, #0xb0
|
|
add ip, ip, #0x4000000
|
|
str r1, [ip, #0xb0]
|
|
add r0, r0, #0x4000000
|
|
str r2, [r0, #4]
|
|
str r3, [r0, #8]
|
|
bx lr
|
|
arm_func_end func_01ffa34c
|
|
|
|
.global func_01ffa370
|
|
arm_func_start func_01ffa370
|
|
func_01ffa370: ; 0x01ffa370
|
|
stmdb sp!, {r3, lr}
|
|
mov ip, #0xc
|
|
mul lr, r0, ip
|
|
add ip, lr, #0xb0
|
|
add lr, lr, #0x4000000
|
|
str r1, [lr, #0xb0]
|
|
add ip, ip, #0x4000000
|
|
str r2, [ip, #4]
|
|
ldr r2, _01ffa3cc ; =0x040000b0
|
|
str r3, [ip, #8]
|
|
ldr r1, [r2]
|
|
cmp r0, #0
|
|
ldr r0, [r2]
|
|
bne _01ffa3bc
|
|
mov r1, #0
|
|
str r1, [ip]
|
|
ldr r0, _01ffa3d0 ; =0x81400001
|
|
str r1, [ip, #4]
|
|
str r0, [ip, #8]
|
|
_01ffa3bc:
|
|
ldr r1, _01ffa3cc ; =0x040000b0
|
|
ldr r0, [r1]
|
|
ldr r0, [r1]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
arm_func_end func_01ffa370
|
|
_01ffa3cc: .word 0x040000b0
|
|
_01ffa3d0: .word 0x81400001
|
|
|
|
.global func_01ffa3d4
|
|
arm_func_start func_01ffa3d4
|
|
func_01ffa3d4: ; 0x01ffa3d4
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
movs r4, r2
|
|
mov r6, r0
|
|
mov r5, r1
|
|
bne _01ffa3fc
|
|
cmp r3, #0
|
|
ldmeqia sp!, {r4, r5, r6, pc}
|
|
ldr r0, [sp, #0x10]
|
|
blx r3
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
_01ffa3fc:
|
|
ldr r0, _01ffa480 ; =data_027e0200
|
|
_01ffa400:
|
|
ldr r1, [r0]
|
|
cmp r1, #0
|
|
bne _01ffa400
|
|
ldr r2, _01ffa480 ; =data_027e0200
|
|
mov r0, #1
|
|
str r0, [r2]
|
|
str r6, [r2, #4]
|
|
ldr ip, [sp, #0x10]
|
|
str r3, [r2, #0x10]
|
|
mov r0, r6
|
|
mov r1, #0x38000000
|
|
str ip, [r2, #0x14]
|
|
bl func_020075b8
|
|
mov r0, r6
|
|
mov r1, r5
|
|
mov r2, r4
|
|
mov r3, #0
|
|
bl func_0200763c
|
|
mov r0, r6
|
|
bl func_020074d4
|
|
mov r0, r6
|
|
ldr r1, _01ffa484 ; =func_02007894
|
|
mov r2, #0
|
|
bl func_0200c338
|
|
mov r0, r6
|
|
mov r1, r5
|
|
ldr r2, _01ffa488 ; =0x04000400
|
|
mov r3, #0x3c00000
|
|
rsb r3, r3, #0
|
|
orr r3, r3, r4, lsr #2
|
|
bl func_01ffa29c
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
arm_func_end func_01ffa3d4
|
|
_01ffa480: .word data_027e0200
|
|
_01ffa484: .word func_02007894
|
|
_01ffa488: .word 0x04000400
|
|
|
|
.global func_01ffa48c
|
|
arm_func_start func_01ffa48c
|
|
func_01ffa48c: ; 0x01ffa48c
|
|
stmdb sp!, {lr}
|
|
mov ip, #0x4000000
|
|
add ip, ip, #0x210
|
|
ldr r1, [ip, #-8]
|
|
cmp r1, #0
|
|
ldmeqia sp!, {pc}
|
|
ldmia ip, {r1, r2}
|
|
ands r1, r1, r2
|
|
ldmeqia sp!, {pc}
|
|
mov r3, #0x80000000
|
|
_01ffa4b4:
|
|
clz r0, r1
|
|
bics r1, r1, r3, lsr r0
|
|
bne _01ffa4b4
|
|
mov r1, r3, lsr r0
|
|
str r1, [ip, #4]
|
|
rsbs r0, r0, #0x1f
|
|
ldr r1, _01ffa4dc ; =data_027e0014
|
|
ldr r0, [r1, r0, lsl #2]
|
|
ldr lr, _01ffa4e0 ; =func_01ffa4e4
|
|
bx r0
|
|
.align 2, 0
|
|
arm_func_end func_01ffa48c
|
|
_01ffa4dc: .word data_027e0014
|
|
_01ffa4e0: .word func_01ffa4e4
|
|
|
|
.global func_01ffa4e4
|
|
arm_func_start func_01ffa4e4
|
|
func_01ffa4e4: ; 0x01ffa4e4
|
|
ldr ip, _01ffa630 ; =data_027e0220
|
|
mov r3, #0
|
|
ldr ip, [ip]
|
|
mov r2, #1
|
|
cmp ip, #0
|
|
beq _01ffa534
|
|
_01ffa4fc:
|
|
str r2, [ip, #0x64]
|
|
str r3, [ip, #0x78]
|
|
str r3, [ip, #0x7c]
|
|
ldr r0, [ip, #0x80]
|
|
str r3, [ip, #0x80]
|
|
mov ip, r0
|
|
cmp ip, #0
|
|
bne _01ffa4fc
|
|
ldr ip, _01ffa630 ; =data_027e0220
|
|
str r3, [ip]
|
|
str r3, [ip, #4]
|
|
ldr ip, _01ffa634 ; =data_027e02a0
|
|
mov r1, #1
|
|
strh r1, [ip]
|
|
_01ffa534:
|
|
ldr ip, _01ffa634 ; =data_027e02a0
|
|
ldrh r1, [ip]
|
|
cmp r1, #0
|
|
ldreq pc, [sp], #4
|
|
mov r1, #0
|
|
strh r1, [ip]
|
|
mov r3, #0xd2
|
|
msr cpsr_c, r3 ; 16
|
|
add r2, ip, #8
|
|
ldr r1, [r2]
|
|
_01ffa55c:
|
|
cmp r1, #0
|
|
ldrneh r0, [r1, #0x64]
|
|
cmpne r0, #1
|
|
ldrne r1, [r1, #0x68]
|
|
bne _01ffa55c
|
|
cmp r1, #0
|
|
bne _01ffa584
|
|
_01ffa578:
|
|
mov r3, #0x92
|
|
msr cpsr_c, r3 ; 16
|
|
ldr pc, [sp], #4
|
|
_01ffa584:
|
|
ldr r0, [ip, #4]
|
|
cmp r1, r0
|
|
beq _01ffa578
|
|
ldr r3, [ip, #0xc]
|
|
cmp r3, #0
|
|
beq _01ffa5ac
|
|
stmdb sp!, {r0, r1, ip}
|
|
mov lr, pc
|
|
bx r3
|
|
_01ffa5a8:
|
|
.byte 0x03, 0x10, 0xbd, 0xe8
|
|
_01ffa5ac:
|
|
str r1, [ip, #4]
|
|
mrs r2, spsr ; 13
|
|
str r2, [r0, #0]!
|
|
stmdb sp!, {r0, r1}
|
|
add r0, r0, #0
|
|
add r0, r0, #0x48
|
|
ldr r1, _01ffa638 ; =func_02003564
|
|
blx r1
|
|
ldmia sp!, {r0, r1}
|
|
ldmib sp!, {r2, r3}
|
|
stmib r0!, {r2, r3}
|
|
ldmib sp!, {r2, r3, ip, lr}
|
|
arm_func_end func_01ffa4e4
|
|
.global data_01ffa5dc
|
|
data_01ffa5dc: ; 0x01ffa5dc
|
|
.byte 0xfc, 0x7f, 0xe0, 0xe9
|
|
|
|
.global func_01ffa5e0
|
|
arm_func_start func_01ffa5e0
|
|
func_01ffa5e0: ; 0x01ffa5e0
|
|
stmib r0!, {lr}
|
|
mov r3, #0xd3
|
|
msr cpsr_c, r3 ; 16
|
|
stmib r0!, {sp}
|
|
stmdb sp!, {r1}
|
|
add r0, r1, #0
|
|
add r0, r0, #0x48
|
|
ldr r1, _01ffa63c ; =func_020035a4
|
|
blx r1
|
|
ldmia sp!, {r1}
|
|
ldr sp, [r1, #0x44]
|
|
mov r3, #0xd2
|
|
msr cpsr_c, r3 ; 16
|
|
ldr r2, [r1, #0]!
|
|
msr spsr_cf, r2 ; 9
|
|
ldr lr, [r1, #0x40]
|
|
ldmib r1, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, sp, lr} ^
|
|
mov r0, r0
|
|
stmda sp!, {r0, r1, r2, r3, ip, lr}
|
|
ldmia sp!, {pc}
|
|
.align 2, 0
|
|
arm_func_end func_01ffa5e0
|
|
_01ffa630: .word data_027e0220
|
|
_01ffa634: .word data_027e02a0
|
|
_01ffa638: .word func_02003564
|
|
_01ffa63c: .word func_020035a4
|
|
|
|
.global func_01ffa640
|
|
arm_func_start func_01ffa640
|
|
func_01ffa640: ; 0x01ffa640
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _01ffa66c ; =data_0205ada4
|
|
_01ffa648:
|
|
ldrh r1, [r0]
|
|
cmp r1, #0
|
|
beq _01ffa648
|
|
ldr r0, _01ffa670 ; =0x04000208
|
|
mov r1, #0
|
|
strh r1, [r0]
|
|
bl func_01ffa754
|
|
bl func_01ffa674
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
arm_func_end func_01ffa640
|
|
_01ffa66c: .word data_0205ada4
|
|
_01ffa670: .word 0x04000208
|
|
|
|
.global func_01ffa674
|
|
arm_func_start func_01ffa674
|
|
func_01ffa674: ; 0x01ffa674
|
|
mov ip, #0x4000000
|
|
str ip, [ip, #0x208]
|
|
ldr r1, _01ffa720 ; =data_027e0000
|
|
add r1, r1, #0x3fc0
|
|
add r1, r1, #0x3c
|
|
mov r0, #0
|
|
str r0, [r1]
|
|
ldr r1, _01ffa724 ; =0x04000180
|
|
_01ffa694:
|
|
ldrh r0, [r1]
|
|
and r0, r0, #0xf
|
|
cmp r0, #1
|
|
bne _01ffa694
|
|
mov r0, #0x100
|
|
strh r0, [r1]
|
|
mov r0, #0
|
|
ldr r3, _01ffa728 ; =0x027ffd9c
|
|
ldr r4, [r3]
|
|
ldr r1, _01ffa72c ; =0x027ffd80
|
|
mov r2, #0x80
|
|
bl func_01ffa740
|
|
str r4, [r3]
|
|
ldr r1, _01ffa730 ; =0x027fff80
|
|
mov r2, #0x18
|
|
bl func_01ffa740
|
|
ldr r1, _01ffa734 ; =0x027fff98
|
|
strh r0, [r1]
|
|
ldr r1, _01ffa738 ; =0x027fff9c
|
|
mov r2, #0x64
|
|
bl func_01ffa740
|
|
ldr r1, _01ffa724 ; =0x04000180
|
|
_01ffa6ec:
|
|
ldrh r0, [r1]
|
|
and r0, r0, #0xf
|
|
cmp r0, #1
|
|
beq _01ffa6ec
|
|
mov r0, #0
|
|
strh r0, [r1]
|
|
ldr r3, _01ffa73c ; =0x027ffe00
|
|
ldr ip, [r3, #0x24]
|
|
mov lr, ip
|
|
ldr fp, _01ffa730 ; =0x027fff80
|
|
ldmia fp, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sb, sl}
|
|
mov fp, #0
|
|
bx ip
|
|
.align 2, 0
|
|
arm_func_end func_01ffa674
|
|
_01ffa720: .word data_027e0000
|
|
_01ffa724: .word 0x04000180
|
|
_01ffa728: .word 0x027ffd9c
|
|
_01ffa72c: .word 0x027ffd80
|
|
_01ffa730: .word 0x027fff80
|
|
_01ffa734: .word 0x027fff98
|
|
_01ffa738: .word 0x027fff9c
|
|
_01ffa73c: .word 0x027ffe00
|
|
|
|
.global func_01ffa740
|
|
arm_func_start func_01ffa740
|
|
func_01ffa740: ; 0x01ffa740
|
|
add ip, r1, r2
|
|
_01ffa744:
|
|
cmp r1, ip
|
|
stmltia r1!, {r0}
|
|
blt _01ffa744
|
|
bx lr
|
|
arm_func_end func_01ffa740
|
|
|
|
.global func_01ffa754
|
|
arm_func_start func_01ffa754
|
|
func_01ffa754: ; 0x01ffa754
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
ldr r1, _01ffa7f4 ; =0x027ffc2c
|
|
ldr r4, [r1]
|
|
cmp r4, #0x8000
|
|
blo _01ffa778
|
|
mov r0, r4
|
|
add r1, r1, #0x1d4
|
|
mov r2, #0x160
|
|
bl func_01ffa7fc
|
|
_01ffa778:
|
|
ldr r0, _01ffa7f8 ; =0x027ffe20
|
|
ldr r5, [r0]
|
|
ldr r6, [r0, #8]
|
|
ldr r7, [r0, #0xc]
|
|
ldr r8, [r0, #0x10]
|
|
ldr sb, [r0, #0x18]
|
|
ldr sl, [r0, #0x1c]
|
|
bl func_0200ee4c
|
|
mov fp, r0
|
|
bl func_0200e228
|
|
bl func_0200e21c
|
|
mov r0, fp
|
|
bl func_0200ee60
|
|
bl func_0200e2f0
|
|
bl func_0200e2e4
|
|
add r5, r5, r4
|
|
cmp r5, #0x8000
|
|
bhs _01ffa7d0
|
|
rsb r0, r5, #0x8000
|
|
add r6, r6, r0
|
|
sub r7, r7, r0
|
|
mov r5, #0x8000
|
|
_01ffa7d0:
|
|
mov r0, r5
|
|
mov r1, r6
|
|
mov r2, r7
|
|
bl func_01ffa7fc
|
|
mov r1, sb
|
|
mov r2, sl
|
|
add r0, r8, r4
|
|
bl func_01ffa7fc
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
arm_func_end func_01ffa754
|
|
_01ffa7f4: .word 0x027ffc2c
|
|
_01ffa7f8: .word 0x027ffe20
|
|
|
|
.global func_01ffa7fc
|
|
arm_func_start func_01ffa7fc
|
|
func_01ffa7fc: ; 0x01ffa7fc
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
ldr r4, _01ffa8c0 ; =0x027ffe60
|
|
ldr r3, _01ffa8c4 ; =0x000001ff
|
|
ldr r5, [r4]
|
|
and r4, r0, r3
|
|
bic r3, r5, #0x7000000
|
|
ldr r5, _01ffa8c8 ; =0x040001a4
|
|
orr r3, r3, #0xa1000000
|
|
rsb ip, r4, #0
|
|
_01ffa820:
|
|
ldr r4, [r5]
|
|
tst r4, #0x80000000
|
|
bne _01ffa820
|
|
ldr r7, _01ffa8cc ; =0x040001a1
|
|
mov r4, #0x80
|
|
strb r4, [r7]
|
|
cmp ip, r2
|
|
add r0, r0, ip
|
|
ldmgeia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
ldr r4, _01ffa8d0 ; =0x04100010
|
|
mov sb, r0, lsr #0x8
|
|
mov r6, #0xb7
|
|
mov r5, #0
|
|
_01ffa854:
|
|
strb r6, [r7, #7]
|
|
mov lr, r0, lsr #0x18
|
|
strb lr, [r7, #8]
|
|
mov lr, r0, lsr #0x10
|
|
strb lr, [r7, #9]
|
|
strb sb, [r7, #0xa]
|
|
strb r0, [r7, #0xb]
|
|
strb r5, [r7, #0xc]
|
|
strb r5, [r7, #0xd]
|
|
strb r5, [r7, #0xe]
|
|
str r3, [r7, #3]
|
|
_01ffa880:
|
|
ldr r8, [r7, #3]
|
|
tst r8, #0x800000
|
|
beq _01ffa8a4
|
|
cmp ip, #0
|
|
ldr lr, [r4]
|
|
blt _01ffa8a0
|
|
cmp ip, r2
|
|
strlt lr, [r1, ip]
|
|
_01ffa8a0:
|
|
add ip, ip, #4
|
|
_01ffa8a4:
|
|
tst r8, #0x80000000
|
|
bne _01ffa880
|
|
cmp ip, r2
|
|
add sb, sb, #2
|
|
add r0, r0, #0x200
|
|
blt _01ffa854
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
.align 2, 0
|
|
arm_func_end func_01ffa7fc
|
|
_01ffa8c0: .word 0x027ffe60
|
|
_01ffa8c4: .word 0x000001ff
|
|
_01ffa8c8: .word 0x040001a4
|
|
_01ffa8cc: .word 0x040001a1
|
|
_01ffa8d0: .word 0x04100010
|
|
|
|
.global func_01ffa8d4
|
|
arm_func_start func_01ffa8d4
|
|
func_01ffa8d4: ; 0x01ffa8d4
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _01ffa928 ; =data_027e0374
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
beq _01ffa8ec
|
|
bl func_01ffa934
|
|
_01ffa8ec:
|
|
ldr r0, _01ffa92c ; =data_027e0378
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
ldrne r2, [r0]
|
|
cmpne r2, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
ldr r1, _01ffa930 ; =0x04000400
|
|
add r0, r0, #4
|
|
mov r2, r2, lsl #0x2
|
|
bl func_02007920
|
|
ldr r0, _01ffa92c ; =data_027e0378
|
|
mov r1, #0
|
|
ldr r0, [r0]
|
|
str r1, [r0]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
arm_func_end func_01ffa8d4
|
|
_01ffa928: .word data_027e0374
|
|
_01ffa92c: .word data_027e0378
|
|
_01ffa930: .word 0x04000400
|
|
|
|
.global func_01ffa934
|
|
arm_func_start func_01ffa934
|
|
func_01ffa934: ; 0x01ffa934
|
|
ldr r0, _01ffa948 ; =data_027e0374
|
|
_01ffa938:
|
|
ldr r1, [r0]
|
|
cmp r1, #0
|
|
bne _01ffa938
|
|
bx lr
|
|
.align 2, 0
|
|
arm_func_end func_01ffa934
|
|
_01ffa948: .word data_027e0374
|
|
|
|
.global func_01ffa94c
|
|
arm_func_start func_01ffa94c
|
|
func_01ffa94c: ; 0x01ffa94c
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r4, r1
|
|
mov r5, r0
|
|
cmp r4, #0x100
|
|
blo _01ffa974
|
|
ldr r1, _01ffa9ec ; =data_027e0000
|
|
mvn r0, #0
|
|
ldr r1, [r1]
|
|
cmp r1, r0
|
|
bne _01ffa98c
|
|
_01ffa974:
|
|
mov r2, r4, lsr #0x2
|
|
ldr r0, [r5]
|
|
add r1, r5, #4
|
|
sub r2, r2, #1
|
|
bl func_01ffa9fc
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
_01ffa98c:
|
|
bl func_01ffa8d4
|
|
ldr r0, _01ffa9f0 ; =data_027e00b4
|
|
ldr r1, _01ffa9f4 ; =data_027e0374
|
|
ldr r0, [r0]
|
|
mov r2, #1
|
|
str r2, [r1]
|
|
cmp r0, #0
|
|
beq _01ffa9cc
|
|
ldr r0, _01ffa9ec ; =data_027e0000
|
|
str r1, [sp]
|
|
ldr r0, [r0]
|
|
ldr r3, _01ffa9f8 ; =func_0201827c
|
|
mov r1, r5
|
|
mov r2, r4
|
|
bl func_01ffa3d4
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
_01ffa9cc:
|
|
ldr r0, _01ffa9ec ; =data_027e0000
|
|
str r1, [sp]
|
|
ldr r0, [r0]
|
|
ldr r3, _01ffa9f8 ; =func_0201827c
|
|
mov r1, r5
|
|
mov r2, r4
|
|
bl func_02007690
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
arm_func_end func_01ffa94c
|
|
_01ffa9ec: .word data_027e0000
|
|
_01ffa9f0: .word data_027e00b4
|
|
_01ffa9f4: .word data_027e0374
|
|
_01ffa9f8: .word func_0201827c
|
|
|
|
.global func_01ffa9fc
|
|
arm_func_start func_01ffa9fc
|
|
func_01ffa9fc: ; 0x01ffa9fc
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr r3, _01ffaae0 ; =data_027e0378
|
|
mov r6, r0
|
|
ldr ip, [r3]
|
|
mov r5, r1
|
|
mov r4, r2
|
|
cmp ip, #0
|
|
beq _01ffaab4
|
|
ldr r0, _01ffaae4 ; =data_027e0374
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
beq _01ffaa88
|
|
ldr r2, [ip]
|
|
add r0, r2, #1
|
|
add r1, r0, r4
|
|
cmp r1, #0xc0
|
|
bhi _01ffaa88
|
|
str r0, [ip]
|
|
ldr r0, [r3]
|
|
cmp r4, #0
|
|
add r0, r0, r2, lsl #2
|
|
str r6, [r0, #4]
|
|
ldmeqia sp!, {r4, r5, r6, pc}
|
|
ldr r2, [r3]
|
|
mov r0, r5
|
|
ldr r1, [r2], #4
|
|
add r1, r2, r1, lsl #2
|
|
mov r2, r4, lsl #0x2
|
|
bl func_02007984
|
|
ldr r0, _01ffaae0 ; =data_027e0378
|
|
ldr r1, [r0]
|
|
ldr r0, [r1]
|
|
add r0, r0, r4
|
|
str r0, [r1]
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
_01ffaa88:
|
|
ldr r0, [ip]
|
|
cmp r0, #0
|
|
beq _01ffaa9c
|
|
bl func_01ffa8d4
|
|
b _01ffaac8
|
|
_01ffaa9c:
|
|
ldr r0, _01ffaae4 ; =data_027e0374
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
beq _01ffaac8
|
|
bl func_01ffa934
|
|
b _01ffaac8
|
|
_01ffaab4:
|
|
ldr r0, _01ffaae4 ; =data_027e0374
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
beq _01ffaac8
|
|
bl func_01ffa934
|
|
_01ffaac8:
|
|
ldr r1, _01ffaae8 ; =0x04000400
|
|
mov r0, r5
|
|
mov r2, r4, lsl #0x2
|
|
str r6, [r1]
|
|
bl func_02007920
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
arm_func_end func_01ffa9fc
|
|
_01ffaae0: .word data_027e0378
|
|
_01ffaae4: .word data_027e0374
|
|
_01ffaae8: .word 0x04000400
|
|
|
|
.global func_01ffaaec
|
|
arm_func_start func_01ffaaec
|
|
func_01ffaaec: ; 0x01ffaaec
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r6, r0
|
|
ldr r0, [r6, #8]
|
|
tst r0, #0x200
|
|
bne _01ffac58
|
|
ldr r1, [r6]
|
|
add r0, r6, #0x184
|
|
ldrb r4, [r1, #1]
|
|
strb r4, [r6, #0xac]
|
|
ldr r1, [r6, #8]
|
|
orr r1, r1, #4
|
|
str r1, [r6, #8]
|
|
str r0, [r6, #0xb8]
|
|
ldr r0, [r6, #0x14]
|
|
cmp r0, #0
|
|
ldrneb r5, [r6, #0x8e]
|
|
moveq r5, #0
|
|
cmp r5, #1
|
|
bne _01ffab6c
|
|
ldr r1, [r6, #8]
|
|
mov r0, r6
|
|
bic r1, r1, #0x40
|
|
str r1, [r6, #8]
|
|
ldr r1, [r6, #0x14]
|
|
blx r1
|
|
ldr r0, [r6, #0x14]
|
|
cmp r0, #0
|
|
ldrneb r5, [r6, #0x8e]
|
|
ldr r0, [r6, #8]
|
|
moveq r5, #0
|
|
and r0, r0, #0x40
|
|
b _01ffab70
|
|
_01ffab6c:
|
|
mov r0, #0
|
|
_01ffab70:
|
|
cmp r0, #0
|
|
bne _01ffabd0
|
|
ldr ip, [r6, #4]
|
|
ldr r1, [ip, #0x18]
|
|
cmp r1, #0
|
|
beq _01ffabbc
|
|
mov r0, r4, lsr #0x5
|
|
add r0, ip, r0, lsl #2
|
|
ldr r0, [r0, #0x4c]
|
|
and r2, r4, #0x1f
|
|
mov r3, #1
|
|
tst r0, r3, lsl r2
|
|
beq _01ffabbc
|
|
ldr r0, [r6, #0xb8]
|
|
ldr r3, [ip, #0x1c]
|
|
mov r2, r4
|
|
blx r3
|
|
cmp r0, #0
|
|
bne _01ffabd0
|
|
_01ffabbc:
|
|
ldr r1, [r6]
|
|
ldr r0, [r6, #0xb8]
|
|
ldrb r1, [r1, #2]
|
|
and r1, r1, #1
|
|
str r1, [r0]
|
|
_01ffabd0:
|
|
cmp r5, #2
|
|
bne _01ffac0c
|
|
ldr r1, [r6, #8]
|
|
mov r0, r6
|
|
bic r1, r1, #0x40
|
|
str r1, [r6, #8]
|
|
ldr r1, [r6, #0x14]
|
|
blx r1
|
|
ldr r0, [r6, #0x14]
|
|
cmp r0, #0
|
|
ldrneb r5, [r6, #0x8e]
|
|
ldr r0, [r6, #8]
|
|
moveq r5, #0
|
|
and r0, r0, #0x40
|
|
b _01ffac10
|
|
_01ffac0c:
|
|
mov r0, #0
|
|
_01ffac10:
|
|
cmp r0, #0
|
|
bne _01ffac38
|
|
ldr r0, [r6, #0xb8]
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
ldr r0, [r6, #8]
|
|
orrne r0, r0, #1
|
|
strne r0, [r6, #8]
|
|
biceq r0, r0, #1
|
|
streq r0, [r6, #8]
|
|
_01ffac38:
|
|
cmp r5, #3
|
|
bne _01ffac58
|
|
ldr r1, [r6, #8]
|
|
mov r0, r6
|
|
bic r1, r1, #0x40
|
|
str r1, [r6, #8]
|
|
ldr r1, [r6, #0x14]
|
|
blx r1
|
|
_01ffac58:
|
|
ldr r0, [r6]
|
|
add r0, r0, #3
|
|
str r0, [r6]
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end func_01ffaaec
|
|
|
|
.global func_01ffac68
|
|
arm_func_start func_01ffac68
|
|
func_01ffac68: ; 0x01ffac68
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r4, r0
|
|
ldr r0, [r4, #8]
|
|
tst r0, #0x200
|
|
bne _01ffad24
|
|
tst r0, #1
|
|
beq _01ffad24
|
|
ldr r0, [r4, #0x18]
|
|
cmp r0, #0
|
|
ldrneb r5, [r4, #0x8f]
|
|
moveq r5, #0
|
|
cmp r5, #1
|
|
bne _01ffacd0
|
|
ldr r1, [r4, #8]
|
|
mov r0, r4
|
|
bic r1, r1, #0x40
|
|
str r1, [r4, #8]
|
|
ldr r1, [r4, #0x18]
|
|
blx r1
|
|
ldr r0, [r4, #0x18]
|
|
cmp r0, #0
|
|
ldrneb r5, [r4, #0x8f]
|
|
ldr r0, [r4, #8]
|
|
moveq r5, #0
|
|
and r0, r0, #0x40
|
|
b _01ffacd4
|
|
_01ffacd0:
|
|
mov r0, #0
|
|
_01ffacd4:
|
|
cmp r0, #0
|
|
bne _01ffad04
|
|
ldr r0, [r4]
|
|
ldrb r0, [r0, #1]
|
|
str r0, [sp]
|
|
ldr r0, [r4, #8]
|
|
tst r0, #0x100
|
|
bne _01ffad04
|
|
add r1, sp, #0
|
|
mov r0, #0x14
|
|
mov r2, #1
|
|
bl func_01ffa9fc
|
|
_01ffad04:
|
|
cmp r5, #3
|
|
bne _01ffad24
|
|
ldr r1, [r4, #8]
|
|
mov r0, r4
|
|
bic r1, r1, #0x40
|
|
str r1, [r4, #8]
|
|
ldr r1, [r4, #0x18]
|
|
blx r1
|
|
_01ffad24:
|
|
ldr r0, [r4]
|
|
add r0, r0, #2
|
|
str r0, [r4]
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end func_01ffac68
|
|
.global data_01ffad34
|
|
data_01ffad34: ; 0x01ffad34
|
|
.byte 0x00, 0x00
|
|
.global data_01ffad36
|
|
data_01ffad36: ; 0x01ffad36
|
|
.byte 0x00, 0x00
|
|
.global data_01ffad38
|
|
data_01ffad38: ; 0x01ffad38
|
|
.byte 0xff, 0x7f
|
|
.global data_01ffad3a
|
|
data_01ffad3a: ; 0x01ffad3a
|
|
.byte 0x00, 0x00
|
|
.global data_01ffad3c
|
|
data_01ffad3c: ; 0x01ffad3c
|
|
.byte 0x00, 0x00
|
|
.global data_01ffad3e
|
|
data_01ffad3e: ; 0x01ffad3e
|
|
.byte 0xff, 0x7f
|
|
.global data_01ffad40
|
|
data_01ffad40: ; 0x01ffad40
|
|
.byte 0xff, 0x7f
|
|
.global data_01ffad42
|
|
data_01ffad42: ; 0x01ffad42
|
|
.byte 0xff, 0x7f
|
|
.global data_01ffad44
|
|
data_01ffad44: ; 0x01ffad44
|
|
.byte 0x00, 0x80
|
|
.global data_01ffad46
|
|
data_01ffad46: ; 0x01ffad46
|
|
.byte 0x00, 0x00
|
|
.global data_01ffad48
|
|
data_01ffad48: ; 0x01ffad48
|
|
.byte 0xff, 0xff
|
|
.global data_01ffad4a
|
|
data_01ffad4a: ; 0x01ffad4a
|
|
.byte 0x00, 0x00
|
|
.global data_01ffad4c
|
|
data_01ffad4c: ; 0x01ffad4c
|
|
.byte 0x00, 0x80
|
|
.global data_01ffad4e
|
|
data_01ffad4e: ; 0x01ffad4e
|
|
.byte 0xff, 0x7f
|
|
.global data_01ffad50
|
|
data_01ffad50: ; 0x01ffad50
|
|
.byte 0xff, 0xff
|
|
.global data_01ffad52
|
|
data_01ffad52: ; 0x01ffad52
|
|
.byte 0xff, 0x7f
|
|
|
|
.global func_01ffad54
|
|
arm_func_start func_01ffad54
|
|
func_01ffad54: ; 0x01ffad54
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
|
|
sub sp, sp, #0x1c
|
|
mov r7, r0
|
|
mov r5, r3
|
|
strb r5, [r7, #0xad]
|
|
ldr r3, [r7, #8]
|
|
add r0, r7, #0xf4
|
|
orr r3, r3, #8
|
|
str r3, [r7, #8]
|
|
str r0, [r7, #0xb0]
|
|
ldr r0, [r7, #0x1c]
|
|
mov r8, r1
|
|
cmp r0, #0
|
|
ldrneb r4, [r7, #0x90]
|
|
mov r6, r2
|
|
moveq r4, #0
|
|
cmp r4, #1
|
|
bne _01ffadd0
|
|
ldr r1, [r7, #8]
|
|
mov r0, r7
|
|
bic r1, r1, #0x40
|
|
str r1, [r7, #8]
|
|
ldr r1, [r7, #0x1c]
|
|
blx r1
|
|
ldr r0, [r7, #0x1c]
|
|
cmp r0, #0
|
|
ldrneb r4, [r7, #0x90]
|
|
ldr r0, [r7, #8]
|
|
moveq r4, #0
|
|
and r0, r0, #0x40
|
|
b _01ffadd4
|
|
_01ffadd0:
|
|
mov r0, #0
|
|
_01ffadd4:
|
|
cmp r0, #0
|
|
bne _01ffb084
|
|
ldr r0, [r7, #4]
|
|
ldr r0, [r0, #0x38]
|
|
cmp r0, #0
|
|
beq _01ffae00
|
|
ldr r1, [r7, #8]
|
|
tst r1, #0x80
|
|
moveq r1, #0x38
|
|
mlaeq r8, r5, r1, r0
|
|
beq _01ffb080
|
|
_01ffae00:
|
|
cmp r8, #0x20
|
|
cmpne r8, #0x40
|
|
bne _01ffae48
|
|
mov r1, r5, lsr #0x5
|
|
add r1, r7, r1, lsl #2
|
|
ldr r1, [r1, #0xbc]
|
|
and r2, r5, #0x1f
|
|
mov r3, #1
|
|
tst r1, r3, lsl r2
|
|
beq _01ffae48
|
|
cmp r0, #0
|
|
movne r1, #0x38
|
|
mlane r8, r5, r1, r0
|
|
bne _01ffb080
|
|
ldr r1, _01ffb198 ; =data_0205ae08
|
|
mov r0, #0x38
|
|
mla r8, r5, r0, r1
|
|
b _01ffb080
|
|
_01ffae48:
|
|
cmp r0, #0
|
|
beq _01ffae80
|
|
add r8, r7, #0xbc
|
|
mov r3, r5, lsr #0x5
|
|
ldr r2, [r8, r3, lsl #2]
|
|
and r0, r5, #0x1f
|
|
mov r1, #1
|
|
orr r0, r2, r1, lsl r0
|
|
str r0, [r8, r3, lsl #2]
|
|
ldr r1, [r7, #4]
|
|
mov r0, #0x38
|
|
ldr r1, [r1, #0x38]
|
|
mla r8, r5, r0, r1
|
|
b _01ffaeb4
|
|
_01ffae80:
|
|
cmp r8, #0x40
|
|
addne r8, r7, #0xf4
|
|
bne _01ffaeb4
|
|
add lr, r7, #0xbc
|
|
mov ip, r5, lsr #0x5
|
|
ldr r1, _01ffb198 ; =data_0205ae08
|
|
ldr r8, [lr, ip, lsl #2]
|
|
mov r0, #0x38
|
|
and r2, r5, #0x1f
|
|
mov r3, #1
|
|
orr r2, r8, r3, lsl r2
|
|
mla r8, r5, r0, r1
|
|
str r2, [lr, ip, lsl #2]
|
|
_01ffaeb4:
|
|
mov r0, #0
|
|
str r0, [r8]
|
|
ldr r3, [r7, #0xd8]
|
|
ldrh r0, [r3, #0xa]
|
|
add r2, r3, #4
|
|
ldrh r1, [r2, r0]
|
|
add r0, r2, r0
|
|
mla r0, r1, r5, r0
|
|
ldr r0, [r0, #4]
|
|
ldr r1, _01ffb19c ; =data_027e037c
|
|
add r0, r3, r0
|
|
ldrh r0, [r0, #0x1e]
|
|
tst r0, #0x20
|
|
ldrne r0, [r8]
|
|
orrne r0, r0, #0x20
|
|
strne r0, [r8]
|
|
ldrh r2, [r6, #0x1e]
|
|
ldr r0, _01ffb1a0 ; =data_01ffad34
|
|
ldr ip, [r1, #0x94]
|
|
mov r2, r2, asr #0x6
|
|
and r2, r2, #7
|
|
ldr lr, [r0, r2, lsl #2]
|
|
ldr r2, [r6, #4]
|
|
mvn r3, lr
|
|
and r3, ip, r3
|
|
and r2, r2, lr
|
|
orr r2, r3, r2
|
|
str r2, [r8, #4]
|
|
ldrh ip, [r6, #0x1e]
|
|
ldr r3, [r1, #0x98]
|
|
ldr r2, [r6, #8]
|
|
mov ip, ip, asr #0x9
|
|
and ip, ip, #7
|
|
ldr ip, [r0, ip, lsl #2]
|
|
mvn r0, ip
|
|
and r3, r3, r0
|
|
and r0, r2, ip
|
|
orr r0, r3, r0
|
|
str r0, [r8, #8]
|
|
ldr r3, [r6, #0x10]
|
|
ldr r0, [r6, #0xc]
|
|
ldr r2, [r1, #0x9c]
|
|
mvn r1, r3
|
|
and r1, r2, r1
|
|
and r0, r0, r3
|
|
orr r0, r1, r0
|
|
str r0, [r8, #0xc]
|
|
ldr r0, [r6, #0x14]
|
|
str r0, [r8, #0x10]
|
|
ldrh r0, [r6, #0x1c]
|
|
str r0, [r8, #0x14]
|
|
ldrh r0, [r6, #0x1e]
|
|
tst r0, #1
|
|
beq _01ffb018
|
|
tst r0, #2
|
|
ldrne r1, [r8]
|
|
add r0, r6, #0x2c
|
|
orrne r1, r1, #1
|
|
strne r1, [r8]
|
|
bne _01ffafb8
|
|
ldr r1, [r0]
|
|
str r1, [r8, #0x18]
|
|
ldr r1, [r0, #4]
|
|
add r0, r0, #8
|
|
str r1, [r8, #0x1c]
|
|
_01ffafb8:
|
|
ldrh r1, [r6, #0x1e]
|
|
tst r1, #4
|
|
ldrne r1, [r8]
|
|
orrne r1, r1, #2
|
|
strne r1, [r8]
|
|
bne _01ffafe4
|
|
ldrsh r1, [r0]
|
|
strh r1, [r8, #0x20]
|
|
ldrsh r1, [r0, #2]
|
|
add r0, r0, #4
|
|
strh r1, [r8, #0x22]
|
|
_01ffafe4:
|
|
ldrh r1, [r6, #0x1e]
|
|
tst r1, #8
|
|
ldrne r0, [r8]
|
|
orrne r0, r0, #4
|
|
strne r0, [r8]
|
|
bne _01ffb00c
|
|
ldr r1, [r0]
|
|
str r1, [r8, #0x24]
|
|
ldr r0, [r0, #4]
|
|
str r0, [r8, #0x28]
|
|
_01ffb00c:
|
|
ldr r0, [r8]
|
|
orr r0, r0, #8
|
|
str r0, [r8]
|
|
_01ffb018:
|
|
ldr ip, [r7, #4]
|
|
ldr r1, [ip, #8]
|
|
cmp r1, #0
|
|
beq _01ffb054
|
|
mov r0, r5, lsr #0x5
|
|
add r0, ip, r0, lsl #2
|
|
ldr r0, [r0, #0x3c]
|
|
and r2, r5, #0x1f
|
|
mov r3, #1
|
|
tst r0, r3, lsl r2
|
|
beq _01ffb054
|
|
ldr r3, [ip, #0xc]
|
|
mov r0, r8
|
|
mov r2, r5
|
|
blx r3
|
|
_01ffb054:
|
|
ldr r0, [r8]
|
|
tst r0, #0x18
|
|
beq _01ffb080
|
|
ldrh r0, [r6, #0x20]
|
|
strh r0, [r8, #0x2c]
|
|
ldrh r0, [r6, #0x22]
|
|
strh r0, [r8, #0x2e]
|
|
ldr r0, [r6, #0x24]
|
|
str r0, [r8, #0x30]
|
|
ldr r0, [r6, #0x28]
|
|
str r0, [r8, #0x34]
|
|
_01ffb080:
|
|
str r8, [r7, #0xb0]
|
|
_01ffb084:
|
|
cmp r4, #2
|
|
bne _01ffb0c0
|
|
ldr r1, [r7, #8]
|
|
mov r0, r7
|
|
bic r1, r1, #0x40
|
|
str r1, [r7, #8]
|
|
ldr r1, [r7, #0x1c]
|
|
blx r1
|
|
ldr r0, [r7, #0x1c]
|
|
cmp r0, #0
|
|
ldrneb r4, [r7, #0x90]
|
|
ldr r0, [r7, #8]
|
|
moveq r4, #0
|
|
and r0, r0, #0x40
|
|
b _01ffb0c4
|
|
_01ffb0c0:
|
|
mov r0, #0
|
|
_01ffb0c4:
|
|
cmp r0, #0
|
|
bne _01ffb16c
|
|
ldr r5, [r7, #0xb0]
|
|
ldr r1, [r5, #0xc]
|
|
tst r1, #0x1f0000
|
|
beq _01ffb160
|
|
ldr r0, [r5]
|
|
tst r0, #0x20
|
|
bicne r0, r1, #0x1f0000
|
|
strne r0, [r5, #0xc]
|
|
ldr r0, [r7, #8]
|
|
bic r0, r0, #2
|
|
str r0, [r7, #8]
|
|
tst r0, #0x100
|
|
bne _01ffb16c
|
|
ldr r0, _01ffb1a4 ; =0x00293130
|
|
ldr r3, _01ffb1a8 ; =0x00002b2a
|
|
str r0, [sp]
|
|
ldr r2, [r5, #4]
|
|
add r1, sp, #4
|
|
str r2, [sp, #4]
|
|
ldr r6, [r5, #8]
|
|
mov r2, #6
|
|
str r6, [sp, #8]
|
|
ldr r6, [r5, #0xc]
|
|
str r6, [sp, #0xc]
|
|
str r3, [sp, #0x10]
|
|
ldr r3, [r5, #0x10]
|
|
str r3, [sp, #0x14]
|
|
ldr r3, [r5, #0x14]
|
|
str r3, [sp, #0x18]
|
|
bl func_01ffa9fc
|
|
ldr r0, [r5]
|
|
tst r0, #0x18
|
|
beq _01ffb16c
|
|
ldr r1, [r7, #0xf0]
|
|
mov r0, r5
|
|
blx r1
|
|
b _01ffb16c
|
|
_01ffb160:
|
|
ldr r0, [r7, #8]
|
|
orr r0, r0, #2
|
|
str r0, [r7, #8]
|
|
_01ffb16c:
|
|
cmp r4, #3
|
|
addne sp, sp, #0x1c
|
|
ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc}
|
|
ldr r1, [r7, #8]
|
|
mov r0, r7
|
|
bic r1, r1, #0x40
|
|
str r1, [r7, #8]
|
|
ldr r1, [r7, #0x1c]
|
|
blx r1
|
|
add sp, sp, #0x1c
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
|
|
.align 2, 0
|
|
arm_func_end func_01ffad54
|
|
_01ffb198: .word data_0205ae08
|
|
_01ffb19c: .word data_027e037c
|
|
_01ffb1a0: .word data_01ffad34
|
|
_01ffb1a4: .word 0x00293130
|
|
_01ffb1a8: .word 0x00002b2a
|
|
|
|
.global func_01ffb1ac
|
|
arm_func_start func_01ffb1ac
|
|
func_01ffb1ac: ; 0x01ffb1ac
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r4, r0
|
|
ldr r2, [r4, #8]
|
|
tst r2, #0x200
|
|
bne _01ffb218
|
|
ldr r0, [r4]
|
|
tst r2, #1
|
|
ldrb r3, [r0, #1]
|
|
bne _01ffb1e4
|
|
tst r2, #8
|
|
beq _01ffb1e4
|
|
ldrb r0, [r4, #0xad]
|
|
cmp r3, r0
|
|
beq _01ffb218
|
|
_01ffb1e4:
|
|
ldr r6, [r4, #0xd8]
|
|
ldr ip, _01ffb228 ; =data_027e0148
|
|
ldrh r2, [r6, #0xa]
|
|
add r5, r6, #4
|
|
mov r0, r4
|
|
ldrh lr, [r5, r2]
|
|
add r2, r5, r2
|
|
mla r2, lr, r3, r2
|
|
ldr r2, [r2, #4]
|
|
ldrh lr, [r6, r2]
|
|
add r2, r6, r2
|
|
ldr ip, [ip, lr, lsl #2]
|
|
blx ip
|
|
_01ffb218:
|
|
ldr r0, [r4]
|
|
add r0, r0, #2
|
|
str r0, [r4]
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
arm_func_end func_01ffb1ac
|
|
_01ffb228: .word data_027e0148
|
|
|
|
.global func_01ffb22c
|
|
arm_func_start func_01ffb22c
|
|
func_01ffb22c: ; 0x01ffb22c
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r5, r0
|
|
ldr r0, [r5, #0x20]
|
|
mov r4, r2
|
|
cmp r0, #0
|
|
ldrneb r6, [r5, #0x91]
|
|
moveq r6, #0
|
|
cmp r6, #1
|
|
bne _01ffb284
|
|
ldr r1, [r5, #8]
|
|
mov r0, r5
|
|
bic r1, r1, #0x40
|
|
str r1, [r5, #8]
|
|
ldr r1, [r5, #0x20]
|
|
blx r1
|
|
ldr r0, [r5, #0x20]
|
|
cmp r0, #0
|
|
ldrneb r6, [r5, #0x91]
|
|
ldr r0, [r5, #8]
|
|
moveq r6, #0
|
|
and r0, r0, #0x40
|
|
b _01ffb288
|
|
_01ffb284:
|
|
mov r0, #0
|
|
_01ffb288:
|
|
cmp r0, #0
|
|
bne _01ffb2ac
|
|
ldr r0, [r5, #8]
|
|
tst r0, #0x100
|
|
bne _01ffb2ac
|
|
ldr r0, [r4, #8]
|
|
ldr r1, [r4, #0xc]
|
|
add r0, r4, r0
|
|
bl func_01ffa94c
|
|
_01ffb2ac:
|
|
cmp r6, #2
|
|
bne _01ffb2dc
|
|
ldr r1, [r5, #8]
|
|
mov r0, r5
|
|
bic r1, r1, #0x40
|
|
str r1, [r5, #8]
|
|
ldr r1, [r5, #0x20]
|
|
blx r1
|
|
ldr r0, [r5, #0x20]
|
|
cmp r0, #0
|
|
ldrneb r6, [r5, #0x91]
|
|
moveq r6, #0
|
|
_01ffb2dc:
|
|
cmp r6, #3
|
|
ldmneia sp!, {r4, r5, r6, pc}
|
|
ldr r1, [r5, #8]
|
|
mov r0, r5
|
|
bic r1, r1, #0x40
|
|
str r1, [r5, #8]
|
|
ldr r1, [r5, #0x20]
|
|
blx r1
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end func_01ffb22c
|
|
|
|
.global func_01ffb300
|
|
arm_func_start func_01ffb300
|
|
func_01ffb300: ; 0x01ffb300
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r4, r0
|
|
ldr r2, [r4, #8]
|
|
tst r2, #0x200
|
|
bne _01ffb358
|
|
tst r2, #1
|
|
beq _01ffb358
|
|
tst r2, #2
|
|
bne _01ffb358
|
|
ldr r5, [r4, #0xdc]
|
|
ldr r3, [r4]
|
|
ldrh r2, [r5, #6]
|
|
ldrb r3, [r3, #1]
|
|
ldr ip, _01ffb368 ; =data_027e0138
|
|
ldrh lr, [r5, r2]
|
|
add r2, r5, r2
|
|
mla r2, lr, r3, r2
|
|
ldr r2, [r2, #4]
|
|
ldrh lr, [r5, r2]
|
|
add r2, r5, r2
|
|
ldr ip, [ip, lr, lsl #2]
|
|
blx ip
|
|
_01ffb358:
|
|
ldr r0, [r4]
|
|
add r0, r0, #2
|
|
str r0, [r4]
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
arm_func_end func_01ffb300
|
|
_01ffb368: .word data_027e0138
|
|
.global data_01ffb36c
|
|
data_01ffb36c: ; 0x01ffb36c
|
|
.byte 0x04
|
|
.global data_01ffb36d
|
|
data_01ffb36d: ; 0x01ffb36d
|
|
.byte 0x05
|
|
.global data_01ffb36e
|
|
data_01ffb36e: ; 0x01ffb36e
|
|
.byte 0x07
|
|
.global data_01ffb36f
|
|
data_01ffb36f: ; 0x01ffb36f
|
|
.byte 0x08
|
|
.global data_01ffb370
|
|
data_01ffb370: ; 0x01ffb370
|
|
.byte 0x03
|
|
.global data_01ffb371
|
|
data_01ffb371: ; 0x01ffb371
|
|
.byte 0x05
|
|
.global data_01ffb372
|
|
data_01ffb372: ; 0x01ffb372
|
|
.byte 0x06
|
|
.global data_01ffb373
|
|
data_01ffb373: ; 0x01ffb373
|
|
.byte 0x08
|
|
.global data_01ffb374
|
|
data_01ffb374: ; 0x01ffb374
|
|
.byte 0x03
|
|
.global data_01ffb375
|
|
data_01ffb375: ; 0x01ffb375
|
|
.byte 0x04
|
|
.global data_01ffb376
|
|
data_01ffb376: ; 0x01ffb376
|
|
.byte 0x06
|
|
.global data_01ffb377
|
|
data_01ffb377: ; 0x01ffb377
|
|
.byte 0x07
|
|
.global data_01ffb378
|
|
data_01ffb378: ; 0x01ffb378
|
|
.byte 0x01
|
|
.global data_01ffb379
|
|
data_01ffb379: ; 0x01ffb379
|
|
.byte 0x02
|
|
.global data_01ffb37a
|
|
data_01ffb37a: ; 0x01ffb37a
|
|
.byte 0x07
|
|
.global data_01ffb37b
|
|
data_01ffb37b: ; 0x01ffb37b
|
|
.byte 0x08
|
|
.global data_01ffb37c
|
|
data_01ffb37c: ; 0x01ffb37c
|
|
.byte 0x00
|
|
.global data_01ffb37d
|
|
data_01ffb37d: ; 0x01ffb37d
|
|
.byte 0x02
|
|
.global data_01ffb37e
|
|
data_01ffb37e: ; 0x01ffb37e
|
|
.byte 0x06
|
|
.global data_01ffb37f
|
|
data_01ffb37f: ; 0x01ffb37f
|
|
.byte 0x08
|
|
.global data_01ffb380
|
|
data_01ffb380: ; 0x01ffb380
|
|
.byte 0x00
|
|
.global data_01ffb381
|
|
data_01ffb381: ; 0x01ffb381
|
|
.byte 0x01
|
|
.global data_01ffb382
|
|
data_01ffb382: ; 0x01ffb382
|
|
.byte 0x06
|
|
.global data_01ffb383
|
|
data_01ffb383: ; 0x01ffb383
|
|
.byte 0x07
|
|
.global data_01ffb384
|
|
data_01ffb384: ; 0x01ffb384
|
|
.byte 0x01
|
|
.global data_01ffb385
|
|
data_01ffb385: ; 0x01ffb385
|
|
.byte 0x02
|
|
.global data_01ffb386
|
|
data_01ffb386: ; 0x01ffb386
|
|
.byte 0x04
|
|
.global data_01ffb387
|
|
data_01ffb387: ; 0x01ffb387
|
|
.byte 0x05
|
|
.global data_01ffb388
|
|
data_01ffb388: ; 0x01ffb388
|
|
.byte 0x00
|
|
.global data_01ffb389
|
|
data_01ffb389: ; 0x01ffb389
|
|
.byte 0x02
|
|
.global data_01ffb38a
|
|
data_01ffb38a: ; 0x01ffb38a
|
|
.byte 0x03
|
|
.global data_01ffb38b
|
|
data_01ffb38b: ; 0x01ffb38b
|
|
.byte 0x05
|
|
.global data_01ffb38c
|
|
data_01ffb38c: ; 0x01ffb38c
|
|
.byte 0x00
|
|
.global data_01ffb38d
|
|
data_01ffb38d: ; 0x01ffb38d
|
|
.byte 0x01
|
|
.global data_01ffb38e
|
|
data_01ffb38e: ; 0x01ffb38e
|
|
.byte 0x03
|
|
.global data_01ffb38f
|
|
data_01ffb38f: ; 0x01ffb38f
|
|
.byte 0x04
|
|
|
|
.global func_01ffb390
|
|
arm_func_start func_01ffb390
|
|
func_01ffb390: ; 0x01ffb390
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x14
|
|
mov sl, r0
|
|
ldr r0, [sl]
|
|
mov sb, r1
|
|
ldrb r6, [r0, #1]
|
|
mov r4, #4
|
|
strb r6, [sl, #0xae]
|
|
ldr r0, [sl, #8]
|
|
orr r0, r0, #0x10
|
|
str r0, [sl, #8]
|
|
tst r0, #0x400
|
|
beq _01ffb418
|
|
cmp sb, #0x40
|
|
cmpne sb, #0x60
|
|
addeq r4, r4, #1
|
|
cmp sb, #0x20
|
|
cmpne sb, #0x60
|
|
bne _01ffb404
|
|
tst r0, #0x100
|
|
add r4, r4, #1
|
|
bne _01ffb404
|
|
ldr r0, [sl]
|
|
add r1, sp, #0x10
|
|
ldrb r3, [r0, #4]
|
|
mov r0, #0x14
|
|
mov r2, #1
|
|
str r3, [sp, #0x10]
|
|
bl func_01ffa9fc
|
|
_01ffb404:
|
|
ldr r0, [sl]
|
|
add sp, sp, #0x14
|
|
add r0, r0, r4
|
|
str r0, [sl]
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
_01ffb418:
|
|
cmp sb, #0x40
|
|
cmpne sb, #0x60
|
|
bne _01ffb45c
|
|
ldr r0, [sl]
|
|
cmp sb, #0x40
|
|
ldreqb r0, [r0, #4]
|
|
add r4, r4, #1
|
|
streq r0, [sp, #0xc]
|
|
ldrneb r0, [r0, #5]
|
|
strne r0, [sp, #0xc]
|
|
ldr r0, [sl, #8]
|
|
tst r0, #0x100
|
|
bne _01ffb45c
|
|
add r1, sp, #0xc
|
|
mov r0, #0x14
|
|
mov r2, #1
|
|
bl func_01ffa9fc
|
|
_01ffb45c:
|
|
add r0, sl, #0x12c
|
|
str r0, [sl, #0xb4]
|
|
ldr r0, [sl, #0x24]
|
|
cmp r0, #0
|
|
ldrneb r8, [sl, #0x92]
|
|
moveq r8, #0
|
|
cmp r8, #1
|
|
bne _01ffb4b0
|
|
ldr r1, [sl, #8]
|
|
mov r0, sl
|
|
bic r1, r1, #0x40
|
|
str r1, [sl, #8]
|
|
ldr r1, [sl, #0x24]
|
|
blx r1
|
|
ldr r0, [sl, #0x24]
|
|
cmp r0, #0
|
|
ldrneb r8, [sl, #0x92]
|
|
ldr r0, [sl, #8]
|
|
moveq r8, #0
|
|
and r0, r0, #0x40
|
|
b _01ffb4b4
|
|
_01ffb4b0:
|
|
mov r0, #0
|
|
_01ffb4b4:
|
|
cmp r0, #0
|
|
bne _01ffb6cc
|
|
ldr r0, [sl, #4]
|
|
ldr r1, [r0, #0x34]
|
|
cmp r1, #0
|
|
beq _01ffb4e8
|
|
mov r0, #0x58
|
|
mla r5, r6, r0, r1
|
|
ldr r0, [sl, #8]
|
|
tst r0, #0x80
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
b _01ffb4f0
|
|
_01ffb4e8:
|
|
add r5, sl, #0x12c
|
|
mov r0, #0
|
|
_01ffb4f0:
|
|
cmp r0, #0
|
|
bne _01ffb6c8
|
|
mov r0, #0
|
|
str r0, [r5]
|
|
ldr r0, [sl, #4]
|
|
ldr r1, [r0, #0x10]
|
|
cmp r1, #0
|
|
beq _01ffb528
|
|
ldr r3, [r0, #0x14]
|
|
mov r0, r5
|
|
mov r2, r6
|
|
blx r3
|
|
cmp r0, #0
|
|
bne _01ffb6c8
|
|
_01ffb528:
|
|
ldr r2, [sl, #0xd4]
|
|
ldrh r0, [r2, #6]
|
|
ldrh r1, [r2, r0]
|
|
add r0, r2, r0
|
|
mla r0, r1, r6, r0
|
|
ldr r1, [r0, #4]
|
|
ldrh r0, [r2, r1]
|
|
add r7, r2, r1
|
|
add r6, r7, #4
|
|
tst r0, #1
|
|
beq _01ffb564
|
|
ldr r0, [r5]
|
|
orr r0, r0, #4
|
|
str r0, [r5]
|
|
b _01ffb580
|
|
_01ffb564:
|
|
ldr r0, [r6]
|
|
str r0, [r5, #0x4c]
|
|
ldr r0, [r6, #4]
|
|
str r0, [r5, #0x50]
|
|
ldr r0, [r6, #8]
|
|
add r6, r6, #0xc
|
|
str r0, [r5, #0x54]
|
|
_01ffb580:
|
|
ldrh r0, [r7]
|
|
tst r0, #2
|
|
beq _01ffb59c
|
|
ldr r0, [r5]
|
|
orr r0, r0, #2
|
|
str r0, [r5]
|
|
b _01ffb6b0
|
|
_01ffb59c:
|
|
tst r0, #8
|
|
beq _01ffb664
|
|
and r1, r0, #0xf0
|
|
mov fp, r1, asr #0x4
|
|
ldrsh r1, [r6]
|
|
add r0, r5, #0x28
|
|
str r1, [sp]
|
|
ldrsh r1, [r6, #2]
|
|
str r1, [sp, #4]
|
|
blx func_02007c08
|
|
ldrh r0, [r7]
|
|
ldr r2, _01ffb7b0 ; =data_01ffb36c
|
|
ldr r1, _01ffb7b4 ; =data_01ffb36d
|
|
tst r0, #0x100
|
|
mov r0, #0x1000
|
|
ldrb r2, [r2, fp, lsl #2]
|
|
ldrb r1, [r1, fp, lsl #2]
|
|
rsbne r0, r0, #0
|
|
add r3, r5, fp, lsl #2
|
|
str r0, [r3, #0x28]
|
|
ldr r0, [sp]
|
|
add r2, r5, r2, lsl #2
|
|
str r0, [r2, #0x28]
|
|
ldr r0, [sp, #4]
|
|
add r1, r5, r1, lsl #2
|
|
str r0, [r1, #0x28]
|
|
ldrh r0, [r7]
|
|
tst r0, #0x200
|
|
beq _01ffb61c
|
|
ldr r0, [sp, #4]
|
|
rsb r0, r0, #0
|
|
str r0, [sp, #4]
|
|
_01ffb61c:
|
|
ldr r0, _01ffb7b8 ; =data_01ffb36e
|
|
ldrb r0, [r0, fp, lsl #2]
|
|
add r1, r5, r0, lsl #2
|
|
ldr r0, [sp, #4]
|
|
str r0, [r1, #0x28]
|
|
ldrh r0, [r7]
|
|
tst r0, #0x400
|
|
beq _01ffb648
|
|
ldr r0, [sp]
|
|
rsb r0, r0, #0
|
|
str r0, [sp]
|
|
_01ffb648:
|
|
ldr r0, _01ffb7bc ; =data_01ffb36f
|
|
add r6, r6, #4
|
|
ldrb r0, [r0, fp, lsl #2]
|
|
add r1, r5, r0, lsl #2
|
|
ldr r0, [sp]
|
|
str r0, [r1, #0x28]
|
|
b _01ffb6b0
|
|
_01ffb664:
|
|
ldrsh r0, [r7, #2]
|
|
str r0, [r5, #0x28]
|
|
ldrsh r0, [r6]
|
|
str r0, [r5, #0x2c]
|
|
ldrsh r0, [r6, #2]
|
|
str r0, [r5, #0x30]
|
|
ldrsh r0, [r6, #4]
|
|
str r0, [r5, #0x34]
|
|
ldrsh r0, [r6, #6]
|
|
str r0, [r5, #0x38]
|
|
ldrsh r0, [r6, #8]
|
|
str r0, [r5, #0x3c]
|
|
ldrsh r0, [r6, #0xa]
|
|
str r0, [r5, #0x40]
|
|
ldrsh r0, [r6, #0xc]
|
|
str r0, [r5, #0x44]
|
|
ldrsh r0, [r6, #0xe]
|
|
add r6, r6, #0x10
|
|
str r0, [r5, #0x48]
|
|
_01ffb6b0:
|
|
ldrh r3, [r7]
|
|
ldr r2, [sl]
|
|
ldr r7, [sl, #0xe8]
|
|
mov r0, r5
|
|
mov r1, r6
|
|
blx r7
|
|
_01ffb6c8:
|
|
str r5, [sl, #0xb4]
|
|
_01ffb6cc:
|
|
cmp r8, #2
|
|
bne _01ffb708
|
|
ldr r1, [sl, #8]
|
|
mov r0, sl
|
|
bic r1, r1, #0x40
|
|
str r1, [sl, #8]
|
|
ldr r1, [sl, #0x24]
|
|
blx r1
|
|
ldr r0, [sl, #0x24]
|
|
cmp r0, #0
|
|
ldrneb r8, [sl, #0x92]
|
|
ldr r0, [sl, #8]
|
|
moveq r8, #0
|
|
and r0, r0, #0x40
|
|
b _01ffb70c
|
|
_01ffb708:
|
|
mov r0, #0
|
|
_01ffb70c:
|
|
cmp r0, #0
|
|
bne _01ffb72c
|
|
ldr r0, [sl, #8]
|
|
tst r0, #0x100
|
|
bne _01ffb72c
|
|
ldr r0, [sl, #0xb4]
|
|
ldr r1, [sl, #0xec]
|
|
blx r1
|
|
_01ffb72c:
|
|
mov r0, #0
|
|
str r0, [sl, #0xb4]
|
|
cmp r8, #3
|
|
bne _01ffb75c
|
|
ldr r1, [sl, #8]
|
|
mov r0, sl
|
|
bic r1, r1, #0x40
|
|
str r1, [sl, #8]
|
|
ldr r1, [sl, #0x24]
|
|
blx r1
|
|
ldr r0, [sl, #8]
|
|
and r0, r0, #0x40
|
|
_01ffb75c:
|
|
cmp sb, #0x20
|
|
cmpne sb, #0x60
|
|
bne _01ffb79c
|
|
cmp r0, #0
|
|
add r4, r4, #1
|
|
bne _01ffb79c
|
|
ldr r0, [sl, #8]
|
|
tst r0, #0x100
|
|
bne _01ffb79c
|
|
ldr r0, [sl]
|
|
add r1, sp, #8
|
|
ldrb r3, [r0, #4]
|
|
mov r0, #0x13
|
|
mov r2, #1
|
|
str r3, [sp, #8]
|
|
bl func_01ffa9fc
|
|
_01ffb79c:
|
|
ldr r0, [sl]
|
|
add r0, r0, r4
|
|
str r0, [sl]
|
|
add sp, sp, #0x14
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
arm_func_end func_01ffb390
|
|
_01ffb7b0: .word data_01ffb36c
|
|
_01ffb7b4: .word data_01ffb36d
|
|
_01ffb7b8: .word data_01ffb36e
|
|
_01ffb7bc: .word data_01ffb36f
|
|
|
|
.global func_01ffb7c0
|
|
arm_func_start func_01ffb7c0
|
|
func_01ffb7c0: ; 0x01ffb7c0
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _01ffb7e4 ; =data_027e08e4
|
|
bl func_01ffbdd0
|
|
ldr r0, _01ffb7e8 ; =data_027e0000
|
|
add r0, r0, #0x3000
|
|
ldr r1, [r0, #0xff8]
|
|
orr r1, r1, #1
|
|
str r1, [r0, #0xff8]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
arm_func_end func_01ffb7c0
|
|
_01ffb7e4: .word data_027e08e4
|
|
_01ffb7e8: .word data_027e0000
|
|
|
|
.global func_01ffb7ec
|
|
arm_func_start func_01ffb7ec
|
|
func_01ffb7ec: ; 0x01ffb7ec
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x30
|
|
ldrh r4, [sp, #0x58]
|
|
mov sl, r0
|
|
ldr lr, _01ffbbc8 ; =data_02050f54
|
|
mov r0, r4, asr #0x4
|
|
mov ip, r0, lsl #0x1
|
|
add r0, ip, #1
|
|
mov r0, r0, lsl #0x1
|
|
mov fp, r1
|
|
ldrsh r1, [lr, r0]
|
|
mov sb, r2
|
|
mov r8, r3
|
|
cmp r1, #0
|
|
ldr r7, [sp, #0x60]
|
|
ldr r6, [sp, #0x64]
|
|
ldr r5, [sp, #0x68]
|
|
ldr r4, [sp, #0x6c]
|
|
mov r0, #0
|
|
beq _01ffb848
|
|
mov r0, ip, lsl #0x1
|
|
ldrsh r0, [lr, r0]
|
|
bl func_01ff98e0
|
|
_01ffb848:
|
|
mov r2, sl, lsl #0x5
|
|
ldr r1, [sp, #0x5c]
|
|
rsb r2, r2, #0x1000
|
|
smull r3, r1, r2, r1
|
|
adds r2, r3, #0x800
|
|
mov r3, #0x2a
|
|
mul r3, fp, r3
|
|
adc r1, r1, #0
|
|
mov r2, r2, lsr #0xc
|
|
orr r2, r2, r1, lsl #20
|
|
smull r1, sl, r2, r0
|
|
sub r3, r3, #0x1000
|
|
smull r2, r0, r3, r0
|
|
adds r1, r1, #0x800
|
|
adc r3, sl, #0
|
|
adds r2, r2, #0x800
|
|
mov sl, r1, lsr #0xc
|
|
mov r1, r2, lsr #0xc
|
|
ldmia r6, {r2, fp, ip}
|
|
adc r0, r0, #0
|
|
orr r1, r1, r0, lsl #20
|
|
str r2, [sp, #0x24]
|
|
str fp, [sp, #0x28]
|
|
str ip, [sp, #0x2c]
|
|
orr sl, sl, r3, lsl #20
|
|
ldr fp, [r6, #0x14]
|
|
ldr r3, [r6, #0x10]
|
|
ldr r2, [r6, #0xc]
|
|
mov r0, #0x1000
|
|
str r2, [sp, #0x18]
|
|
str r3, [sp, #0x1c]
|
|
str fp, [sp, #0x20]
|
|
ldr fp, [r6, #0x20]
|
|
ldr r3, [r6, #0x1c]
|
|
ldr r2, [r6, #0x18]
|
|
cmp r8, #0x58
|
|
str sl, [sp]
|
|
str r2, [sp, #0xc]
|
|
str r3, [sp, #0x10]
|
|
str fp, [sp, #0x14]
|
|
str r1, [sp, #4]
|
|
str r0, [sp, #8]
|
|
mov sl, #0
|
|
beq _01ffb90c
|
|
cmp r8, #0x59
|
|
beq _01ffb934
|
|
cmp r8, #0x5a
|
|
beq _01ffb95c
|
|
b _01ffb980
|
|
_01ffb90c:
|
|
add r0, sp, #0x24
|
|
add r1, sp, #0
|
|
bl func_01ff9c2c
|
|
movs r1, r0
|
|
beq _01ffb980
|
|
ldr r0, [r7]
|
|
sub r0, sb, r0
|
|
bl func_01ff98e0
|
|
mov sl, r0
|
|
b _01ffb980
|
|
_01ffb934:
|
|
add r0, sp, #0x18
|
|
add r1, sp, #0
|
|
bl func_01ff9c2c
|
|
movs r1, r0
|
|
beq _01ffb980
|
|
ldr r0, [r7, #4]
|
|
sub r0, sb, r0
|
|
bl func_01ff98e0
|
|
mov sl, r0
|
|
b _01ffb980
|
|
_01ffb95c:
|
|
add r0, sp, #0xc
|
|
add r1, sp, #0
|
|
bl func_01ff9c2c
|
|
movs r1, r0
|
|
beq _01ffb980
|
|
ldr r0, [r7, #8]
|
|
sub r0, sb, r0
|
|
bl func_01ff98e0
|
|
mov sl, r0
|
|
_01ffb980:
|
|
cmp r4, #0
|
|
beq _01ffbafc
|
|
cmp r8, #0x58
|
|
bne _01ffb9fc
|
|
ldr r0, [r7]
|
|
subs r1, sb, r0
|
|
beq _01ffb9fc
|
|
mov r0, sl
|
|
bl func_01ff98e0
|
|
mov r6, r0
|
|
add r0, sp, #0xc
|
|
add r1, sp, #0
|
|
bl func_01ff9c2c
|
|
mov fp, r0
|
|
add r0, sp, #0x18
|
|
add r1, sp, #0
|
|
bl func_01ff9c2c
|
|
smull r3, r2, r0, r6
|
|
adds r3, r3, #0x800
|
|
smull r1, r0, fp, r6
|
|
adc r2, r2, #0
|
|
adds r1, r1, #0x800
|
|
mov r3, r3, lsr #0xc
|
|
adc r0, r0, #0
|
|
mov r1, r1, lsr #0xc
|
|
orr r1, r1, r0, lsl #20
|
|
orr r3, r3, r2, lsl #20
|
|
mov r0, #0x1000
|
|
stmia r4, {r0, r3}
|
|
str r1, [r4, #8]
|
|
b _01ffbafc
|
|
_01ffb9fc:
|
|
cmp r8, #0x59
|
|
bne _01ffba74
|
|
ldr r0, [r7, #4]
|
|
subs r1, sb, r0
|
|
beq _01ffba74
|
|
mov r0, sl
|
|
bl func_01ff98e0
|
|
mov r6, r0
|
|
add r0, sp, #0xc
|
|
add r1, sp, #0
|
|
bl func_01ff9c2c
|
|
mov fp, r0
|
|
add r0, sp, #0x24
|
|
add r1, sp, #0
|
|
bl func_01ff9c2c
|
|
smull r3, r2, r0, r6
|
|
adds r3, r3, #0x800
|
|
smull r1, r0, fp, r6
|
|
adc r2, r2, #0
|
|
adds r1, r1, #0x800
|
|
mov r3, r3, lsr #0xc
|
|
orr r3, r3, r2, lsl #20
|
|
str r3, [r4]
|
|
mov r2, #0x1000
|
|
adc r0, r0, #0
|
|
mov r1, r1, lsr #0xc
|
|
str r2, [r4, #4]
|
|
orr r1, r1, r0, lsl #20
|
|
str r1, [r4, #8]
|
|
b _01ffbafc
|
|
_01ffba74:
|
|
cmp r8, #0x5a
|
|
bne _01ffbaec
|
|
ldr r0, [r7, #8]
|
|
subs r1, sb, r0
|
|
beq _01ffbaec
|
|
mov r0, sl
|
|
bl func_01ff98e0
|
|
mov r6, r0
|
|
add r0, sp, #0x18
|
|
add r1, sp, #0
|
|
bl func_01ff9c2c
|
|
mov fp, r0
|
|
add r0, sp, #0x24
|
|
add r1, sp, #0
|
|
bl func_01ff9c2c
|
|
smull r3, r2, r0, r6
|
|
adds r3, r3, #0x800
|
|
smull r1, r0, fp, r6
|
|
adc r2, r2, #0
|
|
adds r1, r1, #0x800
|
|
mov r3, r3, lsr #0xc
|
|
orr r3, r3, r2, lsl #20
|
|
adc r0, r0, #0
|
|
mov r1, r1, lsr #0xc
|
|
orr r1, r1, r0, lsl #20
|
|
str r3, [r4]
|
|
str r1, [r4, #4]
|
|
mov r0, #0x1000
|
|
str r0, [r4, #8]
|
|
b _01ffbafc
|
|
_01ffbaec:
|
|
mov r0, #0
|
|
str r0, [r4]
|
|
str r0, [r4, #4]
|
|
str r0, [r4, #8]
|
|
_01ffbafc:
|
|
ldr r2, [sp]
|
|
ldr r0, [sp, #4]
|
|
smull r4, r3, r2, sl
|
|
adds fp, r4, #0x800
|
|
smull r2, r4, r0, sl
|
|
adc r3, r3, #0
|
|
adds r6, r2, #0x800
|
|
mov r0, fp, lsr #0xc
|
|
orr r0, r0, r3, lsl #20
|
|
ldr r1, [sp, #8]
|
|
adc r4, r4, #0
|
|
smull r3, r2, r1, sl
|
|
adds r3, r3, #0x800
|
|
adc r1, r2, #0
|
|
mov r6, r6, lsr #0xc
|
|
mov r2, r3, lsr #0xc
|
|
orr r6, r6, r4, lsl #20
|
|
orr r2, r2, r1, lsl #20
|
|
str r0, [sp]
|
|
str r6, [sp, #4]
|
|
str r2, [sp, #8]
|
|
cmp r8, #0x58
|
|
streq sb, [r5]
|
|
beq _01ffbb74
|
|
add r0, sp, #0x24
|
|
add r1, sp, #0
|
|
bl func_01ff9c2c
|
|
ldr r1, [r7]
|
|
add r0, r1, r0
|
|
str r0, [r5]
|
|
_01ffbb74:
|
|
cmp r8, #0x59
|
|
streq sb, [r5, #4]
|
|
beq _01ffbb98
|
|
add r0, sp, #0x18
|
|
add r1, sp, #0
|
|
bl func_01ff9c2c
|
|
ldr r1, [r7, #4]
|
|
add r0, r1, r0
|
|
str r0, [r5, #4]
|
|
_01ffbb98:
|
|
cmp r8, #0x5a
|
|
addeq sp, sp, #0x30
|
|
streq sb, [r5, #8]
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
add r0, sp, #0xc
|
|
add r1, sp, #0
|
|
bl func_01ff9c2c
|
|
ldr r1, [r7, #8]
|
|
add r0, r1, r0
|
|
str r0, [r5, #8]
|
|
add sp, sp, #0x30
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
arm_func_end func_01ffb7ec
|
|
_01ffbbc8: .word data_02050f54
|
|
|
|
.global func_01ffbbcc
|
|
arm_func_start func_01ffbbcc
|
|
func_01ffbbcc: ; 0x01ffbbcc
|
|
ldr r2, _01ffbbf0 ; =0x04000304
|
|
ldr r3, [r0, #4]
|
|
ldrh r1, [r2]
|
|
ldr ip, _01ffbbf4 ; =func_01ffff08
|
|
add r0, r0, #0x14
|
|
bic r1, r1, #0x8000
|
|
orr r1, r1, r3, lsl #15
|
|
strh r1, [r2]
|
|
bx ip
|
|
.align 2, 0
|
|
arm_func_end func_01ffbbcc
|
|
_01ffbbf0: .word 0x04000304
|
|
_01ffbbf4: .word func_01ffff08
|
|
|
|
.global func_01ffbbf8
|
|
arm_func_start func_01ffbbf8
|
|
func_01ffbbf8: ; 0x01ffbbf8
|
|
stmdb sp!, {r3, lr}
|
|
ldr r2, _01ffbdb0 ; =data_027e080c
|
|
ldr ip, _01ffbdb4 ; =data_027e081c
|
|
ldrb r3, [r2, #2]
|
|
mov r0, #0x64
|
|
ldr r1, [r2, #4]
|
|
mla r0, r3, r0, ip
|
|
cmp r1, #1
|
|
cmpne r1, #2
|
|
beq _01ffbc2c
|
|
cmp r1, #3
|
|
beq _01ffbcb4
|
|
b _01ffbd98
|
|
_01ffbc2c:
|
|
ldr ip, [r0]
|
|
cmp ip, #0
|
|
cmpne ip, #0xc0
|
|
beq _01ffbd98
|
|
ldr r1, _01ffbdb8 ; =0x04000006
|
|
ldrh r1, [r1]
|
|
add r3, r1, #1
|
|
cmp r3, #0xc0
|
|
bge _01ffbc94
|
|
ldr r1, _01ffbdb0 ; =data_027e080c
|
|
ldrb r2, [r1]
|
|
cmp r2, #0
|
|
bne _01ffbd98
|
|
cmp r3, ip
|
|
blt _01ffbd98
|
|
mov r2, #1
|
|
strb r2, [r1]
|
|
ldr r2, _01ffbdbc ; =0x04000304
|
|
ldr r3, [r0, #8]
|
|
ldrh r1, [r2]
|
|
add r0, r0, #0x3c
|
|
bic r1, r1, #0x8000
|
|
orr r1, r1, r3, lsl #15
|
|
strh r1, [r2]
|
|
bl func_01ffff08
|
|
b _01ffbd98
|
|
_01ffbc94:
|
|
ldr r1, _01ffbdb0 ; =data_027e080c
|
|
ldrb r2, [r1]
|
|
cmp r2, #0
|
|
beq _01ffbd98
|
|
mov r2, #0
|
|
strb r2, [r1]
|
|
bl func_01ffbbcc
|
|
b _01ffbd98
|
|
_01ffbcb4:
|
|
ldr lr, [r0]
|
|
cmp lr, #0
|
|
cmpne lr, #0x30
|
|
beq _01ffbd98
|
|
ldr r1, _01ffbdb8 ; =0x04000006
|
|
ldrh r0, [r1]
|
|
add ip, r0, #1
|
|
cmp ip, #0xc0
|
|
bge _01ffbd6c
|
|
ldr r2, _01ffbdc0 ; =0x2aaaaaab
|
|
mov r0, ip, lsr #0x1f
|
|
smull r1, r3, r2, ip
|
|
add r3, r0, r3, asr #3
|
|
mov r2, #0x30
|
|
smull r0, r1, r2, r3
|
|
sub r3, ip, r0
|
|
ldr r2, _01ffbdb0 ; =data_027e080c
|
|
cmp r3, lr
|
|
movlt r1, #1
|
|
ldrb r0, [r2]
|
|
movge r1, #0
|
|
cmp r0, #0
|
|
cmpeq r1, #0
|
|
bne _01ffbd38
|
|
ldr r0, _01ffbdc4 ; =0x0400006c
|
|
mov r3, #1
|
|
mov r1, #0
|
|
strb r3, [r2]
|
|
bl func_02003b20
|
|
ldr r0, _01ffbdc8 ; =0x0400106c
|
|
mov r1, #0
|
|
bl func_02003b20
|
|
b _01ffbd98
|
|
_01ffbd38:
|
|
cmp r0, #0
|
|
cmpne r1, #0
|
|
beq _01ffbd98
|
|
ldr r2, _01ffbdb0 ; =data_027e080c
|
|
mov r3, #0
|
|
ldr r0, _01ffbdc4 ; =0x0400006c
|
|
mov r1, #0x10
|
|
strb r3, [r2]
|
|
bl func_02003b20
|
|
ldr r0, _01ffbdc8 ; =0x0400106c
|
|
mov r1, #0x10
|
|
bl func_02003b20
|
|
b _01ffbd98
|
|
_01ffbd6c:
|
|
ldrb r0, [r2]
|
|
cmp r0, #0
|
|
beq _01ffbd98
|
|
mov r3, #0
|
|
add r0, r1, #0x66
|
|
mov r1, #0x10
|
|
strb r3, [r2]
|
|
bl func_02003b20
|
|
ldr r0, _01ffbdc8 ; =0x0400106c
|
|
mov r1, #0x10
|
|
bl func_02003b20
|
|
_01ffbd98:
|
|
ldr r0, _01ffbdcc ; =data_027e0000
|
|
add r0, r0, #0x3000
|
|
ldr r1, [r0, #0xff8]
|
|
orr r1, r1, #2
|
|
str r1, [r0, #0xff8]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
arm_func_end func_01ffbbf8
|
|
_01ffbdb0: .word data_027e080c
|
|
_01ffbdb4: .word data_027e081c
|
|
_01ffbdb8: .word 0x04000006
|
|
_01ffbdbc: .word 0x04000304
|
|
_01ffbdc0: .word 0x2aaaaaab
|
|
_01ffbdc4: .word 0x0400006c
|
|
_01ffbdc8: .word 0x0400106c
|
|
_01ffbdcc: .word data_027e0000
|
|
|
|
.global func_01ffbdd0
|
|
arm_func_start func_01ffbdd0
|
|
func_01ffbdd0: ; 0x01ffbdd0
|
|
ldr r1, [r0]
|
|
cmp r1, #0
|
|
bxle lr
|
|
cmp r1, #0
|
|
mov r3, #0
|
|
ble _01ffbe08
|
|
mov r2, #1
|
|
_01ffbdec:
|
|
add r1, r0, r3, lsl #2
|
|
ldr r1, [r1, #4]
|
|
add r3, r3, #1
|
|
str r2, [r1, #0x64]
|
|
ldr r1, [r0]
|
|
cmp r3, r1
|
|
blt _01ffbdec
|
|
_01ffbe08:
|
|
ldr r1, _01ffbe2c ; =data_027e028c
|
|
mov r2, #0
|
|
str r2, [r0]
|
|
ldr r0, [r1]
|
|
cmp r0, #0
|
|
ldreq r0, _01ffbe30 ; =data_027e02a0
|
|
moveq r1, #1
|
|
streqh r1, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
arm_func_end func_01ffbdd0
|
|
_01ffbe2c: .word data_027e028c
|
|
_01ffbe30: .word data_027e02a0
|
|
|
|
.global func_01ffbe34
|
|
arm_func_start func_01ffbe34
|
|
func_01ffbe34: ; 0x01ffbe34
|
|
mov r2, #0
|
|
str r2, [r0]
|
|
str r2, [r0, #4]
|
|
strb r2, [r0, #8]
|
|
sub r1, r2, #1
|
|
strb r1, [r0, #9]
|
|
strb r2, [r0, #0xa]
|
|
strb r2, [r0, #0xb]
|
|
str r2, [r0, #0xc]
|
|
str r2, [r0, #0x10]
|
|
strb r2, [r0, #0x14]
|
|
strb r2, [r0, #0x15]
|
|
strh r2, [r0, #0x16]
|
|
mov r1, #0x1000
|
|
str r1, [r0, #0x18]
|
|
str r1, [r0, #0x1c]
|
|
bx lr
|
|
arm_func_end func_01ffbe34
|
|
|
|
.global func_01ffbe78
|
|
arm_func_start func_01ffbe78
|
|
func_01ffbe78: ; 0x01ffbe78
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
sub sp, sp, #0x38
|
|
mov r6, r0
|
|
mov r5, r1
|
|
ldmia r2, {r0, r1, r2}
|
|
add lr, sp, #0x2c
|
|
stmia lr, {r0, r1, r2}
|
|
ldr r4, [sp, #0x48]
|
|
add ip, sp, #0x20
|
|
ldmia r3, {r0, r1, r2}
|
|
stmia ip, {r0, r1, r2}
|
|
mov r0, lr
|
|
mov r2, lr
|
|
mov r1, r4
|
|
bl func_01ff9bc4
|
|
add r0, sp, #0x20
|
|
mov r1, r4
|
|
mov r2, r0
|
|
bl func_01ff9bc4
|
|
ldr r2, [r4, #0xc]
|
|
ldr r1, [sp, #0x4c]
|
|
str r2, [sp]
|
|
str r1, [sp, #4]
|
|
ldrh r3, [sp, #0x50]
|
|
ldr r2, [sp, #0x54]
|
|
ldrb r1, [sp, #0x58]
|
|
str r3, [sp, #8]
|
|
str r2, [sp, #0xc]
|
|
str r1, [sp, #0x10]
|
|
mov r0, r6
|
|
mov r1, r5
|
|
add r2, sp, #0x2c
|
|
add r3, sp, #0x20
|
|
bl func_01ffbf5c
|
|
cmp r0, #0
|
|
addeq sp, sp, #0x38
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r4, r5, r6, pc}
|
|
ldr r1, [r5]
|
|
add r0, sp, #0x14
|
|
str r1, [sp, #0x14]
|
|
ldr r2, [r5, #4]
|
|
mov r1, r4
|
|
str r2, [sp, #0x18]
|
|
ldr r3, [r5, #8]
|
|
mov r2, r0
|
|
str r3, [sp, #0x1c]
|
|
bl func_01ff9bf8
|
|
ldr r1, [sp, #0x14]
|
|
mov r0, #1
|
|
str r1, [r5]
|
|
ldr r1, [sp, #0x18]
|
|
str r1, [r5, #4]
|
|
ldr r1, [sp, #0x1c]
|
|
str r1, [r5, #8]
|
|
add sp, sp, #0x38
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end func_01ffbe78
|
|
|
|
.global func_01ffbf5c
|
|
arm_func_start func_01ffbf5c
|
|
func_01ffbf5c: ; 0x01ffbf5c
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x3c
|
|
ldr r8, [sp, #0x60]
|
|
ldr r7, [sp, #0x64]
|
|
ldr r6, [sp, #0x68]
|
|
ldr r5, [sp, #0x6c]
|
|
mov sl, r0
|
|
cmp r8, #0
|
|
str r3, [sp, #0x10]
|
|
mov fp, r1
|
|
mov sb, r2
|
|
addlt sp, sp, #0x3c
|
|
movlt r0, #0
|
|
ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
add r2, sp, #0x30
|
|
mov r0, sb
|
|
mov r1, r3
|
|
bl func_01ff9bf8
|
|
add r0, sp, #0x30
|
|
mov r1, r0
|
|
bl func_01ff9c2c
|
|
smull r2, r1, r8, r8
|
|
adds r2, r2, #0x800
|
|
adc r1, r1, #0
|
|
mov r2, r2, lsr #0xc
|
|
orr r2, r2, r1, lsl #20
|
|
cmp r0, r2
|
|
bgt _01ffbff8
|
|
str r8, [sp]
|
|
str r7, [sp, #4]
|
|
str r6, [sp, #8]
|
|
ldr r3, [sp, #0x10]
|
|
mov r0, sl
|
|
mov r1, fp
|
|
mov r2, sb
|
|
str r5, [sp, #0xc]
|
|
bl func_01ffc118
|
|
add sp, sp, #0x3c
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
_01ffbff8:
|
|
ldrb r0, [sp, #0x70]
|
|
cmp r0, #0
|
|
beq _01ffc0ec
|
|
cmp r8, #0
|
|
ble _01ffc0ec
|
|
ldr r0, [sp, #0x10]
|
|
add r2, r8, r8, lsl #1
|
|
ldr r0, [r0]
|
|
mov r1, r2, asr #0x1
|
|
str r0, [sp, #0x24]
|
|
ldr r0, [sp, #0x10]
|
|
add r1, r2, r1, lsr #30
|
|
ldr r0, [r0, #4]
|
|
mov r4, #1
|
|
str r0, [sp, #0x28]
|
|
ldr r0, [sp, #0x10]
|
|
ldr r0, [r0, #8]
|
|
str r0, [sp, #0x2c]
|
|
ldr r0, [sp, #0x10]
|
|
ldr r2, [r0]
|
|
mov r0, r1, asr #0x2
|
|
str r0, [sp, #0x14]
|
|
ldr r0, [sp, #0x10]
|
|
str r2, [sp, #0x18]
|
|
ldr r0, [r0, #4]
|
|
str r0, [sp, #0x1c]
|
|
ldr r0, [sp, #0x10]
|
|
ldr r0, [r0, #8]
|
|
str r0, [sp, #0x20]
|
|
_01ffc06c:
|
|
ldr r2, [sp, #0x14]
|
|
add r0, sp, #0x18
|
|
mov r1, sb
|
|
bl func_0202b2e8
|
|
cmp r0, #0
|
|
str r8, [sp]
|
|
str r7, [sp, #4]
|
|
str r6, [sp, #8]
|
|
mov r0, sl
|
|
mov r1, fp
|
|
add r2, sp, #0x18
|
|
add r3, sp, #0x24
|
|
movne r4, #0
|
|
str r5, [sp, #0xc]
|
|
bl func_01ffc118
|
|
cmp r0, #0
|
|
addne sp, sp, #0x3c
|
|
movne r0, #1
|
|
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
cmp r4, #0
|
|
beq _01ffc0d8
|
|
ldr r0, [sp, #0x18]
|
|
ldr r1, [sp, #0x1c]
|
|
str r0, [sp, #0x24]
|
|
ldr r0, [sp, #0x20]
|
|
str r1, [sp, #0x28]
|
|
str r0, [sp, #0x2c]
|
|
_01ffc0d8:
|
|
cmp r4, #0
|
|
bne _01ffc06c
|
|
add sp, sp, #0x3c
|
|
mov r0, #0
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
_01ffc0ec:
|
|
str r8, [sp]
|
|
str r7, [sp, #4]
|
|
str r6, [sp, #8]
|
|
ldr r3, [sp, #0x10]
|
|
mov r0, sl
|
|
mov r1, fp
|
|
mov r2, sb
|
|
str r5, [sp, #0xc]
|
|
bl func_01ffd1e0
|
|
add sp, sp, #0x3c
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
arm_func_end func_01ffbf5c
|
|
|
|
.global func_01ffc118
|
|
arm_func_start func_01ffc118
|
|
func_01ffc118: ; 0x01ffc118
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x2b8
|
|
str r2, [sp, #0x18]
|
|
ldr r2, [sp, #0x2e8]
|
|
str r0, [sp, #0x14]
|
|
str r2, [sp, #0x2e8]
|
|
mov r2, #0
|
|
ldr r0, [sp, #0x18]
|
|
ldr r8, [sp, #0x2e0]
|
|
str r2, [sp, #0x58]
|
|
mov sl, r1
|
|
ldmia r0, {r0, r1, r2}
|
|
add r4, sp, #0x260
|
|
stmia r4, {r0, r1, r2}
|
|
ldr r0, [sp, #0x58]
|
|
rsb r1, r8, #0
|
|
str r1, [sp, #0x258]
|
|
str r0, [sp, #0x54]
|
|
str r0, [sp, #0x254]
|
|
ldr r0, [sp, #0x58]
|
|
mov sb, r3
|
|
str r0, [sp, #0x25c]
|
|
ldr r0, [sp, #0x2e8]
|
|
ldr r7, [sp, #0x2e4]
|
|
tst r0, #4
|
|
ldr r0, [sp, #0x58]
|
|
ldr fp, [sp, #0x2ec]
|
|
sub r0, r0, #1
|
|
str r0, [sp, #0x50]
|
|
beq _01ffc530
|
|
ldr r1, [sp, #0x260]
|
|
ldr r0, [sp, #0x14]
|
|
bl func_ov00_020839d4
|
|
str r0, [sp, #0x4c]
|
|
ldr r0, [sp, #0x14]
|
|
ldr r1, [sp, #0x268]
|
|
bl func_ov00_020839f8
|
|
add r1, r8, #0x800
|
|
str r0, [sp, #0x48]
|
|
mov r0, r1, asr #0xc
|
|
add r0, r0, #2
|
|
str r0, [sp, #0x40]
|
|
mvn r0, #1
|
|
sub r0, r0, r1, asr #12
|
|
str r0, [sp, #0x44]
|
|
ldr r0, [sp, #0x14]
|
|
bl func_ov00_0208335c
|
|
str r0, [sp, #0x38]
|
|
ldr r0, [sp, #0x14]
|
|
bl func_ov00_02083368
|
|
str r0, [sp, #0x34]
|
|
ldr r1, [sp, #0x44]
|
|
ldr r0, [sp, #0x40]
|
|
cmp r1, r0
|
|
mov r0, r1
|
|
str r0, [sp, #0x3c]
|
|
bgt _01ffc530
|
|
ldr r0, [sp, #0x2e8]
|
|
and r0, r0, #0x10
|
|
str r0, [sp, #0x28]
|
|
_01ffc208:
|
|
ldr r1, [sp, #0x44]
|
|
ldr r0, [sp, #0x40]
|
|
mov r4, r1
|
|
cmp r1, r0
|
|
bgt _01ffc518
|
|
ldr r1, [sp, #0x48]
|
|
ldr r0, [sp, #0x3c]
|
|
add r0, r1, r0
|
|
str r0, [sp, #0x24]
|
|
and r0, r0, #0xff
|
|
str r0, [sp, #0x64]
|
|
ldr r0, [sp, #0x34]
|
|
sub r0, r0, #1
|
|
str r0, [sp, #0x60]
|
|
ldr r0, [sp, #0x38]
|
|
sub r0, r0, #1
|
|
str r0, [sp, #0x5c]
|
|
_01ffc24c:
|
|
ldr r0, [sp, #0x4c]
|
|
adds r2, r0, r4
|
|
bmi _01ffc508
|
|
ldr r0, [sp, #0x5c]
|
|
cmp r2, r0
|
|
bgt _01ffc508
|
|
ldr r0, [sp, #0x24]
|
|
cmp r0, #0
|
|
blt _01ffc508
|
|
mov r1, r0
|
|
ldr r0, [sp, #0x60]
|
|
cmp r1, r0
|
|
bgt _01ffc508
|
|
ldr r0, [sp, #0x64]
|
|
add r1, sp, #0x68
|
|
strb r0, [sp, #0x69]
|
|
ldr r0, [sp, #0x14]
|
|
strb r2, [sp, #0x68]
|
|
bl func_ov00_020840c4
|
|
movs r5, r0
|
|
beq _01ffc508
|
|
ldr r1, [r5, #4]
|
|
tst r1, #1
|
|
beq _01ffc508
|
|
ldr r1, [r0]
|
|
ldr r1, [r1, #0x54]
|
|
blx r1
|
|
movs r6, r0
|
|
beq _01ffc508
|
|
ldr r1, [r6, #0xc]
|
|
mov r0, r1, lsr #0xd
|
|
and r0, r0, #3
|
|
cmp r0, #1
|
|
beq _01ffc2e8
|
|
cmp r0, #2
|
|
beq _01ffc2fc
|
|
cmp r0, #3
|
|
beq _01ffc508
|
|
b _01ffc308
|
|
_01ffc2e8:
|
|
cmp r7, #0
|
|
beq _01ffc308
|
|
cmp r7, #1
|
|
bne _01ffc508
|
|
b _01ffc308
|
|
_01ffc2fc:
|
|
cmp r7, #0
|
|
cmpne r7, #1
|
|
beq _01ffc508
|
|
_01ffc308:
|
|
ldr r0, [sp, #0x28]
|
|
cmp r0, #0
|
|
bne _01ffc31c
|
|
tst r1, #0x1f
|
|
beq _01ffc508
|
|
_01ffc31c:
|
|
cmp r7, #1
|
|
moveq r0, r1, lsr #0x1b
|
|
andeq r0, r0, #1
|
|
cmpeq r0, #1
|
|
beq _01ffc508
|
|
ldr r1, [sp, #0x260]
|
|
ldr r0, [sp, #0x264]
|
|
str r1, [sp, #0x160]
|
|
ldr r1, [sp, #0x268]
|
|
str r0, [sp, #0x164]
|
|
str r1, [sp, #0x168]
|
|
str r8, [sp, #0x16c]
|
|
mov r0, r6
|
|
ldr r2, [r0]
|
|
add r1, sp, #0x160
|
|
ldr r2, [r2, #0x50]
|
|
blx r2
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
cmp r0, #0
|
|
bne _01ffc508
|
|
cmp fp, #0
|
|
beq _01ffc398
|
|
mov r0, fp
|
|
mov r1, r5
|
|
ldr r2, [r0]
|
|
ldr r2, [r2, #0x10]
|
|
blx r2
|
|
cmp r0, #0
|
|
beq _01ffc508
|
|
_01ffc398:
|
|
ldmia sb, {r0, r1, r2}
|
|
add ip, sp, #0x154
|
|
stmia ip, {r0, r1, r2}
|
|
mov r1, #0
|
|
add r0, sp, #0x68
|
|
strh r1, [r0, #0xdc]
|
|
mov r0, ip
|
|
add ip, sp, #0x148
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia ip, {r0, r1, r2}
|
|
mov r0, r6
|
|
ldr ip, [r0]
|
|
mov r3, #1
|
|
ldr ip, [ip, #0x58]
|
|
add r1, sp, #0x144
|
|
mov r2, r7
|
|
blx ip
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
cmp r0, #0
|
|
bne _01ffc508
|
|
add r3, sp, #0x138
|
|
ldmia sb, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
ldr r0, [sp, #0x18]
|
|
mov r1, r3
|
|
add r2, sp, #0x248
|
|
bl func_01ff9bf8
|
|
mov r0, r5
|
|
ldr r3, [r0]
|
|
mov r1, r7
|
|
ldr r3, [r3, #0x48]
|
|
add r2, sp, #0x248
|
|
blx r3
|
|
cmp r0, #0
|
|
ldrneb r0, [r6, #4]
|
|
cmpne r0, #0
|
|
beq _01ffc508
|
|
mov r0, r5
|
|
ldr r1, [r0]
|
|
ldr r1, [r1, #0x1c]
|
|
blx r1
|
|
str r0, [sl, #0x54]
|
|
mov r0, #1
|
|
str r0, [sp, #0x58]
|
|
add r3, sp, #0x230
|
|
ldmia sb, {r0, r1, r2}
|
|
mov ip, r3
|
|
stmia ip, {r0, r1, r2}
|
|
add r0, sp, #0x260
|
|
add ip, sp, #0x224
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia ip, {r0, r1, r2}
|
|
str r8, [sp]
|
|
ldr r0, [sp, #0x2e8]
|
|
mov r1, r6
|
|
str r0, [sp, #4]
|
|
add r0, sp, #0x260
|
|
str r0, [sp, #8]
|
|
add r0, sp, #0x23c
|
|
str r0, [sp, #0xc]
|
|
ldr r0, [sp, #0x14]
|
|
mov r2, ip
|
|
bl func_ov00_02086284
|
|
cmp r0, #0
|
|
mov r0, #1
|
|
beq _01ffc4dc
|
|
strb r0, [sl, #0x59]
|
|
strb r0, [sl, #0x5c]
|
|
ldrb r1, [r5, #0x15]
|
|
ldrb r0, [r5, #0x14]
|
|
strb r0, [sl, #0x50]
|
|
strb r1, [sl, #0x51]
|
|
ldr r0, [sp, #0x23c]
|
|
str r0, [sl, #0x18]
|
|
ldr r0, [sp, #0x240]
|
|
str r0, [sl, #0x1c]
|
|
ldr r0, [sp, #0x244]
|
|
str r0, [sl, #0x20]
|
|
b _01ffc508
|
|
_01ffc4dc:
|
|
strb r0, [sl, #0x5a]
|
|
ldrb r1, [r5, #0x15]
|
|
ldrb r0, [r5, #0x14]
|
|
strb r0, [sl, #0x4e]
|
|
strb r1, [sl, #0x4f]
|
|
ldr r0, [sp, #0x23c]
|
|
str r0, [sl, #0xc]
|
|
ldr r0, [sp, #0x240]
|
|
str r0, [sl, #0x10]
|
|
ldr r0, [sp, #0x244]
|
|
str r0, [sl, #0x14]
|
|
_01ffc508:
|
|
ldr r0, [sp, #0x40]
|
|
add r4, r4, #1
|
|
cmp r4, r0
|
|
ble _01ffc24c
|
|
_01ffc518:
|
|
ldr r0, [sp, #0x3c]
|
|
add r1, r0, #1
|
|
ldr r0, [sp, #0x40]
|
|
str r1, [sp, #0x3c]
|
|
cmp r1, r0
|
|
ble _01ffc208
|
|
_01ffc530:
|
|
ldr r0, [sp, #0x2e8]
|
|
tst r0, #8
|
|
beq _01ffc8f4
|
|
add r0, sp, #0x260
|
|
add r5, sp, #0x70
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r5, {r0, r1, r2}
|
|
add r3, sp, #0x218
|
|
ldmia r5, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
add r4, sp, #0x20c
|
|
ldmia r5, {r0, r1, r2}
|
|
stmia r4, {r0, r1, r2}
|
|
ldr r3, [sp, #0x218]
|
|
ldr r0, [sb]
|
|
add r4, sp, #0x1f4
|
|
cmp r3, r0
|
|
strge r0, [sp, #0x218]
|
|
ldr r1, [sb, #4]
|
|
ldr r0, [sp, #0x21c]
|
|
add r3, sp, #0x200
|
|
cmp r0, r1
|
|
strge r1, [sp, #0x21c]
|
|
ldr r1, [sb, #8]
|
|
ldr r0, [sp, #0x220]
|
|
cmp r0, r1
|
|
strge r1, [sp, #0x220]
|
|
ldr r1, [sb]
|
|
ldr r0, [sp, #0x20c]
|
|
cmp r0, r1
|
|
strle r1, [sp, #0x20c]
|
|
ldr r1, [sb, #4]
|
|
ldr r0, [sp, #0x210]
|
|
cmp r0, r1
|
|
strle r1, [sp, #0x210]
|
|
ldr r1, [sb, #8]
|
|
ldr r0, [sp, #0x214]
|
|
cmp r0, r1
|
|
add r0, sp, #0x218
|
|
strle r1, [sp, #0x214]
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r4, {r0, r1, r2}
|
|
add r0, sp, #0x20c
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
mov r0, r4
|
|
mov r1, r8
|
|
bl func_ov00_0208ee00
|
|
mov r0, #0x80
|
|
stmia sp, {r0, r7}
|
|
ldr r0, _01ffd1d0 ; =data_027e0f6c
|
|
ldr r2, [sp, #0x2e8]
|
|
ldr r0, [r0]
|
|
ldr r3, _01ffd1d4 ; =data_027e0e64
|
|
mov r1, r4
|
|
bl func_01fff264
|
|
str r0, [sp, #0x30]
|
|
cmp r0, #0
|
|
mov r5, #0
|
|
ble _01ffc8f4
|
|
_01ffc620:
|
|
ldr r0, _01ffd1d0 ; =data_027e0f6c
|
|
mov r1, r5, lsl #0x1
|
|
ldr r0, [r0]
|
|
ldr r2, [r0, #0x40]
|
|
ldr r0, _01ffd1d4 ; =data_027e0e64
|
|
ldrh r0, [r0, r1]
|
|
ldr r4, [r2, r0, lsl #2]
|
|
cmp r4, #0
|
|
ldrne r6, [r4, #8]
|
|
cmpne r6, r7
|
|
beq _01ffc8e4
|
|
ldr r1, [sp, #0x260]
|
|
ldr r0, [sp, #0x264]
|
|
str r1, [sp, #0x128]
|
|
ldr r1, [sp, #0x268]
|
|
str r0, [sp, #0x12c]
|
|
str r1, [sp, #0x130]
|
|
str r8, [sp, #0x134]
|
|
mov r0, r4
|
|
ldr r2, [r0]
|
|
add r1, sp, #0x128
|
|
ldr r2, [r2, #0x50]
|
|
blx r2
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
cmp r0, #0
|
|
bne _01ffc8e4
|
|
cmp fp, #0
|
|
beq _01ffc6e4
|
|
ldr r0, _01ffd1d4 ; =data_027e0e64
|
|
mov r1, r5, lsl #0x1
|
|
ldrh r1, [r0, r1]
|
|
add r0, sp, #0x68
|
|
add r3, sp, #0x11c
|
|
strh r1, [r0, #0xb0]
|
|
ldmia sb, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
mov r0, fp
|
|
ldr r3, [r0]
|
|
mov r2, r6
|
|
ldr r3, [r3, #0x14]
|
|
add r1, sp, #0x118
|
|
blx r3
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
cmp r0, #0
|
|
bne _01ffc8e4
|
|
_01ffc6e4:
|
|
ldrb r0, [r4, #4]
|
|
cmp r0, #0
|
|
bne _01ffc73c
|
|
ldr r0, _01ffd1d4 ; =data_027e0e64
|
|
mov r1, r5, lsl #0x1
|
|
ldrh r6, [r0, r1]
|
|
ldmia sb, {r0, r1, r2}
|
|
strh r6, [sp, #0xfc]
|
|
add r6, sp, #0x10c
|
|
stmia r6, {r0, r1, r2}
|
|
mov r0, r6
|
|
add r6, sp, #0x100
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r6, {r0, r1, r2}
|
|
mov r0, r4
|
|
ldr r4, [r0]
|
|
mov r3, #1
|
|
ldr r4, [r4, #0x58]
|
|
add r1, sp, #0xfc
|
|
mov r2, r7
|
|
blx r4
|
|
b _01ffc8e4
|
|
_01ffc73c:
|
|
add r3, sp, #0x1dc
|
|
ldmia sb, {r0, r1, r2}
|
|
mov r6, r3
|
|
stmia r6, {r0, r1, r2}
|
|
add r0, sp, #0x260
|
|
add r6, sp, #0x1d0
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r6, {r0, r1, r2}
|
|
str r8, [sp]
|
|
ldr r0, [sp, #0x2e8]
|
|
mov r1, r4
|
|
str r0, [sp, #4]
|
|
mov r0, r6
|
|
str r0, [sp, #8]
|
|
add r0, sp, #0x1e8
|
|
str r0, [sp, #0xc]
|
|
ldr r0, [sp, #0x14]
|
|
mov r2, r6
|
|
bl func_ov00_02086284
|
|
cmp r0, #0
|
|
mov r1, r5, lsl #0x1
|
|
beq _01ffc840
|
|
ldr r0, _01ffd1d4 ; =data_027e0e64
|
|
mov r3, #0
|
|
ldrh r6, [r0, r1]
|
|
ldmia sb, {r0, r1, r2}
|
|
strh r6, [sp, #0xe0]
|
|
add r6, sp, #0xf0
|
|
stmia r6, {r0, r1, r2}
|
|
mov r0, r6
|
|
add r6, sp, #0xe4
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r6, {r0, r1, r2}
|
|
mov r0, r4
|
|
ldr r4, [r0]
|
|
add r1, sp, #0xe0
|
|
ldr r4, [r4, #0x58]
|
|
mov r2, r7
|
|
blx r4
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
cmp r0, #0
|
|
bne _01ffc8e4
|
|
ldr r1, [sp, #0x1d0]
|
|
ldr r0, [sp, #0x1d4]
|
|
str r1, [sp, #0x260]
|
|
str r0, [sp, #0x264]
|
|
ldr r1, [sp, #0x1d8]
|
|
mov r0, #1
|
|
str r0, [sp, #0x58]
|
|
str r1, [sp, #0x268]
|
|
strb r0, [sl, #0x59]
|
|
strb r0, [sl, #0x5d]
|
|
ldr r0, _01ffd1d4 ; =data_027e0e64
|
|
mov r1, r5, lsl #0x1
|
|
ldrh r0, [r0, r1]
|
|
strh r0, [sl, #0x28]
|
|
ldr r0, [sp, #0x1e8]
|
|
str r0, [sl, #0x18]
|
|
ldr r0, [sp, #0x1ec]
|
|
str r0, [sl, #0x1c]
|
|
ldr r0, [sp, #0x1f0]
|
|
str r0, [sl, #0x20]
|
|
b _01ffc8e4
|
|
_01ffc840:
|
|
ldr r0, _01ffd1d4 ; =data_027e0e64
|
|
mov r3, #1
|
|
ldrh r6, [r0, r1]
|
|
ldmia sb, {r0, r1, r2}
|
|
strh r6, [sp, #0xc4]
|
|
add r6, sp, #0xd4
|
|
stmia r6, {r0, r1, r2}
|
|
mov r0, r6
|
|
add r6, sp, #0xc8
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r6, {r0, r1, r2}
|
|
mov r0, r4
|
|
ldr r4, [r0]
|
|
add r1, sp, #0xc4
|
|
ldr r4, [r4, #0x58]
|
|
mov r2, r7
|
|
blx r4
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
cmp r0, #0
|
|
bne _01ffc8e4
|
|
ldr r1, [sp, #0x1d0]
|
|
ldr r0, [sp, #0x1d4]
|
|
str r1, [sp, #0x260]
|
|
str r0, [sp, #0x264]
|
|
ldr r1, [sp, #0x1d8]
|
|
mov r0, #1
|
|
str r0, [sp, #0x58]
|
|
str r1, [sp, #0x268]
|
|
strb r0, [sl, #0x5b]
|
|
ldr r0, _01ffd1d4 ; =data_027e0e64
|
|
mov r1, r5, lsl #0x1
|
|
ldrh r0, [r0, r1]
|
|
strh r0, [sl, #0x2a]
|
|
ldr r0, [sp, #0x1e8]
|
|
str r0, [sl, #0xc]
|
|
ldr r0, [sp, #0x1ec]
|
|
str r0, [sl, #0x10]
|
|
ldr r0, [sp, #0x1f0]
|
|
str r0, [sl, #0x14]
|
|
_01ffc8e4:
|
|
ldr r0, [sp, #0x30]
|
|
add r5, r5, #1
|
|
cmp r5, r0
|
|
blt _01ffc620
|
|
_01ffc8f4:
|
|
ldr r0, [sp, #0x58]
|
|
cmp r0, #0
|
|
beq _01ffc998
|
|
add r0, sp, #0x260
|
|
mov r1, sb
|
|
bl func_01fffb80
|
|
smull r2, r1, r8, r8
|
|
adds r2, r2, #0x800
|
|
adc r1, r1, #0
|
|
mov r2, r2, lsr #0xc
|
|
orr r2, r2, r1, lsl #20
|
|
cmp r0, r2
|
|
blt _01ffc998
|
|
ldr r0, [sp, #0x2e8]
|
|
add r2, sp, #0x260
|
|
bic r0, r0, #0x8c
|
|
str r8, [sp]
|
|
mov r0, r0, lsl #0x10
|
|
str r7, [sp, #4]
|
|
mov r0, r0, lsr #0x10
|
|
str r0, [sp, #8]
|
|
ldr r0, [sp, #0x14]
|
|
mov r1, sl
|
|
mov r3, sb
|
|
str fp, [sp, #0xc]
|
|
mov r4, #1
|
|
str r4, [sp, #0x10]
|
|
bl func_01ffbf5c
|
|
cmp r0, #0
|
|
addne sp, sp, #0x2b8
|
|
movne r0, r4
|
|
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
ldr r1, [sp, #0x260]
|
|
mov r0, r4
|
|
str r1, [sl]
|
|
ldr r1, [sp, #0x264]
|
|
str r1, [sl, #4]
|
|
ldr r1, [sp, #0x268]
|
|
add sp, sp, #0x2b8
|
|
str r1, [sl, #8]
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
_01ffc998:
|
|
ldr r0, [sp, #0x18]
|
|
add r3, sp, #0x1c4
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
ldr r0, [sp, #0x18]
|
|
add r4, sp, #0x1b8
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r4, {r0, r1, r2}
|
|
ldr r3, [sp, #0x1c4]
|
|
ldr r0, [sb]
|
|
add r4, sp, #0x1a0
|
|
cmp r3, r0
|
|
strge r0, [sp, #0x1c4]
|
|
ldr r1, [sb, #4]
|
|
ldr r0, [sp, #0x1c8]
|
|
add r3, sp, #0x1ac
|
|
cmp r0, r1
|
|
strge r1, [sp, #0x1c8]
|
|
ldr r1, [sb, #8]
|
|
ldr r0, [sp, #0x1cc]
|
|
cmp r0, r1
|
|
strge r1, [sp, #0x1cc]
|
|
ldr r1, [sb]
|
|
ldr r0, [sp, #0x1b8]
|
|
cmp r0, r1
|
|
strle r1, [sp, #0x1b8]
|
|
ldr r1, [sb, #4]
|
|
ldr r0, [sp, #0x1bc]
|
|
cmp r0, r1
|
|
strle r1, [sp, #0x1bc]
|
|
ldr r1, [sb, #8]
|
|
ldr r0, [sp, #0x1c0]
|
|
cmp r0, r1
|
|
add r0, sp, #0x1c4
|
|
strle r1, [sp, #0x1c0]
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r4, {r0, r1, r2}
|
|
add r0, sp, #0x1b8
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
mov r0, r4
|
|
mov r1, r8
|
|
bl func_ov00_0208ee00
|
|
mov r0, #0x80
|
|
stmia sp, {r0, r7}
|
|
ldr r0, _01ffd1d0 ; =data_027e0f6c
|
|
ldr r2, [sp, #0x2e8]
|
|
ldr r0, [r0]
|
|
ldr r3, _01ffd1d4 ; =data_027e0e64
|
|
mov r1, r4
|
|
bl func_01ffedf4
|
|
ldr r1, _01ffd1d8 ; =func_ov00_0207e968
|
|
str r0, [sp, #0x2c]
|
|
str r1, [sp]
|
|
ldr r3, _01ffd1dc ; =func_ov00_0207e96c
|
|
add r0, sp, #0x284
|
|
mov r1, #3
|
|
mov r2, #0x10
|
|
bl func_0204f614
|
|
ldr r0, [sp, #0x2e8]
|
|
tst r0, #1
|
|
bne _01ffcaa0
|
|
tst r0, #0x10
|
|
bne _01ffcaa0
|
|
tst r0, #0x40
|
|
beq _01ffcd90
|
|
_01ffcaa0:
|
|
ldr r0, [sp, #0x2c]
|
|
mov r4, #0
|
|
cmp r0, #0
|
|
ble _01ffcd90
|
|
add r5, sp, #0x268
|
|
_01ffcab4:
|
|
ldr r0, _01ffd1d0 ; =data_027e0f6c
|
|
mov r1, r4, lsl #0x1
|
|
ldr r0, [r0]
|
|
ldr r3, [r0, #0x20]
|
|
ldr r0, _01ffd1d4 ; =data_027e0e64
|
|
ldrh r1, [r0, r1]
|
|
mov r0, #0x4c
|
|
mul r2, r1, r0
|
|
add r0, r3, r2
|
|
ldrh r2, [r3, r2]
|
|
ldrh r1, [r0, #2]
|
|
strh r2, [r5, #4]
|
|
strh r1, [r5, #6]
|
|
ldrh r1, [r0, #4]
|
|
strh r1, [r5, #8]
|
|
ldrh r1, [r0, #6]
|
|
strh r1, [r5, #0xa]
|
|
ldr r1, [r0, #8]
|
|
str r1, [sp, #0x274]
|
|
ldr r1, [r0, #0xc]
|
|
str r1, [sp, #0x278]
|
|
cmp r1, #0
|
|
ldr r1, [r0, #0x10]
|
|
str r1, [sp, #0x27c]
|
|
ldr r1, [r0, #0x14]
|
|
str r1, [sp, #0x280]
|
|
ldr r1, [r0, #0x18]
|
|
str r1, [sp, #0x284]
|
|
ldr r1, [r0, #0x1c]
|
|
str r1, [sp, #0x288]
|
|
ldr r1, [r0, #0x20]
|
|
str r1, [sp, #0x28c]
|
|
ldr r1, [r0, #0x24]
|
|
str r1, [sp, #0x290]
|
|
ldr r1, [r0, #0x28]
|
|
str r1, [sp, #0x294]
|
|
ldr r1, [r0, #0x2c]
|
|
str r1, [sp, #0x298]
|
|
ldr r1, [r0, #0x30]
|
|
str r1, [sp, #0x29c]
|
|
ldr r1, [r0, #0x34]
|
|
str r1, [sp, #0x2a0]
|
|
ldr r1, [r0, #0x38]
|
|
str r1, [sp, #0x2a4]
|
|
ldr r1, [r0, #0x3c]
|
|
str r1, [sp, #0x2a8]
|
|
ldr r1, [r0, #0x40]
|
|
str r1, [sp, #0x2ac]
|
|
ldr r1, [r0, #0x44]
|
|
str r1, [sp, #0x2b0]
|
|
ldr r0, [r0, #0x48]
|
|
str r0, [sp, #0x2b4]
|
|
bne _01ffcd80
|
|
ldr r1, [sp, #0x260]
|
|
ldr r0, [sp, #0x264]
|
|
str r1, [sp, #0xb4]
|
|
ldr r1, [sp, #0x268]
|
|
str r0, [sp, #0xb8]
|
|
str r1, [sp, #0xbc]
|
|
add r0, sp, #0x26c
|
|
add r1, sp, #0xb4
|
|
add r2, sp, #0x6c
|
|
str r8, [sp, #0xc0]
|
|
bl func_01ffe668
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
cmp r0, #0
|
|
bne _01ffcd80
|
|
ldr r0, _01ffd1d4 ; =data_027e0e64
|
|
mov r1, r4, lsl #0x1
|
|
ldrh r6, [r0, r1]
|
|
ldr r0, _01ffd1d0 ; =data_027e0f6c
|
|
ldr r3, [r0]
|
|
add r0, sp, #0x260
|
|
ldr sb, [r3, #0x20]
|
|
mov r3, #0x4c
|
|
mul r7, r6, r3
|
|
add r3, sb, r7
|
|
ldrh sb, [sb, r7]
|
|
ldrh r7, [r3, #2]
|
|
ldmia r0, {r0, r1, r2}
|
|
strh sb, [r5, #4]
|
|
strh r7, [r5, #6]
|
|
ldrh r7, [r3, #4]
|
|
strh r7, [r5, #8]
|
|
ldrh r7, [r3, #6]
|
|
strh r7, [r5, #0xa]
|
|
ldr r7, [r3, #8]
|
|
str r7, [sp, #0x274]
|
|
ldr r7, [r3, #0xc]
|
|
str r7, [sp, #0x278]
|
|
ldr r7, [r3, #0x10]
|
|
str r7, [sp, #0x27c]
|
|
ldr r7, [r3, #0x14]
|
|
str r7, [sp, #0x280]
|
|
ldr r7, [r3, #0x18]
|
|
str r7, [sp, #0x284]
|
|
ldr r7, [r3, #0x1c]
|
|
str r7, [sp, #0x288]
|
|
ldr r7, [r3, #0x20]
|
|
str r7, [sp, #0x28c]
|
|
ldr r7, [r3, #0x24]
|
|
str r7, [sp, #0x290]
|
|
ldr r7, [r3, #0x28]
|
|
str r7, [sp, #0x294]
|
|
ldr r7, [r3, #0x2c]
|
|
str r7, [sp, #0x298]
|
|
ldr r7, [r3, #0x30]
|
|
str r7, [sp, #0x29c]
|
|
ldr r7, [r3, #0x34]
|
|
str r7, [sp, #0x2a0]
|
|
ldr r7, [r3, #0x38]
|
|
str r7, [sp, #0x2a4]
|
|
ldr r7, [r3, #0x3c]
|
|
str r7, [sp, #0x2a8]
|
|
ldr r7, [r3, #0x40]
|
|
str r7, [sp, #0x2ac]
|
|
ldr r7, [r3, #0x44]
|
|
str r7, [sp, #0x2b0]
|
|
ldr r3, [r3, #0x48]
|
|
str r3, [sp, #0x2b4]
|
|
add r3, sp, #0x194
|
|
stmia r3, {r0, r1, r2}
|
|
add r0, sp, #0x274
|
|
add r3, sp, #0x188
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
ldr r1, [sp, #0x6c]
|
|
mov r0, r3
|
|
bl func_01fffbec
|
|
add r0, sp, #0x194
|
|
add r1, sp, #0x188
|
|
mov r2, r0
|
|
bl func_01ff9bc4
|
|
cmp fp, #0
|
|
mov r7, #0
|
|
beq _01ffcd18
|
|
add r0, sp, #0x194
|
|
strh r6, [sp, #0xa4]
|
|
add r3, sp, #0xa8
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
mov r0, fp
|
|
ldr r2, [r0]
|
|
add r1, sp, #0xa4
|
|
ldr r2, [r2, #8]
|
|
blx r2
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
movne r0, r7
|
|
cmp r0, #0
|
|
movne r7, #1
|
|
_01ffcd18:
|
|
cmp r7, #0
|
|
bne _01ffcd80
|
|
mov r0, r6, lsl #0x10
|
|
mov r1, r0, lsr #0x10
|
|
mov r0, #1
|
|
strb r0, [sl, #0x58]
|
|
strh r1, [sl, #0x26]
|
|
str r0, [sp, #0x58]
|
|
ldrh r0, [sl, #0x2c]
|
|
add r0, sl, r0, lsl #1
|
|
strh r1, [r0, #0x2e]
|
|
ldrh r0, [sl, #0x2c]
|
|
add r0, r0, #1
|
|
strh r0, [sl, #0x2c]
|
|
ldr r0, [sp, #0x274]
|
|
str r0, [sl, #0xc]
|
|
ldr r0, [sp, #0x278]
|
|
str r0, [sl, #0x10]
|
|
ldr r0, [sp, #0x27c]
|
|
str r0, [sl, #0x14]
|
|
ldr r0, [sp, #0x198]
|
|
ldr r1, [sp, #0x194]
|
|
str r0, [sp, #0x264]
|
|
ldr r0, [sp, #0x19c]
|
|
str r1, [sp, #0x260]
|
|
str r0, [sp, #0x268]
|
|
_01ffcd80:
|
|
ldr r0, [sp, #0x2c]
|
|
add r4, r4, #1
|
|
cmp r4, r0
|
|
blt _01ffcab4
|
|
_01ffcd90:
|
|
ldr r0, [sp, #0x2e8]
|
|
ands r0, r0, #2
|
|
str r0, [sp, #0x1c]
|
|
beq _01ffd11c
|
|
mov r0, r8, lsl #0x1
|
|
str r0, [sp, #0x20]
|
|
rsb r0, r0, #0
|
|
mov r7, #0
|
|
str r0, [sp, #0x180]
|
|
ldr r0, [sp, #0x2c]
|
|
str r7, [sp, #0x17c]
|
|
str r7, [sp, #0x184]
|
|
cmp r0, #0
|
|
ble _01ffcf48
|
|
ldr r6, _01ffd1d4 ; =data_027e0e64
|
|
add r5, sp, #0x26c
|
|
add sb, sp, #0x6c
|
|
add r4, sp, #0x268
|
|
_01ffcdd8:
|
|
mov r1, r7, lsl #0x1
|
|
ldrh r2, [r6, r1]
|
|
mov r1, #0x4c
|
|
ldr r0, _01ffd1d0 ; =data_027e0f6c
|
|
mul r1, r2, r1
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #0x20]
|
|
add r2, r0, r1
|
|
ldrh r1, [r0, r1]
|
|
ldrh r0, [r2, #2]
|
|
strh r1, [r4, #4]
|
|
strh r0, [r4, #6]
|
|
ldrh r0, [r2, #4]
|
|
strh r0, [r4, #8]
|
|
ldrh r0, [r2, #6]
|
|
strh r0, [r4, #0xa]
|
|
ldr r1, [r2, #8]
|
|
str r1, [sp, #0x274]
|
|
ldr r0, [r2, #0xc]
|
|
str r0, [sp, #0x278]
|
|
cmp r0, #0
|
|
ldr r0, [r2, #0x10]
|
|
str r0, [sp, #0x27c]
|
|
ldr r3, [r2, #0x14]
|
|
str r3, [sp, #0x280]
|
|
ldr r3, [r2, #0x18]
|
|
str r3, [sp, #0x284]
|
|
ldr r3, [r2, #0x1c]
|
|
str r3, [sp, #0x288]
|
|
ldr r3, [r2, #0x20]
|
|
str r3, [sp, #0x28c]
|
|
ldr r3, [r2, #0x24]
|
|
str r3, [sp, #0x290]
|
|
ldr r3, [r2, #0x28]
|
|
str r3, [sp, #0x294]
|
|
ldr r3, [r2, #0x2c]
|
|
str r3, [sp, #0x298]
|
|
ldr r3, [r2, #0x30]
|
|
str r3, [sp, #0x29c]
|
|
ldr r3, [r2, #0x34]
|
|
str r3, [sp, #0x2a0]
|
|
ldr r3, [r2, #0x38]
|
|
str r3, [sp, #0x2a4]
|
|
ldr r3, [r2, #0x3c]
|
|
str r3, [sp, #0x2a8]
|
|
ldr r3, [r2, #0x40]
|
|
str r3, [sp, #0x2ac]
|
|
ldr r3, [r2, #0x44]
|
|
str r3, [sp, #0x2b0]
|
|
ldr r2, [r2, #0x48]
|
|
str r2, [sp, #0x2b4]
|
|
beq _01ffcf38
|
|
cmp r1, #0
|
|
cmpeq r0, #0
|
|
bne _01ffced4
|
|
mov r0, r5
|
|
add r1, sp, #0x260
|
|
add r2, sp, #0x254
|
|
mov r3, sb
|
|
bl func_01ffe904
|
|
cmp r0, #0
|
|
beq _01ffcf38
|
|
b _01ffcf18
|
|
_01ffced4:
|
|
ldr r1, [sp, #0x260]
|
|
ldr r0, [sp, #0x264]
|
|
str r1, [sp, #0x98]
|
|
ldr r1, [sp, #0x268]
|
|
add r0, r0, r8
|
|
str r0, [sp, #0x9c]
|
|
str r1, [sp, #0xa0]
|
|
mov r0, r5
|
|
add r1, sp, #0x98
|
|
add r2, sp, #0x17c
|
|
mov r3, sb
|
|
bl func_01ffe904
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
cmp r0, #0
|
|
bne _01ffcf38
|
|
_01ffcf18:
|
|
ldr r1, [sp, #0x6c]
|
|
ldr r0, [sp, #0x54]
|
|
cmp r1, r0
|
|
ble _01ffcf38
|
|
mov r0, r7, lsl #0x1
|
|
ldrh r0, [r6, r0]
|
|
str r1, [sp, #0x54]
|
|
str r0, [sp, #0x50]
|
|
_01ffcf38:
|
|
ldr r0, [sp, #0x2c]
|
|
add r7, r7, #1
|
|
cmp r7, r0
|
|
blt _01ffcdd8
|
|
_01ffcf48:
|
|
ldr r0, [sp, #0x50]
|
|
cmp r0, #0
|
|
blt _01ffd11c
|
|
mov r0, r0, lsl #0x10
|
|
mov r2, r0, lsr #0x10
|
|
mov r0, #0x4c
|
|
ldr r1, _01ffd1d0 ; =data_027e0f6c
|
|
mul r3, r2, r0
|
|
ldr r1, [r1]
|
|
add r0, sp, #0x260
|
|
ldr r1, [r1, #0x20]
|
|
add r5, sp, #0x170
|
|
add r4, r1, r3
|
|
ldrh r7, [r1, r3]
|
|
ldrh r6, [r4, #2]
|
|
add r3, sp, #0x268
|
|
ldmia r0, {r0, r1, r2}
|
|
strh r7, [r3, #4]
|
|
strh r6, [r3, #6]
|
|
ldrh r6, [r4, #4]
|
|
strh r6, [r3, #8]
|
|
ldrh r6, [r4, #6]
|
|
strh r6, [r3, #0xa]
|
|
ldr r3, [r4, #8]
|
|
str r3, [sp, #0x274]
|
|
cmp r3, #0
|
|
ldr r3, [r4, #0xc]
|
|
str r3, [sp, #0x278]
|
|
ldr r3, [r4, #0x10]
|
|
str r3, [sp, #0x27c]
|
|
ldr r6, [r4, #0x14]
|
|
cmpeq r3, #0
|
|
str r6, [sp, #0x280]
|
|
ldr r6, [r4, #0x18]
|
|
str r6, [sp, #0x284]
|
|
ldr r6, [r4, #0x1c]
|
|
str r6, [sp, #0x288]
|
|
ldr r6, [r4, #0x20]
|
|
str r6, [sp, #0x28c]
|
|
ldr r6, [r4, #0x24]
|
|
str r6, [sp, #0x290]
|
|
ldr r6, [r4, #0x28]
|
|
str r6, [sp, #0x294]
|
|
ldr r6, [r4, #0x2c]
|
|
str r6, [sp, #0x298]
|
|
ldr r6, [r4, #0x30]
|
|
str r6, [sp, #0x29c]
|
|
ldr r6, [r4, #0x34]
|
|
str r6, [sp, #0x2a0]
|
|
ldr r6, [r4, #0x38]
|
|
str r6, [sp, #0x2a4]
|
|
ldr r6, [r4, #0x3c]
|
|
str r6, [sp, #0x2a8]
|
|
ldr r6, [r4, #0x40]
|
|
str r6, [sp, #0x2ac]
|
|
ldr r6, [r4, #0x44]
|
|
str r6, [sp, #0x2b0]
|
|
ldr r4, [r4, #0x48]
|
|
stmia r5, {r0, r1, r2}
|
|
str r4, [sp, #0x2b4]
|
|
bne _01ffd060
|
|
ldr r1, [sp, #0x54]
|
|
add r0, sp, #0x254
|
|
bl func_01fffbec
|
|
ldr r0, [sp, #0x258]
|
|
ldr r1, [sp, #0x174]
|
|
add r0, r0, r8
|
|
add r0, r1, r0
|
|
str r0, [sp, #0x174]
|
|
b _01ffd084
|
|
_01ffd060:
|
|
ldr r1, [sp, #0x54]
|
|
add r0, sp, #0x17c
|
|
bl func_01fffbec
|
|
ldr r1, [sp, #0x180]
|
|
ldr r0, [sp, #0x20]
|
|
ldr r2, [sp, #0x174]
|
|
add r0, r1, r0
|
|
add r0, r2, r0
|
|
str r0, [sp, #0x174]
|
|
_01ffd084:
|
|
cmp fp, #0
|
|
mov r4, #0
|
|
beq _01ffd0d0
|
|
ldr r0, [sp, #0x50]
|
|
add r1, sp, #0x170
|
|
strh r0, [sp, #0x88]
|
|
add r3, sp, #0x8c
|
|
ldmia r1, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
mov r0, fp
|
|
ldr r2, [r0]
|
|
add r1, sp, #0x88
|
|
ldr r2, [r2, #0xc]
|
|
blx r2
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
movne r0, r4
|
|
cmp r0, #0
|
|
movne r4, #1
|
|
_01ffd0d0:
|
|
cmp r4, #0
|
|
bne _01ffd11c
|
|
mov r0, #1
|
|
str r0, [sp, #0x58]
|
|
strb r0, [sl, #0x59]
|
|
ldr r0, [sp, #0x50]
|
|
strh r0, [sl, #0x24]
|
|
ldr r0, [sp, #0x274]
|
|
str r0, [sl, #0x18]
|
|
ldr r0, [sp, #0x278]
|
|
str r0, [sl, #0x1c]
|
|
ldr r0, [sp, #0x27c]
|
|
str r0, [sl, #0x20]
|
|
ldr r2, [sp, #0x170]
|
|
ldr r1, [sp, #0x174]
|
|
ldr r0, [sp, #0x178]
|
|
str r2, [sp, #0x260]
|
|
str r1, [sp, #0x264]
|
|
str r0, [sp, #0x268]
|
|
_01ffd11c:
|
|
ldr r0, [sp, #0x14]
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #4]
|
|
cmp r0, #2
|
|
bne _01ffd18c
|
|
ldr r0, [sp, #0x14]
|
|
ldr r1, [sp, #0x18]
|
|
ldr r0, [r0, #4]
|
|
ldr r2, [r0]
|
|
ldr r2, [r2, #0x50]
|
|
blx r2
|
|
ldr r1, [sp, #0x1c]
|
|
cmp r1, #0
|
|
beq _01ffd18c
|
|
ldr r1, [sp, #0x18]
|
|
add r0, r8, r0
|
|
ldr r1, [r1, #4]
|
|
cmp r1, r0
|
|
bgt _01ffd18c
|
|
str r0, [sp, #0x264]
|
|
mov r0, #1
|
|
str r0, [sp, #0x58]
|
|
strb r0, [sl, #0x59]
|
|
mov r1, #0
|
|
str r1, [sl, #0x18]
|
|
mov r0, #0x1000
|
|
str r0, [sl, #0x1c]
|
|
str r1, [sl, #0x20]
|
|
_01ffd18c:
|
|
ldr r0, [sp, #0x58]
|
|
cmp r0, #0
|
|
beq _01ffd1b0
|
|
ldr r0, [sp, #0x260]
|
|
str r0, [sl]
|
|
ldr r0, [sp, #0x264]
|
|
str r0, [sl, #4]
|
|
ldr r0, [sp, #0x268]
|
|
str r0, [sl, #8]
|
|
_01ffd1b0:
|
|
ldr r3, _01ffd1d8 ; =func_ov00_0207e968
|
|
add r0, sp, #0x284
|
|
mov r1, #3
|
|
mov r2, #0x10
|
|
bl func_0204f754
|
|
ldr r0, [sp, #0x58]
|
|
add sp, sp, #0x2b8
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
arm_func_end func_01ffc118
|
|
_01ffd1d0: .word data_027e0f6c
|
|
_01ffd1d4: .word data_027e0e64
|
|
_01ffd1d8: .word func_ov00_0207e968
|
|
_01ffd1dc: .word func_ov00_0207e96c
|
|
|
|
.global func_01ffd1e0
|
|
arm_func_start func_01ffd1e0
|
|
func_01ffd1e0: ; 0x01ffd1e0
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x320
|
|
str r0, [sp, #0x14]
|
|
mov r0, r2
|
|
str r2, [sp, #0x18]
|
|
mov sl, r1
|
|
ldmia r0, {r0, r1, r2}
|
|
mov r4, #0
|
|
str r4, [sp, #0x4c]
|
|
ldr r4, [sp, #0x350]
|
|
add r5, sp, #0x2c8
|
|
str r4, [sp, #0x350]
|
|
stmia r5, {r0, r1, r2}
|
|
ldr r0, [sp, #0x4c]
|
|
add r4, sp, #0x2bc
|
|
mov sb, r3
|
|
str r0, [sp, #0x48]
|
|
str r0, [sp, #0x44]
|
|
ldmia sb, {r0, r1, r2}
|
|
stmia r4, {r0, r1, r2}
|
|
mov r0, r5
|
|
mov r1, r4
|
|
add r2, sp, #0x2b0
|
|
ldr r8, [sp, #0x348]
|
|
ldr r7, [sp, #0x34c]
|
|
ldr fp, [sp, #0x354]
|
|
bl func_01ff9bf8
|
|
ldr r0, [sp, #0x350]
|
|
tst r0, #4
|
|
mvn r0, #0
|
|
str r0, [sp, #0x40]
|
|
beq _01ffd678
|
|
add r4, sp, #0x298
|
|
ldmia sb, {r0, r1, r2}
|
|
stmia r4, {r0, r1, r2}
|
|
add r3, sp, #0x2a4
|
|
ldmia sb, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
mov r0, r4
|
|
mov r1, r5
|
|
bl func_ov00_0208ed74
|
|
ldr r1, [sp, #0x18]
|
|
mov r0, r4
|
|
bl func_ov00_0208ed74
|
|
mov r0, r4
|
|
mov r1, r8
|
|
bl func_ov00_0208ee00
|
|
ldr r0, [sp, #0x14]
|
|
ldr r1, [sp, #0x298]
|
|
bl func_ov00_020839d4
|
|
sub r0, r0, #1
|
|
str r0, [sp, #0x3c]
|
|
ldr r0, [sp, #0x14]
|
|
ldr r1, [sp, #0x2a0]
|
|
bl func_ov00_020839f8
|
|
sub r0, r0, #1
|
|
str r0, [sp, #0x28]
|
|
ldr r0, [sp, #0x14]
|
|
ldr r1, [sp, #0x2a4]
|
|
bl func_ov00_020839d4
|
|
add r0, r0, #1
|
|
str r0, [sp, #0x38]
|
|
ldr r0, [sp, #0x14]
|
|
ldr r1, [sp, #0x2ac]
|
|
bl func_ov00_020839f8
|
|
add r0, r0, #1
|
|
str r0, [sp, #0x34]
|
|
mov r0, #0
|
|
str r0, [sp, #0x290]
|
|
str r0, [sp, #0x284]
|
|
str r0, [sp, #0x288]
|
|
str r0, [sp, #0x28c]
|
|
mov r0, r5
|
|
add r4, sp, #0x1ac
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r4, {r0, r1, r2}
|
|
add r3, sp, #0x1a0
|
|
ldmia sb, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
mov r0, r4
|
|
mov r1, r3
|
|
add r2, sp, #0x2b0
|
|
bl func_01ff9bf8
|
|
ldr r0, [sp, #0x14]
|
|
bl func_ov00_0208335c
|
|
str r0, [sp, #0x30]
|
|
ldr r0, [sp, #0x14]
|
|
bl func_ov00_02083368
|
|
str r0, [sp, #0x2c]
|
|
ldr r1, [sp, #0x28]
|
|
ldr r0, [sp, #0x34]
|
|
cmp r1, r0
|
|
bgt _01ffd678
|
|
ldr r0, [sp, #0x350]
|
|
and r0, r0, #0x10
|
|
str r0, [sp, #0x1c]
|
|
_01ffd360:
|
|
ldr r1, [sp, #0x3c]
|
|
ldr r0, [sp, #0x38]
|
|
mov r4, r1
|
|
cmp r1, r0
|
|
bgt _01ffd660
|
|
ldr r0, [sp, #0x28]
|
|
and r0, r0, #0xff
|
|
str r0, [sp, #0x58]
|
|
ldr r0, [sp, #0x2c]
|
|
sub r0, r0, #1
|
|
str r0, [sp, #0x54]
|
|
ldr r0, [sp, #0x30]
|
|
sub r0, r0, #1
|
|
str r0, [sp, #0x50]
|
|
_01ffd398:
|
|
cmp r4, #0
|
|
blt _01ffd650
|
|
ldr r0, [sp, #0x50]
|
|
cmp r4, r0
|
|
bgt _01ffd650
|
|
ldr r0, [sp, #0x28]
|
|
cmp r0, #0
|
|
blt _01ffd650
|
|
mov r1, r0
|
|
ldr r0, [sp, #0x54]
|
|
cmp r1, r0
|
|
bgt _01ffd650
|
|
ldr r0, [sp, #0x58]
|
|
add r1, sp, #0x5c
|
|
strb r0, [sp, #0x5d]
|
|
ldr r0, [sp, #0x14]
|
|
strb r4, [sp, #0x5c]
|
|
bl func_ov00_020840c4
|
|
movs r5, r0
|
|
beq _01ffd650
|
|
ldr r1, [r5, #4]
|
|
tst r1, #1
|
|
beq _01ffd650
|
|
ldr r1, [r0]
|
|
ldr r1, [r1, #0x54]
|
|
blx r1
|
|
movs r6, r0
|
|
beq _01ffd650
|
|
ldr r1, [r6, #0xc]
|
|
mov r0, r1, lsr #0xd
|
|
and r0, r0, #3
|
|
cmp r0, #1
|
|
beq _01ffd430
|
|
cmp r0, #2
|
|
beq _01ffd440
|
|
cmp r0, #3
|
|
beq _01ffd650
|
|
b _01ffd44c
|
|
_01ffd430:
|
|
cmp r7, #0
|
|
cmpne r7, #1
|
|
beq _01ffd44c
|
|
b _01ffd650
|
|
_01ffd440:
|
|
cmp r7, #0
|
|
cmpne r7, #1
|
|
beq _01ffd650
|
|
_01ffd44c:
|
|
ldr r0, [sp, #0x1c]
|
|
cmp r0, #0
|
|
bne _01ffd460
|
|
tst r1, #0x1f
|
|
beq _01ffd650
|
|
_01ffd460:
|
|
cmp r7, #1
|
|
moveq r0, r1, lsr #0x1b
|
|
andeq r0, r0, #1
|
|
cmpeq r0, #1
|
|
beq _01ffd650
|
|
ldr r1, [sb]
|
|
mov r0, r6
|
|
str r1, [sp, #0x190]
|
|
ldr r2, [sb, #4]
|
|
add r1, sp, #0x190
|
|
str r2, [sp, #0x194]
|
|
ldr r3, [sb, #8]
|
|
add r2, sp, #0x2b0
|
|
str r3, [sp, #0x198]
|
|
str r8, [sp, #0x19c]
|
|
ldr ip, [r0]
|
|
add r3, sp, #0x60
|
|
ldr ip, [ip, #0x54]
|
|
blx ip
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
cmp r0, #0
|
|
bne _01ffd650
|
|
cmp fp, #0
|
|
beq _01ffd4e4
|
|
mov r0, fp
|
|
mov r1, r5
|
|
ldr r2, [r0]
|
|
ldr r2, [r2, #0x10]
|
|
blx r2
|
|
cmp r0, #0
|
|
beq _01ffd650
|
|
_01ffd4e4:
|
|
add ip, sp, #0x184
|
|
ldmia sb, {r0, r1, r2}
|
|
stmia ip, {r0, r1, r2}
|
|
mov r1, #0
|
|
add r0, sp, #0x15c
|
|
strh r1, [r0, #0x18]
|
|
mov r0, ip
|
|
add ip, sp, #0x178
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia ip, {r0, r1, r2}
|
|
mov r0, r6
|
|
ldr ip, [r0]
|
|
mov r3, #1
|
|
ldr ip, [ip, #0x58]
|
|
add r1, sp, #0x174
|
|
mov r2, r7
|
|
blx ip
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
cmp r0, #0
|
|
bne _01ffd650
|
|
ldr r0, [sp, #0x18]
|
|
mov r1, sb
|
|
add r2, sp, #0x278
|
|
bl func_01ff9bf8
|
|
mov r0, r5
|
|
ldr r3, [r0]
|
|
mov r1, r7
|
|
ldr r3, [r3, #0x48]
|
|
add r2, sp, #0x278
|
|
blx r3
|
|
cmp r0, #0
|
|
ldrneb r0, [r6, #4]
|
|
cmpne r0, #0
|
|
beq _01ffd650
|
|
mov r0, r5
|
|
ldr r1, [r0]
|
|
ldr r1, [r1, #0x1c]
|
|
blx r1
|
|
str r0, [sl, #0x54]
|
|
mov r0, #1
|
|
str r0, [sp, #0x4c]
|
|
add r3, sp, #0x260
|
|
ldmia sb, {r0, r1, r2}
|
|
mov ip, r3
|
|
stmia ip, {r0, r1, r2}
|
|
add r0, sp, #0x2c8
|
|
add ip, sp, #0x254
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia ip, {r0, r1, r2}
|
|
str r8, [sp]
|
|
ldr r2, [sp, #0x60]
|
|
ldr r0, [sp, #0x14]
|
|
str r2, [sp, #4]
|
|
ldr r2, [sp, #0x350]
|
|
mov r1, r6
|
|
str r2, [sp, #8]
|
|
add r2, sp, #0x2c8
|
|
str r2, [sp, #0xc]
|
|
add r2, sp, #0x26c
|
|
str r2, [sp, #0x10]
|
|
mov r2, ip
|
|
bl func_ov00_02086a84
|
|
cmp r0, #0
|
|
mov r0, #1
|
|
beq _01ffd624
|
|
strb r0, [sl, #0x59]
|
|
strb r0, [sl, #0x5c]
|
|
ldrb r1, [r5, #0x15]
|
|
ldrb r0, [r5, #0x14]
|
|
strb r0, [sl, #0x50]
|
|
strb r1, [sl, #0x51]
|
|
ldr r0, [sp, #0x26c]
|
|
str r0, [sl, #0x18]
|
|
ldr r0, [sp, #0x270]
|
|
str r0, [sl, #0x1c]
|
|
ldr r0, [sp, #0x274]
|
|
str r0, [sl, #0x20]
|
|
b _01ffd650
|
|
_01ffd624:
|
|
strb r0, [sl, #0x5a]
|
|
ldrb r1, [r5, #0x15]
|
|
ldrb r0, [r5, #0x14]
|
|
strb r0, [sl, #0x4e]
|
|
strb r1, [sl, #0x4f]
|
|
ldr r0, [sp, #0x26c]
|
|
str r0, [sl, #0xc]
|
|
ldr r0, [sp, #0x270]
|
|
str r0, [sl, #0x10]
|
|
ldr r0, [sp, #0x274]
|
|
str r0, [sl, #0x14]
|
|
_01ffd650:
|
|
ldr r0, [sp, #0x38]
|
|
add r4, r4, #1
|
|
cmp r4, r0
|
|
ble _01ffd398
|
|
_01ffd660:
|
|
ldr r0, [sp, #0x28]
|
|
add r1, r0, #1
|
|
ldr r0, [sp, #0x34]
|
|
str r1, [sp, #0x28]
|
|
cmp r1, r0
|
|
ble _01ffd360
|
|
_01ffd678:
|
|
ldr r0, [sp, #0x350]
|
|
tst r0, #8
|
|
beq _01ffda18
|
|
add r0, sp, #0x2c8
|
|
add r6, sp, #0x6c
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r6, {r0, r1, r2}
|
|
add r5, sp, #0x23c
|
|
ldmia r6, {r0, r1, r2}
|
|
stmia r5, {r0, r1, r2}
|
|
add r4, sp, #0x248
|
|
ldmia r6, {r0, r1, r2}
|
|
stmia r4, {r0, r1, r2}
|
|
add r3, sp, #0x168
|
|
ldmia sb, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
mov r0, r5
|
|
mov r1, r3
|
|
bl func_ov00_0208ed74
|
|
mov r0, r5
|
|
mov r1, r8
|
|
bl func_ov00_0208ee00
|
|
mov r0, #0x80
|
|
stmia sp, {r0, r7}
|
|
ldr r0, _01ffe1b8 ; =data_027e0f6c
|
|
ldr r2, [sp, #0x350]
|
|
ldr r0, [r0]
|
|
ldr r3, _01ffe1bc ; =data_027e0e64
|
|
mov r1, r5
|
|
bl func_01fff264
|
|
str r0, [sp, #0x24]
|
|
add r0, sp, #0x2c8
|
|
add r4, sp, #0x15c
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r4, {r0, r1, r2}
|
|
add r3, sp, #0x150
|
|
ldmia sb, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
mov r0, r4
|
|
mov r1, r3
|
|
add r2, sp, #0x2b0
|
|
bl func_01ff9bf8
|
|
ldr r0, [sp, #0x24]
|
|
mov r5, #0
|
|
cmp r0, #0
|
|
ble _01ffda18
|
|
_01ffd730:
|
|
ldr r0, _01ffe1b8 ; =data_027e0f6c
|
|
mov r1, r5, lsl #0x1
|
|
ldr r0, [r0]
|
|
ldr r2, [r0, #0x40]
|
|
ldr r0, _01ffe1bc ; =data_027e0e64
|
|
ldrh r0, [r0, r1]
|
|
ldr r4, [r2, r0, lsl #2]
|
|
cmp r4, #0
|
|
ldrne r6, [r4, #8]
|
|
cmpne r6, r7
|
|
beq _01ffda08
|
|
ldr r1, [sb]
|
|
mov r0, r4
|
|
str r1, [sp, #0x140]
|
|
ldr r2, [sb, #4]
|
|
add r1, sp, #0x140
|
|
str r2, [sp, #0x144]
|
|
ldr r3, [sb, #8]
|
|
add r2, sp, #0x2b0
|
|
str r3, [sp, #0x148]
|
|
str r8, [sp, #0x14c]
|
|
ldr ip, [r0]
|
|
add r3, sp, #0x68
|
|
ldr ip, [ip, #0x54]
|
|
blx ip
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
cmp r0, #0
|
|
bne _01ffda08
|
|
cmp fp, #0
|
|
beq _01ffd7fc
|
|
ldr r0, _01ffe1bc ; =data_027e0e64
|
|
mov r1, r5, lsl #0x1
|
|
ldrh r1, [r0, r1]
|
|
add r0, sp, #0x5c
|
|
add r3, sp, #0x134
|
|
strh r1, [r0, #0xd4]
|
|
ldmia sb, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
mov r0, fp
|
|
ldr r3, [r0]
|
|
mov r2, r6
|
|
ldr r3, [r3, #0x14]
|
|
add r1, sp, #0x130
|
|
blx r3
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
cmp r0, #0
|
|
bne _01ffda08
|
|
_01ffd7fc:
|
|
ldrb r0, [r4, #4]
|
|
cmp r0, #0
|
|
bne _01ffd858
|
|
ldr r0, _01ffe1bc ; =data_027e0e64
|
|
mov r1, r5, lsl #0x1
|
|
ldrh ip, [r0, r1]
|
|
ldmia sb, {r0, r1, r2}
|
|
add r6, sp, #0x5c
|
|
strh ip, [r6, #0xb8]
|
|
add r6, sp, #0x124
|
|
stmia r6, {r0, r1, r2}
|
|
mov r0, r6
|
|
add r6, sp, #0x118
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r6, {r0, r1, r2}
|
|
mov r0, r4
|
|
ldr r4, [r0]
|
|
mov r3, #1
|
|
ldr r4, [r4, #0x58]
|
|
add r1, sp, #0x114
|
|
mov r2, r7
|
|
blx r4
|
|
b _01ffda08
|
|
_01ffd858:
|
|
add r3, sp, #0x224
|
|
ldmia sb, {r0, r1, r2}
|
|
mov r6, r3
|
|
stmia r6, {r0, r1, r2}
|
|
add r0, sp, #0x2c8
|
|
add r6, sp, #0x218
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r6, {r0, r1, r2}
|
|
str r8, [sp]
|
|
ldr r1, [sp, #0x68]
|
|
ldr r0, [sp, #0x14]
|
|
str r1, [sp, #4]
|
|
ldr r1, [sp, #0x350]
|
|
mov r2, r6
|
|
str r1, [sp, #8]
|
|
mov r1, r6
|
|
str r1, [sp, #0xc]
|
|
add r1, sp, #0x230
|
|
str r1, [sp, #0x10]
|
|
mov r1, r4
|
|
bl func_ov00_02086a84
|
|
cmp r0, #0
|
|
mov r1, r5, lsl #0x1
|
|
beq _01ffd964
|
|
ldr r0, _01ffe1bc ; =data_027e0e64
|
|
mov r3, #0
|
|
ldrh r6, [r0, r1]
|
|
ldmia sb, {r0, r1, r2}
|
|
strh r6, [sp, #0xf8]
|
|
add r6, sp, #0x108
|
|
stmia r6, {r0, r1, r2}
|
|
mov r0, r6
|
|
add r6, sp, #0xfc
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r6, {r0, r1, r2}
|
|
mov r0, r4
|
|
ldr r4, [r0]
|
|
add r1, sp, #0xf8
|
|
ldr r4, [r4, #0x58]
|
|
mov r2, r7
|
|
blx r4
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
cmp r0, #0
|
|
bne _01ffda08
|
|
ldr r1, [sp, #0x218]
|
|
ldr r0, [sp, #0x21c]
|
|
str r1, [sp, #0x2c8]
|
|
str r0, [sp, #0x2cc]
|
|
ldr r1, [sp, #0x220]
|
|
mov r0, #1
|
|
str r0, [sp, #0x4c]
|
|
str r1, [sp, #0x2d0]
|
|
strb r0, [sl, #0x59]
|
|
strb r0, [sl, #0x5d]
|
|
ldr r0, _01ffe1bc ; =data_027e0e64
|
|
mov r1, r5, lsl #0x1
|
|
ldrh r0, [r0, r1]
|
|
strh r0, [sl, #0x28]
|
|
ldr r0, [sp, #0x230]
|
|
str r0, [sl, #0x18]
|
|
ldr r0, [sp, #0x234]
|
|
str r0, [sl, #0x1c]
|
|
ldr r0, [sp, #0x238]
|
|
str r0, [sl, #0x20]
|
|
b _01ffda08
|
|
_01ffd964:
|
|
ldr r0, _01ffe1bc ; =data_027e0e64
|
|
mov r3, #1
|
|
ldrh r6, [r0, r1]
|
|
ldmia sb, {r0, r1, r2}
|
|
strh r6, [sp, #0xdc]
|
|
add r6, sp, #0xec
|
|
stmia r6, {r0, r1, r2}
|
|
mov r0, r6
|
|
add r6, sp, #0xe0
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r6, {r0, r1, r2}
|
|
mov r0, r4
|
|
ldr r4, [r0]
|
|
add r1, sp, #0xdc
|
|
ldr r4, [r4, #0x58]
|
|
mov r2, r7
|
|
blx r4
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
cmp r0, #0
|
|
bne _01ffda08
|
|
ldr r1, [sp, #0x218]
|
|
ldr r0, [sp, #0x21c]
|
|
str r1, [sp, #0x2c8]
|
|
str r0, [sp, #0x2cc]
|
|
ldr r1, [sp, #0x220]
|
|
mov r0, #1
|
|
str r0, [sp, #0x4c]
|
|
str r1, [sp, #0x2d0]
|
|
strb r0, [sl, #0x5b]
|
|
ldr r0, _01ffe1bc ; =data_027e0e64
|
|
mov r1, r5, lsl #0x1
|
|
ldrh r0, [r0, r1]
|
|
strh r0, [sl, #0x2a]
|
|
ldr r0, [sp, #0x230]
|
|
str r0, [sl, #0xc]
|
|
ldr r0, [sp, #0x234]
|
|
str r0, [sl, #0x10]
|
|
ldr r0, [sp, #0x238]
|
|
str r0, [sl, #0x14]
|
|
_01ffda08:
|
|
ldr r0, [sp, #0x24]
|
|
add r5, r5, #1
|
|
cmp r5, r0
|
|
blt _01ffd730
|
|
_01ffda18:
|
|
add r5, sp, #0x200
|
|
ldmia sb, {r0, r1, r2}
|
|
stmia r5, {r0, r1, r2}
|
|
add r4, sp, #0x20c
|
|
ldmia sb, {r0, r1, r2}
|
|
stmia r4, {r0, r1, r2}
|
|
ldr r0, [sp, #0x18]
|
|
add r3, sp, #0xd0
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
mov r0, r5
|
|
mov r1, r3
|
|
bl func_ov00_0208ed74
|
|
mov r0, r5
|
|
mov r1, r8
|
|
bl func_ov00_0208ee00
|
|
mov r0, #0x80
|
|
stmia sp, {r0, r7}
|
|
ldr r0, _01ffe1b8 ; =data_027e0f6c
|
|
ldr r2, [sp, #0x350]
|
|
ldr r0, [r0]
|
|
ldr r3, _01ffe1bc ; =data_027e0e64
|
|
mov r1, r5
|
|
bl func_01ffedf4
|
|
ldr r1, _01ffe1c0 ; =func_ov00_0207e968
|
|
mov r7, r0
|
|
str r1, [sp]
|
|
ldr r3, _01ffe1c4 ; =func_ov00_0207e96c
|
|
add r0, sp, #0x2ec
|
|
mov r1, #3
|
|
mov r2, #0x10
|
|
bl func_0204f614
|
|
ldr r0, [sp, #0x350]
|
|
tst r0, #1
|
|
bne _01ffdab4
|
|
tst r0, #0x10
|
|
bne _01ffdab4
|
|
tst r0, #0x40
|
|
beq _01ffde0c
|
|
_01ffdab4:
|
|
cmp r7, #0
|
|
mov r6, #0
|
|
ble _01ffde0c
|
|
add r4, sp, #0x25c
|
|
_01ffdac4:
|
|
ldr r1, _01ffe1bc ; =data_027e0e64
|
|
mov r2, r6, lsl #0x1
|
|
ldrh r2, [r1, r2]
|
|
mov r1, #0x4c
|
|
ldr r0, _01ffe1b8 ; =data_027e0f6c
|
|
mul r3, r2, r1
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #0x20]
|
|
add r1, r0, r3
|
|
ldrh r2, [r0, r3]
|
|
ldrh r0, [r1, #2]
|
|
strh r2, [r4, #0x78]
|
|
strh r0, [r4, #0x7a]
|
|
ldrh r0, [r1, #4]
|
|
strh r0, [r4, #0x7c]
|
|
ldrh r0, [r1, #6]
|
|
strh r0, [r4, #0x7e]
|
|
ldr r0, [r1, #8]
|
|
str r0, [sp, #0x2dc]
|
|
ldr r0, [r1, #0xc]
|
|
str r0, [sp, #0x2e0]
|
|
cmp r0, #0
|
|
ldr r0, [r1, #0x10]
|
|
str r0, [sp, #0x2e4]
|
|
ldr r0, [r1, #0x14]
|
|
str r0, [sp, #0x2e8]
|
|
ldr r0, [r1, #0x18]
|
|
str r0, [sp, #0x2ec]
|
|
ldr r0, [r1, #0x1c]
|
|
str r0, [sp, #0x2f0]
|
|
ldr r0, [r1, #0x20]
|
|
str r0, [sp, #0x2f4]
|
|
ldr r0, [r1, #0x24]
|
|
str r0, [sp, #0x2f8]
|
|
ldr r0, [r1, #0x28]
|
|
str r0, [sp, #0x2fc]
|
|
ldr r0, [r1, #0x2c]
|
|
str r0, [sp, #0x300]
|
|
ldr r0, [r1, #0x30]
|
|
str r0, [sp, #0x304]
|
|
ldr r0, [r1, #0x34]
|
|
str r0, [sp, #0x308]
|
|
ldr r0, [r1, #0x38]
|
|
str r0, [sp, #0x30c]
|
|
ldr r0, [r1, #0x3c]
|
|
str r0, [sp, #0x310]
|
|
ldr r0, [r1, #0x40]
|
|
str r0, [sp, #0x314]
|
|
ldr r0, [r1, #0x44]
|
|
str r0, [sp, #0x318]
|
|
ldr r0, [r1, #0x48]
|
|
str r0, [sp, #0x31c]
|
|
bne _01ffde00
|
|
ldr r1, [sp, #0x2bc]
|
|
ldr r0, [sp, #0x2c0]
|
|
str r1, [sp, #0xc0]
|
|
ldr r1, [sp, #0x2c4]
|
|
str r0, [sp, #0xc4]
|
|
str r1, [sp, #0xc8]
|
|
str r8, [sp, #0xcc]
|
|
add r1, sp, #0x68
|
|
str r1, [sp]
|
|
add r0, sp, #0x2d4
|
|
add r1, sp, #0xc0
|
|
add r2, sp, #0x2b0
|
|
add r3, sp, #0x64
|
|
bl func_01ffea18
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
cmp r0, #0
|
|
bne _01ffde00
|
|
add r0, sp, #0x2b0
|
|
add r1, sp, #0x2dc
|
|
bl func_01fffc94
|
|
ldr r1, _01ffe1c8 ; =0x00001922
|
|
cmp r0, r1
|
|
blt _01ffde00
|
|
ldr r0, _01ffe1bc ; =data_027e0e64
|
|
mov r1, r6, lsl #0x1
|
|
ldrh r5, [r0, r1]
|
|
ldr r0, _01ffe1b8 ; =data_027e0f6c
|
|
add r3, sp, #0x1f4
|
|
ldr r0, [r0]
|
|
ldr r2, [r0, #0x20]
|
|
mov r0, #0x4c
|
|
mul r1, r5, r0
|
|
add r0, r2, r1
|
|
ldrh r2, [r2, r1]
|
|
ldrh r1, [r0, #2]
|
|
strh r2, [r4, #0x78]
|
|
strh r1, [r4, #0x7a]
|
|
ldrh r1, [r0, #4]
|
|
strh r1, [r4, #0x7c]
|
|
ldrh r1, [r0, #6]
|
|
strh r1, [r4, #0x7e]
|
|
ldr r1, [r0, #8]
|
|
str r1, [sp, #0x2dc]
|
|
ldr r1, [r0, #0xc]
|
|
str r1, [sp, #0x2e0]
|
|
ldr r1, [r0, #0x10]
|
|
str r1, [sp, #0x2e4]
|
|
ldr r1, [r0, #0x14]
|
|
str r1, [sp, #0x2e8]
|
|
ldr r1, [r0, #0x18]
|
|
str r1, [sp, #0x2ec]
|
|
ldr r1, [r0, #0x1c]
|
|
str r1, [sp, #0x2f0]
|
|
ldr r1, [r0, #0x20]
|
|
str r1, [sp, #0x2f4]
|
|
ldr r1, [r0, #0x24]
|
|
str r1, [sp, #0x2f8]
|
|
ldr r1, [r0, #0x28]
|
|
str r1, [sp, #0x2fc]
|
|
ldr r1, [r0, #0x2c]
|
|
str r1, [sp, #0x300]
|
|
ldr r1, [r0, #0x30]
|
|
str r1, [sp, #0x304]
|
|
ldr r1, [r0, #0x34]
|
|
str r1, [sp, #0x308]
|
|
ldr r1, [r0, #0x38]
|
|
str r1, [sp, #0x30c]
|
|
ldr r1, [r0, #0x3c]
|
|
str r1, [sp, #0x310]
|
|
ldr r1, [r0, #0x40]
|
|
str r1, [sp, #0x314]
|
|
ldr r1, [r0, #0x44]
|
|
str r1, [sp, #0x318]
|
|
ldr r0, [r0, #0x48]
|
|
str r0, [sp, #0x31c]
|
|
ldmia sb, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
add r0, sp, #0x2b0
|
|
add r3, sp, #0x1e8
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
ldr r1, [sp, #0x68]
|
|
mov r0, r3
|
|
bl func_01fffbec
|
|
add r0, sp, #0x1f4
|
|
add r1, sp, #0x1e8
|
|
mov r2, r0
|
|
bl func_01ff9bc4
|
|
mov r0, #0
|
|
cmp fp, #0
|
|
str r0, [sp, #0x20]
|
|
beq _01ffdd50
|
|
add r0, sp, #0x1f4
|
|
strh r5, [sp, #0xb0]
|
|
add r3, sp, #0xb4
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
mov r0, fp
|
|
ldr r2, [r0]
|
|
add r1, sp, #0xb0
|
|
ldr r2, [r2, #8]
|
|
blx r2
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
strne r0, [sp, #0x20]
|
|
_01ffdd50:
|
|
ldr r0, [sp, #0x20]
|
|
cmp r0, #0
|
|
bne _01ffde00
|
|
mov r0, r5, lsl #0x10
|
|
mov r2, r0, lsr #0x10
|
|
mov r0, #1
|
|
strb r0, [sl, #0x58]
|
|
strh r2, [sl, #0x26]
|
|
str r0, [sp, #0x4c]
|
|
ldrh r3, [sl, #0x2c]
|
|
add r0, sp, #0x1dc
|
|
mov r1, r8
|
|
add r3, sl, r3, lsl #1
|
|
strh r2, [r3, #0x2e]
|
|
ldrh r2, [sl, #0x2c]
|
|
add r2, r2, #1
|
|
strh r2, [sl, #0x2c]
|
|
ldr r2, [sp, #0x2dc]
|
|
str r2, [sl, #0xc]
|
|
ldr r2, [sp, #0x2e0]
|
|
str r2, [sl, #0x10]
|
|
ldr r2, [sp, #0x2e4]
|
|
str r2, [sl, #0x14]
|
|
ldr r3, [sp, #0x1f4]
|
|
ldr r2, [sp, #0x1f8]
|
|
str r3, [sp, #0x2c8]
|
|
str r2, [sp, #0x2cc]
|
|
ldr r3, [sp, #0x1fc]
|
|
ldr r2, [sp, #0x2dc]
|
|
str r3, [sp, #0x2d0]
|
|
str r2, [sp, #0x1dc]
|
|
ldr r3, [sp, #0x2e0]
|
|
ldr r2, [sp, #0x2e4]
|
|
str r3, [sp, #0x1e0]
|
|
str r2, [sp, #0x1e4]
|
|
bl func_01fffbec
|
|
add r0, sp, #0x2c8
|
|
add r1, sp, #0x1dc
|
|
mov r2, r0
|
|
bl func_01ff9bc4
|
|
add r0, sp, #0x2c8
|
|
add r1, sp, #0x2bc
|
|
add r2, sp, #0x2b0
|
|
bl func_01ff9bf8
|
|
_01ffde00:
|
|
add r6, r6, #1
|
|
cmp r6, r7
|
|
blt _01ffdac4
|
|
_01ffde0c:
|
|
ldr r0, [sp, #0x350]
|
|
tst r0, #2
|
|
beq _01ffe174
|
|
add r0, sp, #0x2c8
|
|
add r4, sp, #0xa4
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r4, {r0, r1, r2}
|
|
add r3, sp, #0x98
|
|
ldmia sb, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
mov r0, r4
|
|
mov r1, r3
|
|
add r2, sp, #0x2b0
|
|
bl func_01ff9bf8
|
|
cmp r7, #0
|
|
mov r5, #0
|
|
ble _01ffdfa8
|
|
ldr r6, _01ffe1bc ; =data_027e0e64
|
|
add r4, sp, #0x25c
|
|
_01ffde58:
|
|
mov r1, r5, lsl #0x1
|
|
ldrh r2, [r6, r1]
|
|
mov r1, #0x4c
|
|
ldr r0, _01ffe1b8 ; =data_027e0f6c
|
|
mul r3, r2, r1
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #0x20]
|
|
add r1, r0, r3
|
|
ldrh r2, [r0, r3]
|
|
ldrh r0, [r1, #2]
|
|
strh r2, [r4, #0x78]
|
|
strh r0, [r4, #0x7a]
|
|
ldrh r0, [r1, #4]
|
|
strh r0, [r4, #0x7c]
|
|
ldrh r0, [r1, #6]
|
|
strh r0, [r4, #0x7e]
|
|
ldr r0, [r1, #8]
|
|
str r0, [sp, #0x2dc]
|
|
ldr r0, [r1, #0xc]
|
|
str r0, [sp, #0x2e0]
|
|
cmp r0, #0
|
|
ldr r0, [r1, #0x10]
|
|
str r0, [sp, #0x2e4]
|
|
ldr r0, [r1, #0x14]
|
|
str r0, [sp, #0x2e8]
|
|
ldr r0, [r1, #0x18]
|
|
str r0, [sp, #0x2ec]
|
|
ldr r0, [r1, #0x1c]
|
|
str r0, [sp, #0x2f0]
|
|
ldr r0, [r1, #0x20]
|
|
str r0, [sp, #0x2f4]
|
|
ldr r0, [r1, #0x24]
|
|
str r0, [sp, #0x2f8]
|
|
ldr r0, [r1, #0x28]
|
|
str r0, [sp, #0x2fc]
|
|
ldr r0, [r1, #0x2c]
|
|
str r0, [sp, #0x300]
|
|
ldr r0, [r1, #0x30]
|
|
str r0, [sp, #0x304]
|
|
ldr r0, [r1, #0x34]
|
|
str r0, [sp, #0x308]
|
|
ldr r0, [r1, #0x38]
|
|
str r0, [sp, #0x30c]
|
|
ldr r0, [r1, #0x3c]
|
|
str r0, [sp, #0x310]
|
|
ldr r0, [r1, #0x40]
|
|
str r0, [sp, #0x314]
|
|
ldr r0, [r1, #0x44]
|
|
str r0, [sp, #0x318]
|
|
ldr r0, [r1, #0x48]
|
|
str r0, [sp, #0x31c]
|
|
beq _01ffdf9c
|
|
ldr r1, [sb]
|
|
add r0, sp, #0x2d4
|
|
str r1, [sp, #0x88]
|
|
ldr r2, [sb, #4]
|
|
add r1, sp, #0x88
|
|
str r2, [sp, #0x8c]
|
|
ldr r3, [sb, #8]
|
|
add r2, sp, #0x2b0
|
|
str r3, [sp, #0x90]
|
|
str r8, [sp, #0x94]
|
|
add r3, sp, #0x68
|
|
str r3, [sp]
|
|
add r3, sp, #0x64
|
|
bl func_01ffea18
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
cmp r0, #0
|
|
bne _01ffdf9c
|
|
ldr r1, [sp, #0x64]
|
|
ldr r0, [sp, #0x48]
|
|
cmp r1, r0
|
|
ble _01ffdf9c
|
|
mov r0, r5, lsl #0x1
|
|
ldrh r0, [r6, r0]
|
|
str r1, [sp, #0x48]
|
|
str r0, [sp, #0x40]
|
|
ldr r0, [sp, #0x68]
|
|
str r0, [sp, #0x44]
|
|
_01ffdf9c:
|
|
add r5, r5, #1
|
|
cmp r5, r7
|
|
blt _01ffde58
|
|
_01ffdfa8:
|
|
ldr r0, [sp, #0x40]
|
|
cmp r0, #0
|
|
blt _01ffe174
|
|
mov r0, r0, lsl #0x10
|
|
mov r2, r0, lsr #0x10
|
|
mov r0, #0x4c
|
|
ldr r1, _01ffe1b8 ; =data_027e0f6c
|
|
mul r0, r2, r0
|
|
ldr r1, [r1]
|
|
add r7, sp, #0x2c8
|
|
ldr r1, [r1, #0x20]
|
|
add r5, sp, #0x25c
|
|
add r4, r1, r0
|
|
ldrh ip, [r1, r0]
|
|
ldrh r3, [r4, #2]
|
|
ldmia r7, {r0, r1, r2}
|
|
strh ip, [r5, #0x78]
|
|
strh r3, [r5, #0x7a]
|
|
ldrh ip, [r4, #4]
|
|
add r6, sp, #0x1d0
|
|
mov r3, #0
|
|
strh ip, [r5, #0x7c]
|
|
ldrh ip, [r4, #6]
|
|
strh ip, [r5, #0x7e]
|
|
ldr r5, [r4, #8]
|
|
str r5, [sp, #0x2dc]
|
|
ldr r5, [r4, #0xc]
|
|
str r5, [sp, #0x2e0]
|
|
ldr r5, [r4, #0x10]
|
|
str r5, [sp, #0x2e4]
|
|
ldr r5, [r4, #0x14]
|
|
str r5, [sp, #0x2e8]
|
|
ldr r5, [r4, #0x18]
|
|
str r5, [sp, #0x2ec]
|
|
ldr r5, [r4, #0x1c]
|
|
str r5, [sp, #0x2f0]
|
|
ldr r5, [r4, #0x20]
|
|
str r5, [sp, #0x2f4]
|
|
ldr r5, [r4, #0x24]
|
|
str r5, [sp, #0x2f8]
|
|
ldr r5, [r4, #0x28]
|
|
str r5, [sp, #0x2fc]
|
|
ldr r5, [r4, #0x2c]
|
|
str r5, [sp, #0x300]
|
|
ldr r5, [r4, #0x30]
|
|
str r5, [sp, #0x304]
|
|
ldr r5, [r4, #0x34]
|
|
str r5, [sp, #0x308]
|
|
ldr r5, [r4, #0x38]
|
|
str r5, [sp, #0x30c]
|
|
ldr r5, [r4, #0x3c]
|
|
str r5, [sp, #0x310]
|
|
ldr r5, [r4, #0x40]
|
|
str r5, [sp, #0x314]
|
|
ldr r5, [r4, #0x44]
|
|
str r5, [sp, #0x318]
|
|
ldr r4, [r4, #0x48]
|
|
stmia r6, {r0, r1, r2}
|
|
ldr r0, [sp, #0x14]
|
|
mov r1, r7
|
|
mov r2, sb
|
|
str r4, [sp, #0x31c]
|
|
bl func_ov00_02083ef8
|
|
ldr r1, [sp, #0x1d4]
|
|
add r0, r0, r8
|
|
cmp r1, r0
|
|
strle r0, [sp, #0x1d4]
|
|
cmp fp, #0
|
|
mov r4, #0
|
|
beq _01ffe138
|
|
ldmia sb, {r0, r1, r2}
|
|
add r3, sp, #0x1c4
|
|
stmia r3, {r0, r1, r2}
|
|
add r5, sp, #0x2b0
|
|
add r3, sp, #0x1b8
|
|
ldmia r5, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
ldr r1, [sp, #0x44]
|
|
mov r0, r3
|
|
bl func_01fffbec
|
|
add r0, sp, #0x1c4
|
|
add r1, sp, #0x1b8
|
|
mov r2, r0
|
|
bl func_01ff9bc4
|
|
ldr r0, [sp, #0x40]
|
|
add r3, sp, #0x7c
|
|
strh r0, [sp, #0x78]
|
|
add r0, sp, #0x1c4
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
mov r0, fp
|
|
ldr r2, [r0]
|
|
add r1, sp, #0x78
|
|
ldr r2, [r2, #0xc]
|
|
blx r2
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
movne r0, r4
|
|
cmp r0, #0
|
|
movne r4, #1
|
|
_01ffe138:
|
|
cmp r4, #0
|
|
bne _01ffe174
|
|
mov r0, #1
|
|
str r0, [sp, #0x4c]
|
|
strb r0, [sl, #0x59]
|
|
ldr r0, [sp, #0x40]
|
|
strh r0, [sl, #0x24]
|
|
ldr r0, [sp, #0x2dc]
|
|
str r0, [sl, #0x18]
|
|
ldr r0, [sp, #0x2e0]
|
|
str r0, [sl, #0x1c]
|
|
ldr r0, [sp, #0x2e4]
|
|
str r0, [sl, #0x20]
|
|
ldr r0, [sp, #0x1d4]
|
|
str r0, [sp, #0x2cc]
|
|
_01ffe174:
|
|
ldr r0, [sp, #0x4c]
|
|
cmp r0, #0
|
|
beq _01ffe198
|
|
ldr r0, [sp, #0x2c8]
|
|
str r0, [sl]
|
|
ldr r0, [sp, #0x2cc]
|
|
str r0, [sl, #4]
|
|
ldr r0, [sp, #0x2d0]
|
|
str r0, [sl, #8]
|
|
_01ffe198:
|
|
ldr r3, _01ffe1c0 ; =func_ov00_0207e968
|
|
add r0, sp, #0x2ec
|
|
mov r1, #3
|
|
mov r2, #0x10
|
|
bl func_0204f754
|
|
ldr r0, [sp, #0x4c]
|
|
add sp, sp, #0x320
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
arm_func_end func_01ffd1e0
|
|
_01ffe1b8: .word data_027e0f6c
|
|
_01ffe1bc: .word data_027e0e64
|
|
_01ffe1c0: .word func_ov00_0207e968
|
|
_01ffe1c4: .word func_ov00_0207e96c
|
|
_01ffe1c8: .word 0x00001922
|
|
|
|
.global func_01ffe1cc
|
|
arm_func_start func_01ffe1cc
|
|
func_01ffe1cc: ; 0x01ffe1cc
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x84
|
|
ldr sb, [sp, #0xa8]
|
|
ldrh r4, [sp, #0xac]
|
|
str sb, [sp]
|
|
ldr r8, [sp, #0xb0]
|
|
str r4, [sp, #4]
|
|
ldr r4, _01ffe464 ; =data_027e0f6c
|
|
str r8, [sp, #8]
|
|
str r0, [sp, #0xc]
|
|
ldr r0, [r4]
|
|
mov r4, r1
|
|
mov sl, r2
|
|
str r3, [sp, #0x10]
|
|
bl func_01fff510
|
|
cmp r0, #0
|
|
addne sp, sp, #0x84
|
|
movne r0, #1
|
|
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
ldrh r5, [sp, #0xac]
|
|
tst r5, #4
|
|
beq _01ffe458
|
|
ldmia r4, {r0, r1, r2}
|
|
add r4, sp, #0x78
|
|
stmia r4, {r0, r1, r2}
|
|
add r3, sp, #0x6c
|
|
ldmia sl, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
add r2, sp, #0x60
|
|
mov r0, r4
|
|
mov r1, sl
|
|
bl func_01ff9bf8
|
|
add r4, sp, #0x48
|
|
ldmia sl, {r0, r1, r2}
|
|
stmia r4, {r0, r1, r2}
|
|
add r3, sp, #0x54
|
|
ldmia sl, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
mov r0, r4
|
|
add r1, sp, #0x78
|
|
bl func_ov00_0208ed74
|
|
ldr r1, [sp, #0x10]
|
|
mov r0, r4
|
|
bl func_ov00_0208ee00
|
|
ldr r0, [sp, #0xc]
|
|
ldr r1, [sp, #0x48]
|
|
bl func_ov00_020839d4
|
|
str r0, [sp, #0x24]
|
|
ldr r0, [sp, #0xc]
|
|
ldr r1, [sp, #0x50]
|
|
bl func_ov00_020839f8
|
|
mov r6, r0
|
|
ldr r0, [sp, #0xc]
|
|
ldr r1, [sp, #0x54]
|
|
bl func_ov00_020839d4
|
|
mov r4, r0
|
|
ldr r0, [sp, #0xc]
|
|
ldr r1, [sp, #0x5c]
|
|
bl func_ov00_020839f8
|
|
str r0, [sp, #0x20]
|
|
ldr r0, [sp, #0xc]
|
|
bl func_ov00_0208335c
|
|
str r0, [sp, #0x1c]
|
|
ldr r0, [sp, #0xc]
|
|
bl func_ov00_02083368
|
|
str r0, [sp, #0x18]
|
|
ldr r0, [sp, #0x20]
|
|
cmp r6, r0
|
|
bgt _01ffe458
|
|
and r0, r5, #0x10
|
|
str r0, [sp, #0x14]
|
|
_01ffe2e8:
|
|
ldr r5, [sp, #0x24]
|
|
mov r0, r5
|
|
cmp r0, r4
|
|
bgt _01ffe448
|
|
and r0, r6, #0xff
|
|
str r0, [sp, #0x2c]
|
|
ldr r0, [sp, #0x18]
|
|
sub r0, r0, #1
|
|
str r0, [sp, #0x28]
|
|
ldr r0, [sp, #0x1c]
|
|
sub fp, r0, #1
|
|
_01ffe314:
|
|
cmp r5, #0
|
|
blt _01ffe43c
|
|
cmp r5, fp
|
|
bgt _01ffe43c
|
|
cmp r6, #0
|
|
blt _01ffe43c
|
|
ldr r0, [sp, #0x28]
|
|
cmp r6, r0
|
|
bgt _01ffe43c
|
|
ldr r0, [sp, #0x2c]
|
|
add r1, sp, #0x30
|
|
strb r0, [sp, #0x31]
|
|
ldr r0, [sp, #0xc]
|
|
strb r5, [sp, #0x30]
|
|
bl func_ov00_020840c4
|
|
movs r7, r0
|
|
beq _01ffe43c
|
|
ldr r1, [r0]
|
|
ldr r1, [r1, #0x54]
|
|
blx r1
|
|
cmp r0, #0
|
|
ldrneb r1, [r0, #4]
|
|
cmpne r1, #0
|
|
beq _01ffe43c
|
|
ldr r2, [r0, #0xc]
|
|
mov r1, r2, lsr #0xd
|
|
and r1, r1, #3
|
|
cmp r1, #1
|
|
beq _01ffe39c
|
|
cmp r1, #2
|
|
beq _01ffe3ac
|
|
cmp r1, #3
|
|
beq _01ffe43c
|
|
b _01ffe3b8
|
|
_01ffe39c:
|
|
cmp sb, #0
|
|
cmpne sb, #1
|
|
beq _01ffe3b8
|
|
b _01ffe43c
|
|
_01ffe3ac:
|
|
cmp sb, #0
|
|
cmpne sb, #1
|
|
beq _01ffe43c
|
|
_01ffe3b8:
|
|
ldr r1, [sp, #0x14]
|
|
cmp r1, #0
|
|
bne _01ffe3cc
|
|
tst r2, #0x1f
|
|
beq _01ffe43c
|
|
_01ffe3cc:
|
|
ldr r2, [sl]
|
|
add r1, sp, #0x38
|
|
str r2, [sp, #0x38]
|
|
ldr r3, [sl, #4]
|
|
add r2, sp, #0x60
|
|
str r3, [sp, #0x3c]
|
|
ldr ip, [sl, #8]
|
|
add r3, sp, #0x34
|
|
str ip, [sp, #0x40]
|
|
ldr ip, [sp, #0x10]
|
|
str ip, [sp, #0x44]
|
|
ldr ip, [r0]
|
|
ldr ip, [ip, #0x54]
|
|
blx ip
|
|
cmp r0, #0
|
|
beq _01ffe43c
|
|
cmp r8, #0
|
|
beq _01ffe430
|
|
mov r1, r7
|
|
mov r0, r8
|
|
ldr r2, [r0]
|
|
ldr r2, [r2, #0x10]
|
|
blx r2
|
|
cmp r0, #0
|
|
beq _01ffe43c
|
|
_01ffe430:
|
|
add sp, sp, #0x84
|
|
mov r0, #1
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
_01ffe43c:
|
|
add r5, r5, #1
|
|
cmp r5, r4
|
|
ble _01ffe314
|
|
_01ffe448:
|
|
ldr r0, [sp, #0x20]
|
|
add r6, r6, #1
|
|
cmp r6, r0
|
|
ble _01ffe2e8
|
|
_01ffe458:
|
|
mov r0, #0
|
|
add sp, sp, #0x84
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
arm_func_end func_01ffe1cc
|
|
_01ffe464: .word data_027e0f6c
|
|
|
|
.global func_01ffe468
|
|
arm_func_start func_01ffe468
|
|
func_01ffe468: ; 0x01ffe468
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
|
|
sub sp, sp, #0xc
|
|
mov r6, r0
|
|
mov r5, r2
|
|
mov r0, r1
|
|
add r2, sp, #0
|
|
add r1, r6, #0x1c
|
|
mov r4, r3
|
|
bl func_01ff9158
|
|
ldr r0, [sp, #8]
|
|
cmp r0, #0
|
|
bne _01ffe4b0
|
|
mov r0, #0x80000000
|
|
str r0, [r5]
|
|
str r0, [r4]
|
|
add sp, sp, #0xc
|
|
mov r0, #0
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
|
|
_01ffe4b0:
|
|
rsb r0, r0, #0
|
|
bl func_01ff992c
|
|
ldr ip, [sp, #8]
|
|
ldr r2, [r6, #0xb4]
|
|
ldr r8, [r6, #0xc4]
|
|
smull r7, r3, r2, ip
|
|
adds r7, r7, #0x800
|
|
adc r2, r3, #0
|
|
mov r3, r7, lsr #0xc
|
|
orr r3, r3, r2, lsl #20
|
|
add r3, r8, r3
|
|
umull r8, r7, r0, r3
|
|
mov r2, r3, asr #0x1f
|
|
mla r7, r0, r2, r7
|
|
mla r7, r1, r3, r7
|
|
adds r2, r8, #0x80000000
|
|
ldrb r3, [sp, #0x28]
|
|
adc r7, r7, #0
|
|
mov r2, ip, asr #0x1f
|
|
cmp r3, #0
|
|
mov r3, #0x80000000
|
|
beq _01ffe530
|
|
cmp r7, r3, asr #19
|
|
blt _01ffe518
|
|
cmp r7, #0x1000
|
|
ble _01ffe530
|
|
_01ffe518:
|
|
mov r0, #0x80000000
|
|
str r0, [r5]
|
|
str r0, [r4]
|
|
add sp, sp, #0xc
|
|
mov r0, #0
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
|
|
_01ffe530:
|
|
ldr lr, [r6, #0xac]
|
|
ldr sb, [r6, #0x8c]
|
|
umull r8, r7, lr, ip
|
|
ldr r3, [sp]
|
|
mla r7, lr, r2, r7
|
|
smull r3, r2, sb, r3
|
|
adds r3, r3, #0x800
|
|
mov lr, lr, asr #0x1f
|
|
adc r2, r2, #0
|
|
adds r8, r8, #0x800
|
|
mla r7, lr, ip, r7
|
|
mov sb, r3, lsr #0xc
|
|
adc r3, r7, #0
|
|
mov r7, r8, lsr #0xc
|
|
orr sb, sb, r2, lsl #20
|
|
orr r7, r7, r3, lsl #20
|
|
add r3, sb, r7
|
|
umull r8, r7, r0, r3
|
|
mov r2, r3, asr #0x1f
|
|
mla r7, r0, r2, r7
|
|
mla r7, r1, r3, r7
|
|
adds r2, r8, #0x80000000
|
|
adc r2, r7, #0
|
|
add r2, r2, #0x1000
|
|
mov r2, r2, lsl #0x7
|
|
add r2, r2, #0x800
|
|
mov r2, r2, asr #0xc
|
|
str r2, [r5]
|
|
ldr ip, [r6, #0xa0]
|
|
ldr r5, [sp, #4]
|
|
ldr r3, [r6, #0xb0]
|
|
ldr r2, [sp, #8]
|
|
smull r5, r6, ip, r5
|
|
adds ip, r5, #0x800
|
|
smull r5, r2, r3, r2
|
|
adc r6, r6, #0
|
|
adds r3, r5, #0x800
|
|
mov r5, ip, lsr #0xc
|
|
adc r2, r2, #0
|
|
mov r3, r3, lsr #0xc
|
|
orr r5, r5, r6, lsl #20
|
|
orr r3, r3, r2, lsl #20
|
|
add r3, r5, r3
|
|
umull r2, r5, r0, r3
|
|
adds r2, r2, #0x80000000
|
|
mov r2, r3, asr #0x1f
|
|
mla r5, r0, r2, r5
|
|
mla r5, r1, r3, r5
|
|
adc r0, r5, #0
|
|
add r1, r0, #0x1000
|
|
mov r0, #0x60
|
|
mul r0, r1, r0
|
|
add r0, r0, #0x800
|
|
mov r0, r0, asr #0xc
|
|
rsb r0, r0, #0xc0
|
|
str r0, [r4]
|
|
mov r0, #1
|
|
add sp, sp, #0xc
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
|
|
arm_func_end func_01ffe468
|
|
|
|
.global func_01ffe61c
|
|
arm_func_start func_01ffe61c
|
|
func_01ffe61c: ; 0x01ffe61c
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r6, r1
|
|
mov r1, r2
|
|
mov r7, r0
|
|
mov r5, r3
|
|
bl func_01ff9c2c
|
|
movs r4, r0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
|
|
mov r0, r7
|
|
mov r1, r6
|
|
bl func_01ff9c2c
|
|
ldr r2, [r7, #0xc]
|
|
mov r1, r4
|
|
sub r0, r2, r0
|
|
bl func_01ff98e0
|
|
str r0, [r5]
|
|
mov r0, #1
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
arm_func_end func_01ffe61c
|
|
|
|
.global func_01ffe668
|
|
arm_func_start func_01ffe668
|
|
func_01ffe668: ; 0x01ffe668
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x2c
|
|
mov sl, r0
|
|
add r0, sl, #8
|
|
mov sb, r1
|
|
str r2, [sp]
|
|
bl func_01ff9c2c
|
|
ldr r2, [sl, #0x14]
|
|
ldr r1, [sb, #0xc]
|
|
sub r0, r0, r2
|
|
str r0, [sp, #4]
|
|
cmp r0, r1
|
|
bgt _01ffe6a4
|
|
cmp r0, #0
|
|
bge _01ffe6b0
|
|
_01ffe6a4:
|
|
add sp, sp, #0x2c
|
|
mov r0, #0
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
_01ffe6b0:
|
|
mov r5, #0
|
|
mov r6, r5
|
|
mov fp, r5
|
|
mov r7, r5
|
|
mov r8, r5
|
|
add r4, sl, #0x18
|
|
_01ffe6c8:
|
|
mov r1, sb
|
|
add r0, r4, r8, lsl #4
|
|
bl func_01ff9c2c
|
|
add r1, sl, r8, lsl #4
|
|
ldr r2, [r1, #0x24]
|
|
ldr r1, [sb, #0xc]
|
|
sub r2, r0, r2
|
|
add r0, sp, #0x20
|
|
cmp r2, r1
|
|
str r2, [r0, r8, lsl #2]
|
|
addge sp, sp, #0x2c
|
|
movge r0, #0
|
|
ldmgeia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
add r0, r8, #1
|
|
mov r0, r0, lsl #0x10
|
|
cmp r2, r5
|
|
movgt fp, r6
|
|
movgt r6, r8
|
|
movgt r5, r2
|
|
cmp r2, #0
|
|
mov r8, r0, lsr #0x10
|
|
addgt r7, r7, #1
|
|
cmp r8, #3
|
|
blo _01ffe6c8
|
|
cmp r5, #0
|
|
ldr r2, [sb, #0xc]
|
|
bne _01ffe750
|
|
ldr r1, [sp, #4]
|
|
mov r0, #1
|
|
sub r2, r2, r1
|
|
ldr r1, [sp]
|
|
add sp, sp, #0x2c
|
|
str r2, [r1]
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
_01ffe750:
|
|
ldr r0, [sp, #4]
|
|
smull r4, r3, r0, r0
|
|
adds r4, r4, #0x800
|
|
smull r1, r0, r2, r2
|
|
adc r2, r3, #0
|
|
adds r1, r1, #0x800
|
|
mov r4, r4, lsr #0xc
|
|
adc r0, r0, #0
|
|
mov r1, r1, lsr #0xc
|
|
orr r4, r4, r2, lsl #20
|
|
orr r1, r1, r0, lsl #20
|
|
sub r0, r1, r4
|
|
bl func_01ff9958
|
|
mov r8, r0
|
|
cmp r5, r8
|
|
addgt sp, sp, #0x2c
|
|
movgt r0, #0
|
|
ldmgtia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
cmp r7, #1
|
|
bne _01ffe874
|
|
add r0, r6, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
cmp r0, #2
|
|
movhi r0, #0
|
|
mov r1, r6, lsl #0x1
|
|
mov r0, r0, lsl #0x1
|
|
ldr r7, [sl, #0x48]
|
|
ldrh r3, [sl, r1]
|
|
ldrh r2, [sl, r0]
|
|
ldr r7, [r7, #8]
|
|
mov r1, #0xc
|
|
mla r0, r3, r1, r7
|
|
mla r1, r2, r1, r7
|
|
add r2, sp, #0x14
|
|
bl func_01ff9bf8
|
|
mov r0, r6, lsl #0x1
|
|
ldr r2, [sl, #0x48]
|
|
ldrh r1, [sl, r0]
|
|
ldr r2, [r2, #8]
|
|
mov r0, #0xc
|
|
mla r0, r1, r0, r2
|
|
add r2, sp, #8
|
|
mov r1, sb
|
|
bl func_01ff9bf8
|
|
add r0, sp, #0x14
|
|
add r1, sp, #8
|
|
bl func_01ff9c2c
|
|
mov r6, r0
|
|
cmp r6, #0
|
|
ble _01ffe868
|
|
add r0, sp, #0x14
|
|
mov r1, r0
|
|
bl func_01ff9c2c
|
|
cmp r6, r0
|
|
bgt _01ffe868
|
|
smull r1, r0, r5, r5
|
|
adds r1, r1, #0x800
|
|
adc r0, r0, #0
|
|
mov r1, r1, lsr #0xc
|
|
orr r1, r1, r0, lsl #20
|
|
add r0, r4, r1
|
|
bl func_01ff9958
|
|
ldr r1, [sb, #0xc]
|
|
sub r1, r1, r0
|
|
ldr r0, [sp]
|
|
add sp, sp, #0x2c
|
|
str r1, [r0]
|
|
mov r0, #1
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
_01ffe868:
|
|
add sp, sp, #0x2c
|
|
mov r0, #0
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
_01ffe874:
|
|
adds r1, r6, fp
|
|
beq _01ffe8bc
|
|
ldr r0, _01ffe900 ; =data_ov00_020db008
|
|
mov r1, r1, lsl #0x1
|
|
ldrh r1, [r0, r1]
|
|
ldr r3, [sl, #0x48]
|
|
mov r0, #0xc
|
|
mov r1, r1, lsl #0x1
|
|
ldrh r2, [sl, r1]
|
|
ldr r3, [r3, #8]
|
|
mov r1, sb
|
|
mla r0, r2, r0, r3
|
|
bl func_01ff9ec0
|
|
cmp r0, r8
|
|
movge r0, #0
|
|
blt _01ffe8c8
|
|
add sp, sp, #0x2c
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
_01ffe8bc:
|
|
add sp, sp, #0x2c
|
|
mov r0, #0
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
_01ffe8c8:
|
|
smull r2, r1, r0, r0
|
|
adds r2, r2, #0x800
|
|
adc r0, r1, #0
|
|
mov r1, r2, lsr #0xc
|
|
orr r1, r1, r0, lsl #20
|
|
add r0, r4, r1
|
|
bl func_01ff9958
|
|
ldr r1, [sb, #0xc]
|
|
sub r1, r1, r0
|
|
ldr r0, [sp]
|
|
str r1, [r0]
|
|
mov r0, #1
|
|
add sp, sp, #0x2c
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
arm_func_end func_01ffe668
|
|
_01ffe900: .word data_ov00_020db008
|
|
|
|
.global func_01ffe904
|
|
arm_func_start func_01ffe904
|
|
func_01ffe904: ; 0x01ffe904
|
|
stmdb sp!, {r4, r5, r6, r7, lr}
|
|
sub sp, sp, #0xc
|
|
mov r7, r0
|
|
add r0, r7, #8
|
|
mov r6, r1
|
|
mov r5, r2
|
|
mov r4, r3
|
|
bl func_01ffe61c
|
|
cmp r0, #0
|
|
addeq sp, sp, #0xc
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r4, r5, r6, r7, pc}
|
|
ldr r3, [r4]
|
|
cmp r3, #0
|
|
blt _01ffe948
|
|
cmp r3, #0x1000
|
|
ble _01ffe954
|
|
_01ffe948:
|
|
add sp, sp, #0xc
|
|
mov r0, #0
|
|
ldmia sp!, {r4, r5, r6, r7, pc}
|
|
_01ffe954:
|
|
ldr r0, [r5]
|
|
ldr r2, [r6]
|
|
smull r1, r0, r3, r0
|
|
adds r1, r1, #0x800
|
|
adc r0, r0, #0
|
|
mov r1, r1, lsr #0xc
|
|
orr r1, r1, r0, lsl #20
|
|
add r0, r2, r1
|
|
str r0, [sp]
|
|
ldr r1, [r4]
|
|
ldr r0, [r5, #4]
|
|
ldr r3, [r6, #4]
|
|
smull r2, r0, r1, r0
|
|
adds r1, r2, #0x800
|
|
adc r0, r0, #0
|
|
mov r1, r1, lsr #0xc
|
|
orr r1, r1, r0, lsl #20
|
|
add r0, r3, r1
|
|
str r0, [sp, #4]
|
|
ldr r1, [r4]
|
|
ldr r0, [r5, #8]
|
|
ldr r3, [r6, #8]
|
|
smull r2, r0, r1, r0
|
|
adds r1, r2, #0x800
|
|
adc r0, r0, #0
|
|
mov r1, r1, lsr #0xc
|
|
orr r1, r1, r0, lsl #20
|
|
add r0, r3, r1
|
|
str r0, [sp, #8]
|
|
add r6, r7, #0x18
|
|
mov r5, #0
|
|
add r4, sp, #0
|
|
_01ffe9d4:
|
|
mov r0, r6
|
|
mov r1, r4
|
|
bl func_01ff9c2c
|
|
add r1, r7, r5, lsl #4
|
|
ldr r1, [r1, #0x24]
|
|
sub r0, r0, r1
|
|
cmp r0, #4
|
|
addgt sp, sp, #0xc
|
|
movgt r0, #0
|
|
ldmgtia sp!, {r4, r5, r6, r7, pc}
|
|
add r5, r5, #1
|
|
cmp r5, #3
|
|
add r6, r6, #0x10
|
|
blt _01ffe9d4
|
|
mov r0, #1
|
|
add sp, sp, #0xc
|
|
ldmia sp!, {r4, r5, r6, r7, pc}
|
|
arm_func_end func_01ffe904
|
|
|
|
.global func_01ffea18
|
|
arm_func_start func_01ffea18
|
|
func_01ffea18: ; 0x01ffea18
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
sub sp, sp, #0x18
|
|
ldr r8, [sp, #0x38]
|
|
mov r7, r0
|
|
mov r4, r3
|
|
mov r3, r8
|
|
add r0, r7, #8
|
|
mov r6, r1
|
|
mov r5, r2
|
|
bl func_01ffe61c
|
|
cmp r0, #0
|
|
addeq sp, sp, #0x18
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
mov r1, r6
|
|
add r0, r7, #8
|
|
bl func_01ff9c2c
|
|
ldr r1, [r7, #0x14]
|
|
subs r0, r0, r1
|
|
addmi sp, sp, #0x18
|
|
movmi r0, #0
|
|
ldmmiia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
mov r1, r5
|
|
add r0, r7, #8
|
|
bl func_01ff9c2c
|
|
mov r1, r0
|
|
ldr r0, [r6, #0xc]
|
|
rsb r1, r1, #0
|
|
bl func_01ff98e0
|
|
ldr r3, [r8]
|
|
rsb r1, r0, #0
|
|
cmp r3, r1
|
|
blt _01ffeaa8
|
|
add r0, r0, #0x1000
|
|
cmp r3, r0
|
|
ble _01ffeab4
|
|
_01ffeaa8:
|
|
add sp, sp, #0x18
|
|
mov r0, #0
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
_01ffeab4:
|
|
ldr r0, [r5]
|
|
ldr r2, [r6]
|
|
smull r1, r0, r3, r0
|
|
adds r1, r1, #0x800
|
|
adc r0, r0, #0
|
|
mov r1, r1, lsr #0xc
|
|
orr r1, r1, r0, lsl #20
|
|
add r0, r2, r1
|
|
str r0, [sp, #0xc]
|
|
ldr r1, [r8]
|
|
ldr r0, [r5, #4]
|
|
ldr r3, [r6, #4]
|
|
smull r2, r0, r1, r0
|
|
adds r1, r2, #0x800
|
|
adc r0, r0, #0
|
|
mov r1, r1, lsr #0xc
|
|
orr r1, r1, r0, lsl #20
|
|
add r0, r3, r1
|
|
str r0, [sp, #0x10]
|
|
ldr r1, [r8]
|
|
ldr r0, [r5, #8]
|
|
ldr r3, [r6, #8]
|
|
smull r2, r0, r1, r0
|
|
adds r1, r2, #0x800
|
|
adc r0, r0, #0
|
|
mov r1, r1, lsr #0xc
|
|
orr r1, r1, r0, lsl #20
|
|
add r0, r3, r1
|
|
str r0, [sp, #0x14]
|
|
add r1, sp, #0xc
|
|
add r0, r7, #8
|
|
bl func_01ff9c2c
|
|
ldr r2, [r7, #0x14]
|
|
ldr r1, [r6, #0xc]
|
|
sub r0, r0, r2
|
|
cmp r0, r1
|
|
addgt sp, sp, #0x18
|
|
movgt r0, #0
|
|
ldmgtia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
add sl, r7, #0x18
|
|
mov sb, #0
|
|
add r8, sp, #0xc
|
|
_01ffeb5c:
|
|
mov r0, sl
|
|
mov r1, r8
|
|
bl func_01ff9c2c
|
|
add r1, r7, sb, lsl #4
|
|
ldr r2, [r1, #0x24]
|
|
ldr r1, [r6, #0xc]
|
|
sub r0, r0, r2
|
|
cmp r0, r1
|
|
addge sp, sp, #0x18
|
|
movge r0, #0
|
|
ldmgeia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
add sb, sb, #1
|
|
cmp sb, #3
|
|
add sl, sl, #0x10
|
|
blt _01ffeb5c
|
|
add r3, sp, #0
|
|
ldmia r6, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
mov r0, r3
|
|
mov r1, r5
|
|
mov r2, r3
|
|
bl func_01ff9bc4
|
|
add r1, sp, #0
|
|
add r0, r7, #8
|
|
bl func_01ff9c2c
|
|
ldr r1, [r7, #0x14]
|
|
ldr r2, [r6, #0xc]
|
|
sub r0, r0, r1
|
|
sub r0, r2, r0
|
|
str r0, [r4]
|
|
mov r0, #1
|
|
add sp, sp, #0x18
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
arm_func_end func_01ffea18
|
|
|
|
.global func_01ffebe0
|
|
arm_func_start func_01ffebe0
|
|
func_01ffebe0: ; 0x01ffebe0
|
|
stmdb sp!, {r3, r4, lr}
|
|
sub sp, sp, #0xc
|
|
ldr r2, [r1]
|
|
str r2, [sp]
|
|
ldr r2, [r1, #4]
|
|
str r2, [sp, #4]
|
|
ldr r2, [r1, #8]
|
|
add r1, sp, #0
|
|
str r2, [sp, #8]
|
|
ldr r4, [r0, #0xc]
|
|
bl func_01fffb80
|
|
smull r2, r1, r4, r4
|
|
adds r2, r2, #0x800
|
|
adc r1, r1, #0
|
|
mov r2, r2, lsr #0xc
|
|
orr r2, r2, r1, lsl #20
|
|
cmp r0, r2
|
|
mov r0, #0
|
|
movle r0, #1
|
|
add sp, sp, #0xc
|
|
ldmia sp!, {r3, r4, pc}
|
|
arm_func_end func_01ffebe0
|
|
|
|
.global func_01ffec34
|
|
arm_func_start func_01ffec34
|
|
func_01ffec34: ; 0x01ffec34
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
mov r4, r1
|
|
bl func_01fffb80
|
|
ldr r2, [r5, #0xc]
|
|
ldr r1, [r4, #0xc]
|
|
mov ip, #0
|
|
add r3, r2, r1
|
|
smull r2, r1, r3, r3
|
|
adds r2, r2, #0x800
|
|
adc r1, r1, #0
|
|
mov r2, r2, lsr #0xc
|
|
orr r2, r2, r1, lsl #20
|
|
cmp r0, r2
|
|
movle ip, #1
|
|
mov r0, ip
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end func_01ffec34
|
|
|
|
.global func_01ffec78
|
|
arm_func_start func_01ffec78
|
|
func_01ffec78: ; 0x01ffec78
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x38
|
|
cmp r1, #0
|
|
mov sl, r0
|
|
addne sp, sp, #0x38
|
|
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
add r0, sl, #0x44
|
|
bl func_ov00_020951d4
|
|
ldr r0, [sl, #0x3c]
|
|
mov fp, #0
|
|
cmp r0, #0
|
|
addls sp, sp, #0x38
|
|
ldmlsia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
_01ffecac:
|
|
ldr r0, [sl, #0x40]
|
|
ldr r0, [r0, fp, lsl #2]
|
|
cmp r0, #0
|
|
beq _01ffeddc
|
|
ldr r2, [r0]
|
|
add r1, sp, #0x2c
|
|
ldr r2, [r2, #0x3c]
|
|
blx r2
|
|
ldr r2, [sp, #0x2c]
|
|
ldr r1, [sp, #0x30]
|
|
ldr r0, [sp, #0x34]
|
|
str r2, [sp, #0x20]
|
|
str r1, [sp, #0x24]
|
|
str r0, [sp, #0x28]
|
|
ldr r0, [sl, #0x40]
|
|
ldr r0, [r0, fp, lsl #2]
|
|
ldr r1, [r0]
|
|
ldr r1, [r1, #0x40]
|
|
blx r1
|
|
mov r1, r0, asr #0x1f
|
|
mov r2, r1, lsl #0xc
|
|
mov r1, #0x800
|
|
adds r3, r1, r0, lsl #12
|
|
orr r2, r2, r0, lsr #20
|
|
add r0, sp, #0x2c
|
|
adc r1, r2, #0
|
|
mov r4, r3, lsr #0xc
|
|
orr r4, r4, r1, lsl #20
|
|
add r1, sp, #0x14
|
|
mov r2, r0
|
|
str r4, [sp, #0x14]
|
|
str r4, [sp, #0x18]
|
|
str r4, [sp, #0x1c]
|
|
bl func_01ff9bf8
|
|
add r0, sp, #0x20
|
|
add r1, sp, #8
|
|
mov r2, r0
|
|
str r4, [sp, #8]
|
|
str r4, [sp, #0xc]
|
|
str r4, [sp, #0x10]
|
|
bl func_01ff9bc4
|
|
add r0, sp, #4
|
|
add r1, sl, #0x44
|
|
add r2, sp, #0x2c
|
|
bl func_ov00_02095278
|
|
add r0, sp, #0
|
|
add r1, sl, #0x44
|
|
add r2, sp, #0x20
|
|
ldrh r6, [sp, #4]
|
|
ldrh r7, [sp, #6]
|
|
bl func_ov00_02095278
|
|
ldrh r0, [sp]
|
|
ldrh r8, [sp]
|
|
ldrh sb, [sp, #2]
|
|
cmp r6, r0
|
|
bhi _01ffeddc
|
|
mov r0, fp, lsl #0x10
|
|
mov r4, r0, lsr #0x10
|
|
_01ffed94:
|
|
mov r5, r7
|
|
cmp r7, sb
|
|
bhi _01ffedc8
|
|
_01ffeda0:
|
|
mov r1, r6
|
|
mov r2, r5
|
|
mov r3, r4
|
|
add r0, sl, #0x44
|
|
bl func_ov00_02095224
|
|
add r0, r5, #1
|
|
mov r0, r0, lsl #0x10
|
|
cmp sb, r0, lsr #16
|
|
mov r5, r0, lsr #0x10
|
|
bhs _01ffeda0
|
|
_01ffedc8:
|
|
add r0, r6, #1
|
|
mov r0, r0, lsl #0x10
|
|
cmp r8, r0, lsr #16
|
|
mov r6, r0, lsr #0x10
|
|
bhs _01ffed94
|
|
_01ffeddc:
|
|
ldr r0, [sl, #0x3c]
|
|
add fp, fp, #1
|
|
cmp fp, r0
|
|
blo _01ffecac
|
|
add sp, sp, #0x38
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
arm_func_end func_01ffec78
|
|
|
|
.global func_01ffedf4
|
|
arm_func_start func_01ffedf4
|
|
func_01ffedf4: ; 0x01ffedf4
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x30
|
|
mov sl, r0
|
|
mov r4, r1
|
|
mov fp, r3
|
|
ldr r3, [sp, #0x58]
|
|
mov r5, r2
|
|
add r0, sp, #0x2c
|
|
mov r2, r4
|
|
add r1, sl, #0x24
|
|
str r3, [sp, #0x58]
|
|
ldr sb, [sp, #0x5c]
|
|
bl func_ov00_02095278
|
|
add r0, sp, #0x28
|
|
add r1, sl, #0x24
|
|
add r2, r4, #0xc
|
|
bl func_ov00_02095278
|
|
ldrh r0, [sp, #0x2c]
|
|
mov r4, #0
|
|
str r4, [sp, #0x24]
|
|
str r0, [sp, #4]
|
|
ldrh r1, [sp, #0x28]
|
|
mov r0, r0
|
|
cmp r0, r1
|
|
bhi _01fff078
|
|
and r0, r5, #2
|
|
str r0, [sp, #0x14]
|
|
and r0, r5, #0x10
|
|
str r0, [sp, #0x10]
|
|
and r0, r5, #0x20
|
|
str r0, [sp, #0xc]
|
|
and r0, r5, #0x40
|
|
and r8, r5, #1
|
|
str r0, [sp, #8]
|
|
_01ffee7c:
|
|
ldrh r0, [sp, #0x2e]
|
|
str r0, [sp, #0x18]
|
|
ldrh r1, [sp, #0x2a]
|
|
mov r0, r0
|
|
cmp r0, r1
|
|
bhi _01fff058
|
|
_01ffee94:
|
|
ldr r0, [sp, #4]
|
|
add r1, sp, #0x20
|
|
strh r0, [sp, #0x20]
|
|
ldr r0, [sp, #0x18]
|
|
strh r0, [sp, #0x22]
|
|
add r0, sl, #0x24
|
|
bl func_ov00_02095258
|
|
mov r7, r0
|
|
ldr r0, [r7, #4]
|
|
mov r6, #0
|
|
cmp r0, #0
|
|
bls _01fff038
|
|
_01ffeec4:
|
|
ldr r0, [sp, #0x58]
|
|
cmp r4, r0
|
|
addhs sp, sp, #0x30
|
|
mvnhs r0, #0
|
|
ldmhsia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
ldr r1, [r7, #8]
|
|
mov r0, r6, lsl #0x1
|
|
ldrh r5, [r1, r0]
|
|
mov r0, sl
|
|
mov r2, fp
|
|
mov r1, r5
|
|
mov r3, r4
|
|
bl func_01fff48c
|
|
cmp r0, #0
|
|
bne _01fff020
|
|
mov r0, #0x4c
|
|
mul r0, r5, r0
|
|
str r0, [sp]
|
|
ldr r2, [sl, #0x20]
|
|
ldr r1, [sp]
|
|
add r0, sp, #0x1c
|
|
add r1, r2, r1
|
|
bl func_ov00_0208e4f8
|
|
ldr r2, [sp, #0x1c]
|
|
ldr r1, [sl, #0x20]
|
|
ldr r0, [sp]
|
|
str r2, [sp, #0x24]
|
|
add r0, r1, r0
|
|
ldr r0, [r0, #0xc]
|
|
cmp r0, #0
|
|
beq _01ffef50
|
|
ldr r0, [sp, #0x14]
|
|
cmp r0, #0
|
|
beq _01fff020
|
|
b _01ffefac
|
|
_01ffef50:
|
|
cmp r8, #0
|
|
beq _01fff020
|
|
ands r0, r2, #0x1f
|
|
beq _01ffef74
|
|
cmp r0, #1
|
|
beq _01ffef84
|
|
cmp r0, #2
|
|
beq _01ffef94
|
|
b _01ffefa4
|
|
_01ffef74:
|
|
ldr r0, [sp, #0x10]
|
|
cmp r0, #0
|
|
beq _01fff020
|
|
b _01ffefac
|
|
_01ffef84:
|
|
ldr r0, [sp, #0xc]
|
|
cmp r0, #0
|
|
beq _01fff020
|
|
b _01ffefac
|
|
_01ffef94:
|
|
ldr r0, [sp, #8]
|
|
cmp r0, #0
|
|
beq _01fff020
|
|
b _01ffefac
|
|
_01ffefa4:
|
|
cmp r8, #0
|
|
beq _01fff020
|
|
_01ffefac:
|
|
ldr r1, [sp, #0x24]
|
|
mov r0, r1
|
|
mov r0, r0, lsr #0xd
|
|
and r0, r0, #3
|
|
cmp r0, #1
|
|
beq _01ffefd8
|
|
cmp r0, #2
|
|
beq _01ffefec
|
|
cmp r0, #3
|
|
beq _01fff020
|
|
b _01ffeff8
|
|
_01ffefd8:
|
|
cmp sb, #0
|
|
beq _01ffeff8
|
|
cmp sb, #1
|
|
bne _01fff020
|
|
b _01ffeff8
|
|
_01ffefec:
|
|
cmp sb, #0
|
|
cmpne sb, #1
|
|
beq _01fff020
|
|
_01ffeff8:
|
|
cmp sb, #1
|
|
moveq r0, r1, lsr #0x1b
|
|
andeq r0, r0, #1
|
|
cmpeq r0, #1
|
|
beq _01fff020
|
|
mov r0, r4, lsl #0x1
|
|
strh r5, [fp, r0]
|
|
add r0, r4, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r4, r0, lsr #0x10
|
|
_01fff020:
|
|
add r0, r6, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r6, r0, lsr #0x10
|
|
ldr r1, [r7, #4]
|
|
cmp r1, r0, lsr #16
|
|
bhi _01ffeec4
|
|
_01fff038:
|
|
ldr r0, [sp, #0x18]
|
|
add r0, r0, #1
|
|
mov r1, r0, lsl #0x10
|
|
mov r0, r1, lsr #0x10
|
|
str r0, [sp, #0x18]
|
|
ldrh r0, [sp, #0x2a]
|
|
cmp r0, r1, lsr #16
|
|
bhs _01ffee94
|
|
_01fff058:
|
|
ldr r0, [sp, #4]
|
|
ldrh r1, [sp, #0x28]
|
|
add r0, r0, #1
|
|
mov r0, r0, lsl #0x10
|
|
cmp r1, r0, lsr #16
|
|
mov r0, r0, lsr #0x10
|
|
str r0, [sp, #4]
|
|
bhs _01ffee7c
|
|
_01fff078:
|
|
mov r0, r4
|
|
add sp, sp, #0x30
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
arm_func_end func_01ffedf4
|
|
|
|
.global func_01fff084
|
|
arm_func_start func_01fff084
|
|
func_01fff084: ; 0x01fff084
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x20
|
|
mov sl, r0
|
|
mov fp, r3
|
|
ldr r3, [sp, #0x48]
|
|
mov r5, r2
|
|
mov r2, r1
|
|
add r0, sp, #0x1c
|
|
add r1, sl, #0x24
|
|
str r3, [sp, #0x48]
|
|
ldr sb, [sp, #0x4c]
|
|
bl func_ov00_02095278
|
|
mov r4, #0
|
|
add r1, sp, #0x1c
|
|
add r0, sl, #0x24
|
|
str r4, [sp, #0x18]
|
|
bl func_ov00_02095258
|
|
mov r7, r0
|
|
ldr r0, [r7, #4]
|
|
mov r6, r4
|
|
cmp r0, #0
|
|
bls _01fff258
|
|
and r0, r5, #2
|
|
str r0, [sp, #0x10]
|
|
and r0, r5, #0x10
|
|
str r0, [sp, #0xc]
|
|
and r0, r5, #0x20
|
|
str r0, [sp, #8]
|
|
and r0, r5, #0x40
|
|
and r8, r5, #1
|
|
str r0, [sp, #4]
|
|
_01fff100:
|
|
ldr r0, [sp, #0x48]
|
|
cmp r4, r0
|
|
addhs sp, sp, #0x20
|
|
mvnhs r0, #0
|
|
ldmhsia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
ldr r1, [r7, #8]
|
|
mov r0, r6, lsl #0x1
|
|
ldrh r5, [r1, r0]
|
|
mov r0, sl
|
|
mov r2, fp
|
|
mov r1, r5
|
|
mov r3, r4
|
|
bl func_01fff48c
|
|
cmp r0, #0
|
|
bne _01fff240
|
|
mov r0, #0x4c
|
|
mul r0, r5, r0
|
|
str r0, [sp]
|
|
ldr r2, [sl, #0x20]
|
|
ldr r1, [sp]
|
|
add r0, sp, #0x14
|
|
add r1, r2, r1
|
|
bl func_ov00_0208e4f8
|
|
ldr r2, [sp, #0x14]
|
|
ldr r1, [sl, #0x20]
|
|
ldr r0, [sp]
|
|
str r2, [sp, #0x18]
|
|
add r0, r1, r0
|
|
ldr r0, [r0, #0xc]
|
|
cmp r0, #0
|
|
beq _01fff18c
|
|
ldr r0, [sp, #0x10]
|
|
cmp r0, #0
|
|
bne _01fff1e8
|
|
b _01fff240
|
|
_01fff18c:
|
|
cmp r8, #0
|
|
beq _01fff240
|
|
ands r0, r2, #0x1f
|
|
beq _01fff1b0
|
|
cmp r0, #1
|
|
beq _01fff1c0
|
|
cmp r0, #2
|
|
beq _01fff1d0
|
|
b _01fff1e0
|
|
_01fff1b0:
|
|
ldr r0, [sp, #0xc]
|
|
cmp r0, #0
|
|
bne _01fff1e8
|
|
b _01fff240
|
|
_01fff1c0:
|
|
ldr r0, [sp, #8]
|
|
cmp r0, #0
|
|
bne _01fff1e8
|
|
b _01fff240
|
|
_01fff1d0:
|
|
ldr r0, [sp, #4]
|
|
cmp r0, #0
|
|
bne _01fff1e8
|
|
b _01fff240
|
|
_01fff1e0:
|
|
cmp r8, #0
|
|
beq _01fff240
|
|
_01fff1e8:
|
|
ldr r0, [sp, #0x18]
|
|
mov r0, r0, lsr #0xd
|
|
and r0, r0, #3
|
|
cmp r0, #1
|
|
beq _01fff210
|
|
cmp r0, #2
|
|
beq _01fff220
|
|
cmp r0, #3
|
|
beq _01fff240
|
|
b _01fff22c
|
|
_01fff210:
|
|
cmp sb, #0
|
|
cmpne sb, #1
|
|
beq _01fff22c
|
|
b _01fff240
|
|
_01fff220:
|
|
cmp sb, #0
|
|
cmpne sb, #1
|
|
beq _01fff240
|
|
_01fff22c:
|
|
mov r0, r4, lsl #0x1
|
|
strh r5, [fp, r0]
|
|
add r0, r4, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r4, r0, lsr #0x10
|
|
_01fff240:
|
|
add r0, r6, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r6, r0, lsr #0x10
|
|
ldr r1, [r7, #4]
|
|
cmp r1, r0, lsr #16
|
|
bhi _01fff100
|
|
_01fff258:
|
|
mov r0, r4
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
arm_func_end func_01fff084
|
|
|
|
.global func_01fff264
|
|
arm_func_start func_01fff264
|
|
func_01fff264: ; 0x01fff264
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x24
|
|
mov sl, r0
|
|
mov r6, r1
|
|
mov r5, r2
|
|
add r0, sp, #0x20
|
|
mov r2, r6
|
|
add r1, sl, #0x44
|
|
mov sb, r3
|
|
ldr fp, [sp, #0x48]
|
|
ldr r8, [sp, #0x4c]
|
|
mov r4, #0
|
|
bl func_ov00_02095278
|
|
add r0, sp, #0x1c
|
|
add r2, r6, #0xc
|
|
add r1, sl, #0x44
|
|
bl func_ov00_02095278
|
|
ldrh r0, [sp, #0x20]
|
|
mov r1, r4
|
|
str r1, [sp, #0x18]
|
|
str r0, [sp]
|
|
ldrh r1, [sp, #0x1c]
|
|
mov r0, r0
|
|
cmp r0, r1
|
|
bhi _01fff480
|
|
and r0, r5, #0x10
|
|
str r0, [sp, #0xc]
|
|
and r0, r5, #0x20
|
|
str r0, [sp, #8]
|
|
and r0, r5, #0x40
|
|
str r0, [sp, #4]
|
|
_01fff2e0:
|
|
ldrh r0, [sp, #0x22]
|
|
str r0, [sp, #0x10]
|
|
ldrh r1, [sp, #0x1e]
|
|
mov r0, r0
|
|
cmp r0, r1
|
|
bhi _01fff460
|
|
_01fff2f8:
|
|
ldr r2, [sp]
|
|
add r1, sp, #0x14
|
|
strh r2, [sp, #0x14]
|
|
ldr r2, [sp, #0x10]
|
|
add r0, sl, #0x44
|
|
strh r2, [sp, #0x16]
|
|
bl func_ov00_02095258
|
|
mov r6, r0
|
|
ldr r0, [r6, #4]
|
|
mov r5, #0
|
|
cmp r0, #0
|
|
bls _01fff440
|
|
_01fff328:
|
|
cmp r4, fp
|
|
addhs sp, sp, #0x24
|
|
mvnhs r0, #0
|
|
ldmhsia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
ldr r1, [r6, #8]
|
|
mov r0, r5, lsl #0x1
|
|
ldrh r7, [r1, r0]
|
|
ldr r0, [sl, #0x40]
|
|
ldr r0, [r0, r7, lsl #2]
|
|
cmp r0, #0
|
|
beq _01fff430
|
|
mov r0, sl
|
|
mov r1, r7
|
|
mov r2, sb
|
|
mov r3, r4
|
|
bl func_01fff48c
|
|
cmp r0, #0
|
|
bne _01fff430
|
|
ldr r0, [sl, #0x40]
|
|
ldr r0, [r0, r7, lsl #2]
|
|
ldr r0, [r0, #0xc]
|
|
str r0, [sp, #0x18]
|
|
ands r1, r0, #0x1f
|
|
beq _01fff39c
|
|
cmp r1, #1
|
|
beq _01fff3ac
|
|
cmp r1, #2
|
|
beq _01fff3bc
|
|
b _01fff3c8
|
|
_01fff39c:
|
|
ldr r1, [sp, #0xc]
|
|
cmp r1, #0
|
|
bne _01fff3c8
|
|
b _01fff430
|
|
_01fff3ac:
|
|
ldr r1, [sp, #8]
|
|
cmp r1, #0
|
|
bne _01fff3c8
|
|
b _01fff430
|
|
_01fff3bc:
|
|
ldr r1, [sp, #4]
|
|
cmp r1, #0
|
|
beq _01fff430
|
|
_01fff3c8:
|
|
mov r1, r0, lsr #0xd
|
|
and r1, r1, #3
|
|
cmp r1, #1
|
|
beq _01fff3ec
|
|
cmp r1, #2
|
|
beq _01fff3fc
|
|
cmp r1, #3
|
|
beq _01fff430
|
|
b _01fff408
|
|
_01fff3ec:
|
|
cmp r8, #0
|
|
cmpne r8, #1
|
|
beq _01fff408
|
|
b _01fff430
|
|
_01fff3fc:
|
|
cmp r8, #0
|
|
cmpne r8, #1
|
|
beq _01fff430
|
|
_01fff408:
|
|
cmp r8, #1
|
|
moveq r0, r0, lsr #0x1b
|
|
andeq r0, r0, #1
|
|
cmpeq r0, #1
|
|
beq _01fff430
|
|
mov r0, r4, lsl #0x1
|
|
strh r7, [sb, r0]
|
|
add r0, r4, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r4, r0, lsr #0x10
|
|
_01fff430:
|
|
add r5, r5, #1
|
|
ldr r0, [r6, #4]
|
|
cmp r5, r0
|
|
blo _01fff328
|
|
_01fff440:
|
|
ldr r0, [sp, #0x10]
|
|
ldrh r1, [sp, #0x1e]
|
|
add r0, r0, #1
|
|
mov r0, r0, lsl #0x10
|
|
cmp r1, r0, lsr #16
|
|
mov r0, r0, lsr #0x10
|
|
str r0, [sp, #0x10]
|
|
bhs _01fff2f8
|
|
_01fff460:
|
|
ldr r0, [sp]
|
|
ldrh r1, [sp, #0x1c]
|
|
add r0, r0, #1
|
|
mov r0, r0, lsl #0x10
|
|
cmp r1, r0, lsr #16
|
|
mov r0, r0, lsr #0x10
|
|
str r0, [sp]
|
|
bhs _01fff2e0
|
|
_01fff480:
|
|
mov r0, r4
|
|
add sp, sp, #0x24
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
arm_func_end func_01fff264
|
|
|
|
.global func_01fff48c
|
|
arm_func_start func_01fff48c
|
|
func_01fff48c: ; 0x01fff48c
|
|
cmp r3, #0
|
|
mov ip, #0
|
|
bls _01fff4c0
|
|
_01fff498:
|
|
mov r0, ip, lsl #0x1
|
|
ldrh r0, [r2, r0]
|
|
cmp r1, r0
|
|
moveq r0, #1
|
|
bxeq lr
|
|
add r0, ip, #1
|
|
mov r0, r0, lsl #0x10
|
|
cmp r3, r0, lsr #16
|
|
mov ip, r0, lsr #0x10
|
|
bhi _01fff498
|
|
_01fff4c0:
|
|
mov r0, #0
|
|
bx lr
|
|
arm_func_end func_01fff48c
|
|
|
|
.global func_01fff4c8
|
|
arm_func_start func_01fff4c8
|
|
func_01fff4c8: ; 0x01fff4c8
|
|
stmdb sp!, {r3, lr}
|
|
ldr r2, [r0, #0x3c]
|
|
mov ip, #0
|
|
cmp r2, #0
|
|
bls _01fff508
|
|
ldr lr, [r0, #0x40]
|
|
_01fff4e0:
|
|
ldr r2, [lr, ip, lsl #2]
|
|
cmp r2, r1
|
|
moveq r0, #1
|
|
ldmeqia sp!, {r3, pc}
|
|
add r2, ip, #1
|
|
mov r2, r2, lsl #0x10
|
|
ldr r3, [r0, #0x3c]
|
|
mov ip, r2, lsr #0x10
|
|
cmp r3, r2, lsr #16
|
|
bhi _01fff4e0
|
|
_01fff508:
|
|
mov r0, #0
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end func_01fff4c8
|
|
|
|
.global func_01fff510
|
|
arm_func_start func_01fff510
|
|
func_01fff510: ; 0x01fff510
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x14c
|
|
add r6, sp, #0xe8
|
|
mov sb, r2
|
|
mov sl, r0
|
|
mov r4, r1
|
|
ldmia sb, {r0, r1, r2}
|
|
stmia r6, {r0, r1, r2}
|
|
str r3, [sp, #4]
|
|
ldmia sb, {r0, r1, r2}
|
|
add r5, sp, #0xf4
|
|
stmia r5, {r0, r1, r2}
|
|
add r3, sp, #0xb8
|
|
ldmia r4, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
mov r0, r6
|
|
mov r1, r3
|
|
ldr r8, [sp, #0x170]
|
|
ldr r7, [sp, #0x178]
|
|
bl func_ov00_0208ed74
|
|
ldr r1, [sp, #4]
|
|
mov r0, r6
|
|
bl func_ov00_0208ee00
|
|
ldr r1, _01fffb44 ; =func_ov00_0207e968
|
|
ldr r3, _01fffb48 ; =func_ov00_0207e96c
|
|
str r1, [sp]
|
|
add r0, sp, #0x118
|
|
mov r1, #3
|
|
mov r2, #0x10
|
|
bl func_0204f614
|
|
ldmia r4, {r0, r1, r2}
|
|
add r5, sp, #0xdc
|
|
stmia r5, {r0, r1, r2}
|
|
add r3, sp, #0xd0
|
|
ldmia sb, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
mov r0, r5
|
|
mov r1, r3
|
|
add r2, sp, #0xc4
|
|
bl func_01ff9bf8
|
|
add r0, sp, #0x160
|
|
ldrh r0, [r0, #0x14]
|
|
str r0, [sp, #8]
|
|
ands fp, r0, #1
|
|
bne _01fff5d4
|
|
tst r0, #0x10
|
|
bne _01fff5d4
|
|
tst r0, #0x40
|
|
beq _01fff898
|
|
_01fff5d4:
|
|
add r0, sp, #0x60
|
|
add r2, sp, #0xe8
|
|
add r1, sl, #0x24
|
|
bl func_ov00_02095278
|
|
add r0, sp, #0x5c
|
|
add r2, sp, #0xf4
|
|
add r1, sl, #0x24
|
|
bl func_ov00_02095278
|
|
ldrh r0, [sp, #0x60]
|
|
mov r2, #0
|
|
str r2, [sp, #0x58]
|
|
str r0, [sp, #0xc]
|
|
ldrh r1, [sp, #0x5c]
|
|
mov r0, r0
|
|
cmp r0, r1
|
|
bhi _01fff898
|
|
ldr r0, [sp, #8]
|
|
and r0, r0, #2
|
|
str r0, [sp, #0x1c]
|
|
ldr r0, [sp, #8]
|
|
and r0, r0, #0x10
|
|
str r0, [sp, #0x18]
|
|
ldr r0, [sp, #8]
|
|
and r0, r0, #0x20
|
|
str r0, [sp, #0x14]
|
|
ldr r0, [sp, #8]
|
|
and r0, r0, #0x40
|
|
str r0, [sp, #0x10]
|
|
_01fff644:
|
|
ldrh r0, [sp, #0x62]
|
|
str r0, [sp, #0x38]
|
|
ldrh r1, [sp, #0x5e]
|
|
mov r0, r0
|
|
cmp r0, r1
|
|
bhi _01fff878
|
|
_01fff65c:
|
|
ldr r0, [sp, #0xc]
|
|
add r1, sp, #0x48
|
|
strh r0, [sp, #0x48]
|
|
ldr r0, [sp, #0x38]
|
|
strh r0, [sp, #0x4a]
|
|
add r0, sl, #0x24
|
|
bl func_ov00_02095258
|
|
mov r5, r0
|
|
ldr r0, [r5, #4]
|
|
mov r4, #0
|
|
cmp r0, #0
|
|
bls _01fff858
|
|
_01fff68c:
|
|
ldr r1, [r5, #8]
|
|
mov r0, r4, lsl #0x1
|
|
ldrh r0, [r1, r0]
|
|
mov r1, #0x4c
|
|
str r0, [sp, #0x3c]
|
|
ldr r2, [sp, #0x3c]
|
|
ldr r3, [sl, #0x20]
|
|
mul r6, r2, r1
|
|
add r0, sp, #0x44
|
|
add r1, r3, r6
|
|
bl func_ov00_0208e4f8
|
|
ldr r0, [sl, #0x20]
|
|
ldr r1, [sp, #0x44]
|
|
add r0, r0, r6
|
|
ldr r0, [r0, #0xc]
|
|
str r1, [sp, #0x58]
|
|
cmp r0, #0
|
|
beq _01fff6e4
|
|
ldr r1, [sp, #0x1c]
|
|
cmp r1, #0
|
|
beq _01fff840
|
|
b _01fff740
|
|
_01fff6e4:
|
|
cmp fp, #0
|
|
beq _01fff840
|
|
ands r1, r1, #0x1f
|
|
beq _01fff708
|
|
cmp r1, #1
|
|
beq _01fff718
|
|
cmp r1, #2
|
|
beq _01fff728
|
|
b _01fff738
|
|
_01fff708:
|
|
ldr r1, [sp, #0x18]
|
|
cmp r1, #0
|
|
beq _01fff840
|
|
b _01fff740
|
|
_01fff718:
|
|
ldr r1, [sp, #0x14]
|
|
cmp r1, #0
|
|
beq _01fff840
|
|
b _01fff740
|
|
_01fff728:
|
|
ldr r1, [sp, #0x10]
|
|
cmp r1, #0
|
|
beq _01fff840
|
|
b _01fff740
|
|
_01fff738:
|
|
cmp fp, #0
|
|
beq _01fff840
|
|
_01fff740:
|
|
ldr r1, [sp, #0x58]
|
|
mov r1, r1, lsr #0xd
|
|
and r1, r1, #3
|
|
cmp r1, #1
|
|
beq _01fff768
|
|
cmp r1, #2
|
|
beq _01fff77c
|
|
cmp r1, #3
|
|
beq _01fff840
|
|
b _01fff788
|
|
_01fff768:
|
|
cmp r8, #0
|
|
beq _01fff788
|
|
cmp r8, #1
|
|
bne _01fff840
|
|
b _01fff788
|
|
_01fff77c:
|
|
cmp r8, #0
|
|
cmpne r8, #1
|
|
beq _01fff840
|
|
_01fff788:
|
|
cmp r0, #0
|
|
bne _01fff840
|
|
ldr r0, [sp, #4]
|
|
ldr r1, [sp, #0xd0]
|
|
str r0, [sp, #0xb4]
|
|
ldr r0, [sp, #0xd4]
|
|
str r1, [sp, #0xa8]
|
|
str r0, [sp, #0xac]
|
|
ldr r0, [sp, #0xd8]
|
|
add r1, sp, #0xa8
|
|
str r0, [sp, #0xb0]
|
|
add r0, sp, #0x64
|
|
str r0, [sp]
|
|
ldr r0, [sl, #0x20]
|
|
add r2, sp, #0xc4
|
|
add r0, r0, r6
|
|
add r3, sp, #0x68
|
|
bl func_01ffea18
|
|
cmp r0, #0
|
|
beq _01fff840
|
|
cmp r7, #0
|
|
beq _01fff820
|
|
ldr r0, [sp, #0x3c]
|
|
add r3, sp, #0x9c
|
|
strh r0, [sp, #0x98]
|
|
add r0, sp, #0xd0
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
mov r0, r7
|
|
ldr r2, [r0]
|
|
add r1, sp, #0x98
|
|
ldr r2, [r2, #8]
|
|
blx r2
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
cmp r0, #0
|
|
bne _01fff840
|
|
_01fff820:
|
|
ldr r3, _01fffb44 ; =func_ov00_0207e968
|
|
add r0, sp, #0x118
|
|
mov r1, #3
|
|
mov r2, #0x10
|
|
bl func_0204f754
|
|
add sp, sp, #0x14c
|
|
mov r0, #1
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
_01fff840:
|
|
add r0, r4, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r4, r0, lsr #0x10
|
|
ldr r1, [r5, #4]
|
|
cmp r1, r0, lsr #16
|
|
bhi _01fff68c
|
|
_01fff858:
|
|
ldr r0, [sp, #0x38]
|
|
add r0, r0, #1
|
|
mov r1, r0, lsl #0x10
|
|
mov r0, r1, lsr #0x10
|
|
str r0, [sp, #0x38]
|
|
ldrh r0, [sp, #0x5e]
|
|
cmp r0, r1, lsr #16
|
|
bhs _01fff65c
|
|
_01fff878:
|
|
ldr r0, [sp, #0xc]
|
|
ldrh r1, [sp, #0x5c]
|
|
add r0, r0, #1
|
|
mov r0, r0, lsl #0x10
|
|
cmp r1, r0, lsr #16
|
|
mov r0, r0, lsr #0x10
|
|
str r0, [sp, #0xc]
|
|
bhs _01fff644
|
|
_01fff898:
|
|
ldr r0, [sp, #8]
|
|
tst r0, #8
|
|
beq _01fffb24
|
|
add r0, sp, #0x54
|
|
add r2, sp, #0xe8
|
|
add r1, sl, #0x44
|
|
bl func_ov00_02095278
|
|
add r0, sp, #0x50
|
|
add r2, sp, #0xf4
|
|
add r1, sl, #0x44
|
|
bl func_ov00_02095278
|
|
ldrh r0, [sp, #0x54]
|
|
mov r2, #0
|
|
str r2, [sp, #0x4c]
|
|
str r0, [sp, #0x20]
|
|
ldrh r1, [sp, #0x50]
|
|
mov r0, r0
|
|
cmp r0, r1
|
|
bhi _01fffb24
|
|
ldr r0, [sp, #8]
|
|
and r0, r0, #0x10
|
|
str r0, [sp, #0x2c]
|
|
ldr r0, [sp, #8]
|
|
and r0, r0, #0x20
|
|
str r0, [sp, #0x28]
|
|
ldr r0, [sp, #8]
|
|
and r0, r0, #0x40
|
|
str r0, [sp, #0x24]
|
|
_01fff908:
|
|
ldrh r0, [sp, #0x56]
|
|
str r0, [sp, #0x34]
|
|
ldrh r1, [sp, #0x52]
|
|
mov r0, r0
|
|
cmp r0, r1
|
|
bhi _01fffb04
|
|
_01fff920:
|
|
ldr r0, [sp, #0x20]
|
|
add r1, sp, #0x40
|
|
strh r0, [sp, #0x40]
|
|
ldr r0, [sp, #0x34]
|
|
strh r0, [sp, #0x42]
|
|
add r0, sl, #0x44
|
|
bl func_ov00_02095258
|
|
mov r5, r0
|
|
ldr r0, [r5, #4]
|
|
mov r4, #0
|
|
cmp r0, #0
|
|
bls _01fffae4
|
|
_01fff950:
|
|
ldr r1, [r5, #8]
|
|
mov r0, r4, lsl #0x1
|
|
ldrh r6, [r1, r0]
|
|
ldr r0, [sl, #0x40]
|
|
ldr r0, [r0, r6, lsl #2]
|
|
cmp r0, #0
|
|
beq _01fffad4
|
|
ldr r1, [r0, #0xc]
|
|
str r1, [sp, #0x4c]
|
|
ands r0, r1, #0x1f
|
|
beq _01fff990
|
|
cmp r0, #1
|
|
beq _01fff9a0
|
|
cmp r0, #2
|
|
beq _01fff9b0
|
|
b _01fff9bc
|
|
_01fff990:
|
|
ldr r0, [sp, #0x2c]
|
|
cmp r0, #0
|
|
beq _01fffad4
|
|
b _01fff9bc
|
|
_01fff9a0:
|
|
ldr r0, [sp, #0x28]
|
|
cmp r0, #0
|
|
beq _01fffad4
|
|
b _01fff9bc
|
|
_01fff9b0:
|
|
ldr r0, [sp, #0x24]
|
|
cmp r0, #0
|
|
beq _01fffad4
|
|
_01fff9bc:
|
|
mov r0, r1, lsr #0xd
|
|
and r0, r0, #3
|
|
cmp r0, #1
|
|
beq _01fff9e0
|
|
cmp r0, #2
|
|
beq _01fff9f4
|
|
cmp r0, #3
|
|
beq _01fffad4
|
|
b _01fffa00
|
|
_01fff9e0:
|
|
cmp r8, #0
|
|
beq _01fffa00
|
|
cmp r8, #1
|
|
bne _01fffad4
|
|
b _01fffa00
|
|
_01fff9f4:
|
|
cmp r8, #0
|
|
cmpne r8, #1
|
|
beq _01fffad4
|
|
_01fffa00:
|
|
ldr r0, [sl, #0x40]
|
|
ldr r0, [r0, r6, lsl #2]
|
|
cmp r0, #0
|
|
ldrne r1, [r0, #8]
|
|
strne r1, [sp, #0x30]
|
|
cmpne r1, r8
|
|
beq _01fffad4
|
|
ldr r2, [sb]
|
|
add r1, sp, #0x88
|
|
str r2, [sp, #0x88]
|
|
ldr r3, [sb, #4]
|
|
add r2, sp, #0xc4
|
|
str r3, [sp, #0x8c]
|
|
ldr fp, [sb, #8]
|
|
add r3, sp, #0x64
|
|
str fp, [sp, #0x90]
|
|
ldr fp, [sp, #4]
|
|
str fp, [sp, #0x94]
|
|
ldr fp, [r0]
|
|
ldr fp, [fp, #0x54]
|
|
blx fp
|
|
cmp r0, #0
|
|
beq _01fffad4
|
|
cmp r7, #0
|
|
beq _01fffab4
|
|
mov r0, #0
|
|
strh r6, [sp, #0x6c]
|
|
str r0, [sp, #0x7c]
|
|
str r0, [sp, #0x80]
|
|
str r0, [sp, #0x84]
|
|
add r0, sp, #0x7c
|
|
add r3, sp, #0x70
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
mov r0, r7
|
|
ldr r3, [r0]
|
|
ldr r2, [sp, #0x30]
|
|
ldr r3, [r3, #0x14]
|
|
add r1, sp, #0x6c
|
|
blx r3
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
cmp r0, #0
|
|
bne _01fffad4
|
|
_01fffab4:
|
|
ldr r3, _01fffb44 ; =func_ov00_0207e968
|
|
add r0, sp, #0x118
|
|
mov r1, #3
|
|
mov r2, #0x10
|
|
bl func_0204f754
|
|
add sp, sp, #0x14c
|
|
mov r0, #1
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
_01fffad4:
|
|
add r4, r4, #1
|
|
ldr r0, [r5, #4]
|
|
cmp r4, r0
|
|
blo _01fff950
|
|
_01fffae4:
|
|
ldr r0, [sp, #0x34]
|
|
add r0, r0, #1
|
|
mov r1, r0, lsl #0x10
|
|
mov r0, r1, lsr #0x10
|
|
str r0, [sp, #0x34]
|
|
ldrh r0, [sp, #0x52]
|
|
cmp r0, r1, lsr #16
|
|
bhs _01fff920
|
|
_01fffb04:
|
|
ldr r0, [sp, #0x20]
|
|
ldrh r1, [sp, #0x50]
|
|
add r0, r0, #1
|
|
mov r0, r0, lsl #0x10
|
|
cmp r1, r0, lsr #16
|
|
mov r0, r0, lsr #0x10
|
|
str r0, [sp, #0x20]
|
|
bhs _01fff908
|
|
_01fffb24:
|
|
ldr r3, _01fffb44 ; =func_ov00_0207e968
|
|
add r0, sp, #0x118
|
|
mov r1, #3
|
|
mov r2, #0x10
|
|
bl func_0204f754
|
|
mov r0, #0
|
|
add sp, sp, #0x14c
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
arm_func_end func_01fff510
|
|
_01fffb44: .word func_ov00_0207e968
|
|
_01fffb48: .word func_ov00_0207e96c
|
|
|
|
.global func_01fffb4c
|
|
arm_func_start func_01fffb4c
|
|
func_01fffb4c: ; 0x01fffb4c
|
|
stmdb sp!, {r3, lr}
|
|
ldr r1, [r0]
|
|
cmp r1, #0
|
|
ldreq r1, [r0, #4]
|
|
cmpeq r1, #0
|
|
ldreq r1, [r0, #8]
|
|
cmpeq r1, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
mov r1, r0
|
|
bl func_01ff9d4c
|
|
mov r0, #1
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end func_01fffb4c
|
|
|
|
.global func_01fffb80
|
|
arm_func_start func_01fffb80
|
|
func_01fffb80: ; 0x01fffb80
|
|
stmdb sp!, {r4, lr}
|
|
ldr r2, [r1, #4]
|
|
ldr r3, [r1]
|
|
ldmia r0, {r4, ip}
|
|
sub r2, ip, r2
|
|
sub ip, r4, r3
|
|
ldr r4, [r0, #8]
|
|
ldr r1, [r1, #8]
|
|
smull r0, r3, ip, ip
|
|
sub r4, r4, r1
|
|
smull ip, r1, r4, r4
|
|
adds r4, ip, #0x800
|
|
adc lr, r1, #0
|
|
adds ip, r0, #0x800
|
|
smull r1, r0, r2, r2
|
|
adc r2, r3, #0
|
|
adds r1, r1, #0x800
|
|
mov r3, ip, lsr #0xc
|
|
mov r4, r4, lsr #0xc
|
|
adc r0, r0, #0
|
|
mov r1, r1, lsr #0xc
|
|
orr r3, r3, r2, lsl #20
|
|
orr r1, r1, r0, lsl #20
|
|
orr r4, r4, lr, lsl #20
|
|
add r0, r3, r1
|
|
add r0, r4, r0
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end func_01fffb80
|
|
|
|
.global func_01fffbec
|
|
arm_func_start func_01fffbec
|
|
func_01fffbec: ; 0x01fffbec
|
|
ldr r2, [r0]
|
|
smull ip, r3, r2, r1
|
|
adds ip, ip, #0x800
|
|
adc r2, r3, #0
|
|
mov r3, ip, lsr #0xc
|
|
orr r3, r3, r2, lsl #20
|
|
str r3, [r0]
|
|
ldr r2, [r0, #4]
|
|
smull ip, r3, r2, r1
|
|
adds ip, ip, #0x800
|
|
adc r2, r3, #0
|
|
mov r3, ip, lsr #0xc
|
|
orr r3, r3, r2, lsl #20
|
|
str r3, [r0, #4]
|
|
ldr r2, [r0, #8]
|
|
smull r3, r1, r2, r1
|
|
adds r2, r3, #0x800
|
|
adc r1, r1, #0
|
|
mov r2, r2, lsr #0xc
|
|
orr r2, r2, r1, lsl #20
|
|
str r2, [r0, #8]
|
|
bx lr
|
|
arm_func_end func_01fffbec
|
|
|
|
.global func_01fffc44
|
|
arm_func_start func_01fffc44
|
|
func_01fffc44: ; 0x01fffc44
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
sub sp, sp, #0x18
|
|
mov r6, r0
|
|
mov r0, r2
|
|
add r2, sp, #0xc
|
|
mov r5, r1
|
|
mov r4, r3
|
|
bl func_01ff9bf8
|
|
add r2, sp, #0
|
|
mov r0, r4
|
|
mov r1, r5
|
|
bl func_01ff9bf8
|
|
add r0, sp, #0xc
|
|
add r1, sp, #0
|
|
mov r2, r6
|
|
bl func_01ff9c68
|
|
mov r0, r6
|
|
bl func_01fffb4c
|
|
add sp, sp, #0x18
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end func_01fffc44
|
|
|
|
.global func_01fffc94
|
|
arm_func_start func_01fffc94
|
|
func_01fffc94: ; 0x01fffc94
|
|
stmdb sp!, {r3, r4, r5, r6, lr}
|
|
sub sp, sp, #0xc
|
|
add r2, sp, #0
|
|
mov r6, r0
|
|
mov r5, r1
|
|
bl func_01ff9c68
|
|
add r0, sp, #0
|
|
bl func_01ff9cec
|
|
mov r4, r0
|
|
mov r0, r6
|
|
mov r1, r5
|
|
bl func_01ff9c2c
|
|
mov r1, r0
|
|
mov r0, r4
|
|
bl func_01ff9f3c
|
|
add sp, sp, #0xc
|
|
ldmia sp!, {r3, r4, r5, r6, pc}
|
|
arm_func_end func_01fffc94
|
|
|
|
.global func_01fffcd8
|
|
arm_func_start func_01fffcd8
|
|
func_01fffcd8: ; 0x01fffcd8
|
|
ldr r1, _01fffce8 ; =data_027e0fdc
|
|
ldr r1, [r1]
|
|
ldr r0, [r1, r0, lsl #2]
|
|
bx lr
|
|
.align 2, 0
|
|
arm_func_end func_01fffcd8
|
|
_01fffce8: .word data_027e0fdc
|
|
|
|
.global func_01fffcec
|
|
arm_func_start func_01fffcec
|
|
func_01fffcec: ; 0x01fffcec
|
|
ldr r1, _01fffd00 ; =gItemManager
|
|
ldr r1, [r1]
|
|
ldr r1, [r1, #0xac]
|
|
ldr r0, [r1, r0, lsl #2]
|
|
bx lr
|
|
.align 2, 0
|
|
arm_func_end func_01fffcec
|
|
_01fffd00: .word gItemManager
|
|
|
|
.global func_01fffd04
|
|
arm_func_start func_01fffd04
|
|
func_01fffd04: ; 0x01fffd04
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
sub sp, sp, #0x60
|
|
mov r6, r0
|
|
ldr r0, [r6, #0x98]
|
|
mov r5, r1
|
|
cmp r0, #0
|
|
mov r4, #0
|
|
blt _01fffef8
|
|
ldrh r0, [r6, #0x9c]
|
|
cmp r0, #0
|
|
beq _01fffef8
|
|
add r0, r6, #0xb8
|
|
bl func_ov00_02081ef4
|
|
cmp r5, #1
|
|
ldrh r5, [r6, #0x9c]
|
|
add r3, sp, #0x50
|
|
biceq r0, r5, #0x50
|
|
moveq r0, r0, lsl #0x10
|
|
moveq r5, r0, lsr #0x10
|
|
add r0, r6, #0x8c
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
ldr r1, [r6, #0x98]
|
|
mov r0, r3
|
|
str r1, [sp, #0x5c]
|
|
ldrsh r1, [r6, #0x78]
|
|
bl func_ov00_020a61ac
|
|
ldrb r0, [r6, #0x9f]
|
|
cmp r0, #0
|
|
beq _01fffdf4
|
|
add r0, r6, #0x48
|
|
add r3, sp, #0x44
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
ldr r0, [sp, #0x4c]
|
|
ldr r1, [sp, #0x44]
|
|
str r0, [sp, #0x34]
|
|
ldr r0, _01ffff04 ; =data_027e0e60
|
|
ldr r3, [sp, #0x48]
|
|
ldr r2, [sp, #0x54]
|
|
str r1, [sp, #0x2c]
|
|
add r1, r3, r2
|
|
tst r5, #4
|
|
movne r2, #1
|
|
ldr r0, [r0]
|
|
str r1, [sp, #0x48]
|
|
str r1, [sp, #0x30]
|
|
moveq r2, #0
|
|
add r1, sp, #0x2c
|
|
bl func_ov00_02083ee0
|
|
ldr r3, [r6, #0x4c]
|
|
ldr r1, [sp, #0x54]
|
|
ldr r2, [sp, #0x5c]
|
|
add r1, r3, r1
|
|
sub r1, r1, r2
|
|
add r0, r0, #0x100
|
|
cmp r1, r0
|
|
addgt r0, r2, r0
|
|
subgt r0, r0, r3
|
|
strgt r0, [sp, #0x54]
|
|
_01fffdf4:
|
|
ldr r0, [r6, #0x48]
|
|
add lr, sp, #0x50
|
|
str r0, [sp, #0x20]
|
|
ldr r0, [r6, #0x4c]
|
|
mov ip, #0
|
|
str r0, [sp, #0x24]
|
|
ldr r1, [r6, #0x50]
|
|
ldr r0, _01ffff04 ; =data_027e0e60
|
|
str r1, [sp, #0x28]
|
|
ldr r1, [r6, #0x54]
|
|
add r2, sp, #0x20
|
|
str r1, [sp, #0x14]
|
|
ldr r1, [r6, #0x58]
|
|
add r3, sp, #0x14
|
|
str r1, [sp, #0x18]
|
|
ldr r7, [r6, #0x5c]
|
|
add r1, r6, #0xb8
|
|
str r7, [sp, #0x1c]
|
|
str lr, [sp]
|
|
ldr lr, [r6, #8]
|
|
str lr, [sp, #4]
|
|
str r5, [sp, #8]
|
|
ldr r5, [r6, #0xa0]
|
|
str r5, [sp, #0xc]
|
|
str ip, [sp, #0x10]
|
|
ldr r0, [r0]
|
|
bl func_01ffbe78
|
|
cmp r0, #0
|
|
beq _01fffec4
|
|
add r2, sp, #0x38
|
|
add r0, r6, #0xb8
|
|
add r1, r6, #0x48
|
|
bl func_01ff9bf8
|
|
mov r0, #0
|
|
str r0, [sp, #0x3c]
|
|
add r0, r6, #0x148
|
|
add r1, sp, #0x38
|
|
mov r2, r0
|
|
bl func_01ff9bc4
|
|
ldr r0, [r6, #0xb8]
|
|
str r0, [r6, #0x48]
|
|
ldr r0, [r6, #0xbc]
|
|
str r0, [r6, #0x4c]
|
|
ldr r0, [r6, #0xc0]
|
|
str r0, [r6, #0x50]
|
|
ldrb r0, [r6, #0x110]
|
|
cmp r0, #0
|
|
ldreqb r0, [r6, #0x112]
|
|
cmpeq r0, #0
|
|
ldreqb r0, [r6, #0x113]
|
|
cmpeq r0, #0
|
|
movne r4, #1
|
|
_01fffec4:
|
|
ldrb r0, [r6, #0x9e]
|
|
cmp r0, #0
|
|
beq _01fffef8
|
|
ldrh r0, [r6, #0x9c]
|
|
tst r0, #2
|
|
beq _01fffef8
|
|
ldr r0, [r6, #0x6c]
|
|
cmp r0, #0
|
|
ble _01fffef8
|
|
ldrb r0, [r6, #0x111]
|
|
cmp r0, #0
|
|
movne r0, #0
|
|
strne r0, [r6, #0x64]
|
|
_01fffef8:
|
|
mov r0, r4
|
|
add sp, sp, #0x60
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
arm_func_end func_01fffd04
|
|
_01ffff04: .word data_027e0e60
|
|
|
|
.global func_01ffff08
|
|
arm_func_start func_01ffff08
|
|
func_01ffff08: ; 0x01ffff08
|
|
stmdb sp!, {r4, lr}
|
|
sub sp, sp, #8
|
|
mov r4, r0
|
|
ldr r0, _01ffff88 ; =0x000001ff
|
|
ldr ip, [r4]
|
|
ldr r2, _01ffff8c ; =0x04001014
|
|
ldr r3, [r4, #4]
|
|
mov r1, r0, lsl #0x10
|
|
and ip, ip, r0
|
|
and r0, r1, r3, lsl #16
|
|
orr r0, ip, r0
|
|
str r0, [r2]
|
|
ldr r1, [r4, #0x20]
|
|
add r0, r2, #0xc
|
|
str r1, [sp]
|
|
ldr r2, [r4, #0x24]
|
|
add r1, r4, #8
|
|
str r2, [sp, #4]
|
|
ldr r2, [r4, #0x18]
|
|
ldr r3, [r4, #0x1c]
|
|
bl func_02005234
|
|
ldr r1, [r4, #0x20]
|
|
ldr r0, _01ffff90 ; =0x04001030
|
|
str r1, [sp]
|
|
ldr r2, [r4, #0x24]
|
|
add r1, r4, #8
|
|
str r2, [sp, #4]
|
|
ldr r2, [r4, #0x18]
|
|
ldr r3, [r4, #0x1c]
|
|
bl func_02005234
|
|
add sp, sp, #8
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
arm_func_end func_01ffff08
|
|
_01ffff88: .word 0x000001ff
|
|
_01ffff8c: .word 0x04001014
|
|
_01ffff90: .word 0x04001030
|
|
.global data_01ffff94
|
|
data_01ffff94: ; 0x01ffff94
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.global data_01ffff98
|
|
data_01ffff98: ; 0x01ffff98
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.global data_01ffff9c
|
|
data_01ffff9c: ; 0x01ffff9c
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
_01ffffa0:
|
|
; 0x01ffffa0
|
|
|
|
.bss
|
|
.space 0x60
|