### RAW ASSEMBLY INSTRUCTIONS:

glabel calc_enemy_damage_target
/* 1A5D0C 8027742C 27BDFFA8 */  addiu     $sp, $sp, -0x58
/* 1A5D10 80277430 AFB50044 */  sw        $s5, 0x44($sp)
/* 1A5D14 80277434 0000A82D */  daddu     $s5, $zero, $zero
/* 1A5D18 80277438 AFB40040 */  sw        $s4, 0x40($sp)
/* 1A5D1C 8027743C 3C14800E */  lui       $s4, %hi(gBattleStatus)
/* 1A5D20 80277440 2694C070 */  addiu     $s4, $s4, %lo(gBattleStatus)
/* 1A5D24 80277444 AFBF0054 */  sw        $ra, 0x54($sp)
/* 1A5D28 80277448 AFBE0050 */  sw        $fp, 0x50($sp)
/* 1A5D2C 8027744C AFB7004C */  sw        $s7, 0x4C($sp)
/* 1A5D30 80277450 AFB60048 */  sw        $s6, 0x48($sp)
/* 1A5D34 80277454 AFB3003C */  sw        $s3, 0x3C($sp)
/* 1A5D38 80277458 AFB20038 */  sw        $s2, 0x38($sp)
/* 1A5D3C 8027745C AFB10034 */  sw        $s1, 0x34($sp)
/* 1A5D40 80277460 AFB00030 */  sw        $s0, 0x30($sp)
/* 1A5D44 80277464 AFA40058 */  sw        $a0, 0x58($sp)
/* 1A5D48 80277468 AFA00020 */  sw        $zero, 0x20($sp)
/* 1A5D4C 8027746C AFA00024 */  sw        $zero, 0x24($sp)
/* 1A5D50 80277470 AFA00028 */  sw        $zero, 0x28($sp)
/* 1A5D54 80277474 869001A0 */  lh        $s0, 0x1A0($s4)
/* 1A5D58 80277478 829201A2 */  lb        $s2, 0x1A2($s4)
/* 1A5D5C 8027747C 02A0B82D */  daddu     $s7, $s5, $zero
/* 1A5D60 80277480 A2800199 */  sb        $zero, 0x199($s4)
/* 1A5D64 80277484 A6800180 */  sh        $zero, 0x180($s4)
/* 1A5D68 80277488 8FA80058 */  lw        $t0, 0x58($sp)
/* 1A5D6C 8027748C 0200202D */  daddu     $a0, $s0, $zero
/* 1A5D70 80277490 95020192 */  lhu       $v0, 0x192($t0)
/* 1A5D74 80277494 2511000C */  addiu     $s1, $t0, 0xC
/* 1A5D78 80277498 A69001A4 */  sh        $s0, 0x1A4($s4)
/* 1A5D7C 8027749C A29201A6 */  sb        $s2, 0x1A6($s4)
/* 1A5D80 802774A0 0C09A75B */  jal       get_actor
/* 1A5D84 802774A4 A68201A8 */   sh       $v0, 0x1A8($s4)
/* 1A5D88 802774A8 0040982D */  daddu     $s3, $v0, $zero
/* 1A5D8C 802774AC 16600003 */  bnez      $s3, .L802774BC
/* 1A5D90 802774B0 0260202D */   daddu    $a0, $s3, $zero
/* 1A5D94 802774B4 0809E1A9 */  j         .L802786A4
/* 1A5D98 802774B8 0000102D */   daddu    $v0, $zero, $zero
.L802774BC:
/* 1A5D9C 802774BC 0C099117 */  jal       get_actor_part
/* 1A5DA0 802774C0 0240282D */   daddu    $a1, $s2, $zero
/* 1A5DA4 802774C4 14400003 */  bnez      $v0, .L802774D4
/* 1A5DA8 802774C8 AFA20018 */   sw       $v0, 0x18($sp)
.L802774CC:
/* 1A5DAC 802774CC 0809DD33 */  j         .L802774CC
/* 1A5DB0 802774D0 00000000 */   nop
.L802774D4:
/* 1A5DB4 802774D4 32160700 */  andi      $s6, $s0, 0x700
/* 1A5DB8 802774D8 24020100 */  addiu     $v0, $zero, 0x100
/* 1A5DBC 802774DC 12C2000A */  beq       $s6, $v0, .L80277508
/* 1A5DC0 802774E0 A66001F8 */   sh       $zero, 0x1F8($s3)
/* 1A5DC4 802774E4 2AC20101 */  slti      $v0, $s6, 0x101
/* 1A5DC8 802774E8 10400009 */  beqz      $v0, .L80277510
/* 1A5DCC 802774EC 00000000 */   nop
/* 1A5DD0 802774F0 16C00007 */  bnez      $s6, .L80277510
/* 1A5DD4 802774F4 00000000 */   nop
/* 1A5DD8 802774F8 3C028011 */  lui       $v0, %hi(gPlayerData + 0x2)
/* 1A5DDC 802774FC 9042F292 */  lbu       $v0, %lo(gPlayerData + 0x2)($v0)
/* 1A5DE0 80277500 0809DD44 */  j         .L80277510
/* 1A5DE4 80277504 A26201B8 */   sb       $v0, 0x1B8($s3)
.L80277508:
/* 1A5DE8 80277508 2402007F */  addiu     $v0, $zero, 0x7F
/* 1A5DEC 8027750C A26201B8 */  sb        $v0, 0x1B8($s3)
.L80277510:
/* 1A5DF0 80277510 8FA80018 */  lw        $t0, 0x18($sp)
/* 1A5DF4 80277514 8D04007C */  lw        $a0, 0x7C($t0)
/* 1A5DF8 80277518 30820020 */  andi      $v0, $a0, 0x20
/* 1A5DFC 8027751C 14400461 */  bnez      $v0, .L802786A4
/* 1A5E00 80277520 24020006 */   addiu    $v0, $zero, 0x6
/* 1A5E04 80277524 82630218 */  lb        $v1, 0x218($s3)
/* 1A5E08 80277528 2402000E */  addiu     $v0, $zero, 0xE
/* 1A5E0C 8027752C 10620007 */  beq       $v1, $v0, .L8027754C
/* 1A5E10 80277530 30820800 */   andi     $v0, $a0, 0x800
/* 1A5E14 80277534 10400007 */  beqz      $v0, .L80277554
/* 1A5E18 80277538 00000000 */   nop
/* 1A5E1C 8027753C 8E820188 */  lw        $v0, 0x188($s4)
/* 1A5E20 80277540 30420800 */  andi      $v0, $v0, 0x800
/* 1A5E24 80277544 14400003 */  bnez      $v0, .L80277554
/* 1A5E28 80277548 00000000 */   nop
.L8027754C:
/* 1A5E2C 8027754C 0809E1A9 */  j         .L802786A4
/* 1A5E30 80277550 24020006 */   addiu    $v0, $zero, 0x6
.L80277554:
/* 1A5E34 80277554 82630214 */  lb        $v1, 0x214($s3)
/* 1A5E38 80277558 2402000C */  addiu     $v0, $zero, 0xC
/* 1A5E3C 8027755C 1462001A */  bne       $v1, $v0, .L802775C8
/* 1A5E40 80277560 24020001 */   addiu    $v0, $zero, 0x1
/* 1A5E44 80277564 AFA20010 */  sw        $v0, 0x10($sp)
/* 1A5E48 80277568 2402FFFF */  addiu     $v0, $zero, -0x1
/* 1A5E4C 8027756C AFA20014 */  sw        $v0, 0x14($sp)
/* 1A5E50 80277570 C62C000C */  lwc1      $f12, 0xC($s1)
/* 1A5E54 80277574 C62E0010 */  lwc1      $f14, 0x10($s1)
/* 1A5E58 80277578 8E260014 */  lw        $a2, 0x14($s1)
/* 1A5E5C 8027757C 0C093BF8 */  jal       func_8024EFE0
/* 1A5E60 80277580 0000382D */   daddu    $a3, $zero, $zero
/* 1A5E64 80277584 AFA00010 */  sw        $zero, 0x10($sp)
/* 1A5E68 80277588 C62C000C */  lwc1      $f12, 0xC($s1)
/* 1A5E6C 8027758C C62E0010 */  lwc1      $f14, 0x10($s1)
/* 1A5E70 80277590 8E260014 */  lw        $a2, 0x14($s1)
/* 1A5E74 80277594 0C09996B */  jal       show_next_damage_popup
/* 1A5E78 80277598 0000382D */   daddu    $a3, $zero, $zero
/* 1A5E7C 8027759C AFA00010 */  sw        $zero, 0x10($sp)
/* 1A5E80 802775A0 8E25000C */  lw        $a1, 0xC($s1)
/* 1A5E84 802775A4 8E260010 */  lw        $a2, 0x10($s1)
/* 1A5E88 802775A8 8E270014 */  lw        $a3, 0x14($s1)
/* 1A5E8C 802775AC 0C09DC01 */  jal       play_hit_sound
/* 1A5E90 802775B0 8FA40058 */   lw       $a0, 0x58($sp)
/* 1A5E94 802775B4 0260202D */  daddu     $a0, $s3, $zero
/* 1A5E98 802775B8 0C09DBE3 */  jal       dispatch_event_general
/* 1A5E9C 802775BC 24050019 */   addiu    $a1, $zero, 0x19
/* 1A5EA0 802775C0 0809E1A9 */  j         .L802786A4
/* 1A5EA4 802775C4 0000102D */   daddu    $v0, $zero, $zero
.L802775C8:
/* 1A5EA8 802775C8 8E830188 */  lw        $v1, 0x188($s4)
/* 1A5EAC 802775CC 30620200 */  andi      $v0, $v1, 0x200
/* 1A5EB0 802775D0 10400014 */  beqz      $v0, .L80277624
/* 1A5EB4 802775D4 3C021000 */   lui      $v0, (0x10000000 >> 16)
/* 1A5EB8 802775D8 00621024 */  and       $v0, $v1, $v0
/* 1A5EBC 802775DC 14400011 */  bnez      $v0, .L80277624
/* 1A5EC0 802775E0 00000000 */   nop
/* 1A5EC4 802775E4 8FA80018 */  lw        $t0, 0x18($sp)
/* 1A5EC8 802775E8 8D02007C */  lw        $v0, 0x7C($t0)
/* 1A5ECC 802775EC 30420200 */  andi      $v0, $v0, 0x200
/* 1A5ED0 802775F0 1040000C */  beqz      $v0, .L80277624
/* 1A5ED4 802775F4 24020003 */   addiu    $v0, $zero, 0x3
/* 1A5ED8 802775F8 AFA20010 */  sw        $v0, 0x10($sp)
/* 1A5EDC 802775FC 8E25000C */  lw        $a1, 0xC($s1)
/* 1A5EE0 80277600 8E260010 */  lw        $a2, 0x10($s1)
/* 1A5EE4 80277604 8E270014 */  lw        $a3, 0x14($s1)
/* 1A5EE8 80277608 0C09DC01 */  jal       play_hit_sound
/* 1A5EEC 8027760C 8FA40058 */   lw       $a0, 0x58($sp)
/* 1A5EF0 80277610 0260202D */  daddu     $a0, $s3, $zero
/* 1A5EF4 80277614 0C09DBE3 */  jal       dispatch_event_general
/* 1A5EF8 80277618 24050022 */   addiu    $a1, $zero, 0x22
/* 1A5EFC 8027761C 0809E1A9 */  j         .L802786A4
/* 1A5F00 80277620 2402FFFF */   addiu    $v0, $zero, -0x1
.L80277624:
/* 1A5F04 80277624 8E820188 */  lw        $v0, 0x188($s4)
/* 1A5F08 80277628 30420800 */  andi      $v0, $v0, 0x800
/* 1A5F0C 8027762C 1040000D */  beqz      $v0, .L80277664
/* 1A5F10 80277630 00000000 */   nop
/* 1A5F14 80277634 8E620000 */  lw        $v0, 0x0($s3)
/* 1A5F18 80277638 30420200 */  andi      $v0, $v0, 0x200
/* 1A5F1C 8027763C 10400009 */  beqz      $v0, .L80277664
/* 1A5F20 80277640 24020001 */   addiu    $v0, $zero, 0x1
/* 1A5F24 80277644 AFA20010 */  sw        $v0, 0x10($sp)
/* 1A5F28 80277648 8E25000C */  lw        $a1, 0xC($s1)
/* 1A5F2C 8027764C 8E260010 */  lw        $a2, 0x10($s1)
/* 1A5F30 80277650 8E270014 */  lw        $a3, 0x14($s1)
/* 1A5F34 80277654 0C09DC01 */  jal       play_hit_sound
/* 1A5F38 80277658 8FA40058 */   lw       $a0, 0x58($sp)
/* 1A5F3C 8027765C 0809E1A9 */  j         .L802786A4
/* 1A5F40 80277660 24020002 */   addiu    $v0, $zero, 0x2
.L80277664:
/* 1A5F44 80277664 8E820188 */  lw        $v0, 0x188($s4)
/* 1A5F48 80277668 30420002 */  andi      $v0, $v0, 0x2
/* 1A5F4C 8027766C 10400010 */  beqz      $v0, .L802776B0
/* 1A5F50 80277670 0000202D */   daddu    $a0, $zero, $zero
/* 1A5F54 80277674 C6240014 */  lwc1      $f4, 0x14($s1)
/* 1A5F58 80277678 3C0140A0 */  lui       $at, (0x40A00000 >> 16)
/* 1A5F5C 8027767C 44810000 */  mtc1      $at, $f0
/* 1A5F60 80277680 3C013F80 */  lui       $at, (0x3F800000 >> 16)
/* 1A5F64 80277684 44811000 */  mtc1      $at, $f2
/* 1A5F68 80277688 24020018 */  addiu     $v0, $zero, 0x18
/* 1A5F6C 8027768C AFA20014 */  sw        $v0, 0x14($sp)
/* 1A5F70 80277690 46002100 */  add.s     $f4, $f4, $f0
/* 1A5F74 80277694 E7A20010 */  swc1      $f2, 0x10($sp)
/* 1A5F78 80277698 8E25000C */  lw        $a1, 0xC($s1)
/* 1A5F7C 8027769C 8E260010 */  lw        $a2, 0x10($s1)
/* 1A5F80 802776A0 44072000 */  mfc1      $a3, $f4
/* 1A5F84 802776A4 24080001 */  addiu     $t0, $zero, 0x1
/* 1A5F88 802776A8 0C01C184 */  jal       fx_ring_blast
/* 1A5F8C 802776AC AFA80020 */   sw       $t0, 0x20($sp)
.L802776B0:
/* 1A5F90 802776B0 8E820188 */  lw        $v0, 0x188($s4)
/* 1A5F94 802776B4 30420020 */  andi      $v0, $v0, 0x20
/* 1A5F98 802776B8 10400005 */  beqz      $v0, .L802776D0
/* 1A5F9C 802776BC 00000000 */   nop
/* 1A5FA0 802776C0 0C09451D */  jal       apply_shock_effect
/* 1A5FA4 802776C4 0260202D */   daddu    $a0, $s3, $zero
/* 1A5FA8 802776C8 24080001 */  addiu     $t0, $zero, 0x1
/* 1A5FAC 802776CC AFA80024 */  sw        $t0, 0x24($sp)
.L802776D0:
/* 1A5FB0 802776D0 8E820188 */  lw        $v0, 0x188($s4)
/* 1A5FB4 802776D4 30420004 */  andi      $v0, $v0, 0x4
/* 1A5FB8 802776D8 1040000E */  beqz      $v0, .L80277714
/* 1A5FBC 802776DC 24020018 */   addiu    $v0, $zero, 0x18
/* 1A5FC0 802776E0 C6240014 */  lwc1      $f4, 0x14($s1)
/* 1A5FC4 802776E4 3C0140A0 */  lui       $at, (0x40A00000 >> 16)
/* 1A5FC8 802776E8 44810000 */  mtc1      $at, $f0
/* 1A5FCC 802776EC 3C013F80 */  lui       $at, (0x3F800000 >> 16)
/* 1A5FD0 802776F0 44811000 */  mtc1      $at, $f2
/* 1A5FD4 802776F4 AFA20014 */  sw        $v0, 0x14($sp)
/* 1A5FD8 802776F8 46002100 */  add.s     $f4, $f4, $f0
/* 1A5FDC 802776FC E7A20010 */  swc1      $f2, 0x10($sp)
/* 1A5FE0 80277700 8E25000C */  lw        $a1, 0xC($s1)
/* 1A5FE4 80277704 8E260010 */  lw        $a2, 0x10($s1)
/* 1A5FE8 80277708 44072000 */  mfc1      $a3, $f4
/* 1A5FEC 8027770C 0C01C70C */  jal       fx_water_splash
/* 1A5FF0 80277710 0000202D */   daddu    $a0, $zero, $zero
.L80277714:
/* 1A5FF4 80277714 8E820188 */  lw        $v0, 0x188($s4)
/* 1A5FF8 80277718 30420008 */  andi      $v0, $v0, 0x8
/* 1A5FFC 8027771C 1040000B */  beqz      $v0, .L8027774C
/* 1A6000 80277720 00000000 */   nop
/* 1A6004 80277724 C6220014 */  lwc1      $f2, 0x14($s1)
/* 1A6008 80277728 3C0140A0 */  lui       $at, (0x40A00000 >> 16)
/* 1A600C 8027772C 44810000 */  mtc1      $at, $f0
/* 1A6010 80277730 00000000 */  nop
/* 1A6014 80277734 46001080 */  add.s     $f2, $f2, $f0
/* 1A6018 80277738 8E25000C */  lw        $a1, 0xC($s1)
/* 1A601C 8027773C 8E260010 */  lw        $a2, 0x10($s1)
/* 1A6020 80277740 44071000 */  mfc1      $a3, $f2
/* 1A6024 80277744 0C01C2A4 */  jal       fx_big_snowflakes
/* 1A6028 80277748 0000202D */   daddu    $a0, $zero, $zero
.L8027774C:
/* 1A602C 8027774C 8FA80058 */  lw        $t0, 0x58($sp)
/* 1A6030 80277750 81020212 */  lb        $v0, 0x212($t0)
/* 1A6034 80277754 2403000B */  addiu     $v1, $zero, 0xB
/* 1A6038 80277758 5043001E */  beql      $v0, $v1, .L802777D4
/* 1A603C 8027775C 3C047FFF */   lui      $a0, (0x7FFFFFFF >> 16)
/* 1A6040 80277760 82620212 */  lb        $v0, 0x212($s3)
/* 1A6044 80277764 10430006 */  beq       $v0, $v1, .L80277780
/* 1A6048 80277768 3C031000 */   lui      $v1, (0x10000020 >> 16)
/* 1A604C 8027776C 8FA80018 */  lw        $t0, 0x18($sp)
/* 1A6050 80277770 8D02007C */  lw        $v0, 0x7C($t0)
/* 1A6054 80277774 30420080 */  andi      $v0, $v0, 0x80
/* 1A6058 80277778 50400016 */  beql      $v0, $zero, .L802777D4
/* 1A605C 8027777C 3C047FFF */   lui      $a0, (0x7FFFFFFF >> 16)
.L80277780:
/* 1A6060 80277780 8E820188 */  lw        $v0, 0x188($s4)
/* 1A6064 80277784 34630020 */  ori       $v1, $v1, (0x10000020 & 0xFFFF)
/* 1A6068 80277788 00431024 */  and       $v0, $v0, $v1
/* 1A606C 8027778C 14400011 */  bnez      $v0, .L802777D4
/* 1A6070 80277790 3C047FFF */   lui      $a0, (0x7FFFFFFF >> 16)
/* 1A6074 80277794 8E82018C */  lw        $v0, 0x18C($s4)
/* 1A6078 80277798 30420008 */  andi      $v0, $v0, 0x8
/* 1A607C 8027779C 1440000E */  bnez      $v0, .L802777D8
/* 1A6080 802777A0 3484FFFF */   ori      $a0, $a0, (0x7FFFFFFF & 0xFFFF)
/* 1A6084 802777A4 8FA40058 */  lw        $a0, 0x58($sp)
/* 1A6088 802777A8 0C09DBD4 */  jal       has_enchanted_part
/* 1A608C 802777AC 00000000 */   nop
/* 1A6090 802777B0 14400008 */  bnez      $v0, .L802777D4
/* 1A6094 802777B4 3C047FFF */   lui      $a0, (0x7FFFFFFF >> 16)
/* 1A6098 802777B8 3C03800E */  lui       $v1, %hi(gBattleStatus)
/* 1A609C 802777BC 2463C070 */  addiu     $v1, $v1, %lo(gBattleStatus)
/* 1A60A0 802777C0 8C620000 */  lw        $v0, 0x0($v1)
/* 1A60A4 802777C4 24080001 */  addiu     $t0, $zero, 0x1
/* 1A60A8 802777C8 AFA80028 */  sw        $t0, 0x28($sp)
/* 1A60AC 802777CC 34420020 */  ori       $v0, $v0, 0x20
/* 1A60B0 802777D0 AC620000 */  sw        $v0, 0x0($v1)
.L802777D4:
/* 1A60B4 802777D4 3484FFFF */  ori       $a0, $a0, (0x7FFFFFFF & 0xFFFF)
.L802777D8:
/* 1A60B8 802777D8 3C03800E */  lui       $v1, %hi(gBattleStatus)
/* 1A60BC 802777DC 2463C070 */  addiu     $v1, $v1, %lo(gBattleStatus)
/* 1A60C0 802777E0 8C620000 */  lw        $v0, 0x0($v1)
/* 1A60C4 802777E4 8E860188 */  lw        $a2, 0x188($s4)
/* 1A60C8 802777E8 00441024 */  and       $v0, $v0, $a0
/* 1A60CC 802777EC AC620000 */  sw        $v0, 0x0($v1)
/* 1A60D0 802777F0 8FA80018 */  lw        $t0, 0x18($sp)
/* 1A60D4 802777F4 8D050078 */  lw        $a1, 0x78($t0)
/* 1A60D8 802777F8 0C0998AF */  jal       get_defense
/* 1A60DC 802777FC 0260202D */   daddu    $a0, $s3, $zero
/* 1A60E0 80277800 0040202D */  daddu     $a0, $v0, $zero
/* 1A60E4 80277804 8E830188 */  lw        $v1, 0x188($s4)
/* 1A60E8 80277808 3C020800 */  lui       $v0, (0x8000000 >> 16)
/* 1A60EC 8027780C 00621024 */  and       $v0, $v1, $v0
/* 1A60F0 80277810 14400010 */  bnez      $v0, .L80277854
/* 1A60F4 80277814 00000000 */   nop
/* 1A60F8 80277818 82620222 */  lb        $v0, 0x222($s3)
/* 1A60FC 8027781C 16C0000D */  bnez      $s6, .L80277854
/* 1A6100 80277820 00822021 */   addu     $a0, $a0, $v0
/* 1A6104 80277824 8282009D */  lb        $v0, 0x9D($s4)
/* 1A6108 80277828 18400004 */  blez      $v0, .L8027783C
/* 1A610C 8027782C 30620202 */   andi     $v0, $v1, 0x202
/* 1A6110 80277830 50400002 */  beql      $v0, $zero, .L8027783C
/* 1A6114 80277834 24840001 */   addiu    $a0, $a0, 0x1
/* 1A6118 80277838 24840002 */  addiu     $a0, $a0, 0x2
.L8027783C:
/* 1A611C 8027783C 3C02800E */  lui       $v0, %hi(gBattleStatus)
/* 1A6120 80277840 8C42C070 */  lw        $v0, %lo(gBattleStatus)($v0)
/* 1A6124 80277844 3C030040 */  lui       $v1, (0x400000 >> 16)
/* 1A6128 80277848 00431024 */  and       $v0, $v0, $v1
/* 1A612C 8027784C 54400001 */  bnel      $v0, $zero, .L80277854
/* 1A6130 80277850 24840001 */   addiu    $a0, $a0, 0x1
.L80277854:
/* 1A6134 80277854 8690017E */  lh        $s0, 0x17E($s4)
/* 1A6138 80277858 24020100 */  addiu     $v0, $zero, 0x100
/* 1A613C 8027785C 12C20007 */  beq       $s6, $v0, .L8027787C
/* 1A6140 80277860 2AC20101 */   slti     $v0, $s6, 0x101
/* 1A6144 80277864 10400005 */  beqz      $v0, .L8027787C
/* 1A6148 80277868 00000000 */   nop
/* 1A614C 8027786C 16C00003 */  bnez      $s6, .L8027787C
/* 1A6150 80277870 00000000 */   nop
/* 1A6154 80277874 828200AD */  lb        $v0, 0xAD($s4)
/* 1A6158 80277878 02028023 */  subu      $s0, $s0, $v0
.L8027787C:
/* 1A615C 8027787C 8FA80058 */  lw        $t0, 0x58($sp)
/* 1A6160 80277880 81020221 */  lb        $v0, 0x221($t0)
/* 1A6164 80277884 81030224 */  lb        $v1, 0x224($t0)
/* 1A6168 80277888 10600004 */  beqz      $v1, .L8027789C
/* 1A616C 8027788C 02028021 */   addu     $s0, $s0, $v0
/* 1A6170 80277890 81020223 */  lb        $v0, 0x223($t0)
/* 1A6174 80277894 02028023 */  subu      $s0, $s0, $v0
/* 1A6178 80277898 8FA80058 */  lw        $t0, 0x58($sp)
.L8027789C:
/* 1A617C 8027789C 81030210 */  lb        $v1, 0x210($t0)
/* 1A6180 802778A0 2402000A */  addiu     $v0, $zero, 0xA
/* 1A6184 802778A4 14620006 */  bne       $v1, $v0, .L802778C0
/* 1A6188 802778A8 2A020064 */   slti     $v0, $s0, 0x64
/* 1A618C 802778AC 1A000003 */  blez      $s0, .L802778BC
/* 1A6190 802778B0 001017C2 */   srl      $v0, $s0, 31
/* 1A6194 802778B4 02021021 */  addu      $v0, $s0, $v0
/* 1A6198 802778B8 00028043 */  sra       $s0, $v0, 1
.L802778BC:
/* 1A619C 802778BC 2A020064 */  slti      $v0, $s0, 0x64
.L802778C0:
/* 1A61A0 802778C0 50400001 */  beql      $v0, $zero, .L802778C8
/* 1A61A4 802778C4 24100063 */   addiu    $s0, $zero, 0x63
.L802778C8:
/* 1A61A8 802778C8 5A000001 */  blezl     $s0, .L802778D0
/* 1A61AC 802778CC 0000202D */   daddu    $a0, $zero, $zero
.L802778D0:
/* 1A61B0 802778D0 A66001FA */  sh        $zero, 0x1FA($s3)
/* 1A61B4 802778D4 16C00020 */  bnez      $s6, .L80277958
/* 1A61B8 802778D8 02048023 */   subu     $s0, $s0, $a0
/* 1A61BC 802778DC 0260202D */  daddu     $a0, $s3, $zero
/* 1A61C0 802778E0 0C099CAB */  jal       player_team_is_ability_active
/* 1A61C4 802778E4 24050007 */   addiu    $a1, $zero, 0x7
/* 1A61C8 802778E8 10400006 */  beqz      $v0, .L80277904
/* 1A61CC 802778EC 0260202D */   daddu    $a0, $s3, $zero
/* 1A61D0 802778F0 8E820188 */  lw        $v0, 0x188($s4)
/* 1A61D4 802778F4 30420002 */  andi      $v0, $v0, 0x2
/* 1A61D8 802778F8 54400002 */  bnel      $v0, $zero, .L80277904
/* 1A61DC 802778FC 2610FFFF */   addiu    $s0, $s0, -0x1
/* 1A61E0 80277900 0260202D */  daddu     $a0, $s3, $zero
.L80277904:
/* 1A61E4 80277904 0C099CAB */  jal       player_team_is_ability_active
/* 1A61E8 80277908 2405001B */   addiu    $a1, $zero, 0x1B
/* 1A61EC 8027790C 02028023 */  subu      $s0, $s0, $v0
/* 1A61F0 80277910 0260202D */  daddu     $a0, $s3, $zero
/* 1A61F4 80277914 0C099CAB */  jal       player_team_is_ability_active
/* 1A61F8 80277918 24050025 */   addiu    $a1, $zero, 0x25
/* 1A61FC 8027791C 02028023 */  subu      $s0, $s0, $v0
/* 1A6200 80277920 0260202D */  daddu     $a0, $s3, $zero
/* 1A6204 80277924 0C099CAB */  jal       player_team_is_ability_active
/* 1A6208 80277928 24050022 */   addiu    $a1, $zero, 0x22
/* 1A620C 8027792C 826301B8 */  lb        $v1, 0x1B8($s3)
/* 1A6210 80277930 28630006 */  slti      $v1, $v1, 0x6
/* 1A6214 80277934 10600008 */  beqz      $v1, .L80277958
/* 1A6218 80277938 02028021 */   addu     $s0, $s0, $v0
/* 1A621C 8027793C 0260202D */  daddu     $a0, $s3, $zero
/* 1A6220 80277940 0C099CAB */  jal       player_team_is_ability_active
/* 1A6224 80277944 24050020 */   addiu    $a1, $zero, 0x20
/* 1A6228 80277948 10400003 */  beqz      $v0, .L80277958
/* 1A622C 8027794C 001017C2 */   srl      $v0, $s0, 31
/* 1A6230 80277950 02021021 */  addu      $v0, $s0, $v0
/* 1A6234 80277954 00028043 */  sra       $s0, $v0, 1
.L80277958:
/* 1A6238 80277958 12C00005 */  beqz      $s6, .L80277970
/* 1A623C 8027795C 24020100 */   addiu    $v0, $zero, 0x100
/* 1A6240 80277960 12C20021 */  beq       $s6, $v0, .L802779E8
/* 1A6244 80277964 00000000 */   nop
/* 1A6248 80277968 0809DEA0 */  j         .L80277A80
/* 1A624C 8027796C 00000000 */   nop
.L80277970:
/* 1A6250 80277970 82620210 */  lb        $v0, 0x210($s3)
/* 1A6254 80277974 10400003 */  beqz      $v0, .L80277984
/* 1A6258 80277978 28420009 */   slti     $v0, $v0, 0x9
/* 1A625C 8027797C 14400040 */  bnez      $v0, .L80277A80
/* 1A6260 80277980 00000000 */   nop
.L80277984:
/* 1A6264 80277984 82620214 */  lb        $v0, 0x214($s3)
/* 1A6268 80277988 1440003D */  bnez      $v0, .L80277A80
/* 1A626C 8027798C 3C030200 */   lui      $v1, (0x2000000 >> 16)
/* 1A6270 80277990 8E820188 */  lw        $v0, 0x188($s4)
/* 1A6274 80277994 00431024 */  and       $v0, $v0, $v1
/* 1A6278 80277998 14400039 */  bnez      $v0, .L80277A80
/* 1A627C 8027799C 00000000 */   nop
/* 1A6280 802779A0 0260202D */  daddu     $a0, $s3, $zero
/* 1A6284 802779A4 0C099CAB */  jal       player_team_is_ability_active
/* 1A6288 802779A8 24050015 */   addiu    $a1, $zero, 0x15
/* 1A628C 802779AC 10400005 */  beqz      $v0, .L802779C4
/* 1A6290 802779B0 00000000 */   nop
/* 1A6294 802779B4 0C00A67F */  jal       rand_int
/* 1A6298 802779B8 24040001 */   addiu    $a0, $zero, 0x1
/* 1A629C 802779BC 0809DE73 */  j         .L802779CC
/* 1A62A0 802779C0 00000000 */   nop
.L802779C4:
/* 1A62A4 802779C4 0C09A3B3 */  jal       check_block_input
/* 1A62A8 802779C8 34048000 */   ori      $a0, $zero, 0x8000
.L802779CC:
/* 1A62AC 802779CC 1040002A */  beqz      $v0, .L80277A78
/* 1A62B0 802779D0 0260202D */   daddu    $a0, $s3, $zero
/* 1A62B4 802779D4 2610FFFF */  addiu     $s0, $s0, -0x1
/* 1A62B8 802779D8 0C099CAB */  jal       player_team_is_ability_active
/* 1A62BC 802779DC 24050033 */   addiu    $a1, $zero, 0x33
/* 1A62C0 802779E0 0809DE89 */  j         .L80277A24
/* 1A62C4 802779E4 02028023 */   subu     $s0, $s0, $v0
.L802779E8:
/* 1A62C8 802779E8 82620214 */  lb        $v0, 0x214($s3)
/* 1A62CC 802779EC 14400024 */  bnez      $v0, .L80277A80
/* 1A62D0 802779F0 00000000 */   nop
/* 1A62D4 802779F4 82620216 */  lb        $v0, 0x216($s3)
/* 1A62D8 802779F8 14400021 */  bnez      $v0, .L80277A80
/* 1A62DC 802779FC 3C030200 */   lui      $v1, (0x2000000 >> 16)
/* 1A62E0 80277A00 8E820188 */  lw        $v0, 0x188($s4)
/* 1A62E4 80277A04 00431024 */  and       $v0, $v0, $v1
/* 1A62E8 80277A08 1440001D */  bnez      $v0, .L80277A80
/* 1A62EC 80277A0C 00000000 */   nop
/* 1A62F0 80277A10 0C09A3B3 */  jal       check_block_input
/* 1A62F4 80277A14 34048000 */   ori      $a0, $zero, 0x8000
/* 1A62F8 80277A18 10400017 */  beqz      $v0, .L80277A78
/* 1A62FC 80277A1C 00000000 */   nop
/* 1A6300 80277A20 0000802D */  daddu     $s0, $zero, $zero
.L80277A24:
/* 1A6304 80277A24 C6200014 */  lwc1      $f0, 0x14($s1)
/* 1A6308 80277A28 24040231 */  addiu     $a0, $zero, 0x231
/* 1A630C 80277A2C E7A00010 */  swc1      $f0, 0x10($sp)
/* 1A6310 80277A30 8E26000C */  lw        $a2, 0xC($s1)
/* 1A6314 80277A34 8E270010 */  lw        $a3, 0x10($s1)
/* 1A6318 80277A38 0C052757 */  jal       sfx_play_sound_at_position
/* 1A631C 80277A3C 0000282D */   daddu    $a1, $zero, $zero
/* 1A6320 80277A40 C6200014 */  lwc1      $f0, 0x14($s1)
/* 1A6324 80277A44 0000202D */  daddu     $a0, $zero, $zero
/* 1A6328 80277A48 E7A00010 */  swc1      $f0, 0x10($sp)
/* 1A632C 80277A4C 8E26000C */  lw        $a2, 0xC($s1)
/* 1A6330 80277A50 8E270010 */  lw        $a3, 0x10($s1)
/* 1A6334 80277A54 0C0999FC */  jal       show_action_rating
/* 1A6338 80277A58 0260282D */   daddu    $a1, $s3, $zero
/* 1A633C 80277A5C 3C04800E */  lui       $a0, %hi(gBattleStatus)
/* 1A6340 80277A60 2484C070 */  addiu     $a0, $a0, %lo(gBattleStatus)
/* 1A6344 80277A64 8C820000 */  lw        $v0, 0x0($a0)
/* 1A6348 80277A68 3C038000 */  lui       $v1, (0x80000000 >> 16)
/* 1A634C 80277A6C 00431025 */  or        $v0, $v0, $v1
/* 1A6350 80277A70 0809DEA0 */  j         .L80277A80
/* 1A6354 80277A74 AC820000 */   sw       $v0, 0x0($a0)
.L80277A78:
/* 1A6358 80277A78 0C099A5C */  jal       func_80266970
/* 1A635C 80277A7C 0260202D */   daddu    $a0, $s3, $zero
.L80277A80:
/* 1A6360 80277A80 3C1E800E */  lui       $fp, %hi(gBattleStatus)
/* 1A6364 80277A84 27DEC070 */  addiu     $fp, $fp, %lo(gBattleStatus)
/* 1A6368 80277A88 8FC20000 */  lw        $v0, 0x0($fp)
/* 1A636C 80277A8C 30420020 */  andi      $v0, $v0, 0x20
/* 1A6370 80277A90 10400003 */  beqz      $v0, .L80277AA0
/* 1A6374 80277A94 00000000 */   nop
/* 1A6378 80277A98 0C099A5C */  jal       func_80266970
/* 1A637C 80277A9C 0260202D */   daddu    $a0, $s3, $zero
.L80277AA0:
/* 1A6380 80277AA0 1E000011 */  bgtz      $s0, .L80277AE8
/* 1A6384 80277AA4 24120009 */   addiu    $s2, $zero, 0x9
/* 1A6388 80277AA8 A66001FA */  sh        $zero, 0x1FA($s3)
/* 1A638C 80277AAC 8E820188 */  lw        $v0, 0x188($s4)
/* 1A6390 80277AB0 3C034000 */  lui       $v1, (0x40000000 >> 16)
/* 1A6394 80277AB4 00431024 */  and       $v0, $v0, $v1
/* 1A6398 80277AB8 14400004 */  bnez      $v0, .L80277ACC
/* 1A639C 80277ABC 24080002 */   addiu    $t0, $zero, 0x2
/* 1A63A0 80277AC0 AFA8001C */  sw        $t0, 0x1C($sp)
/* 1A63A4 80277AC4 0809DEB8 */  j         .L80277AE0
/* 1A63A8 80277AC8 24120017 */   addiu    $s2, $zero, 0x17
.L80277ACC:
/* 1A63AC 80277ACC AFA8001C */  sw        $t0, 0x1C($sp)
/* 1A63B0 80277AD0 826201B8 */  lb        $v0, 0x1B8($s3)
/* 1A63B4 80277AD4 1C400002 */  bgtz      $v0, .L80277AE0
/* 1A63B8 80277AD8 24120017 */   addiu    $s2, $zero, 0x17
/* 1A63BC 80277ADC 24120020 */  addiu     $s2, $zero, 0x20
.L80277AE0:
/* 1A63C0 80277AE0 0809DEE3 */  j         .L80277B8C
/* 1A63C4 80277AE4 A6800180 */   sh       $zero, 0x180($s4)
.L80277AE8:
/* 1A63C8 80277AE8 966201FC */  lhu       $v0, 0x1FC($s3)
/* 1A63CC 80277AEC 966301FA */  lhu       $v1, 0x1FA($s3)
/* 1A63D0 80277AF0 00501021 */  addu      $v0, $v0, $s0
/* 1A63D4 80277AF4 00701823 */  subu      $v1, $v1, $s0
/* 1A63D8 80277AF8 A66201FC */  sh        $v0, 0x1FC($s3)
/* 1A63DC 80277AFC A66301FA */  sh        $v1, 0x1FA($s3)
/* 1A63E0 80277B00 A6800180 */  sh        $zero, 0x180($s4)
/* 1A63E4 80277B04 8FA80018 */  lw        $t0, 0x18($sp)
/* 1A63E8 80277B08 8D020000 */  lw        $v0, 0x0($t0)
/* 1A63EC 80277B0C 30422000 */  andi      $v0, $v0, 0x2000
/* 1A63F0 80277B10 14400012 */  bnez      $v0, .L80277B5C
/* 1A63F4 80277B14 AFA0001C */   sw       $zero, 0x1C($sp)
/* 1A63F8 80277B18 8FC20000 */  lw        $v0, 0x0($fp)
/* 1A63FC 80277B1C 3C030200 */  lui       $v1, (0x2000000 >> 16)
/* 1A6400 80277B20 00431024 */  and       $v0, $v0, $v1
/* 1A6404 80277B24 1440000D */  bnez      $v0, .L80277B5C
/* 1A6408 80277B28 3C030040 */   lui      $v1, (0x400000 >> 16)
/* 1A640C 80277B2C 8E620000 */  lw        $v0, 0x0($s3)
/* 1A6410 80277B30 00431024 */  and       $v0, $v0, $v1
/* 1A6414 80277B34 14400004 */  bnez      $v0, .L80277B48
/* 1A6418 80277B38 00000000 */   nop
/* 1A641C 80277B3C 926201B8 */  lbu       $v0, 0x1B8($s3)
/* 1A6420 80277B40 00501023 */  subu      $v0, $v0, $s0
/* 1A6424 80277B44 A26201B8 */  sb        $v0, 0x1B8($s3)
.L80277B48:
/* 1A6428 80277B48 826201B8 */  lb        $v0, 0x1B8($s3)
/* 1A642C 80277B4C 1C400003 */  bgtz      $v0, .L80277B5C
/* 1A6430 80277B50 00000000 */   nop
/* 1A6434 80277B54 A26001B8 */  sb        $zero, 0x1B8($s3)
/* 1A6438 80277B58 24120020 */  addiu     $s2, $zero, 0x20
.L80277B5C:
/* 1A643C 80277B5C 96820180 */  lhu       $v0, 0x180($s4)
/* 1A6440 80277B60 00501021 */  addu      $v0, $v0, $s0
/* 1A6444 80277B64 A6820180 */  sh        $v0, 0x180($s4)
/* 1A6448 80277B68 A66201F8 */  sh        $v0, 0x1F8($s3)
/* 1A644C 80277B6C 16C00007 */  bnez      $s6, .L80277B8C
/* 1A6450 80277B70 A66001FA */   sh       $zero, 0x1FA($s3)
/* 1A6454 80277B74 9282007B */  lbu       $v0, 0x7B($s4)
/* 1A6458 80277B78 00501021 */  addu      $v0, $v0, $s0
/* 1A645C 80277B7C A282007B */  sb        $v0, 0x7B($s4)
/* 1A6460 80277B80 926201B8 */  lbu       $v0, 0x1B8($s3)
/* 1A6464 80277B84 3C018011 */  lui       $at, %hi(gPlayerData + 0x2)
/* 1A6468 80277B88 A022F292 */  sb        $v0, %lo(gPlayerData + 0x2)($at)
.L80277B8C:
/* 1A646C 80277B8C 3C02800E */  lui       $v0, %hi(gBattleStatus)
/* 1A6470 80277B90 8C42C070 */  lw        $v0, %lo(gBattleStatus)($v0)
/* 1A6474 80277B94 30420020 */  andi      $v0, $v0, 0x20
/* 1A6478 80277B98 1040000D */  beqz      $v0, .L80277BD0
/* 1A647C 80277B9C 24020009 */   addiu    $v0, $zero, 0x9
/* 1A6480 80277BA0 52420001 */  beql      $s2, $v0, .L80277BA8
/* 1A6484 80277BA4 2412000A */   addiu    $s2, $zero, 0xA
.L80277BA8:
/* 1A6488 80277BA8 24020017 */  addiu     $v0, $zero, 0x17
/* 1A648C 80277BAC 52420001 */  beql      $s2, $v0, .L80277BB4
/* 1A6490 80277BB0 24120019 */   addiu    $s2, $zero, 0x19
.L80277BB4:
/* 1A6494 80277BB4 826201B8 */  lb        $v0, 0x1B8($s3)
/* 1A6498 80277BB8 1C400008 */  bgtz      $v0, .L80277BDC
/* 1A649C 80277BBC 24020019 */   addiu    $v0, $zero, 0x19
/* 1A64A0 80277BC0 52420006 */  beql      $s2, $v0, .L80277BDC
/* 1A64A4 80277BC4 24120020 */   addiu    $s2, $zero, 0x20
/* 1A64A8 80277BC8 0809DEF7 */  j         .L80277BDC
/* 1A64AC 80277BCC 00000000 */   nop
.L80277BD0:
/* 1A64B0 80277BD0 24020020 */  addiu     $v0, $zero, 0x20
/* 1A64B4 80277BD4 52420001 */  beql      $s2, $v0, .L80277BDC
/* 1A64B8 80277BD8 24120009 */   addiu    $s2, $zero, 0x9
.L80277BDC:
/* 1A64BC 80277BDC 3C10800E */  lui       $s0, %hi(gBattleStatus)
/* 1A64C0 80277BE0 2610C070 */  addiu     $s0, $s0, %lo(gBattleStatus)
/* 1A64C4 80277BE4 8E020000 */  lw        $v0, 0x0($s0)
/* 1A64C8 80277BE8 30420020 */  andi      $v0, $v0, 0x20
/* 1A64CC 80277BEC 14400007 */  bnez      $v0, .L80277C0C
/* 1A64D0 80277BF0 00000000 */   nop
/* 1A64D4 80277BF4 0C099B85 */  jal       clear_part_pal_adjustment
/* 1A64D8 80277BF8 8FA40018 */   lw       $a0, 0x18($sp)
/* 1A64DC 80277BFC 8E020000 */  lw        $v0, 0x0($s0)
/* 1A64E0 80277C00 30420020 */  andi      $v0, $v0, 0x20
/* 1A64E4 80277C04 10400014 */  beqz      $v0, .L80277C58
/* 1A64E8 80277C08 00000000 */   nop
.L80277C0C:
/* 1A64EC 80277C0C 8E820188 */  lw        $v0, 0x188($s4)
/* 1A64F0 80277C10 30420C80 */  andi      $v0, $v0, 0xC80
/* 1A64F4 80277C14 1040000B */  beqz      $v0, .L80277C44
/* 1A64F8 80277C18 00000000 */   nop
/* 1A64FC 80277C1C 8FA80018 */  lw        $t0, 0x18($sp)
/* 1A6500 80277C20 8D02007C */  lw        $v0, 0x7C($t0)
/* 1A6504 80277C24 30421000 */  andi      $v0, $v0, 0x1000
/* 1A6508 80277C28 10400006 */  beqz      $v0, .L80277C44
/* 1A650C 80277C2C 2402000A */   addiu    $v0, $zero, 0xA
/* 1A6510 80277C30 52420001 */  beql      $s2, $v0, .L80277C38
/* 1A6514 80277C34 2412000D */   addiu    $s2, $zero, 0xD
.L80277C38:
/* 1A6518 80277C38 24020019 */  addiu     $v0, $zero, 0x19
/* 1A651C 80277C3C 52420001 */  beql      $s2, $v0, .L80277C44
/* 1A6520 80277C40 2412000D */   addiu    $s2, $zero, 0xD
.L80277C44:
/* 1A6524 80277C44 3C02800E */  lui       $v0, %hi(gBattleStatus)
/* 1A6528 80277C48 8C42C070 */  lw        $v0, %lo(gBattleStatus)($v0)
/* 1A652C 80277C4C 30420020 */  andi      $v0, $v0, 0x20
/* 1A6530 80277C50 14400014 */  bnez      $v0, .L80277CA4
/* 1A6534 80277C54 00000000 */   nop
.L80277C58:
/* 1A6538 80277C58 8E820188 */  lw        $v0, 0x188($s4)
/* 1A653C 80277C5C 30420C80 */  andi      $v0, $v0, 0xC80
/* 1A6540 80277C60 1040000B */  beqz      $v0, .L80277C90
/* 1A6544 80277C64 00000000 */   nop
/* 1A6548 80277C68 8FA80018 */  lw        $t0, 0x18($sp)
/* 1A654C 80277C6C 8D02007C */  lw        $v0, 0x7C($t0)
/* 1A6550 80277C70 30421000 */  andi      $v0, $v0, 0x1000
/* 1A6554 80277C74 10400006 */  beqz      $v0, .L80277C90
/* 1A6558 80277C78 24020009 */   addiu    $v0, $zero, 0x9
/* 1A655C 80277C7C 52420001 */  beql      $s2, $v0, .L80277C84
/* 1A6560 80277C80 2412000D */   addiu    $s2, $zero, 0xD
.L80277C84:
/* 1A6564 80277C84 24020017 */  addiu     $v0, $zero, 0x17
/* 1A6568 80277C88 52420001 */  beql      $s2, $v0, .L80277C90
/* 1A656C 80277C8C 2412000D */   addiu    $s2, $zero, 0xD
.L80277C90:
/* 1A6570 80277C90 3C02800E */  lui       $v0, %hi(gBattleStatus)
/* 1A6574 80277C94 8C42C070 */  lw        $v0, %lo(gBattleStatus)($v0)
/* 1A6578 80277C98 30420020 */  andi      $v0, $v0, 0x20
/* 1A657C 80277C9C 1040000C */  beqz      $v0, .L80277CD0
/* 1A6580 80277CA0 00000000 */   nop
.L80277CA4:
/* 1A6584 80277CA4 8E820188 */  lw        $v0, 0x188($s4)
/* 1A6588 80277CA8 30424202 */  andi      $v0, $v0, 0x4202
/* 1A658C 80277CAC 10400008 */  beqz      $v0, .L80277CD0
/* 1A6590 80277CB0 2402000A */   addiu    $v0, $zero, 0xA
/* 1A6594 80277CB4 52420001 */  beql      $s2, $v0, .L80277CBC
/* 1A6598 80277CB8 2412000E */   addiu    $s2, $zero, 0xE
.L80277CBC:
/* 1A659C 80277CBC 24020020 */  addiu     $v0, $zero, 0x20
/* 1A65A0 80277CC0 52420001 */  beql      $s2, $v0, .L80277CC8
/* 1A65A4 80277CC4 24120029 */   addiu    $s2, $zero, 0x29
.L80277CC8:
/* 1A65A8 80277CC8 24080001 */  addiu     $t0, $zero, 0x1
/* 1A65AC 80277CCC AFA80020 */  sw        $t0, 0x20($sp)
.L80277CD0:
/* 1A65B0 80277CD0 3C02800E */  lui       $v0, %hi(gBattleStatus)
/* 1A65B4 80277CD4 8C42C070 */  lw        $v0, %lo(gBattleStatus)($v0)
/* 1A65B8 80277CD8 0441000F */  bgez      $v0, .L80277D18
/* 1A65BC 80277CDC 24020009 */   addiu    $v0, $zero, 0x9
/* 1A65C0 80277CE0 52420001 */  beql      $s2, $v0, .L80277CE8
/* 1A65C4 80277CE4 24120018 */   addiu    $s2, $zero, 0x18
.L80277CE8:
/* 1A65C8 80277CE8 2402000A */  addiu     $v0, $zero, 0xA
/* 1A65CC 80277CEC 52420001 */  beql      $s2, $v0, .L80277CF4
/* 1A65D0 80277CF0 2412001A */   addiu    $s2, $zero, 0x1A
.L80277CF4:
/* 1A65D4 80277CF4 24020017 */  addiu     $v0, $zero, 0x17
/* 1A65D8 80277CF8 52420001 */  beql      $s2, $v0, .L80277D00
/* 1A65DC 80277CFC 24120018 */   addiu    $s2, $zero, 0x18
.L80277D00:
/* 1A65E0 80277D00 24020019 */  addiu     $v0, $zero, 0x19
/* 1A65E4 80277D04 52420001 */  beql      $s2, $v0, .L80277D0C
/* 1A65E8 80277D08 2412001A */   addiu    $s2, $zero, 0x1A
.L80277D0C:
/* 1A65EC 80277D0C 2402000E */  addiu     $v0, $zero, 0xE
/* 1A65F0 80277D10 52420001 */  beql      $s2, $v0, .L80277D18
/* 1A65F4 80277D14 2412001A */   addiu    $s2, $zero, 0x1A
.L80277D18:
/* 1A65F8 80277D18 3C04800E */  lui       $a0, %hi(gBattleStatus)
/* 1A65FC 80277D1C 2484C070 */  addiu     $a0, $a0, %lo(gBattleStatus)
/* 1A6600 80277D20 8C830000 */  lw        $v1, 0x0($a0)
/* 1A6604 80277D24 30620020 */  andi      $v0, $v1, 0x20
/* 1A6608 80277D28 104000B2 */  beqz      $v0, .L80277FF4
/* 1A660C 80277D2C 24020100 */   addiu    $v0, $zero, 0x100
/* 1A6610 80277D30 86820180 */  lh        $v0, 0x180($s4)
/* 1A6614 80277D34 044000AE */  bltz      $v0, .L80277FF0
/* 1A6618 80277D38 24020020 */   addiu    $v0, $zero, 0x20
/* 1A661C 80277D3C 124200AC */  beq       $s2, $v0, .L80277FF0
/* 1A6620 80277D40 24020021 */   addiu    $v0, $zero, 0x21
/* 1A6624 80277D44 124200AA */  beq       $s2, $v0, .L80277FF0
/* 1A6628 80277D48 24020022 */   addiu    $v0, $zero, 0x22
/* 1A662C 80277D4C 124200A9 */  beq       $s2, $v0, .L80277FF4
/* 1A6630 80277D50 24020100 */   addiu    $v0, $zero, 0x100
/* 1A6634 80277D54 046000A7 */  bltz      $v1, .L80277FF4
/* 1A6638 80277D58 3C030100 */   lui      $v1, (0x1000000 >> 16)
/* 1A663C 80277D5C 8C820004 */  lw        $v0, 0x4($a0)
/* 1A6640 80277D60 00431024 */  and       $v0, $v0, $v1
/* 1A6644 80277D64 144000A3 */  bnez      $v0, .L80277FF4
/* 1A6648 80277D68 24020100 */   addiu    $v0, $zero, 0x100
/* 1A664C 80277D6C 16C0000A */  bnez      $s6, .L80277D98
/* 1A6650 80277D70 00000000 */   nop
/* 1A6654 80277D74 0C03A752 */  jal       is_ability_active
/* 1A6658 80277D78 24040037 */   addiu    $a0, $zero, 0x37
/* 1A665C 80277D7C 10400006 */  beqz      $v0, .L80277D98
/* 1A6660 80277D80 00000000 */   nop
/* 1A6664 80277D84 0C00A67F */  jal       rand_int
/* 1A6668 80277D88 24040064 */   addiu    $a0, $zero, 0x64
/* 1A666C 80277D8C 28420032 */  slti      $v0, $v0, 0x32
/* 1A6670 80277D90 14400098 */  bnez      $v0, .L80277FF4
/* 1A6674 80277D94 24020100 */   addiu    $v0, $zero, 0x100
.L80277D98:
/* 1A6678 80277D98 8E820190 */  lw        $v0, 0x190($s4)
/* 1A667C 80277D9C 3C030008 */  lui       $v1, (0x80000 >> 16)
/* 1A6680 80277DA0 00431024 */  and       $v0, $v0, $v1
/* 1A6684 80277DA4 10400008 */  beqz      $v0, .L80277DC8
/* 1A6688 80277DA8 0260202D */   daddu    $a0, $s3, $zero
/* 1A668C 80277DAC 2405000A */  addiu     $a1, $zero, 0xA
/* 1A6690 80277DB0 0C099ADE */  jal       try_inflict_status
/* 1A6694 80277DB4 24060027 */   addiu    $a2, $zero, 0x27
/* 1A6698 80277DB8 10400003 */  beqz      $v0, .L80277DC8
/* 1A669C 80277DBC 00000000 */   nop
/* 1A66A0 80277DC0 24150001 */  addiu     $s5, $zero, 0x1
/* 1A66A4 80277DC4 02A0B82D */  daddu     $s7, $s5, $zero
.L80277DC8:
/* 1A66A8 80277DC8 8E820190 */  lw        $v0, 0x190($s4)
/* 1A66AC 80277DCC 3C030002 */  lui       $v1, (0x20000 >> 16)
/* 1A66B0 80277DD0 00431024 */  and       $v0, $v0, $v1
/* 1A66B4 80277DD4 10400008 */  beqz      $v0, .L80277DF8
/* 1A66B8 80277DD8 0260202D */   daddu    $a0, $s3, $zero
/* 1A66BC 80277DDC 24050009 */  addiu     $a1, $zero, 0x9
/* 1A66C0 80277DE0 0C099ADE */  jal       try_inflict_status
/* 1A66C4 80277DE4 24060025 */   addiu    $a2, $zero, 0x25
/* 1A66C8 80277DE8 10400003 */  beqz      $v0, .L80277DF8
/* 1A66CC 80277DEC 00000000 */   nop
/* 1A66D0 80277DF0 24150001 */  addiu     $s5, $zero, 0x1
/* 1A66D4 80277DF4 02A0B82D */  daddu     $s7, $s5, $zero
.L80277DF8:
/* 1A66D8 80277DF8 8E820190 */  lw        $v0, 0x190($s4)
/* 1A66DC 80277DFC 3C030010 */  lui       $v1, (0x100000 >> 16)
/* 1A66E0 80277E00 00431024 */  and       $v0, $v0, $v1
/* 1A66E4 80277E04 10400008 */  beqz      $v0, .L80277E28
/* 1A66E8 80277E08 0260202D */   daddu    $a0, $s3, $zero
/* 1A66EC 80277E0C 2405000C */  addiu     $a1, $zero, 0xC
/* 1A66F0 80277E10 0C099ADE */  jal       try_inflict_status
/* 1A66F4 80277E14 24060028 */   addiu    $a2, $zero, 0x28
/* 1A66F8 80277E18 10400003 */  beqz      $v0, .L80277E28
/* 1A66FC 80277E1C 00000000 */   nop
/* 1A6700 80277E20 24150001 */  addiu     $s5, $zero, 0x1
/* 1A6704 80277E24 02A0B82D */  daddu     $s7, $s5, $zero
.L80277E28:
/* 1A6708 80277E28 8E820190 */  lw        $v0, 0x190($s4)
/* 1A670C 80277E2C 30421000 */  andi      $v0, $v0, 0x1000
/* 1A6710 80277E30 10400008 */  beqz      $v0, .L80277E54
/* 1A6714 80277E34 0260202D */   daddu    $a0, $s3, $zero
/* 1A6718 80277E38 24050006 */  addiu     $a1, $zero, 0x6
/* 1A671C 80277E3C 0C099ADE */  jal       try_inflict_status
/* 1A6720 80277E40 24060020 */   addiu    $a2, $zero, 0x20
/* 1A6724 80277E44 10400003 */  beqz      $v0, .L80277E54
/* 1A6728 80277E48 00000000 */   nop
/* 1A672C 80277E4C 24150001 */  addiu     $s5, $zero, 0x1
/* 1A6730 80277E50 02A0B82D */  daddu     $s7, $s5, $zero
.L80277E54:
/* 1A6734 80277E54 8E820190 */  lw        $v0, 0x190($s4)
/* 1A6738 80277E58 3C030004 */  lui       $v1, (0x40000 >> 16)
/* 1A673C 80277E5C 00431024 */  and       $v0, $v0, $v1
/* 1A6740 80277E60 10400008 */  beqz      $v0, .L80277E84
/* 1A6744 80277E64 0260202D */   daddu    $a0, $s3, $zero
/* 1A6748 80277E68 24050004 */  addiu     $a1, $zero, 0x4
/* 1A674C 80277E6C 0C099ADE */  jal       try_inflict_status
/* 1A6750 80277E70 24060024 */   addiu    $a2, $zero, 0x24
/* 1A6754 80277E74 10400003 */  beqz      $v0, .L80277E84
/* 1A6758 80277E78 00000000 */   nop
/* 1A675C 80277E7C 24150001 */  addiu     $s5, $zero, 0x1
/* 1A6760 80277E80 02A0B82D */  daddu     $s7, $s5, $zero
.L80277E84:
/* 1A6764 80277E84 8E820190 */  lw        $v0, 0x190($s4)
/* 1A6768 80277E88 3C030020 */  lui       $v1, (0x200000 >> 16)
/* 1A676C 80277E8C 00431024 */  and       $v0, $v0, $v1
/* 1A6770 80277E90 10400008 */  beqz      $v0, .L80277EB4
/* 1A6774 80277E94 0260202D */   daddu    $a0, $s3, $zero
/* 1A6778 80277E98 24050008 */  addiu     $a1, $zero, 0x8
/* 1A677C 80277E9C 0C099ADE */  jal       try_inflict_status
/* 1A6780 80277EA0 24060029 */   addiu    $a2, $zero, 0x29
/* 1A6784 80277EA4 10400003 */  beqz      $v0, .L80277EB4
/* 1A6788 80277EA8 00000000 */   nop
/* 1A678C 80277EAC 24150001 */  addiu     $s5, $zero, 0x1
/* 1A6790 80277EB0 02A0B82D */  daddu     $s7, $s5, $zero
.L80277EB4:
/* 1A6794 80277EB4 8E820190 */  lw        $v0, 0x190($s4)
/* 1A6798 80277EB8 30422000 */  andi      $v0, $v0, 0x2000
/* 1A679C 80277EBC 10400008 */  beqz      $v0, .L80277EE0
/* 1A67A0 80277EC0 0260202D */   daddu    $a0, $s3, $zero
/* 1A67A4 80277EC4 2405000B */  addiu     $a1, $zero, 0xB
/* 1A67A8 80277EC8 0C099ADE */  jal       try_inflict_status
/* 1A67AC 80277ECC 24060021 */   addiu    $a2, $zero, 0x21
/* 1A67B0 80277ED0 10400003 */  beqz      $v0, .L80277EE0
/* 1A67B4 80277ED4 00000000 */   nop
/* 1A67B8 80277ED8 24150001 */  addiu     $s5, $zero, 0x1
/* 1A67BC 80277EDC 02A0B82D */  daddu     $s7, $s5, $zero
.L80277EE0:
/* 1A67C0 80277EE0 8E820190 */  lw        $v0, 0x190($s4)
/* 1A67C4 80277EE4 3C030001 */  lui       $v1, (0x10000 >> 16)
/* 1A67C8 80277EE8 00431024 */  and       $v0, $v0, $v1
/* 1A67CC 80277EEC 10400008 */  beqz      $v0, .L80277F10
/* 1A67D0 80277EF0 0260202D */   daddu    $a0, $s3, $zero
/* 1A67D4 80277EF4 24050005 */  addiu     $a1, $zero, 0x5
/* 1A67D8 80277EF8 0C099ADE */  jal       try_inflict_status
/* 1A67DC 80277EFC 24060026 */   addiu    $a2, $zero, 0x26
/* 1A67E0 80277F00 10400003 */  beqz      $v0, .L80277F10
/* 1A67E4 80277F04 00000000 */   nop
/* 1A67E8 80277F08 24150001 */  addiu     $s5, $zero, 0x1
/* 1A67EC 80277F0C 02A0B82D */  daddu     $s7, $s5, $zero
.L80277F10:
/* 1A67F0 80277F10 8E820190 */  lw        $v0, 0x190($s4)
/* 1A67F4 80277F14 30428000 */  andi      $v0, $v0, 0x8000
/* 1A67F8 80277F18 10400008 */  beqz      $v0, .L80277F3C
/* 1A67FC 80277F1C 0260202D */   daddu    $a0, $s3, $zero
/* 1A6800 80277F20 24050003 */  addiu     $a1, $zero, 0x3
/* 1A6804 80277F24 0C099ADE */  jal       try_inflict_status
/* 1A6808 80277F28 24060023 */   addiu    $a2, $zero, 0x23
/* 1A680C 80277F2C 10400003 */  beqz      $v0, .L80277F3C
/* 1A6810 80277F30 00000000 */   nop
/* 1A6814 80277F34 24150001 */  addiu     $s5, $zero, 0x1
/* 1A6818 80277F38 02A0B82D */  daddu     $s7, $s5, $zero
.L80277F3C:
/* 1A681C 80277F3C 8E820190 */  lw        $v0, 0x190($s4)
/* 1A6820 80277F40 3C030001 */  lui       $v1, (0x10000 >> 16)
/* 1A6824 80277F44 00431024 */  and       $v0, $v0, $v1
/* 1A6828 80277F48 10400008 */  beqz      $v0, .L80277F6C
/* 1A682C 80277F4C 0260202D */   daddu    $a0, $s3, $zero
/* 1A6830 80277F50 24050005 */  addiu     $a1, $zero, 0x5
/* 1A6834 80277F54 0C099ADE */  jal       try_inflict_status
/* 1A6838 80277F58 24060026 */   addiu    $a2, $zero, 0x26
/* 1A683C 80277F5C 10400003 */  beqz      $v0, .L80277F6C
/* 1A6840 80277F60 00000000 */   nop
/* 1A6844 80277F64 24150001 */  addiu     $s5, $zero, 0x1
/* 1A6848 80277F68 02A0B82D */  daddu     $s7, $s5, $zero
.L80277F6C:
/* 1A684C 80277F6C 8E820190 */  lw        $v0, 0x190($s4)
/* 1A6850 80277F70 3C030004 */  lui       $v1, (0x40000 >> 16)
/* 1A6854 80277F74 00431024 */  and       $v0, $v0, $v1
/* 1A6858 80277F78 10400008 */  beqz      $v0, .L80277F9C
/* 1A685C 80277F7C 0260202D */   daddu    $a0, $s3, $zero
/* 1A6860 80277F80 24050004 */  addiu     $a1, $zero, 0x4
/* 1A6864 80277F84 0C099ADE */  jal       try_inflict_status
/* 1A6868 80277F88 24060024 */   addiu    $a2, $zero, 0x24
/* 1A686C 80277F8C 10400003 */  beqz      $v0, .L80277F9C
/* 1A6870 80277F90 00000000 */   nop
/* 1A6874 80277F94 24150001 */  addiu     $s5, $zero, 0x1
/* 1A6878 80277F98 02A0B82D */  daddu     $s7, $s5, $zero
.L80277F9C:
/* 1A687C 80277F9C 8E820190 */  lw        $v0, 0x190($s4)
/* 1A6880 80277FA0 30424000 */  andi      $v0, $v0, 0x4000
/* 1A6884 80277FA4 1040000B */  beqz      $v0, .L80277FD4
/* 1A6888 80277FA8 24020007 */   addiu    $v0, $zero, 0x7
/* 1A688C 80277FAC 82630210 */  lb        $v1, 0x210($s3)
/* 1A6890 80277FB0 10620008 */  beq       $v1, $v0, .L80277FD4
/* 1A6894 80277FB4 0260202D */   daddu    $a0, $s3, $zero
/* 1A6898 80277FB8 0040282D */  daddu     $a1, $v0, $zero
/* 1A689C 80277FBC 0C099ADE */  jal       try_inflict_status
/* 1A68A0 80277FC0 24060022 */   addiu    $a2, $zero, 0x22
/* 1A68A4 80277FC4 10400003 */  beqz      $v0, .L80277FD4
/* 1A68A8 80277FC8 00000000 */   nop
/* 1A68AC 80277FCC 24150001 */  addiu     $s5, $zero, 0x1
/* 1A68B0 80277FD0 02A0B82D */  daddu     $s7, $s5, $zero
.L80277FD4:
/* 1A68B4 80277FD4 12A00006 */  beqz      $s5, .L80277FF0
/* 1A68B8 80277FD8 24020017 */   addiu    $v0, $zero, 0x17
/* 1A68BC 80277FDC 52420001 */  beql      $s2, $v0, .L80277FE4
/* 1A68C0 80277FE0 24120009 */   addiu    $s2, $zero, 0x9
.L80277FE4:
/* 1A68C4 80277FE4 24020019 */  addiu     $v0, $zero, 0x19
/* 1A68C8 80277FE8 52420001 */  beql      $s2, $v0, .L80277FF0
/* 1A68CC 80277FEC 2412000A */   addiu    $s2, $zero, 0xA
.L80277FF0:
/* 1A68D0 80277FF0 24020100 */  addiu     $v0, $zero, 0x100
.L80277FF4:
/* 1A68D4 80277FF4 12C20010 */  beq       $s6, $v0, .L80278038
/* 1A68D8 80277FF8 A2950199 */   sb       $s5, 0x199($s4)
/* 1A68DC 80277FFC 2AC20101 */  slti      $v0, $s6, 0x101
/* 1A68E0 80278000 10400005 */  beqz      $v0, .L80278018
/* 1A68E4 80278004 24020200 */   addiu    $v0, $zero, 0x200
/* 1A68E8 80278008 12C00007 */  beqz      $s6, .L80278028
/* 1A68EC 8027800C 24020100 */   addiu    $v0, $zero, 0x100
/* 1A68F0 80278010 0809E016 */  j         .L80278058
/* 1A68F4 80278014 00000000 */   nop
.L80278018:
/* 1A68F8 80278018 12C2000B */  beq       $s6, $v0, .L80278048
/* 1A68FC 8027801C 24020100 */   addiu    $v0, $zero, 0x100
/* 1A6900 80278020 0809E016 */  j         .L80278058
/* 1A6904 80278024 00000000 */   nop
.L80278028:
/* 1A6908 80278028 0C09C596 */  jal       dispatch_event_player
/* 1A690C 8027802C 0240202D */   daddu    $a0, $s2, $zero
/* 1A6910 80278030 0809E016 */  j         .L80278058
/* 1A6914 80278034 24020100 */   addiu    $v0, $zero, 0x100
.L80278038:
/* 1A6918 80278038 0C09F7A0 */  jal       dispatch_event_partner
/* 1A691C 8027803C 0240202D */   daddu    $a0, $s2, $zero
/* 1A6920 80278040 0809E016 */  j         .L80278058
/* 1A6924 80278044 24020100 */   addiu    $v0, $zero, 0x100
.L80278048:
/* 1A6928 80278048 0260202D */  daddu     $a0, $s3, $zero
/* 1A692C 8027804C 0C09DC58 */  jal       dispatch_event_actor
/* 1A6930 80278050 0240282D */   daddu    $a1, $s2, $zero
/* 1A6934 80278054 24020100 */  addiu     $v0, $zero, 0x100
.L80278058:
/* 1A6938 80278058 16C2000F */  bne       $s6, $v0, .L80278098
/* 1A693C 8027805C 00000000 */   nop
/* 1A6940 80278060 86860180 */  lh        $a2, 0x180($s4)
/* 1A6944 80278064 18C0000C */  blez      $a2, .L80278098
/* 1A6948 80278068 00000000 */   nop
/* 1A694C 8027806C 3C02800E */  lui       $v0, %hi(gBattleStatus)
/* 1A6950 80278070 8C42C070 */  lw        $v0, %lo(gBattleStatus)($v0)
/* 1A6954 80278074 30420020 */  andi      $v0, $v0, 0x20
/* 1A6958 80278078 10400007 */  beqz      $v0, .L80278098
/* 1A695C 8027807C 3C030040 */   lui      $v1, (0x400000 >> 16)
/* 1A6960 80278080 8E620000 */  lw        $v0, 0x0($s3)
/* 1A6964 80278084 00431024 */  and       $v0, $v0, $v1
/* 1A6968 80278088 14400003 */  bnez      $v0, .L80278098
/* 1A696C 8027808C 0260202D */   daddu    $a0, $s3, $zero
/* 1A6970 80278090 0C099895 */  jal       inflict_partner_ko
/* 1A6974 80278094 2405000D */   addiu    $a1, $zero, 0xD
.L80278098:
/* 1A6978 80278098 8E620000 */  lw        $v0, 0x0($s3)
/* 1A697C 8027809C 3C030200 */  lui       $v1, (0x2000000 >> 16)
/* 1A6980 802780A0 00431024 */  and       $v0, $v0, $v1
/* 1A6984 802780A4 1440004C */  bnez      $v0, .L802781D8
/* 1A6988 802780A8 24020100 */   addiu    $v0, $zero, 0x100
/* 1A698C 802780AC 12C2000B */  beq       $s6, $v0, .L802780DC
/* 1A6990 802780B0 2AC20101 */   slti     $v0, $s6, 0x101
/* 1A6994 802780B4 10400005 */  beqz      $v0, .L802780CC
/* 1A6998 802780B8 24020200 */   addiu    $v0, $zero, 0x200
/* 1A699C 802780BC 12C00007 */  beqz      $s6, .L802780DC
/* 1A69A0 802780C0 00000000 */   nop
/* 1A69A4 802780C4 0809E076 */  j         .L802781D8
/* 1A69A8 802780C8 00000000 */   nop
.L802780CC:
/* 1A69AC 802780CC 12C2001B */  beq       $s6, $v0, .L8027813C
/* 1A69B0 802780D0 00000000 */   nop
/* 1A69B4 802780D4 0809E076 */  j         .L802781D8
/* 1A69B8 802780D8 00000000 */   nop
.L802780DC:
/* 1A69BC 802780DC 86870180 */  lh        $a3, 0x180($s4)
/* 1A69C0 802780E0 14E00008 */  bnez      $a3, .L80278104
/* 1A69C4 802780E4 3C032000 */   lui      $v1, (0x20000040 >> 16)
/* 1A69C8 802780E8 16E0003B */  bnez      $s7, .L802781D8
/* 1A69CC 802780EC 00000000 */   nop
/* 1A69D0 802780F0 16A00039 */  bnez      $s5, .L802781D8
/* 1A69D4 802780F4 24020001 */   addiu    $v0, $zero, 0x1
/* 1A69D8 802780F8 AFA20010 */  sw        $v0, 0x10($sp)
/* 1A69DC 802780FC 0809E058 */  j         .L80278160
/* 1A69E0 80278100 2402FFFD */   addiu    $v0, $zero, -0x3
.L80278104:
/* 1A69E4 80278104 8E820188 */  lw        $v0, 0x188($s4)
/* 1A69E8 80278108 34630040 */  ori       $v1, $v1, (0x20000040 & 0xFFFF)
/* 1A69EC 8027810C 00431024 */  and       $v0, $v0, $v1
/* 1A69F0 80278110 10400008 */  beqz      $v0, .L80278134
/* 1A69F4 80278114 24020001 */   addiu    $v0, $zero, 0x1
/* 1A69F8 80278118 AFA20010 */  sw        $v0, 0x10($sp)
/* 1A69FC 8027811C C62C000C */  lwc1      $f12, 0xC($s1)
/* 1A6A00 80278120 C62E0010 */  lwc1      $f14, 0x10($s1)
/* 1A6A04 80278124 0C09996B */  jal       show_next_damage_popup
/* 1A6A08 80278128 8E260014 */   lw       $a2, 0x14($s1)
/* 1A6A0C 8027812C 0809E06F */  j         .L802781BC
/* 1A6A10 80278130 00000000 */   nop
.L80278134:
/* 1A6A14 80278134 0809E06B */  j         .L802781AC
/* 1A6A18 80278138 AFA20010 */   sw       $v0, 0x10($sp)
.L8027813C:
/* 1A6A1C 8027813C 86870180 */  lh        $a3, 0x180($s4)
/* 1A6A20 80278140 14E0000F */  bnez      $a3, .L80278180
/* 1A6A24 80278144 3C032000 */   lui      $v1, (0x20000040 >> 16)
/* 1A6A28 80278148 16E00023 */  bnez      $s7, .L802781D8
/* 1A6A2C 8027814C 00000000 */   nop
/* 1A6A30 80278150 16A00021 */  bnez      $s5, .L802781D8
/* 1A6A34 80278154 24020001 */   addiu    $v0, $zero, 0x1
/* 1A6A38 80278158 AFA20010 */  sw        $v0, 0x10($sp)
/* 1A6A3C 8027815C 24020003 */  addiu     $v0, $zero, 0x3
.L80278160:
/* 1A6A40 80278160 AFA20014 */  sw        $v0, 0x14($sp)
/* 1A6A44 80278164 C62C000C */  lwc1      $f12, 0xC($s1)
/* 1A6A48 80278168 C62E0010 */  lwc1      $f14, 0x10($s1)
/* 1A6A4C 8027816C 8E260014 */  lw        $a2, 0x14($s1)
/* 1A6A50 80278170 0C093BF8 */  jal       func_8024EFE0
/* 1A6A54 80278174 0000382D */   daddu    $a3, $zero, $zero
/* 1A6A58 80278178 0809E076 */  j         .L802781D8
/* 1A6A5C 8027817C 00000000 */   nop
.L80278180:
/* 1A6A60 80278180 8E820188 */  lw        $v0, 0x188($s4)
/* 1A6A64 80278184 34630040 */  ori       $v1, $v1, (0x20000040 & 0xFFFF)
/* 1A6A68 80278188 00431024 */  and       $v0, $v0, $v1
/* 1A6A6C 8027818C 10400007 */  beqz      $v0, .L802781AC
/* 1A6A70 80278190 AFA00010 */   sw       $zero, 0x10($sp)
/* 1A6A74 80278194 C62C000C */  lwc1      $f12, 0xC($s1)
/* 1A6A78 80278198 C62E0010 */  lwc1      $f14, 0x10($s1)
/* 1A6A7C 8027819C 0C09996B */  jal       show_next_damage_popup
/* 1A6A80 802781A0 8E260014 */   lw       $a2, 0x14($s1)
/* 1A6A84 802781A4 0809E06F */  j         .L802781BC
/* 1A6A88 802781A8 00000000 */   nop
.L802781AC:
/* 1A6A8C 802781AC C62C000C */  lwc1      $f12, 0xC($s1)
/* 1A6A90 802781B0 C62E0010 */  lwc1      $f14, 0x10($s1)
/* 1A6A94 802781B4 0C099937 */  jal       show_primary_damage_popup
/* 1A6A98 802781B8 8E260014 */   lw       $a2, 0x14($s1)
.L802781BC:
/* 1A6A9C 802781BC 86820180 */  lh        $v0, 0x180($s4)
/* 1A6AA0 802781C0 AFA20010 */  sw        $v0, 0x10($sp)
/* 1A6AA4 802781C4 8E25000C */  lw        $a1, 0xC($s1)
/* 1A6AA8 802781C8 8E260010 */  lw        $a2, 0x10($s1)
/* 1A6AAC 802781CC 8E270014 */  lw        $a3, 0x14($s1)
/* 1A6AB0 802781D0 0C0999B9 */  jal       show_damage_fx
/* 1A6AB4 802781D4 0260202D */   daddu    $a0, $s3, $zero
.L802781D8:
/* 1A6AB8 802781D8 86820180 */  lh        $v0, 0x180($s4)
/* 1A6ABC 802781DC 1840001F */  blez      $v0, .L8027825C
/* 1A6AC0 802781E0 00000000 */   nop
/* 1A6AC4 802781E4 0260202D */  daddu     $a0, $s3, $zero
/* 1A6AC8 802781E8 0C099C06 */  jal       func_80267018
/* 1A6ACC 802781EC 24050001 */   addiu    $a1, $zero, 0x1
/* 1A6AD0 802781F0 8FA80058 */  lw        $t0, 0x58($sp)
/* 1A6AD4 802781F4 8D0201B0 */  lw        $v0, 0x1B0($t0)
/* 1A6AD8 802781F8 10400008 */  beqz      $v0, .L8027821C
/* 1A6ADC 802781FC 00000000 */   nop
/* 1A6AE0 80278200 C6200014 */  lwc1      $f0, 0x14($s1)
/* 1A6AE4 80278204 E7A00010 */  swc1      $f0, 0x10($sp)
/* 1A6AE8 80278208 8D0401B0 */  lw        $a0, 0x1B0($t0)
/* 1A6AEC 8027820C 8E26000C */  lw        $a2, 0xC($s1)
/* 1A6AF0 80278210 8E270010 */  lw        $a3, 0x10($s1)
/* 1A6AF4 80278214 0C052757 */  jal       sfx_play_sound_at_position
/* 1A6AF8 80278218 0000282D */   daddu    $a1, $zero, $zero
.L8027821C:
/* 1A6AFC 8027821C 8FA80020 */  lw        $t0, 0x20($sp)
/* 1A6B00 80278220 15000005 */  bnez      $t0, .L80278238
/* 1A6B04 80278224 24020003 */   addiu    $v0, $zero, 0x3
/* 1A6B08 80278228 8FA80024 */  lw        $t0, 0x24($sp)
/* 1A6B0C 8027822C 15000002 */  bnez      $t0, .L80278238
/* 1A6B10 80278230 24020005 */   addiu    $v0, $zero, 0x5
/* 1A6B14 80278234 24020002 */  addiu     $v0, $zero, 0x2
.L80278238:
/* 1A6B18 80278238 AFA20010 */  sw        $v0, 0x10($sp)
/* 1A6B1C 8027823C 8E25000C */  lw        $a1, 0xC($s1)
/* 1A6B20 80278240 8E260010 */  lw        $a2, 0x10($s1)
/* 1A6B24 80278244 8E270014 */  lw        $a3, 0x14($s1)
/* 1A6B28 80278248 0C09DC01 */  jal       play_hit_sound
/* 1A6B2C 8027824C 0260202D */   daddu    $a0, $s3, $zero
/* 1A6B30 80278250 86820180 */  lh        $v0, 0x180($s4)
/* 1A6B34 80278254 1C400006 */  bgtz      $v0, .L80278270
/* 1A6B38 80278258 00000000 */   nop
.L8027825C:
/* 1A6B3C 8027825C 16E00004 */  bnez      $s7, .L80278270
/* 1A6B40 80278260 00000000 */   nop
/* 1A6B44 80278264 8FA80028 */  lw        $t0, 0x28($sp)
/* 1A6B48 80278268 11000006 */  beqz      $t0, .L80278284
/* 1A6B4C 8027826C 00000000 */   nop
.L80278270:
/* 1A6B50 80278270 8FA80018 */  lw        $t0, 0x18($sp)
/* 1A6B54 80278274 8D020000 */  lw        $v0, 0x0($t0)
/* 1A6B58 80278278 30422000 */  andi      $v0, $v0, 0x2000
/* 1A6B5C 8027827C 10400008 */  beqz      $v0, .L802782A0
/* 1A6B60 80278280 00000000 */   nop
.L80278284:
/* 1A6B64 80278284 C6200014 */  lwc1      $f0, 0x14($s1)
/* 1A6B68 80278288 2404010C */  addiu     $a0, $zero, 0x10C
/* 1A6B6C 8027828C E7A00010 */  swc1      $f0, 0x10($sp)
/* 1A6B70 80278290 8E26000C */  lw        $a2, 0xC($s1)
/* 1A6B74 80278294 8E270010 */  lw        $a3, 0x10($s1)
/* 1A6B78 80278298 0C052757 */  jal       sfx_play_sound_at_position
/* 1A6B7C 8027829C 0000282D */   daddu    $a1, $zero, $zero
.L802782A0:
/* 1A6B80 802782A0 8E820190 */  lw        $v0, 0x190($s4)
/* 1A6B84 802782A4 30421000 */  andi      $v0, $v0, 0x1000
/* 1A6B88 802782A8 10400018 */  beqz      $v0, .L8027830C
/* 1A6B8C 802782AC 00000000 */   nop
/* 1A6B90 802782B0 12A00016 */  beqz      $s5, .L8027830C
/* 1A6B94 802782B4 00000000 */   nop
/* 1A6B98 802782B8 3C048029 */  lui       $a0, %hi(EVS_PlaySleepHitFX)
/* 1A6B9C 802782BC 248445E0 */  addiu     $a0, $a0, %lo(EVS_PlaySleepHitFX)
/* 1A6BA0 802782C0 2405000A */  addiu     $a1, $zero, 0xA
/* 1A6BA4 802782C4 0C0B0CF8 */  jal       start_script
/* 1A6BA8 802782C8 0000302D */   daddu    $a2, $zero, $zero
/* 1A6BAC 802782CC C620000C */  lwc1      $f0, 0xC($s1)
/* 1A6BB0 802782D0 4600018D */  trunc.w.s $f6, $f0
/* 1A6BB4 802782D4 E4460084 */  swc1      $f6, 0x84($v0)
/* 1A6BB8 802782D8 C6200010 */  lwc1      $f0, 0x10($s1)
/* 1A6BBC 802782DC 4600018D */  trunc.w.s $f6, $f0
/* 1A6BC0 802782E0 E4460088 */  swc1      $f6, 0x88($v0)
/* 1A6BC4 802782E4 C6200014 */  lwc1      $f0, 0x14($s1)
/* 1A6BC8 802782E8 4600018D */  trunc.w.s $f6, $f0
/* 1A6BCC 802782EC E446008C */  swc1      $f6, 0x8C($v0)
/* 1A6BD0 802782F0 C6200014 */  lwc1      $f0, 0x14($s1)
/* 1A6BD4 802782F4 24042031 */  addiu     $a0, $zero, 0x2031
/* 1A6BD8 802782F8 E7A00010 */  swc1      $f0, 0x10($sp)
/* 1A6BDC 802782FC 8E26000C */  lw        $a2, 0xC($s1)
/* 1A6BE0 80278300 8E270010 */  lw        $a3, 0x10($s1)
/* 1A6BE4 80278304 0C052757 */  jal       sfx_play_sound_at_position
/* 1A6BE8 80278308 0000282D */   daddu    $a1, $zero, $zero
.L8027830C:
/* 1A6BEC 8027830C 8E820190 */  lw        $v0, 0x190($s4)
/* 1A6BF0 80278310 3C030004 */  lui       $v1, (0x40000 >> 16)
/* 1A6BF4 80278314 00431024 */  and       $v0, $v0, $v1
/* 1A6BF8 80278318 10400018 */  beqz      $v0, .L8027837C
/* 1A6BFC 8027831C 00000000 */   nop
/* 1A6C00 80278320 12A00016 */  beqz      $s5, .L8027837C
/* 1A6C04 80278324 00000000 */   nop
/* 1A6C08 80278328 3C048029 */  lui       $a0, %hi(EVS_PlayDizzyHitFX)
/* 1A6C0C 8027832C 248445FC */  addiu     $a0, $a0, %lo(EVS_PlayDizzyHitFX)
/* 1A6C10 80278330 2405000A */  addiu     $a1, $zero, 0xA
/* 1A6C14 80278334 0C0B0CF8 */  jal       start_script
/* 1A6C18 80278338 0000302D */   daddu    $a2, $zero, $zero
/* 1A6C1C 8027833C C620000C */  lwc1      $f0, 0xC($s1)
/* 1A6C20 80278340 4600018D */  trunc.w.s $f6, $f0
/* 1A6C24 80278344 E4460084 */  swc1      $f6, 0x84($v0)
/* 1A6C28 80278348 C6200010 */  lwc1      $f0, 0x10($s1)
/* 1A6C2C 8027834C 4600018D */  trunc.w.s $f6, $f0
/* 1A6C30 80278350 E4460088 */  swc1      $f6, 0x88($v0)
/* 1A6C34 80278354 C6200014 */  lwc1      $f0, 0x14($s1)
/* 1A6C38 80278358 4600018D */  trunc.w.s $f6, $f0
/* 1A6C3C 8027835C E446008C */  swc1      $f6, 0x8C($v0)
/* 1A6C40 80278360 C6200014 */  lwc1      $f0, 0x14($s1)
/* 1A6C44 80278364 24042032 */  addiu     $a0, $zero, 0x2032
/* 1A6C48 80278368 E7A00010 */  swc1      $f0, 0x10($sp)
/* 1A6C4C 8027836C 8E26000C */  lw        $a2, 0xC($s1)
/* 1A6C50 80278370 8E270010 */  lw        $a3, 0x10($s1)
/* 1A6C54 80278374 0C052757 */  jal       sfx_play_sound_at_position
/* 1A6C58 80278378 0000282D */   daddu    $a1, $zero, $zero
.L8027837C:
/* 1A6C5C 8027837C 8E820190 */  lw        $v0, 0x190($s4)
/* 1A6C60 80278380 3C030001 */  lui       $v1, (0x10000 >> 16)
/* 1A6C64 80278384 00431024 */  and       $v0, $v0, $v1
/* 1A6C68 80278388 10400018 */  beqz      $v0, .L802783EC
/* 1A6C6C 8027838C 00000000 */   nop
/* 1A6C70 80278390 12A00016 */  beqz      $s5, .L802783EC
/* 1A6C74 80278394 00000000 */   nop
/* 1A6C78 80278398 3C048029 */  lui       $a0, %hi(EVS_PlayParalyzeHitFX)
/* 1A6C7C 8027839C 24844618 */  addiu     $a0, $a0, %lo(EVS_PlayParalyzeHitFX)
/* 1A6C80 802783A0 2405000A */  addiu     $a1, $zero, 0xA
/* 1A6C84 802783A4 0C0B0CF8 */  jal       start_script
/* 1A6C88 802783A8 0000302D */   daddu    $a2, $zero, $zero
/* 1A6C8C 802783AC C620000C */  lwc1      $f0, 0xC($s1)
/* 1A6C90 802783B0 4600018D */  trunc.w.s $f6, $f0
/* 1A6C94 802783B4 E4460084 */  swc1      $f6, 0x84($v0)
/* 1A6C98 802783B8 C6200010 */  lwc1      $f0, 0x10($s1)
/* 1A6C9C 802783BC 4600018D */  trunc.w.s $f6, $f0
/* 1A6CA0 802783C0 E4460088 */  swc1      $f6, 0x88($v0)
/* 1A6CA4 802783C4 C6200014 */  lwc1      $f0, 0x14($s1)
/* 1A6CA8 802783C8 4600018D */  trunc.w.s $f6, $f0
/* 1A6CAC 802783CC E446008C */  swc1      $f6, 0x8C($v0)
/* 1A6CB0 802783D0 C6200014 */  lwc1      $f0, 0x14($s1)
/* 1A6CB4 802783D4 24042032 */  addiu     $a0, $zero, 0x2032
/* 1A6CB8 802783D8 E7A00010 */  swc1      $f0, 0x10($sp)
/* 1A6CBC 802783DC 8E26000C */  lw        $a2, 0xC($s1)
/* 1A6CC0 802783E0 8E270010 */  lw        $a3, 0x10($s1)
/* 1A6CC4 802783E4 0C052757 */  jal       sfx_play_sound_at_position
/* 1A6CC8 802783E8 0000282D */   daddu    $a1, $zero, $zero
.L802783EC:
/* 1A6CCC 802783EC 8E820190 */  lw        $v0, 0x190($s4)
/* 1A6CD0 802783F0 3C030002 */  lui       $v1, (0x20000 >> 16)
/* 1A6CD4 802783F4 00431024 */  and       $v0, $v0, $v1
/* 1A6CD8 802783F8 10400018 */  beqz      $v0, .L8027845C
/* 1A6CDC 802783FC 00000000 */   nop
/* 1A6CE0 80278400 12A00016 */  beqz      $s5, .L8027845C
/* 1A6CE4 80278404 00000000 */   nop
/* 1A6CE8 80278408 3C048029 */  lui       $a0, %hi(EVS_PlayPoisonHitFX)
/* 1A6CEC 8027840C 24844634 */  addiu     $a0, $a0, %lo(EVS_PlayPoisonHitFX)
/* 1A6CF0 80278410 2405000A */  addiu     $a1, $zero, 0xA
/* 1A6CF4 80278414 0C0B0CF8 */  jal       start_script
/* 1A6CF8 80278418 0000302D */   daddu    $a2, $zero, $zero
/* 1A6CFC 8027841C C620000C */  lwc1      $f0, 0xC($s1)
/* 1A6D00 80278420 4600018D */  trunc.w.s $f6, $f0
/* 1A6D04 80278424 E4460084 */  swc1      $f6, 0x84($v0)
/* 1A6D08 80278428 C6200010 */  lwc1      $f0, 0x10($s1)
/* 1A6D0C 8027842C 4600018D */  trunc.w.s $f6, $f0
/* 1A6D10 80278430 E4460088 */  swc1      $f6, 0x88($v0)
/* 1A6D14 80278434 C6200014 */  lwc1      $f0, 0x14($s1)
/* 1A6D18 80278438 4600018D */  trunc.w.s $f6, $f0
/* 1A6D1C 8027843C E446008C */  swc1      $f6, 0x8C($v0)
/* 1A6D20 80278440 C6200014 */  lwc1      $f0, 0x14($s1)
/* 1A6D24 80278444 24042032 */  addiu     $a0, $zero, 0x2032
/* 1A6D28 80278448 E7A00010 */  swc1      $f0, 0x10($sp)
/* 1A6D2C 8027844C 8E26000C */  lw        $a2, 0xC($s1)
/* 1A6D30 80278450 8E270010 */  lw        $a3, 0x10($s1)
/* 1A6D34 80278454 0C052757 */  jal       sfx_play_sound_at_position
/* 1A6D38 80278458 0000282D */   daddu    $a1, $zero, $zero
.L8027845C:
/* 1A6D3C 8027845C 8E820190 */  lw        $v0, 0x190($s4)
/* 1A6D40 80278460 3C030020 */  lui       $v1, (0x200000 >> 16)
/* 1A6D44 80278464 00431024 */  and       $v0, $v0, $v1
/* 1A6D48 80278468 10400018 */  beqz      $v0, .L802784CC
/* 1A6D4C 8027846C 00000000 */   nop
/* 1A6D50 80278470 12A00016 */  beqz      $s5, .L802784CC
/* 1A6D54 80278474 00000000 */   nop
/* 1A6D58 80278478 3C048029 */  lui       $a0, %hi(EVS_PlayStopHitFX)
/* 1A6D5C 8027847C 24844650 */  addiu     $a0, $a0, %lo(EVS_PlayStopHitFX)
/* 1A6D60 80278480 2405000A */  addiu     $a1, $zero, 0xA
/* 1A6D64 80278484 0C0B0CF8 */  jal       start_script
/* 1A6D68 80278488 0000302D */   daddu    $a2, $zero, $zero
/* 1A6D6C 8027848C C620000C */  lwc1      $f0, 0xC($s1)
/* 1A6D70 80278490 4600018D */  trunc.w.s $f6, $f0
/* 1A6D74 80278494 E4460084 */  swc1      $f6, 0x84($v0)
/* 1A6D78 80278498 C6200010 */  lwc1      $f0, 0x10($s1)
/* 1A6D7C 8027849C 4600018D */  trunc.w.s $f6, $f0
/* 1A6D80 802784A0 E4460088 */  swc1      $f6, 0x88($v0)
/* 1A6D84 802784A4 C6200014 */  lwc1      $f0, 0x14($s1)
/* 1A6D88 802784A8 4600018D */  trunc.w.s $f6, $f0
/* 1A6D8C 802784AC E446008C */  swc1      $f6, 0x8C($v0)
/* 1A6D90 802784B0 C6200014 */  lwc1      $f0, 0x14($s1)
/* 1A6D94 802784B4 24042032 */  addiu     $a0, $zero, 0x2032
/* 1A6D98 802784B8 E7A00010 */  swc1      $f0, 0x10($sp)
/* 1A6D9C 802784BC 8E26000C */  lw        $a2, 0xC($s1)
/* 1A6DA0 802784C0 8E270010 */  lw        $a3, 0x10($s1)
/* 1A6DA4 802784C4 0C052757 */  jal       sfx_play_sound_at_position
/* 1A6DA8 802784C8 0000282D */   daddu    $a1, $zero, $zero
.L802784CC:
/* 1A6DAC 802784CC 8E820190 */  lw        $v0, 0x190($s4)
/* 1A6DB0 802784D0 30424000 */  andi      $v0, $v0, 0x4000
/* 1A6DB4 802784D4 10400019 */  beqz      $v0, .L8027853C
/* 1A6DB8 802784D8 00000000 */   nop
/* 1A6DBC 802784DC 12A00017 */  beqz      $s5, .L8027853C
/* 1A6DC0 802784E0 00000000 */   nop
/* 1A6DC4 802784E4 3C048029 */  lui       $a0, %hi(EVS_PlayFreezeHitFX)
/* 1A6DC8 802784E8 2484466C */  addiu     $a0, $a0, %lo(EVS_PlayFreezeHitFX)
/* 1A6DCC 802784EC 2405000A */  addiu     $a1, $zero, 0xA
/* 1A6DD0 802784F0 0C0B0CF8 */  jal       start_script
/* 1A6DD4 802784F4 0000302D */   daddu    $a2, $zero, $zero
/* 1A6DD8 802784F8 C620000C */  lwc1      $f0, 0xC($s1)
/* 1A6DDC 802784FC 4600018D */  trunc.w.s $f6, $f0
/* 1A6DE0 80278500 E4460084 */  swc1      $f6, 0x84($v0)
/* 1A6DE4 80278504 C6200010 */  lwc1      $f0, 0x10($s1)
/* 1A6DE8 80278508 4600018D */  trunc.w.s $f6, $f0
/* 1A6DEC 8027850C E4460088 */  swc1      $f6, 0x88($v0)
/* 1A6DF0 80278510 C6200014 */  lwc1      $f0, 0x14($s1)
/* 1A6DF4 80278514 AC530090 */  sw        $s3, 0x90($v0)
/* 1A6DF8 80278518 4600018D */  trunc.w.s $f6, $f0
/* 1A6DFC 8027851C E446008C */  swc1      $f6, 0x8C($v0)
/* 1A6E00 80278520 C6200014 */  lwc1      $f0, 0x14($s1)
/* 1A6E04 80278524 240400EB */  addiu     $a0, $zero, 0xEB
/* 1A6E08 80278528 E7A00010 */  swc1      $f0, 0x10($sp)
/* 1A6E0C 8027852C 8E26000C */  lw        $a2, 0xC($s1)
/* 1A6E10 80278530 8E270010 */  lw        $a3, 0x10($s1)
/* 1A6E14 80278534 0C052757 */  jal       sfx_play_sound_at_position
/* 1A6E18 80278538 0000282D */   daddu    $a1, $zero, $zero
.L8027853C:
/* 1A6E1C 8027853C 8E820190 */  lw        $v0, 0x190($s4)
/* 1A6E20 80278540 3C030008 */  lui       $v1, (0x80000 >> 16)
/* 1A6E24 80278544 00431024 */  and       $v0, $v0, $v1
/* 1A6E28 80278548 10400019 */  beqz      $v0, .L802785B0
/* 1A6E2C 8027854C 00000000 */   nop
/* 1A6E30 80278550 12A00017 */  beqz      $s5, .L802785B0
/* 1A6E34 80278554 00000000 */   nop
/* 1A6E38 80278558 3C048029 */  lui       $a0, %hi(EVS_PlayShrinkHitFX)
/* 1A6E3C 8027855C 248446B8 */  addiu     $a0, $a0, %lo(EVS_PlayShrinkHitFX)
/* 1A6E40 80278560 2405000A */  addiu     $a1, $zero, 0xA
/* 1A6E44 80278564 0C0B0CF8 */  jal       start_script
/* 1A6E48 80278568 0000302D */   daddu    $a2, $zero, $zero
/* 1A6E4C 8027856C C620000C */  lwc1      $f0, 0xC($s1)
/* 1A6E50 80278570 4600018D */  trunc.w.s $f6, $f0
/* 1A6E54 80278574 E4460084 */  swc1      $f6, 0x84($v0)
/* 1A6E58 80278578 C6200010 */  lwc1      $f0, 0x10($s1)
/* 1A6E5C 8027857C 4600018D */  trunc.w.s $f6, $f0
/* 1A6E60 80278580 E4460088 */  swc1      $f6, 0x88($v0)
/* 1A6E64 80278584 C6200014 */  lwc1      $f0, 0x14($s1)
/* 1A6E68 80278588 AC530090 */  sw        $s3, 0x90($v0)
/* 1A6E6C 8027858C 4600018D */  trunc.w.s $f6, $f0
/* 1A6E70 80278590 E446008C */  swc1      $f6, 0x8C($v0)
/* 1A6E74 80278594 C6200014 */  lwc1      $f0, 0x14($s1)
/* 1A6E78 80278598 24042032 */  addiu     $a0, $zero, 0x2032
/* 1A6E7C 8027859C E7A00010 */  swc1      $f0, 0x10($sp)
/* 1A6E80 802785A0 8E26000C */  lw        $a2, 0xC($s1)
/* 1A6E84 802785A4 8E270010 */  lw        $a3, 0x10($s1)
/* 1A6E88 802785A8 0C052757 */  jal       sfx_play_sound_at_position
/* 1A6E8C 802785AC 0000282D */   daddu    $a1, $zero, $zero
.L802785B0:
/* 1A6E90 802785B0 8E820188 */  lw        $v0, 0x188($s4)
/* 1A6E94 802785B4 30420040 */  andi      $v0, $v0, 0x40
/* 1A6E98 802785B8 1040000A */  beqz      $v0, .L802785E4
/* 1A6E9C 802785BC 24020093 */   addiu    $v0, $zero, 0x93
/* 1A6EA0 802785C0 92630136 */  lbu       $v1, 0x136($s3)
/* 1A6EA4 802785C4 14620007 */  bne       $v1, $v0, .L802785E4
/* 1A6EA8 802785C8 24040165 */   addiu    $a0, $zero, 0x165
/* 1A6EAC 802785CC C6200014 */  lwc1      $f0, 0x14($s1)
/* 1A6EB0 802785D0 E7A00010 */  swc1      $f0, 0x10($sp)
/* 1A6EB4 802785D4 8E26000C */  lw        $a2, 0xC($s1)
/* 1A6EB8 802785D8 8E270010 */  lw        $a3, 0x10($s1)
/* 1A6EBC 802785DC 0C052757 */  jal       sfx_play_sound_at_position
/* 1A6EC0 802785E0 0000282D */   daddu    $a1, $zero, $zero
.L802785E4:
/* 1A6EC4 802785E4 0C099AB7 */  jal       show_actor_health_bar
/* 1A6EC8 802785E8 0260202D */   daddu    $a0, $s3, $zero
/* 1A6ECC 802785EC 8FA80058 */  lw        $t0, 0x58($sp)
/* 1A6ED0 802785F0 81020212 */  lb        $v0, 0x212($t0)
/* 1A6ED4 802785F4 2403000B */  addiu     $v1, $zero, 0xB
/* 1A6ED8 802785F8 10430029 */  beq       $v0, $v1, .L802786A0
/* 1A6EDC 802785FC 00000000 */   nop
/* 1A6EE0 80278600 82620212 */  lb        $v0, 0x212($s3)
/* 1A6EE4 80278604 10430006 */  beq       $v0, $v1, .L80278620
/* 1A6EE8 80278608 00000000 */   nop
/* 1A6EEC 8027860C 8FA80018 */  lw        $t0, 0x18($sp)
/* 1A6EF0 80278610 8D02007C */  lw        $v0, 0x7C($t0)
/* 1A6EF4 80278614 30420080 */  andi      $v0, $v0, 0x80
/* 1A6EF8 80278618 10400021 */  beqz      $v0, .L802786A0
/* 1A6EFC 8027861C 00000000 */   nop
.L80278620:
/* 1A6F00 80278620 8E820188 */  lw        $v0, 0x188($s4)
/* 1A6F04 80278624 3C031000 */  lui       $v1, (0x10000000 >> 16)
/* 1A6F08 80278628 00431024 */  and       $v0, $v0, $v1
/* 1A6F0C 8027862C 1440001C */  bnez      $v0, .L802786A0
/* 1A6F10 80278630 00000000 */   nop
/* 1A6F14 80278634 8E82018C */  lw        $v0, 0x18C($s4)
/* 1A6F18 80278638 30420008 */  andi      $v0, $v0, 0x8
/* 1A6F1C 8027863C 14400018 */  bnez      $v0, .L802786A0
/* 1A6F20 80278640 2402000E */   addiu    $v0, $zero, 0xE
/* 1A6F24 80278644 8FA80058 */  lw        $t0, 0x58($sp)
/* 1A6F28 80278648 81030218 */  lb        $v1, 0x218($t0)
/* 1A6F2C 8027864C 10620014 */  beq       $v1, $v0, .L802786A0
/* 1A6F30 80278650 00000000 */   nop
/* 1A6F34 80278654 0C09DBD4 */  jal       has_enchanted_part
/* 1A6F38 80278658 0100202D */   daddu    $a0, $t0, $zero
/* 1A6F3C 8027865C 14400010 */  bnez      $v0, .L802786A0
/* 1A6F40 80278660 2404037B */   addiu    $a0, $zero, 0x37B
/* 1A6F44 80278664 C6200014 */  lwc1      $f0, 0x14($s1)
/* 1A6F48 80278668 E7A00010 */  swc1      $f0, 0x10($sp)
/* 1A6F4C 8027866C 8E26000C */  lw        $a2, 0xC($s1)
/* 1A6F50 80278670 8E270010 */  lw        $a3, 0x10($s1)
/* 1A6F54 80278674 0C052757 */  jal       sfx_play_sound_at_position
/* 1A6F58 80278678 0000282D */   daddu    $a1, $zero, $zero
/* 1A6F5C 8027867C 8FA40058 */  lw        $a0, 0x58($sp)
/* 1A6F60 80278680 0C09451D */  jal       apply_shock_effect
/* 1A6F64 80278684 00000000 */   nop
/* 1A6F68 80278688 24050001 */  addiu     $a1, $zero, 0x1
/* 1A6F6C 8027868C 8FA40058 */  lw        $a0, 0x58($sp)
/* 1A6F70 80278690 0C09E245 */  jal       dispatch_damage_event_actor_1
/* 1A6F74 80278694 2406002F */   addiu    $a2, $zero, 0x2F
/* 1A6F78 80278698 0809E1A9 */  j         .L802786A4
/* 1A6F7C 8027869C 2402FFFF */   addiu    $v0, $zero, -0x1
.L802786A0:
/* 1A6F80 802786A0 8FA2001C */  lw        $v0, 0x1C($sp)
.L802786A4:
/* 1A6F84 802786A4 8FBF0054 */  lw        $ra, 0x54($sp)
/* 1A6F88 802786A8 8FBE0050 */  lw        $fp, 0x50($sp)
/* 1A6F8C 802786AC 8FB7004C */  lw        $s7, 0x4C($sp)
/* 1A6F90 802786B0 8FB60048 */  lw        $s6, 0x48($sp)
/* 1A6F94 802786B4 8FB50044 */  lw        $s5, 0x44($sp)
/* 1A6F98 802786B8 8FB40040 */  lw        $s4, 0x40($sp)
/* 1A6F9C 802786BC 8FB3003C */  lw        $s3, 0x3C($sp)
/* 1A6FA0 802786C0 8FB20038 */  lw        $s2, 0x38($sp)
/* 1A6FA4 802786C4 8FB10034 */  lw        $s1, 0x34($sp)
/* 1A6FA8 802786C8 8FB00030 */  lw        $s0, 0x30($sp)
/* 1A6FAC 802786CC 03E00008 */  jr        $ra
/* 1A6FB0 802786D0 27BD0058 */   addiu    $sp, $sp, 0x58

