papermario/asm/nonmatchings/code_20ec0_len_5040/func_8004A124.s
Ethan Roseman 51c076bd8e symbols!
2020-09-27 21:13:56 -04:00

189 lines
9.6 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_8004A124
/* 25524 8004A124 27BDFFA8 */ addiu $sp, $sp, -0x58
/* 25528 8004A128 AFB30044 */ sw $s3, 0x44($sp)
/* 2552C 8004A12C 0080982D */ daddu $s3, $a0, $zero
/* 25530 8004A130 AFBF0048 */ sw $ra, 0x48($sp)
/* 25534 8004A134 AFB20040 */ sw $s2, 0x40($sp)
/* 25538 8004A138 AFB1003C */ sw $s1, 0x3c($sp)
/* 2553C 8004A13C AFB00038 */ sw $s0, 0x38($sp)
/* 25540 8004A140 F7B40050 */ sdc1 $f20, 0x50($sp)
/* 25544 8004A144 8E720148 */ lw $s2, 0x148($s3)
/* 25548 8004A148 00A0882D */ daddu $s1, $a1, $zero
/* 2554C 8004A14C 86440008 */ lh $a0, 8($s2)
/* 25550 8004A150 0C00EABB */ jal get_npc_unsafe
/* 25554 8004A154 00C0802D */ daddu $s0, $a2, $zero
/* 25558 8004A158 0200202D */ daddu $a0, $s0, $zero
/* 2555C 8004A15C 0240282D */ daddu $a1, $s2, $zero
/* 25560 8004A160 24030001 */ addiu $v1, $zero, 1
/* 25564 8004A164 AFA30010 */ sw $v1, 0x10($sp)
/* 25568 8004A168 8E260024 */ lw $a2, 0x24($s1)
/* 2556C 8004A16C 8E270028 */ lw $a3, 0x28($s1)
/* 25570 8004A170 0C01242D */ jal func_800490B4
/* 25574 8004A174 0040802D */ daddu $s0, $v0, $zero
/* 25578 8004A178 1440001D */ bnez $v0, .L8004A1F0
/* 2557C 8004A17C 24040002 */ addiu $a0, $zero, 2
/* 25580 8004A180 0200282D */ daddu $a1, $s0, $zero
/* 25584 8004A184 0000302D */ daddu $a2, $zero, $zero
/* 25588 8004A188 860300A8 */ lh $v1, 0xa8($s0)
/* 2558C 8004A18C 3C013F80 */ lui $at, 0x3f80
/* 25590 8004A190 44810000 */ mtc1 $at, $f0
/* 25594 8004A194 3C014000 */ lui $at, 0x4000
/* 25598 8004A198 44811000 */ mtc1 $at, $f2
/* 2559C 8004A19C 3C01C1A0 */ lui $at, 0xc1a0
/* 255A0 8004A1A0 44812000 */ mtc1 $at, $f4
/* 255A4 8004A1A4 2402000F */ addiu $v0, $zero, 0xf
/* 255A8 8004A1A8 AFA2001C */ sw $v0, 0x1c($sp)
/* 255AC 8004A1AC 44833000 */ mtc1 $v1, $f6
/* 255B0 8004A1B0 00000000 */ nop
/* 255B4 8004A1B4 468031A0 */ cvt.s.w $f6, $f6
/* 255B8 8004A1B8 44073000 */ mfc1 $a3, $f6
/* 255BC 8004A1BC 27A20028 */ addiu $v0, $sp, 0x28
/* 255C0 8004A1C0 AFA20020 */ sw $v0, 0x20($sp)
/* 255C4 8004A1C4 E7A00010 */ swc1 $f0, 0x10($sp)
/* 255C8 8004A1C8 E7A20014 */ swc1 $f2, 0x14($sp)
/* 255CC 8004A1CC 0C01BFA4 */ jal fx_emote
/* 255D0 8004A1D0 E7A40018 */ swc1 $f4, 0x18($sp)
/* 255D4 8004A1D4 8E4200CC */ lw $v0, 0xcc($s2)
/* 255D8 8004A1D8 8C430000 */ lw $v1, ($v0)
/* 255DC 8004A1DC 24020014 */ addiu $v0, $zero, 0x14
/* 255E0 8004A1E0 A602008E */ sh $v0, 0x8e($s0)
/* 255E4 8004A1E4 2402000E */ addiu $v0, $zero, 0xe
/* 255E8 8004A1E8 080128F1 */ j .L8004A3C4
/* 255EC 8004A1EC AE030028 */ sw $v1, 0x28($s0)
.L8004A1F0:
/* 255F0 8004A1F0 8E420018 */ lw $v0, 0x18($s2)
/* 255F4 8004A1F4 9442002A */ lhu $v0, 0x2a($v0)
/* 255F8 8004A1F8 30420004 */ andi $v0, $v0, 4
/* 255FC 8004A1FC 1040004A */ beqz $v0, .L8004A328
/* 25600 8004A200 0200202D */ daddu $a0, $s0, $zero
/* 25604 8004A204 3C02800F */ lui $v0, %hi(gPlayerStatusPtr)
/* 25608 8004A208 8C427B30 */ lw $v0, %lo(gPlayerStatusPtr)($v0)
/* 2560C 8004A20C C60C0038 */ lwc1 $f12, 0x38($s0)
/* 25610 8004A210 C60E0040 */ lwc1 $f14, 0x40($s0)
/* 25614 8004A214 8C460028 */ lw $a2, 0x28($v0)
/* 25618 8004A218 0C00A7B5 */ jal dist2D
/* 2561C 8004A21C 8C470030 */ lw $a3, 0x30($v0)
/* 25620 8004A220 C6020018 */ lwc1 $f2, 0x18($s0)
/* 25624 8004A224 3C014014 */ lui $at, 0x4014
/* 25628 8004A228 44812800 */ mtc1 $at, $f5
/* 2562C 8004A22C 44802000 */ mtc1 $zero, $f4
/* 25630 8004A230 460010A1 */ cvt.d.s $f2, $f2
/* 25634 8004A234 46241082 */ mul.d $f2, $f2, $f4
/* 25638 8004A238 00000000 */ nop
/* 2563C 8004A23C 46000021 */ cvt.d.s $f0, $f0
/* 25640 8004A240 4620103C */ c.lt.d $f2, $f0
/* 25644 8004A244 00000000 */ nop
/* 25648 8004A248 45000036 */ bc1f .L8004A324
/* 2564C 8004A24C 27A5002C */ addiu $a1, $sp, 0x2c
/* 25650 8004A250 C6000038 */ lwc1 $f0, 0x38($s0)
/* 25654 8004A254 C602003C */ lwc1 $f2, 0x3c($s0)
/* 25658 8004A258 C6040040 */ lwc1 $f4, 0x40($s0)
/* 2565C 8004A25C 3C013F80 */ lui $at, 0x3f80
/* 25660 8004A260 4481A000 */ mtc1 $at, $f20
/* 25664 8004A264 E7A0002C */ swc1 $f0, 0x2c($sp)
/* 25668 8004A268 E7A20030 */ swc1 $f2, 0x30($sp)
/* 2566C 8004A26C E7A40034 */ swc1 $f4, 0x34($sp)
/* 25670 8004A270 E7B40010 */ swc1 $f20, 0x10($sp)
/* 25674 8004A274 C600000C */ lwc1 $f0, 0xc($s0)
/* 25678 8004A278 E7A00014 */ swc1 $f0, 0x14($sp)
/* 2567C 8004A27C 860200A8 */ lh $v0, 0xa8($s0)
/* 25680 8004A280 44820000 */ mtc1 $v0, $f0
/* 25684 8004A284 00000000 */ nop
/* 25688 8004A288 46800020 */ cvt.s.w $f0, $f0
/* 2568C 8004A28C E7A00018 */ swc1 $f0, 0x18($sp)
/* 25690 8004A290 860200A6 */ lh $v0, 0xa6($s0)
/* 25694 8004A294 27A60030 */ addiu $a2, $sp, 0x30
/* 25698 8004A298 44820000 */ mtc1 $v0, $f0
/* 2569C 8004A29C 00000000 */ nop
/* 256A0 8004A2A0 46800020 */ cvt.s.w $f0, $f0
/* 256A4 8004A2A4 E7A0001C */ swc1 $f0, 0x1c($sp)
/* 256A8 8004A2A8 8E040080 */ lw $a0, 0x80($s0)
/* 256AC 8004A2AC 0C037711 */ jal func_800DDC44
/* 256B0 8004A2B0 27A70034 */ addiu $a3, $sp, 0x34
/* 256B4 8004A2B4 1040001B */ beqz $v0, .L8004A324
/* 256B8 8004A2B8 0200282D */ daddu $a1, $s0, $zero
/* 256BC 8004A2BC 24040002 */ addiu $a0, $zero, 2
/* 256C0 8004A2C0 0000302D */ daddu $a2, $zero, $zero
/* 256C4 8004A2C4 860300A8 */ lh $v1, 0xa8($s0)
/* 256C8 8004A2C8 3C014000 */ lui $at, 0x4000
/* 256CC 8004A2CC 44810000 */ mtc1 $at, $f0
/* 256D0 8004A2D0 3C01C1A0 */ lui $at, 0xc1a0
/* 256D4 8004A2D4 44811000 */ mtc1 $at, $f2
/* 256D8 8004A2D8 2402000C */ addiu $v0, $zero, 0xc
/* 256DC 8004A2DC AFA2001C */ sw $v0, 0x1c($sp)
/* 256E0 8004A2E0 44833000 */ mtc1 $v1, $f6
/* 256E4 8004A2E4 00000000 */ nop
/* 256E8 8004A2E8 468031A0 */ cvt.s.w $f6, $f6
/* 256EC 8004A2EC 44073000 */ mfc1 $a3, $f6
/* 256F0 8004A2F0 27A20028 */ addiu $v0, $sp, 0x28
/* 256F4 8004A2F4 E7B40010 */ swc1 $f20, 0x10($sp)
/* 256F8 8004A2F8 AFA20020 */ sw $v0, 0x20($sp)
/* 256FC 8004A2FC E7A00014 */ swc1 $f0, 0x14($sp)
/* 25700 8004A300 0C01BFA4 */ jal fx_emote
/* 25704 8004A304 E7A20018 */ swc1 $f2, 0x18($sp)
/* 25708 8004A308 8E4200CC */ lw $v0, 0xcc($s2)
/* 2570C 8004A30C 8C430000 */ lw $v1, ($v0)
/* 25710 8004A310 2402000F */ addiu $v0, $zero, 0xf
/* 25714 8004A314 A602008E */ sh $v0, 0x8e($s0)
/* 25718 8004A318 2402000E */ addiu $v0, $zero, 0xe
/* 2571C 8004A31C 080128F1 */ j .L8004A3C4
/* 25720 8004A320 AE030028 */ sw $v1, 0x28($s0)
.L8004A324:
/* 25724 8004A324 0200202D */ daddu $a0, $s0, $zero
.L8004A328:
/* 25728 8004A328 0C00F598 */ jal func_8003D660
/* 2572C 8004A32C 24050001 */ addiu $a1, $zero, 1
/* 25730 8004A330 8E050018 */ lw $a1, 0x18($s0)
/* 25734 8004A334 8E06000C */ lw $a2, 0xc($s0)
/* 25738 8004A338 0C00EA95 */ jal npc_move_heading
/* 2573C 8004A33C 0200202D */ daddu $a0, $s0, $zero
/* 25740 8004A340 C6000018 */ lwc1 $f0, 0x18($s0)
/* 25744 8004A344 3C014020 */ lui $at, 0x4020
/* 25748 8004A348 44811800 */ mtc1 $at, $f3
/* 2574C 8004A34C 44801000 */ mtc1 $zero, $f2
/* 25750 8004A350 46000021 */ cvt.d.s $f0, $f0
/* 25754 8004A354 4620103C */ c.lt.d $f2, $f0
/* 25758 8004A358 00000000 */ nop
/* 2575C 8004A35C 45000012 */ bc1f .L8004A3A8
/* 25760 8004A360 00000000 */ nop
/* 25764 8004A364 3C028007 */ lui $v0, %hi(gGameStatusPtr)
/* 25768 8004A368 8C42419C */ lw $v0, %lo(gGameStatusPtr)($v0)
/* 2576C 8004A36C 94430134 */ lhu $v1, 0x134($v0)
/* 25770 8004A370 3C02CCCC */ lui $v0, 0xcccc
/* 25774 8004A374 3442CCCD */ ori $v0, $v0, 0xcccd
/* 25778 8004A378 00620019 */ multu $v1, $v0
/* 2577C 8004A37C 00004010 */ mfhi $t0
/* 25780 8004A380 00082082 */ srl $a0, $t0, 2
/* 25784 8004A384 00041080 */ sll $v0, $a0, 2
/* 25788 8004A388 00441021 */ addu $v0, $v0, $a0
/* 2578C 8004A38C 00621823 */ subu $v1, $v1, $v0
/* 25790 8004A390 3063FFFF */ andi $v1, $v1, 0xffff
/* 25794 8004A394 14600004 */ bnez $v1, .L8004A3A8
/* 25798 8004A398 0200202D */ daddu $a0, $s0, $zero
/* 2579C 8004A39C 240520C1 */ addiu $a1, $zero, 0x20c1
/* 257A0 8004A3A0 0C012530 */ jal func_800494C0
/* 257A4 8004A3A4 0000302D */ daddu $a2, $zero, $zero
.L8004A3A8:
/* 257A8 8004A3A8 8602008E */ lh $v0, 0x8e($s0)
/* 257AC 8004A3AC 9603008E */ lhu $v1, 0x8e($s0)
/* 257B0 8004A3B0 18400003 */ blez $v0, .L8004A3C0
/* 257B4 8004A3B4 2462FFFF */ addiu $v0, $v1, -1
/* 257B8 8004A3B8 080128F2 */ j .L8004A3C8
/* 257BC 8004A3BC A602008E */ sh $v0, 0x8e($s0)
.L8004A3C0:
/* 257C0 8004A3C0 2402000C */ addiu $v0, $zero, 0xc
.L8004A3C4:
/* 257C4 8004A3C4 AE620070 */ sw $v0, 0x70($s3)
.L8004A3C8:
/* 257C8 8004A3C8 8FBF0048 */ lw $ra, 0x48($sp)
/* 257CC 8004A3CC 8FB30044 */ lw $s3, 0x44($sp)
/* 257D0 8004A3D0 8FB20040 */ lw $s2, 0x40($sp)
/* 257D4 8004A3D4 8FB1003C */ lw $s1, 0x3c($sp)
/* 257D8 8004A3D8 8FB00038 */ lw $s0, 0x38($sp)
/* 257DC 8004A3DC D7B40050 */ ldc1 $f20, 0x50($sp)
/* 257E0 8004A3E0 03E00008 */ jr $ra
/* 257E4 8004A3E4 27BD0058 */ addiu $sp, $sp, 0x58