mirror of
https://github.com/n64decomp/mk64
synced 2026-08-18 21:17:47 -04:00
8ab4557b39
* Split asm using autodecompiler * Placed libultra bss and linked more C
209 lines
9.6 KiB
ArmAsm
209 lines
9.6 KiB
ArmAsm
glabel func_8003E6EC
|
|
/* 03F2EC 8003E6EC 27BDFFD8 */ addiu $sp, $sp, -0x28
|
|
/* 03F2F0 8003E6F0 AFBF0024 */ sw $ra, 0x24($sp)
|
|
/* 03F2F4 8003E6F4 AFB10020 */ sw $s1, 0x20($sp)
|
|
/* 03F2F8 8003E6F8 AFB0001C */ sw $s0, 0x1c($sp)
|
|
/* 03F2FC 8003E6FC AFA5002C */ sw $a1, 0x2c($sp)
|
|
/* 03F300 8003E700 C4860124 */ lwc1 $f6, 0x124($a0)
|
|
/* 03F304 8003E704 C4A40000 */ lwc1 $f4, ($a1)
|
|
/* 03F308 8003E708 3C013F80 */ li $at, 0x3F800000 # 1.000000
|
|
/* 03F30C 8003E70C 44810000 */ mtc1 $at, $f0
|
|
/* 03F310 8003E710 46062202 */ mul.s $f8, $f4, $f6
|
|
/* 03F314 8003E714 8FAF003C */ lw $t7, 0x3c($sp)
|
|
/* 03F318 8003E718 3C01800F */ lui $at, %hi(D_800EDF50)
|
|
/* 03F31C 8003E71C 00808025 */ move $s0, $a0
|
|
/* 03F320 8003E720 C5F00000 */ lwc1 $f16, ($t7)
|
|
/* 03F324 8003E724 00E08825 */ move $s1, $a3
|
|
/* 03F328 8003E728 3C073F00 */ lui $a3, 0x3f00
|
|
/* 03F32C 8003E72C 46004282 */ mul.s $f10, $f8, $f0
|
|
/* 03F330 8003E730 460A8480 */ add.s $f18, $f16, $f10
|
|
/* 03F334 8003E734 E5F20000 */ swc1 $f18, ($t7)
|
|
/* 03F338 8003E738 C4860124 */ lwc1 $f6, 0x124($a0)
|
|
/* 03F33C 8003E73C C4A40004 */ lwc1 $f4, 4($a1)
|
|
/* 03F340 8003E740 D42ADF50 */ ldc1 $f10, %lo(D_800EDF50)($at)
|
|
/* 03F344 8003E744 8FB80040 */ lw $t8, 0x40($sp)
|
|
/* 03F348 8003E748 46062202 */ mul.s $f8, $f4, $f6
|
|
/* 03F34C 8003E74C 3C014000 */ li $at, 0x40000000 # 2.000000
|
|
/* 03F350 8003E750 C7040000 */ lwc1 $f4, ($t8)
|
|
/* 03F354 8003E754 460021A1 */ cvt.d.s $f6, $f4
|
|
/* 03F358 8003E758 46004421 */ cvt.d.s $f16, $f8
|
|
/* 03F35C 8003E75C 462A8482 */ mul.d $f18, $f16, $f10
|
|
/* 03F360 8003E760 46323200 */ add.d $f8, $f6, $f18
|
|
/* 03F364 8003E764 46204420 */ cvt.s.d $f16, $f8
|
|
/* 03F368 8003E768 E7100000 */ swc1 $f16, ($t8)
|
|
/* 03F36C 8003E76C C4840124 */ lwc1 $f4, 0x124($a0)
|
|
/* 03F370 8003E770 C4AA0008 */ lwc1 $f10, 8($a1)
|
|
/* 03F374 8003E774 8FB90044 */ lw $t9, 0x44($sp)
|
|
/* 03F378 8003E778 00A02025 */ move $a0, $a1
|
|
/* 03F37C 8003E77C 46045182 */ mul.s $f6, $f10, $f4
|
|
/* 03F380 8003E780 C7280000 */ lwc1 $f8, ($t9)
|
|
/* 03F384 8003E784 44815000 */ mtc1 $at, $f10
|
|
/* 03F388 8003E788 46003482 */ mul.s $f18, $f6, $f0
|
|
/* 03F38C 8003E78C 46124400 */ add.s $f16, $f8, $f18
|
|
/* 03F390 8003E790 E7300000 */ swc1 $f16, ($t9)
|
|
/* 03F394 8003E794 8FA80038 */ lw $t0, 0x38($sp)
|
|
/* 03F398 8003E798 8D050000 */ lw $a1, ($t0)
|
|
/* 03F39C 8003E79C 0C00A97D */ jal func_8002A5F4
|
|
/* 03F3A0 8003E7A0 E7AA0010 */ swc1 $f10, 0x10($sp)
|
|
/* 03F3A4 8003E7A4 3C01800F */ lui $at, %hi(D_800EDF58) # $at, 0x800f
|
|
/* 03F3A8 8003E7A8 C424DF58 */ lwc1 $f4, %lo(D_800EDF58)($at)
|
|
/* 03F3AC 8003E7AC C6060144 */ lwc1 $f6, 0x144($s0)
|
|
/* 03F3B0 8003E7B0 4604303E */ c.le.s $f6, $f4
|
|
/* 03F3B4 8003E7B4 00000000 */ nop
|
|
/* 03F3B8 8003E7B8 45020030 */ bc1fl .L8003E87C
|
|
/* 03F3BC 8003E7BC 3C0141A0 */ lui $at, 0x41a0
|
|
/* 03F3C0 8003E7C0 86090206 */ lh $t1, 0x206($s0)
|
|
/* 03F3C4 8003E7C4 240200B6 */ li $v0, 182
|
|
/* 03F3C8 8003E7C8 240300B4 */ li $v1, 180
|
|
/* 03F3CC 8003E7CC 0122001A */ div $zero, $t1, $v0
|
|
/* 03F3D0 8003E7D0 00005012 */ mflo $t2
|
|
/* 03F3D4 8003E7D4 02002025 */ move $a0, $s0
|
|
/* 03F3D8 8003E7D8 14400002 */ bnez $v0, .L8003E7E4
|
|
/* 03F3DC 8003E7DC 00000000 */ nop
|
|
/* 03F3E0 8003E7E0 0007000D */ break 7
|
|
.L8003E7E4:
|
|
/* 03F3E4 8003E7E4 2401FFFF */ li $at, -1
|
|
/* 03F3E8 8003E7E8 14410004 */ bne $v0, $at, .L8003E7FC
|
|
/* 03F3EC 8003E7EC 3C018000 */ lui $at, 0x8000
|
|
/* 03F3F0 8003E7F0 15210002 */ bne $t1, $at, .L8003E7FC
|
|
/* 03F3F4 8003E7F4 00000000 */ nop
|
|
/* 03F3F8 8003E7F8 0006000D */ break 6
|
|
.L8003E7FC:
|
|
/* 03F3FC 8003E7FC 01430019 */ multu $t2, $v1
|
|
/* 03F400 8003E800 3C054080 */ lui $a1, 0x4080
|
|
/* 03F404 8003E804 00005812 */ mflo $t3
|
|
/* 03F408 8003E808 448B4000 */ mtc1 $t3, $f8
|
|
/* 03F40C 8003E80C 00000000 */ nop
|
|
/* 03F410 8003E810 468044A0 */ cvt.s.w $f18, $f8
|
|
/* 03F414 8003E814 E6320000 */ swc1 $f18, ($s1)
|
|
/* 03F418 8003E818 860C00C4 */ lh $t4, 0xc4($s0)
|
|
/* 03F41C 8003E81C 0182001A */ div $zero, $t4, $v0
|
|
/* 03F420 8003E820 00006812 */ mflo $t5
|
|
/* 03F424 8003E824 000D7823 */ negu $t7, $t5
|
|
/* 03F428 8003E828 14400002 */ bnez $v0, .L8003E834
|
|
/* 03F42C 8003E82C 00000000 */ nop
|
|
/* 03F430 8003E830 0007000D */ break 7
|
|
.L8003E834:
|
|
/* 03F434 8003E834 2401FFFF */ li $at, -1
|
|
/* 03F438 8003E838 14410004 */ bne $v0, $at, .L8003E84C
|
|
/* 03F43C 8003E83C 3C018000 */ lui $at, 0x8000
|
|
/* 03F440 8003E840 15810002 */ bne $t4, $at, .L8003E84C
|
|
/* 03F444 8003E844 00000000 */ nop
|
|
/* 03F448 8003E848 0006000D */ break 6
|
|
.L8003E84C:
|
|
/* 03F44C 8003E84C 01E30019 */ multu $t7, $v1
|
|
/* 03F450 8003E850 0000C012 */ mflo $t8
|
|
/* 03F454 8003E854 44988000 */ mtc1 $t8, $f16
|
|
/* 03F458 8003E858 00000000 */ nop
|
|
/* 03F45C 8003E85C 468082A0 */ cvt.s.w $f10, $f16
|
|
/* 03F460 8003E860 0C00C7D2 */ jal func_80031F48
|
|
/* 03F464 8003E864 E62A0008 */ swc1 $f10, 8($s1)
|
|
/* 03F468 8003E868 0C00F710 */ jal func_8003DC40
|
|
/* 03F46C 8003E86C 02002025 */ move $a0, $s0
|
|
/* 03F470 8003E870 10000055 */ b .L8003E9C8
|
|
/* 03F474 8003E874 44804000 */ mtc1 $zero, $f8
|
|
/* 03F478 8003E878 3C0141A0 */ li $at, 0x41A00000 # 20.000000
|
|
.L8003E87C:
|
|
/* 03F47C 8003E87C 44812000 */ mtc1 $at, $f4
|
|
/* 03F480 8003E880 3C014190 */ li $at, 0x41900000 # 18.000000
|
|
/* 03F484 8003E884 44814000 */ mtc1 $at, $f8
|
|
/* 03F488 8003E888 C6060094 */ lwc1 $f6, 0x94($s0)
|
|
/* 03F48C 8003E88C 3C014358 */ li $at, 0x43580000 # 216.000000
|
|
/* 03F490 8003E890 44818000 */ mtc1 $at, $f16
|
|
/* 03F494 8003E894 46083483 */ div.s $f18, $f6, $f8
|
|
/* 03F498 8003E898 46109282 */ mul.s $f10, $f18, $f16
|
|
/* 03F49C 8003E89C 460A203C */ c.lt.s $f4, $f10
|
|
/* 03F4A0 8003E8A0 00000000 */ nop
|
|
/* 03F4A4 8003E8A4 45030007 */ bc1tl .L8003E8C4
|
|
/* 03F4A8 8003E8A8 86080206 */ lh $t0, 0x206($s0)
|
|
/* 03F4AC 8003E8AC 8E1900BC */ lw $t9, 0xbc($s0)
|
|
/* 03F4B0 8003E8B0 3C020001 */ lui $v0, 1
|
|
/* 03F4B4 8003E8B4 03227024 */ and $t6, $t9, $v0
|
|
/* 03F4B8 8003E8B8 544E002B */ bnel $v0, $t6, .L8003E968
|
|
/* 03F4BC 8003E8BC 44802000 */ mtc1 $zero, $f4
|
|
/* 03F4C0 8003E8C0 86080206 */ lh $t0, 0x206($s0)
|
|
.L8003E8C4:
|
|
/* 03F4C4 8003E8C4 240200B6 */ li $v0, 182
|
|
/* 03F4C8 8003E8C8 0102001A */ div $zero, $t0, $v0
|
|
/* 03F4CC 8003E8CC 00004812 */ mflo $t1
|
|
/* 03F4D0 8003E8D0 00095080 */ sll $t2, $t1, 2
|
|
/* 03F4D4 8003E8D4 01495023 */ subu $t2, $t2, $t1
|
|
/* 03F4D8 8003E8D8 000A50C0 */ sll $t2, $t2, 3
|
|
/* 03F4DC 8003E8DC 01495021 */ addu $t2, $t2, $t1
|
|
/* 03F4E0 8003E8E0 000A5040 */ sll $t2, $t2, 1
|
|
/* 03F4E4 8003E8E4 448A3000 */ mtc1 $t2, $f6
|
|
/* 03F4E8 8003E8E8 14400002 */ bnez $v0, .L8003E8F4
|
|
/* 03F4EC 8003E8EC 00000000 */ nop
|
|
/* 03F4F0 8003E8F0 0007000D */ break 7
|
|
.L8003E8F4:
|
|
/* 03F4F4 8003E8F4 2401FFFF */ li $at, -1
|
|
/* 03F4F8 8003E8F8 14410004 */ bne $v0, $at, .L8003E90C
|
|
/* 03F4FC 8003E8FC 3C018000 */ lui $at, 0x8000
|
|
/* 03F500 8003E900 15010002 */ bne $t0, $at, .L8003E90C
|
|
/* 03F504 8003E904 00000000 */ nop
|
|
/* 03F508 8003E908 0006000D */ break 6
|
|
.L8003E90C:
|
|
/* 03F50C 8003E90C 46803220 */ cvt.s.w $f8, $f6
|
|
/* 03F510 8003E910 E6280000 */ swc1 $f8, ($s1)
|
|
/* 03F514 8003E914 860B00C4 */ lh $t3, 0xc4($s0)
|
|
/* 03F518 8003E918 0162001A */ div $zero, $t3, $v0
|
|
/* 03F51C 8003E91C 00006012 */ mflo $t4
|
|
/* 03F520 8003E920 000C6823 */ negu $t5, $t4
|
|
/* 03F524 8003E924 000D7900 */ sll $t7, $t5, 4
|
|
/* 03F528 8003E928 01ED7823 */ subu $t7, $t7, $t5
|
|
/* 03F52C 8003E92C 000F7880 */ sll $t7, $t7, 2
|
|
/* 03F530 8003E930 448F9000 */ mtc1 $t7, $f18
|
|
/* 03F534 8003E934 14400002 */ bnez $v0, .L8003E940
|
|
/* 03F538 8003E938 00000000 */ nop
|
|
/* 03F53C 8003E93C 0007000D */ break 7
|
|
.L8003E940:
|
|
/* 03F540 8003E940 2401FFFF */ li $at, -1
|
|
/* 03F544 8003E944 14410004 */ bne $v0, $at, .L8003E958
|
|
/* 03F548 8003E948 3C018000 */ lui $at, 0x8000
|
|
/* 03F54C 8003E94C 15610002 */ bne $t3, $at, .L8003E958
|
|
/* 03F550 8003E950 00000000 */ nop
|
|
/* 03F554 8003E954 0006000D */ break 6
|
|
.L8003E958:
|
|
/* 03F558 8003E958 46809420 */ cvt.s.w $f16, $f18
|
|
/* 03F55C 8003E95C 10000019 */ b .L8003E9C4
|
|
/* 03F560 8003E960 E6300008 */ swc1 $f16, 8($s1)
|
|
/* 03F564 8003E964 44802000 */ mtc1 $zero, $f4
|
|
.L8003E968:
|
|
/* 03F568 8003E968 240200B6 */ li $v0, 182
|
|
/* 03F56C 8003E96C E6240000 */ swc1 $f4, ($s1)
|
|
/* 03F570 8003E970 861800C4 */ lh $t8, 0xc4($s0)
|
|
/* 03F574 8003E974 0302001A */ div $zero, $t8, $v0
|
|
/* 03F578 8003E978 0000C812 */ mflo $t9
|
|
/* 03F57C 8003E97C 00197023 */ negu $t6, $t9
|
|
/* 03F580 8003E980 000E4080 */ sll $t0, $t6, 2
|
|
/* 03F584 8003E984 010E4023 */ subu $t0, $t0, $t6
|
|
/* 03F588 8003E988 000840C0 */ sll $t0, $t0, 3
|
|
/* 03F58C 8003E98C 010E4021 */ addu $t0, $t0, $t6
|
|
/* 03F590 8003E990 00084040 */ sll $t0, $t0, 1
|
|
/* 03F594 8003E994 44885000 */ mtc1 $t0, $f10
|
|
/* 03F598 8003E998 14400002 */ bnez $v0, .L8003E9A4
|
|
/* 03F59C 8003E99C 00000000 */ nop
|
|
/* 03F5A0 8003E9A0 0007000D */ break 7
|
|
.L8003E9A4:
|
|
/* 03F5A4 8003E9A4 2401FFFF */ li $at, -1
|
|
/* 03F5A8 8003E9A8 14410004 */ bne $v0, $at, .L8003E9BC
|
|
/* 03F5AC 8003E9AC 3C018000 */ lui $at, 0x8000
|
|
/* 03F5B0 8003E9B0 17010002 */ bne $t8, $at, .L8003E9BC
|
|
/* 03F5B4 8003E9B4 00000000 */ nop
|
|
/* 03F5B8 8003E9B8 0006000D */ break 6
|
|
.L8003E9BC:
|
|
/* 03F5BC 8003E9BC 468051A0 */ cvt.s.w $f6, $f10
|
|
/* 03F5C0 8003E9C0 E6260008 */ swc1 $f6, 8($s1)
|
|
.L8003E9C4:
|
|
/* 03F5C4 8003E9C4 44804000 */ mtc1 $zero, $f8
|
|
.L8003E9C8:
|
|
/* 03F5C8 8003E9C8 02202025 */ move $a0, $s1
|
|
/* 03F5CC 8003E9CC 26050174 */ addiu $a1, $s0, 0x174
|
|
/* 03F5D0 8003E9D0 0C0AD8EE */ jal func_802B63B8
|
|
/* 03F5D4 8003E9D4 E6280004 */ swc1 $f8, 4($s1)
|
|
/* 03F5D8 8003E9D8 8FBF0024 */ lw $ra, 0x24($sp)
|
|
/* 03F5DC 8003E9DC 8FB0001C */ lw $s0, 0x1c($sp)
|
|
/* 03F5E0 8003E9E0 8FB10020 */ lw $s1, 0x20($sp)
|
|
/* 03F5E4 8003E9E4 03E00008 */ jr $ra
|
|
/* 03F5E8 8003E9E8 27BD0028 */ addiu $sp, $sp, 0x28
|