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

287 lines
13 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_802E6E20
/* 1086A0 802E6E20 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 1086A4 802E6E24 3C028007 */ lui $v0, 0x8007
/* 1086A8 802E6E28 8C42419C */ lw $v0, 0x419c($v0)
/* 1086AC 802E6E2C AFBF0010 */ sw $ra, 0x10($sp)
/* 1086B0 802E6E30 84430086 */ lh $v1, 0x86($v0)
/* 1086B4 802E6E34 2402000B */ addiu $v0, $zero, 0xb
/* 1086B8 802E6E38 14620004 */ bne $v1, $v0, .L802E6E4C
/* 1086BC 802E6E3C 0000202D */ daddu $a0, $zero, $zero
/* 1086C0 802E6E40 3C04802F */ lui $a0, 0x802f
/* 1086C4 802E6E44 080B9B9D */ j .L802E6E74
/* 1086C8 802E6E48 2484AB30 */ addiu $a0, $a0, -0x54d0
.L802E6E4C:
/* 1086CC 802E6E4C 24020002 */ addiu $v0, $zero, 2
/* 1086D0 802E6E50 14620004 */ bne $v1, $v0, .L802E6E64
/* 1086D4 802E6E54 24020012 */ addiu $v0, $zero, 0x12
/* 1086D8 802E6E58 3C04802F */ lui $a0, 0x802f
/* 1086DC 802E6E5C 080B9B9D */ j .L802E6E74
/* 1086E0 802E6E60 2484AC40 */ addiu $a0, $a0, -0x53c0
.L802E6E64:
/* 1086E4 802E6E64 14620003 */ bne $v1, $v0, .L802E6E74
/* 1086E8 802E6E68 00000000 */ nop
/* 1086EC 802E6E6C 3C04802F */ lui $a0, 0x802f
/* 1086F0 802E6E70 2484AC84 */ addiu $a0, $a0, -0x537c
.L802E6E74:
/* 1086F4 802E6E74 10800003 */ beqz $a0, .L802E6E84
/* 1086F8 802E6E78 2405000A */ addiu $a1, $zero, 0xa
/* 1086FC 802E6E7C 0C0B0CF8 */ jal start_script
/* 108700 802E6E80 24060020 */ addiu $a2, $zero, 0x20
.L802E6E84:
/* 108704 802E6E84 8FBF0010 */ lw $ra, 0x10($sp)
/* 108708 802E6E88 03E00008 */ jr $ra
/* 10870C 802E6E8C 27BD0018 */ addiu $sp, $sp, 0x18
/* 108710 802E6E90 3C028007 */ lui $v0, 0x8007
/* 108714 802E6E94 8C42419C */ lw $v0, 0x419c($v0)
/* 108718 802E6E98 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 10871C 802E6E9C AFBF0010 */ sw $ra, 0x10($sp)
/* 108720 802E6EA0 84430086 */ lh $v1, 0x86($v0)
/* 108724 802E6EA4 2402000B */ addiu $v0, $zero, 0xb
/* 108728 802E6EA8 14620004 */ bne $v1, $v0, .L802E6EBC
/* 10872C 802E6EAC 2405000A */ addiu $a1, $zero, 0xa
/* 108730 802E6EB0 3C04802F */ lui $a0, 0x802f
/* 108734 802E6EB4 080B9BB1 */ j .L802E6EC4
/* 108738 802E6EB8 2484AC0C */ addiu $a0, $a0, -0x53f4
.L802E6EBC:
/* 10873C 802E6EBC 3C04802F */ lui $a0, 0x802f
/* 108740 802E6EC0 2484ACC8 */ addiu $a0, $a0, -0x5338
.L802E6EC4:
/* 108744 802E6EC4 0C0B0CF8 */ jal start_script
/* 108748 802E6EC8 24060020 */ addiu $a2, $zero, 0x20
/* 10874C 802E6ECC 8FBF0010 */ lw $ra, 0x10($sp)
/* 108750 802E6ED0 03E00008 */ jr $ra
/* 108754 802E6ED4 27BD0018 */ addiu $sp, $sp, 0x18
/* 108758 802E6ED8 27BDFF48 */ addiu $sp, $sp, -0xb8
/* 10875C 802E6EDC AFB500AC */ sw $s5, 0xac($sp)
/* 108760 802E6EE0 3C15800A */ lui $s5, 0x800a
/* 108764 802E6EE4 26B5A66C */ addiu $s5, $s5, -0x5994
/* 108768 802E6EE8 AFBF00B0 */ sw $ra, 0xb0($sp)
/* 10876C 802E6EEC AFB400A8 */ sw $s4, 0xa8($sp)
/* 108770 802E6EF0 AFB300A4 */ sw $s3, 0xa4($sp)
/* 108774 802E6EF4 AFB200A0 */ sw $s2, 0xa0($sp)
/* 108778 802E6EF8 AFB1009C */ sw $s1, 0x9c($sp)
/* 10877C 802E6EFC AFB00098 */ sw $s0, 0x98($sp)
/* 108780 802E6F00 8EB00000 */ lw $s0, ($s5)
/* 108784 802E6F04 0C04417A */ jal get_entity_by_index
/* 108788 802E6F08 3C140001 */ lui $s4, 1
/* 10878C 802E6F0C 27B10058 */ addiu $s1, $sp, 0x58
/* 108790 802E6F10 0220202D */ daddu $a0, $s1, $zero
/* 108794 802E6F14 0040902D */ daddu $s2, $v0, $zero
/* 108798 802E6F18 3C063F80 */ lui $a2, 0x3f80
/* 10879C 802E6F1C 8E420040 */ lw $v0, 0x40($s2)
/* 1087A0 802E6F20 44800000 */ mtc1 $zero, $f0
/* 1087A4 802E6F24 00000000 */ nop
/* 1087A8 802E6F28 E7A00010 */ swc1 $f0, 0x10($sp)
/* 1087AC 802E6F2C 8C450008 */ lw $a1, 8($v0)
/* 1087B0 802E6F30 44070000 */ mfc1 $a3, $f0
/* 1087B4 802E6F34 0C019EC8 */ jal guRotateF
/* 1087B8 802E6F38 36941630 */ ori $s4, $s4, 0x1630
/* 1087BC 802E6F3C 27A40018 */ addiu $a0, $sp, 0x18
/* 1087C0 802E6F40 3C050A00 */ lui $a1, 0xa00
/* 1087C4 802E6F44 24A50C48 */ addiu $a1, $a1, 0xc48
/* 1087C8 802E6F48 8E420044 */ lw $v0, 0x44($s2)
/* 1087CC 802E6F4C 30A5FFFF */ andi $a1, $a1, 0xffff
/* 1087D0 802E6F50 0C019D60 */ jal guMtxL2F
/* 1087D4 802E6F54 00452821 */ addu $a1, $v0, $a1
/* 1087D8 802E6F58 0220202D */ daddu $a0, $s1, $zero
/* 1087DC 802E6F5C 27A50018 */ addiu $a1, $sp, 0x18
/* 1087E0 802E6F60 0C019D80 */ jal guMtxCatF
/* 1087E4 802E6F64 00A0302D */ daddu $a2, $a1, $zero
/* 1087E8 802E6F68 27A40018 */ addiu $a0, $sp, 0x18
/* 1087EC 802E6F6C 3C118007 */ lui $s1, 0x8007
/* 1087F0 802E6F70 263141F0 */ addiu $s1, $s1, 0x41f0
/* 1087F4 802E6F74 3C13800A */ lui $s3, 0x800a
/* 1087F8 802E6F78 2673A674 */ addiu $s3, $s3, -0x598c
/* 1087FC 802E6F7C 96250000 */ lhu $a1, ($s1)
/* 108800 802E6F80 8E620000 */ lw $v0, ($s3)
/* 108804 802E6F84 00052980 */ sll $a1, $a1, 6
/* 108808 802E6F88 00B42821 */ addu $a1, $a1, $s4
/* 10880C 802E6F8C 0C019D40 */ jal guMtxF2L
/* 108810 802E6F90 00452821 */ addu $a1, $v0, $a1
/* 108814 802E6F94 0200202D */ daddu $a0, $s0, $zero
/* 108818 802E6F98 26100008 */ addiu $s0, $s0, 8
/* 10881C 802E6F9C 0200282D */ daddu $a1, $s0, $zero
/* 108820 802E6FA0 26100008 */ addiu $s0, $s0, 8
/* 108824 802E6FA4 0200302D */ daddu $a2, $s0, $zero
/* 108828 802E6FA8 26100008 */ addiu $s0, $s0, 8
/* 10882C 802E6FAC 3C07D838 */ lui $a3, 0xd838
/* 108830 802E6FB0 34E70002 */ ori $a3, $a3, 2
/* 108834 802E6FB4 96220000 */ lhu $v0, ($s1)
/* 108838 802E6FB8 3C03DA38 */ lui $v1, 0xda38
/* 10883C 802E6FBC AC830000 */ sw $v1, ($a0)
/* 108840 802E6FC0 AEB00000 */ sw $s0, ($s5)
/* 108844 802E6FC4 24430001 */ addiu $v1, $v0, 1
/* 108848 802E6FC8 3042FFFF */ andi $v0, $v0, 0xffff
/* 10884C 802E6FCC 00021180 */ sll $v0, $v0, 6
/* 108850 802E6FD0 A6230000 */ sh $v1, ($s1)
/* 108854 802E6FD4 8E630000 */ lw $v1, ($s3)
/* 108858 802E6FD8 00541021 */ addu $v0, $v0, $s4
/* 10885C 802E6FDC 00621821 */ addu $v1, $v1, $v0
/* 108860 802E6FE0 AC830004 */ sw $v1, 4($a0)
/* 108864 802E6FE4 8E430044 */ lw $v1, 0x44($s2)
/* 108868 802E6FE8 3C02DE00 */ lui $v0, 0xde00
/* 10886C 802E6FEC ACA20000 */ sw $v0, ($a1)
/* 108870 802E6FF0 3C020A00 */ lui $v0, 0xa00
/* 108874 802E6FF4 24420DC0 */ addiu $v0, $v0, 0xdc0
/* 108878 802E6FF8 3042FFFF */ andi $v0, $v0, 0xffff
/* 10887C 802E6FFC 00621821 */ addu $v1, $v1, $v0
/* 108880 802E7000 24020040 */ addiu $v0, $zero, 0x40
/* 108884 802E7004 ACA30004 */ sw $v1, 4($a1)
/* 108888 802E7008 ACC70000 */ sw $a3, ($a2)
/* 10888C 802E700C ACC20004 */ sw $v0, 4($a2)
/* 108890 802E7010 8FBF00B0 */ lw $ra, 0xb0($sp)
/* 108894 802E7014 8FB500AC */ lw $s5, 0xac($sp)
/* 108898 802E7018 8FB400A8 */ lw $s4, 0xa8($sp)
/* 10889C 802E701C 8FB300A4 */ lw $s3, 0xa4($sp)
/* 1088A0 802E7020 8FB200A0 */ lw $s2, 0xa0($sp)
/* 1088A4 802E7024 8FB1009C */ lw $s1, 0x9c($sp)
/* 1088A8 802E7028 8FB00098 */ lw $s0, 0x98($sp)
/* 1088AC 802E702C 03E00008 */ jr $ra
/* 1088B0 802E7030 27BD00B8 */ addiu $sp, $sp, 0xb8
/* 1088B4 802E7034 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 1088B8 802E7038 AFB10014 */ sw $s1, 0x14($sp)
/* 1088BC 802E703C 0080882D */ daddu $s1, $a0, $zero
/* 1088C0 802E7040 AFBF0018 */ sw $ra, 0x18($sp)
/* 1088C4 802E7044 AFB00010 */ sw $s0, 0x10($sp)
/* 1088C8 802E7048 8E300040 */ lw $s0, 0x40($s1)
/* 1088CC 802E704C 96030000 */ lhu $v1, ($s0)
/* 1088D0 802E7050 3402FFFF */ ori $v0, $zero, 0xffff
/* 1088D4 802E7054 10620011 */ beq $v1, $v0, .L802E709C
/* 1088D8 802E7058 00000000 */ nop
/* 1088DC 802E705C 0C05152F */ jal get_global_flag
/* 1088E0 802E7060 0060202D */ daddu $a0, $v1, $zero
/* 1088E4 802E7064 1040000D */ beqz $v0, .L802E709C
/* 1088E8 802E7068 0220202D */ daddu $a0, $s1, $zero
/* 1088EC 802E706C 3C05802F */ lui $a1, 0x802f
/* 1088F0 802E7070 24A5AD7C */ addiu $a1, $a1, -0x5284
/* 1088F4 802E7074 8E220000 */ lw $v0, ($s1)
/* 1088F8 802E7078 3C01C1E5 */ lui $at, 0xc1e5
/* 1088FC 802E707C 3421999A */ ori $at, $at, 0x999a
/* 108900 802E7080 44810000 */ mtc1 $at, $f0
/* 108904 802E7084 34424000 */ ori $v0, $v0, 0x4000
/* 108908 802E7088 AC820000 */ sw $v0, ($a0)
/* 10890C 802E708C 2402FFFF */ addiu $v0, $zero, -1
/* 108910 802E7090 AE020010 */ sw $v0, 0x10($s0)
/* 108914 802E7094 0C043EF0 */ jal func_8010FBC0
/* 108918 802E7098 E6000008 */ swc1 $f0, 8($s0)
.L802E709C:
/* 10891C 802E709C 8FBF0018 */ lw $ra, 0x18($sp)
/* 108920 802E70A0 8FB10014 */ lw $s1, 0x14($sp)
/* 108924 802E70A4 8FB00010 */ lw $s0, 0x10($sp)
/* 108928 802E70A8 03E00008 */ jr $ra
/* 10892C 802E70AC 27BD0020 */ addiu $sp, $sp, 0x20
/* 108930 802E70B0 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 108934 802E70B4 AFB10014 */ sw $s1, 0x14($sp)
/* 108938 802E70B8 0080882D */ daddu $s1, $a0, $zero
/* 10893C 802E70BC AFBF0018 */ sw $ra, 0x18($sp)
/* 108940 802E70C0 AFB00010 */ sw $s0, 0x10($sp)
/* 108944 802E70C4 F7B40020 */ sdc1 $f20, 0x20($sp)
/* 108948 802E70C8 C6200064 */ lwc1 $f0, 0x64($s1)
/* 10894C 802E70CC 3C014334 */ lui $at, 0x4334
/* 108950 802E70D0 44816000 */ mtc1 $at, $f12
/* 108954 802E70D4 0C00A6C9 */ jal clamp_angle
/* 108958 802E70D8 46006301 */ sub.s $f12, $f12, $f0
/* 10895C 802E70DC 3C108011 */ lui $s0, 0x8011
/* 108960 802E70E0 2610EFC8 */ addiu $s0, $s0, -0x1038
/* 108964 802E70E4 C62C0048 */ lwc1 $f12, 0x48($s1)
/* 108968 802E70E8 C62E0050 */ lwc1 $f14, 0x50($s1)
/* 10896C 802E70EC 8E060028 */ lw $a2, 0x28($s0)
/* 108970 802E70F0 8E070030 */ lw $a3, 0x30($s0)
/* 108974 802E70F4 0C00A720 */ jal atan2
/* 108978 802E70F8 46000506 */ mov.s $f20, $f0
/* 10897C 802E70FC 0C00A6C9 */ jal clamp_angle
/* 108980 802E7100 46000306 */ mov.s $f12, $f0
/* 108984 802E7104 4600A501 */ sub.s $f20, $f20, $f0
/* 108988 802E7108 8E020004 */ lw $v0, 4($s0)
/* 10898C 802E710C 30420001 */ andi $v0, $v0, 1
/* 108990 802E7110 1440002F */ bnez $v0, .L802E71D0
/* 108994 802E7114 4600A505 */ abs.s $f20, $f20
/* 108998 802E7118 92220006 */ lbu $v0, 6($s1)
/* 10899C 802E711C 30420001 */ andi $v0, $v0, 1
/* 1089A0 802E7120 1440002B */ bnez $v0, .L802E71D0
/* 1089A4 802E7124 00000000 */ nop
/* 1089A8 802E7128 3C014220 */ lui $at, 0x4220
/* 1089AC 802E712C 44810000 */ mtc1 $at, $f0
/* 1089B0 802E7130 00000000 */ nop
/* 1089B4 802E7134 4600A03E */ c.le.s $f20, $f0
/* 1089B8 802E7138 00000000 */ nop
/* 1089BC 802E713C 45010008 */ bc1t .L802E7160
/* 1089C0 802E7140 00000000 */ nop
/* 1089C4 802E7144 3C0143A0 */ lui $at, 0x43a0
/* 1089C8 802E7148 44810000 */ mtc1 $at, $f0
/* 1089CC 802E714C 00000000 */ nop
/* 1089D0 802E7150 4614003E */ c.le.s $f0, $f20
/* 1089D4 802E7154 00000000 */ nop
/* 1089D8 802E7158 4500001D */ bc1f .L802E71D0
/* 1089DC 802E715C 00000000 */ nop
.L802E7160:
/* 1089E0 802E7160 8E220000 */ lw $v0, ($s1)
/* 1089E4 802E7164 34421000 */ ori $v0, $v0, 0x1000
/* 1089E8 802E7168 AE220000 */ sw $v0, ($s1)
/* 1089EC 802E716C 8E020004 */ lw $v0, 4($s0)
/* 1089F0 802E7170 30420010 */ andi $v0, $v0, 0x10
/* 1089F4 802E7174 1040001A */ beqz $v0, .L802E71E0
/* 1089F8 802E7178 00000000 */ nop
/* 1089FC 802E717C 92220006 */ lbu $v0, 6($s1)
/* 108A00 802E7180 30420008 */ andi $v0, $v0, 8
/* 108A04 802E7184 10400016 */ beqz $v0, .L802E71E0
/* 108A08 802E7188 00000000 */ nop
/* 108A0C 802E718C 0C043F5A */ jal func_8010FD68
/* 108A10 802E7190 0220202D */ daddu $a0, $s1, $zero
/* 108A14 802E7194 8E240040 */ lw $a0, 0x40($s1)
/* 108A18 802E7198 A0800004 */ sb $zero, 4($a0)
/* 108A1C 802E719C 8E220000 */ lw $v0, ($s1)
/* 108A20 802E71A0 2403EFFF */ addiu $v1, $zero, -0x1001
/* 108A24 802E71A4 00431024 */ and $v0, $v0, $v1
/* 108A28 802E71A8 AE220000 */ sw $v0, ($s1)
/* 108A2C 802E71AC 8C820010 */ lw $v0, 0x10($a0)
/* 108A30 802E71B0 10400003 */ beqz $v0, .L802E71C0
/* 108A34 802E71B4 00000000 */ nop
/* 108A38 802E71B8 0C03805E */ jal func_800E0178
/* 108A3C 802E71BC 00000000 */ nop
.L802E71C0:
/* 108A40 802E71C0 0C03BCF9 */ jal func_800EF3E4
/* 108A44 802E71C4 00000000 */ nop
/* 108A48 802E71C8 080B9C78 */ j .L802E71E0
/* 108A4C 802E71CC 00000000 */ nop
.L802E71D0:
/* 108A50 802E71D0 8E220000 */ lw $v0, ($s1)
/* 108A54 802E71D4 2403EFFF */ addiu $v1, $zero, -0x1001
/* 108A58 802E71D8 00431024 */ and $v0, $v0, $v1
/* 108A5C 802E71DC AE220000 */ sw $v0, ($s1)
.L802E71E0:
/* 108A60 802E71E0 8FBF0018 */ lw $ra, 0x18($sp)
/* 108A64 802E71E4 8FB10014 */ lw $s1, 0x14($sp)
/* 108A68 802E71E8 8FB00010 */ lw $s0, 0x10($sp)
/* 108A6C 802E71EC D7B40020 */ ldc1 $f20, 0x20($sp)
/* 108A70 802E71F0 03E00008 */ jr $ra
/* 108A74 802E71F4 27BD0028 */ addiu $sp, $sp, 0x28
/* 108A78 802E71F8 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 108A7C 802E71FC 2403000A */ addiu $v1, $zero, 0xa
/* 108A80 802E7200 AFBF0010 */ sw $ra, 0x10($sp)
/* 108A84 802E7204 8C820040 */ lw $v0, 0x40($a0)
/* 108A88 802E7208 240401D3 */ addiu $a0, $zero, 0x1d3
/* 108A8C 802E720C A0430006 */ sb $v1, 6($v0)
/* 108A90 802E7210 24030028 */ addiu $v1, $zero, 0x28
/* 108A94 802E7214 AC400008 */ sw $zero, 8($v0)
/* 108A98 802E7218 A0400005 */ sb $zero, 5($v0)
/* 108A9C 802E721C 0C05272D */ jal play_sound
/* 108AA0 802E7220 A4430002 */ sh $v1, 2($v0)
/* 108AA4 802E7224 8FBF0010 */ lw $ra, 0x10($sp)
/* 108AA8 802E7228 03E00008 */ jr $ra
/* 108AAC 802E722C 27BD0018 */ addiu $sp, $sp, 0x18