.set noat # allow manual use of $at .set noreorder # don't insert nops after branches glabel func_E0044424 /* 355384 E0044424 27BDFFA8 */ addiu $sp, $sp, -0x58 /* 355388 E0044428 AFB40020 */ sw $s4, 0x20($sp) /* 35538C E004442C 0080A02D */ daddu $s4, $a0, $zero /* 355390 E0044430 AFBF0034 */ sw $ra, 0x34($sp) /* 355394 E0044434 AFBE0030 */ sw $fp, 0x30($sp) /* 355398 E0044438 AFB7002C */ sw $s7, 0x2c($sp) /* 35539C E004443C AFB60028 */ sw $s6, 0x28($sp) /* 3553A0 E0044440 AFB50024 */ sw $s5, 0x24($sp) /* 3553A4 E0044444 AFB3001C */ sw $s3, 0x1c($sp) /* 3553A8 E0044448 AFB20018 */ sw $s2, 0x18($sp) /* 3553AC E004444C AFB10014 */ sw $s1, 0x14($sp) /* 3553B0 E0044450 AFB00010 */ sw $s0, 0x10($sp) /* 3553B4 E0044454 F7BA0050 */ sdc1 $f26, 0x50($sp) /* 3553B8 E0044458 F7B80048 */ sdc1 $f24, 0x48($sp) /* 3553BC E004445C F7B60040 */ sdc1 $f22, 0x40($sp) /* 3553C0 E0044460 F7B40038 */ sdc1 $f20, 0x38($sp) /* 3553C4 E0044464 8E84000C */ lw $a0, 0xc($s4) /* 3553C8 E0044468 0000A82D */ daddu $s5, $zero, $zero /* 3553CC E004446C 0080B02D */ daddu $s6, $a0, $zero /* 3553D0 E0044470 8C820020 */ lw $v0, 0x20($a0) /* 3553D4 E0044474 8C830024 */ lw $v1, 0x24($a0) /* 3553D8 E0044478 84930002 */ lh $s3, 2($a0) /* 3553DC E004447C 24420001 */ addiu $v0, $v0, 1 /* 3553E0 E0044480 0040902D */ daddu $s2, $v0, $zero /* 3553E4 E0044484 2463FFFF */ addiu $v1, $v1, -1 /* 3553E8 E0044488 2E620002 */ sltiu $v0, $s3, 2 /* 3553EC E004448C AC830024 */ sw $v1, 0x24($a0) /* 3553F0 E0044490 14400006 */ bnez $v0, .LE00444AC /* 3553F4 E0044494 AC920020 */ sw $s2, 0x20($a0) /* 3553F8 E0044498 24020003 */ addiu $v0, $zero, 3 /* 3553FC E004449C 12620003 */ beq $s3, $v0, .LE00444AC /* 355400 E00444A0 2A62000A */ slti $v0, $s3, 0xa /* 355404 E00444A4 54400004 */ bnel $v0, $zero, .LE00444B8 /* 355408 E00444A8 2484002C */ addiu $a0, $a0, 0x2c .LE00444AC: /* 35540C E00444AC 8C820024 */ lw $v0, 0x24($a0) /* 355410 E00444B0 044000FA */ bltz $v0, .LE004489C /* 355414 E00444B4 2484002C */ addiu $a0, $a0, 0x2c .LE00444B8: /* 355418 E00444B8 8E820008 */ lw $v0, 8($s4) /* 35541C E00444BC 2442FFFF */ addiu $v0, $v0, -1 /* 355420 E00444C0 184000EA */ blez $v0, .LE004486C /* 355424 E00444C4 0000882D */ daddu $s1, $zero, $zero /* 355428 E00444C8 3C03E004 */ lui $v1, %hi(D_E0044E78) /* 35542C E00444CC 24634E78 */ addiu $v1, $v1, %lo(D_E0044E78) /* 355430 E00444D0 00131080 */ sll $v0, $s3, 2 /* 355434 E00444D4 0043F021 */ addu $fp, $v0, $v1 /* 355438 E00444D8 3C17E004 */ lui $s7, %hi(D_E0044E04) /* 35543C E00444DC 26F74E04 */ addiu $s7, $s7, %lo(D_E0044E04) /* 355440 E00444E0 24900014 */ addiu $s0, $a0, 0x14 /* 355444 E00444E4 3C01E004 */ lui $at, %hi(D_E0044E60) /* 355448 E00444E8 D4384E60 */ ldc1 $f24, %lo(D_E0044E60)($at) /* 35544C E00444EC 3C01E004 */ lui $at, %hi(D_E0044E68) /* 355450 E00444F0 D43A4E68 */ ldc1 $f26, %lo(D_E0044E68)($at) /* 355454 E00444F4 3C01E004 */ lui $at, %hi(D_E0044E70) /* 355458 E00444F8 D4364E70 */ ldc1 $f22, %lo(D_E0044E70)($at) .LE00444FC: /* 35545C E00444FC 2E62001F */ sltiu $v0, $s3, 0x1f /* 355460 E0044500 10400081 */ beqz $v0, .LE0044708 /* 355464 E0044504 02511021 */ addu $v0, $s2, $s1 /* 355468 E0044508 8FC20000 */ lw $v0, ($fp) /* 35546C E004450C 00400008 */ jr $v0 /* 355470 E0044510 00000000 */ nop /* 355474 E0044514 02511021 */ addu $v0, $s2, $s1 /* 355478 E0044518 30420007 */ andi $v0, $v0, 7 /* 35547C E004451C 2643FFFF */ addiu $v1, $s2, -1 /* 355480 E0044520 C6000004 */ lwc1 $f0, 4($s0) /* 355484 E0044524 3C01E004 */ lui $at, %hi(D_E0044EF8) /* 355488 E0044528 D4224EF8 */ ldc1 $f2, %lo(D_E0044EF8)($at) /* 35548C E004452C 46000021 */ cvt.d.s $f0, $f0 /* 355490 E0044530 46220000 */ add.d $f0, $f0, $f2 /* 355494 E0044534 AE020014 */ sw $v0, 0x14($s0) /* 355498 E0044538 2862000E */ slti $v0, $v1, 0xe /* 35549C E004453C 46200020 */ cvt.s.d $f0, $f0 /* 3554A0 E0044540 10400017 */ beqz $v0, .LE00445A0 /* 3554A4 E0044544 E6000004 */ swc1 $f0, 4($s0) /* 3554A8 E0044548 3C02E004 */ lui $v0, %hi(D_E0044DF4) /* 3554AC E004454C 00431021 */ addu $v0, $v0, $v1 /* 3554B0 E0044550 90424DF4 */ lbu $v0, %lo(D_E0044DF4)($v0) /* 3554B4 E0044554 44820000 */ mtc1 $v0, $f0 /* 3554B8 E0044558 00000000 */ nop /* 3554BC E004455C 46800020 */ cvt.s.w $f0, $f0 /* 3554C0 E0044560 46000021 */ cvt.d.s $f0, $f0 /* 3554C4 E0044564 46380002 */ mul.d $f0, $f0, $f24 /* 3554C8 E0044568 00000000 */ nop /* 3554CC E004456C C604FFFC */ lwc1 $f4, -4($s0) /* 3554D0 E0044570 46200020 */ cvt.s.d $f0, $f0 /* 3554D4 E0044574 46002102 */ mul.s $f4, $f4, $f0 /* 3554D8 E0044578 00000000 */ nop /* 3554DC E004457C C6020000 */ lwc1 $f2, ($s0) /* 3554E0 E0044580 46001082 */ mul.s $f2, $f2, $f0 /* 3554E4 E0044584 00000000 */ nop /* 3554E8 E0044588 C6000004 */ lwc1 $f0, 4($s0) /* 3554EC E004458C 46001080 */ add.s $f2, $f2, $f0 /* 3554F0 E0044590 00771021 */ addu $v0, $v1, $s7 /* 3554F4 E0044594 E604FFF0 */ swc1 $f4, -0x10($s0) /* 3554F8 E0044598 080111B4 */ j .LE00446D0 /* 3554FC E004459C E602FFF4 */ swc1 $f2, -0xc($s0) .LE00445A0: /* 355500 E00445A0 8E820008 */ lw $v0, 8($s4) /* 355504 E00445A4 3C0143B4 */ lui $at, 0x43b4 /* 355508 E00445A8 44811000 */ mtc1 $at, $f2 /* 35550C E00445AC 2442FFFF */ addiu $v0, $v0, -1 /* 355510 E00445B0 44820000 */ mtc1 $v0, $f0 /* 355514 E00445B4 00000000 */ nop /* 355518 E00445B8 46800020 */ cvt.s.w $f0, $f0 /* 35551C E00445BC 46001083 */ div.s $f2, $f2, $f0 /* 355520 E00445C0 44910000 */ mtc1 $s1, $f0 /* 355524 E00445C4 00000000 */ nop /* 355528 E00445C8 46800020 */ cvt.s.w $f0, $f0 /* 35552C E00445CC 46001082 */ mul.s $f2, $f2, $f0 /* 355530 E00445D0 00000000 */ nop /* 355534 E00445D4 3C014270 */ lui $at, 0x4270 /* 355538 E00445D8 44810000 */ mtc1 $at, $f0 /* 35553C E00445DC 32220001 */ andi $v0, $s1, 1 /* 355540 E00445E0 10400005 */ beqz $v0, .LE00445F8 /* 355544 E00445E4 46001500 */ add.s $f20, $f2, $f0 /* 355548 E00445E8 3C0142F0 */ lui $at, 0x42f0 /* 35554C E00445EC 44810000 */ mtc1 $at, $f0 /* 355550 E00445F0 00000000 */ nop /* 355554 E00445F4 4600A501 */ sub.s $f20, $f20, $f0 .LE00445F8: /* 355558 E00445F8 4600A306 */ mov.s $f12, $f20 /* 35555C E00445FC 2402000A */ addiu $v0, $zero, 0xa /* 355560 E0044600 0C080140 */ jal func_E0200500 /* 355564 E0044604 A6C20002 */ sh $v0, 2($s6) /* 355568 E0044608 4600A306 */ mov.s $f12, $f20 /* 35556C E004460C 0C080144 */ jal func_E0200510 /* 355570 E0044610 E600FFFC */ swc1 $f0, -4($s0) /* 355574 E0044614 3C01BD4C */ lui $at, 0xbd4c /* 355578 E0044618 3421CCCD */ ori $at, $at, 0xcccd /* 35557C E004461C 44811000 */ mtc1 $at, $f2 /* 355580 E0044620 E6000000 */ swc1 $f0, ($s0) /* 355584 E0044624 08011215 */ j .LE0044854 /* 355588 E0044628 E6020004 */ swc1 $f2, 4($s0) /* 35558C E004462C C6020000 */ lwc1 $f2, ($s0) /* 355590 E0044630 460010A1 */ cvt.d.s $f2, $f2 /* 355594 E0044634 463A1082 */ mul.d $f2, $f2, $f26 /* 355598 E0044638 00000000 */ nop /* 35559C E004463C C600FFFC */ lwc1 $f0, -4($s0) /* 3555A0 E0044640 46000021 */ cvt.d.s $f0, $f0 /* 3555A4 E0044644 463A0002 */ mul.d $f0, $f0, $f26 /* 3555A8 E0044648 00000000 */ nop /* 3555AC E004464C C6040008 */ lwc1 $f4, 8($s0) /* 3555B0 E0044650 46002121 */ cvt.d.s $f4, $f4 /* 3555B4 E0044654 4624B181 */ sub.d $f6, $f22, $f4 /* 3555B8 E0044658 46363182 */ mul.d $f6, $f6, $f22 /* 3555BC E004465C 00000000 */ nop /* 3555C0 E0044660 02511021 */ addu $v0, $s2, $s1 /* 3555C4 E0044664 30420007 */ andi $v0, $v0, 7 /* 3555C8 E0044668 C6080004 */ lwc1 $f8, 4($s0) /* 3555CC E004466C 462010A0 */ cvt.s.d $f2, $f2 /* 3555D0 E0044670 E6020000 */ swc1 $f2, ($s0) /* 3555D4 E0044674 46081200 */ add.s $f8, $f2, $f8 /* 3555D8 E0044678 C602FFF0 */ lwc1 $f2, -0x10($s0) /* 3555DC E004467C 46200020 */ cvt.s.d $f0, $f0 /* 3555E0 E0044680 46001080 */ add.s $f2, $f2, $f0 /* 3555E4 E0044684 E600FFFC */ swc1 $f0, -4($s0) /* 3555E8 E0044688 C600FFF4 */ lwc1 $f0, -0xc($s0) /* 3555EC E004468C 46262100 */ add.d $f4, $f4, $f6 /* 3555F0 E0044690 AE020014 */ sw $v0, 0x14($s0) /* 3555F4 E0044694 E6080000 */ swc1 $f8, ($s0) /* 3555F8 E0044698 46080000 */ add.s $f0, $f0, $f8 /* 3555FC E004469C E602FFF0 */ swc1 $f2, -0x10($s0) /* 355600 E00446A0 46202120 */ cvt.s.d $f4, $f4 /* 355604 E00446A4 E6040008 */ swc1 $f4, 8($s0) /* 355608 E00446A8 08011215 */ j .LE0044854 /* 35560C E00446AC E600FFF4 */ swc1 $f0, -0xc($s0) /* 355610 E00446B0 02511021 */ addu $v0, $s2, $s1 /* 355614 E00446B4 00511021 */ addu $v0, $v0, $s1 /* 355618 E00446B8 30420007 */ andi $v0, $v0, 7 /* 35561C E00446BC AE020014 */ sw $v0, 0x14($s0) /* 355620 E00446C0 2643FFFF */ addiu $v1, $s2, -1 /* 355624 E00446C4 2862000E */ slti $v0, $v1, 0xe /* 355628 E00446C8 1040000B */ beqz $v0, .LE00446F8 /* 35562C E00446CC 00771021 */ addu $v0, $v1, $s7 .LE00446D0: /* 355630 E00446D0 90420000 */ lbu $v0, ($v0) /* 355634 E00446D4 44820000 */ mtc1 $v0, $f0 /* 355638 E00446D8 00000000 */ nop /* 35563C E00446DC 46800020 */ cvt.s.w $f0, $f0 /* 355640 E00446E0 46000021 */ cvt.d.s $f0, $f0 /* 355644 E00446E4 46380002 */ mul.d $f0, $f0, $f24 /* 355648 E00446E8 00000000 */ nop /* 35564C E00446EC 46200020 */ cvt.s.d $f0, $f0 /* 355650 E00446F0 08011215 */ j .LE0044854 /* 355654 E00446F4 E6000008 */ swc1 $f0, 8($s0) .LE00446F8: /* 355658 E00446F8 2402001E */ addiu $v0, $zero, 0x1e /* 35565C E00446FC 08011215 */ j .LE0044854 /* 355660 E0044700 A6C20002 */ sh $v0, 2($s6) /* 355664 E0044704 02511021 */ addu $v0, $s2, $s1 .LE0044708: /* 355668 E0044708 00511021 */ addu $v0, $v0, $s1 /* 35566C E004470C 8E030010 */ lw $v1, 0x10($s0) /* 355670 E0044710 30420007 */ andi $v0, $v0, 7 /* 355674 E0044714 04610002 */ bgez $v1, .LE0044720 /* 355678 E0044718 AE020014 */ sw $v0, 0x14($s0) /* 35567C E004471C 26B50001 */ addiu $s5, $s5, 1 .LE0044720: /* 355680 E0044720 2462FFFF */ addiu $v0, $v1, -1 /* 355684 E0044724 AE020010 */ sw $v0, 0x10($s0) /* 355688 E0044728 2C42001F */ sltiu $v0, $v0, 0x1f /* 35568C E004472C 14400003 */ bnez $v0, .LE004473C /* 355690 E0044730 2402FFFF */ addiu $v0, $zero, -1 /* 355694 E0044734 08011215 */ j .LE0044854 /* 355698 E0044738 AE020014 */ sw $v0, 0x14($s0) .LE004473C: /* 35569C E004473C 8E03000C */ lw $v1, 0xc($s0) /* 3556A0 E0044740 24620001 */ addiu $v0, $v1, 1 /* 3556A4 E0044744 0040902D */ daddu $s2, $v0, $zero /* 3556A8 E0044748 2862000E */ slti $v0, $v1, 0xe /* 3556AC E004474C 10400015 */ beqz $v0, .LE00447A4 /* 3556B0 E0044750 AE12000C */ sw $s2, 0xc($s0) /* 3556B4 E0044754 00771021 */ addu $v0, $v1, $s7 /* 3556B8 E0044758 90420000 */ lbu $v0, ($v0) /* 3556BC E004475C 44820000 */ mtc1 $v0, $f0 /* 3556C0 E0044760 00000000 */ nop /* 3556C4 E0044764 46800020 */ cvt.s.w $f0, $f0 /* 3556C8 E0044768 46000021 */ cvt.d.s $f0, $f0 /* 3556CC E004476C 46380002 */ mul.d $f0, $f0, $f24 /* 3556D0 E0044770 00000000 */ nop /* 3556D4 E0044774 24020005 */ addiu $v0, $zero, 5 /* 3556D8 E0044778 46200020 */ cvt.s.d $f0, $f0 /* 3556DC E004477C 16620018 */ bne $s3, $v0, .LE00447E0 /* 3556E0 E0044780 E6000008 */ swc1 $f0, 8($s0) /* 3556E4 E0044784 C6000000 */ lwc1 $f0, ($s0) /* 3556E8 E0044788 C6020004 */ lwc1 $f2, 4($s0) /* 3556EC E004478C 46020000 */ add.s $f0, $f0, $f2 /* 3556F0 E0044790 C602FFF4 */ lwc1 $f2, -0xc($s0) /* 3556F4 E0044794 46001080 */ add.s $f2, $f2, $f0 /* 3556F8 E0044798 E6000000 */ swc1 $f0, ($s0) /* 3556FC E004479C 080111F8 */ j .LE00447E0 /* 355700 E00447A0 E602FFF4 */ swc1 $f2, -0xc($s0) .LE00447A4: /* 355704 E00447A4 C6000008 */ lwc1 $f0, 8($s0) /* 355708 E00447A8 46000021 */ cvt.d.s $f0, $f0 /* 35570C E00447AC 4620B101 */ sub.d $f4, $f22, $f0 /* 355710 E00447B0 46362102 */ mul.d $f4, $f4, $f22 /* 355714 E00447B4 00000000 */ nop /* 355718 E00447B8 C6060000 */ lwc1 $f6, ($s0) /* 35571C E00447BC C6020004 */ lwc1 $f2, 4($s0) /* 355720 E00447C0 46023180 */ add.s $f6, $f6, $f2 /* 355724 E00447C4 C602FFF4 */ lwc1 $f2, -0xc($s0) /* 355728 E00447C8 46061080 */ add.s $f2, $f2, $f6 /* 35572C E00447CC 46240000 */ add.d $f0, $f0, $f4 /* 355730 E00447D0 E6060000 */ swc1 $f6, ($s0) /* 355734 E00447D4 E602FFF4 */ swc1 $f2, -0xc($s0) /* 355738 E00447D8 46200020 */ cvt.s.d $f0, $f0 /* 35573C E00447DC E6000008 */ swc1 $f0, 8($s0) .LE00447E0: /* 355740 E00447E0 24020004 */ addiu $v0, $zero, 4 /* 355744 E00447E4 16620013 */ bne $s3, $v0, .LE0044834 /* 355748 E00447E8 00121040 */ sll $v0, $s2, 1 /* 35574C E00447EC 00521021 */ addu $v0, $v0, $s2 /* 355750 E00447F0 00021080 */ sll $v0, $v0, 2 /* 355754 E00447F4 4482A000 */ mtc1 $v0, $f20 /* 355758 E00447F8 00000000 */ nop /* 35575C E00447FC 4680A520 */ cvt.s.w $f20, $f20 /* 355760 E0044800 0C080140 */ jal func_E0200500 /* 355764 E0044804 4600A306 */ mov.s $f12, $f20 /* 355768 E0044808 C602FFFC */ lwc1 $f2, -4($s0) /* 35576C E004480C 46001082 */ mul.s $f2, $f2, $f0 /* 355770 E0044810 00000000 */ nop /* 355774 E0044814 4600A306 */ mov.s $f12, $f20 /* 355778 E0044818 0C080144 */ jal func_E0200510 /* 35577C E004481C E602FFF0 */ swc1 $f2, -0x10($s0) /* 355780 E0044820 C602FFFC */ lwc1 $f2, -4($s0) /* 355784 E0044824 46001082 */ mul.s $f2, $f2, $f0 /* 355788 E0044828 00000000 */ nop /* 35578C E004482C 0801120F */ j .LE004483C /* 355790 E0044830 E602FFF8 */ swc1 $f2, -8($s0) .LE0044834: /* 355794 E0044834 C600FFFC */ lwc1 $f0, -4($s0) /* 355798 E0044838 E600FFF0 */ swc1 $f0, -0x10($s0) .LE004483C: /* 35579C E004483C C6000000 */ lwc1 $f0, ($s0) /* 3557A0 E0044840 46000021 */ cvt.d.s $f0, $f0 /* 3557A4 E0044844 463A0002 */ mul.d $f0, $f0, $f26 /* 3557A8 E0044848 00000000 */ nop /* 3557AC E004484C 46200020 */ cvt.s.d $f0, $f0 /* 3557B0 E0044850 E6000000 */ swc1 $f0, ($s0) .LE0044854: /* 3557B4 E0044854 26310001 */ addiu $s1, $s1, 1 /* 3557B8 E0044858 8E820008 */ lw $v0, 8($s4) /* 3557BC E004485C 2442FFFF */ addiu $v0, $v0, -1 /* 3557C0 E0044860 0222102A */ slt $v0, $s1, $v0 /* 3557C4 E0044864 1440FF25 */ bnez $v0, .LE00444FC /* 3557C8 E0044868 2610002C */ addiu $s0, $s0, 0x2c .LE004486C: /* 3557CC E004486C 2E620002 */ sltiu $v0, $s3, 2 /* 3557D0 E0044870 1440000C */ bnez $v0, .LE00448A4 /* 3557D4 E0044874 24020003 */ addiu $v0, $zero, 3 /* 3557D8 E0044878 1262000A */ beq $s3, $v0, .LE00448A4 /* 3557DC E004487C 2A62000A */ slti $v0, $s3, 0xa /* 3557E0 E0044880 10400008 */ beqz $v0, .LE00448A4 /* 3557E4 E0044884 00000000 */ nop /* 3557E8 E0044888 8E820008 */ lw $v0, 8($s4) /* 3557EC E004488C 2442FFFF */ addiu $v0, $v0, -1 /* 3557F0 E0044890 02A2102A */ slt $v0, $s5, $v0 /* 3557F4 E0044894 14400003 */ bnez $v0, .LE00448A4 /* 3557F8 E0044898 00000000 */ nop .LE004489C: /* 3557FC E004489C 0C080128 */ jal func_E02004A0 /* 355800 E00448A0 0280202D */ daddu $a0, $s4, $zero .LE00448A4: /* 355804 E00448A4 8FBF0034 */ lw $ra, 0x34($sp) /* 355808 E00448A8 8FBE0030 */ lw $fp, 0x30($sp) /* 35580C E00448AC 8FB7002C */ lw $s7, 0x2c($sp) /* 355810 E00448B0 8FB60028 */ lw $s6, 0x28($sp) /* 355814 E00448B4 8FB50024 */ lw $s5, 0x24($sp) /* 355818 E00448B8 8FB40020 */ lw $s4, 0x20($sp) /* 35581C E00448BC 8FB3001C */ lw $s3, 0x1c($sp) /* 355820 E00448C0 8FB20018 */ lw $s2, 0x18($sp) /* 355824 E00448C4 8FB10014 */ lw $s1, 0x14($sp) /* 355828 E00448C8 8FB00010 */ lw $s0, 0x10($sp) /* 35582C E00448CC D7BA0050 */ ldc1 $f26, 0x50($sp) /* 355830 E00448D0 D7B80048 */ ldc1 $f24, 0x48($sp) /* 355834 E00448D4 D7B60040 */ ldc1 $f22, 0x40($sp) /* 355838 E00448D8 D7B40038 */ ldc1 $f20, 0x38($sp) /* 35583C E00448DC 03E00008 */ jr $ra /* 355840 E00448E0 27BD0058 */ addiu $sp, $sp, 0x58