papermario/asm/nonmatchings/code_891b0_len_fb0/func_800EFE2C.s
2021-01-11 21:40:52 +09:00

281 lines
14 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_800EFE2C
/* 892DC 800EFE2C 27BDFFC8 */ addiu $sp, $sp, -0x38
/* 892E0 800EFE30 3C038007 */ lui $v1, %hi(gGameStatusPtr)
/* 892E4 800EFE34 8C63419C */ lw $v1, %lo(gGameStatusPtr)($v1)
/* 892E8 800EFE38 AFB00030 */ sw $s0, 0x30($sp)
/* 892EC 800EFE3C 3C108011 */ lui $s0, %hi(gPlayerStatus)
/* 892F0 800EFE40 2610EFC8 */ addiu $s0, $s0, %lo(gPlayerStatus)
/* 892F4 800EFE44 AFBF0034 */ sw $ra, 0x34($sp)
/* 892F8 800EFE48 84620086 */ lh $v0, 0x86($v1)
/* 892FC 800EFE4C 24080005 */ addiu $t0, $zero, 5
/* 89300 800EFE50 14480004 */ bne $v0, $t0, .L800EFE64
/* 89304 800EFE54 0000282D */ daddu $a1, $zero, $zero
/* 89308 800EFE58 8462008C */ lh $v0, 0x8c($v1)
/* 8930C 800EFE5C 38420002 */ xori $v0, $v0, 2
/* 89310 800EFE60 2C450001 */ sltiu $a1, $v0, 1
.L800EFE64:
/* 89314 800EFE64 820300B4 */ lb $v1, 0xb4($s0)
/* 89318 800EFE68 2402000A */ addiu $v0, $zero, 0xa
/* 8931C 800EFE6C 14620020 */ bne $v1, $v0, .L800EFEF0
/* 89320 800EFE70 2402000E */ addiu $v0, $zero, 0xe
/* 89324 800EFE74 8E020000 */ lw $v0, ($s0)
/* 89328 800EFE78 0441001D */ bgez $v0, .L800EFEF0
/* 8932C 800EFE7C 2402000E */ addiu $v0, $zero, 0xe
/* 89330 800EFE80 3C028011 */ lui $v0, %hi(D_8010CFF4)
/* 89334 800EFE84 8C42CFF4 */ lw $v0, %lo(D_8010CFF4)($v0)
/* 89338 800EFE88 2842000A */ slti $v0, $v0, 0xa
/* 8933C 800EFE8C 14400018 */ bnez $v0, .L800EFEF0
/* 89340 800EFE90 2402000E */ addiu $v0, $zero, 0xe
/* 89344 800EFE94 C6040028 */ lwc1 $f4, 0x28($s0)
/* 89348 800EFE98 C602002C */ lwc1 $f2, 0x2c($s0)
/* 8934C 800EFE9C 44800000 */ mtc1 $zero, $f0
/* 89350 800EFEA0 C6060030 */ lwc1 $f6, 0x30($s0)
/* 89354 800EFEA4 10A00020 */ beqz $a1, .L800EFF28
/* 89358 800EFEA8 46001080 */ add.s $f2, $f2, $f0
/* 8935C 800EFEAC 24040003 */ addiu $a0, $zero, 3
/* 89360 800EFEB0 44052000 */ mfc1 $a1, $f4
/* 89364 800EFEB4 44061000 */ mfc1 $a2, $f2
/* 89368 800EFEB8 44073000 */ mfc1 $a3, $f6
/* 8936C 800EFEBC 3C014150 */ lui $at, 0x4150
/* 89370 800EFEC0 44810000 */ mtc1 $at, $f0
/* 89374 800EFEC4 3C014120 */ lui $at, 0x4120
/* 89378 800EFEC8 44811000 */ mtc1 $at, $f2
/* 8937C 800EFECC 3C013F80 */ lui $at, 0x3f80
/* 89380 800EFED0 44812000 */ mtc1 $at, $f4
/* 89384 800EFED4 2402001E */ addiu $v0, $zero, 0x1e
/* 89388 800EFED8 AFA8001C */ sw $t0, 0x1c($sp)
/* 8938C 800EFEDC AFA20020 */ sw $v0, 0x20($sp)
/* 89390 800EFEE0 E7A00010 */ swc1 $f0, 0x10($sp)
/* 89394 800EFEE4 E7A20014 */ swc1 $f2, 0x14($sp)
/* 89398 800EFEE8 0803C08C */ j .L800F0230
/* 8939C 800EFEEC E7A40018 */ swc1 $f4, 0x18($sp)
.L800EFEF0:
/* 893A0 800EFEF0 10620003 */ beq $v1, $v0, .L800EFF00
/* 893A4 800EFEF4 24020010 */ addiu $v0, $zero, 0x10
/* 893A8 800EFEF8 14620029 */ bne $v1, $v0, .L800EFFA0
/* 893AC 800EFEFC 00000000 */ nop
.L800EFF00:
/* 893B0 800EFF00 8E020000 */ lw $v0, ($s0)
/* 893B4 800EFF04 30420400 */ andi $v0, $v0, 0x400
/* 893B8 800EFF08 10400025 */ beqz $v0, .L800EFFA0
/* 893BC 800EFF0C 00000000 */ nop
/* 893C0 800EFF10 C6040028 */ lwc1 $f4, 0x28($s0)
/* 893C4 800EFF14 C602002C */ lwc1 $f2, 0x2c($s0)
/* 893C8 800EFF18 44800000 */ mtc1 $zero, $f0
/* 893CC 800EFF1C C6060030 */ lwc1 $f6, 0x30($s0)
/* 893D0 800EFF20 14A0000B */ bnez $a1, .L800EFF50
/* 893D4 800EFF24 46001080 */ add.s $f2, $f2, $f0
.L800EFF28:
/* 893D8 800EFF28 44052000 */ mfc1 $a1, $f4
/* 893DC 800EFF2C 44061000 */ mfc1 $a2, $f2
/* 893E0 800EFF30 44073000 */ mfc1 $a3, $f6
/* 893E4 800EFF34 3C018011 */ lui $at, %hi(D_80109484)
/* 893E8 800EFF38 C4209484 */ lwc1 $f0, %lo(D_80109484)($at)
/* 893EC 800EFF3C 0000202D */ daddu $a0, $zero, $zero
/* 893F0 800EFF40 0C01BEB4 */ jal fx_walk_large
/* 893F4 800EFF44 E7A00010 */ swc1 $f0, 0x10($sp)
/* 893F8 800EFF48 0803C08E */ j .L800F0238
/* 893FC 800EFF4C 00000000 */ nop
.L800EFF50:
/* 89400 800EFF50 24040003 */ addiu $a0, $zero, 3
/* 89404 800EFF54 44052000 */ mfc1 $a1, $f4
/* 89408 800EFF58 44061000 */ mfc1 $a2, $f2
/* 8940C 800EFF5C 44073000 */ mfc1 $a3, $f6
/* 89410 800EFF60 24020005 */ addiu $v0, $zero, 5
/* 89414 800EFF64 AFA2001C */ sw $v0, 0x1c($sp)
/* 89418 800EFF68 24020028 */ addiu $v0, $zero, 0x28
/* 8941C 800EFF6C AFA20020 */ sw $v0, 0x20($sp)
/* 89420 800EFF70 860200B2 */ lh $v0, 0xb2($s0)
/* 89424 800EFF74 3C014120 */ lui $at, 0x4120
/* 89428 800EFF78 44811000 */ mtc1 $at, $f2
/* 8942C 800EFF7C 3C013F80 */ lui $at, 0x3f80
/* 89430 800EFF80 44812000 */ mtc1 $at, $f4
/* 89434 800EFF84 44820000 */ mtc1 $v0, $f0
/* 89438 800EFF88 00000000 */ nop
/* 8943C 800EFF8C 46800020 */ cvt.s.w $f0, $f0
/* 89440 800EFF90 E7A00010 */ swc1 $f0, 0x10($sp)
/* 89444 800EFF94 E7A20014 */ swc1 $f2, 0x14($sp)
/* 89448 800EFF98 0803C08C */ j .L800F0230
/* 8944C 800EFF9C E7A40018 */ swc1 $f4, 0x18($sp)
.L800EFFA0:
/* 89450 800EFFA0 820300B4 */ lb $v1, 0xb4($s0)
/* 89454 800EFFA4 2402001A */ addiu $v0, $zero, 0x1a
/* 89458 800EFFA8 14620029 */ bne $v1, $v0, .L800F0050
/* 8945C 800EFFAC 24020002 */ addiu $v0, $zero, 2
/* 89460 800EFFB0 C6020054 */ lwc1 $f2, 0x54($s0)
/* 89464 800EFFB4 44800000 */ mtc1 $zero, $f0
/* 89468 800EFFB8 00000000 */ nop
/* 8946C 800EFFBC 46001032 */ c.eq.s $f2, $f0
/* 89470 800EFFC0 00000000 */ nop
/* 89474 800EFFC4 45010022 */ bc1t .L800F0050
/* 89478 800EFFC8 00000000 */ nop
/* 8947C 800EFFCC 3C048011 */ lui $a0, %hi(D_80109488)
/* 89480 800EFFD0 24849488 */ addiu $a0, $a0, %lo(D_80109488)
/* 89484 800EFFD4 94820000 */ lhu $v0, ($a0)
/* 89488 800EFFD8 24430001 */ addiu $v1, $v0, 1
/* 8948C 800EFFDC 00021400 */ sll $v0, $v0, 0x10
/* 89490 800EFFE0 00021403 */ sra $v0, $v0, 0x10
/* 89494 800EFFE4 28420004 */ slti $v0, $v0, 4
/* 89498 800EFFE8 14400093 */ bnez $v0, .L800F0238
/* 8949C 800EFFEC A4830000 */ sh $v1, ($a0)
/* 894A0 800EFFF0 24020002 */ addiu $v0, $zero, 2
/* 894A4 800EFFF4 10A0002C */ beqz $a1, .L800F00A8
/* 894A8 800EFFF8 A4820000 */ sh $v0, ($a0)
/* 894AC 800EFFFC C60C0080 */ lwc1 $f12, 0x80($s0)
/* 894B0 800F0000 0C00A6C9 */ jal clamp_angle
/* 894B4 800F0004 00000000 */ nop
/* 894B8 800F0008 3C0140C9 */ lui $at, 0x40c9
/* 894BC 800F000C 34210FD0 */ ori $at, $at, 0xfd0
/* 894C0 800F0010 44811000 */ mtc1 $at, $f2
/* 894C4 800F0014 00000000 */ nop
/* 894C8 800F0018 46020002 */ mul.s $f0, $f0, $f2
/* 894CC 800F001C 00000000 */ nop
/* 894D0 800F0020 27A50028 */ addiu $a1, $sp, 0x28
/* 894D4 800F0024 3C0143B4 */ lui $at, 0x43b4
/* 894D8 800F0028 44816000 */ mtc1 $at, $f12
/* 894DC 800F002C 27A6002C */ addiu $a2, $sp, 0x2c
/* 894E0 800F0030 0C00A82D */ jal sin_cos_rad
/* 894E4 800F0034 460C0303 */ div.s $f12, $f0, $f12
/* 894E8 800F0038 860200B2 */ lh $v0, 0xb2($s0)
/* 894EC 800F003C C7A40028 */ lwc1 $f4, 0x28($sp)
/* 894F0 800F0040 44823000 */ mtc1 $v0, $f6
/* 894F4 800F0044 00000000 */ nop
/* 894F8 800F0048 0803C06D */ j .L800F01B4
/* 894FC 800F004C 468031A0 */ cvt.s.w $f6, $f6
.L800F0050:
/* 89500 800F0050 1062000A */ beq $v1, $v0, .L800F007C
/* 89504 800F0054 3C02FF00 */ lui $v0, 0xff00
/* 89508 800F0058 8E0300B4 */ lw $v1, 0xb4($s0)
/* 8950C 800F005C 3442FF00 */ ori $v0, $v0, 0xff00
/* 89510 800F0060 00621824 */ and $v1, $v1, $v0
/* 89514 800F0064 3C021A00 */ lui $v0, 0x1a00
/* 89518 800F0068 10620004 */ beq $v1, $v0, .L800F007C
/* 8951C 800F006C 24020004 */ addiu $v0, $zero, 4
/* 89520 800F0070 3C018011 */ lui $at, %hi(D_80109488)
/* 89524 800F0074 0803C08E */ j .L800F0238
/* 89528 800F0078 A4229488 */ sh $v0, %lo(D_80109488)($at)
.L800F007C:
/* 8952C 800F007C 3C048011 */ lui $a0, %hi(D_80109488)
/* 89530 800F0080 24849488 */ addiu $a0, $a0, %lo(D_80109488)
/* 89534 800F0084 94820000 */ lhu $v0, ($a0)
/* 89538 800F0088 24430001 */ addiu $v1, $v0, 1
/* 8953C 800F008C 00021400 */ sll $v0, $v0, 0x10
/* 89540 800F0090 00021403 */ sra $v0, $v0, 0x10
/* 89544 800F0094 28420004 */ slti $v0, $v0, 4
/* 89548 800F0098 14400067 */ bnez $v0, .L800F0238
/* 8954C 800F009C A4830000 */ sh $v1, ($a0)
/* 89550 800F00A0 14A00034 */ bnez $a1, .L800F0174
/* 89554 800F00A4 A4800000 */ sh $zero, ($a0)
.L800F00A8:
/* 89558 800F00A8 C60C0084 */ lwc1 $f12, 0x84($s0)
/* 8955C 800F00AC 0C00A6C9 */ jal clamp_angle
/* 89560 800F00B0 46006307 */ neg.s $f12, $f12
/* 89564 800F00B4 3C0140C9 */ lui $at, 0x40c9
/* 89568 800F00B8 34210FD0 */ ori $at, $at, 0xfd0
/* 8956C 800F00BC 44811000 */ mtc1 $at, $f2
/* 89570 800F00C0 00000000 */ nop
/* 89574 800F00C4 46020002 */ mul.s $f0, $f0, $f2
/* 89578 800F00C8 00000000 */ nop
/* 8957C 800F00CC 27A50028 */ addiu $a1, $sp, 0x28
/* 89580 800F00D0 3C0143B4 */ lui $at, 0x43b4
/* 89584 800F00D4 44816000 */ mtc1 $at, $f12
/* 89588 800F00D8 27A6002C */ addiu $a2, $sp, 0x2c
/* 8958C 800F00DC 0C00A82D */ jal sin_cos_rad
/* 89590 800F00E0 460C0303 */ div.s $f12, $f0, $f12
/* 89594 800F00E4 860200B2 */ lh $v0, 0xb2($s0)
/* 89598 800F00E8 C7AA0028 */ lwc1 $f10, 0x28($sp)
/* 8959C 800F00EC 44821000 */ mtc1 $v0, $f2
/* 895A0 800F00F0 00000000 */ nop
/* 895A4 800F00F4 468010A0 */ cvt.s.w $f2, $f2
/* 895A8 800F00F8 460A1182 */ mul.s $f6, $f2, $f10
/* 895AC 800F00FC 00000000 */ nop
/* 895B0 800F0100 C7A8002C */ lwc1 $f8, 0x2c($sp)
/* 895B4 800F0104 46081082 */ mul.s $f2, $f2, $f8
/* 895B8 800F0108 00000000 */ nop
/* 895BC 800F010C 3C013E4C */ lui $at, 0x3e4c
/* 895C0 800F0110 3421CCCD */ ori $at, $at, 0xcccd
/* 895C4 800F0114 44810000 */ mtc1 $at, $f0
/* 895C8 800F0118 00000000 */ nop
/* 895CC 800F011C 46003182 */ mul.s $f6, $f6, $f0
/* 895D0 800F0120 00000000 */ nop
/* 895D4 800F0124 46001082 */ mul.s $f2, $f2, $f0
/* 895D8 800F0128 00000000 */ nop
/* 895DC 800F012C C604002C */ lwc1 $f4, 0x2c($s0)
/* 895E0 800F0130 3C013FC0 */ lui $at, 0x3fc0
/* 895E4 800F0134 44810000 */ mtc1 $at, $f0
/* 895E8 800F0138 00000000 */ nop
/* 895EC 800F013C 46002100 */ add.s $f4, $f4, $f0
/* 895F0 800F0140 C6000028 */ lwc1 $f0, 0x28($s0)
/* 895F4 800F0144 46060000 */ add.s $f0, $f0, $f6
/* 895F8 800F0148 44050000 */ mfc1 $a1, $f0
/* 895FC 800F014C C6000030 */ lwc1 $f0, 0x30($s0)
/* 89600 800F0150 46020000 */ add.s $f0, $f0, $f2
/* 89604 800F0154 44062000 */ mfc1 $a2, $f4
/* 89608 800F0158 44070000 */ mfc1 $a3, $f0
/* 8960C 800F015C 0000202D */ daddu $a0, $zero, $zero
/* 89610 800F0160 E7AA0010 */ swc1 $f10, 0x10($sp)
/* 89614 800F0164 0C01BECC */ jal fx_walk_normal
/* 89618 800F0168 E7A80014 */ swc1 $f8, 0x14($sp)
/* 8961C 800F016C 0803C08E */ j .L800F0238
/* 89620 800F0170 00000000 */ nop
.L800F0174:
/* 89624 800F0174 0C00A6C9 */ jal clamp_angle
/* 89628 800F0178 C60C0080 */ lwc1 $f12, 0x80($s0)
/* 8962C 800F017C 3C0140C9 */ lui $at, 0x40c9
/* 89630 800F0180 34210FD0 */ ori $at, $at, 0xfd0
/* 89634 800F0184 44811000 */ mtc1 $at, $f2
/* 89638 800F0188 00000000 */ nop
/* 8963C 800F018C 46020002 */ mul.s $f0, $f0, $f2
/* 89640 800F0190 00000000 */ nop
/* 89644 800F0194 27A50028 */ addiu $a1, $sp, 0x28
/* 89648 800F0198 3C0143B4 */ lui $at, 0x43b4
/* 8964C 800F019C 44816000 */ mtc1 $at, $f12
/* 89650 800F01A0 27A6002C */ addiu $a2, $sp, 0x2c
/* 89654 800F01A4 0C00A82D */ jal sin_cos_rad
/* 89658 800F01A8 460C0303 */ div.s $f12, $f0, $f12
/* 8965C 800F01AC C6060054 */ lwc1 $f6, 0x54($s0)
/* 89660 800F01B0 C7A40028 */ lwc1 $f4, 0x28($sp)
.L800F01B4:
/* 89664 800F01B4 46043102 */ mul.s $f4, $f6, $f4
/* 89668 800F01B8 00000000 */ nop
/* 8966C 800F01BC C602002C */ lwc1 $f2, 0x2c($s0)
/* 89670 800F01C0 3C013FC0 */ lui $at, 0x3fc0
/* 89674 800F01C4 44810000 */ mtc1 $at, $f0
/* 89678 800F01C8 00000000 */ nop
/* 8967C 800F01CC 46001080 */ add.s $f2, $f2, $f0
/* 89680 800F01D0 C7A0002C */ lwc1 $f0, 0x2c($sp)
/* 89684 800F01D4 24020005 */ addiu $v0, $zero, 5
/* 89688 800F01D8 AFA2001C */ sw $v0, 0x1c($sp)
/* 8968C 800F01DC 46003182 */ mul.s $f6, $f6, $f0
/* 89690 800F01E0 00000000 */ nop
/* 89694 800F01E4 3C014150 */ lui $at, 0x4150
/* 89698 800F01E8 44810000 */ mtc1 $at, $f0
/* 8969C 800F01EC 44061000 */ mfc1 $a2, $f2
/* 896A0 800F01F0 C6020028 */ lwc1 $f2, 0x28($s0)
/* 896A4 800F01F4 2402001E */ addiu $v0, $zero, 0x1e
/* 896A8 800F01F8 AFA20020 */ sw $v0, 0x20($sp)
/* 896AC 800F01FC E7A00010 */ swc1 $f0, 0x10($sp)
/* 896B0 800F0200 46041080 */ add.s $f2, $f2, $f4
/* 896B4 800F0204 C6000030 */ lwc1 $f0, 0x30($s0)
/* 896B8 800F0208 3C013F80 */ lui $at, 0x3f80
/* 896BC 800F020C 44812000 */ mtc1 $at, $f4
/* 896C0 800F0210 46060000 */ add.s $f0, $f0, $f6
/* 896C4 800F0214 44051000 */ mfc1 $a1, $f2
/* 896C8 800F0218 3C014120 */ lui $at, 0x4120
/* 896CC 800F021C 44811000 */ mtc1 $at, $f2
/* 896D0 800F0220 44070000 */ mfc1 $a3, $f0
/* 896D4 800F0224 24040003 */ addiu $a0, $zero, 3
/* 896D8 800F0228 E7A40018 */ swc1 $f4, 0x18($sp)
/* 896DC 800F022C E7A20014 */ swc1 $f2, 0x14($sp)
.L800F0230:
/* 896E0 800F0230 0C01C8D4 */ jal func_80072350
/* 896E4 800F0234 00000000 */ nop
.L800F0238:
/* 896E8 800F0238 8FBF0034 */ lw $ra, 0x34($sp)
/* 896EC 800F023C 8FB00030 */ lw $s0, 0x30($sp)
/* 896F0 800F0240 03E00008 */ jr $ra
/* 896F4 800F0244 27BD0038 */ addiu $sp, $sp, 0x38