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

320 lines
16 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_E0076378
/* 3773E8 E0076378 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 3773EC E007637C AFBF0010 */ sw $ra, 0x10($sp)
/* 3773F0 E0076380 8C830000 */ lw $v1, ($a0)
/* 3773F4 E0076384 8C85000C */ lw $a1, 0xc($a0)
/* 3773F8 E0076388 30620010 */ andi $v0, $v1, 0x10
/* 3773FC E007638C 10400005 */ beqz $v0, .LE00763A4
/* 377400 E0076390 2402FFEF */ addiu $v0, $zero, -0x11
/* 377404 E0076394 00621024 */ and $v0, $v1, $v0
/* 377408 E0076398 AC820000 */ sw $v0, ($a0)
/* 37740C E007639C 24020005 */ addiu $v0, $zero, 5
/* 377410 E00763A0 ACA2002C */ sw $v0, 0x2c($a1)
.LE00763A4:
/* 377414 E00763A4 3C030004 */ lui $v1, 4
/* 377418 E00763A8 8CA20030 */ lw $v0, 0x30($a1)
/* 37741C E00763AC 3463F1A0 */ ori $v1, $v1, 0xf1a0
/* 377420 E00763B0 24420001 */ addiu $v0, $v0, 1
/* 377424 E00763B4 0062182A */ slt $v1, $v1, $v0
/* 377428 E00763B8 10600003 */ beqz $v1, .LE00763C8
/* 37742C E00763BC ACA20030 */ sw $v0, 0x30($a1)
/* 377430 E00763C0 24020100 */ addiu $v0, $zero, 0x100
/* 377434 E00763C4 ACA20030 */ sw $v0, 0x30($a1)
.LE00763C8:
/* 377438 E00763C8 8CA3002C */ lw $v1, 0x2c($a1)
/* 37743C E00763CC 2862000B */ slti $v0, $v1, 0xb
/* 377440 E00763D0 10400002 */ beqz $v0, .LE00763DC
/* 377444 E00763D4 2462FFFF */ addiu $v0, $v1, -1
/* 377448 E00763D8 ACA2002C */ sw $v0, 0x2c($a1)
.LE00763DC:
/* 37744C E00763DC 8CA2002C */ lw $v0, 0x2c($a1)
/* 377450 E00763E0 04410005 */ bgez $v0, .LE00763F8
/* 377454 E00763E4 0040382D */ daddu $a3, $v0, $zero
/* 377458 E00763E8 0C080128 */ jal func_E02004A0
/* 37745C E00763EC 00000000 */ nop
/* 377460 E00763F0 0801D9FF */ j .LE00767FC
/* 377464 E00763F4 00000000 */ nop
.LE00763F8:
/* 377468 E00763F8 8CA60000 */ lw $a2, ($a1)
/* 37746C E00763FC 8CA40030 */ lw $a0, 0x30($a1)
/* 377470 E0076400 28C20002 */ slti $v0, $a2, 2
/* 377474 E0076404 10400015 */ beqz $v0, .LE007645C
/* 377478 E0076408 2882000B */ slti $v0, $a0, 0xb
/* 37747C E007640C 1040001E */ beqz $v0, .LE0076488
/* 377480 E0076410 24020080 */ addiu $v0, $zero, 0x80
/* 377484 E0076414 8CA30028 */ lw $v1, 0x28($a1)
/* 377488 E0076418 3C013FE0 */ lui $at, 0x3fe0
/* 37748C E007641C 44810800 */ mtc1 $at, $f1
/* 377490 E0076420 44800000 */ mtc1 $zero, $f0
/* 377494 E0076424 00431023 */ subu $v0, $v0, $v1
/* 377498 E0076428 44821000 */ mtc1 $v0, $f2
/* 37749C E007642C 00000000 */ nop
/* 3774A0 E0076430 468010A1 */ cvt.d.w $f2, $f2
/* 3774A4 E0076434 46201082 */ mul.d $f2, $f2, $f0
/* 3774A8 E0076438 00000000 */ nop
/* 3774AC E007643C 44830000 */ mtc1 $v1, $f0
/* 3774B0 E0076440 00000000 */ nop
/* 3774B4 E0076444 46800021 */ cvt.d.w $f0, $f0
/* 3774B8 E0076448 46220000 */ add.d $f0, $f0, $f2
/* 3774BC E007644C 4620048D */ trunc.w.d $f18, $f0
/* 3774C0 E0076450 E4B20028 */ swc1 $f18, 0x28($a1)
/* 3774C4 E0076454 0801D923 */ j .LE007648C
/* 3774C8 E0076458 28E2000A */ slti $v0, $a3, 0xa
.LE007645C:
/* 3774CC E007645C 1040000A */ beqz $v0, .LE0076488
/* 3774D0 E0076460 3C036666 */ lui $v1, 0x6666
/* 3774D4 E0076464 34636667 */ ori $v1, $v1, 0x6667
/* 3774D8 E0076468 00041200 */ sll $v0, $a0, 8
/* 3774DC E007646C 00441023 */ subu $v0, $v0, $a0
/* 3774E0 E0076470 00430018 */ mult $v0, $v1
/* 3774E4 E0076474 000217C3 */ sra $v0, $v0, 0x1f
/* 3774E8 E0076478 00004010 */ mfhi $t0
/* 3774EC E007647C 00081883 */ sra $v1, $t0, 2
/* 3774F0 E0076480 00621823 */ subu $v1, $v1, $v0
/* 3774F4 E0076484 ACA30028 */ sw $v1, 0x28($a1)
.LE0076488:
/* 3774F8 E0076488 28E2000A */ slti $v0, $a3, 0xa
.LE007648C:
/* 3774FC E007648C 1040000A */ beqz $v0, .LE00764B8
/* 377500 E0076490 00000000 */ nop
/* 377504 E0076494 3C013FE0 */ lui $at, 0x3fe0
/* 377508 E0076498 44811800 */ mtc1 $at, $f3
/* 37750C E007649C 44801000 */ mtc1 $zero, $f2
/* 377510 E00764A0 C4A00028 */ lwc1 $f0, 0x28($a1)
/* 377514 E00764A4 46800021 */ cvt.d.w $f0, $f0
/* 377518 E00764A8 46220002 */ mul.d $f0, $f0, $f2
/* 37751C E00764AC 00000000 */ nop
/* 377520 E00764B0 4620048D */ trunc.w.d $f18, $f0
/* 377524 E00764B4 E4B20028 */ swc1 $f18, 0x28($a1)
.LE00764B8:
/* 377528 E00764B8 14C0002E */ bnez $a2, .LE0076574
/* 37752C E00764BC 00000000 */ nop
/* 377530 E00764C0 C4AE0038 */ lwc1 $f14, 0x38($a1)
/* 377534 E00764C4 C4AA003C */ lwc1 $f10, 0x3c($a1)
/* 377538 E00764C8 460E5281 */ sub.s $f10, $f10, $f14
/* 37753C E00764CC 3C01E007 */ lui $at, 0xe007
/* 377540 E00764D0 D4206EE8 */ ldc1 $f0, 0x6ee8($at)
/* 377544 E00764D4 460052A1 */ cvt.d.s $f10, $f10
/* 377548 E00764D8 46205282 */ mul.d $f10, $f10, $f0
/* 37754C E00764DC 00000000 */ nop
/* 377550 E00764E0 C4AC0044 */ lwc1 $f12, 0x44($a1)
/* 377554 E00764E4 C4A40048 */ lwc1 $f4, 0x48($a1)
/* 377558 E00764E8 460C2101 */ sub.s $f4, $f4, $f12
/* 37755C E00764EC 46002121 */ cvt.d.s $f4, $f4
/* 377560 E00764F0 46202102 */ mul.d $f4, $f4, $f0
/* 377564 E00764F4 00000000 */ nop
/* 377568 E00764F8 C4A8001C */ lwc1 $f8, 0x1c($a1)
/* 37756C E00764FC C4A60024 */ lwc1 $f6, 0x24($a1)
/* 377570 E0076500 46083181 */ sub.s $f6, $f6, $f8
/* 377574 E0076504 3C01E007 */ lui $at, 0xe007
/* 377578 E0076508 D4306EF0 */ ldc1 $f16, 0x6ef0($at)
/* 37757C E007650C 460031A1 */ cvt.d.s $f6, $f6
/* 377580 E0076510 46303182 */ mul.d $f6, $f6, $f16
/* 377584 E0076514 00000000 */ nop
/* 377588 E0076518 C4A20020 */ lwc1 $f2, 0x20($a1)
/* 37758C E007651C C4A00024 */ lwc1 $f0, 0x24($a1)
/* 377590 E0076520 46020001 */ sub.s $f0, $f0, $f2
/* 377594 E0076524 46000021 */ cvt.d.s $f0, $f0
/* 377598 E0076528 46300002 */ mul.d $f0, $f0, $f16
/* 37759C E007652C 00000000 */ nop
/* 3775A0 E0076530 460073A1 */ cvt.d.s $f14, $f14
/* 3775A4 E0076534 462A7380 */ add.d $f14, $f14, $f10
/* 3775A8 E0076538 46006321 */ cvt.d.s $f12, $f12
/* 3775AC E007653C 46246300 */ add.d $f12, $f12, $f4
/* 3775B0 E0076540 46004221 */ cvt.d.s $f8, $f8
/* 3775B4 E0076544 460010A1 */ cvt.d.s $f2, $f2
/* 3775B8 E0076548 46264200 */ add.d $f8, $f8, $f6
/* 3775BC E007654C 462073A0 */ cvt.s.d $f14, $f14
/* 3775C0 E0076550 46206320 */ cvt.s.d $f12, $f12
/* 3775C4 E0076554 46204220 */ cvt.s.d $f8, $f8
/* 3775C8 E0076558 E4AE0038 */ swc1 $f14, 0x38($a1)
/* 3775CC E007655C 46201080 */ add.d $f2, $f2, $f0
/* 3775D0 E0076560 E4AC0044 */ swc1 $f12, 0x44($a1)
/* 3775D4 E0076564 E4A8001C */ swc1 $f8, 0x1c($a1)
/* 3775D8 E0076568 462010A0 */ cvt.s.d $f2, $f2
/* 3775DC E007656C 0801D987 */ j .LE007661C
/* 3775E0 E0076570 E4A20020 */ swc1 $f2, 0x20($a1)
.LE0076574:
/* 3775E4 E0076574 C4AE0038 */ lwc1 $f14, 0x38($a1)
/* 3775E8 E0076578 C4AA003C */ lwc1 $f10, 0x3c($a1)
/* 3775EC E007657C 460E5281 */ sub.s $f10, $f10, $f14
/* 3775F0 E0076580 3C01E007 */ lui $at, 0xe007
/* 3775F4 E0076584 D4306EF8 */ ldc1 $f16, 0x6ef8($at)
/* 3775F8 E0076588 460052A1 */ cvt.d.s $f10, $f10
/* 3775FC E007658C 46305282 */ mul.d $f10, $f10, $f16
/* 377600 E0076590 00000000 */ nop
/* 377604 E0076594 C4AC0044 */ lwc1 $f12, 0x44($a1)
/* 377608 E0076598 C4A20048 */ lwc1 $f2, 0x48($a1)
/* 37760C E007659C 460C1081 */ sub.s $f2, $f2, $f12
/* 377610 E00765A0 460010A1 */ cvt.d.s $f2, $f2
/* 377614 E00765A4 46301082 */ mul.d $f2, $f2, $f16
/* 377618 E00765A8 00000000 */ nop
/* 37761C E00765AC C4A80050 */ lwc1 $f8, 0x50($a1)
/* 377620 E00765B0 C4A40054 */ lwc1 $f4, 0x54($a1)
/* 377624 E00765B4 46082101 */ sub.s $f4, $f4, $f8
/* 377628 E00765B8 46002121 */ cvt.d.s $f4, $f4
/* 37762C E00765BC 46302102 */ mul.d $f4, $f4, $f16
/* 377630 E00765C0 00000000 */ nop
/* 377634 E00765C4 C4A6005C */ lwc1 $f6, 0x5c($a1)
/* 377638 E00765C8 C4A00060 */ lwc1 $f0, 0x60($a1)
/* 37763C E00765CC 46060001 */ sub.s $f0, $f0, $f6
/* 377640 E00765D0 46000021 */ cvt.d.s $f0, $f0
/* 377644 E00765D4 46300002 */ mul.d $f0, $f0, $f16
/* 377648 E00765D8 00000000 */ nop
/* 37764C E00765DC 460073A1 */ cvt.d.s $f14, $f14
/* 377650 E00765E0 462A7380 */ add.d $f14, $f14, $f10
/* 377654 E00765E4 46006321 */ cvt.d.s $f12, $f12
/* 377658 E00765E8 46226300 */ add.d $f12, $f12, $f2
/* 37765C E00765EC 46004221 */ cvt.d.s $f8, $f8
/* 377660 E00765F0 46244200 */ add.d $f8, $f8, $f4
/* 377664 E00765F4 460031A1 */ cvt.d.s $f6, $f6
/* 377668 E00765F8 46203180 */ add.d $f6, $f6, $f0
/* 37766C E00765FC 462073A0 */ cvt.s.d $f14, $f14
/* 377670 E0076600 46206320 */ cvt.s.d $f12, $f12
/* 377674 E0076604 46204220 */ cvt.s.d $f8, $f8
/* 377678 E0076608 462031A0 */ cvt.s.d $f6, $f6
/* 37767C E007660C E4AE0038 */ swc1 $f14, 0x38($a1)
/* 377680 E0076610 E4AC0044 */ swc1 $f12, 0x44($a1)
/* 377684 E0076614 E4A80050 */ swc1 $f8, 0x50($a1)
/* 377688 E0076618 E4A6005C */ swc1 $f6, 0x5c($a1)
.LE007661C:
/* 37768C E007661C C4A00034 */ lwc1 $f0, 0x34($a1)
/* 377690 E0076620 C4A20038 */ lwc1 $f2, 0x38($a1)
/* 377694 E0076624 46020080 */ add.s $f2, $f0, $f2
/* 377698 E0076628 44800000 */ mtc1 $zero, $f0
/* 37769C E007662C 00000000 */ nop
/* 3776A0 E0076630 4600103C */ c.lt.s $f2, $f0
/* 3776A4 E0076634 00000000 */ nop
/* 3776A8 E0076638 45000005 */ bc1f .LE0076650
/* 3776AC E007663C E4A20034 */ swc1 $f2, 0x34($a1)
/* 3776B0 E0076640 3C014280 */ lui $at, 0x4280
/* 3776B4 E0076644 44810000 */ mtc1 $at, $f0
/* 3776B8 E0076648 0801D99C */ j .LE0076670
/* 3776BC E007664C 46001000 */ add.s $f0, $f2, $f0
.LE0076650:
/* 3776C0 E0076650 3C014280 */ lui $at, 0x4280
/* 3776C4 E0076654 44810000 */ mtc1 $at, $f0
/* 3776C8 E0076658 00000000 */ nop
/* 3776CC E007665C 4602003C */ c.lt.s $f0, $f2
/* 3776D0 E0076660 00000000 */ nop
/* 3776D4 E0076664 45000003 */ bc1f .LE0076674
/* 3776D8 E0076668 00000000 */ nop
/* 3776DC E007666C 46001001 */ sub.s $f0, $f2, $f0
.LE0076670:
/* 3776E0 E0076670 E4A00034 */ swc1 $f0, 0x34($a1)
.LE0076674:
/* 3776E4 E0076674 C4A00040 */ lwc1 $f0, 0x40($a1)
/* 3776E8 E0076678 C4A20044 */ lwc1 $f2, 0x44($a1)
/* 3776EC E007667C 46020080 */ add.s $f2, $f0, $f2
/* 3776F0 E0076680 44800000 */ mtc1 $zero, $f0
/* 3776F4 E0076684 00000000 */ nop
/* 3776F8 E0076688 4600103C */ c.lt.s $f2, $f0
/* 3776FC E007668C 00000000 */ nop
/* 377700 E0076690 45000005 */ bc1f .LE00766A8
/* 377704 E0076694 E4A20040 */ swc1 $f2, 0x40($a1)
/* 377708 E0076698 3C014300 */ lui $at, 0x4300
/* 37770C E007669C 44810000 */ mtc1 $at, $f0
/* 377710 E00766A0 0801D9B2 */ j .LE00766C8
/* 377714 E00766A4 46001000 */ add.s $f0, $f2, $f0
.LE00766A8:
/* 377718 E00766A8 3C014300 */ lui $at, 0x4300
/* 37771C E00766AC 44810000 */ mtc1 $at, $f0
/* 377720 E00766B0 00000000 */ nop
/* 377724 E00766B4 4602003C */ c.lt.s $f0, $f2
/* 377728 E00766B8 00000000 */ nop
/* 37772C E00766BC 45000003 */ bc1f .LE00766CC
/* 377730 E00766C0 00000000 */ nop
/* 377734 E00766C4 46001001 */ sub.s $f0, $f2, $f0
.LE00766C8:
/* 377738 E00766C8 E4A00040 */ swc1 $f0, 0x40($a1)
.LE00766CC:
/* 37773C E00766CC C4A0004C */ lwc1 $f0, 0x4c($a1)
/* 377740 E00766D0 C4A20050 */ lwc1 $f2, 0x50($a1)
/* 377744 E00766D4 46020080 */ add.s $f2, $f0, $f2
/* 377748 E00766D8 44800000 */ mtc1 $zero, $f0
/* 37774C E00766DC 00000000 */ nop
/* 377750 E00766E0 4600103C */ c.lt.s $f2, $f0
/* 377754 E00766E4 00000000 */ nop
/* 377758 E00766E8 45000005 */ bc1f .LE0076700
/* 37775C E00766EC E4A2004C */ swc1 $f2, 0x4c($a1)
/* 377760 E00766F0 3C014280 */ lui $at, 0x4280
/* 377764 E00766F4 44810000 */ mtc1 $at, $f0
/* 377768 E00766F8 0801D9C8 */ j .LE0076720
/* 37776C E00766FC 46001000 */ add.s $f0, $f2, $f0
.LE0076700:
/* 377770 E0076700 3C014280 */ lui $at, 0x4280
/* 377774 E0076704 44810000 */ mtc1 $at, $f0
/* 377778 E0076708 00000000 */ nop
/* 37777C E007670C 4602003C */ c.lt.s $f0, $f2
/* 377780 E0076710 00000000 */ nop
/* 377784 E0076714 45000003 */ bc1f .LE0076724
/* 377788 E0076718 00000000 */ nop
/* 37778C E007671C 46001001 */ sub.s $f0, $f2, $f0
.LE0076720:
/* 377790 E0076720 E4A0004C */ swc1 $f0, 0x4c($a1)
.LE0076724:
/* 377794 E0076724 C4A00058 */ lwc1 $f0, 0x58($a1)
/* 377798 E0076728 C4A2005C */ lwc1 $f2, 0x5c($a1)
/* 37779C E007672C 46020080 */ add.s $f2, $f0, $f2
/* 3777A0 E0076730 44800000 */ mtc1 $zero, $f0
/* 3777A4 E0076734 00000000 */ nop
/* 3777A8 E0076738 4600103C */ c.lt.s $f2, $f0
/* 3777AC E007673C 00000000 */ nop
/* 3777B0 E0076740 45000005 */ bc1f .LE0076758
/* 3777B4 E0076744 E4A20058 */ swc1 $f2, 0x58($a1)
/* 3777B8 E0076748 3C014300 */ lui $at, 0x4300
/* 3777BC E007674C 44810000 */ mtc1 $at, $f0
/* 3777C0 E0076750 0801D9DE */ j .LE0076778
/* 3777C4 E0076754 46001000 */ add.s $f0, $f2, $f0
.LE0076758:
/* 3777C8 E0076758 3C014300 */ lui $at, 0x4300
/* 3777CC E007675C 44810000 */ mtc1 $at, $f0
/* 3777D0 E0076760 00000000 */ nop
/* 3777D4 E0076764 4602003C */ c.lt.s $f0, $f2
/* 3777D8 E0076768 00000000 */ nop
/* 3777DC E007676C 45000003 */ bc1f .LE007677C
/* 3777E0 E0076770 00000000 */ nop
/* 3777E4 E0076774 46001001 */ sub.s $f0, $f2, $f0
.LE0076778:
/* 3777E8 E0076778 E4A00058 */ swc1 $f0, 0x58($a1)
.LE007677C:
/* 3777EC E007677C C4AA0010 */ lwc1 $f10, 0x10($a1)
/* 3777F0 E0076780 C4A60004 */ lwc1 $f6, 4($a1)
/* 3777F4 E0076784 460A3181 */ sub.s $f6, $f6, $f10
/* 3777F8 E0076788 3C01E007 */ lui $at, 0xe007
/* 3777FC E007678C D42C6F00 */ ldc1 $f12, 0x6f00($at)
/* 377800 E0076790 460031A1 */ cvt.d.s $f6, $f6
/* 377804 E0076794 462C3182 */ mul.d $f6, $f6, $f12
/* 377808 E0076798 00000000 */ nop
/* 37780C E007679C C4A80014 */ lwc1 $f8, 0x14($a1)
/* 377810 E00767A0 C4A20008 */ lwc1 $f2, 8($a1)
/* 377814 E00767A4 46081081 */ sub.s $f2, $f2, $f8
/* 377818 E00767A8 460010A1 */ cvt.d.s $f2, $f2
/* 37781C E00767AC 462C1082 */ mul.d $f2, $f2, $f12
/* 377820 E00767B0 00000000 */ nop
/* 377824 E00767B4 C4A40018 */ lwc1 $f4, 0x18($a1)
/* 377828 E00767B8 C4A0000C */ lwc1 $f0, 0xc($a1)
/* 37782C E00767BC 46040001 */ sub.s $f0, $f0, $f4
/* 377830 E00767C0 46000021 */ cvt.d.s $f0, $f0
/* 377834 E00767C4 462C0002 */ mul.d $f0, $f0, $f12
/* 377838 E00767C8 00000000 */ nop
/* 37783C E00767CC 460052A1 */ cvt.d.s $f10, $f10
/* 377840 E00767D0 46265280 */ add.d $f10, $f10, $f6
/* 377844 E00767D4 46004221 */ cvt.d.s $f8, $f8
/* 377848 E00767D8 46224200 */ add.d $f8, $f8, $f2
/* 37784C E00767DC 46002121 */ cvt.d.s $f4, $f4
/* 377850 E00767E0 46202100 */ add.d $f4, $f4, $f0
/* 377854 E00767E4 462052A0 */ cvt.s.d $f10, $f10
/* 377858 E00767E8 46204220 */ cvt.s.d $f8, $f8
/* 37785C E00767EC 46202120 */ cvt.s.d $f4, $f4
/* 377860 E00767F0 E4AA0010 */ swc1 $f10, 0x10($a1)
/* 377864 E00767F4 E4A80014 */ swc1 $f8, 0x14($a1)
/* 377868 E00767F8 E4A40018 */ swc1 $f4, 0x18($a1)
.LE00767FC:
/* 37786C E00767FC 8FBF0010 */ lw $ra, 0x10($sp)
/* 377870 E0076800 03E00008 */ jr $ra
/* 377874 E0076804 27BD0018 */ addiu $sp, $sp, 0x18