papermario/asm/nonmatchings/code_E236E0/func_802B6288_E23968.s
2021-01-11 01:38:51 +09:00

201 lines
9.7 KiB
ArmAsm

.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_802B6288_E23968
/* E23968 802B6288 27BDFFD0 */ addiu $sp, $sp, -0x30
/* E2396C 802B628C AFB30024 */ sw $s3, 0x24($sp)
/* E23970 802B6290 AFB00018 */ sw $s0, 0x18($sp)
/* E23974 802B6294 3C108011 */ lui $s0, %hi(gPlayerStatus)
/* E23978 802B6298 2610EFC8 */ addiu $s0, $s0, %lo(gPlayerStatus)
/* E2397C 802B629C AFBF002C */ sw $ra, 0x2c($sp)
/* E23980 802B62A0 AFB40028 */ sw $s4, 0x28($sp)
/* E23984 802B62A4 AFB20020 */ sw $s2, 0x20($sp)
/* E23988 802B62A8 AFB1001C */ sw $s1, 0x1c($sp)
/* E2398C 802B62AC 8E050004 */ lw $a1, 4($s0)
/* E23990 802B62B0 3C148011 */ lui $s4, %hi(gPlayerData)
/* E23994 802B62B4 2694F290 */ addiu $s4, $s4, %lo(gPlayerData)
/* E23998 802B62B8 30A21000 */ andi $v0, $a1, 0x1000
/* E2399C 802B62BC 10400005 */ beqz $v0, .L802B62D4
/* E239A0 802B62C0 0000982D */ daddu $s3, $zero, $zero
/* E239A4 802B62C4 0C0AD9CE */ jal func_802B6738_E23E18
/* E239A8 802B62C8 00000000 */ nop
/* E239AC 802B62CC 080AD94C */ j .L802B6530
/* E239B0 802B62D0 00000000 */ nop
.L802B62D4:
/* E239B4 802B62D4 8E030000 */ lw $v1, ($s0)
/* E239B8 802B62D8 04610019 */ bgez $v1, .L802B6340
/* E239BC 802B62DC 3C027F77 */ lui $v0, 0x7f77
/* E239C0 802B62E0 3442FFFF */ ori $v0, $v0, 0xffff
/* E239C4 802B62E4 24130001 */ addiu $s3, $zero, 1
/* E239C8 802B62E8 00621024 */ and $v0, $v1, $v0
/* E239CC 802B62EC AE020000 */ sw $v0, ($s0)
/* E239D0 802B62F0 30624000 */ andi $v0, $v1, 0x4000
/* E239D4 802B62F4 3C018011 */ lui $at, %hi(D_8010C980)
/* E239D8 802B62F8 AC20C980 */ sw $zero, %lo(D_8010C980)($at)
/* E239DC 802B62FC 14400003 */ bnez $v0, .L802B630C
/* E239E0 802B6300 AE000060 */ sw $zero, 0x60($s0)
/* E239E4 802B6304 C600005C */ lwc1 $f0, 0x5c($s0)
/* E239E8 802B6308 E6000054 */ swc1 $f0, 0x54($s0)
.L802B630C:
/* E239EC 802B630C 30A24000 */ andi $v0, $a1, 0x4000
/* E239F0 802B6310 10400003 */ beqz $v0, .L802B6320
/* E239F4 802B6314 3C040009 */ lui $a0, 9
/* E239F8 802B6318 080AD8CE */ j .L802B6338
/* E239FC 802B631C 34840003 */ ori $a0, $a0, 3
.L802B6320:
/* E23A00 802B6320 3C040006 */ lui $a0, 6
/* E23A04 802B6324 30A20001 */ andi $v0, $a1, 1
/* E23A08 802B6328 14400003 */ bnez $v0, .L802B6338
/* E23A0C 802B632C 34840002 */ ori $a0, $a0, 2
/* E23A10 802B6330 3C040001 */ lui $a0, 1
/* E23A14 802B6334 34840005 */ ori $a0, $a0, 5
.L802B6338:
/* E23A18 802B6338 0C037FBF */ jal func_800DFEFC
/* E23A1C 802B633C 00000000 */ nop
.L802B6340:
/* E23A20 802B6340 8E020000 */ lw $v0, ($s0)
/* E23A24 802B6344 30424000 */ andi $v0, $v0, 0x4000
/* E23A28 802B6348 10400006 */ beqz $v0, .L802B6364
/* E23A2C 802B634C 24040004 */ addiu $a0, $zero, 4
/* E23A30 802B6350 C60000A0 */ lwc1 $f0, 0xa0($s0)
/* E23A34 802B6354 0C039426 */ jal func_800E5098
/* E23A38 802B6358 E6000080 */ swc1 $f0, 0x80($s0)
/* E23A3C 802B635C 080AD94C */ j .L802B6530
/* E23A40 802B6360 00000000 */ nop
.L802B6364:
/* E23A44 802B6364 3C038011 */ lui $v1, %hi(D_8010C980)
/* E23A48 802B6368 2463C980 */ addiu $v1, $v1, %lo(D_8010C980)
/* E23A4C 802B636C 8C620000 */ lw $v0, ($v1)
/* E23A50 802B6370 3C013F80 */ lui $at, 0x3f80
/* E23A54 802B6374 44811000 */ mtc1 $at, $f2
/* E23A58 802B6378 24420001 */ addiu $v0, $v0, 1
/* E23A5C 802B637C AC620000 */ sw $v0, ($v1)
/* E23A60 802B6380 8E020004 */ lw $v0, 4($s0)
/* E23A64 802B6384 3C030001 */ lui $v1, 1
/* E23A68 802B6388 00431024 */ and $v0, $v0, $v1
/* E23A6C 802B638C 10400003 */ beqz $v0, .L802B639C
/* E23A70 802B6390 00000000 */ nop
/* E23A74 802B6394 3C013FC0 */ lui $at, 0x3fc0
/* E23A78 802B6398 44811000 */ mtc1 $at, $f2
.L802B639C:
/* E23A7C 802B639C C600005C */ lwc1 $f0, 0x5c($s0)
/* E23A80 802B63A0 46020002 */ mul.s $f0, $f0, $f2
/* E23A84 802B63A4 00000000 */ nop
/* E23A88 802B63A8 27B20010 */ addiu $s2, $sp, 0x10
/* E23A8C 802B63AC 0240202D */ daddu $a0, $s2, $zero
/* E23A90 802B63B0 27B10014 */ addiu $s1, $sp, 0x14
/* E23A94 802B63B4 0220282D */ daddu $a1, $s1, $zero
/* E23A98 802B63B8 0C0388C1 */ jal input_to_move_vector
/* E23A9C 802B63BC E6000054 */ swc1 $f0, 0x54($s0)
/* E23AA0 802B63C0 0C039454 */ jal func_800E5150
/* E23AA4 802B63C4 00000000 */ nop
/* E23AA8 802B63C8 0C039858 */ jal check_input_jump
/* E23AAC 802B63CC 00000000 */ nop
/* E23AB0 802B63D0 14400057 */ bnez $v0, .L802B6530
/* E23AB4 802B63D4 00000000 */ nop
/* E23AB8 802B63D8 16600006 */ bnez $s3, .L802B63F4
/* E23ABC 802B63DC 0240202D */ daddu $a0, $s2, $zero
/* E23AC0 802B63E0 0C039838 */ jal check_input_hammer
/* E23AC4 802B63E4 00000000 */ nop
/* E23AC8 802B63E8 14400051 */ bnez $v0, .L802B6530
/* E23ACC 802B63EC 00000000 */ nop
/* E23AD0 802B63F0 0240202D */ daddu $a0, $s2, $zero
.L802B63F4:
/* E23AD4 802B63F4 0C0388C1 */ jal input_to_move_vector
/* E23AD8 802B63F8 0220282D */ daddu $a1, $s1, $zero
/* E23ADC 802B63FC C7A20014 */ lwc1 $f2, 0x14($sp)
/* E23AE0 802B6400 44800000 */ mtc1 $zero, $f0
/* E23AE4 802B6404 00000000 */ nop
/* E23AE8 802B6408 46001032 */ c.eq.s $f2, $f0
/* E23AEC 802B640C 00000000 */ nop
/* E23AF0 802B6410 45000005 */ bc1f .L802B6428
/* E23AF4 802B6414 00000000 */ nop
/* E23AF8 802B6418 0C039769 */ jal set_action_state
/* E23AFC 802B641C 0000202D */ daddu $a0, $zero, $zero
/* E23B00 802B6420 080AD94C */ j .L802B6530
/* E23B04 802B6424 00000000 */ nop
.L802B6428:
/* E23B08 802B6428 C7A40010 */ lwc1 $f4, 0x10($sp)
/* E23B0C 802B642C 3C01800F */ lui $at, %hi(D_800F7B40)
/* E23B10 802B6430 C4207B40 */ lwc1 $f0, %lo(D_800F7B40)($at)
/* E23B14 802B6434 46800020 */ cvt.s.w $f0, $f0
/* E23B18 802B6438 46040001 */ sub.s $f0, $f0, $f4
/* E23B1C 802B643C 3C0142B4 */ lui $at, 0x42b4
/* E23B20 802B6440 44811000 */ mtc1 $at, $f2
/* E23B24 802B6444 46000005 */ abs.s $f0, $f0
/* E23B28 802B6448 4602003E */ c.le.s $f0, $f2
/* E23B2C 802B644C 00000000 */ nop
/* E23B30 802B6450 45000009 */ bc1f .L802B6478
/* E23B34 802B6454 00000000 */ nop
/* E23B38 802B6458 8E020004 */ lw $v0, 4($s0)
/* E23B3C 802B645C 04430001 */ bgezl $v0, .L802B6464
/* E23B40 802B6460 E6040080 */ swc1 $f4, 0x80($s0)
.L802B6464:
/* E23B44 802B6464 3C037FFF */ lui $v1, 0x7fff
/* E23B48 802B6468 8E020004 */ lw $v0, 4($s0)
/* E23B4C 802B646C 3463FFFF */ ori $v1, $v1, 0xffff
/* E23B50 802B6470 080AD924 */ j .L802B6490
/* E23B54 802B6474 00431024 */ and $v0, $v0, $v1
.L802B6478:
/* E23B58 802B6478 8E020004 */ lw $v0, 4($s0)
/* E23B5C 802B647C 04410003 */ bgez $v0, .L802B648C
/* E23B60 802B6480 3C038000 */ lui $v1, 0x8000
/* E23B64 802B6484 080AD925 */ j .L802B6494
/* E23B68 802B6488 E6040080 */ swc1 $f4, 0x80($s0)
.L802B648C:
/* E23B6C 802B648C 00431025 */ or $v0, $v0, $v1
.L802B6490:
/* E23B70 802B6490 AE020004 */ sw $v0, 4($s0)
.L802B6494:
/* E23B74 802B6494 0C03A752 */ jal is_ability_active
/* E23B78 802B6498 2404000B */ addiu $a0, $zero, 0xb
/* E23B7C 802B649C 1440001B */ bnez $v0, .L802B650C
/* E23B80 802B64A0 00000000 */ nop
/* E23B84 802B64A4 8E0200E8 */ lw $v0, 0xe8($s0)
/* E23B88 802B64A8 00420018 */ mult $v0, $v0
/* E23B8C 802B64AC 00001812 */ mflo $v1
/* E23B90 802B64B0 8E0200EC */ lw $v0, 0xec($s0)
/* E23B94 802B64B4 00000000 */ nop
/* E23B98 802B64B8 00420018 */ mult $v0, $v0
/* E23B9C 802B64BC 00003812 */ mflo $a3
/* E23BA0 802B64C0 00671021 */ addu $v0, $v1, $a3
/* E23BA4 802B64C4 44826000 */ mtc1 $v0, $f12
/* E23BA8 802B64C8 00000000 */ nop
/* E23BAC 802B64CC 46806320 */ cvt.s.w $f12, $f12
/* E23BB0 802B64D0 46006084 */ sqrt.s $f2, $f12
/* E23BB4 802B64D4 46021032 */ c.eq.s $f2, $f2
/* E23BB8 802B64D8 00000000 */ nop
/* E23BBC 802B64DC 45010004 */ bc1t .L802B64F0
/* E23BC0 802B64E0 00000000 */ nop
/* E23BC4 802B64E4 0C0187BC */ jal sqrtf
/* E23BC8 802B64E8 00000000 */ nop
/* E23BCC 802B64EC 46000086 */ mov.s $f2, $f0
.L802B64F0:
/* E23BD0 802B64F0 3C01425C */ lui $at, 0x425c
/* E23BD4 802B64F4 44810000 */ mtc1 $at, $f0
/* E23BD8 802B64F8 00000000 */ nop
/* E23BDC 802B64FC 4600103E */ c.le.s $f2, $f0
/* E23BE0 802B6500 00000000 */ nop
/* E23BE4 802B6504 45000005 */ bc1f .L802B651C
/* E23BE8 802B6508 00000000 */ nop
.L802B650C:
/* E23BEC 802B650C 0C039769 */ jal set_action_state
/* E23BF0 802B6510 24040001 */ addiu $a0, $zero, 1
/* E23BF4 802B6514 080AD94C */ j .L802B6530
/* E23BF8 802B6518 00000000 */ nop
.L802B651C:
/* E23BFC 802B651C 0C039426 */ jal func_800E5098
/* E23C00 802B6520 24040004 */ addiu $a0, $zero, 4
/* E23C04 802B6524 8E8202B0 */ lw $v0, 0x2b0($s4)
/* E23C08 802B6528 24420001 */ addiu $v0, $v0, 1
/* E23C0C 802B652C AE8202B0 */ sw $v0, 0x2b0($s4)
.L802B6530:
/* E23C10 802B6530 8FBF002C */ lw $ra, 0x2c($sp)
/* E23C14 802B6534 8FB40028 */ lw $s4, 0x28($sp)
/* E23C18 802B6538 8FB30024 */ lw $s3, 0x24($sp)
/* E23C1C 802B653C 8FB20020 */ lw $s2, 0x20($sp)
/* E23C20 802B6540 8FB1001C */ lw $s1, 0x1c($sp)
/* E23C24 802B6544 8FB00018 */ lw $s0, 0x18($sp)
/* E23C28 802B6548 03E00008 */ jr $ra
/* E23C2C 802B654C 27BD0030 */ addiu $sp, $sp, 0x30