papermario/asm/nonmatchings/code_121f0_len_1290/func_80037994.s
2020-08-12 21:56:23 -04:00

158 lines
7.3 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.include "include/macro.inc"
glabel func_80037994
/* 012D94 80037994 27BDFFF8 */ addiu $sp, $sp, -8
/* 012D98 80037998 0000602D */ daddu $t4, $zero, $zero
/* 012D9C 8003799C 3C02800A */ lui $v0, 0x800a
/* 012DA0 800379A0 2442A66C */ addiu $v0, $v0, -0x5994
/* 012DA4 800379A4 0040402D */ daddu $t0, $v0, $zero
/* 012DA8 800379A8 3C19800A */ lui $t9, 0x800a
/* 012DAC 800379AC 27390978 */ addiu $t9, $t9, 0x978
/* 012DB0 800379B0 3C0DF518 */ lui $t5, 0xf518
/* 012DB4 800379B4 35AD6400 */ ori $t5, $t5, 0x6400
/* 012DB8 800379B8 3C18E441 */ lui $t8, 0xe441
/* 012DBC 800379BC 3C0F000F */ lui $t7, 0xf
/* 012DC0 800379C0 0180582D */ daddu $t3, $t4, $zero
/* 012DC4 800379C4 0180502D */ daddu $t2, $t4, $zero
/* 012DC8 800379C8 3C02DE00 */ lui $v0, 0xde00
/* 012DCC 800379CC AFB00000 */ sw $s0, ($sp)
/* 012DD0 800379D0 8D030000 */ lw $v1, ($t0)
/* 012DD4 800379D4 3C01C2C8 */ lui $at, 0xc2c8
/* 012DD8 800379D8 44810000 */ mtc1 $at, $f0
/* 012DDC 800379DC 0060202D */ daddu $a0, $v1, $zero
/* 012DE0 800379E0 24630008 */ addiu $v1, $v1, 8
/* 012DE4 800379E4 AD030000 */ sw $v1, ($t0)
/* 012DE8 800379E8 AC820000 */ sw $v0, ($a0)
/* 012DEC 800379EC 3C028007 */ lui $v0, 0x8007
/* 012DF0 800379F0 24427A50 */ addiu $v0, $v0, 0x7a50
/* 012DF4 800379F4 AC820004 */ sw $v0, 4($a0)
/* 012DF8 800379F8 24620008 */ addiu $v0, $v1, 8
/* 012DFC 800379FC 46006302 */ mul.s $f12, $f12, $f0
/* 012E00 80037A00 00000000 */ nop
/* 012E04 80037A04 AD020000 */ sw $v0, ($t0)
/* 012E08 80037A08 3C02E700 */ lui $v0, 0xe700
/* 012E0C 80037A0C AC620000 */ sw $v0, ($v1)
/* 012E10 80037A10 AC600004 */ sw $zero, 4($v1)
/* 012E14 80037A14 4600608D */ trunc.w.s $f2, $f12
/* 012E18 80037A18 440E1000 */ mfc1 $t6, $f2
/* 012E1C 80037A1C 00000000 */ nop
/* 012E20 80037A20 25C9000F */ addiu $t1, $t6, 0xf
.L80037A24:
/* 012E24 80037A24 3C04FD18 */ lui $a0, 0xfd18
/* 012E28 80037A28 348400C7 */ ori $a0, $a0, 0xc7
/* 012E2C 80037A2C 3C050731 */ lui $a1, 0x731
/* 012E30 80037A30 34A5C004 */ ori $a1, $a1, 0xc004
/* 012E34 80037A34 3C060031 */ lui $a2, 0x31
/* 012E38 80037A38 34C6C004 */ ori $a2, $a2, 0xc004
/* 012E3C 80037A3C 8D070000 */ lw $a3, ($t0)
/* 012E40 80037A40 8F220000 */ lw $v0, ($t9)
/* 012E44 80037A44 00E0182D */ daddu $v1, $a3, $zero
/* 012E48 80037A48 24E70008 */ addiu $a3, $a3, 8
/* 012E4C 80037A4C 004A1021 */ addu $v0, $v0, $t2
/* 012E50 80037A50 AD070000 */ sw $a3, ($t0)
/* 012E54 80037A54 AC620004 */ sw $v0, 4($v1)
/* 012E58 80037A58 24E20008 */ addiu $v0, $a3, 8
/* 012E5C 80037A5C AC640000 */ sw $a0, ($v1)
/* 012E60 80037A60 AD020000 */ sw $v0, ($t0)
/* 012E64 80037A64 3C020700 */ lui $v0, 0x700
/* 012E68 80037A68 ACE20004 */ sw $v0, 4($a3)
/* 012E6C 80037A6C 24E20010 */ addiu $v0, $a3, 0x10
/* 012E70 80037A70 ACED0000 */ sw $t5, ($a3)
/* 012E74 80037A74 AD020000 */ sw $v0, ($t0)
/* 012E78 80037A78 3C02E600 */ lui $v0, 0xe600
/* 012E7C 80037A7C ACE20008 */ sw $v0, 8($a3)
/* 012E80 80037A80 24E20018 */ addiu $v0, $a3, 0x18
/* 012E84 80037A84 ACE0000C */ sw $zero, 0xc($a3)
/* 012E88 80037A88 AD020000 */ sw $v0, ($t0)
/* 012E8C 80037A8C 3C02F400 */ lui $v0, 0xf400
/* 012E90 80037A90 ACE20010 */ sw $v0, 0x10($a3)
/* 012E94 80037A94 24E20020 */ addiu $v0, $a3, 0x20
/* 012E98 80037A98 ACE50014 */ sw $a1, 0x14($a3)
/* 012E9C 80037A9C AD020000 */ sw $v0, ($t0)
/* 012EA0 80037AA0 3C02E700 */ lui $v0, 0xe700
/* 012EA4 80037AA4 ACE20018 */ sw $v0, 0x18($a3)
/* 012EA8 80037AA8 24E20028 */ addiu $v0, $a3, 0x28
/* 012EAC 80037AAC 24E30030 */ addiu $v1, $a3, 0x30
/* 012EB0 80037AB0 ACE0001C */ sw $zero, 0x1c($a3)
/* 012EB4 80037AB4 AD020000 */ sw $v0, ($t0)
/* 012EB8 80037AB8 3C02F200 */ lui $v0, 0xf200
/* 012EBC 80037ABC ACED0020 */ sw $t5, 0x20($a3)
/* 012EC0 80037AC0 ACE00024 */ sw $zero, 0x24($a3)
/* 012EC4 80037AC4 AD030000 */ sw $v1, ($t0)
/* 012EC8 80037AC8 ACE20028 */ sw $v0, 0x28($a3)
/* 012ECC 80037ACC 24E20038 */ addiu $v0, $a3, 0x38
/* 012ED0 80037AD0 ACE6002C */ sw $a2, 0x2c($a3)
/* 012ED4 80037AD4 AD020000 */ sw $v0, ($t0)
/* 012ED8 80037AD8 25C20011 */ addiu $v0, $t6, 0x11
/* 012EDC 80037ADC 01621021 */ addu $v0, $t3, $v0
/* 012EE0 80037AE0 00021480 */ sll $v0, $v0, 0x12
/* 012EE4 80037AE4 00021403 */ sra $v0, $v0, 0x10
/* 012EE8 80037AE8 18400004 */ blez $v0, .L80037AFC
/* 012EEC 80037AEC 30420FFF */ andi $v0, $v0, 0xfff
/* 012EF0 80037AF0 00581025 */ or $v0, $v0, $t8
/* 012EF4 80037AF4 0800DEC0 */ j .L80037B00
/* 012EF8 80037AF8 ACE20030 */ sw $v0, 0x30($a3)
.L80037AFC:
/* 012EFC 80037AFC ACF80030 */ sw $t8, 0x30($a3)
.L80037B00:
/* 012F00 80037B00 00091480 */ sll $v0, $t1, 0x12
/* 012F04 80037B04 00021403 */ sra $v0, $v0, 0x10
/* 012F08 80037B08 18400004 */ blez $v0, .L80037B1C
/* 012F0C 80037B0C 30420FFF */ andi $v0, $v0, 0xfff
/* 012F10 80037B10 004F1025 */ or $v0, $v0, $t7
/* 012F14 80037B14 0800DEC8 */ j .L80037B20
/* 012F18 80037B18 AC620004 */ sw $v0, 4($v1)
.L80037B1C:
/* 012F1C 80037B1C AC6F0004 */ sw $t7, 4($v1)
.L80037B20:
/* 012F20 80037B20 8D030000 */ lw $v1, ($t0)
/* 012F24 80037B24 24620008 */ addiu $v0, $v1, 8
/* 012F28 80037B28 AD020000 */ sw $v0, ($t0)
/* 012F2C 80037B2C 3C02E100 */ lui $v0, 0xe100
/* 012F30 80037B30 AC620000 */ sw $v0, ($v1)
/* 012F34 80037B34 00091080 */ sll $v0, $t1, 2
/* 012F38 80037B38 04430008 */ bgezl $v0, .L80037B5C
/* 012F3C 80037B3C AC600004 */ sw $zero, 4($v1)
/* 012F40 80037B40 00091480 */ sll $v0, $t1, 0x12
/* 012F44 80037B44 00021343 */ sra $v0, $v0, 0xd
/* 012F48 80037B48 5C400001 */ bgtzl $v0, .L80037B50
/* 012F4C 80037B4C 0000102D */ daddu $v0, $zero, $zero
.L80037B50:
/* 012F50 80037B50 00021023 */ negu $v0, $v0
/* 012F54 80037B54 3042FFFF */ andi $v0, $v0, 0xffff
/* 012F58 80037B58 AC620004 */ sw $v0, 4($v1)
.L80037B5C:
/* 012F5C 80037B5C 3C040400 */ lui $a0, 0x400
/* 012F60 80037B60 34840400 */ ori $a0, $a0, 0x400
/* 012F64 80037B64 25290002 */ addiu $t1, $t1, 2
/* 012F68 80037B68 256B0002 */ addiu $t3, $t3, 2
/* 012F6C 80037B6C 254A0640 */ addiu $t2, $t2, 0x640
/* 012F70 80037B70 8D020000 */ lw $v0, ($t0)
/* 012F74 80037B74 258C0001 */ addiu $t4, $t4, 1
/* 012F78 80037B78 0040182D */ daddu $v1, $v0, $zero
/* 012F7C 80037B7C 24420008 */ addiu $v0, $v0, 8
/* 012F80 80037B80 AD020000 */ sw $v0, ($t0)
/* 012F84 80037B84 3C02F100 */ lui $v0, 0xf100
/* 012F88 80037B88 AC620000 */ sw $v0, ($v1)
/* 012F8C 80037B8C 29820038 */ slti $v0, $t4, 0x38
/* 012F90 80037B90 1440FFA4 */ bnez $v0, .L80037A24
/* 012F94 80037B94 AC640004 */ sw $a0, 4($v1)
/* 012F98 80037B98 3C03800A */ lui $v1, 0x800a
/* 012F9C 80037B9C 2463A66C */ addiu $v1, $v1, -0x5994
/* 012FA0 80037BA0 8C620000 */ lw $v0, ($v1)
/* 012FA4 80037BA4 0040202D */ daddu $a0, $v0, $zero
/* 012FA8 80037BA8 24420008 */ addiu $v0, $v0, 8
/* 012FAC 80037BAC AC620000 */ sw $v0, ($v1)
/* 012FB0 80037BB0 3C02E700 */ lui $v0, 0xe700
/* 012FB4 80037BB4 AC820000 */ sw $v0, ($a0)
/* 012FB8 80037BB8 AC800004 */ sw $zero, 4($a0)
/* 012FBC 80037BBC 8FB00000 */ lw $s0, ($sp)
/* 012FC0 80037BC0 03E00008 */ jr $ra
/* 012FC4 80037BC4 27BD0008 */ addiu $sp, $sp, 8