papermario/asm/nonmatchings/code_891b0_len_fb0/func_800F0248.s
Ethan Roseman 51c076bd8e symbols!
2020-09-27 21:13:56 -04:00

155 lines
7.8 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_800F0248
/* 896F8 800F0248 27BDFFB8 */ addiu $sp, $sp, -0x48
/* 896FC 800F024C AFB00020 */ sw $s0, 0x20($sp)
/* 89700 800F0250 3C108011 */ lui $s0, %hi(gPlayerStatus)
/* 89704 800F0254 2610EFC8 */ addiu $s0, $s0, %lo(gPlayerStatus)
/* 89708 800F0258 AFBF0028 */ sw $ra, 0x28($sp)
/* 8970C 800F025C AFB10024 */ sw $s1, 0x24($sp)
/* 89710 800F0260 F7B80040 */ sdc1 $f24, 0x40($sp)
/* 89714 800F0264 F7B60038 */ sdc1 $f22, 0x38($sp)
/* 89718 800F0268 F7B40030 */ sdc1 $f20, 0x30($sp)
/* 8971C 800F026C 820300B4 */ lb $v1, 0xb4($s0)
/* 89720 800F0270 24020003 */ addiu $v0, $zero, 3
/* 89724 800F0274 1462001B */ bne $v1, $v0, .L800F02E4
/* 89728 800F0278 24020001 */ addiu $v0, $zero, 1
/* 8972C 800F027C 860300C0 */ lh $v1, 0xc0($s0)
/* 89730 800F0280 14620018 */ bne $v1, $v0, .L800F02E4
/* 89734 800F0284 24020005 */ addiu $v0, $zero, 5
/* 89738 800F0288 3C118011 */ lui $s1, 0x8011
/* 8973C 800F028C 26319492 */ addiu $s1, $s1, -0x6b6e
/* 89740 800F0290 86230000 */ lh $v1, ($s1)
/* 89744 800F0294 14620013 */ bne $v1, $v0, .L800F02E4
/* 89748 800F0298 00000000 */ nop
/* 8974C 800F029C C60C0028 */ lwc1 $f12, 0x28($s0)
/* 89750 800F02A0 8E060030 */ lw $a2, 0x30($s0)
/* 89754 800F02A4 C600002C */ lwc1 $f0, 0x2c($s0)
/* 89758 800F02A8 3C014160 */ lui $at, 0x4160
/* 8975C 800F02AC 44817000 */ mtc1 $at, $f14
/* 89760 800F02B0 3C108011 */ lui $s0, 0x8011
/* 89764 800F02B4 2610948C */ addiu $s0, $s0, -0x6b74
/* 89768 800F02B8 8E070000 */ lw $a3, ($s0)
/* 8976C 800F02BC 0C01BEE4 */ jal func_8006FB90
/* 89770 800F02C0 460E0380 */ add.s $f14, $f0, $f14
/* 89774 800F02C4 C6000000 */ lwc1 $f0, ($s0)
/* 89778 800F02C8 3C01420C */ lui $at, 0x420c
/* 8977C 800F02CC 44816000 */ mtc1 $at, $f12
/* 89780 800F02D0 0C00A6C9 */ jal clamp_angle
/* 89784 800F02D4 460C0300 */ add.s $f12, $f0, $f12
/* 89788 800F02D8 E6000000 */ swc1 $f0, ($s0)
/* 8978C 800F02DC 0803C11C */ j .L800F0470
/* 89790 800F02E0 A6200000 */ sh $zero, ($s1)
.L800F02E4:
/* 89794 800F02E4 3C038011 */ lui $v1, 0x8011
/* 89798 800F02E8 24639492 */ addiu $v1, $v1, -0x6b6e
/* 8979C 800F02EC 94620000 */ lhu $v0, ($v1)
/* 897A0 800F02F0 24420001 */ addiu $v0, $v0, 1
/* 897A4 800F02F4 A4620000 */ sh $v0, ($v1)
/* 897A8 800F02F8 00021400 */ sll $v0, $v0, 0x10
/* 897AC 800F02FC 00021403 */ sra $v0, $v0, 0x10
/* 897B0 800F0300 28420006 */ slti $v0, $v0, 6
/* 897B4 800F0304 14400002 */ bnez $v0, .L800F0310
/* 897B8 800F0308 24020005 */ addiu $v0, $zero, 5
/* 897BC 800F030C A4620000 */ sh $v0, ($v1)
.L800F0310:
/* 897C0 800F0310 920200B4 */ lbu $v0, 0xb4($s0)
/* 897C4 800F0314 2442FFFF */ addiu $v0, $v0, -1
/* 897C8 800F0318 2C420002 */ sltiu $v0, $v0, 2
/* 897CC 800F031C 1440000A */ bnez $v0, .L800F0348
/* 897D0 800F0320 3C02FF00 */ lui $v0, 0xff00
/* 897D4 800F0324 8E0300B4 */ lw $v1, 0xb4($s0)
/* 897D8 800F0328 3442FF00 */ ori $v0, $v0, 0xff00
/* 897DC 800F032C 00621824 */ and $v1, $v1, $v0
/* 897E0 800F0330 3C021A00 */ lui $v0, 0x1a00
/* 897E4 800F0334 10620004 */ beq $v1, $v0, .L800F0348
/* 897E8 800F0338 00000000 */ nop
/* 897EC 800F033C 3C018011 */ lui $at, 0x8011
/* 897F0 800F0340 0803C11C */ j .L800F0470
/* 897F4 800F0344 A4209490 */ sh $zero, -0x6b70($at)
.L800F0348:
/* 897F8 800F0348 3C048011 */ lui $a0, 0x8011
/* 897FC 800F034C 24849490 */ addiu $a0, $a0, -0x6b70
/* 89800 800F0350 94820000 */ lhu $v0, ($a0)
/* 89804 800F0354 24430001 */ addiu $v1, $v0, 1
/* 89808 800F0358 00021400 */ sll $v0, $v0, 0x10
/* 8980C 800F035C 18400044 */ blez $v0, .L800F0470
/* 89810 800F0360 A4830000 */ sh $v1, ($a0)
/* 89814 800F0364 C60C0084 */ lwc1 $f12, 0x84($s0)
/* 89818 800F0368 A4800000 */ sh $zero, ($a0)
/* 8981C 800F036C 0C00A6C9 */ jal clamp_angle
/* 89820 800F0370 46006307 */ neg.s $f12, $f12
/* 89824 800F0374 3C0140C9 */ lui $at, 0x40c9
/* 89828 800F0378 34210FD0 */ ori $at, $at, 0xfd0
/* 8982C 800F037C 44811000 */ mtc1 $at, $f2
/* 89830 800F0380 00000000 */ nop
/* 89834 800F0384 46020002 */ mul.s $f0, $f0, $f2
/* 89838 800F0388 00000000 */ nop
/* 8983C 800F038C 27A50018 */ addiu $a1, $sp, 0x18
/* 89840 800F0390 3C0143B4 */ lui $at, 0x43b4
/* 89844 800F0394 44816000 */ mtc1 $at, $f12
/* 89848 800F0398 27A6001C */ addiu $a2, $sp, 0x1c
/* 8984C 800F039C 0C00A82D */ jal sin_cos_rad
/* 89850 800F03A0 460C0303 */ div.s $f12, $f0, $f12
/* 89854 800F03A4 860200B2 */ lh $v0, 0xb2($s0)
/* 89858 800F03A8 C7A20018 */ lwc1 $f2, 0x18($sp)
/* 8985C 800F03AC 44822000 */ mtc1 $v0, $f4
/* 89860 800F03B0 00000000 */ nop
/* 89864 800F03B4 46802120 */ cvt.s.w $f4, $f4
/* 89868 800F03B8 46022082 */ mul.s $f2, $f4, $f2
/* 8986C 800F03BC 00000000 */ nop
/* 89870 800F03C0 C7A0001C */ lwc1 $f0, 0x1c($sp)
/* 89874 800F03C4 46002102 */ mul.s $f4, $f4, $f0
/* 89878 800F03C8 00000000 */ nop
/* 8987C 800F03CC 3C01BECC */ lui $at, 0xbecc
/* 89880 800F03D0 3421CCCD */ ori $at, $at, 0xcccd
/* 89884 800F03D4 44810000 */ mtc1 $at, $f0
/* 89888 800F03D8 00000000 */ nop
/* 8988C 800F03DC 46001082 */ mul.s $f2, $f2, $f0
/* 89890 800F03E0 00000000 */ nop
/* 89894 800F03E4 46002102 */ mul.s $f4, $f4, $f0
/* 89898 800F03E8 00000000 */ nop
/* 8989C 800F03EC C6000028 */ lwc1 $f0, 0x28($s0)
/* 898A0 800F03F0 46020600 */ add.s $f24, $f0, $f2
/* 898A4 800F03F4 C6000030 */ lwc1 $f0, 0x30($s0)
/* 898A8 800F03F8 C602002C */ lwc1 $f2, 0x2c($s0)
/* 898AC 800F03FC 46040580 */ add.s $f22, $f0, $f4
/* 898B0 800F0400 3C014178 */ lui $at, 0x4178
/* 898B4 800F0404 44810000 */ mtc1 $at, $f0
/* 898B8 800F0408 2404000A */ addiu $a0, $zero, 0xa
/* 898BC 800F040C 0C00A67F */ jal rand_int
/* 898C0 800F0410 46001500 */ add.s $f20, $f2, $f0
/* 898C4 800F0414 0000202D */ daddu $a0, $zero, $zero
/* 898C8 800F0418 44821000 */ mtc1 $v0, $f2
/* 898CC 800F041C 00000000 */ nop
/* 898D0 800F0420 468010A0 */ cvt.s.w $f2, $f2
/* 898D4 800F0424 C6000084 */ lwc1 $f0, 0x84($s0)
/* 898D8 800F0428 3C108011 */ lui $s0, 0x8011
/* 898DC 800F042C 26109494 */ addiu $s0, $s0, -0x6b6c
/* 898E0 800F0430 4405C000 */ mfc1 $a1, $f24
/* 898E4 800F0434 4407B000 */ mfc1 $a3, $f22
/* 898E8 800F0438 46000007 */ neg.s $f0, $f0
/* 898EC 800F043C 46020000 */ add.s $f0, $f0, $f2
/* 898F0 800F0440 3C0140A0 */ lui $at, 0x40a0
/* 898F4 800F0444 44811000 */ mtc1 $at, $f2
/* 898F8 800F0448 4406A000 */ mfc1 $a2, $f20
/* 898FC 800F044C 46020001 */ sub.s $f0, $f0, $f2
/* 89900 800F0450 C6020000 */ lwc1 $f2, ($s0)
/* 89904 800F0454 468010A0 */ cvt.s.w $f2, $f2
/* 89908 800F0458 E7A20014 */ swc1 $f2, 0x14($sp)
/* 8990C 800F045C 0C01BEFC */ jal func_8006FBF0
/* 89910 800F0460 E7A00010 */ swc1 $f0, 0x10($sp)
/* 89914 800F0464 8E020000 */ lw $v0, ($s0)
/* 89918 800F0468 2C420001 */ sltiu $v0, $v0, 1
/* 8991C 800F046C AE020000 */ sw $v0, ($s0)
.L800F0470:
/* 89920 800F0470 8FBF0028 */ lw $ra, 0x28($sp)
/* 89924 800F0474 8FB10024 */ lw $s1, 0x24($sp)
/* 89928 800F0478 8FB00020 */ lw $s0, 0x20($sp)
/* 8992C 800F047C D7B80040 */ ldc1 $f24, 0x40($sp)
/* 89930 800F0480 D7B60038 */ ldc1 $f22, 0x38($sp)
/* 89934 800F0484 D7B40030 */ ldc1 $f20, 0x30($sp)
/* 89938 800F0488 03E00008 */ jr $ra
/* 8993C 800F048C 27BD0048 */ addiu $sp, $sp, 0x48