1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2024-11-25 01:34:18 +00:00

Match the remaining functions in Boss_Ganon2 (#1015)

* Match the remaining functions in Boss_Ganon2

* Add empty lines after declarations
This commit is contained in:
Roman971 2021-10-28 21:17:42 +02:00 committed by GitHub
parent 188690c602
commit bf0f26db9b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 151 additions and 3309 deletions

View file

@ -1,707 +0,0 @@
.late_rodata
glabel D_8090DD08
.word 0x3DA9FBE7
glabel D_8090DD0C
.word 0x3DA9FBE7
.text
glabel func_809034E4
/* 065A4 809034E4 27BDFD20 */ addiu $sp, $sp, 0xFD20 ## $sp = FFFFFD20
/* 065A8 809034E8 AFBE0068 */ sw $s8, 0x0068($sp)
/* 065AC 809034EC AFB70064 */ sw $s7, 0x0064($sp)
/* 065B0 809034F0 AFB60060 */ sw $s6, 0x0060($sp)
/* 065B4 809034F4 AFBF006C */ sw $ra, 0x006C($sp)
/* 065B8 809034F8 AFB5005C */ sw $s5, 0x005C($sp)
/* 065BC 809034FC AFB40058 */ sw $s4, 0x0058($sp)
/* 065C0 80903500 AFB30054 */ sw $s3, 0x0054($sp)
/* 065C4 80903504 AFB20050 */ sw $s2, 0x0050($sp)
/* 065C8 80903508 AFB1004C */ sw $s1, 0x004C($sp)
/* 065CC 8090350C AFB00048 */ sw $s0, 0x0048($sp)
/* 065D0 80903510 F7BE0040 */ sdc1 $f30, 0x0040($sp)
/* 065D4 80903514 F7BC0038 */ sdc1 $f28, 0x0038($sp)
/* 065D8 80903518 F7BA0030 */ sdc1 $f26, 0x0030($sp)
/* 065DC 8090351C F7B80028 */ sdc1 $f24, 0x0028($sp)
/* 065E0 80903520 F7B60020 */ sdc1 $f22, 0x0020($sp)
/* 065E4 80903524 F7B40018 */ sdc1 $f20, 0x0018($sp)
/* 065E8 80903528 27B6018C */ addiu $s6, $sp, 0x018C ## $s6 = FFFFFEAC
/* 065EC 8090352C 2417000C */ addiu $s7, $zero, 0x000C ## $s7 = 0000000C
/* 065F0 80903530 27BE009C */ addiu $s8, $sp, 0x009C ## $s8 = FFFFFDBC
/* 065F4 80903534 00001025 */ or $v0, $zero, $zero ## $v0 = 00000000
.L80903538:
/* 065F8 80903538 00570019 */ multu $v0, $s7
/* 065FC 8090353C 8C980000 */ lw $t8, 0x0000($a0) ## 00000000
/* 06600 80903540 24420001 */ addiu $v0, $v0, 0x0001 ## $v0 = 00000001
/* 06604 80903544 00021400 */ sll $v0, $v0, 16
/* 06608 80903548 00021403 */ sra $v0, $v0, 16
/* 0660C 8090354C 28410014 */ slti $at, $v0, 0x0014
/* 06610 80903550 00001812 */ mflo $v1
/* 06614 80903554 02C37021 */ addu $t6, $s6, $v1
/* 06618 80903558 ADD80000 */ sw $t8, 0x0000($t6) ## 00000000
/* 0661C 8090355C 8C8F0004 */ lw $t7, 0x0004($a0) ## 00000004
/* 06620 80903560 03C3C821 */ addu $t9, $s8, $v1
/* 06624 80903564 ADCF0004 */ sw $t7, 0x0004($t6) ## 00000004
/* 06628 80903568 8C980008 */ lw $t8, 0x0008($a0) ## 00000008
/* 0662C 8090356C ADD80008 */ sw $t8, 0x0008($t6) ## 00000008
/* 06630 80903570 8CAA0000 */ lw $t2, 0x0000($a1) ## 00000000
/* 06634 80903574 AF2A0000 */ sw $t2, 0x0000($t9) ## 00000000
/* 06638 80903578 8CA90004 */ lw $t1, 0x0004($a1) ## 00000004
/* 0663C 8090357C AF290004 */ sw $t1, 0x0004($t9) ## 00000004
/* 06640 80903580 8CAA0008 */ lw $t2, 0x0008($a1) ## 00000008
/* 06644 80903584 1420FFEC */ bne $at, $zero, .L80903538
/* 06648 80903588 AF2A0008 */ sw $t2, 0x0008($t9) ## 00000008
/* 0664C 8090358C 3C028091 */ lui $v0, %hi(D_809105D8+0x18) ## $v0 = 80910000
/* 06650 80903590 244205F0 */ addiu $v0, $v0, %lo(D_809105D8+0x18) ## $v0 = 809105F0
/* 06654 80903594 8C4D0000 */ lw $t5, 0x0000($v0) ## 809105F0
/* 06658 80903598 3C0B8091 */ lui $t3, %hi(D_809105D8+0x24) ## $t3 = 80910000
/* 0665C 8090359C 256B05FC */ addiu $t3, $t3, %lo(D_809105D8+0x24) ## $t3 = 809105FC
/* 06660 809035A0 AD6D0000 */ sw $t5, 0x0000($t3) ## 809105FC
/* 06664 809035A4 8C4C0004 */ lw $t4, 0x0004($v0) ## 809105F4
/* 06668 809035A8 3C038091 */ lui $v1, %hi(D_809105D8+0xC) ## $v1 = 80910000
/* 0666C 809035AC 246305E4 */ addiu $v1, $v1, %lo(D_809105D8+0xC) ## $v1 = 809105E4
/* 06670 809035B0 AD6C0004 */ sw $t4, 0x0004($t3) ## 80910600
/* 06674 809035B4 8C4D0008 */ lw $t5, 0x0008($v0) ## 809105F8
/* 06678 809035B8 3C108091 */ lui $s0, %hi(D_809105D8) ## $s0 = 80910000
/* 0667C 809035BC 261005D8 */ addiu $s0, $s0, %lo(D_809105D8) ## $s0 = 809105D8
/* 06680 809035C0 AD6D0008 */ sw $t5, 0x0008($t3) ## 80910604
/* 06684 809035C4 8C6F0000 */ lw $t7, 0x0000($v1) ## 809105E4
/* 06688 809035C8 27AB02D0 */ addiu $t3, $sp, 0x02D0 ## $t3 = FFFFFFF0
/* 0668C 809035CC 0000A025 */ or $s4, $zero, $zero ## $s4 = 00000000
/* 06690 809035D0 AC4F0000 */ sw $t7, 0x0000($v0) ## 809105F0
/* 06694 809035D4 8C6E0004 */ lw $t6, 0x0004($v1) ## 809105E8
/* 06698 809035D8 AC4E0004 */ sw $t6, 0x0004($v0) ## 809105F4
/* 0669C 809035DC 8C6F0008 */ lw $t7, 0x0008($v1) ## 809105EC
/* 066A0 809035E0 AC4F0008 */ sw $t7, 0x0008($v0) ## 809105F8
/* 066A4 809035E4 8E190000 */ lw $t9, 0x0000($s0) ## 809105D8
/* 066A8 809035E8 AC790000 */ sw $t9, 0x0000($v1) ## 809105E4
/* 066AC 809035EC 8E180004 */ lw $t8, 0x0004($s0) ## 809105DC
/* 066B0 809035F0 AC780004 */ sw $t8, 0x0004($v1) ## 809105E8
/* 066B4 809035F4 8E190008 */ lw $t9, 0x0008($s0) ## 809105E0
/* 066B8 809035F8 AC790008 */ sw $t9, 0x0008($v1) ## 809105EC
/* 066BC 809035FC 8C8A0000 */ lw $t2, 0x0000($a0) ## 00000000
/* 066C0 80903600 AE0A0000 */ sw $t2, 0x0000($s0) ## 809105D8
/* 066C4 80903604 8C890004 */ lw $t1, 0x0004($a0) ## 00000004
/* 066C8 80903608 8E0D0000 */ lw $t5, 0x0000($s0) ## 809105D8
/* 066CC 8090360C AE090004 */ sw $t1, 0x0004($s0) ## 809105DC
/* 066D0 80903610 8C8A0008 */ lw $t2, 0x0008($a0) ## 00000008
/* 066D4 80903614 AE0A0008 */ sw $t2, 0x0008($s0) ## 809105E0
/* 066D8 80903618 AD6D0000 */ sw $t5, 0x0000($t3) ## FFFFFFF0
/* 066DC 8090361C 8E0C0004 */ lw $t4, 0x0004($s0) ## 809105DC
/* 066E0 80903620 AD6C0004 */ sw $t4, 0x0004($t3) ## FFFFFFF4
/* 066E4 80903624 8E0D0008 */ lw $t5, 0x0008($s0) ## 809105E0
/* 066E8 80903628 AD6D0008 */ sw $t5, 0x0008($t3) ## FFFFFFF8
/* 066EC 8090362C C7A602D0 */ lwc1 $f6, 0x02D0($sp)
/* 066F0 80903630 C604000C */ lwc1 $f4, 0x000C($s0) ## 809105E4
/* 066F4 80903634 C7AA02D4 */ lwc1 $f10, 0x02D4($sp)
/* 066F8 80903638 C6080010 */ lwc1 $f8, 0x0010($s0) ## 809105E8
/* 066FC 8090363C 46062501 */ sub.s $f20, $f4, $f6
/* 06700 80903640 C7A602D8 */ lwc1 $f6, 0x02D8($sp)
/* 06704 80903644 C6040014 */ lwc1 $f4, 0x0014($s0) ## 809105EC
/* 06708 80903648 AFA502E4 */ sw $a1, 0x02E4($sp)
/* 0670C 8090364C 4600A386 */ mov.s $f14, $f20
/* 06710 80903650 46062581 */ sub.s $f22, $f4, $f6
/* 06714 80903654 460A4601 */ sub.s $f24, $f8, $f10
/* 06718 80903658 0C034199 */ jal Math_Atan2S
/* 0671C 8090365C 4600B306 */ mov.s $f12, $f22
/* 06720 80903660 4614A682 */ mul.s $f26, $f20, $f20
/* 06724 80903664 A7A202CA */ sh $v0, 0x02CA($sp)
/* 06728 80903668 4600C386 */ mov.s $f14, $f24
/* 0672C 8090366C 4616B702 */ mul.s $f28, $f22, $f22
/* 06730 80903670 461CD000 */ add.s $f0, $f26, $f28
/* 06734 80903674 0C034199 */ jal Math_Atan2S
/* 06738 80903678 46000304 */ sqrt.s $f12, $f0
/* 0673C 8090367C C60C0018 */ lwc1 $f12, 0x0018($s0) ## 809105F0
/* 06740 80903680 C608000C */ lwc1 $f8, 0x000C($s0) ## 809105E4
/* 06744 80903684 C610001C */ lwc1 $f16, 0x001C($s0) ## 809105F4
/* 06748 80903688 C60A0010 */ lwc1 $f10, 0x0010($s0) ## 809105E8
/* 0674C 8090368C 46086081 */ sub.s $f2, $f12, $f8
/* 06750 80903690 C6060024 */ lwc1 $f6, 0x0024($s0) ## 809105FC
/* 06754 80903694 C6140020 */ lwc1 $f20, 0x0020($s0) ## 809105F8
/* 06758 80903698 460A8381 */ sub.s $f14, $f16, $f10
/* 0675C 8090369C C6040014 */ lwc1 $f4, 0x0014($s0) ## 809105EC
/* 06760 809036A0 C6080028 */ lwc1 $f8, 0x0028($s0) ## 80910600
/* 06764 809036A4 460C3581 */ sub.s $f22, $f6, $f12
/* 06768 809036A8 C60A002C */ lwc1 $f10, 0x002C($s0) ## 80910604
/* 0676C 809036AC 46021182 */ mul.s $f6, $f2, $f2
/* 06770 809036B0 4604A481 */ sub.s $f18, $f20, $f4
/* 06774 809036B4 3C013F80 */ lui $at, 0x3F80 ## $at = 3F800000
/* 06778 809036B8 A7A202C8 */ sh $v0, 0x02C8($sp)
/* 0677C 809036BC 46104781 */ sub.s $f30, $f8, $f16
/* 06780 809036C0 460E7202 */ mul.s $f8, $f14, $f14
/* 06784 809036C4 44817000 */ mtc1 $at, $f14 ## $f14 = 1.00
/* 06788 809036C8 46145101 */ sub.s $f4, $f10, $f20
/* 0678C 809036CC 3C013F00 */ lui $at, 0x3F00 ## $at = 3F000000
/* 06790 809036D0 44811000 */ mtc1 $at, $f2 ## $f2 = 0.50
/* 06794 809036D4 E7A402A0 */ swc1 $f4, 0x02A0($sp)
/* 06798 809036D8 46129102 */ mul.s $f4, $f18, $f18
/* 0679C 809036DC 46083280 */ add.s $f10, $f6, $f8
/* 067A0 809036E0 C7A802A0 */ lwc1 $f8, 0x02A0($sp)
/* 067A4 809036E4 46045180 */ add.s $f6, $f10, $f4
/* 067A8 809036E8 4618C282 */ mul.s $f10, $f24, $f24
/* 067AC 809036EC 46003004 */ sqrt.s $f0, $f6
/* 067B0 809036F0 460AD100 */ add.s $f4, $f26, $f10
/* 067B4 809036F4 E7A00088 */ swc1 $f0, 0x0088($sp)
/* 067B8 809036F8 E7A00094 */ swc1 $f0, 0x0094($sp)
/* 067BC 809036FC 4616B282 */ mul.s $f10, $f22, $f22
/* 067C0 80903700 461C2180 */ add.s $f6, $f4, $f28
/* 067C4 80903704 461EF102 */ mul.s $f4, $f30, $f30
/* 067C8 80903708 46003004 */ sqrt.s $f0, $f6
/* 067CC 8090370C 46045180 */ add.s $f6, $f10, $f4
/* 067D0 80903710 46084282 */ mul.s $f10, $f8, $f8
/* 067D4 80903714 E7A00084 */ swc1 $f0, 0x0084($sp)
/* 067D8 80903718 E7A00098 */ swc1 $f0, 0x0098($sp)
/* 067DC 8090371C C7A40098 */ lwc1 $f4, 0x0098($sp)
/* 067E0 80903720 C7A80094 */ lwc1 $f8, 0x0094($sp)
/* 067E4 80903724 460A3000 */ add.s $f0, $f6, $f10
/* 067E8 80903728 46082180 */ add.s $f6, $f4, $f8
/* 067EC 8090372C 46000004 */ sqrt.s $f0, $f0
/* 067F0 80903730 46060300 */ add.s $f12, $f0, $f6
/* 067F4 80903734 C7A00084 */ lwc1 $f0, 0x0084($sp)
/* 067F8 80903738 460E603E */ c.le.s $f12, $f14
/* 067FC 8090373C 46020782 */ mul.s $f30, $f0, $f2
/* 06800 80903740 C7A00088 */ lwc1 $f0, 0x0088($sp)
/* 06804 80903744 45000002 */ bc1f .L80903750
/* 06808 80903748 00000000 */ nop
/* 0680C 8090374C 46007306 */ mov.s $f12, $f14
.L80903750:
/* 06810 80903750 46020282 */ mul.s $f10, $f0, $f2
/* 06814 80903754 3C0E8091 */ lui $t6, %hi(D_809105D8+0xC) ## $t6 = 80910000
/* 06818 80903758 25D005E4 */ addiu $s0, $t6, %lo(D_809105D8+0xC) ## $s0 = 809105E4
/* 0681C 8090375C C7A602D0 */ lwc1 $f6, 0x02D0($sp)
/* 06820 80903760 3C018091 */ lui $at, %hi(D_8090DD08) ## $at = 80910000
/* 06824 80903764 C424DD08 */ lwc1 $f4, %lo(D_8090DD08)($at)
/* 06828 80903768 24120001 */ addiu $s2, $zero, 0x0001 ## $s2 = 00000001
/* 0682C 8090376C E7AA0294 */ swc1 $f10, 0x0294($sp)
/* 06830 80903770 C6080000 */ lwc1 $f8, 0x0000($s0) ## 809105E4
/* 06834 80903774 46046702 */ mul.s $f28, $f12, $f4
/* 06838 80903778 C7A402D4 */ lwc1 $f4, 0x02D4($sp)
/* 0683C 8090377C 46064501 */ sub.s $f20, $f8, $f6
/* 06840 80903780 C7A602D8 */ lwc1 $f6, 0x02D8($sp)
/* 06844 80903784 C6080008 */ lwc1 $f8, 0x0008($s0) ## 809105EC
/* 06848 80903788 C60A0004 */ lwc1 $f10, 0x0004($s0) ## 809105E8
/* 0684C 8090378C 24130001 */ addiu $s3, $zero, 0x0001 ## $s3 = 00000001
/* 06850 80903790 46064581 */ sub.s $f22, $f8, $f6
/* 06854 80903794 46045601 */ sub.s $f24, $f10, $f4
.L80903798:
/* 06858 80903798 4600B306 */ mov.s $f12, $f22
/* 0685C 8090379C 0C034199 */ jal Math_Atan2S
/* 06860 809037A0 4600A386 */ mov.s $f14, $f20
/* 06864 809037A4 4614A282 */ mul.s $f10, $f20, $f20
/* 06868 809037A8 00028C00 */ sll $s1, $v0, 16
/* 0686C 809037AC 00118C03 */ sra $s1, $s1, 16
/* 06870 809037B0 4616B102 */ mul.s $f4, $f22, $f22
/* 06874 809037B4 4600C386 */ mov.s $f14, $f24
/* 06878 809037B8 46045000 */ add.s $f0, $f10, $f4
/* 0687C 809037BC 0C034199 */ jal Math_Atan2S
/* 06880 809037C0 46000304 */ sqrt.s $f12, $f0
/* 06884 809037C4 00022C00 */ sll $a1, $v0, 16
/* 06888 809037C8 00052C03 */ sra $a1, $a1, 16
/* 0688C 809037CC 27A402C8 */ addiu $a0, $sp, 0x02C8 ## $a0 = FFFFFFE8
/* 06890 809037D0 24060001 */ addiu $a2, $zero, 0x0001 ## $a2 = 00000001
/* 06894 809037D4 0C01E1EF */ jal Math_ApproachS
/* 06898 809037D8 24071000 */ addiu $a3, $zero, 0x1000 ## $a3 = 00001000
/* 0689C 809037DC 00112C00 */ sll $a1, $s1, 16
/* 068A0 809037E0 00052C03 */ sra $a1, $a1, 16
/* 068A4 809037E4 27A402CA */ addiu $a0, $sp, 0x02CA ## $a0 = FFFFFFEA
/* 068A8 809037E8 24060001 */ addiu $a2, $zero, 0x0001 ## $a2 = 00000001
/* 068AC 809037EC 0C01E1EF */ jal Math_ApproachS
/* 068B0 809037F0 24071000 */ addiu $a3, $zero, 0x1000 ## $a3 = 00001000
/* 068B4 809037F4 0C01DE0D */ jal Math_CosS
## coss?
/* 068B8 809037F8 87A402C8 */ lh $a0, 0x02C8($sp)
/* 068BC 809037FC 00147880 */ sll $t7, $s4, 2
/* 068C0 80903800 27B902D0 */ addiu $t9, $sp, 0x02D0 ## $t9 = FFFFFFF0
/* 068C4 80903804 8F2A0000 */ lw $t2, 0x0000($t9) ## FFFFFFF0
/* 068C8 80903808 01F47823 */ subu $t7, $t7, $s4
/* 068CC 8090380C 000F7880 */ sll $t7, $t7, 2
/* 068D0 80903810 02CFC021 */ addu $t8, $s6, $t7
/* 068D4 80903814 AF0A0000 */ sw $t2, 0x0000($t8) ## 00000000
/* 068D8 80903818 8F290004 */ lw $t1, 0x0004($t9) ## FFFFFFF4
/* 068DC 8090381C 461C0682 */ mul.s $f26, $f0, $f28
/* 068E0 80903820 AF090004 */ sw $t1, 0x0004($t8) ## 00000004
/* 068E4 80903824 8F2A0008 */ lw $t2, 0x0008($t9) ## FFFFFFF8
/* 068E8 80903828 AF0A0008 */ sw $t2, 0x0008($t8) ## 00000008
/* 068EC 8090382C 0C01DE1C */ jal Math_SinS
## sins?
/* 068F0 80903830 87A402CA */ lh $a0, 0x02CA($sp)
/* 068F4 80903834 4600D182 */ mul.s $f6, $f26, $f0
/* 068F8 80903838 C7A802D0 */ lwc1 $f8, 0x02D0($sp)
/* 068FC 8090383C 87A402C8 */ lh $a0, 0x02C8($sp)
/* 06900 80903840 46064280 */ add.s $f10, $f8, $f6
/* 06904 80903844 0C01DE1C */ jal Math_SinS
## sins?
/* 06908 80903848 E7AA02D0 */ swc1 $f10, 0x02D0($sp)
/* 0690C 8090384C 4600E202 */ mul.s $f8, $f28, $f0
/* 06910 80903850 C7A402D4 */ lwc1 $f4, 0x02D4($sp)
/* 06914 80903854 87A402CA */ lh $a0, 0x02CA($sp)
/* 06918 80903858 46082180 */ add.s $f6, $f4, $f8
/* 0691C 8090385C 0C01DE0D */ jal Math_CosS
## coss?
/* 06920 80903860 E7A602D4 */ swc1 $f6, 0x02D4($sp)
/* 06924 80903864 4600D102 */ mul.s $f4, $f26, $f0
/* 06928 80903868 C7AA02D8 */ lwc1 $f10, 0x02D8($sp)
/* 0692C 8090386C C6060000 */ lwc1 $f6, 0x0000($s0) ## 809105E4
/* 06930 80903870 3C0C8091 */ lui $t4, %hi(D_809105D8) ## $t4 = 80910000
/* 06934 80903874 2A610003 */ slti $at, $s3, 0x0003
/* 06938 80903878 26940001 */ addiu $s4, $s4, 0x0001 ## $s4 = 00000001
/* 0693C 8090387C 258C05D8 */ addiu $t4, $t4, %lo(D_809105D8) ## $t4 = 809105D8
/* 06940 80903880 46045200 */ add.s $f8, $f10, $f4
/* 06944 80903884 C7AA02D0 */ lwc1 $f10, 0x02D0($sp)
/* 06948 80903888 C6040004 */ lwc1 $f4, 0x0004($s0) ## 809105E8
/* 0694C 8090388C 329400FF */ andi $s4, $s4, 0x00FF ## $s4 = 00000001
/* 06950 80903890 460A3501 */ sub.s $f20, $f6, $f10
/* 06954 80903894 C7A602D4 */ lwc1 $f6, 0x02D4($sp)
/* 06958 80903898 C60A0008 */ lwc1 $f10, 0x0008($s0) ## 809105EC
/* 0695C 8090389C E7A802D8 */ swc1 $f8, 0x02D8($sp)
/* 06960 809038A0 46062601 */ sub.s $f24, $f4, $f6
/* 06964 809038A4 10200010 */ beq $at, $zero, .L809038E8
/* 06968 809038A8 46085581 */ sub.s $f22, $f10, $f8
/* 0696C 809038AC 4614A102 */ mul.s $f4, $f20, $f20
/* 06970 809038B0 00000000 */ nop
/* 06974 809038B4 4618C182 */ mul.s $f6, $f24, $f24
/* 06978 809038B8 46062280 */ add.s $f10, $f4, $f6
/* 0697C 809038BC 4616B202 */ mul.s $f8, $f22, $f22
/* 06980 809038C0 46085000 */ add.s $f0, $f10, $f8
/* 06984 809038C4 46000004 */ sqrt.s $f0, $f0
/* 06988 809038C8 461E003E */ c.le.s $f0, $f30
/* 0698C 809038CC 00000000 */ nop
/* 06990 809038D0 45000015 */ bc1f .L80903928
/* 06994 809038D4 00000000 */ nop
/* 06998 809038D8 26520001 */ addiu $s2, $s2, 0x0001 ## $s2 = 00000002
/* 0699C 809038DC C7BE0294 */ lwc1 $f30, 0x0294($sp)
/* 069A0 809038E0 10000011 */ beq $zero, $zero, .L80903928
/* 069A4 809038E4 325200FF */ andi $s2, $s2, 0x00FF ## $s2 = 00000002
.L809038E8:
/* 069A8 809038E8 4614A102 */ mul.s $f4, $f20, $f20
/* 069AC 809038EC 3C013F80 */ lui $at, 0x3F80 ## $at = 3F800000
/* 069B0 809038F0 4618C182 */ mul.s $f6, $f24, $f24
/* 069B4 809038F4 46062280 */ add.s $f10, $f4, $f6
/* 069B8 809038F8 4616B202 */ mul.s $f8, $f22, $f22
/* 069BC 809038FC 44812000 */ mtc1 $at, $f4 ## $f4 = 1.00
/* 069C0 80903900 00000000 */ nop
/* 069C4 80903904 4604E180 */ add.s $f6, $f28, $f4
/* 069C8 80903908 46085000 */ add.s $f0, $f10, $f8
/* 069CC 8090390C 46000004 */ sqrt.s $f0, $f0
/* 069D0 80903910 4606003E */ c.le.s $f0, $f6
/* 069D4 80903914 00000000 */ nop
/* 069D8 80903918 45020004 */ bc1fl .L8090392C
/* 069DC 8090391C 2A810014 */ slti $at, $s4, 0x0014
/* 069E0 80903920 26520001 */ addiu $s2, $s2, 0x0001 ## $s2 = 00000003
/* 069E4 80903924 325200FF */ andi $s2, $s2, 0x00FF ## $s2 = 00000003
.L80903928:
/* 069E8 80903928 2A810014 */ slti $at, $s4, 0x0014
.L8090392C:
/* 069EC 8090392C 10200004 */ beq $at, $zero, .L80903940
/* 069F0 80903930 0280A825 */ or $s5, $s4, $zero ## $s5 = 00000001
/* 069F4 80903934 2A410004 */ slti $at, $s2, 0x0004
/* 069F8 80903938 14200003 */ bne $at, $zero, .L80903948
/* 069FC 8090393C 02409825 */ or $s3, $s2, $zero ## $s3 = 00000003
.L80903940:
/* 06A00 80903940 1000000F */ beq $zero, $zero, .L80903980
/* 06A04 80903944 24120001 */ addiu $s2, $zero, 0x0001 ## $s2 = 00000001
.L80903948:
/* 06A08 80903948 00125880 */ sll $t3, $s2, 2
/* 06A0C 8090394C 01725823 */ subu $t3, $t3, $s2
/* 06A10 80903950 000B5880 */ sll $t3, $t3, 2
/* 06A14 80903954 016C8021 */ addu $s0, $t3, $t4
/* 06A18 80903958 C60A0000 */ lwc1 $f10, 0x0000($s0) ## 809105E4
/* 06A1C 8090395C C7A802D0 */ lwc1 $f8, 0x02D0($sp)
/* 06A20 80903960 C6040004 */ lwc1 $f4, 0x0004($s0) ## 809105E8
/* 06A24 80903964 C7A602D4 */ lwc1 $f6, 0x02D4($sp)
/* 06A28 80903968 46085501 */ sub.s $f20, $f10, $f8
/* 06A2C 8090396C C7A802D8 */ lwc1 $f8, 0x02D8($sp)
/* 06A30 80903970 C60A0008 */ lwc1 $f10, 0x0008($s0) ## 809105EC
/* 06A34 80903974 46062601 */ sub.s $f24, $f4, $f6
/* 06A38 80903978 1000FF87 */ beq $zero, $zero, .L80903798
/* 06A3C 8090397C 46085581 */ sub.s $f22, $f10, $f8
.L80903980:
/* 06A40 80903980 3C028091 */ lui $v0, %hi(D_80910608+0x18) ## $v0 = 80910000
/* 06A44 80903984 24420620 */ addiu $v0, $v0, %lo(D_80910608+0x18) ## $v0 = 80910620
/* 06A48 80903988 8C4F0000 */ lw $t7, 0x0000($v0) ## 80910620
/* 06A4C 8090398C 3C0D8091 */ lui $t5, %hi(D_80910608+0x24) ## $t5 = 80910000
/* 06A50 80903990 25AD062C */ addiu $t5, $t5, %lo(D_80910608+0x24) ## $t5 = 8091062C
/* 06A54 80903994 ADAF0000 */ sw $t7, 0x0000($t5) ## 8091062C
/* 06A58 80903998 8C4E0004 */ lw $t6, 0x0004($v0) ## 80910624
/* 06A5C 8090399C 3C038091 */ lui $v1, %hi(D_80910608+0xC) ## $v1 = 80910000
/* 06A60 809039A0 24630614 */ addiu $v1, $v1, %lo(D_80910608+0xC) ## $v1 = 80910614
/* 06A64 809039A4 ADAE0004 */ sw $t6, 0x0004($t5) ## 80910630
/* 06A68 809039A8 8C4F0008 */ lw $t7, 0x0008($v0) ## 80910628
/* 06A6C 809039AC 3C108091 */ lui $s0, %hi(D_80910608) ## $s0 = 80910000
/* 06A70 809039B0 26100608 */ addiu $s0, $s0, %lo(D_80910608) ## $s0 = 80910608
/* 06A74 809039B4 ADAF0008 */ sw $t7, 0x0008($t5) ## 80910634
/* 06A78 809039B8 8C790000 */ lw $t9, 0x0000($v1) ## 80910614
/* 06A7C 809039BC 8FAB02E4 */ lw $t3, 0x02E4($sp)
/* 06A80 809039C0 27AE02D0 */ addiu $t6, $sp, 0x02D0 ## $t6 = FFFFFFF0
/* 06A84 809039C4 AC590000 */ sw $t9, 0x0000($v0) ## 80910620
/* 06A88 809039C8 8C780004 */ lw $t8, 0x0004($v1) ## 80910618
/* 06A8C 809039CC 0000A025 */ or $s4, $zero, $zero ## $s4 = 00000000
/* 06A90 809039D0 AC580004 */ sw $t8, 0x0004($v0) ## 80910624
/* 06A94 809039D4 8C790008 */ lw $t9, 0x0008($v1) ## 8091061C
/* 06A98 809039D8 AC590008 */ sw $t9, 0x0008($v0) ## 80910628
/* 06A9C 809039DC 8E0A0000 */ lw $t2, 0x0000($s0) ## 80910608
/* 06AA0 809039E0 AC6A0000 */ sw $t2, 0x0000($v1) ## 80910614
/* 06AA4 809039E4 8E090004 */ lw $t1, 0x0004($s0) ## 8091060C
/* 06AA8 809039E8 AC690004 */ sw $t1, 0x0004($v1) ## 80910618
/* 06AAC 809039EC 8E0A0008 */ lw $t2, 0x0008($s0) ## 80910610
/* 06AB0 809039F0 AC6A0008 */ sw $t2, 0x0008($v1) ## 8091061C
/* 06AB4 809039F4 8D6D0000 */ lw $t5, 0x0000($t3) ## 00000000
/* 06AB8 809039F8 AE0D0000 */ sw $t5, 0x0000($s0) ## 80910608
/* 06ABC 809039FC 8D6C0004 */ lw $t4, 0x0004($t3) ## 00000004
/* 06AC0 80903A00 8E180000 */ lw $t8, 0x0000($s0) ## 80910608
/* 06AC4 80903A04 AE0C0004 */ sw $t4, 0x0004($s0) ## 8091060C
/* 06AC8 80903A08 8D6D0008 */ lw $t5, 0x0008($t3) ## 00000008
/* 06ACC 80903A0C AE0D0008 */ sw $t5, 0x0008($s0) ## 80910610
/* 06AD0 80903A10 ADD80000 */ sw $t8, 0x0000($t6) ## FFFFFFF0
/* 06AD4 80903A14 8E0F0004 */ lw $t7, 0x0004($s0) ## 8091060C
/* 06AD8 80903A18 ADCF0004 */ sw $t7, 0x0004($t6) ## FFFFFFF4
/* 06ADC 80903A1C 8E180008 */ lw $t8, 0x0008($s0) ## 80910610
/* 06AE0 80903A20 ADD80008 */ sw $t8, 0x0008($t6) ## FFFFFFF8
/* 06AE4 80903A24 C7A602D0 */ lwc1 $f6, 0x02D0($sp)
/* 06AE8 80903A28 C604000C */ lwc1 $f4, 0x000C($s0) ## 80910614
/* 06AEC 80903A2C C7A802D4 */ lwc1 $f8, 0x02D4($sp)
/* 06AF0 80903A30 C60A0010 */ lwc1 $f10, 0x0010($s0) ## 80910618
/* 06AF4 80903A34 46062501 */ sub.s $f20, $f4, $f6
/* 06AF8 80903A38 C7A602D8 */ lwc1 $f6, 0x02D8($sp)
/* 06AFC 80903A3C C6040014 */ lwc1 $f4, 0x0014($s0) ## 8091061C
/* 06B00 80903A40 46085601 */ sub.s $f24, $f10, $f8
/* 06B04 80903A44 4600A386 */ mov.s $f14, $f20
/* 06B08 80903A48 46062581 */ sub.s $f22, $f4, $f6
/* 06B0C 80903A4C 0C034199 */ jal Math_Atan2S
/* 06B10 80903A50 4600B306 */ mov.s $f12, $f22
/* 06B14 80903A54 4614A682 */ mul.s $f26, $f20, $f20
/* 06B18 80903A58 A7A202CA */ sh $v0, 0x02CA($sp)
/* 06B1C 80903A5C 4600C386 */ mov.s $f14, $f24
/* 06B20 80903A60 4616B702 */ mul.s $f28, $f22, $f22
/* 06B24 80903A64 461CD000 */ add.s $f0, $f26, $f28
/* 06B28 80903A68 0C034199 */ jal Math_Atan2S
/* 06B2C 80903A6C 46000304 */ sqrt.s $f12, $f0
/* 06B30 80903A70 C614001C */ lwc1 $f20, 0x001C($s0) ## 80910624
/* 06B34 80903A74 C6080010 */ lwc1 $f8, 0x0010($s0) ## 80910618
/* 06B38 80903A78 C6100018 */ lwc1 $f16, 0x0018($s0) ## 80910620
/* 06B3C 80903A7C C60A000C */ lwc1 $f10, 0x000C($s0) ## 80910614
/* 06B40 80903A80 C6040020 */ lwc1 $f4, 0x0020($s0) ## 80910628
/* 06B44 80903A84 4608A381 */ sub.s $f14, $f20, $f8
/* 06B48 80903A88 C6080024 */ lwc1 $f8, 0x0024($s0) ## 8091062C
/* 06B4C 80903A8C E7A40074 */ swc1 $f4, 0x0074($sp)
/* 06B50 80903A90 460A8081 */ sub.s $f2, $f16, $f10
/* 06B54 80903A94 C60A0014 */ lwc1 $f10, 0x0014($s0) ## 8091061C
/* 06B58 80903A98 C7A60074 */ lwc1 $f6, 0x0074($sp)
/* 06B5C 80903A9C 46104581 */ sub.s $f22, $f8, $f16
/* 06B60 80903AA0 C6040028 */ lwc1 $f4, 0x0028($s0) ## 80910630
/* 06B64 80903AA4 46021202 */ mul.s $f8, $f2, $f2
/* 06B68 80903AA8 460A3481 */ sub.s $f18, $f6, $f10
/* 06B6C 80903AAC C60A002C */ lwc1 $f10, 0x002C($s0) ## 80910634
/* 06B70 80903AB0 3C013F80 */ lui $at, 0x3F80 ## $at = 3F800000
/* 06B74 80903AB4 A7A202C8 */ sh $v0, 0x02C8($sp)
/* 06B78 80903AB8 46142781 */ sub.s $f30, $f4, $f20
/* 06B7C 80903ABC 460E7102 */ mul.s $f4, $f14, $f14
/* 06B80 80903AC0 44817000 */ mtc1 $at, $f14 ## $f14 = 1.00
/* 06B84 80903AC4 46065301 */ sub.s $f12, $f10, $f6
/* 06B88 80903AC8 46129182 */ mul.s $f6, $f18, $f18
/* 06B8C 80903ACC 3C013F00 */ lui $at, 0x3F00 ## $at = 3F000000
/* 06B90 80903AD0 44811000 */ mtc1 $at, $f2 ## $f2 = 0.50
/* 06B94 80903AD4 46044280 */ add.s $f10, $f8, $f4
/* 06B98 80903AD8 46065200 */ add.s $f8, $f10, $f6
/* 06B9C 80903ADC 4618C282 */ mul.s $f10, $f24, $f24
/* 06BA0 80903AE0 46004004 */ sqrt.s $f0, $f8
/* 06BA4 80903AE4 460AD180 */ add.s $f6, $f26, $f10
/* 06BA8 80903AE8 E7A00088 */ swc1 $f0, 0x0088($sp)
/* 06BAC 80903AEC E7A00094 */ swc1 $f0, 0x0094($sp)
/* 06BB0 80903AF0 4616B282 */ mul.s $f10, $f22, $f22
/* 06BB4 80903AF4 461C3200 */ add.s $f8, $f6, $f28
/* 06BB8 80903AF8 461EF182 */ mul.s $f6, $f30, $f30
/* 06BBC 80903AFC 00000000 */ nop
/* 06BC0 80903B00 460C6102 */ mul.s $f4, $f12, $f12
/* 06BC4 80903B04 46004004 */ sqrt.s $f0, $f8
/* 06BC8 80903B08 46065200 */ add.s $f8, $f10, $f6
/* 06BCC 80903B0C E7A00084 */ swc1 $f0, 0x0084($sp)
/* 06BD0 80903B10 E7A00098 */ swc1 $f0, 0x0098($sp)
/* 06BD4 80903B14 C7AA0098 */ lwc1 $f10, 0x0098($sp)
/* 06BD8 80903B18 46044000 */ add.s $f0, $f8, $f4
/* 06BDC 80903B1C C7A60094 */ lwc1 $f6, 0x0094($sp)
/* 06BE0 80903B20 46000004 */ sqrt.s $f0, $f0
/* 06BE4 80903B24 46065200 */ add.s $f8, $f10, $f6
/* 06BE8 80903B28 46080300 */ add.s $f12, $f0, $f8
/* 06BEC 80903B2C C7A00084 */ lwc1 $f0, 0x0084($sp)
/* 06BF0 80903B30 460E603E */ c.le.s $f12, $f14
/* 06BF4 80903B34 46020782 */ mul.s $f30, $f0, $f2
/* 06BF8 80903B38 C7A00088 */ lwc1 $f0, 0x0088($sp)
/* 06BFC 80903B3C 45000002 */ bc1f .L80903B48
/* 06C00 80903B40 00000000 */ nop
/* 06C04 80903B44 46007306 */ mov.s $f12, $f14
.L80903B48:
/* 06C08 80903B48 46020102 */ mul.s $f4, $f0, $f2
/* 06C0C 80903B4C 3C198091 */ lui $t9, %hi(D_80910608+0xC) ## $t9 = 80910000
/* 06C10 80903B50 27300614 */ addiu $s0, $t9, %lo(D_80910608+0xC) ## $s0 = 80910614
/* 06C14 80903B54 C7A802D0 */ lwc1 $f8, 0x02D0($sp)
/* 06C18 80903B58 3C018091 */ lui $at, %hi(D_8090DD0C) ## $at = 80910000
/* 06C1C 80903B5C C42ADD0C */ lwc1 $f10, %lo(D_8090DD0C)($at)
/* 06C20 80903B60 24130001 */ addiu $s3, $zero, 0x0001 ## $s3 = 00000001
/* 06C24 80903B64 E7A40294 */ swc1 $f4, 0x0294($sp)
/* 06C28 80903B68 C6060000 */ lwc1 $f6, 0x0000($s0) ## 80910614
/* 06C2C 80903B6C 460A6702 */ mul.s $f28, $f12, $f10
/* 06C30 80903B70 C7AA02D4 */ lwc1 $f10, 0x02D4($sp)
/* 06C34 80903B74 46083501 */ sub.s $f20, $f6, $f8
/* 06C38 80903B78 C7A802D8 */ lwc1 $f8, 0x02D8($sp)
/* 06C3C 80903B7C C6060008 */ lwc1 $f6, 0x0008($s0) ## 8091061C
/* 06C40 80903B80 C6040004 */ lwc1 $f4, 0x0004($s0) ## 80910618
/* 06C44 80903B84 46083581 */ sub.s $f22, $f6, $f8
/* 06C48 80903B88 460A2601 */ sub.s $f24, $f4, $f10
.L80903B8C:
/* 06C4C 80903B8C 4600B306 */ mov.s $f12, $f22
/* 06C50 80903B90 0C034199 */ jal Math_Atan2S
/* 06C54 80903B94 4600A386 */ mov.s $f14, $f20
/* 06C58 80903B98 4614A102 */ mul.s $f4, $f20, $f20
/* 06C5C 80903B9C 00028C00 */ sll $s1, $v0, 16
/* 06C60 80903BA0 00118C03 */ sra $s1, $s1, 16
/* 06C64 80903BA4 4616B282 */ mul.s $f10, $f22, $f22
/* 06C68 80903BA8 4600C386 */ mov.s $f14, $f24
/* 06C6C 80903BAC 460A2000 */ add.s $f0, $f4, $f10
/* 06C70 80903BB0 0C034199 */ jal Math_Atan2S
/* 06C74 80903BB4 46000304 */ sqrt.s $f12, $f0
/* 06C78 80903BB8 00022C00 */ sll $a1, $v0, 16
/* 06C7C 80903BBC 00052C03 */ sra $a1, $a1, 16
/* 06C80 80903BC0 27A402C8 */ addiu $a0, $sp, 0x02C8 ## $a0 = FFFFFFE8
/* 06C84 80903BC4 24060001 */ addiu $a2, $zero, 0x0001 ## $a2 = 00000001
/* 06C88 80903BC8 0C01E1EF */ jal Math_ApproachS
/* 06C8C 80903BCC 24071000 */ addiu $a3, $zero, 0x1000 ## $a3 = 00001000
/* 06C90 80903BD0 00112C00 */ sll $a1, $s1, 16
/* 06C94 80903BD4 00052C03 */ sra $a1, $a1, 16
/* 06C98 80903BD8 27A402CA */ addiu $a0, $sp, 0x02CA ## $a0 = FFFFFFEA
/* 06C9C 80903BDC 24060001 */ addiu $a2, $zero, 0x0001 ## $a2 = 00000001
/* 06CA0 80903BE0 0C01E1EF */ jal Math_ApproachS
/* 06CA4 80903BE4 24071000 */ addiu $a3, $zero, 0x1000 ## $a3 = 00001000
/* 06CA8 80903BE8 0C01DE0D */ jal Math_CosS
## coss?
/* 06CAC 80903BEC 87A402C8 */ lh $a0, 0x02C8($sp)
/* 06CB0 80903BF0 00144880 */ sll $t1, $s4, 2
/* 06CB4 80903BF4 27AB02D0 */ addiu $t3, $sp, 0x02D0 ## $t3 = FFFFFFF0
/* 06CB8 80903BF8 8D6D0000 */ lw $t5, 0x0000($t3) ## FFFFFFF0
/* 06CBC 80903BFC 01344823 */ subu $t1, $t1, $s4
/* 06CC0 80903C00 00094880 */ sll $t1, $t1, 2
/* 06CC4 80903C04 03C95021 */ addu $t2, $s8, $t1
/* 06CC8 80903C08 AD4D0000 */ sw $t5, 0x0000($t2) ## 00000000
/* 06CCC 80903C0C 8D6C0004 */ lw $t4, 0x0004($t3) ## FFFFFFF4
/* 06CD0 80903C10 461C0682 */ mul.s $f26, $f0, $f28
/* 06CD4 80903C14 AD4C0004 */ sw $t4, 0x0004($t2) ## 00000004
/* 06CD8 80903C18 8D6D0008 */ lw $t5, 0x0008($t3) ## FFFFFFF8
/* 06CDC 80903C1C AD4D0008 */ sw $t5, 0x0008($t2) ## 00000008
/* 06CE0 80903C20 0C01DE1C */ jal Math_SinS
## sins?
/* 06CE4 80903C24 87A402CA */ lh $a0, 0x02CA($sp)
/* 06CE8 80903C28 4600D202 */ mul.s $f8, $f26, $f0
/* 06CEC 80903C2C C7A602D0 */ lwc1 $f6, 0x02D0($sp)
/* 06CF0 80903C30 87A402C8 */ lh $a0, 0x02C8($sp)
/* 06CF4 80903C34 46083100 */ add.s $f4, $f6, $f8
/* 06CF8 80903C38 0C01DE1C */ jal Math_SinS
## sins?
/* 06CFC 80903C3C E7A402D0 */ swc1 $f4, 0x02D0($sp)
/* 06D00 80903C40 4600E182 */ mul.s $f6, $f28, $f0
/* 06D04 80903C44 C7AA02D4 */ lwc1 $f10, 0x02D4($sp)
/* 06D08 80903C48 87A402CA */ lh $a0, 0x02CA($sp)
/* 06D0C 80903C4C 46065200 */ add.s $f8, $f10, $f6
/* 06D10 80903C50 0C01DE0D */ jal Math_CosS
## coss?
/* 06D14 80903C54 E7A802D4 */ swc1 $f8, 0x02D4($sp)
/* 06D18 80903C58 4600D282 */ mul.s $f10, $f26, $f0
/* 06D1C 80903C5C C7A402D8 */ lwc1 $f4, 0x02D8($sp)
/* 06D20 80903C60 C6080000 */ lwc1 $f8, 0x0000($s0) ## 80910614
/* 06D24 80903C64 3C0F8091 */ lui $t7, %hi(D_80910608) ## $t7 = 80910000
/* 06D28 80903C68 2A610003 */ slti $at, $s3, 0x0003
/* 06D2C 80903C6C 26940001 */ addiu $s4, $s4, 0x0001 ## $s4 = 00000001
/* 06D30 80903C70 25EF0608 */ addiu $t7, $t7, %lo(D_80910608) ## $t7 = 80910608
/* 06D34 80903C74 460A2180 */ add.s $f6, $f4, $f10
/* 06D38 80903C78 C7A402D0 */ lwc1 $f4, 0x02D0($sp)
/* 06D3C 80903C7C C60A0004 */ lwc1 $f10, 0x0004($s0) ## 80910618
/* 06D40 80903C80 329400FF */ andi $s4, $s4, 0x00FF ## $s4 = 00000001
/* 06D44 80903C84 46044501 */ sub.s $f20, $f8, $f4
/* 06D48 80903C88 C7A802D4 */ lwc1 $f8, 0x02D4($sp)
/* 06D4C 80903C8C C6040008 */ lwc1 $f4, 0x0008($s0) ## 8091061C
/* 06D50 80903C90 E7A602D8 */ swc1 $f6, 0x02D8($sp)
/* 06D54 80903C94 46085601 */ sub.s $f24, $f10, $f8
/* 06D58 80903C98 10200010 */ beq $at, $zero, .L80903CDC
/* 06D5C 80903C9C 46062581 */ sub.s $f22, $f4, $f6
/* 06D60 80903CA0 4614A282 */ mul.s $f10, $f20, $f20
/* 06D64 80903CA4 00000000 */ nop
/* 06D68 80903CA8 4618C202 */ mul.s $f8, $f24, $f24
/* 06D6C 80903CAC 46085100 */ add.s $f4, $f10, $f8
/* 06D70 80903CB0 4616B182 */ mul.s $f6, $f22, $f22
/* 06D74 80903CB4 46062000 */ add.s $f0, $f4, $f6
/* 06D78 80903CB8 46000004 */ sqrt.s $f0, $f0
/* 06D7C 80903CBC 461E003E */ c.le.s $f0, $f30
/* 06D80 80903CC0 00000000 */ nop
/* 06D84 80903CC4 45000015 */ bc1f .L80903D1C
/* 06D88 80903CC8 00000000 */ nop
/* 06D8C 80903CCC 26520001 */ addiu $s2, $s2, 0x0001 ## $s2 = 00000002
/* 06D90 80903CD0 C7BE0294 */ lwc1 $f30, 0x0294($sp)
/* 06D94 80903CD4 10000011 */ beq $zero, $zero, .L80903D1C
/* 06D98 80903CD8 325200FF */ andi $s2, $s2, 0x00FF ## $s2 = 00000002
.L80903CDC:
/* 06D9C 80903CDC 4614A282 */ mul.s $f10, $f20, $f20
/* 06DA0 80903CE0 3C013F80 */ lui $at, 0x3F80 ## $at = 3F800000
/* 06DA4 80903CE4 4618C202 */ mul.s $f8, $f24, $f24
/* 06DA8 80903CE8 46085100 */ add.s $f4, $f10, $f8
/* 06DAC 80903CEC 4616B182 */ mul.s $f6, $f22, $f22
/* 06DB0 80903CF0 44815000 */ mtc1 $at, $f10 ## $f10 = 1.00
/* 06DB4 80903CF4 00000000 */ nop
/* 06DB8 80903CF8 460AE200 */ add.s $f8, $f28, $f10
/* 06DBC 80903CFC 46062000 */ add.s $f0, $f4, $f6
/* 06DC0 80903D00 46000004 */ sqrt.s $f0, $f0
/* 06DC4 80903D04 4608003E */ c.le.s $f0, $f8
/* 06DC8 80903D08 00000000 */ nop
/* 06DCC 80903D0C 45020004 */ bc1fl .L80903D20
/* 06DD0 80903D10 2A810014 */ slti $at, $s4, 0x0014
/* 06DD4 80903D14 26520001 */ addiu $s2, $s2, 0x0001 ## $s2 = 00000003
/* 06DD8 80903D18 325200FF */ andi $s2, $s2, 0x00FF ## $s2 = 00000003
.L80903D1C:
/* 06DDC 80903D1C 2A810014 */ slti $at, $s4, 0x0014
.L80903D20:
/* 06DE0 80903D20 10200012 */ beq $at, $zero, .L80903D6C
/* 06DE4 80903D24 02803025 */ or $a2, $s4, $zero ## $a2 = 00000001
/* 06DE8 80903D28 2A410004 */ slti $at, $s2, 0x0004
/* 06DEC 80903D2C 1020000F */ beq $at, $zero, .L80903D6C
/* 06DF0 80903D30 02409825 */ or $s3, $s2, $zero ## $s3 = 00000003
/* 06DF4 80903D34 00127080 */ sll $t6, $s2, 2
/* 06DF8 80903D38 01D27023 */ subu $t6, $t6, $s2
/* 06DFC 80903D3C 000E7080 */ sll $t6, $t6, 2
/* 06E00 80903D40 01CF8021 */ addu $s0, $t6, $t7
/* 06E04 80903D44 C6040000 */ lwc1 $f4, 0x0000($s0) ## 80910614
/* 06E08 80903D48 C7A602D0 */ lwc1 $f6, 0x02D0($sp)
/* 06E0C 80903D4C C60A0004 */ lwc1 $f10, 0x0004($s0) ## 80910618
/* 06E10 80903D50 C7A802D4 */ lwc1 $f8, 0x02D4($sp)
/* 06E14 80903D54 46062501 */ sub.s $f20, $f4, $f6
/* 06E18 80903D58 C7A602D8 */ lwc1 $f6, 0x02D8($sp)
/* 06E1C 80903D5C C6040008 */ lwc1 $f4, 0x0008($s0) ## 8091061C
/* 06E20 80903D60 46085601 */ sub.s $f24, $f10, $f8
/* 06E24 80903D64 1000FF89 */ beq $zero, $zero, .L80903B8C
/* 06E28 80903D68 46062581 */ sub.s $f22, $f4, $f6
.L80903D6C:
/* 06E2C 80903D6C 3C038091 */ lui $v1, %hi(ovl_Boss_Ganon2_Vtx_00BA20) ## $v1 = 80910000
/* 06E30 80903D70 24638960 */ addiu $v1, $v1, %lo(ovl_Boss_Ganon2_Vtx_00BA20) ## $v1 = 80908960
/* 06E34 80903D74 0003C100 */ sll $t8, $v1, 4
/* 06E38 80903D78 0018CF02 */ srl $t9, $t8, 28
/* 06E3C 80903D7C 00194880 */ sll $t1, $t9, 2
/* 06E40 80903D80 3C0A8016 */ lui $t2, %hi(gSegments)
/* 06E44 80903D84 01495021 */ addu $t2, $t2, $t1
/* 06E48 80903D88 3C0100FF */ lui $at, 0x00FF ## $at = 00FF0000
/* 06E4C 80903D8C 8D4A6FA8 */ lw $t2, %lo(gSegments)($t2)
/* 06E50 80903D90 3421FFFF */ ori $at, $at, 0xFFFF ## $at = 00FFFFFF
/* 06E54 80903D94 00615824 */ and $t3, $v1, $at
/* 06E58 80903D98 3C018000 */ lui $at, 0x8000 ## $at = 80000000
/* 06E5C 80903D9C 3C088090 */ lui $t0, %hi(D_80907090) ## $t0 = 80900000
/* 06E60 80903DA0 3C078090 */ lui $a3, %hi(D_80907084) ## $a3 = 80900000
/* 06E64 80903DA4 014B2821 */ addu $a1, $t2, $t3
/* 06E68 80903DA8 00A12821 */ addu $a1, $a1, $at
/* 06E6C 80903DAC 24E77084 */ addiu $a3, $a3, %lo(D_80907084) ## $a3 = 80907084
/* 06E70 80903DB0 25087090 */ addiu $t0, $t0, %lo(D_80907090) ## $t0 = 80907090
/* 06E74 80903DB4 00001025 */ or $v0, $zero, $zero ## $v0 = 00000000
/* 06E78 80903DB8 02A26023 */ subu $t4, $s5, $v0
.L80903DBC:
/* 06E7C 80903DBC 59800023 */ blezl $t4, .L80903E4C
/* 06E80 80903DC0 00C27023 */ subu $t6, $a2, $v0
/* 06E84 80903DC4 00570019 */ multu $v0, $s7
/* 06E88 80903DC8 00156880 */ sll $t5, $s5, 2
/* 06E8C 80903DCC 01B56823 */ subu $t5, $t5, $s5
/* 06E90 80903DD0 000D6880 */ sll $t5, $t5, 2
/* 06E94 80903DD4 02CD7021 */ addu $t6, $s6, $t5
/* 06E98 80903DD8 00E21821 */ addu $v1, $a3, $v0
/* 06E9C 80903DDC 906A0000 */ lbu $t2, 0x0000($v1) ## 80908960
/* 06EA0 80903DE0 000A5900 */ sll $t3, $t2, 4
/* 06EA4 80903DE4 00007812 */ mflo $t7
/* 06EA8 80903DE8 000FC023 */ subu $t8, $zero, $t7
/* 06EAC 80903DEC 01D82021 */ addu $a0, $t6, $t8
/* 06EB0 80903DF0 C48AFFF4 */ lwc1 $f10, -0x000C($a0) ## FFFFFFF4
/* 06EB4 80903DF4 00AB6021 */ addu $t4, $a1, $t3
/* 06EB8 80903DF8 4600520D */ trunc.w.s $f8, $f10
/* 06EBC 80903DFC 44094000 */ mfc1 $t1, $f8
/* 06EC0 80903E00 00000000 */ nop
/* 06EC4 80903E04 A5890000 */ sh $t1, 0x0000($t4) ## 00000000
/* 06EC8 80903E08 C484FFF8 */ lwc1 $f4, -0x0008($a0) ## FFFFFFF8
/* 06ECC 80903E0C 906E0000 */ lbu $t6, 0x0000($v1) ## 80908960
/* 06ED0 80903E10 4600218D */ trunc.w.s $f6, $f4
/* 06ED4 80903E14 000EC100 */ sll $t8, $t6, 4
/* 06ED8 80903E18 00B8C821 */ addu $t9, $a1, $t8
/* 06EDC 80903E1C 440F3000 */ mfc1 $t7, $f6
/* 06EE0 80903E20 00000000 */ nop
/* 06EE4 80903E24 A72F0002 */ sh $t7, 0x0002($t9) ## 00000002
/* 06EE8 80903E28 C48AFFFC */ lwc1 $f10, -0x0004($a0) ## FFFFFFFC
/* 06EEC 80903E2C 90690000 */ lbu $t1, 0x0000($v1) ## 80908960
/* 06EF0 80903E30 4600520D */ trunc.w.s $f8, $f10
/* 06EF4 80903E34 00096100 */ sll $t4, $t1, 4
/* 06EF8 80903E38 00AC6821 */ addu $t5, $a1, $t4
/* 06EFC 80903E3C 440B4000 */ mfc1 $t3, $f8
/* 06F00 80903E40 00000000 */ nop
/* 06F04 80903E44 A5AB0004 */ sh $t3, 0x0004($t5) ## 00000004
/* 06F08 80903E48 00C27023 */ subu $t6, $a2, $v0
.L80903E4C:
/* 06F0C 80903E4C 59C00023 */ blezl $t6, .L80903EDC
/* 06F10 80903E50 24420001 */ addiu $v0, $v0, 0x0001 ## $v0 = 00000001
/* 06F14 80903E54 00570019 */ multu $v0, $s7
/* 06F18 80903E58 0006C080 */ sll $t8, $a2, 2
/* 06F1C 80903E5C 0306C023 */ subu $t8, $t8, $a2
/* 06F20 80903E60 0018C080 */ sll $t8, $t8, 2
/* 06F24 80903E64 03D87821 */ addu $t7, $s8, $t8
/* 06F28 80903E68 01021821 */ addu $v1, $t0, $v0
/* 06F2C 80903E6C 906B0000 */ lbu $t3, 0x0000($v1) ## 80908960
/* 06F30 80903E70 000B6900 */ sll $t5, $t3, 4
/* 06F34 80903E74 0000C812 */ mflo $t9
/* 06F38 80903E78 00195023 */ subu $t2, $zero, $t9
/* 06F3C 80903E7C 01EA2021 */ addu $a0, $t7, $t2
/* 06F40 80903E80 C484FFF4 */ lwc1 $f4, -0x000C($a0) ## FFFFFFF4
/* 06F44 80903E84 00AD7021 */ addu $t6, $a1, $t5
/* 06F48 80903E88 4600218D */ trunc.w.s $f6, $f4
/* 06F4C 80903E8C 440C3000 */ mfc1 $t4, $f6
/* 06F50 80903E90 00000000 */ nop
/* 06F54 80903E94 A5CC0000 */ sh $t4, 0x0000($t6) ## 00000000
/* 06F58 80903E98 C48AFFF8 */ lwc1 $f10, -0x0008($a0) ## FFFFFFF8
/* 06F5C 80903E9C 906F0000 */ lbu $t7, 0x0000($v1) ## 80908960
/* 06F60 80903EA0 4600520D */ trunc.w.s $f8, $f10
/* 06F64 80903EA4 000F5100 */ sll $t2, $t7, 4
/* 06F68 80903EA8 00AA4821 */ addu $t1, $a1, $t2
/* 06F6C 80903EAC 44194000 */ mfc1 $t9, $f8
/* 06F70 80903EB0 00000000 */ nop
/* 06F74 80903EB4 A5390002 */ sh $t9, 0x0002($t1) ## 00000002
/* 06F78 80903EB8 C484FFFC */ lwc1 $f4, -0x0004($a0) ## FFFFFFFC
/* 06F7C 80903EBC 906C0000 */ lbu $t4, 0x0000($v1) ## 80908960
/* 06F80 80903EC0 4600218D */ trunc.w.s $f6, $f4
/* 06F84 80903EC4 000C7100 */ sll $t6, $t4, 4
/* 06F88 80903EC8 00AEC021 */ addu $t8, $a1, $t6
/* 06F8C 80903ECC 440D3000 */ mfc1 $t5, $f6
/* 06F90 80903ED0 00000000 */ nop
/* 06F94 80903ED4 A70D0004 */ sh $t5, 0x0004($t8) ## 00000004
/* 06F98 80903ED8 24420001 */ addiu $v0, $v0, 0x0001 ## $v0 = 00000002
.L80903EDC:
/* 06F9C 80903EDC 00021400 */ sll $v0, $v0, 16
/* 06FA0 80903EE0 00021403 */ sra $v0, $v0, 16
/* 06FA4 80903EE4 2841000B */ slti $at, $v0, 0x000B
/* 06FA8 80903EE8 5420FFB4 */ bnel $at, $zero, .L80903DBC
/* 06FAC 80903EEC 02A26023 */ subu $t4, $s5, $v0
/* 06FB0 80903EF0 8FBF006C */ lw $ra, 0x006C($sp)
/* 06FB4 80903EF4 D7B40018 */ ldc1 $f20, 0x0018($sp)
/* 06FB8 80903EF8 D7B60020 */ ldc1 $f22, 0x0020($sp)
/* 06FBC 80903EFC D7B80028 */ ldc1 $f24, 0x0028($sp)
/* 06FC0 80903F00 D7BA0030 */ ldc1 $f26, 0x0030($sp)
/* 06FC4 80903F04 D7BC0038 */ ldc1 $f28, 0x0038($sp)
/* 06FC8 80903F08 D7BE0040 */ ldc1 $f30, 0x0040($sp)
/* 06FCC 80903F0C 8FB00048 */ lw $s0, 0x0048($sp)
/* 06FD0 80903F10 8FB1004C */ lw $s1, 0x004C($sp)
/* 06FD4 80903F14 8FB20050 */ lw $s2, 0x0050($sp)
/* 06FD8 80903F18 8FB30054 */ lw $s3, 0x0054($sp)
/* 06FDC 80903F1C 8FB40058 */ lw $s4, 0x0058($sp)
/* 06FE0 80903F20 8FB5005C */ lw $s5, 0x005C($sp)
/* 06FE4 80903F24 8FB60060 */ lw $s6, 0x0060($sp)
/* 06FE8 80903F28 8FB70064 */ lw $s7, 0x0064($sp)
/* 06FEC 80903F2C 8FBE0068 */ lw $s8, 0x0068($sp)
/* 06FF0 80903F30 03E00008 */ jr $ra
/* 06FF4 80903F34 27BD02E0 */ addiu $sp, $sp, 0x02E0 ## $sp = 00000000

View file

@ -1,13 +0,0 @@
.include "macro.inc"
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64 # allow use of 64-bit general purpose registers
.section .rodata
.balign 16
glabel D_8090DDA0
.incbin "baserom/ovl_Boss_Ganon2", 0x10E60, 0x00000D80

4
spec
View file

@ -1379,11 +1379,7 @@ endseg
beginseg
name "ovl_Boss_Ganon2"
include "build/src/overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.o"
#ifdef NON_MATCHING
include "build/src/overlays/actors/ovl_Boss_Ganon2/ovl_Boss_Ganon2_reloc.o"
#else
include "build/data/overlays/actors/z_boss_ganon2.reloc.o"
#endif
endseg
beginseg

View file

@ -180,18 +180,13 @@ void func_808FD5C4(BossGanon2* this, GlobalContext* globalCtx) {
this->actor.world.pos.y = -3000.0f;
}
#ifdef NON_MATCHING
void func_808FD5F4(BossGanon2* this, GlobalContext* globalCtx) {
s16 pad2;
s16 pad;
u8 sp8D;
Player* player;
s32 pad[3];
Camera* temp_v0;
BossGanon2Effect* temp_v0_3;
Vec3f sp68;
s32 objectIdx;
s16 temp_a1;
Vec3f* temp[2];
s32 zero = 0;
s32 pad2;
sp8D = false;
player = GET_PLAYER(globalCtx);
@ -227,6 +222,10 @@ void func_808FD5F4(BossGanon2* this, GlobalContext* globalCtx) {
player->actor.shape.rot.y = -0x5000;
Animation_MorphToLoop(&this->skelAnime, &object_ganon_anime3_Anim_002168, 0.0f);
globalCtx->envCtx.unk_D8 = 0.0f;
// fake, tricks the compiler into allocating more stack
if (zero) {
this->unk_3A4.x *= 2.0;
}
} else {
break;
}
@ -316,10 +315,11 @@ void func_808FD5F4(BossGanon2* this, GlobalContext* globalCtx) {
Math_ApproachF(&this->unk_3A4.z, -20.0f, 0.1f, this->unk_410.x * 170.0f);
Math_ApproachF(&this->unk_410.x, 0.04f, 1.0f, 0.0005f);
if (this->unk_398 == 100) {
temp_v0 = Gameplay_GetCamera(globalCtx, MAIN_CAM);
temp_v0->eye = this->unk_3A4;
temp_v0->eyeNext = this->unk_3A4;
temp_v0->at = this->unk_3B0;
Camera* camera = Gameplay_GetCamera(globalCtx, MAIN_CAM);
camera->eye = this->unk_3A4;
camera->eyeNext = this->unk_3A4;
camera->at = this->unk_3B0;
func_800C08AC(globalCtx, this->unk_39E, 0);
this->unk_39E = 0;
func_80064534(globalCtx, &globalCtx->csCtx);
@ -541,10 +541,11 @@ void func_808FD5F4(BossGanon2* this, GlobalContext* globalCtx) {
sp8D = true;
}
if (this->unk_398 >= 60) {
temp_v0 = Gameplay_GetCamera(globalCtx, MAIN_CAM);
temp_v0->eye = this->unk_3A4;
temp_v0->eyeNext = this->unk_3A4;
temp_v0->at = this->unk_3B0;
Camera* camera = Gameplay_GetCamera(globalCtx, MAIN_CAM);
camera->eye = this->unk_3A4;
camera->eyeNext = this->unk_3A4;
camera->at = this->unk_3B0;
this->unk_39C = 17;
this->unk_398 = 0;
this->unk_337 = 2;
@ -555,6 +556,10 @@ void func_808FD5F4(BossGanon2* this, GlobalContext* globalCtx) {
func_8002DF54(globalCtx, &this->actor, 0x54);
this->unk_314 = 3;
}
// fake, tricks the compiler into using stack the way we need it to
if (zero) {
Math_ApproachF(&this->unk_3B0.y, 0.0f, 0.0f, 0.0f);
}
break;
case 17:
this->unk_339 = 6;
@ -717,6 +722,8 @@ void func_808FD5F4(BossGanon2* this, GlobalContext* globalCtx) {
globalCtx->envCtx.screenFillColor[2] = 255;
globalCtx->envCtx.screenFillColor[3] = 100;
if (this->unk_398 == 234) {
Vec3f sp68;
globalCtx->envCtx.fillScreen = false;
this->unk_39C = 24;
this->unk_398 = 0;
@ -731,12 +738,14 @@ void func_808FD5F4(BossGanon2* this, GlobalContext* globalCtx) {
break;
case 24:
SkelAnime_Update(&this->skelAnime);
if (1) {}
temp_v0_3 = globalCtx->specialEffects;
this->unk_3B0 = temp_v0_3->position;
this->unk_3A4.x = temp_v0_3->position.x + 70.0f;
this->unk_3A4.y = temp_v0_3->position.y - 30.0f;
this->unk_3A4.z = temp_v0_3->position.z + 70.0f;
if (1) {
BossGanon2Effect* effect = globalCtx->specialEffects;
this->unk_3B0 = effect->position;
this->unk_3A4.x = effect->position.x + 70.0f;
this->unk_3A4.y = effect->position.y - 30.0f;
this->unk_3A4.z = effect->position.z + 70.0f;
}
if ((this->unk_398 & 3) == 0) {
func_80078884(NA_SE_IT_SWORD_SWING);
}
@ -755,14 +764,15 @@ void func_808FD5F4(BossGanon2* this, GlobalContext* globalCtx) {
this->unk_3B0.y = ((player->actor.world.pos.y + 10.0f + 60.0f) - 20.0f) - 3.0f;
this->unk_3B0.z = (player->actor.world.pos.z - 40.0f) - 10.0f;
if (this->unk_398 == 10) {
temp_v0_3 = globalCtx->specialEffects;
temp_v0_3->unk_2E = 1;
temp_v0_3->position.x = sZelda->actor.world.pos.x + 50.0f + 10.0f;
temp_v0_3->position.y = sZelda->actor.world.pos.y + 350.0f;
temp_v0_3->position.z = sZelda->actor.world.pos.z - 25.0f;
temp_v0_3->velocity.x = 0.0f;
temp_v0_3->velocity.z = 0.0f;
temp_v0_3->velocity.y = -30.0f;
BossGanon2Effect* effect = globalCtx->specialEffects;
effect->unk_2E = 1;
effect->position.x = sZelda->actor.world.pos.x + 50.0f + 10.0f;
effect->position.y = sZelda->actor.world.pos.y + 350.0f;
effect->position.z = sZelda->actor.world.pos.z - 25.0f;
effect->velocity.x = 0.0f;
effect->velocity.z = 0.0f;
effect->velocity.y = -30.0f;
this->unk_39C = 26;
this->unk_398 = 0;
} else {
@ -852,10 +862,11 @@ void func_808FD5F4(BossGanon2* this, GlobalContext* globalCtx) {
Audio_PlayActorSound2(&this->actor, NA_SE_EN_MGANON_ROAR);
}
if (Animation_OnFrame(&this->skelAnime, this->unk_194)) {
temp_v0 = Gameplay_GetCamera(globalCtx, MAIN_CAM);
temp_v0->eye = this->unk_3A4;
temp_v0->eyeNext = this->unk_3A4;
temp_v0->at = this->unk_3B0;
Camera* camera = Gameplay_GetCamera(globalCtx, MAIN_CAM);
camera->eye = this->unk_3A4;
camera->eyeNext = this->unk_3A4;
camera->at = this->unk_3B0;
func_800C08AC(globalCtx, this->unk_39E, 0);
this->unk_39E = 0;
func_80064534(globalCtx, &globalCtx->csCtx);
@ -874,19 +885,15 @@ void func_808FD5F4(BossGanon2* this, GlobalContext* globalCtx) {
Audio_PlayActorSound2(&this->actor, NA_SE_EN_GANON_BODY_SPARK - SFX_FLAG);
}
temp_a1 = this->unk_39E;
if (temp_a1 != 0) {
// Definitely fake.
temp[1] = &this->unk_3A4;
temp[0] = &this->unk_3B0;
if (this->unk_39E != 0) {
// fake, tricks the compiler into putting some pointers on the stack
if (zero) {
osSyncPrintf(NULL, 0, 0);
}
this->unk_3B0.y += this->unk_41C;
Gameplay_CameraSetAtEyeUp(globalCtx, temp_a1, temp[0], temp[1], &this->unk_3BC);
Gameplay_CameraSetAtEyeUp(globalCtx, this->unk_39E, &this->unk_3B0, &this->unk_3A4, &this->unk_3BC);
}
}
#else
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Boss_Ganon2/func_808FD5F4.s")
#endif
void func_808FF898(BossGanon2* this, GlobalContext* globalCtx) {
if ((this->unk_312 != 0) && (this->unk_39E == 0)) {
@ -2175,182 +2182,200 @@ void BossGanon2_Update(Actor* thisx, GlobalContext* globalCtx) {
func_80905DA8(this, globalCtx);
}
#ifdef NON_MATCHING
void func_809034E4(Vec3f* arg0, Vec3f* arg1) {
Vtx* vtx;
Vec3f sp2D0;
s16 temp_s1;
s16 temp_a1;
s16 sp2CA;
s16 sp2C8;
f32 sp294;
Vec3f sp18C[20];
Vec3f sp9C[20];
f32 temp_f0;
f32 temp_f0_2;
f32 temp_f0_3;
f32 temp_f12;
Vec3f temp_f20;
Vec3f temp_f22_2;
f32 temp_f26;
f32 temp_f28;
Vec3f temp_f2;
s16 temp_s1;
Vtx* temp_a1;
s16 i;
u8 phi_s2;
u8 temp_s4;
u8 temp_s4_2;
s16 i;
Vec3f phi_f20;
f32 temp_f12;
Vec3f temp_f20;
Vec3f temp_f2;
Vec3f temp_f22;
f32 sp294;
f32 phi_f30;
s32 phi_s2;
f32 temp_f28;
f32 temp_f26;
s32 pad[3];
Vec3f sp18C[20];
Vec3f sp9C[20];
for (i = 0; i < 20; i++) {
sp18C[i] = *arg0;
sp9C[i] = *arg1;
}
temp_s4 = 0;
D_809105D8[3] = D_809105D8[2];
D_809105D8[2] = D_809105D8[1];
D_809105D8[1] = D_809105D8[0];
D_809105D8[0] = *arg0;
sp2D0 = D_809105D8[0];
temp_f20.x = D_809105D8[1].x - sp2D0.x;
temp_f20.y = D_809105D8[1].y - sp2D0.y;
temp_f20.z = D_809105D8[1].z - sp2D0.z;
sp2CA = Math_Atan2S(temp_f20.z, temp_f20.x);
sp2C8 = Math_Atan2S(sqrtf(SQXZ(temp_f20)), temp_f20.y);
temp_f2.x = D_809105D8[2].x - D_809105D8[1].x;
temp_f2.y = D_809105D8[2].y - D_809105D8[1].y;
temp_f2.z = D_809105D8[2].z - D_809105D8[1].z;
temp_f22_2.x = D_809105D8[3].x - D_809105D8[2].x;
temp_f22_2.y = D_809105D8[3].y - D_809105D8[2].y;
temp_f22_2.z = D_809105D8[3].z - D_809105D8[2].z;
temp_f0 = sqrtf(SQXYZ(temp_f2));
temp_f0_2 = sqrtf(SQXYZ(temp_f20));
temp_f12 = sqrtf(SQXYZ(temp_f22_2)) + (temp_f0_2 + temp_f0);
temp_f22.x = D_809105D8[3].x - D_809105D8[2].x;
temp_f22.y = D_809105D8[3].y - D_809105D8[2].y;
temp_f22.z = D_809105D8[3].z - D_809105D8[2].z;
temp_f12 = sqrtf(SQXYZ(temp_f20)) + sqrtf(SQXYZ(temp_f2)) + sqrtf(SQXYZ(temp_f22));
if (temp_f12 <= 1.0f) {
temp_f12 = 1.0f;
}
sp294 = temp_f0 / 2.0f;
temp_f28 = temp_f12 * 0.083f;
phi_f20.x = D_809105D8[1].x - sp2D0.x;
phi_f20.y = D_809105D8[1].y - sp2D0.y;
phi_f20.z = D_809105D8[1].z - sp2D0.z;
phi_f30 = sqrtf(SQXYZ(temp_f20)) / 2.0f;
sp294 = sqrtf(SQXYZ(temp_f2)) / 2.0f;
phi_s2 = 1;
temp_s4 = 0;
phi_f30 = temp_f0_2 / 2.0f;
while (true) {
temp_s1 = Math_Atan2S(phi_f20.z, phi_f20.x);
Math_ApproachS(&sp2C8, Math_Atan2S(sqrtf(SQXZ(phi_f20)), phi_f20.y), 1, 0x1000);
temp_f20.x = D_809105D8[phi_s2].x - sp2D0.x;
temp_f20.y = D_809105D8[phi_s2].y - sp2D0.y;
temp_f20.z = D_809105D8[phi_s2].z - sp2D0.z;
temp_s1 = Math_Atan2S(temp_f20.z, temp_f20.x);
temp_a1 = Math_Atan2S(sqrtf(SQXZ(temp_f20)), temp_f20.y);
Math_ApproachS(&sp2C8, temp_a1, 1, 0x1000);
Math_ApproachS(&sp2CA, temp_s1, 1, 0x1000);
temp_f0_3 = Math_CosS(sp2C8);
temp_f26 = temp_f28 * Math_CosS(sp2C8);
sp18C[temp_s4] = sp2D0;
temp_f26 = temp_f0_3 * temp_f28;
sp2D0.x += temp_f26 * Math_SinS(sp2CA);
sp2D0.y += temp_f28 * Math_SinS(sp2C8);
sp2D0.z += temp_f26 * Math_CosS(sp2CA);
phi_f20.x = D_809105D8[phi_s2].x - sp2D0.x;
phi_f20.y = D_809105D8[phi_s2].y - sp2D0.y;
phi_f20.z = D_809105D8[phi_s2].z - sp2D0.z;
temp_f20.x = D_809105D8[phi_s2].x - sp2D0.x;
temp_f20.y = D_809105D8[phi_s2].y - sp2D0.y;
temp_f20.z = D_809105D8[phi_s2].z - sp2D0.z;
if (phi_s2 < 3) {
if (sqrtf(SQXYZ(phi_f20)) <= phi_f30) {
phi_s2++;
if (sqrtf(SQXYZ(temp_f20)) <= phi_f30) {
phi_f30 = sp294;
phi_s2++;
}
} else {
if (sqrtf(SQXYZ(phi_f20)) <= (temp_f28 + 1.0f)) {
if (sqrtf(SQXYZ(temp_f20)) <= (temp_f28 + 1.0f)) {
phi_s2++;
}
}
temp_s4++;
if ((temp_s4 < 20) && (phi_s2 < 4)) {
phi_f20.x = D_809105D8[phi_s2].x - sp2D0.x;
phi_f20.y = D_809105D8[phi_s2].y - sp2D0.y;
phi_f20.z = D_809105D8[phi_s2].z - sp2D0.z;
} else {
if ((temp_s4 >= 20) || (phi_s2 >= 4)) {
break;
}
}
temp_s4_2 = 0;
D_80910608[3] = D_80910608[2];
D_80910608[2] = D_80910608[1];
D_80910608[1] = D_80910608[0];
D_80910608[0] = *arg1;
sp2D0 = D_80910608[0];
temp_f20.x = D_80910608[1].x - sp2D0.x;
temp_f20.y = D_80910608[1].y - sp2D0.y;
temp_f20.z = D_80910608[1].z - sp2D0.z;
sp2CA = Math_Atan2S(temp_f20.z, temp_f20.x);
sp2C8 = Math_Atan2S(sqrtf(SQXZ(temp_f20)), temp_f20.y);
temp_f2.x = D_80910608[2].x - D_80910608[1].x;
temp_f2.y = D_80910608[2].y - D_80910608[1].y;
temp_f2.z = D_80910608[2].z - D_80910608[1].z;
temp_f22_2.x = D_80910608[3].x - D_80910608[2].x;
temp_f22_2.y = D_80910608[3].y - D_80910608[2].y;
temp_f22_2.z = D_80910608[3].z - D_80910608[2].z;
temp_f0 = sqrtf(SQXYZ(temp_f2));
temp_f0_2 = sqrtf(SQXYZ(temp_f20));
temp_f12 = sqrtf(SQXYZ(temp_f22_2)) + (temp_f0_2 + temp_f0);
temp_f22.x = D_80910608[3].x - D_80910608[2].x;
temp_f22.y = D_80910608[3].y - D_80910608[2].y;
temp_f22.z = D_80910608[3].z - D_80910608[2].z;
temp_f12 = sqrtf(SQXYZ(temp_f20)) + sqrtf(SQXYZ(temp_f2)) + sqrtf(SQXYZ(temp_f22));
if (temp_f12 <= 1.0f) {
temp_f12 = 1.0f;
}
sp294 = temp_f0 / 2.0f;
temp_f28 = temp_f12 * 0.083f;
phi_f20.x = D_80910608[1].x - sp2D0.x;
phi_f20.y = D_80910608[1].y - sp2D0.y;
phi_f20.z = D_80910608[1].z - sp2D0.z;
phi_f30 = sqrtf(SQXYZ(temp_f20)) / 2.0f;
sp294 = sqrtf(SQXYZ(temp_f2)) / 2.0f;
phi_s2 = 1;
temp_s4_2 = 0;
phi_f30 = temp_f0_2 / 2.0f;
while (true) {
temp_s1 = Math_Atan2S(phi_f20.z, phi_f20.x);
Math_ApproachS(&sp2C8, Math_Atan2S(sqrtf(SQXZ(phi_f20)), phi_f20.y), 1, 0x1000);
temp_f20.x = D_80910608[phi_s2].x - sp2D0.x;
temp_f20.y = D_80910608[phi_s2].y - sp2D0.y;
temp_f20.z = D_80910608[phi_s2].z - sp2D0.z;
temp_s1 = Math_Atan2S(temp_f20.z, temp_f20.x);
temp_a1 = Math_Atan2S(sqrtf(SQXZ(temp_f20)), temp_f20.y);
Math_ApproachS(&sp2C8, temp_a1, 1, 0x1000);
Math_ApproachS(&sp2CA, temp_s1, 1, 0x1000);
temp_f0_3 = Math_CosS(sp2C8);
temp_f26 = temp_f28 * Math_CosS(sp2C8);
sp9C[temp_s4_2] = sp2D0;
temp_f26 = temp_f0_3 * temp_f28;
sp2D0.x += temp_f26 * Math_SinS(sp2CA);
sp2D0.y += temp_f28 * Math_SinS(sp2C8);
sp2D0.z += temp_f26 * Math_CosS(sp2CA);
phi_f20.x = D_80910608[phi_s2].x - sp2D0.x;
phi_f20.y = D_80910608[phi_s2].y - sp2D0.y;
phi_f20.z = D_80910608[phi_s2].z - sp2D0.z;
temp_f20.x = D_80910608[phi_s2].x - sp2D0.x;
temp_f20.y = D_80910608[phi_s2].y - sp2D0.y;
temp_f20.z = D_80910608[phi_s2].z - sp2D0.z;
if (phi_s2 < 3) {
if (sqrtf(SQXYZ(phi_f20)) <= phi_f30) {
phi_s2++;
if (sqrtf(SQXYZ(temp_f20)) <= phi_f30) {
phi_f30 = sp294;
phi_s2++;
}
} else {
if (sqrtf(SQXYZ(phi_f20)) <= (temp_f28 + 1.0f)) {
if (sqrtf(SQXYZ(temp_f20)) <= (temp_f28 + 1.0f)) {
phi_s2++;
}
}
temp_s4_2++;
if ((temp_s4_2 < 20) && (phi_s2 < 4)) {
phi_f20.x = D_80910608[phi_s2].x - sp2D0.x;
phi_f20.y = D_80910608[phi_s2].y - sp2D0.y;
phi_f20.z = D_80910608[phi_s2].z - sp2D0.z;
} else {
if ((temp_s4_2 >= 20) || (phi_s2 >= 4)) {
break;
}
}
temp_a1 = SEGMENTED_TO_VIRTUAL(ovl_Boss_Ganon2_Vtx_00BA20);
vtx = SEGMENTED_TO_VIRTUAL(ovl_Boss_Ganon2_Vtx_00BA20);
for (i = 0; i < 11; i++) {
if ((temp_s4 - i) > 0) {
temp_a1[D_80907084[i]].n.ob[0] = sp18C[temp_s4 - i - 1].x;
temp_a1[D_80907084[i]].n.ob[1] = sp18C[temp_s4 - i - 1].y;
temp_a1[D_80907084[i]].n.ob[2] = sp18C[temp_s4 - i - 1].z;
vtx[D_80907084[i]].n.ob[0] = sp18C[temp_s4 - i - 1].x;
vtx[D_80907084[i]].n.ob[1] = sp18C[temp_s4 - i - 1].y;
vtx[D_80907084[i]].n.ob[2] = sp18C[temp_s4 - i - 1].z;
}
if ((temp_s4_2 - i) > 0) {
temp_a1[D_80907090[i]].n.ob[0] = sp9C[temp_s4_2 - i - 1].x;
temp_a1[D_80907090[i]].n.ob[1] = sp9C[temp_s4_2 - i - 1].y;
temp_a1[D_80907090[i]].n.ob[2] = sp9C[temp_s4_2 - i - 1].z;
vtx[D_80907090[i]].n.ob[0] = sp9C[temp_s4_2 - i - 1].x;
vtx[D_80907090[i]].n.ob[1] = sp9C[temp_s4_2 - i - 1].y;
vtx[D_80907090[i]].n.ob[2] = sp9C[temp_s4_2 - i - 1].z;
}
}
}
#else
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Boss_Ganon2/func_809034E4.s")
#endif
void func_80903F38(BossGanon2* this, GlobalContext* globalCtx) {
OPEN_DISPS(globalCtx->state.gfxCtx, "../z_boss_ganon2.c", 5083);