1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-05-10 02:54:24 +00:00

z_collision_check OK (#558)

* another match

* fix variables

* comment

* functions.h

* last match
This commit is contained in:
petrie911 2020-12-22 14:59:56 -06:00 committed by GitHub
parent 4f2259e24e
commit e4b84365ff
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 173 additions and 947 deletions

View file

@ -1,260 +0,0 @@
.rdata
glabel D_8013A5B0
.asciz "../z_collision_check.c"
.balign 4
glabel D_8013A5C8
.asciz "vtx_tbl != NULL"
.balign 4
glabel D_8013A5D8
.asciz "../z_collision_check.c"
.balign 4
glabel D_8013A5F0
.asciz "../z_collision_check.c"
.balign 4
.text
glabel func_8005B2AC
/* AD244C 8005B2AC 27BDFF70 */ addiu $sp, $sp, -0x90
/* AD2450 8005B2B0 AFB00028 */ sw $s0, 0x28($sp)
/* AD2454 8005B2B4 AFA60098 */ sw $a2, 0x98($sp)
/* AD2458 8005B2B8 00808025 */ move $s0, $a0
/* AD245C 8005B2BC AFBF002C */ sw $ra, 0x2c($sp)
/* AD2460 8005B2C0 AFA50094 */ sw $a1, 0x94($sp)
/* AD2464 8005B2C4 AFA7009C */ sw $a3, 0x9c($sp)
/* AD2468 8005B2C8 3C068014 */ lui $a2, %hi(D_8013A5B0) # $a2, 0x8014
/* AD246C 8005B2CC 24C6A5B0 */ addiu $a2, %lo(D_8013A5B0) # addiu $a2, $a2, -0x5a50
/* AD2470 8005B2D0 240702C9 */ li $a3, 713
/* AD2474 8005B2D4 02002825 */ move $a1, $s0
/* AD2478 8005B2D8 0C031AB1 */ jal Graph_OpenDisps
/* AD247C 8005B2DC 27A40064 */ addiu $a0, $sp, 0x64
/* AD2480 8005B2E0 8E0202C0 */ lw $v0, 0x2c0($s0)
/* AD2484 8005B2E4 3C0FDA38 */ lui $t7, (0xDA380003 >> 16) # lui $t7, 0xda38
/* AD2488 8005B2E8 3C188013 */ lui $t8, %hi(gMtxClear) # $t8, 0x8013
/* AD248C 8005B2EC 244E0008 */ addiu $t6, $v0, 8
/* AD2490 8005B2F0 AE0E02C0 */ sw $t6, 0x2c0($s0)
/* AD2494 8005B2F4 2718DB20 */ addiu $t8, %lo(gMtxClear) # addiu $t8, $t8, -0x24e0
/* AD2498 8005B2F8 35EF0003 */ ori $t7, (0xDA380003 & 0xFFFF) # ori $t7, $t7, 3
/* AD249C 8005B2FC AC4F0000 */ sw $t7, ($v0)
/* AD24A0 8005B300 AC580004 */ sw $t8, 4($v0)
/* AD24A4 8005B304 8E0202C0 */ lw $v0, 0x2c0($s0)
/* AD24A8 8005B308 3C09FA00 */ lui $t1, (0xFA0000FF >> 16) # lui $t1, 0xfa00
/* AD24AC 8005B30C 352900FF */ ori $t1, (0xFA0000FF & 0xFFFF) # ori $t1, $t1, 0xff
/* AD24B0 8005B310 24590008 */ addiu $t9, $v0, 8
/* AD24B4 8005B314 AE1902C0 */ sw $t9, 0x2c0($s0)
/* AD24B8 8005B318 AC490000 */ sw $t1, ($v0)
/* AD24BC 8005B31C 93AE00A7 */ lbu $t6, 0xa7($sp)
/* AD24C0 8005B320 93AB00A3 */ lbu $t3, 0xa3($sp)
/* AD24C4 8005B324 93A900AB */ lbu $t1, 0xab($sp)
/* AD24C8 8005B328 000E7C00 */ sll $t7, $t6, 0x10
/* AD24CC 8005B32C 000B6600 */ sll $t4, $t3, 0x18
/* AD24D0 8005B330 018FC025 */ or $t8, $t4, $t7
/* AD24D4 8005B334 00095200 */ sll $t2, $t1, 8
/* AD24D8 8005B338 030A5825 */ or $t3, $t8, $t2
/* AD24DC 8005B33C 356D0032 */ ori $t5, $t3, 0x32
/* AD24E0 8005B340 AC4D0004 */ sw $t5, 4($v0)
/* AD24E4 8005B344 8E0202C0 */ lw $v0, 0x2c0($s0)
/* AD24E8 8005B348 3C04E700 */ lui $a0, 0xe700
/* AD24EC 8005B34C 3C0FE200 */ lui $t7, (0xE200001C >> 16) # lui $t7, 0xe200
/* AD24F0 8005B350 244E0008 */ addiu $t6, $v0, 8
/* AD24F4 8005B354 AE0E02C0 */ sw $t6, 0x2c0($s0)
/* AD24F8 8005B358 AC400004 */ sw $zero, 4($v0)
/* AD24FC 8005B35C AC440000 */ sw $a0, ($v0)
/* AD2500 8005B360 8E0202C0 */ lw $v0, 0x2c0($s0)
/* AD2504 8005B364 3C19C811 */ lui $t9, (0xC8112078 >> 16) # lui $t9, 0xc811
/* AD2508 8005B368 37392078 */ ori $t9, (0xC8112078 & 0xFFFF) # ori $t9, $t9, 0x2078
/* AD250C 8005B36C 244C0008 */ addiu $t4, $v0, 8
/* AD2510 8005B370 AE0C02C0 */ sw $t4, 0x2c0($s0)
/* AD2514 8005B374 35EF001C */ ori $t7, (0xE200001C & 0xFFFF) # ori $t7, $t7, 0x1c
/* AD2518 8005B378 AC4F0000 */ sw $t7, ($v0)
/* AD251C 8005B37C AC590004 */ sw $t9, 4($v0)
/* AD2520 8005B380 8E0202C0 */ lw $v0, 0x2c0($s0)
/* AD2524 8005B384 3C18D700 */ lui $t8, 0xd700
/* AD2528 8005B388 3C0DFC41 */ lui $t5, (0xFC41C7FF >> 16) # lui $t5, 0xfc41
/* AD252C 8005B38C 24490008 */ addiu $t1, $v0, 8
/* AD2530 8005B390 AE0902C0 */ sw $t1, 0x2c0($s0)
/* AD2534 8005B394 AC400004 */ sw $zero, 4($v0)
/* AD2538 8005B398 AC580000 */ sw $t8, ($v0)
/* AD253C 8005B39C 8E0202C0 */ lw $v0, 0x2c0($s0)
/* AD2540 8005B3A0 35ADC7FF */ ori $t5, (0xFC41C7FF & 0xFFFF) # ori $t5, $t5, 0xc7ff
/* AD2544 8005B3A4 240EFE38 */ li $t6, -456
/* AD2548 8005B3A8 244A0008 */ addiu $t2, $v0, 8
/* AD254C 8005B3AC AE0A02C0 */ sw $t2, 0x2c0($s0)
/* AD2550 8005B3B0 AC400004 */ sw $zero, 4($v0)
/* AD2554 8005B3B4 AC440000 */ sw $a0, ($v0)
/* AD2558 8005B3B8 8E0202C0 */ lw $v0, 0x2c0($s0)
/* AD255C 8005B3BC 3C0FD9FF */ lui $t7, (0xD9FFF9FF >> 16) # lui $t7, 0xd9ff
/* AD2560 8005B3C0 35EFF9FF */ ori $t7, (0xD9FFF9FF & 0xFFFF) # ori $t7, $t7, 0xf9ff
/* AD2564 8005B3C4 244B0008 */ addiu $t3, $v0, 8
/* AD2568 8005B3C8 AE0B02C0 */ sw $t3, 0x2c0($s0)
/* AD256C 8005B3CC AC4E0004 */ sw $t6, 4($v0)
/* AD2570 8005B3D0 AC4D0000 */ sw $t5, ($v0)
/* AD2574 8005B3D4 8E0202C0 */ lw $v0, 0x2c0($s0)
/* AD2578 8005B3D8 3C09D9FF */ lui $t1, (0xD9FFFFFF >> 16) # lui $t1, 0xd9ff
/* AD257C 8005B3DC 3529FFFF */ ori $t1, (0xD9FFFFFF & 0xFFFF) # ori $t1, $t1, 0xffff
/* AD2580 8005B3E0 244C0008 */ addiu $t4, $v0, 8
/* AD2584 8005B3E4 AE0C02C0 */ sw $t4, 0x2c0($s0)
/* AD2588 8005B3E8 AC400004 */ sw $zero, 4($v0)
/* AD258C 8005B3EC AC4F0000 */ sw $t7, ($v0)
/* AD2590 8005B3F0 8E0202C0 */ lw $v0, 0x2c0($s0)
/* AD2594 8005B3F4 3C180002 */ lui $t8, 2
/* AD2598 8005B3F8 24050030 */ li $a1, 48
/* AD259C 8005B3FC 24590008 */ addiu $t9, $v0, 8
/* AD25A0 8005B400 AE1902C0 */ sw $t9, 0x2c0($s0)
/* AD25A4 8005B404 AC580004 */ sw $t8, 4($v0)
/* AD25A8 8005B408 AC490000 */ sw $t1, ($v0)
/* AD25AC 8005B40C 8E0202C0 */ lw $v0, 0x2c0($s0)
/* AD25B0 8005B410 244A0008 */ addiu $t2, $v0, 8
/* AD25B4 8005B414 AE0A02C0 */ sw $t2, 0x2c0($s0)
/* AD25B8 8005B418 AC440000 */ sw $a0, ($v0)
/* AD25BC 8005B41C 02002025 */ move $a0, $s0
/* AD25C0 8005B420 0C031A73 */ jal Graph_Alloc
/* AD25C4 8005B424 AC400004 */ sw $zero, 4($v0)
/* AD25C8 8005B428 14400009 */ bnez $v0, .L8005B450
/* AD25CC 8005B42C 00404025 */ move $t0, $v0
/* AD25D0 8005B430 3C048014 */ lui $a0, %hi(D_8013A5C8) # $a0, 0x8014
/* AD25D4 8005B434 3C058014 */ lui $a1, %hi(D_8013A5D8) # $a1, 0x8014
/* AD25D8 8005B438 24A5A5D8 */ addiu $a1, %lo(D_8013A5D8) # addiu $a1, $a1, -0x5a28
/* AD25DC 8005B43C 2484A5C8 */ addiu $a0, %lo(D_8013A5C8) # addiu $a0, $a0, -0x5a38
/* AD25E0 8005B440 240602D6 */ li $a2, 726
/* AD25E4 8005B444 0C0007FC */ jal __assert
/* AD25E8 8005B448 AFA2008C */ sw $v0, 0x8c($sp)
/* AD25EC 8005B44C 8FA8008C */ lw $t0, 0x8c($sp)
.L8005B450:
/* AD25F0 8005B450 8FA40094 */ lw $a0, 0x94($sp)
/* AD25F4 8005B454 8FA50098 */ lw $a1, 0x98($sp)
/* AD25F8 8005B458 8FA6009C */ lw $a2, 0x9c($sp)
/* AD25FC 8005B45C C4840000 */ lwc1 $f4, ($a0)
/* AD2600 8005B460 27A70084 */ addiu $a3, $sp, 0x84
/* AD2604 8005B464 4600218D */ trunc.w.s $f6, $f4
/* AD2608 8005B468 440D3000 */ mfc1 $t5, $f6
/* AD260C 8005B46C 00000000 */ nop
/* AD2610 8005B470 A50D0000 */ sh $t5, ($t0)
/* AD2614 8005B474 C4880004 */ lwc1 $f8, 4($a0)
/* AD2618 8005B478 27AD007C */ addiu $t5, $sp, 0x7c
/* AD261C 8005B47C 4600428D */ trunc.w.s $f10, $f8
/* AD2620 8005B480 440C5000 */ mfc1 $t4, $f10
/* AD2624 8005B484 00000000 */ nop
/* AD2628 8005B488 A50C0002 */ sh $t4, 2($t0)
/* AD262C 8005B48C C4900008 */ lwc1 $f16, 8($a0)
/* AD2630 8005B490 4600848D */ trunc.w.s $f18, $f16
/* AD2634 8005B494 44199000 */ mfc1 $t9, $f18
/* AD2638 8005B498 00000000 */ nop
/* AD263C 8005B49C A5190004 */ sh $t9, 4($t0)
/* AD2640 8005B4A0 C4A40000 */ lwc1 $f4, ($a1)
/* AD2644 8005B4A4 4600218D */ trunc.w.s $f6, $f4
/* AD2648 8005B4A8 44183000 */ mfc1 $t8, $f6
/* AD264C 8005B4AC 00000000 */ nop
/* AD2650 8005B4B0 A5180010 */ sh $t8, 0x10($t0)
/* AD2654 8005B4B4 C4A80004 */ lwc1 $f8, 4($a1)
/* AD2658 8005B4B8 4600428D */ trunc.w.s $f10, $f8
/* AD265C 8005B4BC 440B5000 */ mfc1 $t3, $f10
/* AD2660 8005B4C0 00000000 */ nop
/* AD2664 8005B4C4 A50B0012 */ sh $t3, 0x12($t0)
/* AD2668 8005B4C8 C4B00008 */ lwc1 $f16, 8($a1)
/* AD266C 8005B4CC 27AB0080 */ addiu $t3, $sp, 0x80
/* AD2670 8005B4D0 4600848D */ trunc.w.s $f18, $f16
/* AD2674 8005B4D4 440E9000 */ mfc1 $t6, $f18
/* AD2678 8005B4D8 00000000 */ nop
/* AD267C 8005B4DC A50E0014 */ sh $t6, 0x14($t0)
/* AD2680 8005B4E0 C4C40000 */ lwc1 $f4, ($a2)
/* AD2684 8005B4E4 27AE0078 */ addiu $t6, $sp, 0x78
/* AD2688 8005B4E8 4600218D */ trunc.w.s $f6, $f4
/* AD268C 8005B4EC 440F3000 */ mfc1 $t7, $f6
/* AD2690 8005B4F0 00000000 */ nop
/* AD2694 8005B4F4 A50F0020 */ sh $t7, 0x20($t0)
/* AD2698 8005B4F8 C4C80004 */ lwc1 $f8, 4($a2)
/* AD269C 8005B4FC 4600428D */ trunc.w.s $f10, $f8
/* AD26A0 8005B500 44095000 */ mfc1 $t1, $f10
/* AD26A4 8005B504 00000000 */ nop
/* AD26A8 8005B508 A5090022 */ sh $t1, 0x22($t0)
/* AD26AC 8005B50C C4D00008 */ lwc1 $f16, 8($a2)
/* AD26B0 8005B510 4600848D */ trunc.w.s $f18, $f16
/* AD26B4 8005B514 440A9000 */ mfc1 $t2, $f18
/* AD26B8 8005B518 00000000 */ nop
/* AD26BC 8005B51C A50A0024 */ sh $t2, 0x24($t0)
/* AD26C0 8005B520 AFA8008C */ sw $t0, 0x8c($sp)
/* AD26C4 8005B524 AFAE0018 */ sw $t6, 0x18($sp)
/* AD26C8 8005B528 AFAD0014 */ sw $t5, 0x14($sp)
/* AD26CC 8005B52C 0C03322D */ jal Math3D_DefPlane
/* AD26D0 8005B530 AFAB0010 */ sw $t3, 0x10($sp)
/* AD26D4 8005B534 8FA8008C */ lw $t0, 0x8c($sp)
/* AD26D8 8005B538 240300FF */ li $v1, 255
/* AD26DC 8005B53C 25040030 */ addiu $a0, $t0, 0x30
/* AD26E0 8005B540 0104082B */ sltu $at, $t0, $a0
/* AD26E4 8005B544 1020002C */ beqz $at, .L8005B5F8
/* AD26E8 8005B548 01001025 */ move $v0, $t0
/* AD26EC 8005B54C 24420010 */ addiu $v0, $v0, 0x10
/* AD26F0 8005B550 0044082B */ sltu $at, $v0, $a0
/* AD26F4 8005B554 A440FFF6 */ sh $zero, -0xa($v0)
/* AD26F8 8005B558 A440FFF8 */ sh $zero, -8($v0)
/* AD26FC 8005B55C 10200016 */ beqz $at, .L8005B5B8
/* AD2700 8005B560 A440FFFA */ sh $zero, -6($v0)
.L8005B564:
/* AD2704 8005B564 C7B20084 */ lwc1 $f18, 0x84($sp)
/* AD2708 8005B568 24420010 */ addiu $v0, $v0, 0x10
/* AD270C 8005B56C 0044082B */ sltu $at, $v0, $a0
/* AD2710 8005B570 4600948D */ trunc.w.s $f18, $f18
/* AD2714 8005B574 44099000 */ mfc1 $t1, $f18
/* AD2718 8005B578 00000000 */ nop
/* AD271C 8005B57C A049FFEC */ sb $t1, -0x14($v0)
/* AD2720 8005B580 C7B20080 */ lwc1 $f18, 0x80($sp)
/* AD2724 8005B584 4600948D */ trunc.w.s $f18, $f18
/* AD2728 8005B588 440D9000 */ mfc1 $t5, $f18
/* AD272C 8005B58C 00000000 */ nop
/* AD2730 8005B590 A04DFFED */ sb $t5, -0x13($v0)
/* AD2734 8005B594 C7B2007C */ lwc1 $f18, 0x7c($sp)
/* AD2738 8005B598 A043FFEF */ sb $v1, -0x11($v0)
/* AD273C 8005B59C A440FFF6 */ sh $zero, -0xa($v0)
/* AD2740 8005B5A0 4600948D */ trunc.w.s $f18, $f18
/* AD2744 8005B5A4 A440FFF8 */ sh $zero, -8($v0)
/* AD2748 8005B5A8 A440FFFA */ sh $zero, -6($v0)
/* AD274C 8005B5AC 44199000 */ mfc1 $t9, $f18
/* AD2750 8005B5B0 1420FFEC */ bnez $at, .L8005B564
/* AD2754 8005B5B4 A059FFEE */ sb $t9, -0x12($v0)
.L8005B5B8:
/* AD2758 8005B5B8 C7B20084 */ lwc1 $f18, 0x84($sp)
/* AD275C 8005B5BC 4600948D */ trunc.w.s $f18, $f18
/* AD2760 8005B5C0 44099000 */ mfc1 $t1, $f18
/* AD2764 8005B5C4 00000000 */ nop
/* AD2768 8005B5C8 A049FFFC */ sb $t1, -4($v0)
/* AD276C 8005B5CC C7B20080 */ lwc1 $f18, 0x80($sp)
/* AD2770 8005B5D0 4600948D */ trunc.w.s $f18, $f18
/* AD2774 8005B5D4 440D9000 */ mfc1 $t5, $f18
/* AD2778 8005B5D8 00000000 */ nop
/* AD277C 8005B5DC A04DFFFD */ sb $t5, -3($v0)
/* AD2780 8005B5E0 C7B2007C */ lwc1 $f18, 0x7c($sp)
/* AD2784 8005B5E4 A043FFFF */ sb $v1, -1($v0)
/* AD2788 8005B5E8 4600948D */ trunc.w.s $f18, $f18
/* AD278C 8005B5EC 44199000 */ mfc1 $t9, $f18
/* AD2790 8005B5F0 00000000 */ nop
/* AD2794 8005B5F4 A059FFFE */ sb $t9, -2($v0)
.L8005B5F8:
/* AD2798 8005B5F8 8E0202C0 */ lw $v0, 0x2c0($s0)
/* AD279C 8005B5FC 3C180100 */ lui $t8, (0x01003006 >> 16) # lui $t8, 0x100
/* AD27A0 8005B600 37183006 */ ori $t8, (0x01003006 & 0xFFFF) # ori $t8, $t8, 0x3006
/* AD27A4 8005B604 24490008 */ addiu $t1, $v0, 8
/* AD27A8 8005B608 AE0902C0 */ sw $t1, 0x2c0($s0)
/* AD27AC 8005B60C AC480004 */ sw $t0, 4($v0)
/* AD27B0 8005B610 AC580000 */ sw $t8, ($v0)
/* AD27B4 8005B614 8E0202C0 */ lw $v0, 0x2c0($s0)
/* AD27B8 8005B618 3C0B0500 */ lui $t3, (0x05000204 >> 16) # lui $t3, 0x500
/* AD27BC 8005B61C 356B0204 */ ori $t3, (0x05000204 & 0xFFFF) # ori $t3, $t3, 0x204
/* AD27C0 8005B620 244A0008 */ addiu $t2, $v0, 8
/* AD27C4 8005B624 AE0A02C0 */ sw $t2, 0x2c0($s0)
/* AD27C8 8005B628 3C068014 */ lui $a2, %hi(D_8013A5F0) # $a2, 0x8014
/* AD27CC 8005B62C 24C6A5F0 */ addiu $a2, %lo(D_8013A5F0) # addiu $a2, $a2, -0x5a10
/* AD27D0 8005B630 27A40064 */ addiu $a0, $sp, 0x64
/* AD27D4 8005B634 02002825 */ move $a1, $s0
/* AD27D8 8005B638 240702F5 */ li $a3, 757
/* AD27DC 8005B63C AC400004 */ sw $zero, 4($v0)
/* AD27E0 8005B640 0C031AD5 */ jal Graph_CloseDisps
/* AD27E4 8005B644 AC4B0000 */ sw $t3, ($v0)
/* AD27E8 8005B648 8FBF002C */ lw $ra, 0x2c($sp)
/* AD27EC 8005B64C 8FB00028 */ lw $s0, 0x28($sp)
/* AD27F0 8005B650 27BD0090 */ addiu $sp, $sp, 0x90
/* AD27F4 8005B654 03E00008 */ jr $ra
/* AD27F8 8005B658 00000000 */ nop

View file

@ -1,493 +0,0 @@
.late_rodata
glabel D_8013AD2C
.float 0.008
glabel D_8013AD30
.float 0.008
.text
glabel func_80062ECC
/* ADA06C 80062ECC 27BDFF88 */ addiu $sp, $sp, -0x78
/* ADA070 80062ED0 8FA40088 */ lw $a0, 0x88($sp)
/* ADA074 80062ED4 E7AC0078 */ swc1 $f12, 0x78($sp)
/* ADA078 80062ED8 E7AE007C */ swc1 $f14, 0x7c($sp)
/* ADA07C 80062EDC AFA60080 */ sw $a2, 0x80($sp)
/* ADA080 80062EE0 C4E60000 */ lwc1 $f6, ($a3)
/* ADA084 80062EE4 C4840000 */ lwc1 $f4, ($a0)
/* ADA088 80062EE8 8FA5008C */ lw $a1, 0x8c($sp)
/* ADA08C 80062EEC 00001025 */ move $v0, $zero
/* ADA090 80062EF0 46062201 */ sub.s $f8, $f4, $f6
/* ADA094 80062EF4 E7A8006C */ swc1 $f8, 0x6c($sp)
/* ADA098 80062EF8 C4E40004 */ lwc1 $f4, 4($a3)
/* ADA09C 80062EFC C48A0004 */ lwc1 $f10, 4($a0)
/* ADA0A0 80062F00 C7A80080 */ lwc1 $f8, 0x80($sp)
/* ADA0A4 80062F04 46045181 */ sub.s $f6, $f10, $f4
/* ADA0A8 80062F08 46083381 */ sub.s $f14, $f6, $f8
/* ADA0AC 80062F0C E7AE0070 */ swc1 $f14, 0x70($sp)
/* ADA0B0 80062F10 C4E60008 */ lwc1 $f6, 8($a3)
/* ADA0B4 80062F14 C4840008 */ lwc1 $f4, 8($a0)
/* ADA0B8 80062F18 46062101 */ sub.s $f4, $f4, $f6
/* ADA0BC 80062F1C E7A40074 */ swc1 $f4, 0x74($sp)
/* ADA0C0 80062F20 C4E40000 */ lwc1 $f4, ($a3)
/* ADA0C4 80062F24 C4A60000 */ lwc1 $f6, ($a1)
/* ADA0C8 80062F28 46043181 */ sub.s $f6, $f6, $f4
/* ADA0CC 80062F2C E7A60060 */ swc1 $f6, 0x60($sp)
/* ADA0D0 80062F30 C4E60004 */ lwc1 $f6, 4($a3)
/* ADA0D4 80062F34 C4A40004 */ lwc1 $f4, 4($a1)
/* ADA0D8 80062F38 46062101 */ sub.s $f4, $f4, $f6
/* ADA0DC 80062F3C 46082181 */ sub.s $f6, $f4, $f8
/* ADA0E0 80062F40 E7A60064 */ swc1 $f6, 0x64($sp)
/* ADA0E4 80062F44 C4E80008 */ lwc1 $f8, 8($a3)
/* ADA0E8 80062F48 C4A40008 */ lwc1 $f4, 8($a1)
/* ADA0EC 80062F4C 46082101 */ sub.s $f4, $f4, $f8
/* ADA0F0 80062F50 C7A80060 */ lwc1 $f8, 0x60($sp)
/* ADA0F4 80062F54 E7A40068 */ swc1 $f4, 0x68($sp)
/* ADA0F8 80062F58 C7A4006C */ lwc1 $f4, 0x6c($sp)
/* ADA0FC 80062F5C 46044401 */ sub.s $f16, $f8, $f4
/* ADA100 80062F60 460E3201 */ sub.s $f8, $f6, $f14
/* ADA104 80062F64 C7A60068 */ lwc1 $f6, 0x68($sp)
/* ADA108 80062F68 E7B00054 */ swc1 $f16, 0x54($sp)
/* ADA10C 80062F6C E7A80018 */ swc1 $f8, 0x18($sp)
/* ADA110 80062F70 E7A80058 */ swc1 $f8, 0x58($sp)
/* ADA114 80062F74 C7A80074 */ lwc1 $f8, 0x74($sp)
/* ADA118 80062F78 46083481 */ sub.s $f18, $f6, $f8
/* ADA11C 80062F7C 44803000 */ mtc1 $zero, $f6
/* ADA120 80062F80 C7A8007C */ lwc1 $f8, 0x7c($sp)
/* ADA124 80062F84 460E303C */ c.lt.s $f6, $f14
/* ADA128 80062F88 E7B2005C */ swc1 $f18, 0x5c($sp)
/* ADA12C 80062F8C 45000002 */ bc1f .L80062F98
/* ADA130 80062F90 00000000 */ nop
/* ADA134 80062F94 24020001 */ li $v0, 1
.L80062F98:
/* ADA138 80062F98 50400013 */ beql $v0, $zero, .L80062FE8
/* ADA13C 80062F9C 44804000 */ mtc1 $zero, $f8
/* ADA140 80062FA0 4608703C */ c.lt.s $f14, $f8
/* ADA144 80062FA4 C7A80074 */ lwc1 $f8, 0x74($sp)
/* ADA148 80062FA8 C7A60074 */ lwc1 $f6, 0x74($sp)
/* ADA14C 80062FAC 4502000E */ bc1fl .L80062FE8
/* ADA150 80062FB0 44804000 */ mtc1 $zero, $f8
/* ADA154 80062FB4 46042282 */ mul.s $f10, $f4, $f4
/* ADA158 80062FB8 00000000 */ nop
/* ADA15C 80062FBC 46083102 */ mul.s $f4, $f6, $f8
/* ADA160 80062FC0 C7A60078 */ lwc1 $f6, 0x78($sp)
/* ADA164 80062FC4 46045000 */ add.s $f0, $f10, $f4
/* ADA168 80062FC8 46000004 */ sqrt.s $f0, $f0
/* ADA16C 80062FCC 4606003C */ c.lt.s $f0, $f6
/* ADA170 80062FD0 00000000 */ nop
/* ADA174 80062FD4 45000003 */ bc1f .L80062FE4
/* ADA178 80062FD8 00000000 */ nop
/* ADA17C 80062FDC 1000017A */ b .L800635C8
/* ADA180 80062FE0 24020003 */ li $v0, 3
.L80062FE4:
/* ADA184 80062FE4 44804000 */ mtc1 $zero, $f8
.L80062FE8:
/* ADA188 80062FE8 C7AA0064 */ lwc1 $f10, 0x64($sp)
/* ADA18C 80062FEC 00001825 */ move $v1, $zero
/* ADA190 80062FF0 C7A4007C */ lwc1 $f4, 0x7c($sp)
/* ADA194 80062FF4 460A403C */ c.lt.s $f8, $f10
/* ADA198 80062FF8 00000000 */ nop
/* ADA19C 80062FFC 45000002 */ bc1f .L80063008
/* ADA1A0 80063000 00000000 */ nop
/* ADA1A4 80063004 24030001 */ li $v1, 1
.L80063008:
/* ADA1A8 80063008 50600012 */ beql $v1, $zero, .L80063054
/* ADA1AC 8006300C C7A60074 */ lwc1 $f6, 0x74($sp)
/* ADA1B0 80063010 4604503C */ c.lt.s $f10, $f4
/* ADA1B4 80063014 C7A20060 */ lwc1 $f2, 0x60($sp)
/* ADA1B8 80063018 C7AC0068 */ lwc1 $f12, 0x68($sp)
/* ADA1BC 8006301C 4502000D */ bc1fl .L80063054
/* ADA1C0 80063020 C7A60074 */ lwc1 $f6, 0x74($sp)
/* ADA1C4 80063024 46021182 */ mul.s $f6, $f2, $f2
/* ADA1C8 80063028 C7AA0078 */ lwc1 $f10, 0x78($sp)
/* ADA1CC 8006302C 460C6202 */ mul.s $f8, $f12, $f12
/* ADA1D0 80063030 46083000 */ add.s $f0, $f6, $f8
/* ADA1D4 80063034 46000004 */ sqrt.s $f0, $f0
/* ADA1D8 80063038 460A003C */ c.lt.s $f0, $f10
/* ADA1DC 8006303C 00000000 */ nop
/* ADA1E0 80063040 45020004 */ bc1fl .L80063054
/* ADA1E4 80063044 C7A60074 */ lwc1 $f6, 0x74($sp)
/* ADA1E8 80063048 1000015F */ b .L800635C8
/* ADA1EC 8006304C 24020003 */ li $v0, 3
/* ADA1F0 80063050 C7A60074 */ lwc1 $f6, 0x74($sp)
.L80063054:
/* ADA1F4 80063054 C7A4006C */ lwc1 $f4, 0x6c($sp)
/* ADA1F8 80063058 3C018014 */ lui $at, %hi(D_8013AD2C)
/* ADA1FC 8006305C 46063202 */ mul.s $f8, $f6, $f6
/* ADA200 80063060 00000000 */ nop
/* ADA204 80063064 46042282 */ mul.s $f10, $f4, $f4
/* ADA208 80063068 46085280 */ add.s $f10, $f10, $f8
/* ADA20C 8006306C C7A80078 */ lwc1 $f8, 0x78($sp)
/* ADA210 80063070 46084202 */ mul.s $f8, $f8, $f8
/* ADA214 80063074 46085301 */ sub.s $f12, $f10, $f8
/* ADA218 80063078 46108282 */ mul.s $f10, $f16, $f16
/* ADA21C 8006307C 00000000 */ nop
/* ADA220 80063080 46129202 */ mul.s $f8, $f18, $f18
/* ADA224 80063084 E7AC0038 */ swc1 $f12, 0x38($sp)
/* ADA228 80063088 46085080 */ add.s $f2, $f10, $f8
/* ADA22C 8006308C C42AAD2C */ lwc1 $f10, %lo(D_8013AD2C)($at)
/* ADA230 80063090 46001005 */ abs.s $f0, $f2
/* ADA234 80063094 460A003C */ c.lt.s $f0, $f10
/* ADA238 80063098 00000000 */ nop
/* ADA23C 8006309C 4501002C */ bc1t .L80063150
/* ADA240 800630A0 00000000 */ nop
/* ADA244 800630A4 46108200 */ add.s $f8, $f16, $f16
/* ADA248 800630A8 3C014080 */ li $at, 0x40800000 # 0.000000
/* ADA24C 800630AC 46044282 */ mul.s $f10, $f8, $f4
/* ADA250 800630B0 46129200 */ add.s $f8, $f18, $f18
/* ADA254 800630B4 46064102 */ mul.s $f4, $f8, $f6
/* ADA258 800630B8 44814000 */ mtc1 $at, $f8
/* ADA25C 800630BC 46045380 */ add.s $f14, $f10, $f4
/* ADA260 800630C0 C7AA0038 */ lwc1 $f10, 0x38($sp)
/* ADA264 800630C4 460E7002 */ mul.s $f0, $f14, $f14
/* ADA268 800630C8 00000000 */ nop
/* ADA26C 800630CC 46024182 */ mul.s $f6, $f8, $f2
/* ADA270 800630D0 00000000 */ nop
/* ADA274 800630D4 460A3302 */ mul.s $f12, $f6, $f10
/* ADA278 800630D8 460C003C */ c.lt.s $f0, $f12
/* ADA27C 800630DC 00000000 */ nop
/* ADA280 800630E0 45000003 */ bc1f .L800630F0
/* ADA284 800630E4 00000000 */ nop
/* ADA288 800630E8 10000137 */ b .L800635C8
/* ADA28C 800630EC 00001025 */ move $v0, $zero
.L800630F0:
/* ADA290 800630F0 460C0401 */ sub.s $f16, $f0, $f12
/* ADA294 800630F4 44809000 */ mtc1 $zero, $f18
/* ADA298 800630F8 24030001 */ li $v1, 1
/* ADA29C 800630FC 46021200 */ add.s $f8, $f2, $f2
/* ADA2A0 80063100 4610903C */ c.lt.s $f18, $f16
/* ADA2A4 80063104 46008004 */ sqrt.s $f0, $f16
/* ADA2A8 80063108 45000003 */ bc1f .L80063118
/* ADA2AC 8006310C 24020001 */ li $v0, 1
/* ADA2B0 80063110 10000002 */ b .L8006311C
/* ADA2B4 80063114 24030001 */ li $v1, 1
.L80063118:
/* ADA2B8 80063118 00001025 */ move $v0, $zero
.L8006311C:
/* ADA2BC 8006311C 460E0101 */ sub.s $f4, $f0, $f14
/* ADA2C0 80063120 24080001 */ li $t0, 1
/* ADA2C4 80063124 46082403 */ div.s $f16, $f4, $f8
/* ADA2C8 80063128 E7B00050 */ swc1 $f16, 0x50($sp)
/* ADA2CC 8006312C 14480006 */ bne $v0, $t0, .L80063148
/* ADA2D0 80063130 C7B00050 */ lwc1 $f16, 0x50($sp)
/* ADA2D4 80063134 46007187 */ neg.s $f6, $f14
/* ADA2D8 80063138 46021100 */ add.s $f4, $f2, $f2
/* ADA2DC 8006313C 46003281 */ sub.s $f10, $f6, $f0
/* ADA2E0 80063140 46045303 */ div.s $f12, $f10, $f4
/* ADA2E4 80063144 E7AC004C */ swc1 $f12, 0x4c($sp)
.L80063148:
/* ADA2E8 80063148 1000005F */ b .L800632C8
/* ADA2EC 8006314C C7AC004C */ lwc1 $f12, 0x4c($sp)
.L80063150:
/* ADA2F0 80063150 46108200 */ add.s $f8, $f16, $f16
/* ADA2F4 80063154 C7A6006C */ lwc1 $f6, 0x6c($sp)
/* ADA2F8 80063158 3C018014 */ lui $at, %hi(D_8013AD30)
/* ADA2FC 8006315C 46129100 */ add.s $f4, $f18, $f18
/* ADA300 80063160 46064282 */ mul.s $f10, $f8, $f6
/* ADA304 80063164 C7A80074 */ lwc1 $f8, 0x74($sp)
/* ADA308 80063168 24080001 */ li $t0, 1
/* ADA30C 8006316C 46082182 */ mul.s $f6, $f4, $f8
/* ADA310 80063170 C424AD30 */ lwc1 $f4, %lo(D_8013AD30)($at)
/* ADA314 80063174 46065380 */ add.s $f14, $f10, $f6
/* ADA318 80063178 46007005 */ abs.s $f0, $f14
/* ADA31C 8006317C 4604003C */ c.lt.s $f0, $f4
/* ADA320 80063180 00000000 */ nop
/* ADA324 80063184 45030009 */ bc1tl .L800631AC
/* ADA328 80063188 44805000 */ mtc1 $zero, $f10
/* ADA32C 8006318C 46006207 */ neg.s $f8, $f12
/* ADA330 80063190 44809000 */ mtc1 $zero, $f18
/* ADA334 80063194 24030001 */ li $v1, 1
/* ADA338 80063198 00001025 */ move $v0, $zero
/* ADA33C 8006319C 460E4403 */ div.s $f16, $f8, $f14
/* ADA340 800631A0 10000049 */ b .L800632C8
/* ADA344 800631A4 C7AC004C */ lwc1 $f12, 0x4c($sp)
/* ADA348 800631A8 44805000 */ mtc1 $zero, $f10
.L800631AC:
/* ADA34C 800631AC 00000000 */ nop
/* ADA350 800631B0 460A603E */ c.le.s $f12, $f10
/* ADA354 800631B4 00000000 */ nop
/* ADA358 800631B8 45000041 */ bc1f .L800632C0
/* ADA35C 800631BC 00000000 */ nop
/* ADA360 800631C0 10400009 */ beqz $v0, .L800631E8
/* ADA364 800631C4 00402025 */ move $a0, $v0
/* ADA368 800631C8 C7A60070 */ lwc1 $f6, 0x70($sp)
/* ADA36C 800631CC C7A4007C */ lwc1 $f4, 0x7c($sp)
/* ADA370 800631D0 00002025 */ move $a0, $zero
/* ADA374 800631D4 4604303C */ c.lt.s $f6, $f4
/* ADA378 800631D8 00000000 */ nop
/* ADA37C 800631DC 45020003 */ bc1fl .L800631EC
/* ADA380 800631E0 00802825 */ move $a1, $a0
/* ADA384 800631E4 24040001 */ li $a0, 1
.L800631E8:
/* ADA388 800631E8 00802825 */ move $a1, $a0
.L800631EC:
/* ADA38C 800631EC 10600009 */ beqz $v1, .L80063214
/* ADA390 800631F0 00602025 */ move $a0, $v1
/* ADA394 800631F4 C7A80064 */ lwc1 $f8, 0x64($sp)
/* ADA398 800631F8 C7AA007C */ lwc1 $f10, 0x7c($sp)
/* ADA39C 800631FC 00002025 */ move $a0, $zero
/* ADA3A0 80063200 460A403C */ c.lt.s $f8, $f10
/* ADA3A4 80063204 00000000 */ nop
/* ADA3A8 80063208 45000002 */ bc1f .L80063214
/* ADA3AC 8006320C 00000000 */ nop
/* ADA3B0 80063210 24040001 */ li $a0, 1
.L80063214:
/* ADA3B4 80063214 10A00014 */ beqz $a1, .L80063268
/* ADA3B8 80063218 00000000 */ nop
/* ADA3BC 8006321C 10800012 */ beqz $a0, .L80063268
/* ADA3C0 80063220 8FA30090 */ lw $v1, 0x90($sp)
/* ADA3C4 80063224 27AE006C */ addiu $t6, $sp, 0x6c
/* ADA3C8 80063228 8DD80000 */ lw $t8, ($t6)
/* ADA3CC 8006322C 8FA40094 */ lw $a0, 0x94($sp)
/* ADA3D0 80063230 27B90060 */ addiu $t9, $sp, 0x60
/* ADA3D4 80063234 AC780000 */ sw $t8, ($v1)
/* ADA3D8 80063238 8DCF0004 */ lw $t7, 4($t6)
/* ADA3DC 8006323C 24020002 */ li $v0, 2
/* ADA3E0 80063240 AC6F0004 */ sw $t7, 4($v1)
/* ADA3E4 80063244 8DD80008 */ lw $t8, 8($t6)
/* ADA3E8 80063248 AC780008 */ sw $t8, 8($v1)
/* ADA3EC 8006324C 8F2A0000 */ lw $t2, ($t9)
/* ADA3F0 80063250 AC8A0000 */ sw $t2, ($a0)
/* ADA3F4 80063254 8F290004 */ lw $t1, 4($t9)
/* ADA3F8 80063258 AC890004 */ sw $t1, 4($a0)
/* ADA3FC 8006325C 8F2A0008 */ lw $t2, 8($t9)
/* ADA400 80063260 100000D9 */ b .L800635C8
/* ADA404 80063264 AC8A0008 */ sw $t2, 8($a0)
.L80063268:
/* ADA408 80063268 10A0000A */ beqz $a1, .L80063294
/* ADA40C 8006326C 8FA30090 */ lw $v1, 0x90($sp)
/* ADA410 80063270 27AB006C */ addiu $t3, $sp, 0x6c
/* ADA414 80063274 8D6D0000 */ lw $t5, ($t3)
/* ADA418 80063278 24020001 */ li $v0, 1
/* ADA41C 8006327C AC6D0000 */ sw $t5, ($v1)
/* ADA420 80063280 8D6C0004 */ lw $t4, 4($t3)
/* ADA424 80063284 AC6C0004 */ sw $t4, 4($v1)
/* ADA428 80063288 8D6D0008 */ lw $t5, 8($t3)
/* ADA42C 8006328C 100000CE */ b .L800635C8
/* ADA430 80063290 AC6D0008 */ sw $t5, 8($v1)
.L80063294:
/* ADA434 80063294 1080000A */ beqz $a0, .L800632C0
/* ADA438 80063298 8FA30090 */ lw $v1, 0x90($sp)
/* ADA43C 8006329C 27AE0060 */ addiu $t6, $sp, 0x60
/* ADA440 800632A0 8DD80000 */ lw $t8, ($t6)
/* ADA444 800632A4 24020001 */ li $v0, 1
/* ADA448 800632A8 AC780000 */ sw $t8, ($v1)
/* ADA44C 800632AC 8DCF0004 */ lw $t7, 4($t6)
/* ADA450 800632B0 AC6F0004 */ sw $t7, 4($v1)
/* ADA454 800632B4 8DD80008 */ lw $t8, 8($t6)
/* ADA458 800632B8 100000C3 */ b .L800635C8
/* ADA45C 800632BC AC780008 */ sw $t8, 8($v1)
.L800632C0:
/* ADA460 800632C0 100000C1 */ b .L800635C8
/* ADA464 800632C4 00001025 */ move $v0, $zero
.L800632C8:
/* ADA468 800632C8 5440000E */ bnezl $v0, .L80063304
/* ADA46C 800632CC 4612803C */ c.lt.s $f16, $f18
/* ADA470 800632D0 4612803C */ c.lt.s $f16, $f18
/* ADA474 800632D4 3C013F80 */ li $at, 0x3F800000 # 0.000000
/* ADA478 800632D8 45010007 */ bc1t .L800632F8
/* ADA47C 800632DC 00000000 */ nop
/* ADA480 800632E0 44813000 */ mtc1 $at, $f6
/* ADA484 800632E4 00000000 */ nop
/* ADA488 800632E8 4610303C */ c.lt.s $f6, $f16
/* ADA48C 800632EC 00000000 */ nop
/* ADA490 800632F0 4500002E */ bc1f .L800633AC
/* ADA494 800632F4 00000000 */ nop
.L800632F8:
/* ADA498 800632F8 100000B3 */ b .L800635C8
/* ADA49C 800632FC 00001025 */ move $v0, $zero
/* ADA4A0 80063300 4612803C */ c.lt.s $f16, $f18
.L80063304:
/* ADA4A4 80063304 00002825 */ move $a1, $zero
/* ADA4A8 80063308 3C013F80 */ li $at, 0x3F800000 # 0.000000
/* ADA4AC 8006330C 45000002 */ bc1f .L80063318
/* ADA4B0 80063310 00000000 */ nop
/* ADA4B4 80063314 24050001 */ li $a1, 1
.L80063318:
/* ADA4B8 80063318 14A00008 */ bnez $a1, .L8006333C
/* ADA4BC 8006331C 00A02025 */ move $a0, $a1
/* ADA4C0 80063320 44812000 */ mtc1 $at, $f4
/* ADA4C4 80063324 00002025 */ move $a0, $zero
/* ADA4C8 80063328 4610203C */ c.lt.s $f4, $f16
/* ADA4CC 8006332C 00000000 */ nop
/* ADA4D0 80063330 45020003 */ bc1fl .L80063340
/* ADA4D4 80063334 4612603C */ c.lt.s $f12, $f18
/* ADA4D8 80063338 24040001 */ li $a0, 1
.L8006333C:
/* ADA4DC 8006333C 4612603C */ c.lt.s $f12, $f18
.L80063340:
/* ADA4E0 80063340 00802825 */ move $a1, $a0
/* ADA4E4 80063344 00003025 */ move $a2, $zero
/* ADA4E8 80063348 3C013F80 */ li $at, 0x3F800000 # 0.000000
/* ADA4EC 8006334C 45000002 */ bc1f .L80063358
/* ADA4F0 80063350 00000000 */ nop
/* ADA4F4 80063354 24060001 */ li $a2, 1
.L80063358:
/* ADA4F8 80063358 14C00008 */ bnez $a2, .L8006337C
/* ADA4FC 8006335C 00C02025 */ move $a0, $a2
/* ADA500 80063360 44814000 */ mtc1 $at, $f8
/* ADA504 80063364 00002025 */ move $a0, $zero
/* ADA508 80063368 460C403C */ c.lt.s $f8, $f12
/* ADA50C 8006336C 00000000 */ nop
/* ADA510 80063370 45000002 */ bc1f .L8006337C
/* ADA514 80063374 00000000 */ nop
/* ADA518 80063378 24040001 */ li $a0, 1
.L8006337C:
/* ADA51C 8006337C 10A00005 */ beqz $a1, .L80063394
/* ADA520 80063380 00000000 */ nop
/* ADA524 80063384 10800003 */ beqz $a0, .L80063394
/* ADA528 80063388 00000000 */ nop
/* ADA52C 8006338C 1000008E */ b .L800635C8
/* ADA530 80063390 00001025 */ move $v0, $zero
.L80063394:
/* ADA534 80063394 10A00002 */ beqz $a1, .L800633A0
/* ADA538 80063398 00000000 */ nop
/* ADA53C 8006339C 00001825 */ move $v1, $zero
.L800633A0:
/* ADA540 800633A0 10800002 */ beqz $a0, .L800633AC
/* ADA544 800633A4 00000000 */ nop
/* ADA548 800633A8 00001025 */ move $v0, $zero
.L800633AC:
/* ADA54C 800633AC 1468000F */ bne $v1, $t0, .L800633EC
/* ADA550 800633B0 C7AA0018 */ lwc1 $f10, 0x18($sp)
/* ADA554 800633B4 460A8182 */ mul.s $f6, $f16, $f10
/* ADA558 800633B8 C7A40070 */ lwc1 $f4, 0x70($sp)
/* ADA55C 800633BC 44804000 */ mtc1 $zero, $f8
/* ADA560 800633C0 C7AA007C */ lwc1 $f10, 0x7c($sp)
/* ADA564 800633C4 46043000 */ add.s $f0, $f6, $f4
/* ADA568 800633C8 4608003C */ c.lt.s $f0, $f8
/* ADA56C 800633CC 00000000 */ nop
/* ADA570 800633D0 45030006 */ bc1tl .L800633EC
/* ADA574 800633D4 00001825 */ move $v1, $zero
/* ADA578 800633D8 4600503C */ c.lt.s $f10, $f0
/* ADA57C 800633DC 00000000 */ nop
/* ADA580 800633E0 45000002 */ bc1f .L800633EC
/* ADA584 800633E4 00000000 */ nop
/* ADA588 800633E8 00001825 */ move $v1, $zero
.L800633EC:
/* ADA58C 800633EC 1448000F */ bne $v0, $t0, .L8006342C
/* ADA590 800633F0 C7A60018 */ lwc1 $f6, 0x18($sp)
/* ADA594 800633F4 46066102 */ mul.s $f4, $f12, $f6
/* ADA598 800633F8 C7A80070 */ lwc1 $f8, 0x70($sp)
/* ADA59C 800633FC 44805000 */ mtc1 $zero, $f10
/* ADA5A0 80063400 C7A6007C */ lwc1 $f6, 0x7c($sp)
/* ADA5A4 80063404 46082000 */ add.s $f0, $f4, $f8
/* ADA5A8 80063408 460A003C */ c.lt.s $f0, $f10
/* ADA5AC 8006340C 00000000 */ nop
/* ADA5B0 80063410 45030006 */ bc1tl .L8006342C
/* ADA5B4 80063414 00001025 */ move $v0, $zero
/* ADA5B8 80063418 4600303C */ c.lt.s $f6, $f0
/* ADA5BC 8006341C 00000000 */ nop
/* ADA5C0 80063420 45000002 */ bc1f .L8006342C
/* ADA5C4 80063424 00000000 */ nop
/* ADA5C8 80063428 00001025 */ move $v0, $zero
.L8006342C:
/* ADA5CC 8006342C 14600005 */ bnez $v1, .L80063444
/* ADA5D0 80063430 00000000 */ nop
/* ADA5D4 80063434 14400003 */ bnez $v0, .L80063444
/* ADA5D8 80063438 00000000 */ nop
/* ADA5DC 8006343C 10000062 */ b .L800635C8
/* ADA5E0 80063440 00001025 */ move $v0, $zero
.L80063444:
/* ADA5E4 80063444 1468002D */ bne $v1, $t0, .L800634FC
/* ADA5E8 80063448 00000000 */ nop
/* ADA5EC 8006344C 1448002B */ bne $v0, $t0, .L800634FC
/* ADA5F0 80063450 C7A00054 */ lwc1 $f0, 0x54($sp)
/* ADA5F4 80063454 46008102 */ mul.s $f4, $f16, $f0
/* ADA5F8 80063458 C7A8006C */ lwc1 $f8, 0x6c($sp)
/* ADA5FC 8006345C C4E60000 */ lwc1 $f6, ($a3)
/* ADA600 80063460 C7A20058 */ lwc1 $f2, 0x58($sp)
/* ADA604 80063464 8FA30090 */ lw $v1, 0x90($sp)
/* ADA608 80063468 8FA40094 */ lw $a0, 0x94($sp)
/* ADA60C 8006346C C7AE005C */ lwc1 $f14, 0x5c($sp)
/* ADA610 80063470 46082280 */ add.s $f10, $f4, $f8
/* ADA614 80063474 46028202 */ mul.s $f8, $f16, $f2
/* ADA618 80063478 24020002 */ li $v0, 2
/* ADA61C 8006347C 46065100 */ add.s $f4, $f10, $f6
/* ADA620 80063480 E4640000 */ swc1 $f4, ($v1)
/* ADA624 80063484 C7AA0070 */ lwc1 $f10, 0x70($sp)
/* ADA628 80063488 C4E40004 */ lwc1 $f4, 4($a3)
/* ADA62C 8006348C 460A4180 */ add.s $f6, $f8, $f10
/* ADA630 80063490 460E8282 */ mul.s $f10, $f16, $f14
/* ADA634 80063494 46043200 */ add.s $f8, $f6, $f4
/* ADA638 80063498 E4680004 */ swc1 $f8, 4($v1)
/* ADA63C 8006349C C7A60074 */ lwc1 $f6, 0x74($sp)
/* ADA640 800634A0 C4E80008 */ lwc1 $f8, 8($a3)
/* ADA644 800634A4 46065100 */ add.s $f4, $f10, $f6
/* ADA648 800634A8 46006182 */ mul.s $f6, $f12, $f0
/* ADA64C 800634AC 46082280 */ add.s $f10, $f4, $f8
/* ADA650 800634B0 E46A0008 */ swc1 $f10, 8($v1)
/* ADA654 800634B4 C7A4006C */ lwc1 $f4, 0x6c($sp)
/* ADA658 800634B8 C4EA0000 */ lwc1 $f10, ($a3)
/* ADA65C 800634BC 46043200 */ add.s $f8, $f6, $f4
/* ADA660 800634C0 46026102 */ mul.s $f4, $f12, $f2
/* ADA664 800634C4 460A4180 */ add.s $f6, $f8, $f10
/* ADA668 800634C8 E4860000 */ swc1 $f6, ($a0)
/* ADA66C 800634CC C7A80070 */ lwc1 $f8, 0x70($sp)
/* ADA670 800634D0 C4E60004 */ lwc1 $f6, 4($a3)
/* ADA674 800634D4 46082280 */ add.s $f10, $f4, $f8
/* ADA678 800634D8 460E6202 */ mul.s $f8, $f12, $f14
/* ADA67C 800634DC 46065100 */ add.s $f4, $f10, $f6
/* ADA680 800634E0 E4840004 */ swc1 $f4, 4($a0)
/* ADA684 800634E4 C7AA0074 */ lwc1 $f10, 0x74($sp)
/* ADA688 800634E8 C4E40008 */ lwc1 $f4, 8($a3)
/* ADA68C 800634EC 460A4180 */ add.s $f6, $f8, $f10
/* ADA690 800634F0 46043200 */ add.s $f8, $f6, $f4
/* ADA694 800634F4 10000034 */ b .L800635C8
/* ADA698 800634F8 E4880008 */ swc1 $f8, 8($a0)
.L800634FC:
/* ADA69C 800634FC 14680018 */ bne $v1, $t0, .L80063560
/* ADA6A0 80063500 C7AA0054 */ lwc1 $f10, 0x54($sp)
/* ADA6A4 80063504 460A8182 */ mul.s $f6, $f16, $f10
/* ADA6A8 80063508 C7A4006C */ lwc1 $f4, 0x6c($sp)
/* ADA6AC 8006350C C4EA0000 */ lwc1 $f10, ($a3)
/* ADA6B0 80063510 8FA30090 */ lw $v1, 0x90($sp)
/* ADA6B4 80063514 24020001 */ li $v0, 1
/* ADA6B8 80063518 46043200 */ add.s $f8, $f6, $f4
/* ADA6BC 8006351C 460A4180 */ add.s $f6, $f8, $f10
/* ADA6C0 80063520 E4660000 */ swc1 $f6, ($v1)
/* ADA6C4 80063524 C7A40058 */ lwc1 $f4, 0x58($sp)
/* ADA6C8 80063528 C7AA0070 */ lwc1 $f10, 0x70($sp)
/* ADA6CC 8006352C 46048202 */ mul.s $f8, $f16, $f4
/* ADA6D0 80063530 C4E40004 */ lwc1 $f4, 4($a3)
/* ADA6D4 80063534 460A4180 */ add.s $f6, $f8, $f10
/* ADA6D8 80063538 46043200 */ add.s $f8, $f6, $f4
/* ADA6DC 8006353C E4680004 */ swc1 $f8, 4($v1)
/* ADA6E0 80063540 C7AA005C */ lwc1 $f10, 0x5c($sp)
/* ADA6E4 80063544 C7A40074 */ lwc1 $f4, 0x74($sp)
/* ADA6E8 80063548 460A8182 */ mul.s $f6, $f16, $f10
/* ADA6EC 8006354C C4EA0008 */ lwc1 $f10, 8($a3)
/* ADA6F0 80063550 46043200 */ add.s $f8, $f6, $f4
/* ADA6F4 80063554 460A4180 */ add.s $f6, $f8, $f10
/* ADA6F8 80063558 1000001B */ b .L800635C8
/* ADA6FC 8006355C E4660008 */ swc1 $f6, 8($v1)
.L80063560:
/* ADA700 80063560 14480018 */ bne $v0, $t0, .L800635C4
/* ADA704 80063564 C7A40054 */ lwc1 $f4, 0x54($sp)
/* ADA708 80063568 46046202 */ mul.s $f8, $f12, $f4
/* ADA70C 8006356C C7AA006C */ lwc1 $f10, 0x6c($sp)
/* ADA710 80063570 C4E40000 */ lwc1 $f4, ($a3)
/* ADA714 80063574 8FA30090 */ lw $v1, 0x90($sp)
/* ADA718 80063578 24020001 */ li $v0, 1
/* ADA71C 8006357C 460A4180 */ add.s $f6, $f8, $f10
/* ADA720 80063580 46043200 */ add.s $f8, $f6, $f4
/* ADA724 80063584 E4680000 */ swc1 $f8, ($v1)
/* ADA728 80063588 C7AA0058 */ lwc1 $f10, 0x58($sp)
/* ADA72C 8006358C C7A40070 */ lwc1 $f4, 0x70($sp)
/* ADA730 80063590 460A6182 */ mul.s $f6, $f12, $f10
/* ADA734 80063594 C4EA0004 */ lwc1 $f10, 4($a3)
/* ADA738 80063598 46043200 */ add.s $f8, $f6, $f4
/* ADA73C 8006359C 460A4180 */ add.s $f6, $f8, $f10
/* ADA740 800635A0 E4660004 */ swc1 $f6, 4($v1)
/* ADA744 800635A4 C7A4005C */ lwc1 $f4, 0x5c($sp)
/* ADA748 800635A8 C7AA0074 */ lwc1 $f10, 0x74($sp)
/* ADA74C 800635AC 46046202 */ mul.s $f8, $f12, $f4
/* ADA750 800635B0 C4E40008 */ lwc1 $f4, 8($a3)
/* ADA754 800635B4 460A4180 */ add.s $f6, $f8, $f10
/* ADA758 800635B8 46043200 */ add.s $f8, $f6, $f4
/* ADA75C 800635BC 10000002 */ b .L800635C8
/* ADA760 800635C0 E4680008 */ swc1 $f8, 8($v1)
.L800635C4:
/* ADA764 800635C4 24020001 */ li $v0, 1
.L800635C8:
/* ADA768 800635C8 03E00008 */ jr $ra
/* ADA76C 800635CC 27BD0078 */ addiu $sp, $sp, 0x78

View file

@ -672,7 +672,8 @@ s32 func_80042048(CollisionContext*, CollisionPoly*, s32);
// ? func_80042108(?);
s32 func_8004213C(GlobalContext*, CollisionContext*, f32, f32, f32*, WaterBox**);
s32 func_8004239C(GlobalContext* globalCtx, CollisionContext* colCtx, Vec3f* arg2, f32 arg3, WaterBox** arg4);
s32 func_80042244(GlobalContext* globalCtx, CollisionContext* colCtx, f32 x, f32 z, f32* ySurface, WaterBox** outWaterBox);
s32 func_80042244(GlobalContext* globalCtx, CollisionContext* colCtx, f32 x, f32 z, f32* ySurface,
WaterBox** outWaterBox);
u32 func_80042538(CollisionContext* colCtx, WaterBox* waterBox);
u16 func_80042548(CollisionContext* colCtx, WaterBox* waterBox);
u32 func_8004259C(CollisionContext* colCtx, WaterBox* waterBox);
@ -720,11 +721,11 @@ s32 Camera_ChangeDoorCam(Camera* camera, Actor* doorActor, s16 camDataIdx, f32 a
s16 timer3);
s32 Camera_Copy(Camera* dstCamera, Camera* srcCamera);
Vec3f* Camera_GetSkyboxOffset(Vec3f* dst, Camera* camera);
void Camera_SetCameraData(Camera* camera, s16 setDataFlags, void* data0,
void* data1, s16 data2, s16 data3, UNK_TYPE arg6);
void Camera_SetCameraData(Camera* camera, s16 setDataFlags, void* data0, void* data1, s16 data2, s16 data3,
UNK_TYPE arg6);
DamageTable* DamageTable_Get(s32 index);
// ? func_8005B280(?);
void func_8005B2AC(GraphicsContext* gfx, Vec3f* vA, Vec3f* vB, Vec3f* vC, u8 r, u8 g, u8 b);
void func_8005B280(GraphicsContext* gfxCtx, Vec3f* vA, Vec3f* vB, Vec3f* vC);
void func_8005B2AC(GraphicsContext* gfxCtx, Vec3f* vA, Vec3f* vB, Vec3f* vC, u8 r, u8 g, u8 b);
s32 Collider_InitBase(GlobalContext* globalCtx, Collider* collider);
s32 Collider_DestroyBase(GlobalContext* globalCtx, Collider* collider);
s32 Collider_SetBase_Actor(GlobalContext* globalCtx, Collider* collider, ColliderInit_Actor* src);
@ -859,7 +860,8 @@ void func_80062D60(GlobalContext* globalCtx, Vec3f* v);
void func_80062DAC(GlobalContext* globalCtx, Vec3f* v, Vec3f* arg2);
void func_80062DF4(GlobalContext* globalCtx, Vec3f* v);
void func_80062E14(GlobalContext* globalCtx, Vec3f* arg1, Vec3f* arg2);
s32 func_80062ECC(f32, f32, f32, Vec3f*, Vec3f*, Vec3f*, Vec3f*, Vec3f*);
s32 func_80062ECC(f32 radius, f32 height, f32 offset, Vec3f* actorPos, Vec3f* itemPos, Vec3f* itemProjPos, Vec3f* out1,
Vec3f* out2);
void SaveContext_Init(void);
// ? func_800636C0(?);
void func_8006375C(s32 arg0, s32 arg1, const char* text);
@ -1302,9 +1304,9 @@ void func_800A43B8(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimation
LinkAnimationHeader* linkAnimSeg2, f32 frame, f32 transitionRate, Vec3s* arg7);
s32 func_800A4530(SkelAnime* skelAnime, f32 arg1);
s32 SkelAnime_Init(GlobalContext* globalCtx, SkelAnime* skelAnime, SkeletonHeader* skeletonHeaderSeg,
AnimationHeader* animationseg, Vec3s* limbDrawTable, Vec3s* arg5, s32 limbCount);
AnimationHeader* animationseg, Vec3s* limbDrawTable, Vec3s* arg5, s32 limbCount);
s32 SkelAnime_InitFlex(GlobalContext* globalCtx, SkelAnime* skelAnime, FlexSkeletonHeader* skeletonHeaderSeg,
AnimationHeader* animationseg, Vec3s* limbDrawTable, Vec3s* arg5, s32 limbCount);
AnimationHeader* animationseg, Vec3s* limbDrawTable, Vec3s* arg5, s32 limbCount);
void SkelAnime_InitSkin(GlobalContext* globalCtx, SkelAnime* skelAnime, SkeletonHeader* skeletonHeaderSeg,
AnimationHeader* animationseg);
s32 SkelAnime_FrameUpdateMatrix(SkelAnime* skelAnime);

