papermario/asm/nonmatchings/battle/area_kpa2/69F320/func_802186D0_69F8D0.s
2020-12-28 14:34:30 +09:00

259 lines
13 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_802186D0_69F8D0
/* 69F8D0 802186D0 27BDFFA8 */ addiu $sp, $sp, -0x58
/* 69F8D4 802186D4 AFB1001C */ sw $s1, 0x1c($sp)
/* 69F8D8 802186D8 0080882D */ daddu $s1, $a0, $zero
/* 69F8DC 802186DC AFB20020 */ sw $s2, 0x20($sp)
/* 69F8E0 802186E0 AFBF002C */ sw $ra, 0x2c($sp)
/* 69F8E4 802186E4 AFB40028 */ sw $s4, 0x28($sp)
/* 69F8E8 802186E8 AFB30024 */ sw $s3, 0x24($sp)
/* 69F8EC 802186EC AFB00018 */ sw $s0, 0x18($sp)
/* 69F8F0 802186F0 F7BC0050 */ sdc1 $f28, 0x50($sp)
/* 69F8F4 802186F4 F7BA0048 */ sdc1 $f26, 0x48($sp)
/* 69F8F8 802186F8 F7B80040 */ sdc1 $f24, 0x40($sp)
/* 69F8FC 802186FC F7B60038 */ sdc1 $f22, 0x38($sp)
/* 69F900 80218700 F7B40030 */ sdc1 $f20, 0x30($sp)
/* 69F904 80218704 8E240148 */ lw $a0, 0x148($s1)
/* 69F908 80218708 8E30000C */ lw $s0, 0xc($s1)
/* 69F90C 8021870C 0C09A75B */ jal get_actor
/* 69F910 80218710 00A0902D */ daddu $s2, $a1, $zero
/* 69F914 80218714 0040982D */ daddu $s3, $v0, $zero
/* 69F918 80218718 126000D5 */ beqz $s3, .L80218A70
/* 69F91C 8021871C 24020002 */ addiu $v0, $zero, 2
/* 69F920 80218720 1240003C */ beqz $s2, .L80218814
/* 69F924 80218724 0220202D */ daddu $a0, $s1, $zero
/* 69F928 80218728 8E050000 */ lw $a1, ($s0)
/* 69F92C 8021872C 26100004 */ addiu $s0, $s0, 4
/* 69F930 80218730 0C0B1EAF */ jal get_variable
/* 69F934 80218734 0000902D */ daddu $s2, $zero, $zero
/* 69F938 80218738 8E050000 */ lw $a1, ($s0)
/* 69F93C 8021873C 26100004 */ addiu $s0, $s0, 4
/* 69F940 80218740 4482E000 */ mtc1 $v0, $f28
/* 69F944 80218744 00000000 */ nop
/* 69F948 80218748 4680E720 */ cvt.s.w $f28, $f28
/* 69F94C 8021874C 0C0B1EAF */ jal get_variable
/* 69F950 80218750 0220202D */ daddu $a0, $s1, $zero
/* 69F954 80218754 8E050000 */ lw $a1, ($s0)
/* 69F958 80218758 26100004 */ addiu $s0, $s0, 4
/* 69F95C 8021875C 4482D000 */ mtc1 $v0, $f26
/* 69F960 80218760 00000000 */ nop
/* 69F964 80218764 4680D6A0 */ cvt.s.w $f26, $f26
/* 69F968 80218768 0C0B1EAF */ jal get_variable
/* 69F96C 8021876C 0220202D */ daddu $a0, $s1, $zero
/* 69F970 80218770 8E050000 */ lw $a1, ($s0)
/* 69F974 80218774 26100004 */ addiu $s0, $s0, 4
/* 69F978 80218778 4482C000 */ mtc1 $v0, $f24
/* 69F97C 8021877C 00000000 */ nop
/* 69F980 80218780 4680C620 */ cvt.s.w $f24, $f24
/* 69F984 80218784 0C0B210B */ jal get_float_variable
/* 69F988 80218788 0220202D */ daddu $a0, $s1, $zero
/* 69F98C 8021878C 0220202D */ daddu $a0, $s1, $zero
/* 69F990 80218790 8E050000 */ lw $a1, ($s0)
/* 69F994 80218794 0C0B210B */ jal get_float_variable
/* 69F998 80218798 46000506 */ mov.s $f20, $f0
/* 69F99C 8021879C 240400B4 */ addiu $a0, $zero, 0xb4
/* 69F9A0 802187A0 0C00AB39 */ jal heap_malloc
/* 69F9A4 802187A4 46000586 */ mov.s $f22, $f0
/* 69F9A8 802187A8 0040882D */ daddu $s1, $v0, $zero
/* 69F9AC 802187AC 24060028 */ addiu $a2, $zero, 0x28
/* 69F9B0 802187B0 240500FF */ addiu $a1, $zero, 0xff
/* 69F9B4 802187B4 24040001 */ addiu $a0, $zero, 1
/* 69F9B8 802187B8 26230038 */ addiu $v1, $s1, 0x38
/* 69F9BC 802187BC AE710078 */ sw $s1, 0x78($s3)
.L802187C0:
/* 69F9C0 802187C0 E47CFFCC */ swc1 $f28, -0x34($v1)
/* 69F9C4 802187C4 E47AFFD0 */ swc1 $f26, -0x30($v1)
/* 69F9C8 802187C8 E478FFD4 */ swc1 $f24, -0x2c($v1)
/* 69F9CC 802187CC E474FFE0 */ swc1 $f20, -0x20($v1)
/* 69F9D0 802187D0 E474FFD8 */ swc1 $f20, -0x28($v1)
/* 69F9D4 802187D4 E476FFDC */ swc1 $f22, -0x24($v1)
/* 69F9D8 802187D8 AC64FFE4 */ sw $a0, -0x1c($v1)
/* 69F9DC 802187DC AC66FFE8 */ sw $a2, -0x18($v1)
/* 69F9E0 802187E0 AC65FFEC */ sw $a1, -0x14($v1)
/* 69F9E4 802187E4 AC65FFF0 */ sw $a1, -0x10($v1)
/* 69F9E8 802187E8 AC60FFF4 */ sw $zero, -0xc($v1)
/* 69F9EC 802187EC AC60FFF8 */ sw $zero, -8($v1)
/* 69F9F0 802187F0 AC60FFFC */ sw $zero, -4($v1)
/* 69F9F4 802187F4 AC600000 */ sw $zero, ($v1)
/* 69F9F8 802187F8 2463003C */ addiu $v1, $v1, 0x3c
/* 69F9FC 802187FC 26520001 */ addiu $s2, $s2, 1
/* 69FA00 80218800 2A420003 */ slti $v0, $s2, 3
/* 69FA04 80218804 1440FFEE */ bnez $v0, .L802187C0
/* 69FA08 80218808 2484000A */ addiu $a0, $a0, 0xa
/* 69FA0C 8021880C 0808629C */ j .L80218A70
/* 69FA10 80218810 0000102D */ daddu $v0, $zero, $zero
.L80218814:
/* 69FA14 80218814 0000A02D */ daddu $s4, $zero, $zero
/* 69FA18 80218818 0280902D */ daddu $s2, $s4, $zero
/* 69FA1C 8021881C 8E710078 */ lw $s1, 0x78($s3)
/* 69FA20 80218820 3C013DCC */ lui $at, 0x3dcc
/* 69FA24 80218824 3421CCCD */ ori $at, $at, 0xcccd
/* 69FA28 80218828 4481C000 */ mtc1 $at, $f24
/* 69FA2C 8021882C 3C013F00 */ lui $at, 0x3f00
/* 69FA30 80218830 4481B000 */ mtc1 $at, $f22
/* 69FA34 80218834 3C01437F */ lui $at, 0x437f
/* 69FA38 80218838 4481A000 */ mtc1 $at, $f20
/* 69FA3C 8021883C 26300028 */ addiu $s0, $s1, 0x28
.L80218840:
/* 69FA40 80218840 8E02FFF4 */ lw $v0, -0xc($s0)
/* 69FA44 80218844 1840001C */ blez $v0, .L802188B8
/* 69FA48 80218848 2442FFFF */ addiu $v0, $v0, -1
/* 69FA4C 8021884C 1C40007D */ bgtz $v0, .L80218A44
/* 69FA50 80218850 AE02FFF4 */ sw $v0, -0xc($s0)
/* 69FA54 80218854 C600FFF0 */ lwc1 $f0, -0x10($s0)
/* 69FA58 80218858 2402FFFF */ addiu $v0, $zero, -1
/* 69FA5C 8021885C AFA20014 */ sw $v0, 0x14($sp)
/* 69FA60 80218860 E7A00010 */ swc1 $f0, 0x10($sp)
/* 69FA64 80218864 8E05FFDC */ lw $a1, -0x24($s0)
/* 69FA68 80218868 8E06FFE0 */ lw $a2, -0x20($s0)
/* 69FA6C 8021886C 8E07FFE4 */ lw $a3, -0x1c($s0)
/* 69FA70 80218870 0C01CA9C */ jal func_80072A70
/* 69FA74 80218874 0000202D */ daddu $a0, $zero, $zero
/* 69FA78 80218878 AE220000 */ sw $v0, ($s1)
/* 69FA7C 8021887C 8C42000C */ lw $v0, 0xc($v0)
/* 69FA80 80218880 C6000004 */ lwc1 $f0, 4($s0)
/* 69FA84 80218884 E440003C */ swc1 $f0, 0x3c($v0)
/* 69FA88 80218888 8E220000 */ lw $v0, ($s1)
/* 69FA8C 8021888C C6000008 */ lwc1 $f0, 8($s0)
/* 69FA90 80218890 8C42000C */ lw $v0, 0xc($v0)
/* 69FA94 80218894 E4400040 */ swc1 $f0, 0x40($v0)
/* 69FA98 80218898 8E220000 */ lw $v0, ($s1)
/* 69FA9C 8021889C C600000C */ lwc1 $f0, 0xc($s0)
/* 69FAA0 802188A0 8C42000C */ lw $v0, 0xc($v0)
/* 69FAA4 802188A4 E4400044 */ swc1 $f0, 0x44($v0)
/* 69FAA8 802188A8 8E220000 */ lw $v0, ($s1)
/* 69FAAC 802188AC 8C42000C */ lw $v0, 0xc($v0)
/* 69FAB0 802188B0 08086291 */ j .L80218A44
/* 69FAB4 802188B4 A4400000 */ sh $zero, ($v0)
.L802188B8:
/* 69FAB8 802188B8 8E020010 */ lw $v0, 0x10($s0)
/* 69FABC 802188BC 10400003 */ beqz $v0, .L802188CC
/* 69FAC0 802188C0 00000000 */ nop
/* 69FAC4 802188C4 08086291 */ j .L80218A44
/* 69FAC8 802188C8 26940001 */ addiu $s4, $s4, 1
.L802188CC:
/* 69FACC 802188CC C600FFE8 */ lwc1 $f0, -0x18($s0)
/* 69FAD0 802188D0 C608FFEC */ lwc1 $f8, -0x14($s0)
/* 69FAD4 802188D4 46080001 */ sub.s $f0, $f0, $f8
/* 69FAD8 802188D8 C602FFF8 */ lwc1 $f2, -8($s0)
/* 69FADC 802188DC 468010A0 */ cvt.s.w $f2, $f2
/* 69FAE0 802188E0 46000005 */ abs.s $f0, $f0
/* 69FAE4 802188E4 46020002 */ mul.s $f0, $f0, $f2
/* 69FAE8 802188E8 00000000 */ nop
/* 69FAEC 802188EC C606000C */ lwc1 $f6, 0xc($s0)
/* 69FAF0 802188F0 3C014110 */ lui $at, 0x4110
/* 69FAF4 802188F4 44811000 */ mtc1 $at, $f2
/* 69FAF8 802188F8 3C014220 */ lui $at, 0x4220
/* 69FAFC 802188FC 44812000 */ mtc1 $at, $f4
/* 69FB00 80218900 46023180 */ add.s $f6, $f6, $f2
/* 69FB04 80218904 8E03FFF8 */ lw $v1, -8($s0)
/* 69FB08 80218908 46040003 */ div.s $f0, $f0, $f4
/* 69FB0C 8021890C 46080000 */ add.s $f0, $f0, $f8
/* 69FB10 80218910 2862000B */ slti $v0, $v1, 0xb
/* 69FB14 80218914 E606000C */ swc1 $f6, 0xc($s0)
/* 69FB18 80218918 1040001C */ beqz $v0, .L8021898C
/* 69FB1C 8021891C E600FFF0 */ swc1 $f0, -0x10($s0)
/* 69FB20 80218920 000317C2 */ srl $v0, $v1, 0x1f
/* 69FB24 80218924 00621021 */ addu $v0, $v1, $v0
/* 69FB28 80218928 00021043 */ sra $v0, $v0, 1
/* 69FB2C 8021892C 44821000 */ mtc1 $v0, $f2
/* 69FB30 80218930 00000000 */ nop
/* 69FB34 80218934 468010A0 */ cvt.s.w $f2, $f2
/* 69FB38 80218938 0060102D */ daddu $v0, $v1, $zero
/* 69FB3C 8021893C 46181082 */ mul.s $f2, $f2, $f24
/* 69FB40 80218940 00000000 */ nop
/* 69FB44 80218944 00021FC2 */ srl $v1, $v0, 0x1f
/* 69FB48 80218948 00431021 */ addu $v0, $v0, $v1
/* 69FB4C 8021894C 00021043 */ sra $v0, $v0, 1
/* 69FB50 80218950 44820000 */ mtc1 $v0, $f0
/* 69FB54 80218954 00000000 */ nop
/* 69FB58 80218958 46800020 */ cvt.s.w $f0, $f0
/* 69FB5C 8021895C 46180002 */ mul.s $f0, $f0, $f24
/* 69FB60 80218960 00000000 */ nop
/* 69FB64 80218964 46161080 */ add.s $f2, $f2, $f22
/* 69FB68 80218968 46141082 */ mul.s $f2, $f2, $f20
/* 69FB6C 8021896C 00000000 */ nop
/* 69FB70 80218970 46160000 */ add.s $f0, $f0, $f22
/* 69FB74 80218974 46140002 */ mul.s $f0, $f0, $f20
/* 69FB78 80218978 00000000 */ nop
/* 69FB7C 8021897C 4600128D */ trunc.w.s $f10, $f2
/* 69FB80 80218980 E60AFFFC */ swc1 $f10, -4($s0)
/* 69FB84 80218984 4600028D */ trunc.w.s $f10, $f0
/* 69FB88 80218988 E60A0000 */ swc1 $f10, ($s0)
.L8021898C:
/* 69FB8C 8021898C 8E02FFF8 */ lw $v0, -8($s0)
/* 69FB90 80218990 2442FFFF */ addiu $v0, $v0, -1
/* 69FB94 80218994 1C400007 */ bgtz $v0, .L802189B4
/* 69FB98 80218998 AE02FFF8 */ sw $v0, -8($s0)
/* 69FB9C 8021899C 8E240000 */ lw $a0, ($s1)
/* 69FBA0 802189A0 0C016914 */ jal remove_effect
/* 69FBA4 802189A4 00000000 */ nop
/* 69FBA8 802189A8 24020001 */ addiu $v0, $zero, 1
/* 69FBAC 802189AC 08086291 */ j .L80218A44
/* 69FBB0 802189B0 AE020010 */ sw $v0, 0x10($s0)
.L802189B4:
/* 69FBB4 802189B4 8E220000 */ lw $v0, ($s1)
/* 69FBB8 802189B8 C600FFDC */ lwc1 $f0, -0x24($s0)
/* 69FBBC 802189BC 8C42000C */ lw $v0, 0xc($v0)
/* 69FBC0 802189C0 E4400004 */ swc1 $f0, 4($v0)
/* 69FBC4 802189C4 8E220000 */ lw $v0, ($s1)
/* 69FBC8 802189C8 C600FFE0 */ lwc1 $f0, -0x20($s0)
/* 69FBCC 802189CC 8C42000C */ lw $v0, 0xc($v0)
/* 69FBD0 802189D0 E4400008 */ swc1 $f0, 8($v0)
/* 69FBD4 802189D4 8E220000 */ lw $v0, ($s1)
/* 69FBD8 802189D8 C600FFE4 */ lwc1 $f0, -0x1c($s0)
/* 69FBDC 802189DC 8C42000C */ lw $v0, 0xc($v0)
/* 69FBE0 802189E0 E440000C */ swc1 $f0, 0xc($v0)
/* 69FBE4 802189E4 8E220000 */ lw $v0, ($s1)
/* 69FBE8 802189E8 C6000004 */ lwc1 $f0, 4($s0)
/* 69FBEC 802189EC 8C42000C */ lw $v0, 0xc($v0)
/* 69FBF0 802189F0 E440003C */ swc1 $f0, 0x3c($v0)
/* 69FBF4 802189F4 8E220000 */ lw $v0, ($s1)
/* 69FBF8 802189F8 C6000008 */ lwc1 $f0, 8($s0)
/* 69FBFC 802189FC 8C42000C */ lw $v0, 0xc($v0)
/* 69FC00 80218A00 E4400040 */ swc1 $f0, 0x40($v0)
/* 69FC04 80218A04 8E220000 */ lw $v0, ($s1)
/* 69FC08 80218A08 C600000C */ lwc1 $f0, 0xc($s0)
/* 69FC0C 80218A0C 8C42000C */ lw $v0, 0xc($v0)
/* 69FC10 80218A10 E4400044 */ swc1 $f0, 0x44($v0)
/* 69FC14 80218A14 8E220000 */ lw $v0, ($s1)
/* 69FC18 80218A18 C600FFF0 */ lwc1 $f0, -0x10($s0)
/* 69FC1C 80218A1C 8C42000C */ lw $v0, 0xc($v0)
/* 69FC20 80218A20 E4400038 */ swc1 $f0, 0x38($v0)
/* 69FC24 80218A24 8E220000 */ lw $v0, ($s1)
/* 69FC28 80218A28 8C43000C */ lw $v1, 0xc($v0)
/* 69FC2C 80218A2C 8E02FFFC */ lw $v0, -4($s0)
/* 69FC30 80218A30 AC620024 */ sw $v0, 0x24($v1)
/* 69FC34 80218A34 8E220000 */ lw $v0, ($s1)
/* 69FC38 80218A38 8C43000C */ lw $v1, 0xc($v0)
/* 69FC3C 80218A3C 8E020000 */ lw $v0, ($s0)
/* 69FC40 80218A40 AC620034 */ sw $v0, 0x34($v1)
.L80218A44:
/* 69FC44 80218A44 2610003C */ addiu $s0, $s0, 0x3c
/* 69FC48 80218A48 26520001 */ addiu $s2, $s2, 1
/* 69FC4C 80218A4C 2A420003 */ slti $v0, $s2, 3
/* 69FC50 80218A50 1440FF7B */ bnez $v0, .L80218840
/* 69FC54 80218A54 2631003C */ addiu $s1, $s1, 0x3c
/* 69FC58 80218A58 2A820003 */ slti $v0, $s4, 3
/* 69FC5C 80218A5C 14400004 */ bnez $v0, .L80218A70
/* 69FC60 80218A60 0000102D */ daddu $v0, $zero, $zero
/* 69FC64 80218A64 0C00AB4B */ jal heap_free
/* 69FC68 80218A68 0220202D */ daddu $a0, $s1, $zero
/* 69FC6C 80218A6C 24020002 */ addiu $v0, $zero, 2
.L80218A70:
/* 69FC70 80218A70 8FBF002C */ lw $ra, 0x2c($sp)
/* 69FC74 80218A74 8FB40028 */ lw $s4, 0x28($sp)
/* 69FC78 80218A78 8FB30024 */ lw $s3, 0x24($sp)
/* 69FC7C 80218A7C 8FB20020 */ lw $s2, 0x20($sp)
/* 69FC80 80218A80 8FB1001C */ lw $s1, 0x1c($sp)
/* 69FC84 80218A84 8FB00018 */ lw $s0, 0x18($sp)
/* 69FC88 80218A88 D7BC0050 */ ldc1 $f28, 0x50($sp)
/* 69FC8C 80218A8C D7BA0048 */ ldc1 $f26, 0x48($sp)
/* 69FC90 80218A90 D7B80040 */ ldc1 $f24, 0x40($sp)
/* 69FC94 80218A94 D7B60038 */ ldc1 $f22, 0x38($sp)
/* 69FC98 80218A98 D7B40030 */ ldc1 $f20, 0x30($sp)
/* 69FC9C 80218A9C 03E00008 */ jr $ra
/* 69FCA0 80218AA0 27BD0058 */ addiu $sp, $sp, 0x58