Files
SpaghettiKart/asm/non_matchings/code_8003DC40/func_8003F734.s
T
CoderStig 8ab4557b39 Split asm using autodecompiler (#49)
* Split asm using autodecompiler

* Placed libultra bss and linked more C
2021-11-05 05:17:09 -06:00

304 lines
15 KiB
ArmAsm

glabel func_8003F734
/* 040334 8003F734 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 040338 8003F738 AFBF0024 */ sw $ra, 0x24($sp)
/* 04033C 8003F73C AFB10020 */ sw $s1, 0x20($sp)
/* 040340 8003F740 AFB0001C */ sw $s0, 0x1c($sp)
/* 040344 8003F744 AFA70034 */ sw $a3, 0x34($sp)
/* 040348 8003F748 C4840128 */ lwc1 $f4, 0x128($a0)
/* 04034C 8003F74C 44801000 */ mtc1 $zero, $f2
/* 040350 8003F750 00808025 */ move $s0, $a0
/* 040354 8003F754 46002187 */ neg.s $f6, $f4
/* 040358 8003F758 00A08825 */ move $s1, $a1
/* 04035C 8003F75C E4A60000 */ swc1 $f6, ($a1)
/* 040360 8003F760 C488012C */ lwc1 $f8, 0x12c($a0)
/* 040364 8003F764 3C013FE0 */ li $at, 0x3FE00000 # 1.750000
/* 040368 8003F768 46004287 */ neg.s $f10, $f8
/* 04036C 8003F76C E4AA0004 */ swc1 $f10, 4($a1)
/* 040370 8003F770 C4900130 */ lwc1 $f16, 0x130($a0)
/* 040374 8003F774 46008487 */ neg.s $f18, $f16
/* 040378 8003F778 E4B20008 */ swc1 $f18, 8($a1)
/* 04037C 8003F77C C480012C */ lwc1 $f0, 0x12c($a0)
/* 040380 8003F780 46001032 */ c.eq.s $f2, $f0
/* 040384 8003F784 00000000 */ nop
/* 040388 8003F788 45020044 */ bc1fl .L8003F89C
/* 04038C 8003F78C 44815800 */ mtc1 $at, $f11
/* 040390 8003F790 C4A40000 */ lwc1 $f4, ($a1)
/* 040394 8003F794 C486011C */ lwc1 $f6, 0x11c($a0)
/* 040398 8003F798 3C013F80 */ li $at, 0x3F800000 # 1.000000
/* 04039C 8003F79C 44816000 */ mtc1 $at, $f12
/* 0403A0 8003F7A0 46062202 */ mul.s $f8, $f4, $f6
/* 0403A4 8003F7A4 8FA30038 */ lw $v1, 0x38($sp)
/* 0403A8 8003F7A8 8FA2003C */ lw $v0, 0x3c($sp)
/* 0403AC 8003F7AC 8FA80040 */ lw $t0, 0x40($sp)
/* 0403B0 8003F7B0 C4700000 */ lwc1 $f16, ($v1)
/* 0403B4 8003F7B4 3C01800F */ lui $at, %hi(D_800EDFD8)
/* 0403B8 8003F7B8 3C073F00 */ lui $a3, 0x3f00
/* 0403BC 8003F7BC 460C4282 */ mul.s $f10, $f8, $f12
/* 0403C0 8003F7C0 460A8480 */ add.s $f18, $f16, $f10
/* 0403C4 8003F7C4 E4720000 */ swc1 $f18, ($v1)
/* 0403C8 8003F7C8 C486011C */ lwc1 $f6, 0x11c($a0)
/* 0403CC 8003F7CC C4A40004 */ lwc1 $f4, 4($a1)
/* 0403D0 8003F7D0 D42ADFD8 */ ldc1 $f10, %lo(D_800EDFD8)($at)
/* 0403D4 8003F7D4 3C014190 */ li $at, 0x41900000 # 18.000000
/* 0403D8 8003F7D8 46062202 */ mul.s $f8, $f4, $f6
/* 0403DC 8003F7DC C4440000 */ lwc1 $f4, ($v0)
/* 0403E0 8003F7E0 460021A1 */ cvt.d.s $f6, $f4
/* 0403E4 8003F7E4 46004421 */ cvt.d.s $f16, $f8
/* 0403E8 8003F7E8 462A8482 */ mul.d $f18, $f16, $f10
/* 0403EC 8003F7EC 46323200 */ add.d $f8, $f6, $f18
/* 0403F0 8003F7F0 46204420 */ cvt.s.d $f16, $f8
/* 0403F4 8003F7F4 E4500000 */ swc1 $f16, ($v0)
/* 0403F8 8003F7F8 C484011C */ lwc1 $f4, 0x11c($a0)
/* 0403FC 8003F7FC C4AA0008 */ lwc1 $f10, 8($a1)
/* 040400 8003F800 C5080000 */ lwc1 $f8, ($t0)
/* 040404 8003F804 46045182 */ mul.s $f6, $f10, $f4
/* 040408 8003F808 00000000 */ nop
/* 04040C 8003F80C 460C3482 */ mul.s $f18, $f6, $f12
/* 040410 8003F810 46124400 */ add.s $f16, $f8, $f18
/* 040414 8003F814 E5100000 */ swc1 $f16, ($t0)
/* 040418 8003F818 848E00C4 */ lh $t6, 0xc4($a0)
/* 04041C 8003F81C 8FB80034 */ lw $t8, 0x34($sp)
/* 040420 8003F820 05C10015 */ bgez $t6, .L8003F878
/* 040424 8003F824 00000000 */ nop
/* 040428 8003F828 C48A0094 */ lwc1 $f10, 0x94($a0)
/* 04042C 8003F82C 44812000 */ mtc1 $at, $f4
/* 040430 8003F830 3C014358 */ li $at, 0x43580000 # 216.000000
/* 040434 8003F834 44814000 */ mtc1 $at, $f8
/* 040438 8003F838 46045183 */ div.s $f6, $f10, $f4
/* 04043C 8003F83C 3C014120 */ li $at, 0x41200000 # 10.000000
/* 040440 8003F840 44818000 */ mtc1 $at, $f16
/* 040444 8003F844 8FAF0034 */ lw $t7, 0x34($sp)
/* 040448 8003F848 46083482 */ mul.s $f18, $f6, $f8
/* 04044C 8003F84C 4610903C */ c.lt.s $f18, $f16
/* 040450 8003F850 00000000 */ nop
/* 040454 8003F854 45000008 */ bc1f .L8003F878
/* 040458 8003F858 00A02025 */ move $a0, $a1
/* 04045C 8003F85C 8DE50000 */ lw $a1, ($t7)
/* 040460 8003F860 E7A20010 */ swc1 $f2, 0x10($sp)
/* 040464 8003F864 0C00A97D */ jal func_8002A5F4
/* 040468 8003F868 3C074020 */ lui $a3, 0x4020
/* 04046C 8003F86C 44801000 */ mtc1 $zero, $f2
/* 040470 8003F870 10000007 */ b .L8003F890
/* 040474 8003F874 00000000 */ nop
.L8003F878:
/* 040478 8003F878 8F050000 */ lw $a1, ($t8)
/* 04047C 8003F87C E7A20010 */ swc1 $f2, 0x10($sp)
/* 040480 8003F880 0C00A97D */ jal func_8002A5F4
/* 040484 8003F884 02202025 */ move $a0, $s1
/* 040488 8003F888 44801000 */ mtc1 $zero, $f2
/* 04048C 8003F88C 00000000 */ nop
.L8003F890:
/* 040490 8003F890 10000080 */ b .L8003FA94
/* 040494 8003F894 8E0200BC */ lw $v0, 0xbc($s0)
/* 040498 8003F898 44815800 */ mtc1 $at, $f11
.L8003F89C:
/* 04049C 8003F89C 44805000 */ mtc1 $zero, $f10
/* 0404A0 8003F8A0 46000121 */ cvt.d.s $f4, $f0
/* 0404A4 8003F8A4 462A203E */ c.le.d $f4, $f10
/* 0404A8 8003F8A8 00000000 */ nop
/* 0404AC 8003F8AC 45020039 */ bc1fl .L8003F994
/* 0404B0 8003F8B0 C62A0000 */ lwc1 $f10, ($s1)
/* 0404B4 8003F8B4 C6260000 */ lwc1 $f6, ($s1)
/* 0404B8 8003F8B8 C608011C */ lwc1 $f8, 0x11c($s0)
/* 0404BC 8003F8BC 3C013F80 */ li $at, 0x3F800000 # 1.000000
/* 0404C0 8003F8C0 44816000 */ mtc1 $at, $f12
/* 0404C4 8003F8C4 46083482 */ mul.s $f18, $f6, $f8
/* 0404C8 8003F8C8 8FB90038 */ lw $t9, 0x38($sp)
/* 0404CC 8003F8CC 8FA2003C */ lw $v0, 0x3c($sp)
/* 0404D0 8003F8D0 3C01800F */ lui $at, %hi(D_800EDFE0)
/* 0404D4 8003F8D4 C72A0000 */ lwc1 $f10, ($t9)
/* 0404D8 8003F8D8 44076000 */ mfc1 $a3, $f12
/* 0404DC 8003F8DC 02202025 */ move $a0, $s1
/* 0404E0 8003F8E0 460C9402 */ mul.s $f16, $f18, $f12
/* 0404E4 8003F8E4 46105100 */ add.s $f4, $f10, $f16
/* 0404E8 8003F8E8 E7240000 */ swc1 $f4, ($t9)
/* 0404EC 8003F8EC C608011C */ lwc1 $f8, 0x11c($s0)
/* 0404F0 8003F8F0 C6260004 */ lwc1 $f6, 4($s1)
/* 0404F4 8003F8F4 D430DFE0 */ ldc1 $f16, %lo(D_800EDFE0)($at)
/* 0404F8 8003F8F8 46083482 */ mul.s $f18, $f6, $f8
/* 0404FC 8003F8FC C4460000 */ lwc1 $f6, ($v0)
/* 040500 8003F900 46003221 */ cvt.d.s $f8, $f6
/* 040504 8003F904 460092A1 */ cvt.d.s $f10, $f18
/* 040508 8003F908 46305102 */ mul.d $f4, $f10, $f16
/* 04050C 8003F90C 46244480 */ add.d $f18, $f8, $f4
/* 040510 8003F910 462092A0 */ cvt.s.d $f10, $f18
/* 040514 8003F914 E44A0000 */ swc1 $f10, ($v0)
/* 040518 8003F918 C606011C */ lwc1 $f6, 0x11c($s0)
/* 04051C 8003F91C C6300008 */ lwc1 $f16, 8($s1)
/* 040520 8003F920 8FA90040 */ lw $t1, 0x40($sp)
/* 040524 8003F924 46068202 */ mul.s $f8, $f16, $f6
/* 040528 8003F928 C5320000 */ lwc1 $f18, ($t1)
/* 04052C 8003F92C 460C4102 */ mul.s $f4, $f8, $f12
/* 040530 8003F930 46049280 */ add.s $f10, $f18, $f4
/* 040534 8003F934 E52A0000 */ swc1 $f10, ($t1)
/* 040538 8003F938 8FAA0034 */ lw $t2, 0x34($sp)
/* 04053C 8003F93C 8D450000 */ lw $a1, ($t2)
/* 040540 8003F940 AFA60030 */ sw $a2, 0x30($sp)
/* 040544 8003F944 0C00A97D */ jal func_8002A5F4
/* 040548 8003F948 E7A20010 */ swc1 $f2, 0x10($sp)
/* 04054C 8003F94C 8E0200BC */ lw $v0, 0xbc($s0)
/* 040550 8003F950 44801000 */ mtc1 $zero, $f2
/* 040554 8003F954 8FA60030 */ lw $a2, 0x30($sp)
/* 040558 8003F958 00025BC0 */ sll $t3, $v0, 0xf
/* 04055C 8003F95C 0560004D */ bltz $t3, .L8003FA94
/* 040560 8003F960 304C0008 */ andi $t4, $v0, 8
/* 040564 8003F964 5580004C */ bnel $t4, $zero, .L8003FA98
/* 040568 8003F968 2401FFEF */ li $at, -17
/* 04056C 8003F96C C4D00004 */ lwc1 $f16, 4($a2)
/* 040570 8003F970 3C01800F */ lui $at, %hi(D_800EDFE8)
/* 040574 8003F974 D428DFE8 */ ldc1 $f8, %lo(D_800EDFE8)($at)
/* 040578 8003F978 460081A1 */ cvt.d.s $f6, $f16
/* 04057C 8003F97C 46283482 */ mul.d $f18, $f6, $f8
/* 040580 8003F980 46209120 */ cvt.s.d $f4, $f18
/* 040584 8003F984 E4C40004 */ swc1 $f4, 4($a2)
/* 040588 8003F988 10000042 */ b .L8003FA94
/* 04058C 8003F98C 8E0200BC */ lw $v0, 0xbc($s0)
/* 040590 8003F990 C62A0000 */ lwc1 $f10, ($s1)
.L8003F994:
/* 040594 8003F994 C610011C */ lwc1 $f16, 0x11c($s0)
/* 040598 8003F998 3C013F80 */ li $at, 0x3F800000 # 1.000000
/* 04059C 8003F99C 44816000 */ mtc1 $at, $f12
/* 0405A0 8003F9A0 46105182 */ mul.s $f6, $f10, $f16
/* 0405A4 8003F9A4 8FAD0038 */ lw $t5, 0x38($sp)
/* 0405A8 8003F9A8 3C01800F */ lui $at, %hi(D_800EDFF0)
/* 0405AC 8003F9AC C5B20000 */ lwc1 $f18, ($t5)
/* 0405B0 8003F9B0 460C3202 */ mul.s $f8, $f6, $f12
/* 0405B4 8003F9B4 46089100 */ add.s $f4, $f18, $f8
/* 0405B8 8003F9B8 E5A40000 */ swc1 $f4, ($t5)
/* 0405BC 8003F9BC C610011C */ lwc1 $f16, 0x11c($s0)
/* 0405C0 8003F9C0 C62A0004 */ lwc1 $f10, 4($s1)
/* 0405C4 8003F9C4 46105002 */ mul.s $f0, $f10, $f16
/* 0405C8 8003F9C8 4602003C */ c.lt.s $f0, $f2
/* 0405CC 8003F9CC 00000000 */ nop
/* 0405D0 8003F9D0 4500000B */ bc1f .L8003FA00
/* 0405D4 8003F9D4 00000000 */ nop
/* 0405D8 8003F9D8 D432DFF0 */ ldc1 $f18, %lo(D_800EDFF0)($at)
/* 0405DC 8003F9DC 460001A1 */ cvt.d.s $f6, $f0
/* 0405E0 8003F9E0 8FA2003C */ lw $v0, 0x3c($sp)
/* 0405E4 8003F9E4 46323202 */ mul.d $f8, $f6, $f18
/* 0405E8 8003F9E8 C4440000 */ lwc1 $f4, ($v0)
/* 0405EC 8003F9EC 460022A1 */ cvt.d.s $f10, $f4
/* 0405F0 8003F9F0 46285400 */ add.d $f16, $f10, $f8
/* 0405F4 8003F9F4 462081A0 */ cvt.s.d $f6, $f16
/* 0405F8 8003F9F8 10000006 */ b .L8003FA14
/* 0405FC 8003F9FC E4460000 */ swc1 $f6, ($v0)
.L8003FA00:
/* 040600 8003FA00 46020102 */ mul.s $f4, $f0, $f2
/* 040604 8003FA04 8FA2003C */ lw $v0, 0x3c($sp)
/* 040608 8003FA08 C4520000 */ lwc1 $f18, ($v0)
/* 04060C 8003FA0C 46049280 */ add.s $f10, $f18, $f4
/* 040610 8003FA10 E44A0000 */ swc1 $f10, ($v0)
.L8003FA14:
/* 040614 8003FA14 C6280008 */ lwc1 $f8, 8($s1)
/* 040618 8003FA18 C610011C */ lwc1 $f16, 0x11c($s0)
/* 04061C 8003FA1C 8FAE0040 */ lw $t6, 0x40($sp)
/* 040620 8003FA20 3C073F99 */ lui $a3, (0x3F99999A >> 16) # lui $a3, 0x3f99
/* 040624 8003FA24 46104182 */ mul.s $f6, $f8, $f16
/* 040628 8003FA28 C5C40000 */ lwc1 $f4, ($t6)
/* 04062C 8003FA2C 34E7999A */ ori $a3, (0x3F99999A & 0xFFFF) # ori $a3, $a3, 0x999a
/* 040630 8003FA30 02202025 */ move $a0, $s1
/* 040634 8003FA34 460C3482 */ mul.s $f18, $f6, $f12
/* 040638 8003FA38 46122280 */ add.s $f10, $f4, $f18
/* 04063C 8003FA3C E5CA0000 */ swc1 $f10, ($t6)
/* 040640 8003FA40 8FAF0034 */ lw $t7, 0x34($sp)
/* 040644 8003FA44 8DE50000 */ lw $a1, ($t7)
/* 040648 8003FA48 AFA60030 */ sw $a2, 0x30($sp)
/* 04064C 8003FA4C 0C00A97D */ jal func_8002A5F4
/* 040650 8003FA50 E7A20010 */ swc1 $f2, 0x10($sp)
/* 040654 8003FA54 8E0200BC */ lw $v0, 0xbc($s0)
/* 040658 8003FA58 44801000 */ mtc1 $zero, $f2
/* 04065C 8003FA5C 8FA60030 */ lw $a2, 0x30($sp)
/* 040660 8003FA60 0002C3C0 */ sll $t8, $v0, 0xf
/* 040664 8003FA64 0700000B */ bltz $t8, .L8003FA94
/* 040668 8003FA68 30590008 */ andi $t9, $v0, 8
/* 04066C 8003FA6C 5720000A */ bnel $t9, $zero, .L8003FA98
/* 040670 8003FA70 2401FFEF */ li $at, -17
/* 040674 8003FA74 C4C80004 */ lwc1 $f8, 4($a2)
/* 040678 8003FA78 3C01800F */ lui $at, %hi(D_800EDFF8)
/* 04067C 8003FA7C D426DFF8 */ ldc1 $f6, %lo(D_800EDFF8)($at)
/* 040680 8003FA80 46004421 */ cvt.d.s $f16, $f8
/* 040684 8003FA84 46268102 */ mul.d $f4, $f16, $f6
/* 040688 8003FA88 462024A0 */ cvt.s.d $f18, $f4
/* 04068C 8003FA8C E4D20004 */ swc1 $f18, 4($a2)
/* 040690 8003FA90 8E0200BC */ lw $v0, 0xbc($s0)
.L8003FA94:
/* 040694 8003FA94 2401FFEF */ li $at, -17
.L8003FA98:
/* 040698 8003FA98 00414824 */ and $t1, $v0, $at
/* 04069C 8003FA9C AE0900BC */ sw $t1, 0xbc($s0)
/* 0406A0 8003FAA0 C62A0000 */ lwc1 $f10, ($s1)
/* 0406A4 8003FAA4 C600011C */ lwc1 $f0, 0x11c($s0)
/* 0406A8 8003FAA8 C6280008 */ lwc1 $f8, 8($s1)
/* 0406AC 8003FAAC 46005302 */ mul.s $f12, $f10, $f0
/* 0406B0 8003FAB0 460C103E */ c.le.s $f2, $f12
/* 0406B4 8003FAB4 46004382 */ mul.s $f14, $f8, $f0
/* 0406B8 8003FAB8 45020006 */ bc1fl .L8003FAD4
/* 0406BC 8003FABC 4602603C */ c.lt.s $f12, $f2
/* 0406C0 8003FAC0 460E103E */ c.le.s $f2, $f14
/* 0406C4 8003FAC4 00000000 */ nop
/* 0406C8 8003FAC8 45030009 */ bc1tl .L8003FAF0
/* 0406CC 8003FACC 3C014000 */ lui $at, 0x4000
/* 0406D0 8003FAD0 4602603C */ c.lt.s $f12, $f2
.L8003FAD4:
/* 0406D4 8003FAD4 00000000 */ nop
/* 0406D8 8003FAD8 45020013 */ bc1fl .L8003FB28
/* 0406DC 8003FADC 4602603C */ c.lt.s $f12, $f2
/* 0406E0 8003FAE0 460E103E */ c.le.s $f2, $f14
/* 0406E4 8003FAE4 00000000 */ nop
/* 0406E8 8003FAE8 4500000E */ bc1f .L8003FB24
/* 0406EC 8003FAEC 3C014000 */ li $at, 0x40000000 # 2.000000
.L8003FAF0:
/* 0406F0 8003FAF0 44813000 */ mtc1 $at, $f6
/* 0406F4 8003FAF4 C6100070 */ lwc1 $f16, 0x70($s0)
/* 0406F8 8003FAF8 8FAA0038 */ lw $t2, 0x38($sp)
/* 0406FC 8003FAFC 46068003 */ div.s $f0, $f16, $f6
/* 040700 8003FB00 C5440000 */ lwc1 $f4, ($t2)
/* 040704 8003FB04 460C2481 */ sub.s $f18, $f4, $f12
/* 040708 8003FB08 46009281 */ sub.s $f10, $f18, $f0
/* 04070C 8003FB0C E60A0218 */ swc1 $f10, 0x218($s0)
/* 040710 8003FB10 8FAB0040 */ lw $t3, 0x40($sp)
/* 040714 8003FB14 C5680000 */ lwc1 $f8, ($t3)
/* 040718 8003FB18 460E4401 */ sub.s $f16, $f8, $f14
/* 04071C 8003FB1C 46008181 */ sub.s $f6, $f16, $f0
/* 040720 8003FB20 E606021C */ swc1 $f6, 0x21c($s0)
.L8003FB24:
/* 040724 8003FB24 4602603C */ c.lt.s $f12, $f2
.L8003FB28:
/* 040728 8003FB28 00000000 */ nop
/* 04072C 8003FB2C 45020006 */ bc1fl .L8003FB48
/* 040730 8003FB30 460C103E */ c.le.s $f2, $f12
/* 040734 8003FB34 4602703C */ c.lt.s $f14, $f2
/* 040738 8003FB38 00000000 */ nop
/* 04073C 8003FB3C 45030009 */ bc1tl .L8003FB64
/* 040740 8003FB40 3C014000 */ lui $at, 0x4000
/* 040744 8003FB44 460C103E */ c.le.s $f2, $f12
.L8003FB48:
/* 040748 8003FB48 00000000 */ nop
/* 04074C 8003FB4C 45020013 */ bc1fl .L8003FB9C
/* 040750 8003FB50 8FBF0024 */ lw $ra, 0x24($sp)
/* 040754 8003FB54 4602703C */ c.lt.s $f14, $f2
/* 040758 8003FB58 00000000 */ nop
/* 04075C 8003FB5C 4500000E */ bc1f .L8003FB98
/* 040760 8003FB60 3C014000 */ li $at, 0x40000000 # 2.000000
.L8003FB64:
/* 040764 8003FB64 44819000 */ mtc1 $at, $f18
/* 040768 8003FB68 C6040070 */ lwc1 $f4, 0x70($s0)
/* 04076C 8003FB6C 8FAC0038 */ lw $t4, 0x38($sp)
/* 040770 8003FB70 46122003 */ div.s $f0, $f4, $f18
/* 040774 8003FB74 C58A0000 */ lwc1 $f10, ($t4)
/* 040778 8003FB78 460C5200 */ add.s $f8, $f10, $f12
/* 04077C 8003FB7C 46004400 */ add.s $f16, $f8, $f0
/* 040780 8003FB80 E6100218 */ swc1 $f16, 0x218($s0)
/* 040784 8003FB84 8FAD0040 */ lw $t5, 0x40($sp)
/* 040788 8003FB88 C5A60000 */ lwc1 $f6, ($t5)
/* 04078C 8003FB8C 460E3100 */ add.s $f4, $f6, $f14
/* 040790 8003FB90 46002480 */ add.s $f18, $f4, $f0
/* 040794 8003FB94 E612021C */ swc1 $f18, 0x21c($s0)
.L8003FB98:
/* 040798 8003FB98 8FBF0024 */ lw $ra, 0x24($sp)
.L8003FB9C:
/* 04079C 8003FB9C 8FB0001C */ lw $s0, 0x1c($sp)
/* 0407A0 8003FBA0 8FB10020 */ lw $s1, 0x20($sp)
/* 0407A4 8003FBA4 03E00008 */ jr $ra
/* 0407A8 8003FBA8 27BD0028 */ addiu $sp, $sp, 0x28