mirror of
https://gitlab.com/ryandwyer/perfect-dark
synced 2026-06-03 02:28:16 -04:00
282 lines
5.9 KiB
ArmAsm
282 lines
5.9 KiB
ArmAsm
#include "asm_helper.h"
|
|
#include "macros.inc"
|
|
.set noat
|
|
.set noreorder
|
|
|
|
.text
|
|
|
|
glabel func0002f490
|
|
lw $t0, 0x10($sp)
|
|
lw $t1, 0x14($sp)
|
|
lw $t2, 0x18($sp)
|
|
lw $t3, 0x1c($sp)
|
|
lw $t4, 0x20($sp)
|
|
lh $t5, 0x0($a0)
|
|
lh $t6, 0x2($a0)
|
|
lh $t7, 0x4($a0)
|
|
mtc1 $t5, $f0
|
|
mtc1 $t6, $f1
|
|
mtc1 $t7, $f2
|
|
cvt.s.w $f0, $f0
|
|
cvt.s.w $f1, $f1
|
|
cvt.s.w $f2, $f2
|
|
lh $t5, 0x0($a1)
|
|
lh $t6, 0x2($a1)
|
|
lh $t7, 0x4($a1)
|
|
mtc1 $t5, $f12
|
|
mtc1 $t6, $f13
|
|
mtc1 $t7, $f14
|
|
cvt.s.w $f12, $f12
|
|
cvt.s.w $f13, $f13
|
|
cvt.s.w $f14, $f14
|
|
lh $t5, 0x0($a2)
|
|
lh $t6, 0x2($a2)
|
|
lh $t7, 0x4($a2)
|
|
mtc1 $t5, $f15
|
|
mtc1 $t6, $f16
|
|
mtc1 $t7, $f17
|
|
cvt.s.w $f15, $f15
|
|
cvt.s.w $f16, $f16
|
|
cvt.s.w $f17, $f17
|
|
sub.s $f3, $f12, $f0
|
|
sub.s $f4, $f13, $f1
|
|
sub.s $f5, $f14, $f2
|
|
sub.s $f6, $f15, $f12
|
|
sub.s $f7, $f16, $f13
|
|
sub.s $f8, $f17, $f14
|
|
sub.s $f9, $f15, $f0
|
|
sub.s $f10, $f16, $f1
|
|
beqz $a3, .L0002f550
|
|
sub.s $f11, $f17, $f2
|
|
lwc1 $f12, 0x0($a3)
|
|
lwc1 $f13, 0x4($a3)
|
|
lwc1 $f14, 0x8($a3)
|
|
add.s $f0, $f0, $f12
|
|
add.s $f1, $f1, $f13
|
|
add.s $f2, $f2, $f14
|
|
.L0002f550:
|
|
lui $t5, %hi(.L0002f5d8)
|
|
addiu $t5, $t5, %lo(.L0002f5d8)
|
|
jr $t5
|
|
nop
|
|
|
|
glabel func0002f560
|
|
lw $t0, 0x10($sp)
|
|
lw $t1, 0x14($sp)
|
|
lw $t2, 0x18($sp)
|
|
lw $t3, 0x1c($sp)
|
|
lw $t4, 0x20($sp)
|
|
lwc1 $f0, 0x0($a0)
|
|
lwc1 $f1, 0x4($a0)
|
|
lwc1 $f2, 0x8($a0)
|
|
lwc1 $f12, 0x0($a1)
|
|
lwc1 $f13, 0x4($a1)
|
|
lwc1 $f14, 0x8($a1)
|
|
lwc1 $f15, 0x0($a2)
|
|
lwc1 $f16, 0x4($a2)
|
|
lwc1 $f17, 0x8($a2)
|
|
sub.s $f3, $f12, $f0
|
|
sub.s $f4, $f13, $f1
|
|
sub.s $f5, $f14, $f2
|
|
sub.s $f6, $f15, $f12
|
|
sub.s $f7, $f16, $f13
|
|
sub.s $f8, $f17, $f14
|
|
sub.s $f9, $f15, $f0
|
|
sub.s $f10, $f16, $f1
|
|
beqz $a3, .L0002f5d8
|
|
sub.s $f11, $f17, $f2
|
|
lwc1 $f12, 0x0($a3)
|
|
lwc1 $f13, 0x4($a3)
|
|
lwc1 $f14, 0x8($a3)
|
|
add.s $f0, $f0, $f12
|
|
add.s $f1, $f1, $f13
|
|
add.s $f2, $f2, $f14
|
|
.L0002f5d8:
|
|
addiu $sp, $sp, -0x20
|
|
swc1 $f20, 0x0($sp)
|
|
swc1 $f21, 0x4($sp)
|
|
swc1 $f22, 0x8($sp)
|
|
swc1 $f23, 0xc($sp)
|
|
swc1 $f24, 0x10($sp)
|
|
swc1 $f25, 0x14($sp)
|
|
mul.s $f12, $f4, $f8
|
|
swc1 $f25, 0x14($sp)
|
|
mul.s $f13, $f7, $f5
|
|
swc1 $f26, 0x18($sp)
|
|
mul.s $f14, $f5, $f6
|
|
sub.s $f12, $f12, $f13
|
|
mul.s $f15, $f8, $f3
|
|
swc1 $f27, 0x1c($sp)
|
|
mul.s $f16, $f3, $f7
|
|
sub.s $f13, $f14, $f15
|
|
mul.s $f14, $f6, $f4
|
|
mfc1 $t6, $f28
|
|
sub.s $f14, $f16, $f14
|
|
mul.s $f15, $f12, $f0
|
|
mfc1 $t7, $f29
|
|
mul.s $f16, $f13, $f1
|
|
mfc1 $t8, $f30
|
|
mul.s $f17, $f14, $f2
|
|
add.s $f15, $f15, $f16
|
|
mfc1 $t9, $f31
|
|
add.s $f15, $f15, $f17
|
|
lwc1 $f16, 0x0($t2)
|
|
lwc1 $f17, 0x4($t2)
|
|
mul.s $f19, $f12, $f16
|
|
lwc1 $f18, 0x8($t2)
|
|
mul.s $f20, $f13, $f17
|
|
add.s $f19, $f19, $f20
|
|
mul.s $f20, $f14, $f18
|
|
mtc1 $zero, $f31
|
|
add.s $f19, $f19, $f20
|
|
c.eq.s $f19, $f31
|
|
bc1t .L0002f864
|
|
addi $v0, $zero, 0x0
|
|
lwc1 $f20, 0x0($t1)
|
|
lwc1 $f21, 0x4($t1)
|
|
mul.s $f23, $f12, $f20
|
|
lwc1 $f22, 0x8($t1)
|
|
mul.s $f24, $f13, $f21
|
|
sub.s $f23, $f15, $f23
|
|
mul.s $f25, $f14, $f22
|
|
sub.s $f23, $f23, $f24
|
|
sub.s $f23, $f23, $f25
|
|
div.s $f19, $f23, $f19
|
|
mul.s $f23, $f19, $f16
|
|
nop
|
|
mul.s $f24, $f19, $f17
|
|
add.s $f23, $f20, $f23
|
|
mul.s $f25, $f19, $f18
|
|
add.s $f24, $f21, $f24
|
|
add.s $f25, $f22, $f25
|
|
sub.s $f26, $f23, $f20
|
|
mul.s $f26, $f16, $f26
|
|
sub.s $f27, $f24, $f21
|
|
mul.s $f27, $f17, $f27
|
|
sub.s $f28, $f25, $f22
|
|
add.s $f26, $f26, $f27
|
|
mul.s $f27, $f18, $f28
|
|
add.s $f26, $f26, $f27
|
|
c.lt.s $f31, $f26
|
|
bc1f .L0002f6f0
|
|
nop
|
|
b .L0002f864
|
|
addi $v0, $zero, 0x0
|
|
.L0002f6f0:
|
|
lwc1 $f20, 0x0($t0)
|
|
sub.s $f26, $f23, $f20
|
|
lwc1 $f21, 0x4($t0)
|
|
mul.s $f26, $f16, $f26
|
|
sub.s $f27, $f24, $f21
|
|
lwc1 $f22, 0x8($t0)
|
|
mul.s $f27, $f17, $f27
|
|
sub.s $f28, $f25, $f22
|
|
add.s $f26, $f26, $f27
|
|
mul.s $f27, $f18, $f28
|
|
add.s $f26, $f26, $f27
|
|
c.lt.s $f26, $f31
|
|
bc1f .L0002f730
|
|
nop
|
|
b .L0002f864
|
|
addi $v0, $zero, 0x0
|
|
.L0002f730:
|
|
sub.s $f0, $f23, $f0
|
|
sub.s $f1, $f24, $f1
|
|
sub.s $f2, $f25, $f2
|
|
mul.s $f26, $f6, $f4
|
|
nop
|
|
mul.s $f27, $f3, $f7
|
|
sub.s $f26, $f26, $f27
|
|
c.eq.s $f26, $f31
|
|
bc1t .L0002f770
|
|
nop
|
|
mul.s $f27, $f0, $f4
|
|
nop
|
|
mul.s $f28, $f1, $f3
|
|
sub.s $f27, $f27, $f28
|
|
b .L0002f7c8
|
|
div.s $f27, $f27, $f26
|
|
.L0002f770:
|
|
mul.s $f26, $f7, $f5
|
|
nop
|
|
mul.s $f27, $f4, $f8
|
|
sub.s $f26, $f26, $f27
|
|
c.eq.s $f26, $f31
|
|
bc1t .L0002f7a4
|
|
nop
|
|
mul.s $f27, $f1, $f5
|
|
nop
|
|
mul.s $f28, $f2, $f4
|
|
sub.s $f27, $f27, $f28
|
|
b .L0002f7c8
|
|
div.s $f27, $f27, $f26
|
|
.L0002f7a4:
|
|
mul.s $f26, $f8, $f3
|
|
nop
|
|
mul.s $f27, $f5, $f6
|
|
sub.s $f26, $f26, $f27
|
|
mul.s $f27, $f2, $f3
|
|
nop
|
|
mul.s $f28, $f0, $f5
|
|
sub.s $f27, $f27, $f28
|
|
div.s $f27, $f27, $f26
|
|
.L0002f7c8:
|
|
c.lt.s $f27, $f31
|
|
bc1t .L0002f864
|
|
addi $v0, $zero, 0x0
|
|
c.eq.s $f3, $f31
|
|
bc1t .L0002f7f0
|
|
nop
|
|
mul.s $f28, $f27, $f9
|
|
sub.s $f28, $f0, $f28
|
|
b .L0002f818
|
|
div.s $f28, $f28, $f3
|
|
.L0002f7f0:
|
|
c.eq.s $f4, $f31
|
|
bc1t .L0002f80c
|
|
nop
|
|
mul.s $f28, $f27, $f10
|
|
sub.s $f28, $f1, $f28
|
|
b .L0002f818
|
|
div.s $f28, $f28, $f4
|
|
.L0002f80c:
|
|
mul.s $f28, $f27, $f11
|
|
sub.s $f28, $f2, $f28
|
|
div.s $f28, $f28, $f5
|
|
.L0002f818:
|
|
c.lt.s $f28, $f31
|
|
bc1t .L0002f864
|
|
addi $v0, $zero, 0x0
|
|
lui $at, 0x3f80
|
|
mtc1 $at, $f29
|
|
add.s $f27, $f28, $f27
|
|
c.le.s $f27, $f29
|
|
bc1f .L0002f864
|
|
addi $v0, $zero, 0x0
|
|
beqz $t3, .L0002f850
|
|
addi $v0, $zero, 0x1
|
|
swc1 $f23, 0x0($t3)
|
|
swc1 $f24, 0x4($t3)
|
|
swc1 $f25, 0x8($t3)
|
|
.L0002f850:
|
|
beqz $t4, .L0002f864
|
|
nop
|
|
swc1 $f12, 0x0($t4)
|
|
swc1 $f13, 0x4($t4)
|
|
swc1 $f14, 0x8($t4)
|
|
.L0002f864:
|
|
lwc1 $f20, 0x0($sp)
|
|
lwc1 $f21, 0x4($sp)
|
|
lwc1 $f22, 0x8($sp)
|
|
lwc1 $f23, 0xc($sp)
|
|
lwc1 $f24, 0x10($sp)
|
|
lwc1 $f25, 0x14($sp)
|
|
lwc1 $f26, 0x18($sp)
|
|
lwc1 $f27, 0x1c($sp)
|
|
mtc1 $t6, $f28
|
|
mtc1 $t7, $f29
|
|
mtc1 $t8, $f30
|
|
mtc1 $t9, $f31
|
|
jr $ra
|
|
addiu $sp, $sp, 0x20
|