papermario/asm/nonmatchings/code_EDEA00/func_80240A5C_EDF41C.s
2021-01-11 18:34:10 +09:00

226 lines
12 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_80240A5C_EDF41C
/* EDF41C 80240A5C 27BDFF88 */ addiu $sp, $sp, -0x78
/* EDF420 80240A60 AFB3004C */ sw $s3, 0x4c($sp)
/* EDF424 80240A64 0080982D */ daddu $s3, $a0, $zero
/* EDF428 80240A68 AFBF0054 */ sw $ra, 0x54($sp)
/* EDF42C 80240A6C AFB40050 */ sw $s4, 0x50($sp)
/* EDF430 80240A70 AFB20048 */ sw $s2, 0x48($sp)
/* EDF434 80240A74 AFB10044 */ sw $s1, 0x44($sp)
/* EDF438 80240A78 AFB00040 */ sw $s0, 0x40($sp)
/* EDF43C 80240A7C F7BA0070 */ sdc1 $f26, 0x70($sp)
/* EDF440 80240A80 F7B80068 */ sdc1 $f24, 0x68($sp)
/* EDF444 80240A84 F7B60060 */ sdc1 $f22, 0x60($sp)
/* EDF448 80240A88 F7B40058 */ sdc1 $f20, 0x58($sp)
/* EDF44C 80240A8C 8E710148 */ lw $s1, 0x148($s3)
/* EDF450 80240A90 00A0902D */ daddu $s2, $a1, $zero
/* EDF454 80240A94 86240008 */ lh $a0, 8($s1)
/* EDF458 80240A98 0C00F92F */ jal func_8003E4BC
/* EDF45C 80240A9C 00C0A02D */ daddu $s4, $a2, $zero
/* EDF460 80240AA0 0040802D */ daddu $s0, $v0, $zero
/* EDF464 80240AA4 C6200078 */ lwc1 $f0, 0x78($s1)
/* EDF468 80240AA8 46800020 */ cvt.s.w $f0, $f0
/* EDF46C 80240AAC 46000021 */ cvt.d.s $f0, $f0
/* EDF470 80240AB0 3C014059 */ lui $at, 0x4059
/* EDF474 80240AB4 44811800 */ mtc1 $at, $f3
/* EDF478 80240AB8 44801000 */ mtc1 $zero, $f2
/* EDF47C 80240ABC 8602008E */ lh $v0, 0x8e($s0)
/* EDF480 80240AC0 9603008E */ lhu $v1, 0x8e($s0)
/* EDF484 80240AC4 46220003 */ div.d $f0, $f0, $f2
/* EDF488 80240AC8 46200620 */ cvt.s.d $f24, $f0
/* EDF48C 80240ACC C6200088 */ lwc1 $f0, 0x88($s1)
/* EDF490 80240AD0 46800020 */ cvt.s.w $f0, $f0
/* EDF494 80240AD4 46000021 */ cvt.d.s $f0, $f0
/* EDF498 80240AD8 46220003 */ div.d $f0, $f0, $f2
/* EDF49C 80240ADC 46200020 */ cvt.s.d $f0, $f0
/* EDF4A0 80240AE0 18400003 */ blez $v0, .L80240AF0
/* EDF4A4 80240AE4 4600C680 */ add.s $f26, $f24, $f0
/* EDF4A8 80240AE8 2462FFFF */ addiu $v0, $v1, -1
/* EDF4AC 80240AEC A602008E */ sh $v0, 0x8e($s0)
.L80240AF0:
/* EDF4B0 80240AF0 8E220070 */ lw $v0, 0x70($s1)
/* EDF4B4 80240AF4 18400034 */ blez $v0, .L80240BC8
/* EDF4B8 80240AF8 00000000 */ nop
/* EDF4BC 80240AFC C62C0074 */ lwc1 $f12, 0x74($s1)
/* EDF4C0 80240B00 46806320 */ cvt.s.w $f12, $f12
/* EDF4C4 80240B04 44820000 */ mtc1 $v0, $f0
/* EDF4C8 80240B08 00000000 */ nop
/* EDF4CC 80240B0C 46800020 */ cvt.s.w $f0, $f0
/* EDF4D0 80240B10 46000021 */ cvt.d.s $f0, $f0
/* EDF4D4 80240B14 46220003 */ div.d $f0, $f0, $f2
/* EDF4D8 80240B18 0C00AD77 */ jal func_8002B5DC
/* EDF4DC 80240B1C 462005A0 */ cvt.s.d $f22, $f0
/* EDF4E0 80240B20 8E020000 */ lw $v0, ($s0)
/* EDF4E4 80240B24 30420008 */ andi $v0, $v0, 8
/* EDF4E8 80240B28 10400003 */ beqz $v0, .L80240B38
/* EDF4EC 80240B2C 46000506 */ mov.s $f20, $f0
/* EDF4F0 80240B30 080902DE */ j .L80240B78
/* EDF4F4 80240B34 0000102D */ daddu $v0, $zero, $zero
.L80240B38:
/* EDF4F8 80240B38 27A50028 */ addiu $a1, $sp, 0x28
/* EDF4FC 80240B3C 27A6002C */ addiu $a2, $sp, 0x2c
/* EDF500 80240B40 C6000038 */ lwc1 $f0, 0x38($s0)
/* EDF504 80240B44 C602003C */ lwc1 $f2, 0x3c($s0)
/* EDF508 80240B48 C6040040 */ lwc1 $f4, 0x40($s0)
/* EDF50C 80240B4C 3C01447A */ lui $at, 0x447a
/* EDF510 80240B50 44813000 */ mtc1 $at, $f6
/* EDF514 80240B54 27A20034 */ addiu $v0, $sp, 0x34
/* EDF518 80240B58 E7A00028 */ swc1 $f0, 0x28($sp)
/* EDF51C 80240B5C E7A2002C */ swc1 $f2, 0x2c($sp)
/* EDF520 80240B60 E7A40030 */ swc1 $f4, 0x30($sp)
/* EDF524 80240B64 E7A60034 */ swc1 $f6, 0x34($sp)
/* EDF528 80240B68 AFA20010 */ sw $v0, 0x10($sp)
/* EDF52C 80240B6C 8E040080 */ lw $a0, 0x80($s0)
/* EDF530 80240B70 0C03908F */ jal func_800E423C
/* EDF534 80240B74 27A70030 */ addiu $a3, $sp, 0x30
.L80240B78:
/* EDF538 80240B78 10400007 */ beqz $v0, .L80240B98
/* EDF53C 80240B7C 00000000 */ nop
/* EDF540 80240B80 4616A082 */ mul.s $f2, $f20, $f22
/* EDF544 80240B84 00000000 */ nop
/* EDF548 80240B88 C7A0002C */ lwc1 $f0, 0x2c($sp)
/* EDF54C 80240B8C 46180000 */ add.s $f0, $f0, $f24
/* EDF550 80240B90 080902E9 */ j .L80240BA4
/* EDF554 80240B94 46020000 */ add.s $f0, $f0, $f2
.L80240B98:
/* EDF558 80240B98 4616A002 */ mul.s $f0, $f20, $f22
/* EDF55C 80240B9C 00000000 */ nop
/* EDF560 80240BA0 4600D000 */ add.s $f0, $f26, $f0
.L80240BA4:
/* EDF564 80240BA4 E600003C */ swc1 $f0, 0x3c($s0)
/* EDF568 80240BA8 8E220074 */ lw $v0, 0x74($s1)
/* EDF56C 80240BAC 2442000A */ addiu $v0, $v0, 0xa
/* EDF570 80240BB0 44826000 */ mtc1 $v0, $f12
/* EDF574 80240BB4 00000000 */ nop
/* EDF578 80240BB8 0C00AB85 */ jal func_8002AE14
/* EDF57C 80240BBC 46806320 */ cvt.s.w $f12, $f12
/* EDF580 80240BC0 4600020D */ trunc.w.s $f8, $f0
/* EDF584 80240BC4 E6280074 */ swc1 $f8, 0x74($s1)
.L80240BC8:
/* EDF588 80240BC8 8E220090 */ lw $v0, 0x90($s1)
/* EDF58C 80240BCC 1C400040 */ bgtz $v0, .L80240CD0
/* EDF590 80240BD0 2442FFFF */ addiu $v0, $v0, -1
/* EDF594 80240BD4 860200A8 */ lh $v0, 0xa8($s0)
/* EDF598 80240BD8 C600003C */ lwc1 $f0, 0x3c($s0)
/* EDF59C 80240BDC 44821000 */ mtc1 $v0, $f2
/* EDF5A0 80240BE0 00000000 */ nop
/* EDF5A4 80240BE4 468010A0 */ cvt.s.w $f2, $f2
/* EDF5A8 80240BE8 3C028010 */ lui $v0, %hi(D_800FFC90)
/* EDF5AC 80240BEC 8C42FC90 */ lw $v0, %lo(D_800FFC90)($v0)
/* EDF5B0 80240BF0 46020000 */ add.s $f0, $f0, $f2
/* EDF5B4 80240BF4 3C014024 */ lui $at, 0x4024
/* EDF5B8 80240BF8 44812800 */ mtc1 $at, $f5
/* EDF5BC 80240BFC 44802000 */ mtc1 $zero, $f4
/* EDF5C0 80240C00 C442002C */ lwc1 $f2, 0x2c($v0)
/* EDF5C4 80240C04 46000021 */ cvt.d.s $f0, $f0
/* EDF5C8 80240C08 46240000 */ add.d $f0, $f0, $f4
/* EDF5CC 80240C0C 460010A1 */ cvt.d.s $f2, $f2
/* EDF5D0 80240C10 4620103C */ c.lt.d $f2, $f0
/* EDF5D4 80240C14 00000000 */ nop
/* EDF5D8 80240C18 4500002E */ bc1f .L80240CD4
/* EDF5DC 80240C1C 0280202D */ daddu $a0, $s4, $zero
/* EDF5E0 80240C20 24020001 */ addiu $v0, $zero, 1
/* EDF5E4 80240C24 AFA20010 */ sw $v0, 0x10($sp)
/* EDF5E8 80240C28 8E460024 */ lw $a2, 0x24($s2)
/* EDF5EC 80240C2C 8E470028 */ lw $a3, 0x28($s2)
/* EDF5F0 80240C30 0C013469 */ jal func_8004D1A4
/* EDF5F4 80240C34 0220282D */ daddu $a1, $s1, $zero
/* EDF5F8 80240C38 10400026 */ beqz $v0, .L80240CD4
/* EDF5FC 80240C3C 0000202D */ daddu $a0, $zero, $zero
/* EDF600 80240C40 0200282D */ daddu $a1, $s0, $zero
/* EDF604 80240C44 0000302D */ daddu $a2, $zero, $zero
/* EDF608 80240C48 2412000C */ addiu $s2, $zero, 0xc
/* EDF60C 80240C4C 860300A8 */ lh $v1, 0xa8($s0)
/* EDF610 80240C50 3C013F80 */ lui $at, 0x3f80
/* EDF614 80240C54 44810000 */ mtc1 $at, $f0
/* EDF618 80240C58 3C014000 */ lui $at, 0x4000
/* EDF61C 80240C5C 44811000 */ mtc1 $at, $f2
/* EDF620 80240C60 3C01C1A0 */ lui $at, 0xc1a0
/* EDF624 80240C64 44812000 */ mtc1 $at, $f4
/* EDF628 80240C68 44834000 */ mtc1 $v1, $f8
/* EDF62C 80240C6C 00000000 */ nop
/* EDF630 80240C70 46804220 */ cvt.s.w $f8, $f8
/* EDF634 80240C74 44074000 */ mfc1 $a3, $f8
/* EDF638 80240C78 27A20038 */ addiu $v0, $sp, 0x38
/* EDF63C 80240C7C AFB2001C */ sw $s2, 0x1c($sp)
/* EDF640 80240C80 AFA20020 */ sw $v0, 0x20($sp)
/* EDF644 80240C84 E7A00010 */ swc1 $f0, 0x10($sp)
/* EDF648 80240C88 E7A20014 */ swc1 $f2, 0x14($sp)
/* EDF64C 80240C8C 0C01D444 */ jal func_80075110
/* EDF650 80240C90 E7A40018 */ swc1 $f4, 0x18($sp)
/* EDF654 80240C94 0200202D */ daddu $a0, $s0, $zero
/* EDF658 80240C98 240502F4 */ addiu $a1, $zero, 0x2f4
/* EDF65C 80240C9C C480003C */ lwc1 $f0, 0x3c($a0)
/* EDF660 80240CA0 3C060020 */ lui $a2, 0x20
/* EDF664 80240CA4 0C013600 */ jal func_8004D800
/* EDF668 80240CA8 E4800064 */ swc1 $f0, 0x64($a0)
/* EDF66C 80240CAC 8E220018 */ lw $v0, 0x18($s1)
/* EDF670 80240CB0 9442002A */ lhu $v0, 0x2a($v0)
/* EDF674 80240CB4 30420001 */ andi $v0, $v0, 1
/* EDF678 80240CB8 10400003 */ beqz $v0, .L80240CC8
/* EDF67C 80240CBC 2402000A */ addiu $v0, $zero, 0xa
/* EDF680 80240CC0 0809035C */ j .L80240D70
/* EDF684 80240CC4 AE620070 */ sw $v0, 0x70($s3)
.L80240CC8:
/* EDF688 80240CC8 0809035C */ j .L80240D70
/* EDF68C 80240CCC AE720070 */ sw $s2, 0x70($s3)
.L80240CD0:
/* EDF690 80240CD0 AE220090 */ sw $v0, 0x90($s1)
.L80240CD4:
/* EDF694 80240CD4 8602008C */ lh $v0, 0x8c($s0)
/* EDF698 80240CD8 14400025 */ bnez $v0, .L80240D70
/* EDF69C 80240CDC 00000000 */ nop
/* EDF6A0 80240CE0 8602008E */ lh $v0, 0x8e($s0)
/* EDF6A4 80240CE4 1C400022 */ bgtz $v0, .L80240D70
/* EDF6A8 80240CE8 00000000 */ nop
/* EDF6AC 80240CEC 8E620074 */ lw $v0, 0x74($s3)
/* EDF6B0 80240CF0 2442FFFF */ addiu $v0, $v0, -1
/* EDF6B4 80240CF4 1840001D */ blez $v0, .L80240D6C
/* EDF6B8 80240CF8 AE620074 */ sw $v0, 0x74($s3)
/* EDF6BC 80240CFC 8E220018 */ lw $v0, 0x18($s1)
/* EDF6C0 80240D00 9442002A */ lhu $v0, 0x2a($v0)
/* EDF6C4 80240D04 30420010 */ andi $v0, $v0, 0x10
/* EDF6C8 80240D08 14400007 */ bnez $v0, .L80240D28
/* EDF6CC 80240D0C 00000000 */ nop
/* EDF6D0 80240D10 C600000C */ lwc1 $f0, 0xc($s0)
/* EDF6D4 80240D14 3C014334 */ lui $at, 0x4334
/* EDF6D8 80240D18 44816000 */ mtc1 $at, $f12
/* EDF6DC 80240D1C 0C00AB85 */ jal func_8002AE14
/* EDF6E0 80240D20 460C0300 */ add.s $f12, $f0, $f12
/* EDF6E4 80240D24 E600000C */ swc1 $f0, 0xc($s0)
.L80240D28:
/* EDF6E8 80240D28 0C00AB3B */ jal func_8002ACEC
/* EDF6EC 80240D2C 240403E8 */ addiu $a0, $zero, 0x3e8
/* EDF6F0 80240D30 3C032E8B */ lui $v1, 0x2e8b
/* EDF6F4 80240D34 3463A2E9 */ ori $v1, $v1, 0xa2e9
/* EDF6F8 80240D38 00430018 */ mult $v0, $v1
/* EDF6FC 80240D3C 00021FC3 */ sra $v1, $v0, 0x1f
/* EDF700 80240D40 00004010 */ mfhi $t0
/* EDF704 80240D44 00082043 */ sra $a0, $t0, 1
/* EDF708 80240D48 00832023 */ subu $a0, $a0, $v1
/* EDF70C 80240D4C 00041840 */ sll $v1, $a0, 1
/* EDF710 80240D50 00641821 */ addu $v1, $v1, $a0
/* EDF714 80240D54 00031880 */ sll $v1, $v1, 2
/* EDF718 80240D58 00641823 */ subu $v1, $v1, $a0
/* EDF71C 80240D5C 00431023 */ subu $v0, $v0, $v1
/* EDF720 80240D60 24420005 */ addiu $v0, $v0, 5
/* EDF724 80240D64 0809035C */ j .L80240D70
/* EDF728 80240D68 A602008E */ sh $v0, 0x8e($s0)
.L80240D6C:
/* EDF72C 80240D6C AE600070 */ sw $zero, 0x70($s3)
.L80240D70:
/* EDF730 80240D70 8FBF0054 */ lw $ra, 0x54($sp)
/* EDF734 80240D74 8FB40050 */ lw $s4, 0x50($sp)
/* EDF738 80240D78 8FB3004C */ lw $s3, 0x4c($sp)
/* EDF73C 80240D7C 8FB20048 */ lw $s2, 0x48($sp)
/* EDF740 80240D80 8FB10044 */ lw $s1, 0x44($sp)
/* EDF744 80240D84 8FB00040 */ lw $s0, 0x40($sp)
/* EDF748 80240D88 D7BA0070 */ ldc1 $f26, 0x70($sp)
/* EDF74C 80240D8C D7B80068 */ ldc1 $f24, 0x68($sp)
/* EDF750 80240D90 D7B60060 */ ldc1 $f22, 0x60($sp)
/* EDF754 80240D94 D7B40058 */ ldc1 $f20, 0x58($sp)
/* EDF758 80240D98 03E00008 */ jr $ra
/* EDF75C 80240D9C 27BD0078 */ addiu $sp, $sp, 0x78