### DECOMPILED C INSTRUCTIONS:

HitResult calc_enemy_damage_target(Actor* attacker) {
    BattleStatus* battleStatus = &gBattleStatus;
    ActorState* state = &attacker->state;
    s32 targetID = battleStatus->currentTargetID;
    s32 targetPartIdx = battleStatus->currentTargetPart;
    s32 actorClass;
    Actor* target;
    ActorPart* targetPart;
    s32 hitResult;
    s32 one = TRUE;
    s32 statusInflicted = FALSE;
    s32 statusInflicted2 = FALSE;
    s32 isFire = FALSE;
    s32 isWater = FALSE;
    s32 isIce = FALSE;
    s32 isElectric = FALSE;
    s32 madeElectricContact = FALSE;
    s32 isPlayer;
    s32 defense;
    s32 event;
    s32 damage;
    Evt* script;

    battleStatus->wasStatusInflicted = FALSE;
    battleStatus->lastAttackDamage = 0;

    battleStatus->attackerActorID = attacker->actorID;
    battleStatus->currentTargetID2 = targetID;
    battleStatus->currentTargetPart2 = targetPartIdx;

    target = get_actor(targetID);
    if (target == NULL) {
        return HIT_RESULT_HIT;
    }

    targetPart = get_actor_part(target, targetPartIdx);
    ASSERT(targetPart != NULL);

    actorClass = targetID & ACTOR_CLASS_MASK;
    target->lastDamageTaken = 0;

    switch (actorClass) {
        case ACTOR_CLASS_PLAYER:
            target->currentHP = gPlayerData.curHP;
            break;
        case ACTOR_CLASS_PARTNER:
            target->currentHP = 127;
            break;
        case ACTOR_CLASS_ENEMY:
            break;
    }

    // handle defender status

    if (targetPart->eventFlags & ACTOR_EVENT_FLAG_ILLUSORY) {
        return HIT_RESULT_MISS;
    }

    if (target->transparentStatus == STATUS_KEY_TRANSPARENT
        || targetPart->eventFlags & ACTOR_EVENT_FLAG_800
        && !(battleStatus->currentAttackElement & DAMAGE_TYPE_QUAKE)
    ) {
        return HIT_RESULT_MISS;
    }

    if (target->stoneStatus == STATUS_KEY_STONE) {
        show_immune_bonk(state->goalPos.x, state->goalPos.y, state->goalPos.z, 0, 1, -1);
        show_next_damage_popup(state->goalPos.x, state->goalPos.y, state->goalPos.z, 0, 0);
        play_hit_sound(attacker, state->goalPos.x, state->goalPos.y, state->goalPos.z, 0);
        dispatch_event_general(target, EVENT_IMMUNE);
        return HIT_RESULT_HIT;
    }

    // handle attack element

    if (battleStatus->currentAttackElement & DAMAGE_TYPE_BLAST) {
        if (!(battleStatus->currentAttackElement & DAMAGE_TYPE_NO_CONTACT)
            && (targetPart->eventFlags & ACTOR_EVENT_FLAG_EXPLODE_ON_IGNITION)
        ) {
            do {
                play_hit_sound(attacker, state->goalPos.x, state->goalPos.y, state->goalPos.z, 3);
            } while (0); // TODO required to match
            dispatch_event_general(target, EVENT_EXPLODE_TRIGGER);
            return HIT_RESULT_BACKFIRE;
        }
    }
    if ((battleStatus->currentAttackElement & DAMAGE_TYPE_QUAKE) && (target->flags & ACTOR_FLAG_FLYING)) {
        play_hit_sound(attacker, state->goalPos.x, state->goalPos.y, state->goalPos.z, 1);
        return HIT_RESULT_NO_DAMAGE;
    }
    if (battleStatus->currentAttackElement & DAMAGE_TYPE_FIRE) {
        fx_ring_blast(0, state->goalPos.x, state->goalPos.y, state->goalPos.z + 5.0f, 1.0f, 24);
        isFire = TRUE;
    }
    if (battleStatus->currentAttackElement & DAMAGE_TYPE_SHOCK) {
        apply_shock_effect(target);
        isElectric = TRUE;
    }
    if (battleStatus->currentAttackElement & DAMAGE_TYPE_WATER) {
        fx_water_splash(0, state->goalPos.x, state->goalPos.y, state->goalPos.z + 5.0f, 1.0f, 24);
        isWater = TRUE;
    }
    if (battleStatus->currentAttackElement & DAMAGE_TYPE_ICE) {
        fx_big_snowflakes(0, state->goalPos.x, state->goalPos.y, state->goalPos.z + 5.0f);
        isIce = TRUE;
    }

    if (!(attacker->staticStatus == STATUS_KEY_STATIC)
        && ((target->staticStatus == STATUS_KEY_STATIC) || (targetPart->eventFlags & ACTOR_EVENT_FLAG_ELECTRIFIED))
        && !(battleStatus->currentAttackElement & (DAMAGE_TYPE_SHOCK | DAMAGE_TYPE_NO_CONTACT))
        && !(battleStatus->currentAttackEventSuppression & SUPPRESS_EVENT_SHOCK_CONTACT)
        && !has_enchanted_part(attacker)) // enchanted attacks ignore electrified defenders
    {
        madeElectricContact = TRUE;
        gBattleStatus.flags1 |= BS_FLAGS1_SP_EVT_ACTIVE;
    }

    // begin calulating damage

    gBattleStatus.flags1 &= ~BS_FLAGS1_ATK_BLOCKED;

    defense = get_defense(target, targetPart->defenseTable, battleStatus->currentAttackElement);

    if (!(battleStatus->currentAttackElement & DAMAGE_TYPE_IGNORE_DEFENSE)) {
        defense += target->defenseBoost;

        if (actorClass == ACTOR_CLASS_PLAYER) {
            if (battleStatus->waterBlockTurnsLeft > 0) {
                if ((battleStatus->currentAttackElement & (DAMAGE_TYPE_BLAST | DAMAGE_TYPE_FIRE))) {
                    defense += 2;
                } else {
                    defense += 1;
                }
            }

            if (gBattleStatus.flags1 & BS_FLAGS1_PLAYER_DEFENDING) {
                defense += 1;
            }
        }
    }

    damage = battleStatus->currentAttackDamage;

    switch (actorClass) {
        case ACTOR_CLASS_PLAYER:
            damage -= battleStatus->merleeDefenseBoost;
            break;
        case ACTOR_CLASS_PARTNER:
        case ACTOR_CLASS_ENEMY:
            break;
    }

    damage += attacker->attackBoost;

    if (attacker->chillOutTurns != 0) {
        damage -= attacker->chillOutAmount;
    }

    if (attacker->debuff == STATUS_KEY_SHRINK) {
        if (damage > 0) {
            damage /= 2;
        }
    }

    if (damage > 99) {
        damage = 99;
    }
    if (damage < 1) {
        defense = 0;
    }

    target->hpChangeCounter = 0;
    damage -= defense;

    isPlayer = actorClass == ACTOR_CLASS_PLAYER;
    if (isPlayer) {
        if (player_team_is_ability_active(target, ABILITY_FIRE_SHIELD)) {
            if (battleStatus->currentAttackElement & DAMAGE_TYPE_FIRE) {
                damage--;
            }
        }

        damage -= player_team_is_ability_active(target, ABILITY_DEFEND_PLUS);
        damage -= player_team_is_ability_active(target, ABILITY_P_DOWN_D_UP);
        damage += player_team_is_ability_active(target, ABILITY_P_UP_D_DOWN);

        if (target->currentHP <= 5) {
            if (player_team_is_ability_active(target, ABILITY_LAST_STAND)) {
                damage /= 2;
            }
        }
    }

    switch (actorClass) {
        case ACTOR_CLASS_PLAYER:
            // TODO figure out how to better write target->debuff >= STATUS_KEY_POISON
            if ((target->debuff == 0 || target->debuff >= STATUS_KEY_POISON) && (target->stoneStatus == 0) && !(battleStatus->currentAttackElement & DAMAGE_TYPE_UNBLOCKABLE)) {
                s32 blocked;

                if (player_team_is_ability_active(target, ABILITY_BERSERKER)) {
                    blocked = rand_int(1);
                } else {
                    blocked = check_block_input(BUTTON_A);
                }

                if (blocked) {
                    damage--;
                    damage -= player_team_is_ability_active(target, ABILITY_DAMAGE_DODGE);
                    sfx_play_sound_at_position(SOUND_231, SOUND_SPACE_MODE_0, state->goalPos.x, state->goalPos.y, state->goalPos.z);
                    show_action_rating(ACTION_RATING_NICE, target, state->goalPos.x, state->goalPos.y, state->goalPos.z);
                    gBattleStatus.flags1 |= BS_FLAGS1_ATK_BLOCKED;
                    break;
                }
                func_80266970(target);
            }
            break;
        case ACTOR_CLASS_PARTNER:
            if (target->stoneStatus == 0) {
                if (target->koStatus == 0 && !(battleStatus->currentAttackElement & DAMAGE_TYPE_UNBLOCKABLE)) {
                    if (check_block_input(BUTTON_A)) {
                        damage = 0;
                        sfx_play_sound_at_position(SOUND_231, SOUND_SPACE_MODE_0, state->goalPos.x, state->goalPos.y, state->goalPos.z);
                        show_action_rating(ACTION_RATING_NICE, target, state->goalPos.x, state->goalPos.y, state->goalPos.z);
                        gBattleStatus.flags1 |= BS_FLAGS1_ATK_BLOCKED;
                        break;
                    }
                    func_80266970(target);
                }
            }
            break;
    }

    if (gBattleStatus.flags1 & BS_FLAGS1_SP_EVT_ACTIVE) {
        func_80266970(target);
    }

    // deal damage and determine resulting battle event

    event = EVENT_HIT_COMBO;
    if (damage < 1) {
        target->hpChangeCounter = 0;
        if (!(battleStatus->currentAttackElement & DAMAGE_TYPE_STATUS_ALWAYS_HITS)) {
            hitResult = HIT_RESULT_NO_DAMAGE;
            event = EVENT_ZERO_DAMAGE;
        } else {
            hitResult = HIT_RESULT_NO_DAMAGE;
            event = EVENT_ZERO_DAMAGE;
            if (target->currentHP < 1) {
                event = EVENT_DEATH;
            }
        }
        battleStatus->lastAttackDamage = 0;
    } else {
        target->damageCounter += damage;
        target->hpChangeCounter -= damage;
        battleStatus->lastAttackDamage = 0;
        hitResult = HIT_RESULT_HIT;
        if (!(targetPart->flags & ACTOR_PART_FLAG_2000)
            && !(gBattleStatus.flags1 & BS_FLAGS1_TUTORIAL_BATTLE)
        ) {
            if (!(target->flags & ACTOR_FLAG_NO_DMG_APPLY)) {
                target->currentHP -= damage;
            }

            if (target->currentHP < 1) {
                target->currentHP = 0;
                event = EVENT_DEATH;
            }
        }
        battleStatus->lastAttackDamage += damage;
        target->lastDamageTaken = battleStatus->lastAttackDamage;
        target->hpChangeCounter = 0;

        if (actorClass == ACTOR_CLASS_PLAYER) {
            battleStatus->damageTaken += damage;
            gPlayerData.curHP = target->currentHP;
        }
    }

    if (gBattleStatus.flags1 & BS_FLAGS1_SP_EVT_ACTIVE) {
        if (event == EVENT_HIT_COMBO) {
            event = EVENT_HIT;
        }
        if (event == EVENT_ZERO_DAMAGE) {
            event = EVENT_IMMUNE;
        }
        if (target->currentHP < 1 && event == EVENT_IMMUNE) {
            event = EVENT_DEATH;
        }
    } else if (event == EVENT_DEATH) {
        event = EVENT_HIT_COMBO;
    }

    if (!(gBattleStatus.flags1 & BS_FLAGS1_SP_EVT_ACTIVE)) {
        clear_part_pal_adjustment(targetPart);
    }

    if ((gBattleStatus.flags1 & BS_FLAGS1_SP_EVT_ACTIVE)
        && (battleStatus->currentAttackElement & (DAMAGE_TYPE_POW | DAMAGE_TYPE_QUAKE | DAMAGE_TYPE_JUMP))
        && (targetPart->eventFlags & ACTOR_EVENT_FLAG_FLIPABLE)
    ) {
        if (event == EVENT_HIT) {
            event = EVENT_FLIP_TRIGGER;
        }
        if (event == EVENT_IMMUNE) {
            event = EVENT_FLIP_TRIGGER;
        }
    }

    if (!(gBattleStatus.flags1 & BS_FLAGS1_SP_EVT_ACTIVE)
        && (battleStatus->currentAttackElement & (DAMAGE_TYPE_POW | DAMAGE_TYPE_QUAKE | DAMAGE_TYPE_JUMP))
        && (targetPart->eventFlags & ACTOR_EVENT_FLAG_FLIPABLE)
    ) {
        if (event == EVENT_HIT_COMBO) {
            event = EVENT_FLIP_TRIGGER;
        }
        if (event == EVENT_ZERO_DAMAGE) {
            event = EVENT_FLIP_TRIGGER;
        }
    }

    if ((gBattleStatus.flags1 & BS_FLAGS1_SP_EVT_ACTIVE)
        && (battleStatus->currentAttackElement & (DAMAGE_TYPE_FIRE | DAMAGE_TYPE_BLAST | DAMAGE_TYPE_4000))
    ) {
        if (event == EVENT_HIT) {
            event = EVENT_BURN_HIT;
        }
        if (event == EVENT_DEATH) {
            event = EVENT_FIRE_DEATH;
        }
        isFire = TRUE;
    }

    if (gBattleStatus.flags1 & BS_FLAGS1_ATK_BLOCKED) {
        if (event == EVENT_HIT_COMBO) {
            event = EVENT_18;
        }
        if (event == EVENT_HIT) {
            event = EVENT_BLOCK;
        }
        if (event == EVENT_ZERO_DAMAGE) {
            event = EVENT_18;
        }
        if (event == EVENT_IMMUNE) {
            event = EVENT_BLOCK;
        }
        if (event == EVENT_BURN_HIT) {
            event = EVENT_BLOCK;
        }
    }

    // try inflicting status effect

    if (gBattleStatus.flags1 & BS_FLAGS1_SP_EVT_ACTIVE
        && battleStatus->lastAttackDamage >= 0
        && event != EVENT_DEATH
        && event != EVENT_SPIN_SMASH_DEATH
        && event != EVENT_EXPLODE_TRIGGER
        && !(gBattleStatus.flags1 & BS_FLAGS1_ATK_BLOCKED)
        && !(gBattleStatus.flags2 & BS_FLAGS2_1000000)
        && !(actorClass == ACTOR_PLAYER && is_ability_active(ABILITY_HEALTHY_HEALTHY) && (rand_int(100) < 50)))
    {
        if (battleStatus->currentAttackStatus & STATUS_FLAG_SHRINK && try_inflict_status(target, STATUS_KEY_SHRINK, STATUS_TURN_MOD_SHRINK)) {
            statusInflicted = one;
            statusInflicted2 = one;
        }
        if (battleStatus->currentAttackStatus & STATUS_FLAG_POISON && try_inflict_status(target, STATUS_KEY_POISON, STATUS_TURN_MOD_POISON)) {
            statusInflicted = one;
            statusInflicted2 = one;
        }
        if (battleStatus->currentAttackStatus & STATUS_FLAG_STONE && try_inflict_status(target, STATUS_KEY_STONE, STATUS_TURN_MOD_STONE)) {
            statusInflicted = one;
            statusInflicted2 = one;
        }
        if (battleStatus->currentAttackStatus & STATUS_FLAG_SLEEP && try_inflict_status(target, STATUS_KEY_SLEEP, STATUS_TURN_MOD_SLEEP)) {
            statusInflicted = one;
            statusInflicted2 = one;
        }
        if (battleStatus->currentAttackStatus & STATUS_FLAG_DIZZY && try_inflict_status(target, STATUS_KEY_DIZZY, STATUS_TURN_MOD_DIZZY)) {
            statusInflicted = one;
            statusInflicted2 = one;
        }
        if (battleStatus->currentAttackStatus & STATUS_FLAG_STOP && try_inflict_status(target, STATUS_KEY_STOP, STATUS_TURN_MOD_STOP)) {
            statusInflicted = one;
            statusInflicted2 = one;
        }
        if (battleStatus->currentAttackStatus & STATUS_FLAG_STATIC && try_inflict_status(target, STATUS_KEY_STATIC, STATUS_TURN_MOD_STATIC)) {
            statusInflicted = one;
            statusInflicted2 = one;
        }
        if (battleStatus->currentAttackStatus & STATUS_FLAG_PARALYZE && try_inflict_status(target, STATUS_KEY_PARALYZE, STATUS_TURN_MOD_PARALYZE)) {
            statusInflicted = one;
            statusInflicted2 = one;
        }
        if (battleStatus->currentAttackStatus & STATUS_FLAG_FEAR && try_inflict_status(target, STATUS_KEY_FEAR, STATUS_TURN_MOD_FEAR)) {
            statusInflicted = one;
            statusInflicted2 = one;
        }

        // @bug? repeated paralyze and dizzy infliction
        if (battleStatus->currentAttackStatus & STATUS_FLAG_PARALYZE && try_inflict_status(target, STATUS_KEY_PARALYZE, STATUS_TURN_MOD_PARALYZE)) {
            statusInflicted = one;
            statusInflicted2 = one;
        }
        if (battleStatus->currentAttackStatus & STATUS_FLAG_DIZZY && try_inflict_status(target, STATUS_KEY_DIZZY, STATUS_TURN_MOD_DIZZY)) {
            statusInflicted = one;
            statusInflicted2 = one;
        }

        if (battleStatus->currentAttackStatus & STATUS_FLAG_FROZEN && target->debuff != STATUS_KEY_FROZEN && try_inflict_status(target, STATUS_KEY_FROZEN, STATUS_TURN_MOD_FROZEN)) {
            statusInflicted = one;
            statusInflicted2 = one;
        }

        if (statusInflicted) {
            if (event == EVENT_ZERO_DAMAGE) {
                event = EVENT_HIT_COMBO;
            }
            if (event == EVENT_IMMUNE) {
                event = EVENT_HIT;
            }
        }
    }

    // dispatch events and play damage effects

    battleStatus->wasStatusInflicted = statusInflicted;

    switch (actorClass) {
        case ACTOR_CLASS_PLAYER:
            dispatch_event_player(event);
            break;
        case ACTOR_CLASS_PARTNER:
            dispatch_event_partner(event);
            break;
        case ACTOR_CLASS_ENEMY:
            dispatch_event_actor(target, event);
            break;
    }

    if (actorClass == ACTOR_CLASS_PARTNER
        && battleStatus->lastAttackDamage > 0
        && gBattleStatus.flags1 & BS_FLAGS1_SP_EVT_ACTIVE
        && !(target->flags & ACTOR_FLAG_NO_DMG_APPLY))
    {
        inflict_partner_ko(target, STATUS_KEY_DAZE, battleStatus->lastAttackDamage);
    }

    if (!(target->flags & ACTOR_FLAG_NO_DMG_POPUP)) {
        switch (actorClass) {
            case ACTOR_CLASS_PLAYER:
            case ACTOR_CLASS_PARTNER:
                if (battleStatus->lastAttackDamage == 0) {
                    if (!statusInflicted2 && !statusInflicted) {
                        // immune star fx?
                        show_immune_bonk(state->goalPos.x, state->goalPos.y, state->goalPos.z, 0, 1, -3);
                    }
                } else if (battleStatus->currentAttackElement & (DAMAGE_TYPE_MULTIPLE_POPUPS | DAMAGE_TYPE_SMASH)) {
                    show_next_damage_popup(state->goalPos.x, state->goalPos.y, state->goalPos.z, battleStatus->lastAttackDamage, 1);
                    show_damage_fx(target, state->goalPos.x, state->goalPos.y, state->goalPos.z, battleStatus->lastAttackDamage);
                } else {
                    show_primary_damage_popup(state->goalPos.x, state->goalPos.y, state->goalPos.z, battleStatus->lastAttackDamage, 1);
                    show_damage_fx(target, state->goalPos.x, state->goalPos.y, state->goalPos.z, battleStatus->lastAttackDamage);
                    break;
                }
                break;
            case ACTOR_CLASS_ENEMY:
                if (battleStatus->lastAttackDamage == 0) {
                    if (!statusInflicted2 && !statusInflicted) {
                        show_immune_bonk(state->goalPos.x, state->goalPos.y, state->goalPos.z, 0, 1, 3);
                    }
                } else if (battleStatus->currentAttackElement & (DAMAGE_TYPE_MULTIPLE_POPUPS | DAMAGE_TYPE_SMASH)) {
                    show_next_damage_popup(state->goalPos.x, state->goalPos.y, state->goalPos.z, battleStatus->lastAttackDamage, 0);
                    show_damage_fx(target, state->goalPos.x, state->goalPos.y, state->goalPos.z, battleStatus->lastAttackDamage);
                } else {
                    show_primary_damage_popup(state->goalPos.x, state->goalPos.y, state->goalPos.z, battleStatus->lastAttackDamage, 0);
                    show_damage_fx(target, state->goalPos.x, state->goalPos.y, state->goalPos.z, battleStatus->lastAttackDamage);
                }
                break;
        }
    }

    if (battleStatus->lastAttackDamage > 0) {
        u32 hitSound;

        func_80267018(target, 1);

        if (attacker->actorTypeData1[5] != SOUND_0) {
            sfx_play_sound_at_position(attacker->actorTypeData1[5], SOUND_SPACE_MODE_0, state->goalPos.x, state->goalPos.y, state->goalPos.z);
        }

        if (isFire) {
            hitSound = HIT_SOUND_FIRE;
        } else if (!isElectric) {
            hitSound = HIT_SOUND_NORMAL;
        } else {
            hitSound = HIT_SOUND_SHOCK;
        }

        play_hit_sound(target, state->goalPos.x, state->goalPos.y, state->goalPos.z, hitSound);
    }

    if ((battleStatus->lastAttackDamage < 1 && !statusInflicted2 && !madeElectricContact) || targetPart->flags & ACTOR_PART_FLAG_2000) {
        sfx_play_sound_at_position(SOUND_IMMUNE, SOUND_SPACE_MODE_0, state->goalPos.x, state->goalPos.y, state->goalPos.z);
    }

    if ((battleStatus->currentAttackStatus & STATUS_FLAG_SLEEP) && statusInflicted) {
        script = start_script(&EVS_PlaySleepHitFX, EVT_PRIORITY_A, 0);
        script->varTable[0] = state->goalPos.x;
        script->varTable[1] = state->goalPos.y;
        script->varTable[2] = state->goalPos.z;
        sfx_play_sound_at_position(SOUND_INFLICT_SLEEP, SOUND_SPACE_MODE_0, state->goalPos.x, state->goalPos.y, state->goalPos.z);
    }
    if ((battleStatus->currentAttackStatus & STATUS_FLAG_DIZZY) && statusInflicted) {
        script = start_script(&EVS_PlayDizzyHitFX, EVT_PRIORITY_A, 0);
        script->varTable[0] = state->goalPos.x;
        script->varTable[1] = state->goalPos.y;
        script->varTable[2] = state->goalPos.z;
        sfx_play_sound_at_position(SOUND_INFLICT_STATUS, SOUND_SPACE_MODE_0, state->goalPos.x, state->goalPos.y, state->goalPos.z);
    }
    if ((battleStatus->currentAttackStatus & STATUS_FLAG_PARALYZE) && statusInflicted) {
        script = start_script(&EVS_PlayParalyzeHitFX, EVT_PRIORITY_A, 0);
        script->varTable[0] = state->goalPos.x;
        script->varTable[1] = state->goalPos.y;
        script->varTable[2] = state->goalPos.z;
        sfx_play_sound_at_position(SOUND_INFLICT_STATUS, SOUND_SPACE_MODE_0, state->goalPos.x, state->goalPos.y, state->goalPos.z);
    }
    if ((battleStatus->currentAttackStatus & STATUS_FLAG_POISON) && statusInflicted) {
        script = start_script(&EVS_PlayPoisonHitFX, EVT_PRIORITY_A, 0);
        script->varTable[0] = state->goalPos.x;
        script->varTable[1] = state->goalPos.y;
        script->varTable[2] = state->goalPos.z;
        sfx_play_sound_at_position(SOUND_INFLICT_STATUS, SOUND_SPACE_MODE_0, state->goalPos.x, state->goalPos.y, state->goalPos.z);
    }
    if ((battleStatus->currentAttackStatus & STATUS_FLAG_STOP) && statusInflicted) {
        script = start_script(&EVS_PlayStopHitFX, EVT_PRIORITY_A, 0);
        script->varTable[0] = state->goalPos.x;
        script->varTable[1] = state->goalPos.y;
        script->varTable[2] = state->goalPos.z;
        sfx_play_sound_at_position(SOUND_INFLICT_STATUS, SOUND_SPACE_MODE_0, state->goalPos.x, state->goalPos.y, state->goalPos.z);
    }
    if ((battleStatus->currentAttackStatus & STATUS_FLAG_FROZEN) && statusInflicted) {
        script = start_script(&EVS_PlayFreezeHitFX, EVT_PRIORITY_A, 0);
        script->varTable[0] = state->goalPos.x;
        script->varTable[1] = state->goalPos.y;
        script->varTable[2] = state->goalPos.z;
        script->varTablePtr[3] = target;
        sfx_play_sound_at_position(SOUND_HIT_ICE, SOUND_SPACE_MODE_0, state->goalPos.x, state->goalPos.y, state->goalPos.z);
    }
    if ((battleStatus->currentAttackStatus & STATUS_FLAG_SHRINK) && statusInflicted) {
        script = start_script(&EVS_PlayShrinkHitFX, EVT_PRIORITY_A, 0);
        script->varTable[0] = state->goalPos.x;
        script->varTable[1] = state->goalPos.y;
        script->varTable[2] = state->goalPos.z;
        script->varTablePtr[3] = target;
        sfx_play_sound_at_position(SOUND_INFLICT_STATUS, SOUND_SPACE_MODE_0, state->goalPos.x, state->goalPos.y, state->goalPos.z);
    }

    if ((battleStatus->currentAttackElement & DAMAGE_TYPE_SMASH) && target->actorType == ACTOR_TYPE_GOOMNUT_TREE) {
        sfx_play_sound_at_position(SOUND_SMASH_GOOMNUT_TREE, SOUND_SPACE_MODE_0, state->goalPos.x, state->goalPos.y, state->goalPos.z);
    }

    show_actor_health_bar(target);

    if (attacker->staticStatus != STATUS_KEY_STATIC
        && (target->staticStatus == STATUS_KEY_STATIC || targetPart->eventFlags & ACTOR_EVENT_FLAG_ELECTRIFIED)
        && !(battleStatus->currentAttackElement & DAMAGE_TYPE_NO_CONTACT)
        && !(battleStatus->currentAttackEventSuppression & SUPPRESS_EVENT_SHOCK_CONTACT)
        && (attacker->transparentStatus != STATUS_KEY_TRANSPARENT)
        && !has_enchanted_part(attacker))
    {
        sfx_play_sound_at_position(SOUND_HIT_SHOCK, SOUND_SPACE_MODE_0, state->goalPos.x, state->goalPos.y, state->goalPos.z);
        apply_shock_effect(attacker);
        dispatch_damage_event_actor_1(attacker, 1, EVENT_SHOCK_HIT);
        return HIT_RESULT_BACKFIRE;
    }

    return hitResult;
}