View file

@ -2,12 +2,65 @@
#include "vt.h"
// draw red poly
void func_8005B280(GraphicsContext* gfx, Vec3f* vA, Vec3f* vB, Vec3f* vC) {
func_8005B2AC(gfx, vA, vB, vC, 255, 0, 0);
void func_8005B280(GraphicsContext* gfxCtx, Vec3f* vA, Vec3f* vB, Vec3f* vC) {
func_8005B2AC(gfxCtx, vA, vB, vC, 255, 0, 0);
}
// draw poly
#pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8005B2AC.s")
void func_8005B2AC(GraphicsContext* gfxCtx, Vec3f* vA, Vec3f* vB, Vec3f* vC, u8 r, u8 g, u8 b) {
Vtx* vtxTbl;
Vtx* vtx;
f32 nx;
f32 ny;
f32 nz;
f32 originDist;
OPEN_DISPS(gfxCtx, "../z_collision_check.c", 713);
gSPMatrix(POLY_OPA_DISP++, &gMtxClear, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gDPSetPrimColor(POLY_OPA_DISP++, 0x00, 0xFF, r, g, b, 50);
gDPPipeSync(POLY_OPA_DISP++);
gDPSetRenderMode(POLY_OPA_DISP++, G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2);
gSPTexture(POLY_OPA_DISP++, 0, 0, 0, G_TX_RENDERTILE, G_OFF);
gDPPipeSync(POLY_OPA_DISP++);
gDPSetCombineLERP(POLY_OPA_DISP++, SHADE, 0, PRIMITIVE, 0, SHADE, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED, 0, 0, 0,
COMBINED);
gSPClearGeometryMode(POLY_OPA_DISP++, G_CULL_BOTH);
gSPSetGeometryMode(POLY_OPA_DISP++, G_LIGHTING);
gDPPipeSync(POLY_OPA_DISP++);
vtxTbl = Graph_Alloc(gfxCtx, 3 * sizeof(Vtx));
if (vtxTbl == NULL) {
__assert("vtx_tbl != NULL", "../z_collision_check.c", 726);
}
vtxTbl[0].n.ob[0] = vA->x;
vtxTbl[0].n.ob[1] = vA->y;
vtxTbl[0].n.ob[2] = vA->z;
vtxTbl[1].n.ob[0] = vB->x;
vtxTbl[1].n.ob[1] = vB->y;
vtxTbl[1].n.ob[2] = vB->z;
vtxTbl[2].n.ob[0] = vC->x;
vtxTbl[2].n.ob[1] = vC->y;
vtxTbl[2].n.ob[2] = vC->z;
Math3D_DefPlane(vA, vB, vC, &nx, &ny, &nz, &originDist);
for (vtx = vtxTbl; vtx < vtxTbl + 3; vtx++) {
vtx->n.flag = 0;
vtx->n.tc[0] = 0;
vtx->n.tc[1] = 0;
vtx->n.n[0] = (u8)(s32)nx & 0xFF;
vtx->n.n[1] = (u8)(s32)ny & 0xFF;
vtx->n.n[2] = (u8)(s32)nz & 0xFF;
vtx->n.a = 255;
}
gSPVertex(POLY_OPA_DISP++, vtxTbl, 3, 0);
gSP1Triangle(POLY_OPA_DISP++, 0, 1, 2, 0);
CLOSE_DISPS(gfxCtx, "../z_collision_check.c", 757);
}
s32 Collider_InitBase(GlobalContext* globalCtx, Collider* collider) {
static Collider init = { NULL, NULL, NULL, NULL, 0, 0, 0, 0, COLTYPE_UNK3, COLSHAPE_INVALID };
@ -1979,6 +2032,7 @@ void CollisionCheck_AC_CylVsQuad(GlobalContext* globalCtx, CollisionCheckContext
}
}
static s8 sBssDummy0;
static s8 sBssDummy1;
static s8 sBssDummy2;
@ -3106,228 +3160,151 @@ void func_80062E14(GlobalContext* globalCtx, Vec3f* v, Vec3f* arg2) {
Audio_PlaySoundGeneral(NA_SE_IT_REFLECTION_WOOD, arg2, 4, &D_801333E0, &D_801333E0, &D_801333E8);
}
#ifdef NON_EQUIVALENT
// Incomplete, possibly not using the same logic
s32 func_80062ECC(f32 actor_ac_98_10, f32 actor_ac_98_12, f32 arg2, Vec3f* ac_actor_pos, Vec3f* at_actor_pos,
Vec3f* arg5, Vec3f* arg6, Vec3f* arg7) {
// arg5 = SP + 0xA8, unk input
// arg6 = SP + 0x90, unk output
// arg7 = SP + 0x84, unk output2
// sp -0x78
#define SQXZ(vec) (SQ(vec.x) + SQ(vec.z))
#define DOTXZ(vec1, vec2) ((vec1.x) * (vec2.x) + (vec1.z) * (vec2.z))
Vec3f delta_a3_a4_sp6C;
Vec3f delta_a3_a5_sp60;
Vec3f delta_a4_a5_sp54;
/*
* Determines if the line segment connecting itemPos and itemProjPos intersects the side of a cylinder with the given
* radius, height, and offset at actorPos. Returns 3 if either endpoint is inside the cylinder, otherwise returns the
* number of points of intersection with the side of the cylinder. The locations of those points are put in out1 and
* out2, with out1 being closer to itemPos. Line segments that pass through both bases of the cylinder are not detected.
*/
s32 func_80062ECC(f32 radius, f32 height, f32 offset, Vec3f* actorPos, Vec3f* itemPos, Vec3f* itemProjPos, Vec3f* out1,
Vec3f* out2) {
Vec3f actorToItem;
Vec3f actorToItemProj;
Vec3f itemStep;
f32 sp50;
f32 sp4C;
f32 temp_f0;
f32 temp_f0_3;
f32 temp_f12;
f32 temp_f14;
u32 phi_v0;
u32 phi_v1;
u32 phi_a1;
u32 phi_a2;
f32 sp38;
f32 temp_f16_2;
f32 temp_f14;
f32 temp_f2;
s32 phi_v0;
s32 phi_v1;
s32 phi_a0;
s32 phi_a1;
s32 phi_a2;
f32 zero = 0.0f;
f32 temp_f0;
f32 pad;
delta_a3_a4_sp6C.x = at_actor_pos->x - ac_actor_pos->x;
delta_a3_a4_sp6C.y = at_actor_pos->y - ac_actor_pos->y - arg2; // temp_f14
delta_a3_a4_sp6C.z = at_actor_pos->z - ac_actor_pos->z;
actorToItem.x = itemPos->x - actorPos->x;
actorToItem.y = itemPos->y - actorPos->y - offset;
actorToItem.z = itemPos->z - actorPos->z;
delta_a3_a5_sp60.x = arg5->x - ac_actor_pos->x;
delta_a3_a5_sp60.y = arg5->y - ac_actor_pos->y - arg2; // temp_f6
delta_a3_a5_sp60.z = arg5->z - ac_actor_pos->z;
actorToItemProj.x = itemProjPos->x - actorPos->x;
actorToItemProj.y = itemProjPos->y - actorPos->y - offset;
actorToItemProj.z = itemProjPos->z - actorPos->z;
delta_a4_a5_sp54.x = delta_a3_a5_sp60.x - delta_a3_a4_sp6C.x; // temp_f16;
delta_a4_a5_sp54.y = delta_a3_a5_sp60.y - delta_a3_a4_sp6C.y; // sp18; // temp_f8;
delta_a4_a5_sp54.z = delta_a3_a5_sp60.z - delta_a3_a4_sp6C.z; // temp_f18;
itemStep.x = actorToItemProj.x - actorToItem.x;
itemStep.y = actorToItemProj.y - actorToItem.y;
itemStep.z = actorToItemProj.z - actorToItem.z;
phi_v0 = 0;
// ada12c: bc1f 0xada138 ~>
if (0.0f < delta_a3_a4_sp6C.y) {
phi_v0 = 1;
}
// ada138: beqzl v0,0xada188 ~>
if (phi_v0 && delta_a3_a4_sp6C.y < actor_ac_98_12) {
if (sqrtf(SQ(delta_a3_a4_sp6C.x) + SQ(delta_a3_a4_sp6C.z)) < actor_ac_98_10) {
return 3;
}
if ((actorToItem.y > 0.0f) && (actorToItem.y < height) && (sqrtf(SQ(actorToItem.x) + SQ(actorToItem.z)) < radius)) {
return 3;
}
phi_v1 = 0;
if (0.0f < delta_a3_a5_sp60.y) { // ada19c: bc1f 0xada1a8 ~>
phi_v1 = 1;
if ((actorToItemProj.y > 0.0f) && (actorToItemProj.y < height) &&
(sqrtf(SQ(actorToItemProj.x) + SQ(actorToItemProj.z)) < radius)) {
return 3;
}
// ada1a8: beqzl v1,0xada1f4 ~>
if (phi_v1 && delta_a3_a5_sp60.y < actor_ac_98_12) {
if (sqrtf(SQ(delta_a3_a5_sp60.x) + SQ(delta_a3_a5_sp60.z)) < actor_ac_98_10) {
return 3;
}
}
// ada1f4
sp38 = SQ(delta_a3_a4_sp6C.x) + SQ(delta_a3_a4_sp6C.z) - SQ(actor_ac_98_10); // temp_f12;
temp_f2 = SQ(delta_a4_a5_sp54.x) + SQ(delta_a4_a5_sp54.z);
if (!(fabsf(temp_f2) < 0.008f)) { // ada23c: bc1t 0xada2f0 ~>
temp_f14 = (delta_a4_a5_sp54.x + delta_a4_a5_sp54.x) * delta_a3_a4_sp6C.x +
(delta_a4_a5_sp54.z + delta_a4_a5_sp54.z) * delta_a3_a4_sp6C.z;
temp_f0 = SQ(temp_f14);
temp_f12 = (4.0f * temp_f2) * sp38;
if (temp_f0 < temp_f12) { // ada280: bc1f 0xada290 ~>
sp38 = SQXZ(actorToItem) - SQ(radius);
temp_f2 = SQXZ(itemStep);
if (!IS_ZERO(temp_f2)) {
temp_f14 = DOTXZ(2.0f * itemStep, actorToItem);
if (SQ(temp_f14) < (4.0f * temp_f2) * sp38) {
return 0;
}
// ada290
temp_f16_2 = temp_f0 - temp_f12;
temp_f0 = sqrtf(temp_f16_2);
if (0.0f < temp_f16_2) {
phi_v0 = 1;
phi_v1 = 1;
if (SQ(temp_f14) - ((4.0f * temp_f2) * sp38) > zero) {
phi_v1 = phi_v0 = 1;
} else {
phi_v0 = 0;
phi_v1 = 1;
phi_v0 = 0;
}
temp_f0 = sqrtf(SQ(temp_f14) - (4.0f * temp_f2) * sp38);
if (phi_v1 == 1) {
sp50 = (temp_f0 - temp_f14) / (2.0f * temp_f2);
}
if (phi_v0 == 1) {
sp4C = (-temp_f14 - temp_f0) / (2.0f * temp_f2);
}
sp50 = (temp_f0 - temp_f14) / (temp_f2 + temp_f2); // temp_f16_3;
if (phi_v0 == 1) {
sp4C = (-temp_f14 - temp_f0) / (temp_f2 + temp_f2);
}
} else { // 0xada2f0
temp_f14 = ((delta_a4_a5_sp54.x + delta_a4_a5_sp54.x) * delta_a3_a4_sp6C.x) +
((delta_a4_a5_sp54.z + delta_a4_a5_sp54.z) * delta_a3_a4_sp6C.z);
if (!(fabsf(temp_f14) < 0.008f)) { // ada324
phi_v0 = 0;
sp50 = -sp38 / temp_f14;
phi_v1 = 1;
} // ada340: b 0xada468
else {
if (sp38 <= 0.0f) { // ada358: bc1f 0xada460
phi_a0 = phi_v0;
if (phi_v0 != 0) // ada360: beqz v0,0xada388 ~>
{
phi_a0 = 0;
// ada37C
if (delta_a3_a4_sp6C.y < actor_ac_98_12) {
phi_a0 = 1;
}
}
phi_a1 = phi_a0;
// ada38C
phi_a0 = phi_v1;
if (phi_v1 != 0) {
phi_a0 = 0;
if (delta_a3_a5_sp60.y < actor_ac_98_12) {
phi_a0 = 1;
}
}
if (phi_a1) { // ada3b4
if (phi_a0) { // ada3bc
*arg6 = delta_a3_a4_sp6C;
*arg7 = delta_a3_a5_sp60;
return 2;
}
}
// ada408
if (phi_a1) {
*arg6 = delta_a3_a4_sp6C;
return 1;
}
// ada434
if (phi_a0) {
*arg6 = delta_a3_a5_sp60;
return 1;
}
} else if (!IS_ZERO(DOTXZ(2.0f * itemStep, actorToItem))) {
phi_v1 = 1;
phi_v0 = 0;
sp50 = -sp38 / DOTXZ(2.0f * itemStep, actorToItem);
} else {
if (sp38 <= 0.0f) {
phi_a1 = (0.0f < actorToItem.y) && (actorToItem.y < height);
phi_a2 = (0.0f < actorToItemProj.y) && (actorToItemProj.y < height);
if (phi_a1 && phi_a2) {
*out1 = actorToItem;
*out2 = actorToItemProj;
return 2;
}
if (phi_a1) {
*out1 = actorToItem;
return 1;
}
if (phi_a2) {
*out1 = actorToItemProj;
return 1;
}
// ada460
return 0;
}
return 0;
}
// ada468 800632C8
if (phi_v0 == 0) { // ada468: bnezl v0,0xada4a4 ~>
if (phi_v0 == 0) {
if (sp50 < 0.0f || 1.0f < sp50) {
return 0;
}
} else { // ada4a4
phi_a1 = 0;
if (sp50 < 0.0f) { // ada4ac
phi_a1 = 1;
} else {
phi_a1 = (sp50 < 0.0f || 1.0f < sp50);
phi_a2 = (sp4C < 0.0f || 1.0f < sp4C);
if (phi_a1 && phi_a2) {
return 0;
}
// ada4b8
phi_a0 = phi_a1;
if (phi_a1 == 0) {
phi_a1 = 0;
if (1.0f < sp50) {
phi_a1 = 1;
}
}
// ada4dc
phi_a2 = 0;
if (sp4C < 0.0f) {
phi_a2 = 1;
}
if (phi_a2 == 0) {
phi_a2 = 0;
if (1.0f < sp4C) {
phi_a2 = 1;
}
}
if (phi_a1 != 0) {
if (phi_a2 != 0) {
return 0;
}
}
if (phi_a1 != 0) {
if (phi_a1) {
phi_v1 = 0;
}
if (phi_a2 != 0) {
if (phi_a2) {
phi_v0 = 0;
}
}
if (phi_v1 == 1) {
temp_f0_3 = sp50 * delta_a4_a5_sp54.y + delta_a3_a4_sp6C.y;
if (temp_f0_3 < 0.0f || actor_ac_98_12 < temp_f0_3) {
phi_v1 = 0;
}
if ((phi_v1 == 1) && ((sp50 * itemStep.y + actorToItem.y < 0.0f) || (height < sp50 * itemStep.y + actorToItem.y))) {
phi_v1 = 0;
}
if (phi_v0 == 1) {
temp_f0_3 = sp4C * delta_a4_a5_sp54.y + delta_a3_a4_sp6C.y;
if (temp_f0_3 < 0.0f || actor_ac_98_12 < temp_f0_3) {
phi_v0 = 0;
}
if ((phi_v0 == 1) && ((sp4C * itemStep.y + actorToItem.y < 0.0f) || (height < sp4C * itemStep.y + actorToItem.y))) {
phi_v0 = 0;
}
if (phi_v1 == 0 && phi_v0 == 0) {
return 0;
}
if (phi_v1 == 1) {
if (phi_v0 == 1) {
arg6->x = sp50 * delta_a4_a5_sp54.x + delta_a3_a4_sp6C.x + ac_actor_pos->x;
arg6->y = sp50 * delta_a4_a5_sp54.y + delta_a3_a4_sp6C.y + ac_actor_pos->y;
arg6->z = sp50 * delta_a4_a5_sp54.z + delta_a3_a4_sp6C.z + ac_actor_pos->z;
arg7->x = sp4C * delta_a4_a5_sp54.x + delta_a3_a4_sp6C.x + ac_actor_pos->x;
arg7->y = sp4C * delta_a4_a5_sp54.y + delta_a3_a4_sp6C.y + ac_actor_pos->y;
arg7->z = sp4C * delta_a4_a5_sp54.z + delta_a3_a4_sp6C.z + ac_actor_pos->z;
return 2;
}
}
if (phi_v1 == 1) {
arg6->x = sp50 * delta_a4_a5_sp54.x + delta_a3_a4_sp6C.x + ac_actor_pos->x;
arg6->y = sp50 * delta_a4_a5_sp54.y + delta_a3_a4_sp6C.y + ac_actor_pos->y;
arg6->z = sp50 * delta_a4_a5_sp54.z + delta_a3_a4_sp6C.z + ac_actor_pos->z;
} else if ((phi_v1 == 1) && (phi_v0 == 1)) {
out1->x = sp50 * itemStep.x + actorToItem.x + actorPos->x;
out1->y = sp50 * itemStep.y + actorToItem.y + actorPos->y;
out1->z = sp50 * itemStep.z + actorToItem.z + actorPos->z;
out2->x = sp4C * itemStep.x + actorToItem.x + actorPos->x;
out2->y = sp4C * itemStep.y + actorToItem.y + actorPos->y;
out2->z = sp4C * itemStep.z + actorToItem.z + actorPos->z;
return 2;
} else if (phi_v1 == 1) {
out1->x = sp50 * itemStep.x + actorToItem.x + actorPos->x;
out1->y = sp50 * itemStep.y + actorToItem.y + actorPos->y;
out1->z = sp50 * itemStep.z + actorToItem.z + actorPos->z;
return 1;
}
if (phi_v0 == 1) { // ada700
arg6->x = sp4C * delta_a4_a5_sp54.x + delta_a3_a4_sp6C.x + ac_actor_pos->x;
arg6->y = sp4C * delta_a4_a5_sp54.y + delta_a3_a4_sp6C.y + ac_actor_pos->y;
arg6->z = sp4C * delta_a4_a5_sp54.z + delta_a3_a4_sp6C.z + ac_actor_pos->z;
} else if (phi_v0 == 1) {
out1->x = sp4C * itemStep.x + actorToItem.x + actorPos->x;
out1->y = sp4C * itemStep.y + actorToItem.y + actorPos->y;
out1->z = sp4C * itemStep.z + actorToItem.z + actorPos->z;
return 1;
}
return 1;
}
#else
#pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_80062ECC.s")
#endif
#undef SQXZ
#undef DOTXZ
s32 func_800635D0(s32 arg0) {
s32 result;