papermario/asm/nonmatchings/code_3812C0/func_E0080000.s
2020-11-29 02:13:07 -05:00

127 lines
6.5 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_E0080000
/* 3812C0 E0080000 27BDFFA8 */ addiu $sp, $sp, -0x58
/* 3812C4 E0080004 F7B40040 */ sdc1 $f20, 0x40($sp)
/* 3812C8 E0080008 4485A000 */ mtc1 $a1, $f20
/* 3812CC E008000C F7B60048 */ sdc1 $f22, 0x48($sp)
/* 3812D0 E0080010 4486B000 */ mtc1 $a2, $f22
/* 3812D4 E0080014 AFB30034 */ sw $s3, 0x34($sp)
/* 3812D8 E0080018 0080982D */ daddu $s3, $a0, $zero
/* 3812DC E008001C F7B80050 */ sdc1 $f24, 0x50($sp)
/* 3812E0 E0080020 4487C000 */ mtc1 $a3, $f24
/* 3812E4 E0080024 27A40010 */ addiu $a0, $sp, 0x10
/* 3812E8 E0080028 AFB00028 */ sw $s0, 0x28($sp)
/* 3812EC E008002C 8FB00068 */ lw $s0, 0x68($sp)
/* 3812F0 E0080030 3C02E008 */ lui $v0, %hi(D_E00801C8)
/* 3812F4 E0080034 244201C8 */ addiu $v0, $v0, %lo(D_E00801C8)
/* 3812F8 E0080038 AFA20018 */ sw $v0, 0x18($sp)
/* 3812FC E008003C 3C02E008 */ lui $v0, %hi(D_E00801D0)
/* 381300 E0080040 244201D0 */ addiu $v0, $v0, %lo(D_E00801D0)
/* 381304 E0080044 AFA2001C */ sw $v0, 0x1c($sp)
/* 381308 E0080048 3C02E008 */ lui $v0, %hi(D_E0080424)
/* 38130C E008004C 24420424 */ addiu $v0, $v0, %lo(D_E0080424)
/* 381310 E0080050 AFA20020 */ sw $v0, 0x20($sp)
/* 381314 E0080054 3C02E008 */ lui $v0, %hi(D_E008042C)
/* 381318 E0080058 2442042C */ addiu $v0, $v0, %lo(D_E008042C)
/* 38131C E008005C AFA20024 */ sw $v0, 0x24($sp)
/* 381320 E0080060 24020040 */ addiu $v0, $zero, 0x40
/* 381324 E0080064 AFBF0038 */ sw $ra, 0x38($sp)
/* 381328 E0080068 AFB20030 */ sw $s2, 0x30($sp)
/* 38132C E008006C AFB1002C */ sw $s1, 0x2c($sp)
/* 381330 E0080070 AFA00010 */ sw $zero, 0x10($sp)
/* 381334 E0080074 0C080124 */ jal func_E0200490
/* 381338 E0080078 AFA20014 */ sw $v0, 0x14($sp)
/* 38133C E008007C 24040090 */ addiu $a0, $zero, 0x90
/* 381340 E0080080 24120002 */ addiu $s2, $zero, 2
/* 381344 E0080084 0040882D */ daddu $s1, $v0, $zero
/* 381348 E0080088 0C08012C */ jal func_E02004B0
/* 38134C E008008C AE320008 */ sw $s2, 8($s1)
/* 381350 E0080090 0040182D */ daddu $v1, $v0, $zero
/* 381354 E0080094 14600003 */ bnez $v1, .LE00800A4
/* 381358 E0080098 AE23000C */ sw $v1, 0xc($s1)
.LE008009C:
/* 38135C E008009C 08020027 */ j .LE008009C
/* 381360 E00800A0 00000000 */ nop
.LE00800A4:
/* 381364 E00800A4 2402002E */ addiu $v0, $zero, 0x2e
/* 381368 E00800A8 AC730000 */ sw $s3, ($v1)
/* 38136C E00800AC E4740004 */ swc1 $f20, 4($v1)
/* 381370 E00800B0 E4760008 */ swc1 $f22, 8($v1)
/* 381374 E00800B4 E478000C */ swc1 $f24, 0xc($v1)
/* 381378 E00800B8 AC62002C */ sw $v0, 0x2c($v1)
/* 38137C E00800BC 06010005 */ bgez $s0, .LE00800D4
/* 381380 E00800C0 AC600030 */ sw $zero, 0x30($v1)
/* 381384 E00800C4 24020001 */ addiu $v0, $zero, 1
/* 381388 E00800C8 AC620044 */ sw $v0, 0x44($v1)
/* 38138C E00800CC 08020036 */ j .LE00800D8
/* 381390 E00800D0 00108023 */ negu $s0, $s0
.LE00800D4:
/* 381394 E00800D4 AC600044 */ sw $zero, 0x44($v1)
.LE00800D8:
/* 381398 E00800D8 AC700040 */ sw $s0, 0x40($v1)
/* 38139C E00800DC 24050001 */ addiu $a1, $zero, 1
/* 3813A0 E00800E0 00B2102A */ slt $v0, $a1, $s2
/* 3813A4 E00800E4 1040002D */ beqz $v0, .LE008019C
/* 3813A8 E00800E8 24630048 */ addiu $v1, $v1, 0x48
/* 3813AC E00800EC 00A0382D */ daddu $a3, $a1, $zero
/* 3813B0 E00800F0 3C013FB3 */ lui $at, 0x3fb3
/* 3813B4 E00800F4 34213333 */ ori $at, $at, 0x3333
/* 3813B8 E00800F8 44811000 */ mtc1 $at, $f2
/* 3813BC E00800FC 240600FF */ addiu $a2, $zero, 0xff
/* 3813C0 E0080100 24640028 */ addiu $a0, $v1, 0x28
.LE0080104:
/* 3813C4 E0080104 AC80FFDC */ sw $zero, -0x24($a0)
/* 3813C8 E0080108 AC80FFE0 */ sw $zero, -0x20($a0)
/* 3813CC E008010C AC80FFE4 */ sw $zero, -0x1c($a0)
/* 3813D0 E0080110 AC80FFFC */ sw $zero, -4($a0)
/* 3813D4 E0080114 AC80FFE8 */ sw $zero, -0x18($a0)
/* 3813D8 E0080118 AC80FFF0 */ sw $zero, -0x10($a0)
/* 3813DC E008011C AC80FFF8 */ sw $zero, -8($a0)
/* 3813E0 E0080120 14A70007 */ bne $a1, $a3, .LE0080140
/* 3813E4 E0080124 AC80FFF4 */ sw $zero, -0xc($a0)
/* 3813E8 E0080128 AC80FFDC */ sw $zero, -0x24($a0)
/* 3813EC E008012C AC80000C */ sw $zero, 0xc($a0)
/* 3813F0 E0080130 AC800010 */ sw $zero, 0x10($a0)
/* 3813F4 E0080134 AC800014 */ sw $zero, 0x14($a0)
/* 3813F8 E0080138 08020061 */ j .LE0080184
/* 3813FC E008013C E482FFEC */ swc1 $f2, -0x14($a0)
.LE0080140:
/* 381400 E0080140 30A30001 */ andi $v1, $a1, 1
/* 381404 E0080144 00031840 */ sll $v1, $v1, 1
/* 381408 E0080148 2463FFFF */ addiu $v1, $v1, -1
/* 38140C E008014C 24A2FFFF */ addiu $v0, $a1, -1
/* 381410 E0080150 00021043 */ sra $v0, $v0, 1
/* 381414 E0080154 00620018 */ mult $v1, $v0
/* 381418 E0080158 24A2000A */ addiu $v0, $a1, 0xa
/* 38141C E008015C E482FFEC */ swc1 $f2, -0x14($a0)
/* 381420 E0080160 AC82000C */ sw $v0, 0xc($a0)
/* 381424 E0080164 AC800010 */ sw $zero, 0x10($a0)
/* 381428 E0080168 AC800014 */ sw $zero, 0x14($a0)
/* 38142C E008016C 00004012 */ mflo $t0
/* 381430 E0080170 00081080 */ sll $v0, $t0, 2
/* 381434 E0080174 44820000 */ mtc1 $v0, $f0
/* 381438 E0080178 00000000 */ nop
/* 38143C E008017C 46800020 */ cvt.s.w $f0, $f0
/* 381440 E0080180 E480FFDC */ swc1 $f0, -0x24($a0)
.LE0080184:
/* 381444 E0080184 24A50001 */ addiu $a1, $a1, 1
/* 381448 E0080188 AC800004 */ sw $zero, 4($a0)
/* 38144C E008018C AC860000 */ sw $a2, ($a0)
/* 381450 E0080190 00B2102A */ slt $v0, $a1, $s2
/* 381454 E0080194 1440FFDB */ bnez $v0, .LE0080104
/* 381458 E0080198 24840048 */ addiu $a0, $a0, 0x48
.LE008019C:
/* 38145C E008019C 0220102D */ daddu $v0, $s1, $zero
/* 381460 E00801A0 8FBF0038 */ lw $ra, 0x38($sp)
/* 381464 E00801A4 8FB30034 */ lw $s3, 0x34($sp)
/* 381468 E00801A8 8FB20030 */ lw $s2, 0x30($sp)
/* 38146C E00801AC 8FB1002C */ lw $s1, 0x2c($sp)
/* 381470 E00801B0 8FB00028 */ lw $s0, 0x28($sp)
/* 381474 E00801B4 D7B80050 */ ldc1 $f24, 0x50($sp)
/* 381478 E00801B8 D7B60048 */ ldc1 $f22, 0x48($sp)
/* 38147C E00801BC D7B40040 */ ldc1 $f20, 0x40($sp)
/* 381480 E00801C0 03E00008 */ jr $ra
/* 381484 E00801C4 27BD0058 */ addiu $sp, $sp, 0x58