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

178 lines
8.6 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_800DF15C
/* 07860C 800DF15C 27BDFF60 */ addiu $sp, $sp, -0xa0
/* 078610 800DF160 AFB1006C */ sw $s1, 0x6c($sp)
/* 078614 800DF164 00A0882D */ daddu $s1, $a1, $zero
/* 078618 800DF168 AFB00068 */ sw $s0, 0x68($sp)
/* 07861C 800DF16C 00C0802D */ daddu $s0, $a2, $zero
/* 078620 800DF170 AFBF0078 */ sw $ra, 0x78($sp)
/* 078624 800DF174 AFB30074 */ sw $s3, 0x74($sp)
/* 078628 800DF178 AFB20070 */ sw $s2, 0x70($sp)
/* 07862C 800DF17C F7BA0098 */ sdc1 $f26, 0x98($sp)
/* 078630 800DF180 F7B80090 */ sdc1 $f24, 0x90($sp)
/* 078634 800DF184 F7B60088 */ sdc1 $f22, 0x88($sp)
/* 078638 800DF188 F7B40080 */ sdc1 $f20, 0x80($sp)
/* 07863C 800DF18C 848200B2 */ lh $v0, 0xb2($a0)
/* 078640 800DF190 3C013F00 */ lui $at, 0x3f00
/* 078644 800DF194 44811000 */ mtc1 $at, $f2
/* 078648 800DF198 44820000 */ mtc1 $v0, $f0
/* 07864C 800DF19C 00000000 */ nop
/* 078650 800DF1A0 46800020 */ cvt.s.w $f0, $f0
/* 078654 800DF1A4 46020582 */ mul.s $f22, $f0, $f2
/* 078658 800DF1A8 00000000 */ nop
/* 07865C 800DF1AC 00E0902D */ daddu $s2, $a3, $zero
/* 078660 800DF1B0 C7A200B4 */ lwc1 $f2, 0xb4($sp)
/* 078664 800DF1B4 3C0140C9 */ lui $at, 0x40c9
/* 078668 800DF1B8 34210FD0 */ ori $at, $at, 0xfd0
/* 07866C 800DF1BC 44810000 */ mtc1 $at, $f0
/* 078670 800DF1C0 27A50038 */ addiu $a1, $sp, 0x38
/* 078674 800DF1C4 46001082 */ mul.s $f2, $f2, $f0
/* 078678 800DF1C8 00000000 */ nop
/* 07867C 800DF1CC 27A6003C */ addiu $a2, $sp, 0x3c
/* 078680 800DF1D0 848200B0 */ lh $v0, 0xb0($a0)
/* 078684 800DF1D4 3C013E92 */ lui $at, 0x3e92
/* 078688 800DF1D8 34216E98 */ ori $at, $at, 0x6e98
/* 07868C 800DF1DC 44810000 */ mtc1 $at, $f0
/* 078690 800DF1E0 44822000 */ mtc1 $v0, $f4
/* 078694 800DF1E4 00000000 */ nop
/* 078698 800DF1E8 46802120 */ cvt.s.w $f4, $f4
/* 07869C 800DF1EC 46002682 */ mul.s $f26, $f4, $f0
/* 0786A0 800DF1F0 00000000 */ nop
/* 0786A4 800DF1F4 3C0143B4 */ lui $at, 0x43b4
/* 0786A8 800DF1F8 44816000 */ mtc1 $at, $f12
/* 0786AC 800DF1FC C7B800B0 */ lwc1 $f24, 0xb0($sp)
/* 0786B0 800DF200 0C00A82D */ jal sin_cos_rad
/* 0786B4 800DF204 460C1303 */ div.s $f12, $f2, $f12
/* 0786B8 800DF208 4616C500 */ add.s $f20, $f24, $f22
/* 0786BC 800DF20C C7A0003C */ lwc1 $f0, 0x3c($sp)
/* 0786C0 800DF210 C7A40038 */ lwc1 $f4, 0x38($sp)
/* 0786C4 800DF214 46000007 */ neg.s $f0, $f0
/* 0786C8 800DF218 E7A0003C */ swc1 $f0, 0x3c($sp)
/* 0786CC 800DF21C E7B4004C */ swc1 $f20, 0x4c($sp)
/* 0786D0 800DF220 C6020000 */ lwc1 $f2, ($s0)
/* 0786D4 800DF224 2413FFFF */ addiu $s3, $zero, -1
/* 0786D8 800DF228 E7A00018 */ swc1 $f0, 0x18($sp)
/* 0786DC 800DF22C 3C018011 */ lui $at, 0x8011
/* 0786E0 800DF230 D420BC50 */ ldc1 $f0, -0x43b0($at)
/* 0786E4 800DF234 27A20040 */ addiu $v0, $sp, 0x40
/* 0786E8 800DF238 AFA2001C */ sw $v0, 0x1c($sp)
/* 0786EC 800DF23C 27A20044 */ addiu $v0, $sp, 0x44
/* 0786F0 800DF240 AFA20020 */ sw $v0, 0x20($sp)
/* 0786F4 800DF244 27A20048 */ addiu $v0, $sp, 0x48
/* 0786F8 800DF248 AFA20024 */ sw $v0, 0x24($sp)
/* 0786FC 800DF24C 27A2004C */ addiu $v0, $sp, 0x4c
/* 078700 800DF250 AFA20028 */ sw $v0, 0x28($sp)
/* 078704 800DF254 27A20050 */ addiu $v0, $sp, 0x50
/* 078708 800DF258 AFA2002C */ sw $v0, 0x2c($sp)
/* 07870C 800DF25C 27A20054 */ addiu $v0, $sp, 0x54
/* 078710 800DF260 AFA20030 */ sw $v0, 0x30($sp)
/* 078714 800DF264 27A20058 */ addiu $v0, $sp, 0x58
/* 078718 800DF268 E7A40010 */ swc1 $f4, 0x10($sp)
/* 07871C 800DF26C AFA00014 */ sw $zero, 0x14($sp)
/* 078720 800DF270 AFA20034 */ sw $v0, 0x34($sp)
/* 078724 800DF274 460010A1 */ cvt.d.s $f2, $f2
/* 078728 800DF278 46201080 */ add.d $f2, $f2, $f0
/* 07872C 800DF27C 8E250000 */ lw $a1, ($s1)
/* 078730 800DF280 8E470000 */ lw $a3, ($s2)
/* 078734 800DF284 462010A0 */ cvt.s.d $f2, $f2
/* 078738 800DF288 44061000 */ mfc1 $a2, $f2
/* 07873C 800DF28C 0C037B97 */ jal func_800DEE5C
/* 078740 800DF290 0000202D */ daddu $a0, $zero, $zero
/* 078744 800DF294 04420009 */ bltzl $v0, .L800DF2BC
/* 078748 800DF298 4616C500 */ add.s $f20, $f24, $f22
/* 07874C 800DF29C C7A0004C */ lwc1 $f0, 0x4c($sp)
/* 078750 800DF2A0 4614003E */ c.le.s $f0, $f20
/* 078754 800DF2A4 00000000 */ nop
/* 078758 800DF2A8 45000003 */ bc1f .L800DF2B8
/* 07875C 800DF2AC 24030001 */ addiu $v1, $zero, 1
/* 078760 800DF2B0 8FA200B8 */ lw $v0, 0xb8($sp)
/* 078764 800DF2B4 AC430000 */ sw $v1, ($v0)
.L800DF2B8:
/* 078768 800DF2B8 4616C500 */ add.s $f20, $f24, $f22
.L800DF2BC:
/* 07876C 800DF2BC C7A00038 */ lwc1 $f0, 0x38($sp)
/* 078770 800DF2C0 C7A2003C */ lwc1 $f2, 0x3c($sp)
/* 078774 800DF2C4 E7B4004C */ swc1 $f20, 0x4c($sp)
/* 078778 800DF2C8 C6040000 */ lwc1 $f4, ($s0)
/* 07877C 800DF2CC 27A20040 */ addiu $v0, $sp, 0x40
/* 078780 800DF2D0 AFA2001C */ sw $v0, 0x1c($sp)
/* 078784 800DF2D4 27A20044 */ addiu $v0, $sp, 0x44
/* 078788 800DF2D8 AFA20020 */ sw $v0, 0x20($sp)
/* 07878C 800DF2DC 27A20048 */ addiu $v0, $sp, 0x48
/* 078790 800DF2E0 AFA20024 */ sw $v0, 0x24($sp)
/* 078794 800DF2E4 27A2004C */ addiu $v0, $sp, 0x4c
/* 078798 800DF2E8 AFA20028 */ sw $v0, 0x28($sp)
/* 07879C 800DF2EC 27A20050 */ addiu $v0, $sp, 0x50
/* 0787A0 800DF2F0 AFA2002C */ sw $v0, 0x2c($sp)
/* 0787A4 800DF2F4 27A20054 */ addiu $v0, $sp, 0x54
/* 0787A8 800DF2F8 AFA20030 */ sw $v0, 0x30($sp)
/* 0787AC 800DF2FC 27A20058 */ addiu $v0, $sp, 0x58
/* 0787B0 800DF300 E7A00010 */ swc1 $f0, 0x10($sp)
/* 0787B4 800DF304 AFA00014 */ sw $zero, 0x14($sp)
/* 0787B8 800DF308 E7A20018 */ swc1 $f2, 0x18($sp)
/* 0787BC 800DF30C AFA20034 */ sw $v0, 0x34($sp)
/* 0787C0 800DF310 461A2100 */ add.s $f4, $f4, $f26
/* 0787C4 800DF314 8E250000 */ lw $a1, ($s1)
/* 0787C8 800DF318 8E470000 */ lw $a3, ($s2)
/* 0787CC 800DF31C 44062000 */ mfc1 $a2, $f4
/* 0787D0 800DF320 0C037B97 */ jal func_800DEE5C
/* 0787D4 800DF324 0000202D */ daddu $a0, $zero, $zero
/* 0787D8 800DF328 4480C000 */ mtc1 $zero, $f24
/* 0787DC 800DF32C 0040802D */ daddu $s0, $v0, $zero
/* 0787E0 800DF330 06000020 */ bltz $s0, .L800DF3B4
/* 0787E4 800DF334 4600C686 */ mov.s $f26, $f24
/* 0787E8 800DF338 C7B6004C */ lwc1 $f22, 0x4c($sp)
/* 0787EC 800DF33C 4614B03E */ c.le.s $f22, $f20
/* 0787F0 800DF340 00000000 */ nop
/* 0787F4 800DF344 4500001B */ bc1f .L800DF3B4
/* 0787F8 800DF348 27A4005C */ addiu $a0, $sp, 0x5c
/* 0787FC 800DF34C 4614B581 */ sub.s $f22, $f22, $f20
/* 078800 800DF350 4406C000 */ mfc1 $a2, $f24
/* 078804 800DF354 C7B40038 */ lwc1 $f20, 0x38($sp)
/* 078808 800DF358 4407C000 */ mfc1 $a3, $f24
/* 07880C 800DF35C C7A2003C */ lwc1 $f2, 0x3c($sp)
/* 078810 800DF360 4614B502 */ mul.s $f20, $f22, $f20
/* 078814 800DF364 00000000 */ nop
/* 078818 800DF368 C7A00050 */ lwc1 $f0, 0x50($sp)
/* 07881C 800DF36C 27A50060 */ addiu $a1, $sp, 0x60
/* 078820 800DF370 E7A00010 */ swc1 $f0, 0x10($sp)
/* 078824 800DF374 C7A00058 */ lwc1 $f0, 0x58($sp)
/* 078828 800DF378 4602B582 */ mul.s $f22, $f22, $f2
/* 07882C 800DF37C 00000000 */ nop
/* 078830 800DF380 0C037CFF */ jal func_800DF3FC
/* 078834 800DF384 E7A00014 */ swc1 $f0, 0x14($sp)
/* 078838 800DF388 C7A0005C */ lwc1 $f0, 0x5c($sp)
/* 07883C 800DF38C 4600A500 */ add.s $f20, $f20, $f0
/* 078840 800DF390 C6200000 */ lwc1 $f0, ($s1)
/* 078844 800DF394 46140000 */ add.s $f0, $f0, $f20
/* 078848 800DF398 E6200000 */ swc1 $f0, ($s1)
/* 07884C 800DF39C C7A00060 */ lwc1 $f0, 0x60($sp)
/* 078850 800DF3A0 4600B580 */ add.s $f22, $f22, $f0
/* 078854 800DF3A4 C6400000 */ lwc1 $f0, ($s2)
/* 078858 800DF3A8 46160000 */ add.s $f0, $f0, $f22
/* 07885C 800DF3AC 0200982D */ daddu $s3, $s0, $zero
/* 078860 800DF3B0 E6400000 */ swc1 $f0, ($s2)
.L800DF3B4:
/* 078864 800DF3B4 C6200000 */ lwc1 $f0, ($s1)
/* 078868 800DF3B8 461A0000 */ add.s $f0, $f0, $f26
/* 07886C 800DF3BC E6200000 */ swc1 $f0, ($s1)
/* 078870 800DF3C0 C6400000 */ lwc1 $f0, ($s2)
/* 078874 800DF3C4 46180000 */ add.s $f0, $f0, $f24
/* 078878 800DF3C8 0260102D */ daddu $v0, $s3, $zero
/* 07887C 800DF3CC E6400000 */ swc1 $f0, ($s2)
/* 078880 800DF3D0 8FBF0078 */ lw $ra, 0x78($sp)
/* 078884 800DF3D4 8FB30074 */ lw $s3, 0x74($sp)
/* 078888 800DF3D8 8FB20070 */ lw $s2, 0x70($sp)
/* 07888C 800DF3DC 8FB1006C */ lw $s1, 0x6c($sp)
/* 078890 800DF3E0 8FB00068 */ lw $s0, 0x68($sp)
/* 078894 800DF3E4 D7BA0098 */ ldc1 $f26, 0x98($sp)
/* 078898 800DF3E8 D7B80090 */ ldc1 $f24, 0x90($sp)
/* 07889C 800DF3EC D7B60088 */ ldc1 $f22, 0x88($sp)
/* 0788A0 800DF3F0 D7B40080 */ ldc1 $f20, 0x80($sp)
/* 0788A4 800DF3F4 03E00008 */ jr $ra
/* 0788A8 800DF3F8 27BD00A0 */ addiu $sp, $sp, 0xa0