perfect_dark/src/lib/lib_2f490.c

290 lines
11 KiB
C

#include <ultra64.h>
#include "constants.h"
#include "types.h"
#include "data.h"
#include "bss.h"
#include "lib/memory.h"
GLOBAL_ASM(
glabel func0002f490
/* 2f490: 8fa80010 */ lw $t0,0x10($sp)
/* 2f494: 8fa90014 */ lw $t1,0x14($sp)
/* 2f498: 8faa0018 */ lw $t2,0x18($sp)
/* 2f49c: 8fab001c */ lw $t3,0x1c($sp)
/* 2f4a0: 8fac0020 */ lw $t4,0x20($sp)
/* 2f4a4: 848d0000 */ lh $t5,0x0($a0)
/* 2f4a8: 848e0002 */ lh $t6,0x2($a0)
/* 2f4ac: 848f0004 */ lh $t7,0x4($a0)
/* 2f4b0: 448d0000 */ mtc1 $t5,$f0
/* 2f4b4: 448e0800 */ mtc1 $t6,$f1
/* 2f4b8: 448f1000 */ mtc1 $t7,$f2
/* 2f4bc: 46800020 */ cvt.s.w $f0,$f0
/* 2f4c0: 46800860 */ cvt.s.w $f1,$f1
/* 2f4c4: 468010a0 */ cvt.s.w $f2,$f2
/* 2f4c8: 84ad0000 */ lh $t5,0x0($a1)
/* 2f4cc: 84ae0002 */ lh $t6,0x2($a1)
/* 2f4d0: 84af0004 */ lh $t7,0x4($a1)
/* 2f4d4: 448d6000 */ mtc1 $t5,$f12
/* 2f4d8: 448e6800 */ mtc1 $t6,$f13
/* 2f4dc: 448f7000 */ mtc1 $t7,$f14
/* 2f4e0: 46806320 */ cvt.s.w $f12,$f12
/* 2f4e4: 46806b60 */ cvt.s.w $f13,$f13
/* 2f4e8: 468073a0 */ cvt.s.w $f14,$f14
/* 2f4ec: 84cd0000 */ lh $t5,0x0($a2)
/* 2f4f0: 84ce0002 */ lh $t6,0x2($a2)
/* 2f4f4: 84cf0004 */ lh $t7,0x4($a2)
/* 2f4f8: 448d7800 */ mtc1 $t5,$f15
/* 2f4fc: 448e8000 */ mtc1 $t6,$f16
/* 2f500: 448f8800 */ mtc1 $t7,$f17
/* 2f504: 46807be0 */ cvt.s.w $f15,$f15
/* 2f508: 46808420 */ cvt.s.w $f16,$f16
/* 2f50c: 46808c60 */ cvt.s.w $f17,$f17
/* 2f510: 460060c1 */ sub.s $f3,$f12,$f0
/* 2f514: 46016901 */ sub.s $f4,$f13,$f1
/* 2f518: 46027141 */ sub.s $f5,$f14,$f2
/* 2f51c: 460c7981 */ sub.s $f6,$f15,$f12
/* 2f520: 460d81c1 */ sub.s $f7,$f16,$f13
/* 2f524: 460e8a01 */ sub.s $f8,$f17,$f14
/* 2f528: 46007a41 */ sub.s $f9,$f15,$f0
/* 2f52c: 46018281 */ sub.s $f10,$f16,$f1
/* 2f530: 10e00007 */ beqz $a3,.L0002f550
/* 2f534: 46028ac1 */ sub.s $f11,$f17,$f2
/* 2f538: c4ec0000 */ lwc1 $f12,0x0($a3)
/* 2f53c: c4ed0004 */ lwc1 $f13,0x4($a3)
/* 2f540: c4ee0008 */ lwc1 $f14,0x8($a3)
/* 2f544: 460c0000 */ add.s $f0,$f0,$f12
/* 2f548: 460d0840 */ add.s $f1,$f1,$f13
/* 2f54c: 460e1080 */ add.s $f2,$f2,$f14
.L0002f550:
/* 2f550: 3c0d7003 */ lui $t5,%hi(func0002f5d8)
/* 2f554: 25adf5d8 */ addiu $t5,$t5,%lo(func0002f5d8)
/* 2f558: 01a00008 */ jr $t5
/* 2f55c: 00000000 */ nop
);
GLOBAL_ASM(
glabel func0002f560
/* 2f560: 8fa80010 */ lw $t0,0x10($sp)
/* 2f564: 8fa90014 */ lw $t1,0x14($sp)
/* 2f568: 8faa0018 */ lw $t2,0x18($sp)
/* 2f56c: 8fab001c */ lw $t3,0x1c($sp)
/* 2f570: 8fac0020 */ lw $t4,0x20($sp)
/* 2f574: c4800000 */ lwc1 $f0,0x0($a0)
/* 2f578: c4810004 */ lwc1 $f1,0x4($a0)
/* 2f57c: c4820008 */ lwc1 $f2,0x8($a0)
/* 2f580: c4ac0000 */ lwc1 $f12,0x0($a1)
/* 2f584: c4ad0004 */ lwc1 $f13,0x4($a1)
/* 2f588: c4ae0008 */ lwc1 $f14,0x8($a1)
/* 2f58c: c4cf0000 */ lwc1 $f15,0x0($a2)
/* 2f590: c4d00004 */ lwc1 $f16,0x4($a2)
/* 2f594: c4d10008 */ lwc1 $f17,0x8($a2)
/* 2f598: 460060c1 */ sub.s $f3,$f12,$f0
/* 2f59c: 46016901 */ sub.s $f4,$f13,$f1
/* 2f5a0: 46027141 */ sub.s $f5,$f14,$f2
/* 2f5a4: 460c7981 */ sub.s $f6,$f15,$f12
/* 2f5a8: 460d81c1 */ sub.s $f7,$f16,$f13
/* 2f5ac: 460e8a01 */ sub.s $f8,$f17,$f14
/* 2f5b0: 46007a41 */ sub.s $f9,$f15,$f0
/* 2f5b4: 46018281 */ sub.s $f10,$f16,$f1
/* 2f5b8: 10e00007 */ beqz $a3,.L0002f5d8
/* 2f5bc: 46028ac1 */ sub.s $f11,$f17,$f2
/* 2f5c0: c4ec0000 */ lwc1 $f12,0x0($a3)
/* 2f5c4: c4ed0004 */ lwc1 $f13,0x4($a3)
/* 2f5c8: c4ee0008 */ lwc1 $f14,0x8($a3)
/* 2f5cc: 460c0000 */ add.s $f0,$f0,$f12
/* 2f5d0: 460d0840 */ add.s $f1,$f1,$f13
/* 2f5d4: 460e1080 */ add.s $f2,$f2,$f14
.L0002f5d8:
);
GLOBAL_ASM(
glabel func0002f5d8
/* 2f5d8: 27bdffe0 */ addiu $sp,$sp,-32
/* 2f5dc: e7b40000 */ swc1 $f20,0x0($sp)
/* 2f5e0: e7b50004 */ swc1 $f21,0x4($sp)
/* 2f5e4: e7b60008 */ swc1 $f22,0x8($sp)
/* 2f5e8: e7b7000c */ swc1 $f23,0xc($sp)
/* 2f5ec: e7b80010 */ swc1 $f24,0x10($sp)
/* 2f5f0: e7b90014 */ swc1 $f25,0x14($sp)
/* 2f5f4: 46082302 */ mul.s $f12,$f4,$f8
/* 2f5f8: e7b90014 */ swc1 $f25,0x14($sp)
/* 2f5fc: 46053b42 */ mul.s $f13,$f7,$f5
/* 2f600: e7ba0018 */ swc1 $f26,0x18($sp)
/* 2f604: 46062b82 */ mul.s $f14,$f5,$f6
/* 2f608: 460d6301 */ sub.s $f12,$f12,$f13
/* 2f60c: 460343c2 */ mul.s $f15,$f8,$f3
/* 2f610: e7bb001c */ swc1 $f27,0x1c($sp)
/* 2f614: 46071c02 */ mul.s $f16,$f3,$f7
/* 2f618: 460f7341 */ sub.s $f13,$f14,$f15
/* 2f61c: 46043382 */ mul.s $f14,$f6,$f4
/* 2f620: 440ee000 */ mfc1 $t6,$f28
/* 2f624: 460e8381 */ sub.s $f14,$f16,$f14
/* 2f628: 460063c2 */ mul.s $f15,$f12,$f0
/* 2f62c: 440fe800 */ mfc1 $t7,$f29
/* 2f630: 46016c02 */ mul.s $f16,$f13,$f1
/* 2f634: 4418f000 */ mfc1 $t8,$f30
/* 2f638: 46027442 */ mul.s $f17,$f14,$f2
/* 2f63c: 46107bc0 */ add.s $f15,$f15,$f16
/* 2f640: 4419f800 */ mfc1 $t9,$f31
/* 2f644: 46117bc0 */ add.s $f15,$f15,$f17
/* 2f648: c5500000 */ lwc1 $f16,0x0($t2)
/* 2f64c: c5510004 */ lwc1 $f17,0x4($t2)
/* 2f650: 461064c2 */ mul.s $f19,$f12,$f16
/* 2f654: c5520008 */ lwc1 $f18,0x8($t2)
/* 2f658: 46116d02 */ mul.s $f20,$f13,$f17
/* 2f65c: 46149cc0 */ add.s $f19,$f19,$f20
/* 2f660: 46127502 */ mul.s $f20,$f14,$f18
/* 2f664: 4480f800 */ mtc1 $zero,$f31
/* 2f668: 46149cc0 */ add.s $f19,$f19,$f20
/* 2f66c: 461f9832 */ c.eq.s $f19,$f31
/* 2f670: 4501007c */ bc1t .L0002f864
/* 2f674: 20020000 */ addi $v0,$zero,0x0
/* 2f678: c5340000 */ lwc1 $f20,0x0($t1)
/* 2f67c: c5350004 */ lwc1 $f21,0x4($t1)
/* 2f680: 461465c2 */ mul.s $f23,$f12,$f20
/* 2f684: c5360008 */ lwc1 $f22,0x8($t1)
/* 2f688: 46156e02 */ mul.s $f24,$f13,$f21
/* 2f68c: 46177dc1 */ sub.s $f23,$f15,$f23
/* 2f690: 46167642 */ mul.s $f25,$f14,$f22
/* 2f694: 4618bdc1 */ sub.s $f23,$f23,$f24
/* 2f698: 4619bdc1 */ sub.s $f23,$f23,$f25
/* 2f69c: 4613bcc3 */ div.s $f19,$f23,$f19
/* 2f6a0: 46109dc2 */ mul.s $f23,$f19,$f16
/* 2f6a4: 00000000 */ nop
/* 2f6a8: 46119e02 */ mul.s $f24,$f19,$f17
/* 2f6ac: 4617a5c0 */ add.s $f23,$f20,$f23
/* 2f6b0: 46129e42 */ mul.s $f25,$f19,$f18
/* 2f6b4: 4618ae00 */ add.s $f24,$f21,$f24
/* 2f6b8: 4619b640 */ add.s $f25,$f22,$f25
/* 2f6bc: 4614be81 */ sub.s $f26,$f23,$f20
/* 2f6c0: 461a8682 */ mul.s $f26,$f16,$f26
/* 2f6c4: 4615c6c1 */ sub.s $f27,$f24,$f21
/* 2f6c8: 461b8ec2 */ mul.s $f27,$f17,$f27
/* 2f6cc: 4616cf01 */ sub.s $f28,$f25,$f22
/* 2f6d0: 461bd680 */ add.s $f26,$f26,$f27
/* 2f6d4: 461c96c2 */ mul.s $f27,$f18,$f28
/* 2f6d8: 461bd680 */ add.s $f26,$f26,$f27
/* 2f6dc: 461af83c */ c.lt.s $f31,$f26
/* 2f6e0: 45000003 */ bc1f .L0002f6f0
/* 2f6e4: 00000000 */ nop
/* 2f6e8: 1000005e */ b .L0002f864
/* 2f6ec: 20020000 */ addi $v0,$zero,0x0
.L0002f6f0:
/* 2f6f0: c5140000 */ lwc1 $f20,0x0($t0)
/* 2f6f4: 4614be81 */ sub.s $f26,$f23,$f20
/* 2f6f8: c5150004 */ lwc1 $f21,0x4($t0)
/* 2f6fc: 461a8682 */ mul.s $f26,$f16,$f26
/* 2f700: 4615c6c1 */ sub.s $f27,$f24,$f21
/* 2f704: c5160008 */ lwc1 $f22,0x8($t0)
/* 2f708: 461b8ec2 */ mul.s $f27,$f17,$f27
/* 2f70c: 4616cf01 */ sub.s $f28,$f25,$f22
/* 2f710: 461bd680 */ add.s $f26,$f26,$f27
/* 2f714: 461c96c2 */ mul.s $f27,$f18,$f28
/* 2f718: 461bd680 */ add.s $f26,$f26,$f27
/* 2f71c: 461fd03c */ c.lt.s $f26,$f31
/* 2f720: 45000003 */ bc1f .L0002f730
/* 2f724: 00000000 */ nop
/* 2f728: 1000004e */ b .L0002f864
/* 2f72c: 20020000 */ addi $v0,$zero,0x0
.L0002f730:
/* 2f730: 4600b801 */ sub.s $f0,$f23,$f0
/* 2f734: 4601c041 */ sub.s $f1,$f24,$f1
/* 2f738: 4602c881 */ sub.s $f2,$f25,$f2
/* 2f73c: 46043682 */ mul.s $f26,$f6,$f4
/* 2f740: 00000000 */ nop
/* 2f744: 46071ec2 */ mul.s $f27,$f3,$f7
/* 2f748: 461bd681 */ sub.s $f26,$f26,$f27
/* 2f74c: 461fd032 */ c.eq.s $f26,$f31
/* 2f750: 45010007 */ bc1t .L0002f770
/* 2f754: 00000000 */ nop
/* 2f758: 460406c2 */ mul.s $f27,$f0,$f4
/* 2f75c: 00000000 */ nop
/* 2f760: 46030f02 */ mul.s $f28,$f1,$f3
/* 2f764: 461cdec1 */ sub.s $f27,$f27,$f28
/* 2f768: 10000017 */ b .L0002f7c8
/* 2f76c: 461adec3 */ div.s $f27,$f27,$f26
.L0002f770:
/* 2f770: 46053e82 */ mul.s $f26,$f7,$f5
/* 2f774: 00000000 */ nop
/* 2f778: 460826c2 */ mul.s $f27,$f4,$f8
/* 2f77c: 461bd681 */ sub.s $f26,$f26,$f27
/* 2f780: 461fd032 */ c.eq.s $f26,$f31
/* 2f784: 45010007 */ bc1t .L0002f7a4
/* 2f788: 00000000 */ nop
/* 2f78c: 46050ec2 */ mul.s $f27,$f1,$f5
/* 2f790: 00000000 */ nop
/* 2f794: 46041702 */ mul.s $f28,$f2,$f4
/* 2f798: 461cdec1 */ sub.s $f27,$f27,$f28
/* 2f79c: 1000000a */ b .L0002f7c8
/* 2f7a0: 461adec3 */ div.s $f27,$f27,$f26
.L0002f7a4:
/* 2f7a4: 46034682 */ mul.s $f26,$f8,$f3
/* 2f7a8: 00000000 */ nop
/* 2f7ac: 46062ec2 */ mul.s $f27,$f5,$f6
/* 2f7b0: 461bd681 */ sub.s $f26,$f26,$f27
/* 2f7b4: 460316c2 */ mul.s $f27,$f2,$f3
/* 2f7b8: 00000000 */ nop
/* 2f7bc: 46050702 */ mul.s $f28,$f0,$f5
/* 2f7c0: 461cdec1 */ sub.s $f27,$f27,$f28
/* 2f7c4: 461adec3 */ div.s $f27,$f27,$f26
.L0002f7c8:
/* 2f7c8: 461fd83c */ c.lt.s $f27,$f31
/* 2f7cc: 45010025 */ bc1t .L0002f864
/* 2f7d0: 20020000 */ addi $v0,$zero,0x0
/* 2f7d4: 461f1832 */ c.eq.s $f3,$f31
/* 2f7d8: 45010005 */ bc1t .L0002f7f0
/* 2f7dc: 00000000 */ nop
/* 2f7e0: 4609df02 */ mul.s $f28,$f27,$f9
/* 2f7e4: 461c0701 */ sub.s $f28,$f0,$f28
/* 2f7e8: 1000000b */ b .L0002f818
/* 2f7ec: 4603e703 */ div.s $f28,$f28,$f3
.L0002f7f0:
/* 2f7f0: 461f2032 */ c.eq.s $f4,$f31
/* 2f7f4: 45010005 */ bc1t .L0002f80c
/* 2f7f8: 00000000 */ nop
/* 2f7fc: 460adf02 */ mul.s $f28,$f27,$f10
/* 2f800: 461c0f01 */ sub.s $f28,$f1,$f28
/* 2f804: 10000004 */ b .L0002f818
/* 2f808: 4604e703 */ div.s $f28,$f28,$f4
.L0002f80c:
/* 2f80c: 460bdf02 */ mul.s $f28,$f27,$f11
/* 2f810: 461c1701 */ sub.s $f28,$f2,$f28
/* 2f814: 4605e703 */ div.s $f28,$f28,$f5
.L0002f818:
/* 2f818: 461fe03c */ c.lt.s $f28,$f31
/* 2f81c: 45010011 */ bc1t .L0002f864
/* 2f820: 20020000 */ addi $v0,$zero,0x0
/* 2f824: 3c013f80 */ lui $at,0x3f80
/* 2f828: 4481e800 */ mtc1 $at,$f29
/* 2f82c: 461be6c0 */ add.s $f27,$f28,$f27
/* 2f830: 461dd83e */ c.le.s $f27,$f29
/* 2f834: 4500000b */ bc1f .L0002f864
/* 2f838: 20020000 */ addi $v0,$zero,0x0
/* 2f83c: 11600004 */ beqz $t3,.L0002f850
/* 2f840: 20020001 */ addi $v0,$zero,0x1
/* 2f844: e5770000 */ swc1 $f23,0x0($t3)
/* 2f848: e5780004 */ swc1 $f24,0x4($t3)
/* 2f84c: e5790008 */ swc1 $f25,0x8($t3)
.L0002f850:
/* 2f850: 11800004 */ beqz $t4,.L0002f864
/* 2f854: 00000000 */ nop
/* 2f858: e58c0000 */ swc1 $f12,0x0($t4)
/* 2f85c: e58d0004 */ swc1 $f13,0x4($t4)
/* 2f860: e58e0008 */ swc1 $f14,0x8($t4)
.L0002f864:
/* 2f864: c7b40000 */ lwc1 $f20,0x0($sp)
/* 2f868: c7b50004 */ lwc1 $f21,0x4($sp)
/* 2f86c: c7b60008 */ lwc1 $f22,0x8($sp)
/* 2f870: c7b7000c */ lwc1 $f23,0xc($sp)
/* 2f874: c7b80010 */ lwc1 $f24,0x10($sp)
/* 2f878: c7b90014 */ lwc1 $f25,0x14($sp)
/* 2f87c: c7ba0018 */ lwc1 $f26,0x18($sp)
/* 2f880: c7bb001c */ lwc1 $f27,0x1c($sp)
/* 2f884: 448ee000 */ mtc1 $t6,$f28
/* 2f888: 448fe800 */ mtc1 $t7,$f29
/* 2f88c: 4498f000 */ mtc1 $t8,$f30
/* 2f890: 4499f800 */ mtc1 $t9,$f31
/* 2f894: 03e00008 */ jr $ra
/* 2f898: 27bd0020 */ addiu $sp,$sp,0x20
);