papermario/asm/nonmatchings/code_1f580_len_1940/func_80045900.s
2020-09-23 23:16:13 -04:00

95 lines
4.7 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_80045900
/* 20D00 80045900 27BDFFB0 */ addiu $sp, $sp, -0x50
/* 20D04 80045904 AFB00040 */ sw $s0, 0x40($sp)
/* 20D08 80045908 0080802D */ daddu $s0, $a0, $zero
/* 20D0C 8004590C AFBF0048 */ sw $ra, 0x48($sp)
/* 20D10 80045910 AFB10044 */ sw $s1, 0x44($sp)
/* 20D14 80045914 8E110148 */ lw $s1, 0x148($s0)
/* 20D18 80045918 0C00EABB */ jal get_npc_unsafe
/* 20D1C 8004591C 86240008 */ lh $a0, 8($s1)
/* 20D20 80045920 8E03000C */ lw $v1, 0xc($s0)
/* 20D24 80045924 0200202D */ daddu $a0, $s0, $zero
/* 20D28 80045928 8C650000 */ lw $a1, ($v1)
/* 20D2C 8004592C 0C0B1EAF */ jal get_variable
/* 20D30 80045930 0040802D */ daddu $s0, $v0, $zero
/* 20D34 80045934 8E2300B0 */ lw $v1, 0xb0($s1)
/* 20D38 80045938 34630004 */ ori $v1, $v1, 4
/* 20D3C 8004593C 14400040 */ bnez $v0, .L80045A40
/* 20D40 80045940 AE2300B0 */ sw $v1, 0xb0($s1)
/* 20D44 80045944 30620010 */ andi $v0, $v1, 0x10
/* 20D48 80045948 14400004 */ bnez $v0, .L8004595C
/* 20D4C 8004594C 00000000 */ nop
/* 20D50 80045950 8E2200CC */ lw $v0, 0xcc($s1)
/* 20D54 80045954 8C420000 */ lw $v0, ($v0)
/* 20D58 80045958 AE020028 */ sw $v0, 0x28($s0)
.L8004595C:
/* 20D5C 8004595C 8E2200B0 */ lw $v0, 0xb0($s1)
/* 20D60 80045960 30420008 */ andi $v0, $v0, 8
/* 20D64 80045964 14400015 */ bnez $v0, .L800459BC
/* 20D68 80045968 24040002 */ addiu $a0, $zero, 2
/* 20D6C 8004596C 0200282D */ daddu $a1, $s0, $zero
/* 20D70 80045970 860300A8 */ lh $v1, 0xa8($s0)
/* 20D74 80045974 44800000 */ mtc1 $zero, $f0
/* 20D78 80045978 3C01C1A0 */ lui $at, 0xc1a0
/* 20D7C 8004597C 44811000 */ mtc1 $at, $f2
/* 20D80 80045980 24020028 */ addiu $v0, $zero, 0x28
/* 20D84 80045984 AFA2001C */ sw $v0, 0x1c($sp)
/* 20D88 80045988 44834000 */ mtc1 $v1, $f8
/* 20D8C 8004598C 00000000 */ nop
/* 20D90 80045990 46804220 */ cvt.s.w $f8, $f8
/* 20D94 80045994 44060000 */ mfc1 $a2, $f0
/* 20D98 80045998 3C013F80 */ lui $at, 0x3f80
/* 20D9C 8004599C 44810000 */ mtc1 $at, $f0
/* 20DA0 800459A0 44074000 */ mfc1 $a3, $f8
/* 20DA4 800459A4 03A21021 */ addu $v0, $sp, $v0
/* 20DA8 800459A8 AFA20020 */ sw $v0, 0x20($sp)
/* 20DAC 800459AC E7A20018 */ swc1 $f2, 0x18($sp)
/* 20DB0 800459B0 E7A00010 */ swc1 $f0, 0x10($sp)
/* 20DB4 800459B4 0C01BFA4 */ jal fx_emote
/* 20DB8 800459B8 AFA60014 */ sw $a2, 0x14($sp)
.L800459BC:
/* 20DBC 800459BC 8E020000 */ lw $v0, ($s0)
/* 20DC0 800459C0 24030808 */ addiu $v1, $zero, 0x808
/* 20DC4 800459C4 30420A08 */ andi $v0, $v0, 0xa08
/* 20DC8 800459C8 1443001D */ bne $v0, $v1, .L80045A40
/* 20DCC 800459CC 27A5002C */ addiu $a1, $sp, 0x2c
/* 20DD0 800459D0 27A60030 */ addiu $a2, $sp, 0x30
/* 20DD4 800459D4 C6000038 */ lwc1 $f0, 0x38($s0)
/* 20DD8 800459D8 860200A8 */ lh $v0, 0xa8($s0)
/* 20DDC 800459DC 3C0142C8 */ lui $at, 0x42c8
/* 20DE0 800459E0 44812000 */ mtc1 $at, $f4
/* 20DE4 800459E4 44823000 */ mtc1 $v0, $f6
/* 20DE8 800459E8 00000000 */ nop
/* 20DEC 800459EC 468031A0 */ cvt.s.w $f6, $f6
/* 20DF0 800459F0 27A20038 */ addiu $v0, $sp, 0x38
/* 20DF4 800459F4 E7A0002C */ swc1 $f0, 0x2c($sp)
/* 20DF8 800459F8 C600003C */ lwc1 $f0, 0x3c($s0)
/* 20DFC 800459FC C6020040 */ lwc1 $f2, 0x40($s0)
/* 20E00 80045A00 46060000 */ add.s $f0, $f0, $f6
/* 20E04 80045A04 E7A40038 */ swc1 $f4, 0x38($sp)
/* 20E08 80045A08 E7A20034 */ swc1 $f2, 0x34($sp)
/* 20E0C 80045A0C E7A00030 */ swc1 $f0, 0x30($sp)
/* 20E10 80045A10 AFA20010 */ sw $v0, 0x10($sp)
/* 20E14 80045A14 8E040080 */ lw $a0, 0x80($s0)
/* 20E18 80045A18 0C0372DF */ jal func_800DCB7C
/* 20E1C 80045A1C 27A70034 */ addiu $a3, $sp, 0x34
/* 20E20 80045A20 10400003 */ beqz $v0, .L80045A30
/* 20E24 80045A24 00000000 */ nop
/* 20E28 80045A28 C7A00030 */ lwc1 $f0, 0x30($sp)
/* 20E2C 80045A2C E600003C */ swc1 $f0, 0x3c($s0)
.L80045A30:
/* 20E30 80045A30 8E020000 */ lw $v0, ($s0)
/* 20E34 80045A34 2403F7FF */ addiu $v1, $zero, -0x801
/* 20E38 80045A38 00431024 */ and $v0, $v0, $v1
/* 20E3C 80045A3C AE020000 */ sw $v0, ($s0)
.L80045A40:
/* 20E40 80045A40 8FBF0048 */ lw $ra, 0x48($sp)
/* 20E44 80045A44 8FB10044 */ lw $s1, 0x44($sp)
/* 20E48 80045A48 8FB00040 */ lw $s0, 0x40($sp)
/* 20E4C 80045A4C 24020002 */ addiu $v0, $zero, 2
/* 20E50 80045A50 03E00008 */ jr $ra
/* 20E54 80045A54 27BD0050 */ addiu $sp, $sp, 0x50