papermario/asm/nonmatchings/code_759b0_len_61b0/func_800DC778.s
2020-08-12 22:37:16 -04:00

272 lines
13 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_800DC778
/* 075C28 800DC778 27BDFF78 */ addiu $sp, $sp, -0x88
/* 075C2C 800DC77C F7B80068 */ sdc1 $f24, 0x68($sp)
/* 075C30 800DC780 C7B800A0 */ lwc1 $f24, 0xa0($sp)
/* 075C34 800DC784 AFB40050 */ sw $s4, 0x50($sp)
/* 075C38 800DC788 8FB40098 */ lw $s4, 0x98($sp)
/* 075C3C 800DC78C AFBF0054 */ sw $ra, 0x54($sp)
/* 075C40 800DC790 AFB3004C */ sw $s3, 0x4c($sp)
/* 075C44 800DC794 AFB20048 */ sw $s2, 0x48($sp)
/* 075C48 800DC798 AFB10044 */ sw $s1, 0x44($sp)
/* 075C4C 800DC79C AFB00040 */ sw $s0, 0x40($sp)
/* 075C50 800DC7A0 F7BE0080 */ sdc1 $f30, 0x80($sp)
/* 075C54 800DC7A4 F7BC0078 */ sdc1 $f28, 0x78($sp)
/* 075C58 800DC7A8 F7BA0070 */ sdc1 $f26, 0x70($sp)
/* 075C5C 800DC7AC F7B60060 */ sdc1 $f22, 0x60($sp)
/* 075C60 800DC7B0 F7B40058 */ sdc1 $f20, 0x58($sp)
/* 075C64 800DC7B4 C4A60000 */ lwc1 $f6, ($a1)
/* 075C68 800DC7B8 00C0882D */ daddu $s1, $a2, $zero
/* 075C6C 800DC7BC E7A60028 */ swc1 $f6, 0x28($sp)
/* 075C70 800DC7C0 C6260000 */ lwc1 $f6, ($s1)
/* 075C74 800DC7C4 0080902D */ daddu $s2, $a0, $zero
/* 075C78 800DC7C8 E7A6002C */ swc1 $f6, 0x2c($sp)
/* 075C7C 800DC7CC C4E60000 */ lwc1 $f6, ($a3)
/* 075C80 800DC7D0 3C138011 */ lui $s3, 0x8011
/* 075C84 800DC7D4 2673C970 */ addiu $s3, $s3, -0x3690
/* 075C88 800DC7D8 E7A60030 */ swc1 $f6, 0x30($sp)
/* 075C8C 800DC7DC C7A6002C */ lwc1 $f6, 0x2c($sp)
/* 075C90 800DC7E0 44806000 */ mtc1 $zero, $f12
/* 075C94 800DC7E4 4600318D */ trunc.w.s $f6, $f6
/* 075C98 800DC7E8 E6660000 */ swc1 $f6, ($s3)
/* 075C9C 800DC7EC C6200000 */ lwc1 $f0, ($s1)
/* 075CA0 800DC7F0 3C014004 */ lui $at, 0x4004
/* 075CA4 800DC7F4 44811800 */ mtc1 $at, $f3
/* 075CA8 800DC7F8 44801000 */ mtc1 $zero, $f2
/* 075CAC 800DC7FC 4600018D */ trunc.w.s $f6, $f0
/* 075CB0 800DC800 3C018011 */ lui $at, 0x8011
/* 075CB4 800DC804 E426C94C */ swc1 $f6, -0x36b4($at)
/* 075CB8 800DC808 C7A6009C */ lwc1 $f6, 0x9c($sp)
/* 075CBC 800DC80C C6200000 */ lwc1 $f0, ($s1)
/* 075CC0 800DC810 460C3300 */ add.s $f12, $f6, $f12
/* 075CC4 800DC814 4600018D */ trunc.w.s $f6, $f0
/* 075CC8 800DC818 3C018011 */ lui $at, 0x8011
/* 075CCC 800DC81C E426C974 */ swc1 $f6, -0x368c($at)
/* 075CD0 800DC820 4600C021 */ cvt.d.s $f0, $f24
/* 075CD4 800DC824 46220003 */ div.d $f0, $f0, $f2
/* 075CD8 800DC828 C6820000 */ lwc1 $f2, ($s4)
/* 075CDC 800DC82C 46200620 */ cvt.s.d $f24, $f0
/* 075CE0 800DC830 0C00A6C9 */ jal clamp_angle
/* 075CE4 800DC834 46001685 */ abs.s $f26, $f2
/* 075CE8 800DC838 3C0140C9 */ lui $at, 0x40c9
/* 075CEC 800DC83C 34210FD0 */ ori $at, $at, 0xfd0
/* 075CF0 800DC840 44811000 */ mtc1 $at, $f2
/* 075CF4 800DC844 00000000 */ nop
/* 075CF8 800DC848 46020002 */ mul.s $f0, $f0, $f2
/* 075CFC 800DC84C 00000000 */ nop
/* 075D00 800DC850 3C0143B4 */ lui $at, 0x43b4
/* 075D04 800DC854 44811000 */ mtc1 $at, $f2
/* 075D08 800DC858 00000000 */ nop
/* 075D0C 800DC85C 46020503 */ div.s $f20, $f0, $f2
/* 075D10 800DC860 0C00A85B */ jal sin_rad
/* 075D14 800DC864 4600A306 */ mov.s $f12, $f20
/* 075D18 800DC868 46000586 */ mov.s $f22, $f0
/* 075D1C 800DC86C 0C00A874 */ jal cos_rad
/* 075D20 800DC870 4600A306 */ mov.s $f12, $f20
/* 075D24 800DC874 4616C102 */ mul.s $f4, $f24, $f22
/* 075D28 800DC878 00000000 */ nop
/* 075D2C 800DC87C 0000802D */ daddu $s0, $zero, $zero
/* 075D30 800DC880 0240202D */ daddu $a0, $s2, $zero
/* 075D34 800DC884 27A50018 */ addiu $a1, $sp, 0x18
/* 075D38 800DC888 4600C087 */ neg.s $f2, $f24
/* 075D3C 800DC88C 46001002 */ mul.s $f0, $f2, $f0
/* 075D40 800DC890 00000000 */ nop
/* 075D44 800DC894 27A6001C */ addiu $a2, $sp, 0x1c
/* 075D48 800DC898 27A70020 */ addiu $a3, $sp, 0x20
/* 075D4C 800DC89C C7A60028 */ lwc1 $f6, 0x28($sp)
/* 075D50 800DC8A0 3C01C6FF */ lui $at, 0xc6ff
/* 075D54 800DC8A4 3421FE00 */ ori $at, $at, 0xfe00
/* 075D58 800DC8A8 4481E000 */ mtc1 $at, $f28
/* 075D5C 800DC8AC 46043080 */ add.s $f2, $f6, $f4
/* 075D60 800DC8B0 C7A6002C */ lwc1 $f6, 0x2c($sp)
/* 075D64 800DC8B4 27A20024 */ addiu $v0, $sp, 0x24
/* 075D68 800DC8B8 E7BA0024 */ swc1 $f26, 0x24($sp)
/* 075D6C 800DC8BC E7A6001C */ swc1 $f6, 0x1c($sp)
/* 075D70 800DC8C0 C7A60030 */ lwc1 $f6, 0x30($sp)
/* 075D74 800DC8C4 4600E786 */ mov.s $f30, $f28
/* 075D78 800DC8C8 46003000 */ add.s $f0, $f6, $f0
/* 075D7C 800DC8CC E7BC0038 */ swc1 $f28, 0x38($sp)
/* 075D80 800DC8D0 E7A20018 */ swc1 $f2, 0x18($sp)
/* 075D84 800DC8D4 E7A00020 */ swc1 $f0, 0x20($sp)
/* 075D88 800DC8D8 0C037140 */ jal func_800DC500
/* 075D8C 800DC8DC AFA20010 */ sw $v0, 0x10($sp)
/* 075D90 800DC8E0 0440000F */ bltz $v0, .L800DC920
/* 075D94 800DC8E4 E7BA0034 */ swc1 $f26, 0x34($sp)
/* 075D98 800DC8E8 C7A00024 */ lwc1 $f0, 0x24($sp)
/* 075D9C 800DC8EC 461A003E */ c.le.s $f0, $f26
/* 075DA0 800DC8F0 00000000 */ nop
/* 075DA4 800DC8F4 4500000A */ bc1f .L800DC920
/* 075DA8 800DC8F8 00000000 */ nop
/* 075DAC 800DC8FC 46000686 */ mov.s $f26, $f0
/* 075DB0 800DC900 C7BC001C */ lwc1 $f28, 0x1c($sp)
/* 075DB4 800DC904 24100001 */ addiu $s0, $zero, 1
/* 075DB8 800DC908 3C018011 */ lui $at, 0x8011
/* 075DBC 800DC90C AC22C978 */ sw $v0, -0x3688($at)
/* 075DC0 800DC910 3C018011 */ lui $at, 0x8011
/* 075DC4 800DC914 AC22C98C */ sw $v0, -0x3674($at)
/* 075DC8 800DC918 4600E18D */ trunc.w.s $f6, $f28
/* 075DCC 800DC91C E6660000 */ swc1 $f6, ($s3)
.L800DC920:
/* 075DD0 800DC920 3C0142F0 */ lui $at, 0x42f0
/* 075DD4 800DC924 44816000 */ mtc1 $at, $f12
/* 075DD8 800DC928 C7A6009C */ lwc1 $f6, 0x9c($sp)
/* 075DDC 800DC92C 0C00A6C9 */ jal clamp_angle
/* 075DE0 800DC930 460C3300 */ add.s $f12, $f6, $f12
/* 075DE4 800DC934 3C0140C9 */ lui $at, 0x40c9
/* 075DE8 800DC938 34210FD0 */ ori $at, $at, 0xfd0
/* 075DEC 800DC93C 44811000 */ mtc1 $at, $f2
/* 075DF0 800DC940 00000000 */ nop
/* 075DF4 800DC944 46020002 */ mul.s $f0, $f0, $f2
/* 075DF8 800DC948 00000000 */ nop
/* 075DFC 800DC94C 3C0143B4 */ lui $at, 0x43b4
/* 075E00 800DC950 44811000 */ mtc1 $at, $f2
/* 075E04 800DC954 00000000 */ nop
/* 075E08 800DC958 46020503 */ div.s $f20, $f0, $f2
/* 075E0C 800DC95C 0C00A85B */ jal sin_rad
/* 075E10 800DC960 4600A306 */ mov.s $f12, $f20
/* 075E14 800DC964 46000586 */ mov.s $f22, $f0
/* 075E18 800DC968 0C00A874 */ jal cos_rad
/* 075E1C 800DC96C 4600A306 */ mov.s $f12, $f20
/* 075E20 800DC970 4616C102 */ mul.s $f4, $f24, $f22
/* 075E24 800DC974 00000000 */ nop
/* 075E28 800DC978 4600C087 */ neg.s $f2, $f24
/* 075E2C 800DC97C 46001002 */ mul.s $f0, $f2, $f0
/* 075E30 800DC980 00000000 */ nop
/* 075E34 800DC984 0240202D */ daddu $a0, $s2, $zero
/* 075E38 800DC988 C7A60028 */ lwc1 $f6, 0x28($sp)
/* 075E3C 800DC98C 27A50018 */ addiu $a1, $sp, 0x18
/* 075E40 800DC990 46043080 */ add.s $f2, $f6, $f4
/* 075E44 800DC994 C7A6002C */ lwc1 $f6, 0x2c($sp)
/* 075E48 800DC998 27A6001C */ addiu $a2, $sp, 0x1c
/* 075E4C 800DC99C E7A6001C */ swc1 $f6, 0x1c($sp)
/* 075E50 800DC9A0 C7A60030 */ lwc1 $f6, 0x30($sp)
/* 075E54 800DC9A4 27A70020 */ addiu $a3, $sp, 0x20
/* 075E58 800DC9A8 46003000 */ add.s $f0, $f6, $f0
/* 075E5C 800DC9AC C7A60034 */ lwc1 $f6, 0x34($sp)
/* 075E60 800DC9B0 27A20024 */ addiu $v0, $sp, 0x24
/* 075E64 800DC9B4 E7A20018 */ swc1 $f2, 0x18($sp)
/* 075E68 800DC9B8 E7A60024 */ swc1 $f6, 0x24($sp)
/* 075E6C 800DC9BC E7A00020 */ swc1 $f0, 0x20($sp)
/* 075E70 800DC9C0 0C037140 */ jal func_800DC500
/* 075E74 800DC9C4 AFA20010 */ sw $v0, 0x10($sp)
/* 075E78 800DC9C8 04400010 */ bltz $v0, .L800DCA0C
/* 075E7C 800DC9CC 00000000 */ nop
/* 075E80 800DC9D0 C7A00024 */ lwc1 $f0, 0x24($sp)
/* 075E84 800DC9D4 461A003E */ c.le.s $f0, $f26
/* 075E88 800DC9D8 00000000 */ nop
/* 075E8C 800DC9DC 4500000B */ bc1f .L800DCA0C
/* 075E90 800DC9E0 00000000 */ nop
/* 075E94 800DC9E4 46000686 */ mov.s $f26, $f0
/* 075E98 800DC9E8 C7BE001C */ lwc1 $f30, 0x1c($sp)
/* 075E9C 800DC9EC 24100001 */ addiu $s0, $zero, 1
/* 075EA0 800DC9F0 3C018011 */ lui $at, 0x8011
/* 075EA4 800DC9F4 AC22C978 */ sw $v0, -0x3688($at)
/* 075EA8 800DC9F8 3C018011 */ lui $at, 0x8011
/* 075EAC 800DC9FC AC22C968 */ sw $v0, -0x3698($at)
/* 075EB0 800DCA00 4600F18D */ trunc.w.s $f6, $f30
/* 075EB4 800DCA04 3C018011 */ lui $at, 0x8011
/* 075EB8 800DCA08 E426C94C */ swc1 $f6, -0x36b4($at)
.L800DCA0C:
/* 075EBC 800DCA0C 3C0142F0 */ lui $at, 0x42f0
/* 075EC0 800DCA10 44816000 */ mtc1 $at, $f12
/* 075EC4 800DCA14 C7A6009C */ lwc1 $f6, 0x9c($sp)
/* 075EC8 800DCA18 0C00A6C9 */ jal clamp_angle
/* 075ECC 800DCA1C 460C3301 */ sub.s $f12, $f6, $f12
/* 075ED0 800DCA20 3C0140C9 */ lui $at, 0x40c9
/* 075ED4 800DCA24 34210FD0 */ ori $at, $at, 0xfd0
/* 075ED8 800DCA28 44811000 */ mtc1 $at, $f2
/* 075EDC 800DCA2C 00000000 */ nop
/* 075EE0 800DCA30 46020002 */ mul.s $f0, $f0, $f2
/* 075EE4 800DCA34 00000000 */ nop
/* 075EE8 800DCA38 3C0143B4 */ lui $at, 0x43b4
/* 075EEC 800DCA3C 44811000 */ mtc1 $at, $f2
/* 075EF0 800DCA40 00000000 */ nop
/* 075EF4 800DCA44 46020503 */ div.s $f20, $f0, $f2
/* 075EF8 800DCA48 0C00A85B */ jal sin_rad
/* 075EFC 800DCA4C 4600A306 */ mov.s $f12, $f20
/* 075F00 800DCA50 46000586 */ mov.s $f22, $f0
/* 075F04 800DCA54 0C00A874 */ jal cos_rad
/* 075F08 800DCA58 4600A306 */ mov.s $f12, $f20
/* 075F0C 800DCA5C 4616C102 */ mul.s $f4, $f24, $f22
/* 075F10 800DCA60 00000000 */ nop
/* 075F14 800DCA64 4600C087 */ neg.s $f2, $f24
/* 075F18 800DCA68 46001002 */ mul.s $f0, $f2, $f0
/* 075F1C 800DCA6C 00000000 */ nop
/* 075F20 800DCA70 0240202D */ daddu $a0, $s2, $zero
/* 075F24 800DCA74 C7A60028 */ lwc1 $f6, 0x28($sp)
/* 075F28 800DCA78 27A50018 */ addiu $a1, $sp, 0x18
/* 075F2C 800DCA7C 46043080 */ add.s $f2, $f6, $f4
/* 075F30 800DCA80 C7A6002C */ lwc1 $f6, 0x2c($sp)
/* 075F34 800DCA84 27A6001C */ addiu $a2, $sp, 0x1c
/* 075F38 800DCA88 E7A6001C */ swc1 $f6, 0x1c($sp)
/* 075F3C 800DCA8C C7A60030 */ lwc1 $f6, 0x30($sp)
/* 075F40 800DCA90 27A70020 */ addiu $a3, $sp, 0x20
/* 075F44 800DCA94 46003000 */ add.s $f0, $f6, $f0
/* 075F48 800DCA98 C7A60034 */ lwc1 $f6, 0x34($sp)
/* 075F4C 800DCA9C 27A20024 */ addiu $v0, $sp, 0x24
/* 075F50 800DCAA0 E7A20018 */ swc1 $f2, 0x18($sp)
/* 075F54 800DCAA4 E7A60024 */ swc1 $f6, 0x24($sp)
/* 075F58 800DCAA8 E7A00020 */ swc1 $f0, 0x20($sp)
/* 075F5C 800DCAAC 0C037140 */ jal func_800DC500
/* 075F60 800DCAB0 AFA20010 */ sw $v0, 0x10($sp)
/* 075F64 800DCAB4 04400011 */ bltz $v0, .L800DCAFC
/* 075F68 800DCAB8 00000000 */ nop
/* 075F6C 800DCABC C7A00024 */ lwc1 $f0, 0x24($sp)
/* 075F70 800DCAC0 461A003E */ c.le.s $f0, $f26
/* 075F74 800DCAC4 00000000 */ nop
/* 075F78 800DCAC8 4500000C */ bc1f .L800DCAFC
/* 075F7C 800DCACC 00000000 */ nop
/* 075F80 800DCAD0 46000686 */ mov.s $f26, $f0
/* 075F84 800DCAD4 C7A6001C */ lwc1 $f6, 0x1c($sp)
/* 075F88 800DCAD8 24100001 */ addiu $s0, $zero, 1
/* 075F8C 800DCADC 3C018011 */ lui $at, 0x8011
/* 075F90 800DCAE0 AC22C978 */ sw $v0, -0x3688($at)
/* 075F94 800DCAE4 3C018011 */ lui $at, 0x8011
/* 075F98 800DCAE8 AC22C968 */ sw $v0, -0x3698($at)
/* 075F9C 800DCAEC E7A60038 */ swc1 $f6, 0x38($sp)
/* 075FA0 800DCAF0 4600318D */ trunc.w.s $f6, $f6
/* 075FA4 800DCAF4 3C018011 */ lui $at, 0x8011
/* 075FA8 800DCAF8 E426C974 */ swc1 $f6, -0x368c($at)
.L800DCAFC:
/* 075FAC 800DCAFC 1200000F */ beqz $s0, .L800DCB3C
/* 075FB0 800DCB00 0000102D */ daddu $v0, $zero, $zero
/* 075FB4 800DCB04 461EE03C */ c.lt.s $f28, $f30
/* 075FB8 800DCB08 00000000 */ nop
/* 075FBC 800DCB0C 45020002 */ bc1fl .L800DCB18
/* 075FC0 800DCB10 E63C0000 */ swc1 $f28, ($s1)
/* 075FC4 800DCB14 E63E0000 */ swc1 $f30, ($s1)
.L800DCB18:
/* 075FC8 800DCB18 C6200000 */ lwc1 $f0, ($s1)
/* 075FCC 800DCB1C C7A60038 */ lwc1 $f6, 0x38($sp)
/* 075FD0 800DCB20 4606003C */ c.lt.s $f0, $f6
/* 075FD4 800DCB24 00000000 */ nop
/* 075FD8 800DCB28 45030001 */ bc1tl .L800DCB30
/* 075FDC 800DCB2C E6260000 */ swc1 $f6, ($s1)
.L800DCB30:
/* 075FE0 800DCB30 E69A0000 */ swc1 $f26, ($s4)
/* 075FE4 800DCB34 080372D1 */ j .L800DCB44
/* 075FE8 800DCB38 24020001 */ addiu $v0, $zero, 1
.L800DCB3C:
/* 075FEC 800DCB3C C7A0001C */ lwc1 $f0, 0x1c($sp)
/* 075FF0 800DCB40 E6200000 */ swc1 $f0, ($s1)
.L800DCB44:
/* 075FF4 800DCB44 8FBF0054 */ lw $ra, 0x54($sp)
/* 075FF8 800DCB48 8FB40050 */ lw $s4, 0x50($sp)
/* 075FFC 800DCB4C 8FB3004C */ lw $s3, 0x4c($sp)
/* 076000 800DCB50 8FB20048 */ lw $s2, 0x48($sp)
/* 076004 800DCB54 8FB10044 */ lw $s1, 0x44($sp)
/* 076008 800DCB58 8FB00040 */ lw $s0, 0x40($sp)
/* 07600C 800DCB5C D7BE0080 */ ldc1 $f30, 0x80($sp)
/* 076010 800DCB60 D7BC0078 */ ldc1 $f28, 0x78($sp)
/* 076014 800DCB64 D7BA0070 */ ldc1 $f26, 0x70($sp)
/* 076018 800DCB68 D7B80068 */ ldc1 $f24, 0x68($sp)
/* 07601C 800DCB6C D7B60060 */ ldc1 $f22, 0x60($sp)
/* 076020 800DCB70 D7B40058 */ ldc1 $f20, 0x58($sp)
/* 076024 800DCB74 03E00008 */ jr $ra
/* 076028 800DCB78 27BD0088 */ addiu $sp, $sp, 0x88