papermario/asm/nonmatchings/code_372790/func_E006E35C.s
2021-01-11 21:40:52 +09:00

242 lines
12 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_E006E35C
/* 372AEC E006E35C 27BDFFC8 */ addiu $sp, $sp, -0x38
/* 372AF0 E006E360 AFBF0034 */ sw $ra, 0x34($sp)
/* 372AF4 E006E364 AFB20030 */ sw $s2, 0x30($sp)
/* 372AF8 E006E368 AFB1002C */ sw $s1, 0x2c($sp)
/* 372AFC E006E36C AFB00028 */ sw $s0, 0x28($sp)
/* 372B00 E006E370 8C90000C */ lw $s0, 0xc($a0)
/* 372B04 E006E374 3C014080 */ lui $at, 0x4080
/* 372B08 E006E378 44811000 */ mtc1 $at, $f2
/* 372B0C E006E37C C600004C */ lwc1 $f0, 0x4c($s0)
/* 372B10 E006E380 46800020 */ cvt.s.w $f0, $f0
/* 372B14 E006E384 8E020048 */ lw $v0, 0x48($s0)
/* 372B18 E006E388 46020002 */ mul.s $f0, $f0, $f2
/* 372B1C E006E38C 00000000 */ nop
/* 372B20 E006E390 2442FFFF */ addiu $v0, $v0, -1
/* 372B24 E006E394 AE020048 */ sw $v0, 0x48($s0)
/* 372B28 E006E398 8E02004C */ lw $v0, 0x4c($s0)
/* 372B2C E006E39C 3C014120 */ lui $at, 0x4120
/* 372B30 E006E3A0 44811000 */ mtc1 $at, $f2
/* 372B34 E006E3A4 24430001 */ addiu $v1, $v0, 1
/* 372B38 E006E3A8 8E020048 */ lw $v0, 0x48($s0)
/* 372B3C E006E3AC AE03004C */ sw $v1, 0x4c($s0)
/* 372B40 E006E3B0 46020003 */ div.s $f0, $f0, $f2
/* 372B44 E006E3B4 04410005 */ bgez $v0, .LE006E3CC
/* 372B48 E006E3B8 E600005C */ swc1 $f0, 0x5c($s0)
/* 372B4C E006E3BC 0C080128 */ jal func_E02004A0
/* 372B50 E006E3C0 00000000 */ nop
/* 372B54 E006E3C4 0801B9B3 */ j .LE006E6CC
/* 372B58 E006E3C8 00000000 */ nop
.LE006E3CC:
/* 372B5C E006E3CC 0040882D */ daddu $s1, $v0, $zero
/* 372B60 E006E3D0 8E120044 */ lw $s2, 0x44($s0)
/* 372B64 E006E3D4 2A220006 */ slti $v0, $s1, 6
/* 372B68 E006E3D8 14400011 */ bnez $v0, .LE006E420
/* 372B6C E006E3DC 0060202D */ daddu $a0, $v1, $zero
/* 372B70 E006E3E0 8E020000 */ lw $v0, ($s0)
/* 372B74 E006E3E4 1440000E */ bnez $v0, .LE006E420
/* 372B78 E006E3E8 00000000 */ nop
/* 372B7C E006E3EC C6000038 */ lwc1 $f0, 0x38($s0)
/* 372B80 E006E3F0 3C014004 */ lui $at, 0x4004
/* 372B84 E006E3F4 44811800 */ mtc1 $at, $f3
/* 372B88 E006E3F8 44801000 */ mtc1 $zero, $f2
/* 372B8C E006E3FC 46000021 */ cvt.d.s $f0, $f0
/* 372B90 E006E400 46201081 */ sub.d $f2, $f2, $f0
/* 372B94 E006E404 3C01E007 */ lui $at, %hi(D_E006EC30)
/* 372B98 E006E408 D424EC30 */ ldc1 $f4, %lo(D_E006EC30)($at)
/* 372B9C E006E40C 46241082 */ mul.d $f2, $f2, $f4
/* 372BA0 E006E410 00000000 */ nop
/* 372BA4 E006E414 46220000 */ add.d $f0, $f0, $f2
/* 372BA8 E006E418 46200020 */ cvt.s.d $f0, $f0
/* 372BAC E006E41C E6000038 */ swc1 $f0, 0x38($s0)
.LE006E420:
/* 372BB0 E006E420 C6060024 */ lwc1 $f6, 0x24($s0)
/* 372BB4 E006E424 C60C0018 */ lwc1 $f12, 0x18($s0)
/* 372BB8 E006E428 460C3181 */ sub.s $f6, $f6, $f12
/* 372BBC E006E42C C6000050 */ lwc1 $f0, 0x50($s0)
/* 372BC0 E006E430 46003180 */ add.s $f6, $f6, $f0
/* 372BC4 E006E434 44847000 */ mtc1 $a0, $f14
/* 372BC8 E006E438 00000000 */ nop
/* 372BCC E006E43C 468073A0 */ cvt.s.w $f14, $f14
/* 372BD0 E006E440 460E3182 */ mul.s $f6, $f6, $f14
/* 372BD4 E006E444 00000000 */ nop
/* 372BD8 E006E448 C6040028 */ lwc1 $f4, 0x28($s0)
/* 372BDC E006E44C C60A001C */ lwc1 $f10, 0x1c($s0)
/* 372BE0 E006E450 460A2101 */ sub.s $f4, $f4, $f10
/* 372BE4 E006E454 C6000054 */ lwc1 $f0, 0x54($s0)
/* 372BE8 E006E458 46002100 */ add.s $f4, $f4, $f0
/* 372BEC E006E45C 460E2102 */ mul.s $f4, $f4, $f14
/* 372BF0 E006E460 00000000 */ nop
/* 372BF4 E006E464 C6080020 */ lwc1 $f8, 0x20($s0)
/* 372BF8 E006E468 C600002C */ lwc1 $f0, 0x2c($s0)
/* 372BFC E006E46C 46080001 */ sub.s $f0, $f0, $f8
/* 372C00 E006E470 C6020058 */ lwc1 $f2, 0x58($s0)
/* 372C04 E006E474 46020000 */ add.s $f0, $f0, $f2
/* 372C08 E006E478 460E0002 */ mul.s $f0, $f0, $f14
/* 372C0C E006E47C 00000000 */ nop
/* 372C10 E006E480 44921000 */ mtc1 $s2, $f2
/* 372C14 E006E484 00000000 */ nop
/* 372C18 E006E488 468010A0 */ cvt.s.w $f2, $f2
/* 372C1C E006E48C 46023183 */ div.s $f6, $f6, $f2
/* 372C20 E006E490 46066300 */ add.s $f12, $f12, $f6
/* 372C24 E006E494 24020001 */ addiu $v0, $zero, 1
/* 372C28 E006E498 46022103 */ div.s $f4, $f4, $f2
/* 372C2C E006E49C 46045280 */ add.s $f10, $f10, $f4
/* 372C30 E006E4A0 8E030000 */ lw $v1, ($s0)
/* 372C34 E006E4A4 46020003 */ div.s $f0, $f0, $f2
/* 372C38 E006E4A8 46004200 */ add.s $f8, $f8, $f0
/* 372C3C E006E4AC E60C000C */ swc1 $f12, 0xc($s0)
/* 372C40 E006E4B0 E60A0010 */ swc1 $f10, 0x10($s0)
/* 372C44 E006E4B4 1462000E */ bne $v1, $v0, .LE006E4F0
/* 372C48 E006E4B8 E6080014 */ swc1 $f8, 0x14($s0)
/* 372C4C E006E4BC 3C01E007 */ lui $at, %hi(D_E006EC38)
/* 372C50 E006E4C0 D420EC38 */ ldc1 $f0, %lo(D_E006EC38)($at)
/* 372C54 E006E4C4 460070A1 */ cvt.d.s $f2, $f14
/* 372C58 E006E4C8 46201082 */ mul.d $f2, $f2, $f0
/* 372C5C E006E4CC 00000000 */ nop
/* 372C60 E006E4D0 C6000060 */ lwc1 $f0, 0x60($s0)
/* 372C64 E006E4D4 46000021 */ cvt.d.s $f0, $f0
/* 372C68 E006E4D8 46220000 */ add.d $f0, $f0, $f2
/* 372C6C E006E4DC 46005086 */ mov.s $f2, $f10
/* 372C70 E006E4E0 46200020 */ cvt.s.d $f0, $f0
/* 372C74 E006E4E4 46001080 */ add.s $f2, $f2, $f0
/* 372C78 E006E4E8 E6000060 */ swc1 $f0, 0x60($s0)
/* 372C7C E006E4EC E6020010 */ swc1 $f2, 0x10($s0)
.LE006E4F0:
/* 372C80 E006E4F0 8E020008 */ lw $v0, 8($s0)
/* 372C84 E006E4F4 24420001 */ addiu $v0, $v0, 1
/* 372C88 E006E4F8 14820034 */ bne $a0, $v0, .LE006E5CC
/* 372C8C E006E4FC 2A22000A */ slti $v0, $s1, 0xa
/* 372C90 E006E500 8E020004 */ lw $v0, 4($s0)
/* 372C94 E006E504 18400031 */ blez $v0, .LE006E5CC
/* 372C98 E006E508 2A22000A */ slti $v0, $s1, 0xa
/* 372C9C E006E50C 0C080150 */ jal func_E0200540
/* 372CA0 E006E510 24040037 */ addiu $a0, $zero, 0x37
/* 372CA4 E006E514 C6000024 */ lwc1 $f0, 0x24($s0)
/* 372CA8 E006E518 E7A00010 */ swc1 $f0, 0x10($sp)
/* 372CAC E006E51C C6000028 */ lwc1 $f0, 0x28($s0)
/* 372CB0 E006E520 E7A00014 */ swc1 $f0, 0x14($sp)
/* 372CB4 E006E524 C600002C */ lwc1 $f0, 0x2c($s0)
/* 372CB8 E006E528 E7A00018 */ swc1 $f0, 0x18($sp)
/* 372CBC E006E52C 8E020004 */ lw $v0, 4($s0)
/* 372CC0 E006E530 2442FFFF */ addiu $v0, $v0, -1
/* 372CC4 E006E534 AFA2001C */ sw $v0, 0x1c($sp)
/* 372CC8 E006E538 8E020008 */ lw $v0, 8($s0)
/* 372CCC E006E53C AFB20024 */ sw $s2, 0x24($sp)
/* 372CD0 E006E540 AFA20020 */ sw $v0, 0x20($sp)
/* 372CD4 E006E544 8E040000 */ lw $a0, ($s0)
/* 372CD8 E006E548 8E050018 */ lw $a1, 0x18($s0)
/* 372CDC E006E54C 8E06001C */ lw $a2, 0x1c($s0)
/* 372CE0 E006E550 0C01B800 */ jal func_E006E000
/* 372CE4 E006E554 8E070020 */ lw $a3, 0x20($s0)
/* 372CE8 E006E558 8C44000C */ lw $a0, 0xc($v0)
/* 372CEC E006E55C 8E030064 */ lw $v1, 0x64($s0)
/* 372CF0 E006E560 AC830064 */ sw $v1, 0x64($a0)
/* 372CF4 E006E564 8C44000C */ lw $a0, 0xc($v0)
/* 372CF8 E006E568 8E030068 */ lw $v1, 0x68($s0)
/* 372CFC E006E56C AC830068 */ sw $v1, 0x68($a0)
/* 372D00 E006E570 8C44000C */ lw $a0, 0xc($v0)
/* 372D04 E006E574 8E03006C */ lw $v1, 0x6c($s0)
/* 372D08 E006E578 AC83006C */ sw $v1, 0x6c($a0)
/* 372D0C E006E57C 8C44000C */ lw $a0, 0xc($v0)
/* 372D10 E006E580 8E030070 */ lw $v1, 0x70($s0)
/* 372D14 E006E584 AC830070 */ sw $v1, 0x70($a0)
/* 372D18 E006E588 8C44000C */ lw $a0, 0xc($v0)
/* 372D1C E006E58C 8E030074 */ lw $v1, 0x74($s0)
/* 372D20 E006E590 AC830074 */ sw $v1, 0x74($a0)
/* 372D24 E006E594 8C44000C */ lw $a0, 0xc($v0)
/* 372D28 E006E598 8E030078 */ lw $v1, 0x78($s0)
/* 372D2C E006E59C AC830078 */ sw $v1, 0x78($a0)
/* 372D30 E006E5A0 8C43000C */ lw $v1, 0xc($v0)
/* 372D34 E006E5A4 C6000030 */ lwc1 $f0, 0x30($s0)
/* 372D38 E006E5A8 E4600038 */ swc1 $f0, 0x38($v1)
/* 372D3C E006E5AC E4600030 */ swc1 $f0, 0x30($v1)
/* 372D40 E006E5B0 8C43000C */ lw $v1, 0xc($v0)
/* 372D44 E006E5B4 C6000034 */ lwc1 $f0, 0x34($s0)
/* 372D48 E006E5B8 E4600034 */ swc1 $f0, 0x34($v1)
/* 372D4C E006E5BC 8C42000C */ lw $v0, 0xc($v0)
/* 372D50 E006E5C0 C600003C */ lwc1 $f0, 0x3c($s0)
/* 372D54 E006E5C4 E440003C */ swc1 $f0, 0x3c($v0)
/* 372D58 E006E5C8 2A22000A */ slti $v0, $s1, 0xa
.LE006E5CC:
/* 372D5C E006E5CC 10400008 */ beqz $v0, .LE006E5F0
/* 372D60 E006E5D0 00000000 */ nop
/* 372D64 E006E5D4 8E020000 */ lw $v0, ($s0)
/* 372D68 E006E5D8 14400005 */ bnez $v0, .LE006E5F0
/* 372D6C E006E5DC 00111040 */ sll $v0, $s1, 1
/* 372D70 E006E5E0 00511021 */ addu $v0, $v0, $s1
/* 372D74 E006E5E4 000210C0 */ sll $v0, $v0, 3
/* 372D78 E006E5E8 00511021 */ addu $v0, $v0, $s1
/* 372D7C E006E5EC AE020040 */ sw $v0, 0x40($s0)
.LE006E5F0:
/* 372D80 E006E5F0 8E030000 */ lw $v1, ($s0)
/* 372D84 E006E5F4 24020001 */ addiu $v0, $zero, 1
/* 372D88 E006E5F8 1462001D */ bne $v1, $v0, .LE006E670
/* 372D8C E006E5FC 24020002 */ addiu $v0, $zero, 2
/* 372D90 E006E600 001110C0 */ sll $v0, $s1, 3
/* 372D94 E006E604 00511023 */ subu $v0, $v0, $s1
/* 372D98 E006E608 00021140 */ sll $v0, $v0, 5
/* 372D9C E006E60C 16400002 */ bnez $s2, .LE006E618
/* 372DA0 E006E610 0052001A */ div $zero, $v0, $s2
/* 372DA4 E006E614 0007000D */ break 7
.LE006E618:
/* 372DA8 E006E618 2401FFFF */ addiu $at, $zero, -1
/* 372DAC E006E61C 16410004 */ bne $s2, $at, .LE006E630
/* 372DB0 E006E620 3C018000 */ lui $at, 0x8000
/* 372DB4 E006E624 14410002 */ bne $v0, $at, .LE006E630
/* 372DB8 E006E628 00000000 */ nop
/* 372DBC E006E62C 0006000D */ break 6
.LE006E630:
/* 372DC0 E006E630 00001012 */ mflo $v0
/* 372DC4 E006E634 C6000038 */ lwc1 $f0, 0x38($s0)
/* 372DC8 E006E638 3C01E007 */ lui $at, %hi(D_E006EC40)
/* 372DCC E006E63C D422EC40 */ ldc1 $f2, %lo(D_E006EC40)($at)
/* 372DD0 E006E640 46000021 */ cvt.d.s $f0, $f0
/* 372DD4 E006E644 46201081 */ sub.d $f2, $f2, $f0
/* 372DD8 E006E648 3C01E007 */ lui $at, %hi(D_E006EC48)
/* 372DDC E006E64C D424EC48 */ ldc1 $f4, %lo(D_E006EC48)($at)
/* 372DE0 E006E650 46241082 */ mul.d $f2, $f2, $f4
/* 372DE4 E006E654 00000000 */ nop
/* 372DE8 E006E658 46220000 */ add.d $f0, $f0, $f2
/* 372DEC E006E65C 46200020 */ cvt.s.d $f0, $f0
/* 372DF0 E006E660 E6000038 */ swc1 $f0, 0x38($s0)
/* 372DF4 E006E664 AE020040 */ sw $v0, 0x40($s0)
/* 372DF8 E006E668 8E030000 */ lw $v1, ($s0)
/* 372DFC E006E66C 24020002 */ addiu $v0, $zero, 2
.LE006E670:
/* 372E00 E006E670 14620016 */ bne $v1, $v0, .LE006E6CC
/* 372E04 E006E674 001110C0 */ sll $v0, $s1, 3
/* 372E08 E006E678 00511023 */ subu $v0, $v0, $s1
/* 372E0C E006E67C 00021140 */ sll $v0, $v0, 5
/* 372E10 E006E680 16400002 */ bnez $s2, .LE006E68C
/* 372E14 E006E684 0052001A */ div $zero, $v0, $s2
/* 372E18 E006E688 0007000D */ break 7
.LE006E68C:
/* 372E1C E006E68C 2401FFFF */ addiu $at, $zero, -1
/* 372E20 E006E690 16410004 */ bne $s2, $at, .LE006E6A4
/* 372E24 E006E694 3C018000 */ lui $at, 0x8000
/* 372E28 E006E698 14410002 */ bne $v0, $at, .LE006E6A4
/* 372E2C E006E69C 00000000 */ nop
/* 372E30 E006E6A0 0006000D */ break 6
.LE006E6A4:
/* 372E34 E006E6A4 00001012 */ mflo $v0
/* 372E38 E006E6A8 C6000034 */ lwc1 $f0, 0x34($s0)
/* 372E3C E006E6AC C6020038 */ lwc1 $f2, 0x38($s0)
/* 372E40 E006E6B0 46020001 */ sub.s $f0, $f0, $f2
/* 372E44 E006E6B4 C604003C */ lwc1 $f4, 0x3c($s0)
/* 372E48 E006E6B8 46040002 */ mul.s $f0, $f0, $f4
/* 372E4C E006E6BC 00000000 */ nop
/* 372E50 E006E6C0 46001080 */ add.s $f2, $f2, $f0
/* 372E54 E006E6C4 E6020038 */ swc1 $f2, 0x38($s0)
/* 372E58 E006E6C8 AE020040 */ sw $v0, 0x40($s0)
.LE006E6CC:
/* 372E5C E006E6CC 8FBF0034 */ lw $ra, 0x34($sp)
/* 372E60 E006E6D0 8FB20030 */ lw $s2, 0x30($sp)
/* 372E64 E006E6D4 8FB1002C */ lw $s1, 0x2c($sp)
/* 372E68 E006E6D8 8FB00028 */ lw $s0, 0x28($sp)
/* 372E6C E006E6DC 03E00008 */ jr $ra
/* 372E70 E006E6E0 27BD0038 */ addiu $sp, $sp, 0x38