.set noat # allow manual use of $at .set noreorder # don't insert nops after branches glabel func_8004A124 /* 025524 8004A124 27BDFFA8 */ addiu $sp, $sp, -0x58 /* 025528 8004A128 AFB30044 */ sw $s3, 0x44($sp) /* 02552C 8004A12C 0080982D */ daddu $s3, $a0, $zero /* 025530 8004A130 AFBF0048 */ sw $ra, 0x48($sp) /* 025534 8004A134 AFB20040 */ sw $s2, 0x40($sp) /* 025538 8004A138 AFB1003C */ sw $s1, 0x3c($sp) /* 02553C 8004A13C AFB00038 */ sw $s0, 0x38($sp) /* 025540 8004A140 F7B40050 */ sdc1 $f20, 0x50($sp) /* 025544 8004A144 8E720148 */ lw $s2, 0x148($s3) /* 025548 8004A148 00A0882D */ daddu $s1, $a1, $zero /* 02554C 8004A14C 86440008 */ lh $a0, 8($s2) /* 025550 8004A150 0C00EABB */ jal get_npc_unsafe /* 025554 8004A154 00C0802D */ daddu $s0, $a2, $zero /* 025558 8004A158 0200202D */ daddu $a0, $s0, $zero /* 02555C 8004A15C 0240282D */ daddu $a1, $s2, $zero /* 025560 8004A160 24030001 */ addiu $v1, $zero, 1 /* 025564 8004A164 AFA30010 */ sw $v1, 0x10($sp) /* 025568 8004A168 8E260024 */ lw $a2, 0x24($s1) /* 02556C 8004A16C 8E270028 */ lw $a3, 0x28($s1) /* 025570 8004A170 0C01242D */ jal func_800490B4 /* 025574 8004A174 0040802D */ daddu $s0, $v0, $zero /* 025578 8004A178 1440001D */ bnez $v0, .L8004A1F0 /* 02557C 8004A17C 24040002 */ addiu $a0, $zero, 2 /* 025580 8004A180 0200282D */ daddu $a1, $s0, $zero /* 025584 8004A184 0000302D */ daddu $a2, $zero, $zero /* 025588 8004A188 860300A8 */ lh $v1, 0xa8($s0) /* 02558C 8004A18C 3C013F80 */ lui $at, 0x3f80 /* 025590 8004A190 44810000 */ mtc1 $at, $f0 /* 025594 8004A194 3C014000 */ lui $at, 0x4000 /* 025598 8004A198 44811000 */ mtc1 $at, $f2 /* 02559C 8004A19C 3C01C1A0 */ lui $at, 0xc1a0 /* 0255A0 8004A1A0 44812000 */ mtc1 $at, $f4 /* 0255A4 8004A1A4 2402000F */ addiu $v0, $zero, 0xf /* 0255A8 8004A1A8 AFA2001C */ sw $v0, 0x1c($sp) /* 0255AC 8004A1AC 44833000 */ mtc1 $v1, $f6 /* 0255B0 8004A1B0 00000000 */ nop /* 0255B4 8004A1B4 468031A0 */ cvt.s.w $f6, $f6 /* 0255B8 8004A1B8 44073000 */ mfc1 $a3, $f6 /* 0255BC 8004A1BC 27A20028 */ addiu $v0, $sp, 0x28 /* 0255C0 8004A1C0 AFA20020 */ sw $v0, 0x20($sp) /* 0255C4 8004A1C4 E7A00010 */ swc1 $f0, 0x10($sp) /* 0255C8 8004A1C8 E7A20014 */ swc1 $f2, 0x14($sp) /* 0255CC 8004A1CC 0C01BFA4 */ jal fx_emote /* 0255D0 8004A1D0 E7A40018 */ swc1 $f4, 0x18($sp) /* 0255D4 8004A1D4 8E4200CC */ lw $v0, 0xcc($s2) /* 0255D8 8004A1D8 8C430000 */ lw $v1, ($v0) /* 0255DC 8004A1DC 24020014 */ addiu $v0, $zero, 0x14 /* 0255E0 8004A1E0 A602008E */ sh $v0, 0x8e($s0) /* 0255E4 8004A1E4 2402000E */ addiu $v0, $zero, 0xe /* 0255E8 8004A1E8 080128F1 */ j .L8004A3C4 /* 0255EC 8004A1EC AE030028 */ sw $v1, 0x28($s0) .L8004A1F0: /* 0255F0 8004A1F0 8E420018 */ lw $v0, 0x18($s2) /* 0255F4 8004A1F4 9442002A */ lhu $v0, 0x2a($v0) /* 0255F8 8004A1F8 30420004 */ andi $v0, $v0, 4 /* 0255FC 8004A1FC 1040004A */ beqz $v0, .L8004A328 /* 025600 8004A200 0200202D */ daddu $a0, $s0, $zero /* 025604 8004A204 3C02800F */ lui $v0, 0x800f /* 025608 8004A208 8C427B30 */ lw $v0, 0x7b30($v0) /* 02560C 8004A20C C60C0038 */ lwc1 $f12, 0x38($s0) /* 025610 8004A210 C60E0040 */ lwc1 $f14, 0x40($s0) /* 025614 8004A214 8C460028 */ lw $a2, 0x28($v0) /* 025618 8004A218 0C00A7B5 */ jal dist2D /* 02561C 8004A21C 8C470030 */ lw $a3, 0x30($v0) /* 025620 8004A220 C6020018 */ lwc1 $f2, 0x18($s0) /* 025624 8004A224 3C014014 */ lui $at, 0x4014 /* 025628 8004A228 44812800 */ mtc1 $at, $f5 /* 02562C 8004A22C 44802000 */ mtc1 $zero, $f4 /* 025630 8004A230 460010A1 */ cvt.d.s $f2, $f2 /* 025634 8004A234 46241082 */ mul.d $f2, $f2, $f4 /* 025638 8004A238 00000000 */ nop /* 02563C 8004A23C 46000021 */ cvt.d.s $f0, $f0 /* 025640 8004A240 4620103C */ c.lt.d $f2, $f0 /* 025644 8004A244 00000000 */ nop /* 025648 8004A248 45000036 */ bc1f .L8004A324 /* 02564C 8004A24C 27A5002C */ addiu $a1, $sp, 0x2c /* 025650 8004A250 C6000038 */ lwc1 $f0, 0x38($s0) /* 025654 8004A254 C602003C */ lwc1 $f2, 0x3c($s0) /* 025658 8004A258 C6040040 */ lwc1 $f4, 0x40($s0) /* 02565C 8004A25C 3C013F80 */ lui $at, 0x3f80 /* 025660 8004A260 4481A000 */ mtc1 $at, $f20 /* 025664 8004A264 E7A0002C */ swc1 $f0, 0x2c($sp) /* 025668 8004A268 E7A20030 */ swc1 $f2, 0x30($sp) /* 02566C 8004A26C E7A40034 */ swc1 $f4, 0x34($sp) /* 025670 8004A270 E7B40010 */ swc1 $f20, 0x10($sp) /* 025674 8004A274 C600000C */ lwc1 $f0, 0xc($s0) /* 025678 8004A278 E7A00014 */ swc1 $f0, 0x14($sp) /* 02567C 8004A27C 860200A8 */ lh $v0, 0xa8($s0) /* 025680 8004A280 44820000 */ mtc1 $v0, $f0 /* 025684 8004A284 00000000 */ nop /* 025688 8004A288 46800020 */ cvt.s.w $f0, $f0 /* 02568C 8004A28C E7A00018 */ swc1 $f0, 0x18($sp) /* 025690 8004A290 860200A6 */ lh $v0, 0xa6($s0) /* 025694 8004A294 27A60030 */ addiu $a2, $sp, 0x30 /* 025698 8004A298 44820000 */ mtc1 $v0, $f0 /* 02569C 8004A29C 00000000 */ nop /* 0256A0 8004A2A0 46800020 */ cvt.s.w $f0, $f0 /* 0256A4 8004A2A4 E7A0001C */ swc1 $f0, 0x1c($sp) /* 0256A8 8004A2A8 8E040080 */ lw $a0, 0x80($s0) /* 0256AC 8004A2AC 0C037711 */ jal func_800DDC44 /* 0256B0 8004A2B0 27A70034 */ addiu $a3, $sp, 0x34 /* 0256B4 8004A2B4 1040001B */ beqz $v0, .L8004A324 /* 0256B8 8004A2B8 0200282D */ daddu $a1, $s0, $zero /* 0256BC 8004A2BC 24040002 */ addiu $a0, $zero, 2 /* 0256C0 8004A2C0 0000302D */ daddu $a2, $zero, $zero /* 0256C4 8004A2C4 860300A8 */ lh $v1, 0xa8($s0) /* 0256C8 8004A2C8 3C014000 */ lui $at, 0x4000 /* 0256CC 8004A2CC 44810000 */ mtc1 $at, $f0 /* 0256D0 8004A2D0 3C01C1A0 */ lui $at, 0xc1a0 /* 0256D4 8004A2D4 44811000 */ mtc1 $at, $f2 /* 0256D8 8004A2D8 2402000C */ addiu $v0, $zero, 0xc /* 0256DC 8004A2DC AFA2001C */ sw $v0, 0x1c($sp) /* 0256E0 8004A2E0 44833000 */ mtc1 $v1, $f6 /* 0256E4 8004A2E4 00000000 */ nop /* 0256E8 8004A2E8 468031A0 */ cvt.s.w $f6, $f6 /* 0256EC 8004A2EC 44073000 */ mfc1 $a3, $f6 /* 0256F0 8004A2F0 27A20028 */ addiu $v0, $sp, 0x28 /* 0256F4 8004A2F4 E7B40010 */ swc1 $f20, 0x10($sp) /* 0256F8 8004A2F8 AFA20020 */ sw $v0, 0x20($sp) /* 0256FC 8004A2FC E7A00014 */ swc1 $f0, 0x14($sp) /* 025700 8004A300 0C01BFA4 */ jal fx_emote /* 025704 8004A304 E7A20018 */ swc1 $f2, 0x18($sp) /* 025708 8004A308 8E4200CC */ lw $v0, 0xcc($s2) /* 02570C 8004A30C 8C430000 */ lw $v1, ($v0) /* 025710 8004A310 2402000F */ addiu $v0, $zero, 0xf /* 025714 8004A314 A602008E */ sh $v0, 0x8e($s0) /* 025718 8004A318 2402000E */ addiu $v0, $zero, 0xe /* 02571C 8004A31C 080128F1 */ j .L8004A3C4 /* 025720 8004A320 AE030028 */ sw $v1, 0x28($s0) .L8004A324: /* 025724 8004A324 0200202D */ daddu $a0, $s0, $zero .L8004A328: /* 025728 8004A328 0C00F598 */ jal func_8003D660 /* 02572C 8004A32C 24050001 */ addiu $a1, $zero, 1 /* 025730 8004A330 8E050018 */ lw $a1, 0x18($s0) /* 025734 8004A334 8E06000C */ lw $a2, 0xc($s0) /* 025738 8004A338 0C00EA95 */ jal npc_move_heading /* 02573C 8004A33C 0200202D */ daddu $a0, $s0, $zero /* 025740 8004A340 C6000018 */ lwc1 $f0, 0x18($s0) /* 025744 8004A344 3C014020 */ lui $at, 0x4020 /* 025748 8004A348 44811800 */ mtc1 $at, $f3 /* 02574C 8004A34C 44801000 */ mtc1 $zero, $f2 /* 025750 8004A350 46000021 */ cvt.d.s $f0, $f0 /* 025754 8004A354 4620103C */ c.lt.d $f2, $f0 /* 025758 8004A358 00000000 */ nop /* 02575C 8004A35C 45000012 */ bc1f .L8004A3A8 /* 025760 8004A360 00000000 */ nop /* 025764 8004A364 3C028007 */ lui $v0, 0x8007 /* 025768 8004A368 8C42419C */ lw $v0, 0x419c($v0) /* 02576C 8004A36C 94430134 */ lhu $v1, 0x134($v0) /* 025770 8004A370 3C02CCCC */ lui $v0, 0xcccc /* 025774 8004A374 3442CCCD */ ori $v0, $v0, 0xcccd /* 025778 8004A378 00620019 */ multu $v1, $v0 /* 02577C 8004A37C 00004010 */ mfhi $t0 /* 025780 8004A380 00082082 */ srl $a0, $t0, 2 /* 025784 8004A384 00041080 */ sll $v0, $a0, 2 /* 025788 8004A388 00441021 */ addu $v0, $v0, $a0 /* 02578C 8004A38C 00621823 */ subu $v1, $v1, $v0 /* 025790 8004A390 3063FFFF */ andi $v1, $v1, 0xffff /* 025794 8004A394 14600004 */ bnez $v1, .L8004A3A8 /* 025798 8004A398 0200202D */ daddu $a0, $s0, $zero /* 02579C 8004A39C 240520C1 */ addiu $a1, $zero, 0x20c1 /* 0257A0 8004A3A0 0C012530 */ jal func_800494C0 /* 0257A4 8004A3A4 0000302D */ daddu $a2, $zero, $zero .L8004A3A8: /* 0257A8 8004A3A8 8602008E */ lh $v0, 0x8e($s0) /* 0257AC 8004A3AC 9603008E */ lhu $v1, 0x8e($s0) /* 0257B0 8004A3B0 18400003 */ blez $v0, .L8004A3C0 /* 0257B4 8004A3B4 2462FFFF */ addiu $v0, $v1, -1 /* 0257B8 8004A3B8 080128F2 */ j .L8004A3C8 /* 0257BC 8004A3BC A602008E */ sh $v0, 0x8e($s0) .L8004A3C0: /* 0257C0 8004A3C0 2402000C */ addiu $v0, $zero, 0xc .L8004A3C4: /* 0257C4 8004A3C4 AE620070 */ sw $v0, 0x70($s3) .L8004A3C8: /* 0257C8 8004A3C8 8FBF0048 */ lw $ra, 0x48($sp) /* 0257CC 8004A3CC 8FB30044 */ lw $s3, 0x44($sp) /* 0257D0 8004A3D0 8FB20040 */ lw $s2, 0x40($sp) /* 0257D4 8004A3D4 8FB1003C */ lw $s1, 0x3c($sp) /* 0257D8 8004A3D8 8FB00038 */ lw $s0, 0x38($sp) /* 0257DC 8004A3DC D7B40050 */ ldc1 $f20, 0x50($sp) /* 0257E0 8004A3E0 03E00008 */ jr $ra /* 0257E4 8004A3E4 27BD0058 */ addiu $sp, $sp, 0x58