papermario/asm/nonmatchings/battle/area_kgr/56E800/func_80218560_56E800.s
2020-12-28 14:34:30 +09:00

291 lines
15 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_80218560_56E800
/* 56E800 80218560 27BDFFA0 */ addiu $sp, $sp, -0x60
/* 56E804 80218564 AFB00020 */ sw $s0, 0x20($sp)
/* 56E808 80218568 0080802D */ daddu $s0, $a0, $zero
/* 56E80C 8021856C AFBF0028 */ sw $ra, 0x28($sp)
/* 56E810 80218570 AFB10024 */ sw $s1, 0x24($sp)
/* 56E814 80218574 F7BE0058 */ sdc1 $f30, 0x58($sp)
/* 56E818 80218578 F7BC0050 */ sdc1 $f28, 0x50($sp)
/* 56E81C 8021857C F7BA0048 */ sdc1 $f26, 0x48($sp)
/* 56E820 80218580 F7B80040 */ sdc1 $f24, 0x40($sp)
/* 56E824 80218584 F7B60038 */ sdc1 $f22, 0x38($sp)
/* 56E828 80218588 F7B40030 */ sdc1 $f20, 0x30($sp)
/* 56E82C 8021858C 8E02000C */ lw $v0, 0xc($s0)
/* 56E830 80218590 0C0B1EAF */ jal get_variable
/* 56E834 80218594 8C450000 */ lw $a1, ($v0)
/* 56E838 80218598 0040882D */ daddu $s1, $v0, $zero
/* 56E83C 8021859C 24040001 */ addiu $a0, $zero, 1
/* 56E840 802185A0 1224002F */ beq $s1, $a0, .L80218660
/* 56E844 802185A4 AE110070 */ sw $s1, 0x70($s0)
/* 56E848 802185A8 2A220002 */ slti $v0, $s1, 2
/* 56E84C 802185AC 10400005 */ beqz $v0, .L802185C4
/* 56E850 802185B0 24020002 */ addiu $v0, $zero, 2
/* 56E854 802185B4 12200009 */ beqz $s1, .L802185DC
/* 56E858 802185B8 2402008E */ addiu $v0, $zero, 0x8e
/* 56E85C 802185BC 08086258 */ j .L80218960
/* 56E860 802185C0 00000000 */ nop
.L802185C4:
/* 56E864 802185C4 12220085 */ beq $s1, $v0, .L802187DC
/* 56E868 802185C8 24020003 */ addiu $v0, $zero, 3
/* 56E86C 802185CC 12220013 */ beq $s1, $v0, .L8021861C
/* 56E870 802185D0 2403005B */ addiu $v1, $zero, 0x5b
/* 56E874 802185D4 08086258 */ j .L80218960
/* 56E878 802185D8 00000000 */ nop
.L802185DC:
/* 56E87C 802185DC 3C01430E */ lui $at, 0x430e
/* 56E880 802185E0 44812000 */ mtc1 $at, $f4
/* 56E884 802185E4 3C01C2EC */ lui $at, 0xc2ec
/* 56E888 802185E8 4481F000 */ mtc1 $at, $f30
/* 56E88C 802185EC 2403FF8A */ addiu $v1, $zero, -0x76
/* 56E890 802185F0 AFA00014 */ sw $zero, 0x14($sp)
/* 56E894 802185F4 E7A40010 */ swc1 $f4, 0x10($sp)
/* 56E898 802185F8 AE020090 */ sw $v0, 0x90($s0)
/* 56E89C 802185FC 2402002C */ addiu $v0, $zero, 0x2c
/* 56E8A0 80218600 AE02009C */ sw $v0, 0x9c($s0)
/* 56E8A4 80218604 24020003 */ addiu $v0, $zero, 3
/* 56E8A8 80218608 AE000094 */ sw $zero, 0x94($s0)
/* 56E8AC 8021860C AE030098 */ sw $v1, 0x98($s0)
/* 56E8B0 80218610 AE0300A0 */ sw $v1, 0xa0($s0)
/* 56E8B4 80218614 08086194 */ j .L80218650
/* 56E8B8 80218618 AE0200A4 */ sw $v0, 0xa4($s0)
.L8021861C:
/* 56E8BC 8021861C 3C0142B6 */ lui $at, 0x42b6
/* 56E8C0 80218620 44812000 */ mtc1 $at, $f4
/* 56E8C4 80218624 3C01C2EC */ lui $at, 0xc2ec
/* 56E8C8 80218628 4481F000 */ mtc1 $at, $f30
/* 56E8CC 8021862C 2402FF8A */ addiu $v0, $zero, -0x76
/* 56E8D0 80218630 AFA00014 */ sw $zero, 0x14($sp)
/* 56E8D4 80218634 E7A40010 */ swc1 $f4, 0x10($sp)
/* 56E8D8 80218638 AE030090 */ sw $v1, 0x90($s0)
/* 56E8DC 8021863C AE000094 */ sw $zero, 0x94($s0)
/* 56E8E0 80218640 AE020098 */ sw $v0, 0x98($s0)
/* 56E8E4 80218644 AE03009C */ sw $v1, 0x9c($s0)
/* 56E8E8 80218648 AE0200A0 */ sw $v0, 0xa0($s0)
/* 56E8EC 8021864C AE1100A4 */ sw $s1, 0xa4($s0)
.L80218650:
/* 56E8F0 80218650 AE0000A8 */ sw $zero, 0xa8($s0)
/* 56E8F4 80218654 AE0000B0 */ sw $zero, 0xb0($s0)
/* 56E8F8 80218658 08086258 */ j .L80218960
/* 56E8FC 8021865C AE040070 */ sw $a0, 0x70($s0)
.L80218660:
/* 56E900 80218660 8E0200A8 */ lw $v0, 0xa8($s0)
/* 56E904 80218664 8E0300A4 */ lw $v1, 0xa4($s0)
/* 56E908 80218668 00431021 */ addu $v0, $v0, $v1
/* 56E90C 8021866C AE0200A8 */ sw $v0, 0xa8($s0)
/* 56E910 80218670 2842002E */ slti $v0, $v0, 0x2e
/* 56E914 80218674 14400003 */ bnez $v0, .L80218684
/* 56E918 80218678 00000000 */ nop
/* 56E91C 8021867C 2402002D */ addiu $v0, $zero, 0x2d
/* 56E920 80218680 AE0200A8 */ sw $v0, 0xa8($s0)
.L80218684:
/* 56E924 80218684 C6040090 */ lwc1 $f4, 0x90($s0)
/* 56E928 80218688 46802120 */ cvt.s.w $f4, $f4
/* 56E92C 8021868C E7A40010 */ swc1 $f4, 0x10($sp)
/* 56E930 80218690 C6040094 */ lwc1 $f4, 0x94($s0)
/* 56E934 80218694 46802120 */ cvt.s.w $f4, $f4
/* 56E938 80218698 E7A40014 */ swc1 $f4, 0x14($sp)
/* 56E93C 8021869C C60C00A8 */ lwc1 $f12, 0xa8($s0)
/* 56E940 802186A0 46806320 */ cvt.s.w $f12, $f12
/* 56E944 802186A4 3C0140C9 */ lui $at, 0x40c9
/* 56E948 802186A8 34210FD0 */ ori $at, $at, 0xfd0
/* 56E94C 802186AC 4481D000 */ mtc1 $at, $f26
/* 56E950 802186B0 C61E0098 */ lwc1 $f30, 0x98($s0)
/* 56E954 802186B4 4680F7A0 */ cvt.s.w $f30, $f30
/* 56E958 802186B8 461A6302 */ mul.s $f12, $f12, $f26
/* 56E95C 802186BC 00000000 */ nop
/* 56E960 802186C0 C61C009C */ lwc1 $f28, 0x9c($s0)
/* 56E964 802186C4 4680E720 */ cvt.s.w $f28, $f28
/* 56E968 802186C8 3C0143B4 */ lui $at, 0x43b4
/* 56E96C 802186CC 4481C000 */ mtc1 $at, $f24
/* 56E970 802186D0 C60400A0 */ lwc1 $f4, 0xa0($s0)
/* 56E974 802186D4 46802120 */ cvt.s.w $f4, $f4
/* 56E978 802186D8 E7A40018 */ swc1 $f4, 0x18($sp)
/* 56E97C 802186DC 0C00A85B */ jal sin_rad
/* 56E980 802186E0 46186303 */ div.s $f12, $f12, $f24
/* 56E984 802186E4 46000021 */ cvt.d.s $f0, $f0
/* 56E988 802186E8 3C013FF0 */ lui $at, 0x3ff0
/* 56E98C 802186EC 4481B800 */ mtc1 $at, $f23
/* 56E990 802186F0 4480B000 */ mtc1 $zero, $f22
/* 56E994 802186F4 C7A40010 */ lwc1 $f4, 0x10($sp)
/* 56E998 802186F8 4620B001 */ sub.d $f0, $f22, $f0
/* 56E99C 802186FC 46002521 */ cvt.d.s $f20, $f4
/* 56E9A0 80218700 4620A502 */ mul.d $f20, $f20, $f0
/* 56E9A4 80218704 00000000 */ nop
/* 56E9A8 80218708 C60C00A8 */ lwc1 $f12, 0xa8($s0)
/* 56E9AC 8021870C 46806320 */ cvt.s.w $f12, $f12
/* 56E9B0 80218710 461A6302 */ mul.s $f12, $f12, $f26
/* 56E9B4 80218714 00000000 */ nop
/* 56E9B8 80218718 0C00A85B */ jal sin_rad
/* 56E9BC 8021871C 46186303 */ div.s $f12, $f12, $f24
/* 56E9C0 80218720 4600E002 */ mul.s $f0, $f28, $f0
/* 56E9C4 80218724 00000000 */ nop
/* 56E9C8 80218728 8E0200A8 */ lw $v0, 0xa8($s0)
/* 56E9CC 8021872C 00021040 */ sll $v0, $v0, 1
/* 56E9D0 80218730 44826000 */ mtc1 $v0, $f12
/* 56E9D4 80218734 00000000 */ nop
/* 56E9D8 80218738 46806320 */ cvt.s.w $f12, $f12
/* 56E9DC 8021873C 461A6302 */ mul.s $f12, $f12, $f26
/* 56E9E0 80218740 00000000 */ nop
/* 56E9E4 80218744 46000021 */ cvt.d.s $f0, $f0
/* 56E9E8 80218748 4620A500 */ add.d $f20, $f20, $f0
/* 56E9EC 8021874C 46186303 */ div.s $f12, $f12, $f24
/* 56E9F0 80218750 4620A520 */ cvt.s.d $f20, $f20
/* 56E9F4 80218754 0C00A85B */ jal sin_rad
/* 56E9F8 80218758 E7B40010 */ swc1 $f20, 0x10($sp)
/* 56E9FC 8021875C C60C00A8 */ lwc1 $f12, 0xa8($s0)
/* 56EA00 80218760 46806320 */ cvt.s.w $f12, $f12
/* 56EA04 80218764 461A6302 */ mul.s $f12, $f12, $f26
/* 56EA08 80218768 00000000 */ nop
/* 56EA0C 8021876C 3C0142B4 */ lui $at, 0x42b4
/* 56EA10 80218770 44811000 */ mtc1 $at, $f2
/* 56EA14 80218774 00000000 */ nop
/* 56EA18 80218778 46020002 */ mul.s $f0, $f0, $f2
/* 56EA1C 8021877C 00000000 */ nop
/* 56EA20 80218780 C7A40014 */ lwc1 $f4, 0x14($sp)
/* 56EA24 80218784 46002100 */ add.s $f4, $f4, $f0
/* 56EA28 80218788 46186303 */ div.s $f12, $f12, $f24
/* 56EA2C 8021878C 0C00A85B */ jal sin_rad
/* 56EA30 80218790 E7A40014 */ swc1 $f4, 0x14($sp)
/* 56EA34 80218794 C60C00A8 */ lwc1 $f12, 0xa8($s0)
/* 56EA38 80218798 46806320 */ cvt.s.w $f12, $f12
/* 56EA3C 8021879C 461A6302 */ mul.s $f12, $f12, $f26
/* 56EA40 802187A0 00000000 */ nop
/* 56EA44 802187A4 46000021 */ cvt.d.s $f0, $f0
/* 56EA48 802187A8 4620B581 */ sub.d $f22, $f22, $f0
/* 56EA4C 802187AC 4600F521 */ cvt.d.s $f20, $f30
/* 56EA50 802187B0 4636A502 */ mul.d $f20, $f20, $f22
/* 56EA54 802187B4 00000000 */ nop
/* 56EA58 802187B8 0C00A85B */ jal sin_rad
/* 56EA5C 802187BC 46186303 */ div.s $f12, $f12, $f24
/* 56EA60 802187C0 C7A40018 */ lwc1 $f4, 0x18($sp)
/* 56EA64 802187C4 46002002 */ mul.s $f0, $f4, $f0
/* 56EA68 802187C8 00000000 */ nop
/* 56EA6C 802187CC 46000021 */ cvt.d.s $f0, $f0
/* 56EA70 802187D0 4620A500 */ add.d $f20, $f20, $f0
/* 56EA74 802187D4 08086254 */ j .L80218950
/* 56EA78 802187D8 2402002D */ addiu $v0, $zero, 0x2d
.L802187DC:
/* 56EA7C 802187DC 8E0200A8 */ lw $v0, 0xa8($s0)
/* 56EA80 802187E0 8E0300A4 */ lw $v1, 0xa4($s0)
/* 56EA84 802187E4 00431021 */ addu $v0, $v0, $v1
/* 56EA88 802187E8 AE0200A8 */ sw $v0, 0xa8($s0)
/* 56EA8C 802187EC 2842005B */ slti $v0, $v0, 0x5b
/* 56EA90 802187F0 14400002 */ bnez $v0, .L802187FC
/* 56EA94 802187F4 2402005A */ addiu $v0, $zero, 0x5a
/* 56EA98 802187F8 AE0200A8 */ sw $v0, 0xa8($s0)
.L802187FC:
/* 56EA9C 802187FC C6040090 */ lwc1 $f4, 0x90($s0)
/* 56EAA0 80218800 46802120 */ cvt.s.w $f4, $f4
/* 56EAA4 80218804 E7A40010 */ swc1 $f4, 0x10($sp)
/* 56EAA8 80218808 C6040094 */ lwc1 $f4, 0x94($s0)
/* 56EAAC 8021880C 46802120 */ cvt.s.w $f4, $f4
/* 56EAB0 80218810 E7A40014 */ swc1 $f4, 0x14($sp)
/* 56EAB4 80218814 C60C00A8 */ lwc1 $f12, 0xa8($s0)
/* 56EAB8 80218818 46806320 */ cvt.s.w $f12, $f12
/* 56EABC 8021881C 3C0140C9 */ lui $at, 0x40c9
/* 56EAC0 80218820 34210FD0 */ ori $at, $at, 0xfd0
/* 56EAC4 80218824 4481D000 */ mtc1 $at, $f26
/* 56EAC8 80218828 C61E0098 */ lwc1 $f30, 0x98($s0)
/* 56EACC 8021882C 4680F7A0 */ cvt.s.w $f30, $f30
/* 56EAD0 80218830 461A6302 */ mul.s $f12, $f12, $f26
/* 56EAD4 80218834 00000000 */ nop
/* 56EAD8 80218838 C61C009C */ lwc1 $f28, 0x9c($s0)
/* 56EADC 8021883C 4680E720 */ cvt.s.w $f28, $f28
/* 56EAE0 80218840 3C0143B4 */ lui $at, 0x43b4
/* 56EAE4 80218844 4481C000 */ mtc1 $at, $f24
/* 56EAE8 80218848 C60400A0 */ lwc1 $f4, 0xa0($s0)
/* 56EAEC 8021884C 46802120 */ cvt.s.w $f4, $f4
/* 56EAF0 80218850 E7A40018 */ swc1 $f4, 0x18($sp)
/* 56EAF4 80218854 0C00A85B */ jal sin_rad
/* 56EAF8 80218858 46186303 */ div.s $f12, $f12, $f24
/* 56EAFC 8021885C 46000021 */ cvt.d.s $f0, $f0
/* 56EB00 80218860 3C013FF0 */ lui $at, 0x3ff0
/* 56EB04 80218864 4481B800 */ mtc1 $at, $f23
/* 56EB08 80218868 4480B000 */ mtc1 $zero, $f22
/* 56EB0C 8021886C C7A40010 */ lwc1 $f4, 0x10($sp)
/* 56EB10 80218870 4620B001 */ sub.d $f0, $f22, $f0
/* 56EB14 80218874 46002521 */ cvt.d.s $f20, $f4
/* 56EB18 80218878 4620A502 */ mul.d $f20, $f20, $f0
/* 56EB1C 8021887C 00000000 */ nop
/* 56EB20 80218880 C60C00A8 */ lwc1 $f12, 0xa8($s0)
/* 56EB24 80218884 46806320 */ cvt.s.w $f12, $f12
/* 56EB28 80218888 461A6302 */ mul.s $f12, $f12, $f26
/* 56EB2C 8021888C 00000000 */ nop
/* 56EB30 80218890 0C00A85B */ jal sin_rad
/* 56EB34 80218894 46186303 */ div.s $f12, $f12, $f24
/* 56EB38 80218898 4600E002 */ mul.s $f0, $f28, $f0
/* 56EB3C 8021889C 00000000 */ nop
/* 56EB40 802188A0 8E0200A8 */ lw $v0, 0xa8($s0)
/* 56EB44 802188A4 00021040 */ sll $v0, $v0, 1
/* 56EB48 802188A8 44826000 */ mtc1 $v0, $f12
/* 56EB4C 802188AC 00000000 */ nop
/* 56EB50 802188B0 46806320 */ cvt.s.w $f12, $f12
/* 56EB54 802188B4 461A6302 */ mul.s $f12, $f12, $f26
/* 56EB58 802188B8 00000000 */ nop
/* 56EB5C 802188BC 46000021 */ cvt.d.s $f0, $f0
/* 56EB60 802188C0 4620A500 */ add.d $f20, $f20, $f0
/* 56EB64 802188C4 46186303 */ div.s $f12, $f12, $f24
/* 56EB68 802188C8 4620A520 */ cvt.s.d $f20, $f20
/* 56EB6C 802188CC 0C00A85B */ jal sin_rad
/* 56EB70 802188D0 E7B40010 */ swc1 $f20, 0x10($sp)
/* 56EB74 802188D4 C60C00A8 */ lwc1 $f12, 0xa8($s0)
/* 56EB78 802188D8 46806320 */ cvt.s.w $f12, $f12
/* 56EB7C 802188DC 461A6302 */ mul.s $f12, $f12, $f26
/* 56EB80 802188E0 00000000 */ nop
/* 56EB84 802188E4 3C0142B4 */ lui $at, 0x42b4
/* 56EB88 802188E8 44811000 */ mtc1 $at, $f2
/* 56EB8C 802188EC 00000000 */ nop
/* 56EB90 802188F0 46020002 */ mul.s $f0, $f0, $f2
/* 56EB94 802188F4 00000000 */ nop
/* 56EB98 802188F8 C7A40014 */ lwc1 $f4, 0x14($sp)
/* 56EB9C 802188FC 46002100 */ add.s $f4, $f4, $f0
/* 56EBA0 80218900 46186303 */ div.s $f12, $f12, $f24
/* 56EBA4 80218904 0C00A85B */ jal sin_rad
/* 56EBA8 80218908 E7A40014 */ swc1 $f4, 0x14($sp)
/* 56EBAC 8021890C C60C00A8 */ lwc1 $f12, 0xa8($s0)
/* 56EBB0 80218910 46806320 */ cvt.s.w $f12, $f12
/* 56EBB4 80218914 461A6302 */ mul.s $f12, $f12, $f26
/* 56EBB8 80218918 00000000 */ nop
/* 56EBBC 8021891C 46000021 */ cvt.d.s $f0, $f0
/* 56EBC0 80218920 4620B581 */ sub.d $f22, $f22, $f0
/* 56EBC4 80218924 4600F521 */ cvt.d.s $f20, $f30
/* 56EBC8 80218928 4636A502 */ mul.d $f20, $f20, $f22
/* 56EBCC 8021892C 00000000 */ nop
/* 56EBD0 80218930 0C00A85B */ jal sin_rad
/* 56EBD4 80218934 46186303 */ div.s $f12, $f12, $f24
/* 56EBD8 80218938 C7A40018 */ lwc1 $f4, 0x18($sp)
/* 56EBDC 8021893C 46002002 */ mul.s $f0, $f4, $f0
/* 56EBE0 80218940 00000000 */ nop
/* 56EBE4 80218944 46000021 */ cvt.d.s $f0, $f0
/* 56EBE8 80218948 4620A500 */ add.d $f20, $f20, $f0
/* 56EBEC 8021894C 2402005A */ addiu $v0, $zero, 0x5a
.L80218950:
/* 56EBF0 80218950 8E0300A8 */ lw $v1, 0xa8($s0)
/* 56EBF4 80218954 14620002 */ bne $v1, $v0, .L80218960
/* 56EBF8 80218958 4620A7A0 */ cvt.s.d $f30, $f20
/* 56EBFC 8021895C AE1100B0 */ sw $s1, 0xb0($s0)
.L80218960:
/* 56EC00 80218960 C7A40010 */ lwc1 $f4, 0x10($sp)
/* 56EC04 80218964 4600210D */ trunc.w.s $f4, $f4
/* 56EC08 80218968 E6040084 */ swc1 $f4, 0x84($s0)
/* 56EC0C 8021896C C7A40014 */ lwc1 $f4, 0x14($sp)
/* 56EC10 80218970 4600210D */ trunc.w.s $f4, $f4
/* 56EC14 80218974 E6040088 */ swc1 $f4, 0x88($s0)
/* 56EC18 80218978 4600F10D */ trunc.w.s $f4, $f30
/* 56EC1C 8021897C E604008C */ swc1 $f4, 0x8c($s0)
/* 56EC20 80218980 8FBF0028 */ lw $ra, 0x28($sp)
/* 56EC24 80218984 8FB10024 */ lw $s1, 0x24($sp)
/* 56EC28 80218988 8FB00020 */ lw $s0, 0x20($sp)
/* 56EC2C 8021898C D7BE0058 */ ldc1 $f30, 0x58($sp)
/* 56EC30 80218990 D7BC0050 */ ldc1 $f28, 0x50($sp)
/* 56EC34 80218994 D7BA0048 */ ldc1 $f26, 0x48($sp)
/* 56EC38 80218998 D7B80040 */ ldc1 $f24, 0x40($sp)
/* 56EC3C 8021899C D7B60038 */ ldc1 $f22, 0x38($sp)
/* 56EC40 802189A0 D7B40030 */ ldc1 $f20, 0x30($sp)
/* 56EC44 802189A4 24020002 */ addiu $v0, $zero, 2
/* 56EC48 802189A8 03E00008 */ jr $ra
/* 56EC4C 802189AC 27BD0060 */ addiu $sp, $sp, 0x60