Files
SpaghettiKart/asm/non_matchings/code_8003DC40/func_8003EE2C.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

212 lines
9.8 KiB
ArmAsm

glabel func_8003EE2C
/* 03FA2C 8003EE2C 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 03FA30 8003EE30 AFBF0024 */ sw $ra, 0x24($sp)
/* 03FA34 8003EE34 AFB10020 */ sw $s1, 0x20($sp)
/* 03FA38 8003EE38 AFB0001C */ sw $s0, 0x1c($sp)
/* 03FA3C 8003EE3C AFA5002C */ sw $a1, 0x2c($sp)
/* 03FA40 8003EE40 C4860124 */ lwc1 $f6, 0x124($a0)
/* 03FA44 8003EE44 C4A40000 */ lwc1 $f4, ($a1)
/* 03FA48 8003EE48 3C013F80 */ li $at, 0x3F800000 # 1.000000
/* 03FA4C 8003EE4C 44810000 */ mtc1 $at, $f0
/* 03FA50 8003EE50 46062202 */ mul.s $f8, $f4, $f6
/* 03FA54 8003EE54 8FAF003C */ lw $t7, 0x3c($sp)
/* 03FA58 8003EE58 3C01800F */ lui $at, %hi(D_800EDF70)
/* 03FA5C 8003EE5C 00808025 */ move $s0, $a0
/* 03FA60 8003EE60 C5F00000 */ lwc1 $f16, ($t7)
/* 03FA64 8003EE64 00E08825 */ move $s1, $a3
/* 03FA68 8003EE68 3C073F00 */ lui $a3, 0x3f00
/* 03FA6C 8003EE6C 46004282 */ mul.s $f10, $f8, $f0
/* 03FA70 8003EE70 460A8480 */ add.s $f18, $f16, $f10
/* 03FA74 8003EE74 E5F20000 */ swc1 $f18, ($t7)
/* 03FA78 8003EE78 C4860124 */ lwc1 $f6, 0x124($a0)
/* 03FA7C 8003EE7C C4A40004 */ lwc1 $f4, 4($a1)
/* 03FA80 8003EE80 D42ADF70 */ ldc1 $f10, %lo(D_800EDF70)($at)
/* 03FA84 8003EE84 8FB80040 */ lw $t8, 0x40($sp)
/* 03FA88 8003EE88 46062202 */ mul.s $f8, $f4, $f6
/* 03FA8C 8003EE8C 3C014000 */ li $at, 0x40000000 # 2.000000
/* 03FA90 8003EE90 C7040000 */ lwc1 $f4, ($t8)
/* 03FA94 8003EE94 460021A1 */ cvt.d.s $f6, $f4
/* 03FA98 8003EE98 46004421 */ cvt.d.s $f16, $f8
/* 03FA9C 8003EE9C 462A8482 */ mul.d $f18, $f16, $f10
/* 03FAA0 8003EEA0 46323200 */ add.d $f8, $f6, $f18
/* 03FAA4 8003EEA4 46204420 */ cvt.s.d $f16, $f8
/* 03FAA8 8003EEA8 E7100000 */ swc1 $f16, ($t8)
/* 03FAAC 8003EEAC C4840124 */ lwc1 $f4, 0x124($a0)
/* 03FAB0 8003EEB0 C4AA0008 */ lwc1 $f10, 8($a1)
/* 03FAB4 8003EEB4 8FB90044 */ lw $t9, 0x44($sp)
/* 03FAB8 8003EEB8 00A02025 */ move $a0, $a1
/* 03FABC 8003EEBC 46045182 */ mul.s $f6, $f10, $f4
/* 03FAC0 8003EEC0 C7280000 */ lwc1 $f8, ($t9)
/* 03FAC4 8003EEC4 44815000 */ mtc1 $at, $f10
/* 03FAC8 8003EEC8 46003482 */ mul.s $f18, $f6, $f0
/* 03FACC 8003EECC 46124400 */ add.s $f16, $f8, $f18
/* 03FAD0 8003EED0 E7300000 */ swc1 $f16, ($t9)
/* 03FAD4 8003EED4 8FA80038 */ lw $t0, 0x38($sp)
/* 03FAD8 8003EED8 8D050000 */ lw $a1, ($t0)
/* 03FADC 8003EEDC 0C00A97D */ jal func_8002A5F4
/* 03FAE0 8003EEE0 E7AA0010 */ swc1 $f10, 0x10($sp)
/* 03FAE4 8003EEE4 3C01800F */ lui $at, %hi(D_800EDF78) # $at, 0x800f
/* 03FAE8 8003EEE8 C424DF78 */ lwc1 $f4, %lo(D_800EDF78)($at)
/* 03FAEC 8003EEEC C6060144 */ lwc1 $f6, 0x144($s0)
/* 03FAF0 8003EEF0 4604303E */ c.le.s $f6, $f4
/* 03FAF4 8003EEF4 00000000 */ nop
/* 03FAF8 8003EEF8 45020033 */ bc1fl .L8003EFC8
/* 03FAFC 8003EEFC 3C0141A0 */ lui $at, 0x41a0
/* 03FB00 8003EF00 86090206 */ lh $t1, 0x206($s0)
/* 03FB04 8003EF04 240200B6 */ li $v0, 182
/* 03FB08 8003EF08 02002025 */ move $a0, $s0
/* 03FB0C 8003EF0C 0122001A */ div $zero, $t1, $v0
/* 03FB10 8003EF10 00005012 */ mflo $t2
/* 03FB14 8003EF14 000A5900 */ sll $t3, $t2, 4
/* 03FB18 8003EF18 016A5823 */ subu $t3, $t3, $t2
/* 03FB1C 8003EF1C 000B58C0 */ sll $t3, $t3, 3
/* 03FB20 8003EF20 448B4000 */ mtc1 $t3, $f8
/* 03FB24 8003EF24 14400002 */ bnez $v0, .L8003EF30
/* 03FB28 8003EF28 00000000 */ nop
/* 03FB2C 8003EF2C 0007000D */ break 7
.L8003EF30:
/* 03FB30 8003EF30 2401FFFF */ li $at, -1
/* 03FB34 8003EF34 14410004 */ bne $v0, $at, .L8003EF48
/* 03FB38 8003EF38 3C018000 */ lui $at, 0x8000
/* 03FB3C 8003EF3C 15210002 */ bne $t1, $at, .L8003EF48
/* 03FB40 8003EF40 00000000 */ nop
/* 03FB44 8003EF44 0006000D */ break 6
.L8003EF48:
/* 03FB48 8003EF48 468044A0 */ cvt.s.w $f18, $f8
/* 03FB4C 8003EF4C 3C054080 */ lui $a1, 0x4080
/* 03FB50 8003EF50 E6320000 */ swc1 $f18, ($s1)
/* 03FB54 8003EF54 860C00C4 */ lh $t4, 0xc4($s0)
/* 03FB58 8003EF58 0182001A */ div $zero, $t4, $v0
/* 03FB5C 8003EF5C 00006812 */ mflo $t5
/* 03FB60 8003EF60 000D7823 */ negu $t7, $t5
/* 03FB64 8003EF64 000FC080 */ sll $t8, $t7, 2
/* 03FB68 8003EF68 030FC023 */ subu $t8, $t8, $t7
/* 03FB6C 8003EF6C 0018C080 */ sll $t8, $t8, 2
/* 03FB70 8003EF70 030FC023 */ subu $t8, $t8, $t7
/* 03FB74 8003EF74 0018C080 */ sll $t8, $t8, 2
/* 03FB78 8003EF78 030FC021 */ addu $t8, $t8, $t7
/* 03FB7C 8003EF7C 0018C080 */ sll $t8, $t8, 2
/* 03FB80 8003EF80 44988000 */ mtc1 $t8, $f16
/* 03FB84 8003EF84 14400002 */ bnez $v0, .L8003EF90
/* 03FB88 8003EF88 00000000 */ nop
/* 03FB8C 8003EF8C 0007000D */ break 7
.L8003EF90:
/* 03FB90 8003EF90 2401FFFF */ li $at, -1
/* 03FB94 8003EF94 14410004 */ bne $v0, $at, .L8003EFA8
/* 03FB98 8003EF98 3C018000 */ lui $at, 0x8000
/* 03FB9C 8003EF9C 15810002 */ bne $t4, $at, .L8003EFA8
/* 03FBA0 8003EFA0 00000000 */ nop
/* 03FBA4 8003EFA4 0006000D */ break 6
.L8003EFA8:
/* 03FBA8 8003EFA8 468082A0 */ cvt.s.w $f10, $f16
/* 03FBAC 8003EFAC 0C00C7D2 */ jal func_80031F48
/* 03FBB0 8003EFB0 E62A0008 */ swc1 $f10, 8($s1)
/* 03FBB4 8003EFB4 0C00F710 */ jal func_8003DC40
/* 03FBB8 8003EFB8 02002025 */ move $a0, $s0
/* 03FBBC 8003EFBC 10000055 */ b .L8003F114
/* 03FBC0 8003EFC0 44804000 */ mtc1 $zero, $f8
/* 03FBC4 8003EFC4 3C0141A0 */ li $at, 0x41A00000 # 20.000000
.L8003EFC8:
/* 03FBC8 8003EFC8 44812000 */ mtc1 $at, $f4
/* 03FBCC 8003EFCC 3C014190 */ li $at, 0x41900000 # 18.000000
/* 03FBD0 8003EFD0 44814000 */ mtc1 $at, $f8
/* 03FBD4 8003EFD4 C6060094 */ lwc1 $f6, 0x94($s0)
/* 03FBD8 8003EFD8 3C014358 */ li $at, 0x43580000 # 216.000000
/* 03FBDC 8003EFDC 44818000 */ mtc1 $at, $f16
/* 03FBE0 8003EFE0 46083483 */ div.s $f18, $f6, $f8
/* 03FBE4 8003EFE4 46109282 */ mul.s $f10, $f18, $f16
/* 03FBE8 8003EFE8 460A203C */ c.lt.s $f4, $f10
/* 03FBEC 8003EFEC 00000000 */ nop
/* 03FBF0 8003EFF0 45030007 */ bc1tl .L8003F010
/* 03FBF4 8003EFF4 86080206 */ lh $t0, 0x206($s0)
/* 03FBF8 8003EFF8 8E1900BC */ lw $t9, 0xbc($s0)
/* 03FBFC 8003EFFC 3C020001 */ lui $v0, 1
/* 03FC00 8003F000 03227024 */ and $t6, $t9, $v0
/* 03FC04 8003F004 544E002B */ bnel $v0, $t6, .L8003F0B4
/* 03FC08 8003F008 44802000 */ mtc1 $zero, $f4
/* 03FC0C 8003F00C 86080206 */ lh $t0, 0x206($s0)
.L8003F010:
/* 03FC10 8003F010 240200B6 */ li $v0, 182
/* 03FC14 8003F014 0102001A */ div $zero, $t0, $v0
/* 03FC18 8003F018 00004812 */ mflo $t1
/* 03FC1C 8003F01C 00095080 */ sll $t2, $t1, 2
/* 03FC20 8003F020 01495023 */ subu $t2, $t2, $t1
/* 03FC24 8003F024 000A50C0 */ sll $t2, $t2, 3
/* 03FC28 8003F028 01495021 */ addu $t2, $t2, $t1
/* 03FC2C 8003F02C 000A5040 */ sll $t2, $t2, 1
/* 03FC30 8003F030 448A3000 */ mtc1 $t2, $f6
/* 03FC34 8003F034 14400002 */ bnez $v0, .L8003F040
/* 03FC38 8003F038 00000000 */ nop
/* 03FC3C 8003F03C 0007000D */ break 7
.L8003F040:
/* 03FC40 8003F040 2401FFFF */ li $at, -1
/* 03FC44 8003F044 14410004 */ bne $v0, $at, .L8003F058
/* 03FC48 8003F048 3C018000 */ lui $at, 0x8000
/* 03FC4C 8003F04C 15010002 */ bne $t0, $at, .L8003F058
/* 03FC50 8003F050 00000000 */ nop
/* 03FC54 8003F054 0006000D */ break 6
.L8003F058:
/* 03FC58 8003F058 46803220 */ cvt.s.w $f8, $f6
/* 03FC5C 8003F05C E6280000 */ swc1 $f8, ($s1)
/* 03FC60 8003F060 860B00C4 */ lh $t3, 0xc4($s0)
/* 03FC64 8003F064 0162001A */ div $zero, $t3, $v0
/* 03FC68 8003F068 00006012 */ mflo $t4
/* 03FC6C 8003F06C 000C6823 */ negu $t5, $t4
/* 03FC70 8003F070 000D7900 */ sll $t7, $t5, 4
/* 03FC74 8003F074 01ED7823 */ subu $t7, $t7, $t5
/* 03FC78 8003F078 000F7880 */ sll $t7, $t7, 2
/* 03FC7C 8003F07C 448F9000 */ mtc1 $t7, $f18
/* 03FC80 8003F080 14400002 */ bnez $v0, .L8003F08C
/* 03FC84 8003F084 00000000 */ nop
/* 03FC88 8003F088 0007000D */ break 7
.L8003F08C:
/* 03FC8C 8003F08C 2401FFFF */ li $at, -1
/* 03FC90 8003F090 14410004 */ bne $v0, $at, .L8003F0A4
/* 03FC94 8003F094 3C018000 */ lui $at, 0x8000
/* 03FC98 8003F098 15610002 */ bne $t3, $at, .L8003F0A4
/* 03FC9C 8003F09C 00000000 */ nop
/* 03FCA0 8003F0A0 0006000D */ break 6
.L8003F0A4:
/* 03FCA4 8003F0A4 46809420 */ cvt.s.w $f16, $f18
/* 03FCA8 8003F0A8 10000019 */ b .L8003F110
/* 03FCAC 8003F0AC E6300008 */ swc1 $f16, 8($s1)
/* 03FCB0 8003F0B0 44802000 */ mtc1 $zero, $f4
.L8003F0B4:
/* 03FCB4 8003F0B4 240200B6 */ li $v0, 182
/* 03FCB8 8003F0B8 E6240000 */ swc1 $f4, ($s1)
/* 03FCBC 8003F0BC 861800C4 */ lh $t8, 0xc4($s0)
/* 03FCC0 8003F0C0 0302001A */ div $zero, $t8, $v0
/* 03FCC4 8003F0C4 0000C812 */ mflo $t9
/* 03FCC8 8003F0C8 00197023 */ negu $t6, $t9
/* 03FCCC 8003F0CC 000E4080 */ sll $t0, $t6, 2
/* 03FCD0 8003F0D0 010E4023 */ subu $t0, $t0, $t6
/* 03FCD4 8003F0D4 000840C0 */ sll $t0, $t0, 3
/* 03FCD8 8003F0D8 010E4021 */ addu $t0, $t0, $t6
/* 03FCDC 8003F0DC 00084040 */ sll $t0, $t0, 1
/* 03FCE0 8003F0E0 44885000 */ mtc1 $t0, $f10
/* 03FCE4 8003F0E4 14400002 */ bnez $v0, .L8003F0F0
/* 03FCE8 8003F0E8 00000000 */ nop
/* 03FCEC 8003F0EC 0007000D */ break 7
.L8003F0F0:
/* 03FCF0 8003F0F0 2401FFFF */ li $at, -1
/* 03FCF4 8003F0F4 14410004 */ bne $v0, $at, .L8003F108
/* 03FCF8 8003F0F8 3C018000 */ lui $at, 0x8000
/* 03FCFC 8003F0FC 17010002 */ bne $t8, $at, .L8003F108
/* 03FD00 8003F100 00000000 */ nop
/* 03FD04 8003F104 0006000D */ break 6
.L8003F108:
/* 03FD08 8003F108 468051A0 */ cvt.s.w $f6, $f10
/* 03FD0C 8003F10C E6260008 */ swc1 $f6, 8($s1)
.L8003F110:
/* 03FD10 8003F110 44804000 */ mtc1 $zero, $f8
.L8003F114:
/* 03FD14 8003F114 02202025 */ move $a0, $s1
/* 03FD18 8003F118 26050174 */ addiu $a1, $s0, 0x174
/* 03FD1C 8003F11C 0C0AD8EE */ jal func_802B63B8
/* 03FD20 8003F120 E6280004 */ swc1 $f8, 4($s1)
/* 03FD24 8003F124 8FBF0024 */ lw $ra, 0x24($sp)
/* 03FD28 8003F128 8FB0001C */ lw $s0, 0x1c($sp)
/* 03FD2C 8003F12C 8FB10020 */ lw $s1, 0x20($sp)
/* 03FD30 8003F130 03E00008 */ jr $ra
/* 03FD34 8003F134 27BD0028 */ addiu $sp, $sp, 0x28