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

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

260 lines
12 KiB
ArmAsm

glabel func_8001168C
/* 01228C 8001168C 27BDFF28 */ addiu $sp, $sp, -0xd8
/* 012290 80011690 44802000 */ mtc1 $zero, $f4
/* 012294 80011694 AFBF0064 */ sw $ra, 0x64($sp)
/* 012298 80011698 AFB60060 */ sw $s6, 0x60($sp)
/* 01229C 8001169C AFB5005C */ sw $s5, 0x5c($sp)
/* 0122A0 800116A0 AFB40058 */ sw $s4, 0x58($sp)
/* 0122A4 800116A4 AFB30054 */ sw $s3, 0x54($sp)
/* 0122A8 800116A8 AFB20050 */ sw $s2, 0x50($sp)
/* 0122AC 800116AC AFB1004C */ sw $s1, 0x4c($sp)
/* 0122B0 800116B0 AFB00048 */ sw $s0, 0x48($sp)
/* 0122B4 800116B4 F7BE0040 */ sdc1 $f30, 0x40($sp)
/* 0122B8 800116B8 F7BC0038 */ sdc1 $f28, 0x38($sp)
/* 0122BC 800116BC F7BA0030 */ sdc1 $f26, 0x30($sp)
/* 0122C0 800116C0 F7B80028 */ sdc1 $f24, 0x28($sp)
/* 0122C4 800116C4 F7B60020 */ sdc1 $f22, 0x20($sp)
/* 0122C8 800116C8 F7B40018 */ sdc1 $f20, 0x18($sp)
/* 0122CC 800116CC E7A40084 */ swc1 $f4, 0x84($sp)
/* 0122D0 800116D0 84AE0000 */ lh $t6, ($a1)
/* 0122D4 800116D4 3C13800E */ lui $s3, %hi(gIsMirrorMode)
/* 0122D8 800116D8 00808025 */ move $s0, $a0
/* 0122DC 800116DC 448E3000 */ mtc1 $t6, $f6
/* 0122E0 800116E0 00C0A025 */ move $s4, $a2
/* 0122E4 800116E4 00A0B025 */ move $s6, $a1
/* 0122E8 800116E8 46803220 */ cvt.s.w $f8, $f6
/* 0122EC 800116EC 00008825 */ move $s1, $zero
/* 0122F0 800116F0 2673C604 */ addiu $s3, %lo(gIsMirrorMode) # addiu $s3, $s3, -0x39fc
/* 0122F4 800116F4 00009025 */ move $s2, $zero
/* 0122F8 800116F8 3C013FF0 */ li $at, 0x3FF00000 # 1.875000
/* 0122FC 800116FC E7A800A8 */ swc1 $f8, 0xa8($sp)
/* 012300 80011700 84AF0004 */ lh $t7, 4($a1)
/* 012304 80011704 448F5000 */ mtc1 $t7, $f10
/* 012308 80011708 00000000 */ nop
/* 01230C 8001170C 46805120 */ cvt.s.w $f4, $f10
/* 012310 80011710 18C000C1 */ blez $a2, .L80011A18
/* 012314 80011714 E7A400A0 */ swc1 $f4, 0xa0($sp)
/* 012318 80011718 44803000 */ mtc1 $zero, $f6
/* 01231C 8001171C 4481F800 */ mtc1 $at, $f31
/* 012320 80011720 3C013FE0 */ li $at, 0x3FE00000 # 1.750000
/* 012324 80011724 46003221 */ cvt.d.s $f8, $f6
/* 012328 80011728 4481E800 */ mtc1 $at, $f29
/* 01232C 8001172C 4480F000 */ mtc1 $zero, $f30
/* 012330 80011730 4480E000 */ mtc1 $zero, $f28
/* 012334 80011734 F7A80068 */ sdc1 $f8, 0x68($sp)
.L80011738:
/* 012338 80011738 0254001A */ div $zero, $s2, $s4
/* 01233C 8001173C 0000C010 */ mfhi $t8
/* 012340 80011740 26550001 */ addiu $s5, $s2, 1
/* 012344 80011744 264E0002 */ addiu $t6, $s2, 2
/* 012348 80011748 02B4001A */ div $zero, $s5, $s4
/* 01234C 8001174C 00005010 */ mfhi $t2
/* 012350 80011750 0018C8C0 */ sll $t9, $t8, 3
/* 012354 80011754 03361021 */ addu $v0, $t9, $s6
/* 012358 80011758 01D4001A */ div $zero, $t6, $s4
/* 01235C 8001175C 84480000 */ lh $t0, ($v0)
/* 012360 80011760 000A58C0 */ sll $t3, $t2, 3
/* 012364 80011764 00007810 */ mfhi $t7
/* 012368 80011768 01761821 */ addu $v1, $t3, $s6
/* 01236C 8001176C 000FC0C0 */ sll $t8, $t7, 3
/* 012370 80011770 84490004 */ lh $t1, 4($v0)
/* 012374 80011774 846C0000 */ lh $t4, ($v1)
/* 012378 80011778 44885000 */ mtc1 $t0, $f10
/* 01237C 8001177C 03162021 */ addu $a0, $t8, $s6
/* 012380 80011780 84990000 */ lh $t9, ($a0)
/* 012384 80011784 468053A0 */ cvt.s.w $f14, $f10
/* 012388 80011788 846D0004 */ lh $t5, 4($v1)
/* 01238C 8001178C 44892000 */ mtc1 $t1, $f4
/* 012390 80011790 448C3000 */ mtc1 $t4, $f6
/* 012394 80011794 44995000 */ mtc1 $t9, $f10
/* 012398 80011798 46802420 */ cvt.s.w $f16, $f4
/* 01239C 8001179C 448D4000 */ mtc1 $t5, $f8
/* 0123A0 800117A0 16800002 */ bnez $s4, .L800117AC
/* 0123A4 800117A4 00000000 */ nop
/* 0123A8 800117A8 0007000D */ break 7
.L800117AC:
/* 0123AC 800117AC 2401FFFF */ li $at, -1
/* 0123B0 800117B0 16810004 */ bne $s4, $at, .L800117C4
/* 0123B4 800117B4 3C018000 */ lui $at, 0x8000
/* 0123B8 800117B8 16410002 */ bne $s2, $at, .L800117C4
/* 0123BC 800117BC 00000000 */ nop
/* 0123C0 800117C0 0006000D */ break 6
.L800117C4:
/* 0123C4 800117C4 468034A0 */ cvt.s.w $f18, $f6
/* 0123C8 800117C8 16800002 */ bnez $s4, .L800117D4
/* 0123CC 800117CC 00000000 */ nop
/* 0123D0 800117D0 0007000D */ break 7
.L800117D4:
/* 0123D4 800117D4 2401FFFF */ li $at, -1
/* 0123D8 800117D8 16810004 */ bne $s4, $at, .L800117EC
/* 0123DC 800117DC 3C018000 */ lui $at, 0x8000
/* 0123E0 800117E0 16A10002 */ bne $s5, $at, .L800117EC
/* 0123E4 800117E4 00000000 */ nop
/* 0123E8 800117E8 0006000D */ break 6
.L800117EC:
/* 0123EC 800117EC 46805120 */ cvt.s.w $f4, $f10
/* 0123F0 800117F0 46804520 */ cvt.s.w $f20, $f8
/* 0123F4 800117F4 E7A400B8 */ swc1 $f4, 0xb8($sp)
/* 0123F8 800117F8 84880004 */ lh $t0, 4($a0)
/* 0123FC 800117FC 16800002 */ bnez $s4, .L80011808
/* 012400 80011800 00000000 */ nop
/* 012404 80011804 0007000D */ break 7
.L80011808:
/* 012408 80011808 2401FFFF */ li $at, -1
/* 01240C 8001180C 16810004 */ bne $s4, $at, .L80011820
/* 012410 80011810 3C018000 */ lui $at, 0x8000
/* 012414 80011814 15C10002 */ bne $t6, $at, .L80011820
/* 012418 80011818 00000000 */ nop
/* 01241C 8001181C 0006000D */ break 6
.L80011820:
/* 012420 80011820 460E9001 */ sub.s $f0, $f18, $f14
/* 012424 80011824 44883000 */ mtc1 $t0, $f6
/* 012428 80011828 E7B400BC */ swc1 $f20, 0xbc($sp)
/* 01242C 8001182C 4610A081 */ sub.s $f2, $f20, $f16
/* 012430 80011830 46000282 */ mul.s $f10, $f0, $f0
/* 012434 80011834 E7B200C0 */ swc1 $f18, 0xc0($sp)
/* 012438 80011838 E7B000C4 */ swc1 $f16, 0xc4($sp)
/* 01243C 8001183C 46021102 */ mul.s $f4, $f2, $f2
/* 012440 80011840 E7AE00C8 */ swc1 $f14, 0xc8($sp)
/* 012444 80011844 46803220 */ cvt.s.w $f8, $f6
/* 012448 80011848 44803000 */ mtc1 $zero, $f6
/* 01244C 8001184C 00000000 */ nop
/* 012450 80011850 E7A60094 */ swc1 $f6, 0x94($sp)
/* 012454 80011854 46045300 */ add.s $f12, $f10, $f4
/* 012458 80011858 0C033850 */ jal sqrtf
/* 01245C 8001185C E7A800B4 */ swc1 $f8, 0xb4($sp)
/* 012460 80011860 C7A800B8 */ lwc1 $f8, 0xb8($sp)
/* 012464 80011864 C7AA00C0 */ lwc1 $f10, 0xc0($sp)
/* 012468 80011868 C7A400B4 */ lwc1 $f4, 0xb4($sp)
/* 01246C 8001186C C7A600BC */ lwc1 $f6, 0xbc($sp)
/* 012470 80011870 460A4081 */ sub.s $f2, $f8, $f10
/* 012474 80011874 46000506 */ mov.s $f20, $f0
/* 012478 80011878 46062381 */ sub.s $f14, $f4, $f6
/* 01247C 8001187C 46021202 */ mul.s $f8, $f2, $f2
/* 012480 80011880 00000000 */ nop
/* 012484 80011884 460E7282 */ mul.s $f10, $f14, $f14
/* 012488 80011888 0C033850 */ jal sqrtf
/* 01248C 8001188C 460A4300 */ add.s $f12, $f8, $f10
/* 012490 80011890 46140180 */ add.s $f6, $f0, $f20
/* 012494 80011894 3C01800F */ lui $at, %hi(D_800ED078)
/* 012498 80011898 D424D078 */ ldc1 $f4, %lo(D_800ED078)($at)
/* 01249C 8001189C 46003221 */ cvt.d.s $f8, $f6
/* 0124A0 800118A0 46282283 */ div.d $f10, $f4, $f8
/* 0124A4 800118A4 D7A40068 */ ldc1 $f4, 0x68($sp)
/* 0124A8 800118A8 463E203E */ c.le.d $f4, $f30
/* 0124AC 800118AC 462051A0 */ cvt.s.d $f6, $f10
/* 0124B0 800118B0 45000057 */ bc1f .L80011A10
/* 0124B4 800118B4 E7A6007C */ swc1 $f6, 0x7c($sp)
/* 0124B8 800118B8 C7A80094 */ lwc1 $f8, 0x94($sp)
/* 0124BC 800118BC 46004521 */ cvt.d.s $f20, $f8
/* 0124C0 800118C0 4634F001 */ sub.d $f0, $f30, $f20
.L800118C4:
/* 0124C4 800118C4 463C0282 */ mul.d $f10, $f0, $f28
/* 0124C8 800118C8 00000000 */ nop
/* 0124CC 800118CC 46205182 */ mul.d $f6, $f10, $f0
/* 0124D0 800118D0 00000000 */ nop
/* 0124D4 800118D4 46340102 */ mul.d $f4, $f0, $f20
/* 0124D8 800118D8 00000000 */ nop
/* 0124DC 800118DC 463CA282 */ mul.d $f10, $f20, $f28
/* 0124E0 800118E0 463C2200 */ add.d $f8, $f4, $f28
/* 0124E4 800118E4 C7A400C8 */ lwc1 $f4, 0xc8($sp)
/* 0124E8 800118E8 462030A0 */ cvt.s.d $f2, $f6
/* 0124EC 800118EC 46345182 */ mul.d $f6, $f10, $f20
/* 0124F0 800118F0 C7AA00C0 */ lwc1 $f10, 0xc0($sp)
/* 0124F4 800118F4 462043A0 */ cvt.s.d $f14, $f8
/* 0124F8 800118F8 46041202 */ mul.s $f8, $f2, $f4
/* 0124FC 800118FC 46203420 */ cvt.s.d $f16, $f6
/* 012500 80011900 460A7182 */ mul.s $f6, $f14, $f10
/* 012504 80011904 C7AA00B8 */ lwc1 $f10, 0xb8($sp)
/* 012508 80011908 46064100 */ add.s $f4, $f8, $f6
/* 01250C 8001190C 460A8202 */ mul.s $f8, $f16, $f10
/* 012510 80011910 C7AA00C4 */ lwc1 $f10, 0xc4($sp)
/* 012514 80011914 C7A600A8 */ lwc1 $f6, 0xa8($sp)
/* 012518 80011918 46082600 */ add.s $f24, $f4, $f8
/* 01251C 8001191C 460A1102 */ mul.s $f4, $f2, $f10
/* 012520 80011920 C7A800BC */ lwc1 $f8, 0xbc($sp)
/* 012524 80011924 4606C481 */ sub.s $f18, $f24, $f6
/* 012528 80011928 46087182 */ mul.s $f6, $f14, $f8
/* 01252C 8001192C C7A800B4 */ lwc1 $f8, 0xb4($sp)
/* 012530 80011930 46062280 */ add.s $f10, $f4, $f6
/* 012534 80011934 46088102 */ mul.s $f4, $f16, $f8
/* 012538 80011938 C7A600A0 */ lwc1 $f6, 0xa0($sp)
/* 01253C 8001193C 46129202 */ mul.s $f8, $f18, $f18
/* 012540 80011940 46045680 */ add.s $f26, $f10, $f4
/* 012544 80011944 4606D581 */ sub.s $f22, $f26, $f6
/* 012548 80011948 4616B282 */ mul.s $f10, $f22, $f22
/* 01254C 8001194C 0C033850 */ jal sqrtf
/* 012550 80011950 460A4300 */ add.s $f12, $f8, $f10
/* 012554 80011954 C7A40084 */ lwc1 $f4, 0x84($sp)
/* 012558 80011958 3C0141A0 */ li $at, 0x41A00000 # 20.000000
/* 01255C 8001195C 44814000 */ mtc1 $at, $f8
/* 012560 80011960 46002180 */ add.s $f6, $f4, $f0
/* 012564 80011964 E7B800A8 */ swc1 $f24, 0xa8($sp)
/* 012568 80011968 E7BA00A0 */ swc1 $f26, 0xa0($sp)
/* 01256C 8001196C 4606403C */ c.lt.s $f8, $f6
/* 012570 80011970 E7A60084 */ swc1 $f6, 0x84($sp)
/* 012574 80011974 4503000B */ bc1tl .L800119A4
/* 012578 80011978 8E690000 */ lw $t1, ($s3)
/* 01257C 8001197C 5640001C */ bnel $s2, $zero, .L800119F0
/* 012580 80011980 C7A8007C */ lwc1 $f8, 0x7c($sp)
/* 012584 80011984 44805800 */ mtc1 $zero, $f11
/* 012588 80011988 44805000 */ mtc1 $zero, $f10
/* 01258C 8001198C 00000000 */ nop
/* 012590 80011990 46345032 */ c.eq.d $f10, $f20
/* 012594 80011994 00000000 */ nop
/* 012598 80011998 45020015 */ bc1fl .L800119F0
/* 01259C 8001199C C7A8007C */ lwc1 $f8, 0x7c($sp)
/* 0125A0 800119A0 8E690000 */ lw $t1, ($s3)
.L800119A4:
/* 0125A4 800119A4 4600D28D */ trunc.w.s $f10, $f26
/* 0125A8 800119A8 26310001 */ addiu $s1, $s1, 1
/* 0125AC 800119AC 51200007 */ beql $t1, $zero, .L800119CC
/* 0125B0 800119B0 4600C18D */ trunc.w.s $f6, $f24
/* 0125B4 800119B4 4600C107 */ neg.s $f4, $f24
/* 0125B8 800119B8 4600220D */ trunc.w.s $f8, $f4
/* 0125BC 800119BC 440B4000 */ mfc1 $t3, $f8
/* 0125C0 800119C0 10000005 */ b .L800119D8
/* 0125C4 800119C4 A60B0000 */ sh $t3, ($s0)
/* 0125C8 800119C8 4600C18D */ trunc.w.s $f6, $f24
.L800119CC:
/* 0125CC 800119CC 440D3000 */ mfc1 $t5, $f6
/* 0125D0 800119D0 00000000 */ nop
/* 0125D4 800119D4 A60D0000 */ sh $t5, ($s0)
.L800119D8:
/* 0125D8 800119D8 440F5000 */ mfc1 $t7, $f10
/* 0125DC 800119DC 44802000 */ mtc1 $zero, $f4
/* 0125E0 800119E0 26100004 */ addiu $s0, $s0, 4
/* 0125E4 800119E4 A60FFFFE */ sh $t7, -2($s0)
/* 0125E8 800119E8 E7A40084 */ swc1 $f4, 0x84($sp)
/* 0125EC 800119EC C7A8007C */ lwc1 $f8, 0x7c($sp)
.L800119F0:
/* 0125F0 800119F0 C7A00094 */ lwc1 $f0, 0x94($sp)
/* 0125F4 800119F4 46080000 */ add.s $f0, $f0, $f8
/* 0125F8 800119F8 46000521 */ cvt.d.s $f20, $f0
/* 0125FC 800119FC E7A00094 */ swc1 $f0, 0x94($sp)
/* 012600 80011A00 463EA03E */ c.le.d $f20, $f30
/* 012604 80011A04 00000000 */ nop
/* 012608 80011A08 4503FFAE */ bc1tl .L800118C4
/* 01260C 80011A0C 4634F001 */ sub.d $f0, $f30, $f20
.L80011A10:
/* 012610 80011A10 16B4FF49 */ bne $s5, $s4, .L80011738
/* 012614 80011A14 02A09025 */ move $s2, $s5
.L80011A18:
/* 012618 80011A18 8FBF0064 */ lw $ra, 0x64($sp)
/* 01261C 80011A1C 02201025 */ move $v0, $s1
/* 012620 80011A20 8FB1004C */ lw $s1, 0x4c($sp)
/* 012624 80011A24 D7B40018 */ ldc1 $f20, 0x18($sp)
/* 012628 80011A28 D7B60020 */ ldc1 $f22, 0x20($sp)
/* 01262C 80011A2C D7B80028 */ ldc1 $f24, 0x28($sp)
/* 012630 80011A30 D7BA0030 */ ldc1 $f26, 0x30($sp)
/* 012634 80011A34 D7BC0038 */ ldc1 $f28, 0x38($sp)
/* 012638 80011A38 D7BE0040 */ ldc1 $f30, 0x40($sp)
/* 01263C 80011A3C 8FB00048 */ lw $s0, 0x48($sp)
/* 012640 80011A40 8FB20050 */ lw $s2, 0x50($sp)
/* 012644 80011A44 8FB30054 */ lw $s3, 0x54($sp)
/* 012648 80011A48 8FB40058 */ lw $s4, 0x58($sp)
/* 01264C 80011A4C 8FB5005C */ lw $s5, 0x5c($sp)
/* 012650 80011A50 8FB60060 */ lw $s6, 0x60($sp)
/* 012654 80011A54 03E00008 */ jr $ra
/* 012658 80011A58 27BD00D8 */ addiu $sp, $sp, 0xd8