papermario/asm/nonmatchings/code_759b0_len_61b0/func_800DCB7C.s
2020-09-23 23:16:13 -04:00

199 lines
10 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_800DCB7C
/* 7602C 800DCB7C 27BDFF80 */ addiu $sp, $sp, -0x80
/* 76030 800DCB80 AFB40048 */ sw $s4, 0x48($sp)
/* 76034 800DCB84 8FB40090 */ lw $s4, 0x90($sp)
/* 76038 800DCB88 AFBF004C */ sw $ra, 0x4c($sp)
/* 7603C 800DCB8C AFB30044 */ sw $s3, 0x44($sp)
/* 76040 800DCB90 AFB20040 */ sw $s2, 0x40($sp)
/* 76044 800DCB94 AFB1003C */ sw $s1, 0x3c($sp)
/* 76048 800DCB98 AFB00038 */ sw $s0, 0x38($sp)
/* 7604C 800DCB9C F7BE0078 */ sdc1 $f30, 0x78($sp)
/* 76050 800DCBA0 F7BC0070 */ sdc1 $f28, 0x70($sp)
/* 76054 800DCBA4 F7BA0068 */ sdc1 $f26, 0x68($sp)
/* 76058 800DCBA8 F7B80060 */ sdc1 $f24, 0x60($sp)
/* 7605C 800DCBAC F7B60058 */ sdc1 $f22, 0x58($sp)
/* 76060 800DCBB0 F7B40050 */ sdc1 $f20, 0x50($sp)
/* 76064 800DCBB4 C4A60000 */ lwc1 $f6, ($a1)
/* 76068 800DCBB8 00C0882D */ daddu $s1, $a2, $zero
/* 7606C 800DCBBC E7A60028 */ swc1 $f6, 0x28($sp)
/* 76070 800DCBC0 C63E0000 */ lwc1 $f30, ($s1)
/* 76074 800DCBC4 C4E60000 */ lwc1 $f6, ($a3)
/* 76078 800DCBC8 3C128011 */ lui $s2, 0x8011
/* 7607C 800DCBCC 2652C970 */ addiu $s2, $s2, -0x3690
/* 76080 800DCBD0 E7A6002C */ swc1 $f6, 0x2c($sp)
/* 76084 800DCBD4 4600F18D */ trunc.w.s $f6, $f30
/* 76088 800DCBD8 E6460000 */ swc1 $f6, ($s2)
/* 7608C 800DCBDC C6200000 */ lwc1 $f0, ($s1)
/* 76090 800DCBE0 4600018D */ trunc.w.s $f6, $f0
/* 76094 800DCBE4 3C018011 */ lui $at, 0x8011
/* 76098 800DCBE8 E426C94C */ swc1 $f6, -0x36b4($at)
/* 7609C 800DCBEC C6200000 */ lwc1 $f0, ($s1)
/* 760A0 800DCBF0 0080982D */ daddu $s3, $a0, $zero
/* 760A4 800DCBF4 4600018D */ trunc.w.s $f6, $f0
/* 760A8 800DCBF8 3C018011 */ lui $at, 0x8011
/* 760AC 800DCBFC E426C974 */ swc1 $f6, -0x368c($at)
/* 760B0 800DCC00 C6800000 */ lwc1 $f0, ($s4)
/* 760B4 800DCC04 44806000 */ mtc1 $zero, $f12
/* 760B8 800DCC08 0C00A6C9 */ jal clamp_angle
/* 760BC 800DCC0C 46000605 */ abs.s $f24, $f0
/* 760C0 800DCC10 3C0140C9 */ lui $at, 0x40c9
/* 760C4 800DCC14 34210FD0 */ ori $at, $at, 0xfd0
/* 760C8 800DCC18 44811000 */ mtc1 $at, $f2
/* 760CC 800DCC1C 00000000 */ nop
/* 760D0 800DCC20 46020002 */ mul.s $f0, $f0, $f2
/* 760D4 800DCC24 00000000 */ nop
/* 760D8 800DCC28 3C0143B4 */ lui $at, 0x43b4
/* 760DC 800DCC2C 44811000 */ mtc1 $at, $f2
/* 760E0 800DCC30 00000000 */ nop
/* 760E4 800DCC34 46020503 */ div.s $f20, $f0, $f2
/* 760E8 800DCC38 0C00A85B */ jal sin_rad
/* 760EC 800DCC3C 4600A306 */ mov.s $f12, $f20
/* 760F0 800DCC40 46000586 */ mov.s $f22, $f0
/* 760F4 800DCC44 0C00A874 */ jal cos_rad
/* 760F8 800DCC48 4600A306 */ mov.s $f12, $f20
/* 760FC 800DCC4C 3C014120 */ lui $at, 0x4120
/* 76100 800DCC50 44813000 */ mtc1 $at, $f6
/* 76104 800DCC54 00000000 */ nop
/* 76108 800DCC58 4606B102 */ mul.s $f4, $f22, $f6
/* 7610C 800DCC5C 00000000 */ nop
/* 76110 800DCC60 0000802D */ daddu $s0, $zero, $zero
/* 76114 800DCC64 0260202D */ daddu $a0, $s3, $zero
/* 76118 800DCC68 27A50018 */ addiu $a1, $sp, 0x18
/* 7611C 800DCC6C 46003087 */ neg.s $f2, $f6
/* 76120 800DCC70 46020002 */ mul.s $f0, $f0, $f2
/* 76124 800DCC74 00000000 */ nop
/* 76128 800DCC78 27A6001C */ addiu $a2, $sp, 0x1c
/* 7612C 800DCC7C 27A70020 */ addiu $a3, $sp, 0x20
/* 76130 800DCC80 C7A60028 */ lwc1 $f6, 0x28($sp)
/* 76134 800DCC84 3C01C6FF */ lui $at, 0xc6ff
/* 76138 800DCC88 3421FE00 */ ori $at, $at, 0xfe00
/* 7613C 800DCC8C 4481D000 */ mtc1 $at, $f26
/* 76140 800DCC90 46043080 */ add.s $f2, $f6, $f4
/* 76144 800DCC94 C7A6002C */ lwc1 $f6, 0x2c($sp)
/* 76148 800DCC98 27A20024 */ addiu $v0, $sp, 0x24
/* 7614C 800DCC9C E7BE001C */ swc1 $f30, 0x1c($sp)
/* 76150 800DCCA0 E7B80024 */ swc1 $f24, 0x24($sp)
/* 76154 800DCCA4 46003000 */ add.s $f0, $f6, $f0
/* 76158 800DCCA8 4600D706 */ mov.s $f28, $f26
/* 7615C 800DCCAC E7A20018 */ swc1 $f2, 0x18($sp)
/* 76160 800DCCB0 E7A00020 */ swc1 $f0, 0x20($sp)
/* 76164 800DCCB4 0C037140 */ jal func_800DC500
/* 76168 800DCCB8 AFA20010 */ sw $v0, 0x10($sp)
/* 7616C 800DCCBC 0440000F */ bltz $v0, .L800DCCFC
/* 76170 800DCCC0 E7B80030 */ swc1 $f24, 0x30($sp)
/* 76174 800DCCC4 C7A00024 */ lwc1 $f0, 0x24($sp)
/* 76178 800DCCC8 4618003E */ c.le.s $f0, $f24
/* 7617C 800DCCCC 00000000 */ nop
/* 76180 800DCCD0 4500000A */ bc1f .L800DCCFC
/* 76184 800DCCD4 00000000 */ nop
/* 76188 800DCCD8 46000606 */ mov.s $f24, $f0
/* 7618C 800DCCDC C7BA001C */ lwc1 $f26, 0x1c($sp)
/* 76190 800DCCE0 24100001 */ addiu $s0, $zero, 1
/* 76194 800DCCE4 3C018011 */ lui $at, 0x8011
/* 76198 800DCCE8 AC22C978 */ sw $v0, -0x3688($at)
/* 7619C 800DCCEC 3C018011 */ lui $at, 0x8011
/* 761A0 800DCCF0 AC22C98C */ sw $v0, -0x3674($at)
/* 761A4 800DCCF4 4600D18D */ trunc.w.s $f6, $f26
/* 761A8 800DCCF8 E6460000 */ swc1 $f6, ($s2)
.L800DCCFC:
/* 761AC 800DCCFC 3C014334 */ lui $at, 0x4334
/* 761B0 800DCD00 44816000 */ mtc1 $at, $f12
/* 761B4 800DCD04 44803000 */ mtc1 $zero, $f6
/* 761B8 800DCD08 0C00A6C9 */ jal clamp_angle
/* 761BC 800DCD0C 460C3300 */ add.s $f12, $f6, $f12
/* 761C0 800DCD10 3C0140C9 */ lui $at, 0x40c9
/* 761C4 800DCD14 34210FD0 */ ori $at, $at, 0xfd0
/* 761C8 800DCD18 44811000 */ mtc1 $at, $f2
/* 761CC 800DCD1C 00000000 */ nop
/* 761D0 800DCD20 46020002 */ mul.s $f0, $f0, $f2
/* 761D4 800DCD24 00000000 */ nop
/* 761D8 800DCD28 3C0143B4 */ lui $at, 0x43b4
/* 761DC 800DCD2C 44811000 */ mtc1 $at, $f2
/* 761E0 800DCD30 00000000 */ nop
/* 761E4 800DCD34 46020503 */ div.s $f20, $f0, $f2
/* 761E8 800DCD38 0C00A85B */ jal sin_rad
/* 761EC 800DCD3C 4600A306 */ mov.s $f12, $f20
/* 761F0 800DCD40 46000586 */ mov.s $f22, $f0
/* 761F4 800DCD44 0C00A874 */ jal cos_rad
/* 761F8 800DCD48 4600A306 */ mov.s $f12, $f20
/* 761FC 800DCD4C 3C014120 */ lui $at, 0x4120
/* 76200 800DCD50 44813000 */ mtc1 $at, $f6
/* 76204 800DCD54 00000000 */ nop
/* 76208 800DCD58 46163102 */ mul.s $f4, $f6, $f22
/* 7620C 800DCD5C 00000000 */ nop
/* 76210 800DCD60 46003087 */ neg.s $f2, $f6
/* 76214 800DCD64 46001002 */ mul.s $f0, $f2, $f0
/* 76218 800DCD68 00000000 */ nop
/* 7621C 800DCD6C 0260202D */ daddu $a0, $s3, $zero
/* 76220 800DCD70 27A50018 */ addiu $a1, $sp, 0x18
/* 76224 800DCD74 C7A60028 */ lwc1 $f6, 0x28($sp)
/* 76228 800DCD78 27A6001C */ addiu $a2, $sp, 0x1c
/* 7622C 800DCD7C 46043080 */ add.s $f2, $f6, $f4
/* 76230 800DCD80 C7A6002C */ lwc1 $f6, 0x2c($sp)
/* 76234 800DCD84 27A70020 */ addiu $a3, $sp, 0x20
/* 76238 800DCD88 46003000 */ add.s $f0, $f6, $f0
/* 7623C 800DCD8C C7A60030 */ lwc1 $f6, 0x30($sp)
/* 76240 800DCD90 27A20024 */ addiu $v0, $sp, 0x24
/* 76244 800DCD94 E7BE001C */ swc1 $f30, 0x1c($sp)
/* 76248 800DCD98 E7A60024 */ swc1 $f6, 0x24($sp)
/* 7624C 800DCD9C E7A20018 */ swc1 $f2, 0x18($sp)
/* 76250 800DCDA0 E7A00020 */ swc1 $f0, 0x20($sp)
/* 76254 800DCDA4 0C037140 */ jal func_800DC500
/* 76258 800DCDA8 AFA20010 */ sw $v0, 0x10($sp)
/* 7625C 800DCDAC 04400010 */ bltz $v0, .L800DCDF0
/* 76260 800DCDB0 00000000 */ nop
/* 76264 800DCDB4 C7A00024 */ lwc1 $f0, 0x24($sp)
/* 76268 800DCDB8 4618003E */ c.le.s $f0, $f24
/* 7626C 800DCDBC 00000000 */ nop
/* 76270 800DCDC0 4500000B */ bc1f .L800DCDF0
/* 76274 800DCDC4 00000000 */ nop
/* 76278 800DCDC8 46000606 */ mov.s $f24, $f0
/* 7627C 800DCDCC C7BC001C */ lwc1 $f28, 0x1c($sp)
/* 76280 800DCDD0 24100001 */ addiu $s0, $zero, 1
/* 76284 800DCDD4 3C018011 */ lui $at, 0x8011
/* 76288 800DCDD8 AC22C978 */ sw $v0, -0x3688($at)
/* 7628C 800DCDDC 3C018011 */ lui $at, 0x8011
/* 76290 800DCDE0 AC22C968 */ sw $v0, -0x3698($at)
/* 76294 800DCDE4 4600E18D */ trunc.w.s $f6, $f28
/* 76298 800DCDE8 3C018011 */ lui $at, 0x8011
/* 7629C 800DCDEC E426C94C */ swc1 $f6, -0x36b4($at)
.L800DCDF0:
/* 762A0 800DCDF0 12000011 */ beqz $s0, .L800DCE38
/* 762A4 800DCDF4 0000102D */ daddu $v0, $zero, $zero
/* 762A8 800DCDF8 461CD03C */ c.lt.s $f26, $f28
/* 762AC 800DCDFC 00000000 */ nop
/* 762B0 800DCE00 45020002 */ bc1fl .L800DCE0C
/* 762B4 800DCE04 E63A0000 */ swc1 $f26, ($s1)
/* 762B8 800DCE08 E63C0000 */ swc1 $f28, ($s1)
.L800DCE0C:
/* 762BC 800DCE0C C6200000 */ lwc1 $f0, ($s1)
/* 762C0 800DCE10 3C01C6FF */ lui $at, 0xc6ff
/* 762C4 800DCE14 3421FE00 */ ori $at, $at, 0xfe00
/* 762C8 800DCE18 44813000 */ mtc1 $at, $f6
/* 762CC 800DCE1C 00000000 */ nop
/* 762D0 800DCE20 4606003C */ c.lt.s $f0, $f6
/* 762D4 800DCE24 00000000 */ nop
/* 762D8 800DCE28 45030001 */ bc1tl .L800DCE30
/* 762DC 800DCE2C E6260000 */ swc1 $f6, ($s1)
.L800DCE30:
/* 762E0 800DCE30 E6980000 */ swc1 $f24, ($s4)
/* 762E4 800DCE34 24020001 */ addiu $v0, $zero, 1
.L800DCE38:
/* 762E8 800DCE38 8FBF004C */ lw $ra, 0x4c($sp)
/* 762EC 800DCE3C 8FB40048 */ lw $s4, 0x48($sp)
/* 762F0 800DCE40 8FB30044 */ lw $s3, 0x44($sp)
/* 762F4 800DCE44 8FB20040 */ lw $s2, 0x40($sp)
/* 762F8 800DCE48 8FB1003C */ lw $s1, 0x3c($sp)
/* 762FC 800DCE4C 8FB00038 */ lw $s0, 0x38($sp)
/* 76300 800DCE50 D7BE0078 */ ldc1 $f30, 0x78($sp)
/* 76304 800DCE54 D7BC0070 */ ldc1 $f28, 0x70($sp)
/* 76308 800DCE58 D7BA0068 */ ldc1 $f26, 0x68($sp)
/* 7630C 800DCE5C D7B80060 */ ldc1 $f24, 0x60($sp)
/* 76310 800DCE60 D7B60058 */ ldc1 $f22, 0x58($sp)
/* 76314 800DCE64 D7B40050 */ ldc1 $f20, 0x50($sp)
/* 76318 800DCE68 03E00008 */ jr $ra
/* 7631C 800DCE6C 27BD0080 */ addiu $sp, $sp, 0x80