papermario/asm/nonmatchings/code_891b0_len_fb0/func_800EFE2C.s
2020-08-12 22:37:16 -04:00

289 lines
13 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_800EFE2C
/* 0892DC 800EFE2C 27BDFFC8 */ addiu $sp, $sp, -0x38
/* 0892E0 800EFE30 3C038007 */ lui $v1, 0x8007
/* 0892E4 800EFE34 8C63419C */ lw $v1, 0x419c($v1)
/* 0892E8 800EFE38 AFB00030 */ sw $s0, 0x30($sp)
/* 0892EC 800EFE3C 3C108011 */ lui $s0, 0x8011
/* 0892F0 800EFE40 2610EFC8 */ addiu $s0, $s0, -0x1038
/* 0892F4 800EFE44 AFBF0034 */ sw $ra, 0x34($sp)
/* 0892F8 800EFE48 84620086 */ lh $v0, 0x86($v1)
/* 0892FC 800EFE4C 24080005 */ addiu $t0, $zero, 5
/* 089300 800EFE50 14480004 */ bne $v0, $t0, .L800EFE64
/* 089304 800EFE54 0000282D */ daddu $a1, $zero, $zero
/* 089308 800EFE58 8462008C */ lh $v0, 0x8c($v1)
/* 08930C 800EFE5C 38420002 */ xori $v0, $v0, 2
/* 089310 800EFE60 2C450001 */ sltiu $a1, $v0, 1
.L800EFE64:
/* 089314 800EFE64 820300B4 */ lb $v1, 0xb4($s0)
/* 089318 800EFE68 2402000A */ addiu $v0, $zero, 0xa
/* 08931C 800EFE6C 14620020 */ bne $v1, $v0, .L800EFEF0
/* 089320 800EFE70 2402000E */ addiu $v0, $zero, 0xe
/* 089324 800EFE74 8E020000 */ lw $v0, ($s0)
/* 089328 800EFE78 0441001D */ bgez $v0, .L800EFEF0
/* 08932C 800EFE7C 2402000E */ addiu $v0, $zero, 0xe
/* 089330 800EFE80 3C028011 */ lui $v0, 0x8011
/* 089334 800EFE84 8C42CFF4 */ lw $v0, -0x300c($v0)
/* 089338 800EFE88 2842000A */ slti $v0, $v0, 0xa
/* 08933C 800EFE8C 14400018 */ bnez $v0, .L800EFEF0
/* 089340 800EFE90 2402000E */ addiu $v0, $zero, 0xe
/* 089344 800EFE94 C6040028 */ lwc1 $f4, 0x28($s0)
/* 089348 800EFE98 C602002C */ lwc1 $f2, 0x2c($s0)
/* 08934C 800EFE9C 44800000 */ mtc1 $zero, $f0
/* 089350 800EFEA0 C6060030 */ lwc1 $f6, 0x30($s0)
/* 089354 800EFEA4 10A00020 */ beqz $a1, .L800EFF28
/* 089358 800EFEA8 46001080 */ add.s $f2, $f2, $f0
/* 08935C 800EFEAC 24040003 */ addiu $a0, $zero, 3
/* 089360 800EFEB0 44052000 */ mfc1 $a1, $f4
/* 089364 800EFEB4 44061000 */ mfc1 $a2, $f2
/* 089368 800EFEB8 44073000 */ mfc1 $a3, $f6
/* 08936C 800EFEBC 3C014150 */ lui $at, 0x4150
/* 089370 800EFEC0 44810000 */ mtc1 $at, $f0
/* 089374 800EFEC4 3C014120 */ lui $at, 0x4120
/* 089378 800EFEC8 44811000 */ mtc1 $at, $f2
/* 08937C 800EFECC 3C013F80 */ lui $at, 0x3f80
/* 089380 800EFED0 44812000 */ mtc1 $at, $f4
/* 089384 800EFED4 2402001E */ addiu $v0, $zero, 0x1e
/* 089388 800EFED8 AFA8001C */ sw $t0, 0x1c($sp)
/* 08938C 800EFEDC AFA20020 */ sw $v0, 0x20($sp)
/* 089390 800EFEE0 E7A00010 */ swc1 $f0, 0x10($sp)
/* 089394 800EFEE4 E7A20014 */ swc1 $f2, 0x14($sp)
/* 089398 800EFEE8 0803C08C */ j .L800F0230
/* 08939C 800EFEEC E7A40018 */ swc1 $f4, 0x18($sp)
.L800EFEF0:
/* 0893A0 800EFEF0 10620003 */ beq $v1, $v0, .L800EFF00
/* 0893A4 800EFEF4 24020010 */ addiu $v0, $zero, 0x10
/* 0893A8 800EFEF8 14620029 */ bne $v1, $v0, .L800EFFA0
/* 0893AC 800EFEFC 00000000 */ nop
.L800EFF00:
/* 0893B0 800EFF00 8E020000 */ lw $v0, ($s0)
/* 0893B4 800EFF04 30420400 */ andi $v0, $v0, 0x400
/* 0893B8 800EFF08 10400025 */ beqz $v0, .L800EFFA0
/* 0893BC 800EFF0C 00000000 */ nop
/* 0893C0 800EFF10 C6040028 */ lwc1 $f4, 0x28($s0)
/* 0893C4 800EFF14 C602002C */ lwc1 $f2, 0x2c($s0)
/* 0893C8 800EFF18 44800000 */ mtc1 $zero, $f0
/* 0893CC 800EFF1C C6060030 */ lwc1 $f6, 0x30($s0)
/* 0893D0 800EFF20 14A0000B */ bnez $a1, .L800EFF50
/* 0893D4 800EFF24 46001080 */ add.s $f2, $f2, $f0
.L800EFF28:
/* 0893D8 800EFF28 44052000 */ mfc1 $a1, $f4
/* 0893DC 800EFF2C 44061000 */ mfc1 $a2, $f2
/* 0893E0 800EFF30 44073000 */ mfc1 $a3, $f6
/* 0893E4 800EFF34 3C018011 */ lui $at, 0x8011
/* 0893E8 800EFF38 C4209484 */ lwc1 $f0, -0x6b7c($at)
/* 0893EC 800EFF3C 0000202D */ daddu $a0, $zero, $zero
/* 0893F0 800EFF40 0C01BEB4 */ jal fx_walk_large
/* 0893F4 800EFF44 E7A00010 */ swc1 $f0, 0x10($sp)
/* 0893F8 800EFF48 0803C08E */ j .L800F0238
/* 0893FC 800EFF4C 00000000 */ nop
.L800EFF50:
/* 089400 800EFF50 24040003 */ addiu $a0, $zero, 3
/* 089404 800EFF54 44052000 */ mfc1 $a1, $f4
/* 089408 800EFF58 44061000 */ mfc1 $a2, $f2
/* 08940C 800EFF5C 44073000 */ mfc1 $a3, $f6
/* 089410 800EFF60 24020005 */ addiu $v0, $zero, 5
/* 089414 800EFF64 AFA2001C */ sw $v0, 0x1c($sp)
/* 089418 800EFF68 24020028 */ addiu $v0, $zero, 0x28
/* 08941C 800EFF6C AFA20020 */ sw $v0, 0x20($sp)
/* 089420 800EFF70 860200B2 */ lh $v0, 0xb2($s0)
/* 089424 800EFF74 3C014120 */ lui $at, 0x4120
/* 089428 800EFF78 44811000 */ mtc1 $at, $f2
/* 08942C 800EFF7C 3C013F80 */ lui $at, 0x3f80
/* 089430 800EFF80 44812000 */ mtc1 $at, $f4
/* 089434 800EFF84 44820000 */ mtc1 $v0, $f0
/* 089438 800EFF88 00000000 */ nop
/* 08943C 800EFF8C 46800020 */ cvt.s.w $f0, $f0
/* 089440 800EFF90 E7A00010 */ swc1 $f0, 0x10($sp)
/* 089444 800EFF94 E7A20014 */ swc1 $f2, 0x14($sp)
/* 089448 800EFF98 0803C08C */ j .L800F0230
/* 08944C 800EFF9C E7A40018 */ swc1 $f4, 0x18($sp)
.L800EFFA0:
/* 089450 800EFFA0 820300B4 */ lb $v1, 0xb4($s0)
/* 089454 800EFFA4 2402001A */ addiu $v0, $zero, 0x1a
/* 089458 800EFFA8 14620029 */ bne $v1, $v0, .L800F0050
/* 08945C 800EFFAC 24020002 */ addiu $v0, $zero, 2
/* 089460 800EFFB0 C6020054 */ lwc1 $f2, 0x54($s0)
/* 089464 800EFFB4 44800000 */ mtc1 $zero, $f0
/* 089468 800EFFB8 00000000 */ nop
/* 08946C 800EFFBC 46001032 */ c.eq.s $f2, $f0
/* 089470 800EFFC0 00000000 */ nop
/* 089474 800EFFC4 45010022 */ bc1t .L800F0050
/* 089478 800EFFC8 00000000 */ nop
/* 08947C 800EFFCC 3C048011 */ lui $a0, 0x8011
/* 089480 800EFFD0 24849488 */ addiu $a0, $a0, -0x6b78
/* 089484 800EFFD4 94820000 */ lhu $v0, ($a0)
/* 089488 800EFFD8 24430001 */ addiu $v1, $v0, 1
/* 08948C 800EFFDC 00021400 */ sll $v0, $v0, 0x10
/* 089490 800EFFE0 00021403 */ sra $v0, $v0, 0x10
/* 089494 800EFFE4 28420004 */ slti $v0, $v0, 4
/* 089498 800EFFE8 14400093 */ bnez $v0, .L800F0238
/* 08949C 800EFFEC A4830000 */ sh $v1, ($a0)
/* 0894A0 800EFFF0 24020002 */ addiu $v0, $zero, 2
/* 0894A4 800EFFF4 10A0002C */ beqz $a1, .L800F00A8
/* 0894A8 800EFFF8 A4820000 */ sh $v0, ($a0)
/* 0894AC 800EFFFC C60C0080 */ lwc1 $f12, 0x80($s0)
/* 0894B0 800F0000 0C00A6C9 */ jal clamp_angle
/* 0894B4 800F0004 00000000 */ nop
/* 0894B8 800F0008 3C0140C9 */ lui $at, 0x40c9
/* 0894BC 800F000C 34210FD0 */ ori $at, $at, 0xfd0
/* 0894C0 800F0010 44811000 */ mtc1 $at, $f2
/* 0894C4 800F0014 00000000 */ nop
/* 0894C8 800F0018 46020002 */ mul.s $f0, $f0, $f2
/* 0894CC 800F001C 00000000 */ nop
/* 0894D0 800F0020 27A50028 */ addiu $a1, $sp, 0x28
/* 0894D4 800F0024 3C0143B4 */ lui $at, 0x43b4
/* 0894D8 800F0028 44816000 */ mtc1 $at, $f12
/* 0894DC 800F002C 27A6002C */ addiu $a2, $sp, 0x2c
/* 0894E0 800F0030 0C00A82D */ jal sin_cos_rad
/* 0894E4 800F0034 460C0303 */ div.s $f12, $f0, $f12
/* 0894E8 800F0038 860200B2 */ lh $v0, 0xb2($s0)
/* 0894EC 800F003C C7A40028 */ lwc1 $f4, 0x28($sp)
/* 0894F0 800F0040 44823000 */ mtc1 $v0, $f6
/* 0894F4 800F0044 00000000 */ nop
/* 0894F8 800F0048 0803C06D */ j .L800F01B4
/* 0894FC 800F004C 468031A0 */ cvt.s.w $f6, $f6
.L800F0050:
/* 089500 800F0050 1062000A */ beq $v1, $v0, .L800F007C
/* 089504 800F0054 3C02FF00 */ lui $v0, 0xff00
/* 089508 800F0058 8E0300B4 */ lw $v1, 0xb4($s0)
/* 08950C 800F005C 3442FF00 */ ori $v0, $v0, 0xff00
/* 089510 800F0060 00621824 */ and $v1, $v1, $v0
/* 089514 800F0064 3C021A00 */ lui $v0, 0x1a00
/* 089518 800F0068 10620004 */ beq $v1, $v0, .L800F007C
/* 08951C 800F006C 24020004 */ addiu $v0, $zero, 4
/* 089520 800F0070 3C018011 */ lui $at, 0x8011
/* 089524 800F0074 0803C08E */ j .L800F0238
/* 089528 800F0078 A4229488 */ sh $v0, -0x6b78($at)
.L800F007C:
/* 08952C 800F007C 3C048011 */ lui $a0, 0x8011
/* 089530 800F0080 24849488 */ addiu $a0, $a0, -0x6b78
/* 089534 800F0084 94820000 */ lhu $v0, ($a0)
/* 089538 800F0088 24430001 */ addiu $v1, $v0, 1
/* 08953C 800F008C 00021400 */ sll $v0, $v0, 0x10
/* 089540 800F0090 00021403 */ sra $v0, $v0, 0x10
/* 089544 800F0094 28420004 */ slti $v0, $v0, 4
/* 089548 800F0098 14400067 */ bnez $v0, .L800F0238
/* 08954C 800F009C A4830000 */ sh $v1, ($a0)
/* 089550 800F00A0 14A00034 */ bnez $a1, .L800F0174
/* 089554 800F00A4 A4800000 */ sh $zero, ($a0)
.L800F00A8:
/* 089558 800F00A8 C60C0084 */ lwc1 $f12, 0x84($s0)
/* 08955C 800F00AC 0C00A6C9 */ jal clamp_angle
/* 089560 800F00B0 46006307 */ neg.s $f12, $f12
/* 089564 800F00B4 3C0140C9 */ lui $at, 0x40c9
/* 089568 800F00B8 34210FD0 */ ori $at, $at, 0xfd0
/* 08956C 800F00BC 44811000 */ mtc1 $at, $f2
/* 089570 800F00C0 00000000 */ nop
/* 089574 800F00C4 46020002 */ mul.s $f0, $f0, $f2
/* 089578 800F00C8 00000000 */ nop
/* 08957C 800F00CC 27A50028 */ addiu $a1, $sp, 0x28
/* 089580 800F00D0 3C0143B4 */ lui $at, 0x43b4
/* 089584 800F00D4 44816000 */ mtc1 $at, $f12
/* 089588 800F00D8 27A6002C */ addiu $a2, $sp, 0x2c
/* 08958C 800F00DC 0C00A82D */ jal sin_cos_rad
/* 089590 800F00E0 460C0303 */ div.s $f12, $f0, $f12
/* 089594 800F00E4 860200B2 */ lh $v0, 0xb2($s0)
/* 089598 800F00E8 C7AA0028 */ lwc1 $f10, 0x28($sp)
/* 08959C 800F00EC 44821000 */ mtc1 $v0, $f2
/* 0895A0 800F00F0 00000000 */ nop
/* 0895A4 800F00F4 468010A0 */ cvt.s.w $f2, $f2
/* 0895A8 800F00F8 460A1182 */ mul.s $f6, $f2, $f10
/* 0895AC 800F00FC 00000000 */ nop
/* 0895B0 800F0100 C7A8002C */ lwc1 $f8, 0x2c($sp)
/* 0895B4 800F0104 46081082 */ mul.s $f2, $f2, $f8
/* 0895B8 800F0108 00000000 */ nop
/* 0895BC 800F010C 3C013E4C */ lui $at, 0x3e4c
/* 0895C0 800F0110 3421CCCD */ ori $at, $at, 0xcccd
/* 0895C4 800F0114 44810000 */ mtc1 $at, $f0
/* 0895C8 800F0118 00000000 */ nop
/* 0895CC 800F011C 46003182 */ mul.s $f6, $f6, $f0
/* 0895D0 800F0120 00000000 */ nop
/* 0895D4 800F0124 46001082 */ mul.s $f2, $f2, $f0
/* 0895D8 800F0128 00000000 */ nop
/* 0895DC 800F012C C604002C */ lwc1 $f4, 0x2c($s0)
/* 0895E0 800F0130 3C013FC0 */ lui $at, 0x3fc0
/* 0895E4 800F0134 44810000 */ mtc1 $at, $f0
/* 0895E8 800F0138 00000000 */ nop
/* 0895EC 800F013C 46002100 */ add.s $f4, $f4, $f0
/* 0895F0 800F0140 C6000028 */ lwc1 $f0, 0x28($s0)
/* 0895F4 800F0144 46060000 */ add.s $f0, $f0, $f6
/* 0895F8 800F0148 44050000 */ mfc1 $a1, $f0
/* 0895FC 800F014C C6000030 */ lwc1 $f0, 0x30($s0)
/* 089600 800F0150 46020000 */ add.s $f0, $f0, $f2
/* 089604 800F0154 44062000 */ mfc1 $a2, $f4
/* 089608 800F0158 44070000 */ mfc1 $a3, $f0
/* 08960C 800F015C 0000202D */ daddu $a0, $zero, $zero
/* 089610 800F0160 E7AA0010 */ swc1 $f10, 0x10($sp)
/* 089614 800F0164 0C01BECC */ jal fx_walk_normal
/* 089618 800F0168 E7A80014 */ swc1 $f8, 0x14($sp)
/* 08961C 800F016C 0803C08E */ j .L800F0238
/* 089620 800F0170 00000000 */ nop
.L800F0174:
/* 089624 800F0174 0C00A6C9 */ jal clamp_angle
/* 089628 800F0178 C60C0080 */ lwc1 $f12, 0x80($s0)
/* 08962C 800F017C 3C0140C9 */ lui $at, 0x40c9
/* 089630 800F0180 34210FD0 */ ori $at, $at, 0xfd0
/* 089634 800F0184 44811000 */ mtc1 $at, $f2
/* 089638 800F0188 00000000 */ nop
/* 08963C 800F018C 46020002 */ mul.s $f0, $f0, $f2
/* 089640 800F0190 00000000 */ nop
/* 089644 800F0194 27A50028 */ addiu $a1, $sp, 0x28
/* 089648 800F0198 3C0143B4 */ lui $at, 0x43b4
/* 08964C 800F019C 44816000 */ mtc1 $at, $f12
/* 089650 800F01A0 27A6002C */ addiu $a2, $sp, 0x2c
/* 089654 800F01A4 0C00A82D */ jal sin_cos_rad
/* 089658 800F01A8 460C0303 */ div.s $f12, $f0, $f12
/* 08965C 800F01AC C6060054 */ lwc1 $f6, 0x54($s0)
/* 089660 800F01B0 C7A40028 */ lwc1 $f4, 0x28($sp)
.L800F01B4:
/* 089664 800F01B4 46043102 */ mul.s $f4, $f6, $f4
/* 089668 800F01B8 00000000 */ nop
/* 08966C 800F01BC C602002C */ lwc1 $f2, 0x2c($s0)
/* 089670 800F01C0 3C013FC0 */ lui $at, 0x3fc0
/* 089674 800F01C4 44810000 */ mtc1 $at, $f0
/* 089678 800F01C8 00000000 */ nop
/* 08967C 800F01CC 46001080 */ add.s $f2, $f2, $f0
/* 089680 800F01D0 C7A0002C */ lwc1 $f0, 0x2c($sp)
/* 089684 800F01D4 24020005 */ addiu $v0, $zero, 5
/* 089688 800F01D8 AFA2001C */ sw $v0, 0x1c($sp)
/* 08968C 800F01DC 46003182 */ mul.s $f6, $f6, $f0
/* 089690 800F01E0 00000000 */ nop
/* 089694 800F01E4 3C014150 */ lui $at, 0x4150
/* 089698 800F01E8 44810000 */ mtc1 $at, $f0
/* 08969C 800F01EC 44061000 */ mfc1 $a2, $f2
/* 0896A0 800F01F0 C6020028 */ lwc1 $f2, 0x28($s0)
/* 0896A4 800F01F4 2402001E */ addiu $v0, $zero, 0x1e
/* 0896A8 800F01F8 AFA20020 */ sw $v0, 0x20($sp)
/* 0896AC 800F01FC E7A00010 */ swc1 $f0, 0x10($sp)
/* 0896B0 800F0200 46041080 */ add.s $f2, $f2, $f4
/* 0896B4 800F0204 C6000030 */ lwc1 $f0, 0x30($s0)
/* 0896B8 800F0208 3C013F80 */ lui $at, 0x3f80
/* 0896BC 800F020C 44812000 */ mtc1 $at, $f4
/* 0896C0 800F0210 46060000 */ add.s $f0, $f0, $f6
/* 0896C4 800F0214 44051000 */ mfc1 $a1, $f2
/* 0896C8 800F0218 3C014120 */ lui $at, 0x4120
/* 0896CC 800F021C 44811000 */ mtc1 $at, $f2
/* 0896D0 800F0220 44070000 */ mfc1 $a3, $f0
/* 0896D4 800F0224 24040003 */ addiu $a0, $zero, 3
/* 0896D8 800F0228 E7A40018 */ swc1 $f4, 0x18($sp)
/* 0896DC 800F022C E7A20014 */ swc1 $f2, 0x14($sp)
.L800F0230:
/* 0896E0 800F0230 0C01C8D4 */ jal func_80072350
/* 0896E4 800F0234 00000000 */ nop
.L800F0238:
/* 0896E8 800F0238 8FBF0034 */ lw $ra, 0x34($sp)
/* 0896EC 800F023C 8FB00030 */ lw $s0, 0x30($sp)
/* 0896F0 800F0240 03E00008 */ jr $ra
/* 0896F4 800F0244 27BD0038 */ addiu $sp, $sp, 0x38