Files
mk64/asm/non_matchings/code_80005FD0/func_80010218.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

160 lines
7.9 KiB
ArmAsm

glabel func_80010218
/* 010E18 80010218 3C0E800E */ lui $t6, %hi(gCurrentCourseId)
/* 010E1C 8001021C 85CEC5A0 */ lh $t6, %lo(gCurrentCourseId)($t6)
/* 010E20 80010220 27BDFF80 */ addiu $sp, $sp, -0x80
/* 010E24 80010224 3C01800E */ lui $at, %hi(D_800DCA4C)
/* 010E28 80010228 000E7880 */ sll $t7, $t6, 2
/* 010E2C 8001022C 002F0821 */ addu $at, $at, $t7
/* 010E30 80010230 C420CA4C */ lwc1 $f0, %lo(D_800DCA4C)($at)
/* 010E34 80010234 AFBF005C */ sw $ra, 0x5c($sp)
/* 010E38 80010238 AFB50058 */ sw $s5, 0x58($sp)
/* 010E3C 8001023C 4600010D */ trunc.w.s $f4, $f0
/* 010E40 80010240 AFB40054 */ sw $s4, 0x54($sp)
/* 010E44 80010244 AFB30050 */ sw $s3, 0x50($sp)
/* 010E48 80010248 AFB2004C */ sw $s2, 0x4c($sp)
/* 010E4C 8001024C 44192000 */ mfc1 $t9, $f4
/* 010E50 80010250 AFB10048 */ sw $s1, 0x48($sp)
/* 010E54 80010254 AFB00044 */ sw $s0, 0x44($sp)
/* 010E58 80010258 F7BE0038 */ sdc1 $f30, 0x38($sp)
/* 010E5C 8001025C F7BC0030 */ sdc1 $f28, 0x30($sp)
/* 010E60 80010260 F7BA0028 */ sdc1 $f26, 0x28($sp)
/* 010E64 80010264 F7B80020 */ sdc1 $f24, 0x20($sp)
/* 010E68 80010268 F7B60018 */ sdc1 $f22, 0x18($sp)
/* 010E6C 8001026C F7B40010 */ sdc1 $f20, 0x10($sp)
/* 010E70 80010270 07200074 */ bltz $t9, .L80010444
/* 010E74 80010274 00802825 */ move $a1, $a0
/* 010E78 80010278 3C0A8016 */ lui $t2, %hi(D_801645C8) # $t2, 0x8016
/* 010E7C 8001027C 254A45C8 */ addiu $t2, %lo(D_801645C8) # addiu $t2, $t2, 0x45c8
/* 010E80 80010280 00054840 */ sll $t1, $a1, 1
/* 010E84 80010284 00041080 */ sll $v0, $a0, 2
/* 010E88 80010288 012AA821 */ addu $s5, $t1, $t2
/* 010E8C 8001028C 96A30000 */ lhu $v1, ($s5)
/* 010E90 80010290 3C088016 */ lui $t0, %hi(D_80164550) # $t0, 0x8016
/* 010E94 80010294 25084550 */ addiu $t0, %lo(D_80164550) # addiu $t0, $t0, 0x4550
/* 010E98 80010298 3C118016 */ lui $s1, %hi(D_80164560) # 0x8016
/* 010E9C 8001029C 3C128016 */ lui $s2, %hi(D_80164570) # 0x8016
/* 010EA0 800102A0 0048A021 */ addu $s4, $v0, $t0
/* 010EA4 800102A4 02228821 */ addu $s1, $s1, $v0
/* 010EA8 800102A8 02429021 */ addu $s2, $s2, $v0
/* 010EAC 800102AC 46000606 */ mov.s $f24, $f0
/* 010EB0 800102B0 8E900000 */ lw $s0, ($s4)
/* 010EB4 800102B4 8E314560 */ lw $s1, %lo(D_80164560)($s1) # 0x4560($s1)
/* 010EB8 800102B8 8E524570 */ lw $s2, %lo(D_80164570)($s2) # 0x4570($s2)
/* 010EBC 800102BC 18600061 */ blez $v1, .L80010444
/* 010EC0 800102C0 00002025 */ move $a0, $zero
.L800102C4:
/* 010EC4 800102C4 24930001 */ addiu $s3, $a0, 1
/* 010EC8 800102C8 0263001A */ div $zero, $s3, $v1
/* 010ECC 800102CC 860C0002 */ lh $t4, 2($s0)
/* 010ED0 800102D0 8E980000 */ lw $t8, ($s4)
/* 010ED4 800102D4 00007010 */ mfhi $t6
/* 010ED8 800102D8 448C4000 */ mtc1 $t4, $f8
/* 010EDC 800102DC 860B0000 */ lh $t3, ($s0)
/* 010EE0 800102E0 000E78C0 */ sll $t7, $t6, 3
/* 010EE4 800102E4 468042A0 */ cvt.s.w $f10, $f8
/* 010EE8 800102E8 01F81021 */ addu $v0, $t7, $t8
/* 010EEC 800102EC 448B3000 */ mtc1 $t3, $f6
/* 010EF0 800102F0 26100008 */ addiu $s0, $s0, 8
/* 010EF4 800102F4 46803520 */ cvt.s.w $f20, $f6
/* 010EF8 800102F8 E7AA0074 */ swc1 $f10, 0x74($sp)
/* 010EFC 800102FC 84480002 */ lh $t0, 2($v0)
/* 010F00 80010300 84590000 */ lh $t9, ($v0)
/* 010F04 80010304 860DFFFC */ lh $t5, -4($s0)
/* 010F08 80010308 44882000 */ mtc1 $t0, $f4
/* 010F0C 8001030C 44999000 */ mtc1 $t9, $f18
/* 010F10 80010310 448D8000 */ mtc1 $t5, $f16
/* 010F14 80010314 468021A0 */ cvt.s.w $f6, $f4
/* 010F18 80010318 468097A0 */ cvt.s.w $f30, $f18
/* 010F1C 8001031C E7A60068 */ swc1 $f6, 0x68($sp)
/* 010F20 80010320 84490004 */ lh $t1, 4($v0)
/* 010F24 80010324 44894000 */ mtc1 $t1, $f8
/* 010F28 80010328 468085A0 */ cvt.s.w $f22, $f16
/* 010F2C 8001032C 14600002 */ bnez $v1, .L80010338
/* 010F30 80010330 00000000 */ nop
/* 010F34 80010334 0007000D */ break 7
.L80010338:
/* 010F38 80010338 2401FFFF */ li $at, -1
/* 010F3C 8001033C 14610004 */ bne $v1, $at, .L80010350
/* 010F40 80010340 3C018000 */ lui $at, 0x8000
/* 010F44 80010344 16610002 */ bne $s3, $at, .L80010350
/* 010F48 80010348 00000000 */ nop
/* 010F4C 8001034C 0006000D */ break 6
.L80010350:
/* 010F50 80010350 468040A0 */ cvt.s.w $f2, $f8
/* 010F54 80010354 4614F681 */ sub.s $f26, $f30, $f20
/* 010F58 80010358 E7A20064 */ swc1 $f2, 0x64($sp)
/* 010F5C 8001035C 46161701 */ sub.s $f28, $f2, $f22
/* 010F60 80010360 461AD282 */ mul.s $f10, $f26, $f26
/* 010F64 80010364 00000000 */ nop
/* 010F68 80010368 461CE402 */ mul.s $f16, $f28, $f28
/* 010F6C 8001036C 0C033850 */ jal sqrtf
/* 010F70 80010370 46105300 */ add.s $f12, $f10, $f16
/* 010F74 80010374 461CC482 */ mul.s $f18, $f24, $f28
/* 010F78 80010378 C7A20064 */ lwc1 $f2, 0x64($sp)
/* 010F7C 8001037C 3C013FE0 */ li $at, 0x3FE00000 # 1.750000
/* 010F80 80010380 02602025 */ move $a0, $s3
/* 010F84 80010384 26310008 */ addiu $s1, $s1, 8
/* 010F88 80010388 26520008 */ addiu $s2, $s2, 8
/* 010F8C 8001038C 46009103 */ div.s $f4, $f18, $f0
/* 010F90 80010390 46142180 */ add.s $f6, $f4, $f20
/* 010F94 80010394 44813800 */ mtc1 $at, $f7
/* 010F98 80010398 4600320D */ trunc.w.s $f8, $f6
/* 010F9C 8001039C 44803000 */ mtc1 $zero, $f6
/* 010FA0 800103A0 440B4000 */ mfc1 $t3, $f8
/* 010FA4 800103A4 00000000 */ nop
/* 010FA8 800103A8 A62BFFF8 */ sh $t3, -8($s1)
/* 010FAC 800103AC C7B00068 */ lwc1 $f16, 0x68($sp)
/* 010FB0 800103B0 C7AA0074 */ lwc1 $f10, 0x74($sp)
/* 010FB4 800103B4 46105480 */ add.s $f18, $f10, $f16
/* 010FB8 800103B8 46009121 */ cvt.d.s $f4, $f18
/* 010FBC 800103BC 461EA481 */ sub.s $f18, $f20, $f30
/* 010FC0 800103C0 46262202 */ mul.d $f8, $f4, $f6
/* 010FC4 800103C4 00000000 */ nop
/* 010FC8 800103C8 4612C102 */ mul.s $f4, $f24, $f18
/* 010FCC 800103CC 462042A0 */ cvt.s.d $f10, $f8
/* 010FD0 800103D0 46002183 */ div.s $f6, $f4, $f0
/* 010FD4 800103D4 4600540D */ trunc.w.s $f16, $f10
/* 010FD8 800103D8 44028000 */ mfc1 $v0, $f16
/* 010FDC 800103DC 00000000 */ nop
/* 010FE0 800103E0 A622FFFA */ sh $v0, -6($s1)
/* 010FE4 800103E4 4602B401 */ sub.s $f16, $f22, $f2
/* 010FE8 800103E8 46163200 */ add.s $f8, $f6, $f22
/* 010FEC 800103EC 4610C482 */ mul.s $f18, $f24, $f16
/* 010FF0 800103F0 4600428D */ trunc.w.s $f10, $f8
/* 010FF4 800103F4 46009103 */ div.s $f4, $f18, $f0
/* 010FF8 800103F8 440E5000 */ mfc1 $t6, $f10
/* 010FFC 800103FC 461AC282 */ mul.s $f10, $f24, $f26
/* 011000 80010400 A62EFFFC */ sh $t6, -4($s1)
/* 011004 80010404 A642FFFA */ sh $v0, -6($s2)
/* 011008 80010408 46005403 */ div.s $f16, $f10, $f0
/* 01100C 8001040C 46142180 */ add.s $f6, $f4, $f20
/* 011010 80010410 4600320D */ trunc.w.s $f8, $f6
/* 011014 80010414 44184000 */ mfc1 $t8, $f8
/* 011018 80010418 00000000 */ nop
/* 01101C 8001041C A658FFF8 */ sh $t8, -8($s2)
/* 011020 80010420 46168480 */ add.s $f18, $f16, $f22
/* 011024 80010424 4600910D */ trunc.w.s $f4, $f18
/* 011028 80010428 44082000 */ mfc1 $t0, $f4
/* 01102C 8001042C 00000000 */ nop
/* 011030 80010430 A648FFFC */ sh $t0, -4($s2)
/* 011034 80010434 96A30000 */ lhu $v1, ($s5)
/* 011038 80010438 0263082A */ slt $at, $s3, $v1
/* 01103C 8001043C 1420FFA1 */ bnez $at, .L800102C4
/* 011040 80010440 00000000 */ nop
.L80010444:
/* 011044 80010444 8FBF005C */ lw $ra, 0x5c($sp)
/* 011048 80010448 D7B40010 */ ldc1 $f20, 0x10($sp)
/* 01104C 8001044C D7B60018 */ ldc1 $f22, 0x18($sp)
/* 011050 80010450 D7B80020 */ ldc1 $f24, 0x20($sp)
/* 011054 80010454 D7BA0028 */ ldc1 $f26, 0x28($sp)
/* 011058 80010458 D7BC0030 */ ldc1 $f28, 0x30($sp)
/* 01105C 8001045C D7BE0038 */ ldc1 $f30, 0x38($sp)
/* 011060 80010460 8FB00044 */ lw $s0, 0x44($sp)
/* 011064 80010464 8FB10048 */ lw $s1, 0x48($sp)
/* 011068 80010468 8FB2004C */ lw $s2, 0x4c($sp)
/* 01106C 8001046C 8FB30050 */ lw $s3, 0x50($sp)
/* 011070 80010470 8FB40054 */ lw $s4, 0x54($sp)
/* 011074 80010474 8FB50058 */ lw $s5, 0x58($sp)
/* 011078 80010478 03E00008 */ jr $ra
/* 01107C 8001047C 27BD0080 */ addiu $sp, $sp, 0x80