papermario/asm/nonmatchings/code_337240/func_E002254C.s
Ethan Roseman a8e550dd9a yee
2020-10-17 22:27:25 -04:00

281 lines
14 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_E002254C
/* 33778C E002254C 27BDFFA0 */ addiu $sp, $sp, -0x60
/* 337790 E0022550 AFB50024 */ sw $s5, 0x24($sp)
/* 337794 E0022554 0080A82D */ daddu $s5, $a0, $zero
/* 337798 E0022558 AFBF0034 */ sw $ra, 0x34($sp)
/* 33779C E002255C AFBE0030 */ sw $fp, 0x30($sp)
/* 3377A0 E0022560 AFB7002C */ sw $s7, 0x2c($sp)
/* 3377A4 E0022564 AFB60028 */ sw $s6, 0x28($sp)
/* 3377A8 E0022568 AFB40020 */ sw $s4, 0x20($sp)
/* 3377AC E002256C AFB3001C */ sw $s3, 0x1c($sp)
/* 3377B0 E0022570 AFB20018 */ sw $s2, 0x18($sp)
/* 3377B4 E0022574 AFB10014 */ sw $s1, 0x14($sp)
/* 3377B8 E0022578 AFB00010 */ sw $s0, 0x10($sp)
/* 3377BC E002257C F7BC0058 */ sdc1 $f28, 0x58($sp)
/* 3377C0 E0022580 F7BA0050 */ sdc1 $f26, 0x50($sp)
/* 3377C4 E0022584 F7B80048 */ sdc1 $f24, 0x48($sp)
/* 3377C8 E0022588 F7B60040 */ sdc1 $f22, 0x40($sp)
/* 3377CC E002258C F7B40038 */ sdc1 $f20, 0x38($sp)
/* 3377D0 E0022590 8EA4000C */ lw $a0, 0xc($s5)
/* 3377D4 E0022594 0000A02D */ daddu $s4, $zero, $zero
/* 3377D8 E0022598 0080F02D */ daddu $fp, $a0, $zero
/* 3377DC E002259C 8C830020 */ lw $v1, 0x20($a0)
/* 3377E0 E00225A0 8C820024 */ lw $v0, 0x24($a0)
/* 3377E4 E00225A4 8C930000 */ lw $s3, ($a0)
/* 3377E8 E00225A8 24630001 */ addiu $v1, $v1, 1
/* 3377EC E00225AC 0060902D */ daddu $s2, $v1, $zero
/* 3377F0 E00225B0 2442FFFF */ addiu $v0, $v0, -1
/* 3377F4 E00225B4 AC820024 */ sw $v0, 0x24($a0)
/* 3377F8 E00225B8 12600004 */ beqz $s3, .LE00225CC
/* 3377FC E00225BC AC920020 */ sw $s2, 0x20($a0)
/* 337800 E00225C0 2402000A */ addiu $v0, $zero, 0xa
/* 337804 E00225C4 56620004 */ bnel $s3, $v0, .LE00225D8
/* 337808 E00225C8 24840030 */ addiu $a0, $a0, 0x30
.LE00225CC:
/* 33780C E00225CC 8C820024 */ lw $v0, 0x24($a0)
/* 337810 E00225D0 044000D0 */ bltz $v0, .LE0022914
/* 337814 E00225D4 24840030 */ addiu $a0, $a0, 0x30
.LE00225D8:
/* 337818 E00225D8 8EA20008 */ lw $v0, 8($s5)
/* 33781C E00225DC 2442FFFF */ addiu $v0, $v0, -1
/* 337820 E00225E0 184000C3 */ blez $v0, .LE00228F0
/* 337824 E00225E4 0000882D */ daddu $s1, $zero, $zero
/* 337828 E00225E8 2417000A */ addiu $s7, $zero, 0xa
/* 33782C E00225EC 3C16E002 */ lui $s6, 0xe002
/* 337830 E00225F0 26D62D1C */ addiu $s6, $s6, 0x2d1c
/* 337834 E00225F4 2490001C */ addiu $s0, $a0, 0x1c
/* 337838 E00225F8 3C01E002 */ lui $at, 0xe002
/* 33783C E00225FC D43A2D58 */ ldc1 $f26, 0x2d58($at)
/* 337840 E0022600 3C01E002 */ lui $at, 0xe002
/* 337844 E0022604 D43C2D60 */ ldc1 $f28, 0x2d60($at)
/* 337848 E0022608 3C01E002 */ lui $at, 0xe002
/* 33784C E002260C D4382D68 */ ldc1 $f24, 0x2d68($at)
.LE0022610:
/* 337850 E0022610 02511021 */ addu $v0, $s2, $s1
/* 337854 E0022614 30420007 */ andi $v0, $v0, 7
/* 337858 E0022618 12600005 */ beqz $s3, .LE0022630
/* 33785C E002261C AE020010 */ sw $v0, 0x10($s0)
/* 337860 E0022620 12770057 */ beq $s3, $s7, .LE0022780
/* 337864 E0022624 00000000 */ nop
/* 337868 E0022628 08008A00 */ j .LE0022800
/* 33786C E002262C 00000000 */ nop
.LE0022630:
/* 337870 E0022630 C600FFFC */ lwc1 $f0, -4($s0)
/* 337874 E0022634 3C01E002 */ lui $at, 0xe002
/* 337878 E0022638 D4222D70 */ ldc1 $f2, 0x2d70($at)
/* 33787C E002263C 46000021 */ cvt.d.s $f0, $f0
/* 337880 E0022640 46220000 */ add.d $f0, $f0, $f2
/* 337884 E0022644 2644FFFF */ addiu $a0, $s2, -1
/* 337888 E0022648 28820007 */ slti $v0, $a0, 7
/* 33788C E002264C 46200020 */ cvt.s.d $f0, $f0
/* 337890 E0022650 10400029 */ beqz $v0, .LE00226F8
/* 337894 E0022654 E600FFFC */ swc1 $f0, -4($s0)
/* 337898 E0022658 3C03E002 */ lui $v1, 0xe002
/* 33789C E002265C 24632D14 */ addiu $v1, $v1, 0x2d14
/* 3378A0 E0022660 00831821 */ addu $v1, $a0, $v1
/* 3378A4 E0022664 90620000 */ lbu $v0, ($v1)
/* 3378A8 E0022668 C600FFF4 */ lwc1 $f0, -0xc($s0)
/* 3378AC E002266C 44821000 */ mtc1 $v0, $f2
/* 3378B0 E0022670 00000000 */ nop
/* 3378B4 E0022674 468010A0 */ cvt.s.w $f2, $f2
/* 3378B8 E0022678 46020002 */ mul.s $f0, $f0, $f2
/* 3378BC E002267C 00000000 */ nop
/* 3378C0 E0022680 46000021 */ cvt.d.s $f0, $f0
/* 3378C4 E0022684 463A0002 */ mul.d $f0, $f0, $f26
/* 3378C8 E0022688 00000000 */ nop
/* 3378CC E002268C 46200020 */ cvt.s.d $f0, $f0
/* 3378D0 E0022690 E600FFE8 */ swc1 $f0, -0x18($s0)
/* 3378D4 E0022694 90620000 */ lbu $v0, ($v1)
/* 3378D8 E0022698 C602FFF8 */ lwc1 $f2, -8($s0)
/* 3378DC E002269C 44820000 */ mtc1 $v0, $f0
/* 3378E0 E00226A0 00000000 */ nop
/* 3378E4 E00226A4 46800020 */ cvt.s.w $f0, $f0
/* 3378E8 E00226A8 46001082 */ mul.s $f2, $f2, $f0
/* 3378EC E00226AC 00000000 */ nop
/* 3378F0 E00226B0 460010A1 */ cvt.d.s $f2, $f2
/* 3378F4 E00226B4 463A1082 */ mul.d $f2, $f2, $f26
/* 3378F8 E00226B8 00000000 */ nop
/* 3378FC E00226BC C600FFFC */ lwc1 $f0, -4($s0)
/* 337900 E00226C0 46000021 */ cvt.d.s $f0, $f0
/* 337904 E00226C4 46201080 */ add.d $f2, $f2, $f0
/* 337908 E00226C8 00961021 */ addu $v0, $a0, $s6
/* 33790C E00226CC 462010A0 */ cvt.s.d $f2, $f2
/* 337910 E00226D0 E602FFEC */ swc1 $f2, -0x14($s0)
/* 337914 E00226D4 90420000 */ lbu $v0, ($v0)
/* 337918 E00226D8 44820000 */ mtc1 $v0, $f0
/* 33791C E00226DC 00000000 */ nop
/* 337920 E00226E0 46800020 */ cvt.s.w $f0, $f0
/* 337924 E00226E4 46000021 */ cvt.d.s $f0, $f0
/* 337928 E00226E8 463A0002 */ mul.d $f0, $f0, $f26
/* 33792C E00226EC 00000000 */ nop
/* 337930 E00226F0 08008A35 */ j .LE00228D4
/* 337934 E00226F4 46200020 */ cvt.s.d $f0, $f0
.LE00226F8:
/* 337938 E00226F8 24040168 */ addiu $a0, $zero, 0x168
/* 33793C E00226FC 0C080011 */ jal func_E0200044
/* 337940 E0022700 262500B1 */ addiu $a1, $s1, 0xb1
/* 337944 E0022704 32230003 */ andi $v1, $s1, 3
/* 337948 E0022708 3C013F00 */ lui $at, 0x3f00
/* 33794C E002270C 44810000 */ mtc1 $at, $f0
/* 337950 E0022710 4483A000 */ mtc1 $v1, $f20
/* 337954 E0022714 00000000 */ nop
/* 337958 E0022718 4680A520 */ cvt.s.w $f20, $f20
/* 33795C E002271C 4600A502 */ mul.s $f20, $f20, $f0
/* 337960 E0022720 00000000 */ nop
/* 337964 E0022724 4482B000 */ mtc1 $v0, $f22
/* 337968 E0022728 00000000 */ nop
/* 33796C E002272C 4680B5A0 */ cvt.s.w $f22, $f22
/* 337970 E0022730 3C013F80 */ lui $at, 0x3f80
/* 337974 E0022734 44810000 */ mtc1 $at, $f0
/* 337978 E0022738 4600B306 */ mov.s $f12, $f22
/* 33797C E002273C 4600A500 */ add.s $f20, $f20, $f0
/* 337980 E0022740 0C080140 */ jal func_E0200500
/* 337984 E0022744 AFD70000 */ sw $s7, ($fp)
/* 337988 E0022748 4600A002 */ mul.s $f0, $f20, $f0
/* 33798C E002274C 00000000 */ nop
/* 337990 E0022750 4600B306 */ mov.s $f12, $f22
/* 337994 E0022754 0C080144 */ jal func_E0200510
/* 337998 E0022758 E600FFF4 */ swc1 $f0, -0xc($s0)
/* 33799C E002275C 4600A502 */ mul.s $f20, $f20, $f0
/* 3379A0 E0022760 00000000 */ nop
/* 3379A4 E0022764 3C01BD4C */ lui $at, 0xbd4c
/* 3379A8 E0022768 3421CCCD */ ori $at, $at, 0xcccd
/* 3379AC E002276C 44810000 */ mtc1 $at, $f0
/* 3379B0 E0022770 00000000 */ nop
/* 3379B4 E0022774 E600FFFC */ swc1 $f0, -4($s0)
/* 3379B8 E0022778 08008A36 */ j .LE00228D8
/* 3379BC E002277C E614FFF8 */ swc1 $f20, -8($s0)
.LE0022780:
/* 3379C0 E0022780 C600FFF4 */ lwc1 $f0, -0xc($s0)
/* 3379C4 E0022784 46000021 */ cvt.d.s $f0, $f0
/* 3379C8 E0022788 463C0002 */ mul.d $f0, $f0, $f28
/* 3379CC E002278C 00000000 */ nop
/* 3379D0 E0022790 C602FFF8 */ lwc1 $f2, -8($s0)
/* 3379D4 E0022794 460010A1 */ cvt.d.s $f2, $f2
/* 3379D8 E0022798 463C1082 */ mul.d $f2, $f2, $f28
/* 3379DC E002279C 00000000 */ nop
/* 3379E0 E00227A0 C6040000 */ lwc1 $f4, ($s0)
/* 3379E4 E00227A4 46002121 */ cvt.d.s $f4, $f4
/* 3379E8 E00227A8 4624C181 */ sub.d $f6, $f24, $f4
/* 3379EC E00227AC 46383182 */ mul.d $f6, $f6, $f24
/* 3379F0 E00227B0 00000000 */ nop
/* 3379F4 E00227B4 C608FFE8 */ lwc1 $f8, -0x18($s0)
/* 3379F8 E00227B8 46200020 */ cvt.s.d $f0, $f0
/* 3379FC E00227BC E600FFF4 */ swc1 $f0, -0xc($s0)
/* 337A00 E00227C0 C600FFFC */ lwc1 $f0, -4($s0)
/* 337A04 E00227C4 462010A0 */ cvt.s.d $f2, $f2
/* 337A08 E00227C8 46001000 */ add.s $f0, $f2, $f0
/* 337A0C E00227CC C60AFFF4 */ lwc1 $f10, -0xc($s0)
/* 337A10 E00227D0 460A4200 */ add.s $f8, $f8, $f10
/* 337A14 E00227D4 E602FFF8 */ swc1 $f2, -8($s0)
/* 337A18 E00227D8 46262100 */ add.d $f4, $f4, $f6
/* 337A1C E00227DC E600FFF8 */ swc1 $f0, -8($s0)
/* 337A20 E00227E0 C600FFEC */ lwc1 $f0, -0x14($s0)
/* 337A24 E00227E4 C602FFF8 */ lwc1 $f2, -8($s0)
/* 337A28 E00227E8 E608FFE8 */ swc1 $f8, -0x18($s0)
/* 337A2C E00227EC 46020000 */ add.s $f0, $f0, $f2
/* 337A30 E00227F0 46202120 */ cvt.s.d $f4, $f4
/* 337A34 E00227F4 E6040000 */ swc1 $f4, ($s0)
/* 337A38 E00227F8 08008A36 */ j .LE00228D8
/* 337A3C E00227FC E600FFEC */ swc1 $f0, -0x14($s0)
.LE0022800:
/* 337A40 E0022800 C600FFF4 */ lwc1 $f0, -0xc($s0)
/* 337A44 E0022804 3C01E002 */ lui $at, 0xe002
/* 337A48 E0022808 D4222D78 */ ldc1 $f2, 0x2d78($at)
/* 337A4C E002280C 46000021 */ cvt.d.s $f0, $f0
/* 337A50 E0022810 46220002 */ mul.d $f0, $f0, $f2
/* 337A54 E0022814 00000000 */ nop
/* 337A58 E0022818 C604FFF8 */ lwc1 $f4, -8($s0)
/* 337A5C E002281C C602FFFC */ lwc1 $f2, -4($s0)
/* 337A60 E0022820 46022100 */ add.s $f4, $f4, $f2
/* 337A64 E0022824 8E020008 */ lw $v0, 8($s0)
/* 337A68 E0022828 E604FFF8 */ swc1 $f4, -8($s0)
/* 337A6C E002282C 46200020 */ cvt.s.d $f0, $f0
/* 337A70 E0022830 E600FFF4 */ swc1 $f0, -0xc($s0)
/* 337A74 E0022834 04410002 */ bgez $v0, .LE0022840
/* 337A78 E0022838 46000086 */ mov.s $f2, $f0
/* 337A7C E002283C 26940001 */ addiu $s4, $s4, 1
.LE0022840:
/* 337A80 E0022840 C600FFE8 */ lwc1 $f0, -0x18($s0)
/* 337A84 E0022844 8E020008 */ lw $v0, 8($s0)
/* 337A88 E0022848 46020000 */ add.s $f0, $f0, $f2
/* 337A8C E002284C C602FFEC */ lwc1 $f2, -0x14($s0)
/* 337A90 E0022850 2442FFFF */ addiu $v0, $v0, -1
/* 337A94 E0022854 AE020008 */ sw $v0, 8($s0)
/* 337A98 E0022858 46041080 */ add.s $f2, $f2, $f4
/* 337A9C E002285C 2C420015 */ sltiu $v0, $v0, 0x15
/* 337AA0 E0022860 E600FFE8 */ swc1 $f0, -0x18($s0)
/* 337AA4 E0022864 14400004 */ bnez $v0, .LE0022878
/* 337AA8 E0022868 E602FFEC */ swc1 $f2, -0x14($s0)
/* 337AAC E002286C 2402FFFF */ addiu $v0, $zero, -1
/* 337AB0 E0022870 08008A36 */ j .LE00228D8
/* 337AB4 E0022874 AE020010 */ sw $v0, 0x10($s0)
.LE0022878:
/* 337AB8 E0022878 8E030004 */ lw $v1, 4($s0)
/* 337ABC E002287C 24620001 */ addiu $v0, $v1, 1
/* 337AC0 E0022880 0040902D */ daddu $s2, $v0, $zero
/* 337AC4 E0022884 28620007 */ slti $v0, $v1, 7
/* 337AC8 E0022888 1040000B */ beqz $v0, .LE00228B8
/* 337ACC E002288C AE120004 */ sw $s2, 4($s0)
/* 337AD0 E0022890 00761021 */ addu $v0, $v1, $s6
/* 337AD4 E0022894 90420000 */ lbu $v0, ($v0)
/* 337AD8 E0022898 44820000 */ mtc1 $v0, $f0
/* 337ADC E002289C 00000000 */ nop
/* 337AE0 E00228A0 46800020 */ cvt.s.w $f0, $f0
/* 337AE4 E00228A4 46000021 */ cvt.d.s $f0, $f0
/* 337AE8 E00228A8 463A0002 */ mul.d $f0, $f0, $f26
/* 337AEC E00228AC 00000000 */ nop
/* 337AF0 E00228B0 08008A35 */ j .LE00228D4
/* 337AF4 E00228B4 46200020 */ cvt.s.d $f0, $f0
.LE00228B8:
/* 337AF8 E00228B8 C6000000 */ lwc1 $f0, ($s0)
/* 337AFC E00228BC 46000021 */ cvt.d.s $f0, $f0
/* 337B00 E00228C0 4620C081 */ sub.d $f2, $f24, $f0
/* 337B04 E00228C4 46381082 */ mul.d $f2, $f2, $f24
/* 337B08 E00228C8 00000000 */ nop
/* 337B0C E00228CC 46220000 */ add.d $f0, $f0, $f2
/* 337B10 E00228D0 46200020 */ cvt.s.d $f0, $f0
.LE00228D4:
/* 337B14 E00228D4 E6000000 */ swc1 $f0, ($s0)
.LE00228D8:
/* 337B18 E00228D8 26310001 */ addiu $s1, $s1, 1
/* 337B1C E00228DC 8EA20008 */ lw $v0, 8($s5)
/* 337B20 E00228E0 2442FFFF */ addiu $v0, $v0, -1
/* 337B24 E00228E4 0222102A */ slt $v0, $s1, $v0
/* 337B28 E00228E8 1440FF49 */ bnez $v0, .LE0022610
/* 337B2C E00228EC 26100030 */ addiu $s0, $s0, 0x30
.LE00228F0:
/* 337B30 E00228F0 1260000A */ beqz $s3, .LE002291C
/* 337B34 E00228F4 2402000A */ addiu $v0, $zero, 0xa
/* 337B38 E00228F8 12620008 */ beq $s3, $v0, .LE002291C
/* 337B3C E00228FC 00000000 */ nop
/* 337B40 E0022900 8EA20008 */ lw $v0, 8($s5)
/* 337B44 E0022904 2442FFFF */ addiu $v0, $v0, -1
/* 337B48 E0022908 0282102A */ slt $v0, $s4, $v0
/* 337B4C E002290C 14400003 */ bnez $v0, .LE002291C
/* 337B50 E0022910 00000000 */ nop
.LE0022914:
/* 337B54 E0022914 0C080128 */ jal func_E02004A0
/* 337B58 E0022918 02A0202D */ daddu $a0, $s5, $zero
.LE002291C:
/* 337B5C E002291C 8FBF0034 */ lw $ra, 0x34($sp)
/* 337B60 E0022920 8FBE0030 */ lw $fp, 0x30($sp)
/* 337B64 E0022924 8FB7002C */ lw $s7, 0x2c($sp)
/* 337B68 E0022928 8FB60028 */ lw $s6, 0x28($sp)
/* 337B6C E002292C 8FB50024 */ lw $s5, 0x24($sp)
/* 337B70 E0022930 8FB40020 */ lw $s4, 0x20($sp)
/* 337B74 E0022934 8FB3001C */ lw $s3, 0x1c($sp)
/* 337B78 E0022938 8FB20018 */ lw $s2, 0x18($sp)
/* 337B7C E002293C 8FB10014 */ lw $s1, 0x14($sp)
/* 337B80 E0022940 8FB00010 */ lw $s0, 0x10($sp)
/* 337B84 E0022944 D7BC0058 */ ldc1 $f28, 0x58($sp)
/* 337B88 E0022948 D7BA0050 */ ldc1 $f26, 0x50($sp)
/* 337B8C E002294C D7B80048 */ ldc1 $f24, 0x48($sp)
/* 337B90 E0022950 D7B60040 */ ldc1 $f22, 0x40($sp)
/* 337B94 E0022954 D7B40038 */ ldc1 $f20, 0x38($sp)
/* 337B98 E0022958 03E00008 */ jr $ra
/* 337B9C E002295C 27BD0060 */ addiu $sp, $sp, 0x60