### RAW ASSEMBLY INSTRUCTIONS:

glabel appendGfx_player
/* 7A7A4 800E12F4 3C03800A */  lui       $v1, %hi(gCurrentCamID)
/* 7A7A8 800E12F8 8463A634 */  lh        $v1, %lo(gCurrentCamID)($v1)
/* 7A7AC 800E12FC 27BDFEB0 */  addiu     $sp, $sp, -0x150
/* 7A7B0 800E1300 AFB20128 */  sw        $s2, 0x128($sp)
/* 7A7B4 800E1304 3C128011 */  lui       $s2, %hi(gPlayerStatus)
/* 7A7B8 800E1308 2652EFC8 */  addiu     $s2, $s2, %lo(gPlayerStatus)
/* 7A7BC 800E130C AFBF012C */  sw        $ra, 0x12C($sp)
/* 7A7C0 800E1310 AFB10124 */  sw        $s1, 0x124($sp)
/* 7A7C4 800E1314 AFB00120 */  sw        $s0, 0x120($sp)
/* 7A7C8 800E1318 F7BA0148 */  sdc1      $f26, 0x148($sp)
/* 7A7CC 800E131C F7B80140 */  sdc1      $f24, 0x140($sp)
/* 7A7D0 800E1320 F7B60138 */  sdc1      $f22, 0x138($sp)
/* 7A7D4 800E1324 F7B40130 */  sdc1      $f20, 0x130($sp)
/* 7A7D8 800E1328 00031080 */  sll       $v0, $v1, 2
/* 7A7DC 800E132C 00431021 */  addu      $v0, $v0, $v1
/* 7A7E0 800E1330 00021080 */  sll       $v0, $v0, 2
/* 7A7E4 800E1334 00431023 */  subu      $v0, $v0, $v1
/* 7A7E8 800E1338 000218C0 */  sll       $v1, $v0, 3
/* 7A7EC 800E133C 00431021 */  addu      $v0, $v0, $v1
/* 7A7F0 800E1340 000210C0 */  sll       $v0, $v0, 3
/* 7A7F4 800E1344 24030011 */  addiu     $v1, $zero, 0x11
/* 7A7F8 800E1348 3C01800B */  lui       $at, %hi(gCameras + 0x6C)
/* 7A7FC 800E134C 00220821 */  addu      $at, $at, $v0
/* 7A800 800E1350 C4201DEC */  lwc1      $f0, %lo(gCameras + 0x6C)($at)
/* 7A804 800E1354 824200B4 */  lb        $v0, 0xB4($s2)
/* 7A808 800E1358 14430035 */  bne       $v0, $v1, .L800E1430
/* 7A80C 800E135C 46000687 */   neg.s    $f26, $f0
/* 7A810 800E1360 3C013F36 */  lui       $at, (0x3F36DB6E >> 16)
/* 7A814 800E1364 3421DB6E */  ori       $at, $at, (0x3F36DB6E & 0xFFFF)
/* 7A818 800E1368 44810000 */  mtc1      $at, $f0
/* 7A81C 800E136C 27B000E0 */  addiu     $s0, $sp, 0xE0
/* 7A820 800E1370 44050000 */  mfc1      $a1, $f0
/* 7A824 800E1374 0200202D */  daddu     $a0, $s0, $zero
/* 7A828 800E1378 00A0302D */  daddu     $a2, $a1, $zero
/* 7A82C 800E137C 0C019DF0 */  jal       guScaleF
/* 7A830 800E1380 00A0382D */   daddu    $a3, $a1, $zero
/* 7A834 800E1384 4405D000 */  mfc1      $a1, $f26
/* 7A838 800E1388 4480A000 */  mtc1      $zero, $f20
/* 7A83C 800E138C 3C013F80 */  lui       $at, (0x3F800000 >> 16)
/* 7A840 800E1390 4481B000 */  mtc1      $at, $f22
/* 7A844 800E1394 4406A000 */  mfc1      $a2, $f20
/* 7A848 800E1398 4407B000 */  mfc1      $a3, $f22
/* 7A84C 800E139C 27A40020 */  addiu     $a0, $sp, 0x20
/* 7A850 800E13A0 0C019EC8 */  jal       guRotateF
/* 7A854 800E13A4 E7B40010 */   swc1     $f20, 0x10($sp)
/* 7A858 800E13A8 0200202D */  daddu     $a0, $s0, $zero
/* 7A85C 800E13AC 27A50020 */  addiu     $a1, $sp, 0x20
/* 7A860 800E13B0 0C019D80 */  jal       guMtxCatF
/* 7A864 800E13B4 00A0302D */   daddu    $a2, $a1, $zero
/* 7A868 800E13B8 27B000A0 */  addiu     $s0, $sp, 0xA0
/* 7A86C 800E13BC 8E4500A8 */  lw        $a1, 0xA8($s2)
/* 7A870 800E13C0 4406A000 */  mfc1      $a2, $f20
/* 7A874 800E13C4 4407B000 */  mfc1      $a3, $f22
/* 7A878 800E13C8 0200202D */  daddu     $a0, $s0, $zero
/* 7A87C 800E13CC 0C019EC8 */  jal       guRotateF
/* 7A880 800E13D0 AFA60010 */   sw       $a2, 0x10($sp)
/* 7A884 800E13D4 27A40020 */  addiu     $a0, $sp, 0x20
/* 7A888 800E13D8 0200282D */  daddu     $a1, $s0, $zero
/* 7A88C 800E13DC 0C019D80 */  jal       guMtxCatF
/* 7A890 800E13E0 0080302D */   daddu    $a2, $a0, $zero
/* 7A894 800E13E4 C640002C */  lwc1      $f0, 0x2C($s2)
/* 7A898 800E13E8 27B00060 */  addiu     $s0, $sp, 0x60
/* 7A89C 800E13EC 46160001 */  sub.s     $f0, $f0, $f22
/* 7A8A0 800E13F0 8E450028 */  lw        $a1, 0x28($s2)
/* 7A8A4 800E13F4 8E470030 */  lw        $a3, 0x30($s2)
/* 7A8A8 800E13F8 44060000 */  mfc1      $a2, $f0
/* 7A8AC 800E13FC 0C019E40 */  jal       guTranslateF
/* 7A8B0 800E1400 0200202D */   daddu    $a0, $s0, $zero
/* 7A8B4 800E1404 27A40020 */  addiu     $a0, $sp, 0x20
/* 7A8B8 800E1408 0200282D */  daddu     $a1, $s0, $zero
/* 7A8BC 800E140C 0C019D80 */  jal       guMtxCatF
/* 7A8C0 800E1410 0080302D */   daddu    $a2, $a0, $zero
/* 7A8C4 800E1414 0000202D */  daddu     $a0, $zero, $zero
/* 7A8C8 800E1418 0080282D */  daddu     $a1, $a0, $zero
/* 7A8CC 800E141C 0080302D */  daddu     $a2, $a0, $zero
/* 7A8D0 800E1420 0080382D */  daddu     $a3, $a0, $zero
/* 7A8D4 800E1424 27A20020 */  addiu     $v0, $sp, 0x20
/* 7A8D8 800E1428 080385AD */  j         .L800E16B4
/* 7A8DC 800E142C AFA20010 */   sw       $v0, 0x10($sp)
.L800E1430:
/* 7A8E0 800E1430 27B000A0 */  addiu     $s0, $sp, 0xA0
/* 7A8E4 800E1434 4405D000 */  mfc1      $a1, $f26
/* 7A8E8 800E1438 4480A000 */  mtc1      $zero, $f20
/* 7A8EC 800E143C 3C07BF80 */  lui       $a3, (0xBF800000 >> 16)
/* 7A8F0 800E1440 4406A000 */  mfc1      $a2, $f20
/* 7A8F4 800E1444 0200202D */  daddu     $a0, $s0, $zero
/* 7A8F8 800E1448 0C019EC8 */  jal       guRotateF
/* 7A8FC 800E144C E7B40010 */   swc1     $f20, 0x10($sp)
/* 7A900 800E1450 C64C008C */  lwc1      $f12, 0x8C($s2)
/* 7A904 800E1454 0C00A6C9 */  jal       clamp_angle
/* 7A908 800E1458 00000000 */   nop
/* 7A90C 800E145C 44050000 */  mfc1      $a1, $f0
/* 7A910 800E1460 4406A000 */  mfc1      $a2, $f20
/* 7A914 800E1464 4407A000 */  mfc1      $a3, $f20
/* 7A918 800E1468 3C013F80 */  lui       $at, (0x3F800000 >> 16)
/* 7A91C 800E146C 4481B000 */  mtc1      $at, $f22
/* 7A920 800E1470 27A40020 */  addiu     $a0, $sp, 0x20
/* 7A924 800E1474 0C019EC8 */  jal       guRotateF
/* 7A928 800E1478 E7B60010 */   swc1     $f22, 0x10($sp)
/* 7A92C 800E147C 0200202D */  daddu     $a0, $s0, $zero
/* 7A930 800E1480 27A50020 */  addiu     $a1, $sp, 0x20
/* 7A934 800E1484 0C019D80 */  jal       guMtxCatF
/* 7A938 800E1488 00A0302D */   daddu    $a2, $a1, $zero
/* 7A93C 800E148C 864200B0 */  lh        $v0, 0xB0($s2)
/* 7A940 800E1490 3C013F00 */  lui       $at, (0x3F000000 >> 16)
/* 7A944 800E1494 4481C000 */  mtc1      $at, $f24
/* 7A948 800E1498 00021023 */  negu      $v0, $v0
/* 7A94C 800E149C 44820000 */  mtc1      $v0, $f0
/* 7A950 800E14A0 00000000 */  nop
/* 7A954 800E14A4 46800020 */  cvt.s.w   $f0, $f0
/* 7A958 800E14A8 46180002 */  mul.s     $f0, $f0, $f24
/* 7A95C 800E14AC 00000000 */  nop
/* 7A960 800E14B0 27B10060 */  addiu     $s1, $sp, 0x60
/* 7A964 800E14B4 4405A000 */  mfc1      $a1, $f20
/* 7A968 800E14B8 4407A000 */  mfc1      $a3, $f20
/* 7A96C 800E14BC 44060000 */  mfc1      $a2, $f0
/* 7A970 800E14C0 0C019E40 */  jal       guTranslateF
/* 7A974 800E14C4 0220202D */   daddu    $a0, $s1, $zero
/* 7A978 800E14C8 0220202D */  daddu     $a0, $s1, $zero
/* 7A97C 800E14CC 27A50020 */  addiu     $a1, $sp, 0x20
/* 7A980 800E14D0 0C019D80 */  jal       guMtxCatF
/* 7A984 800E14D4 00A0302D */   daddu    $a2, $a1, $zero
/* 7A988 800E14D8 4405D000 */  mfc1      $a1, $f26
/* 7A98C 800E14DC 4406A000 */  mfc1      $a2, $f20
/* 7A990 800E14E0 4407B000 */  mfc1      $a3, $f22
/* 7A994 800E14E4 0200202D */  daddu     $a0, $s0, $zero
/* 7A998 800E14E8 0C019EC8 */  jal       guRotateF
/* 7A99C 800E14EC E7B40010 */   swc1     $f20, 0x10($sp)
/* 7A9A0 800E14F0 27A40020 */  addiu     $a0, $sp, 0x20
/* 7A9A4 800E14F4 0200282D */  daddu     $a1, $s0, $zero
/* 7A9A8 800E14F8 0C019D80 */  jal       guMtxCatF
/* 7A9AC 800E14FC 0080302D */   daddu    $a2, $a0, $zero
/* 7A9B0 800E1500 8E4500A8 */  lw        $a1, 0xA8($s2)
/* 7A9B4 800E1504 4406A000 */  mfc1      $a2, $f20
/* 7A9B8 800E1508 4407B000 */  mfc1      $a3, $f22
/* 7A9BC 800E150C 0200202D */  daddu     $a0, $s0, $zero
/* 7A9C0 800E1510 0C019EC8 */  jal       guRotateF
/* 7A9C4 800E1514 E7B40010 */   swc1     $f20, 0x10($sp)
/* 7A9C8 800E1518 27A40020 */  addiu     $a0, $sp, 0x20
/* 7A9CC 800E151C 0200282D */  daddu     $a1, $s0, $zero
/* 7A9D0 800E1520 0C019D80 */  jal       guMtxCatF
/* 7A9D4 800E1524 0080302D */   daddu    $a2, $a0, $zero
/* 7A9D8 800E1528 864200B0 */  lh        $v0, 0xB0($s2)
/* 7A9DC 800E152C 44820000 */  mtc1      $v0, $f0
/* 7A9E0 800E1530 00000000 */  nop
/* 7A9E4 800E1534 46800020 */  cvt.s.w   $f0, $f0
/* 7A9E8 800E1538 46180002 */  mul.s     $f0, $f0, $f24
/* 7A9EC 800E153C 00000000 */  nop
/* 7A9F0 800E1540 0220202D */  daddu     $a0, $s1, $zero
/* 7A9F4 800E1544 4405A000 */  mfc1      $a1, $f20
/* 7A9F8 800E1548 44060000 */  mfc1      $a2, $f0
/* 7A9FC 800E154C 0C019E40 */  jal       guTranslateF
/* 7AA00 800E1550 00A0382D */   daddu    $a3, $a1, $zero
/* 7AA04 800E1554 27A40020 */  addiu     $a0, $sp, 0x20
/* 7AA08 800E1558 0220282D */  daddu     $a1, $s1, $zero
/* 7AA0C 800E155C 0C019D80 */  jal       guMtxCatF
/* 7AA10 800E1560 0080302D */   daddu    $a2, $a0, $zero
/* 7AA14 800E1564 3C013F36 */  lui       $at, (0x3F36DB6E >> 16)
/* 7AA18 800E1568 3421DB6E */  ori       $at, $at, (0x3F36DB6E & 0xFFFF)
/* 7AA1C 800E156C 44810000 */  mtc1      $at, $f0
/* 7AA20 800E1570 27B000E0 */  addiu     $s0, $sp, 0xE0
/* 7AA24 800E1574 44050000 */  mfc1      $a1, $f0
/* 7AA28 800E1578 0200202D */  daddu     $a0, $s0, $zero
/* 7AA2C 800E157C 00A0302D */  daddu     $a2, $a1, $zero
/* 7AA30 800E1580 0C019DF0 */  jal       guScaleF
/* 7AA34 800E1584 00A0382D */   daddu    $a3, $a1, $zero
/* 7AA38 800E1588 27A40020 */  addiu     $a0, $sp, 0x20
/* 7AA3C 800E158C 0200282D */  daddu     $a1, $s0, $zero
/* 7AA40 800E1590 0C019D80 */  jal       guMtxCatF
/* 7AA44 800E1594 0080302D */   daddu    $a2, $a0, $zero
/* 7AA48 800E1598 8E450028 */  lw        $a1, 0x28($s2)
/* 7AA4C 800E159C 8E46002C */  lw        $a2, 0x2C($s2)
/* 7AA50 800E15A0 8E470030 */  lw        $a3, 0x30($s2)
/* 7AA54 800E15A4 0C019E40 */  jal       guTranslateF
/* 7AA58 800E15A8 0220202D */   daddu    $a0, $s1, $zero
/* 7AA5C 800E15AC 27A40020 */  addiu     $a0, $sp, 0x20
/* 7AA60 800E15B0 0220282D */  daddu     $a1, $s1, $zero
/* 7AA64 800E15B4 0C019D80 */  jal       guMtxCatF
/* 7AA68 800E15B8 0080302D */   daddu    $a2, $a0, $zero
/* 7AA6C 800E15BC 8E430004 */  lw        $v1, 0x4($s2)
/* 7AA70 800E15C0 30620400 */  andi      $v0, $v1, 0x400
/* 7AA74 800E15C4 10400017 */  beqz      $v0, .L800E1624
/* 7AA78 800E15C8 0000202D */   daddu    $a0, $zero, $zero
/* 7AA7C 800E15CC 2405FFFF */  addiu     $a1, $zero, -0x1
/* 7AA80 800E15D0 0080302D */  daddu     $a2, $a0, $zero
/* 7AA84 800E15D4 0080382D */  daddu     $a3, $a0, $zero
/* 7AA88 800E15D8 2402FBFF */  addiu     $v0, $zero, -0x401
/* 7AA8C 800E15DC 00621024 */  and       $v0, $v1, $v0
/* 7AA90 800E15E0 AE420004 */  sw        $v0, 0x4($s2)
/* 7AA94 800E15E4 24020016 */  addiu     $v0, $zero, 0x16
/* 7AA98 800E15E8 A242000A */  sb        $v0, 0xA($s2)
/* 7AA9C 800E15EC AFA00010 */  sw        $zero, 0x10($sp)
/* 7AAA0 800E15F0 AFA00014 */  sw        $zero, 0x14($sp)
/* 7AAA4 800E15F4 AFA00018 */  sw        $zero, 0x18($sp)
/* 7AAA8 800E15F8 0C0B77B9 */  jal       set_player_imgfx_comp
/* 7AAAC 800E15FC AFA0001C */   sw       $zero, 0x1C($sp)
/* 7AAB0 800E1600 24050005 */  addiu     $a1, $zero, 0x5
/* 7AAB4 800E1604 24060001 */  addiu     $a2, $zero, 0x1
/* 7AAB8 800E1608 00C0382D */  daddu     $a3, $a2, $zero
/* 7AABC 800E160C 8E4400B8 */  lw        $a0, 0xB8($s2)
/* 7AAC0 800E1610 00C0102D */  daddu     $v0, $a2, $zero
/* 7AAC4 800E1614 AFA20010 */  sw        $v0, 0x10($sp)
/* 7AAC8 800E1618 AFA00014 */  sw        $zero, 0x14($sp)
/* 7AACC 800E161C 0C0B77FE */  jal       set_player_imgfx_all
/* 7AAD0 800E1620 AFA00018 */   sw       $zero, 0x18($sp)
.L800E1624:
/* 7AAD4 800E1624 8242000A */  lb        $v0, 0xA($s2)
/* 7AAD8 800E1628 9243000A */  lbu       $v1, 0xA($s2)
/* 7AADC 800E162C 1040000D */  beqz      $v0, .L800E1664
/* 7AAE0 800E1630 2462FFFF */   addiu    $v0, $v1, -0x1
/* 7AAE4 800E1634 A242000A */  sb        $v0, 0xA($s2)
/* 7AAE8 800E1638 00021600 */  sll       $v0, $v0, 24
/* 7AAEC 800E163C 14400009 */  bnez      $v0, .L800E1664
/* 7AAF0 800E1640 0000202D */   daddu    $a0, $zero, $zero
/* 7AAF4 800E1644 2405FFFF */  addiu     $a1, $zero, -0x1
/* 7AAF8 800E1648 0080302D */  daddu     $a2, $a0, $zero
/* 7AAFC 800E164C 0080382D */  daddu     $a3, $a0, $zero
/* 7AB00 800E1650 AFA00010 */  sw        $zero, 0x10($sp)
/* 7AB04 800E1654 AFA00014 */  sw        $zero, 0x14($sp)
/* 7AB08 800E1658 AFA00018 */  sw        $zero, 0x18($sp)
/* 7AB0C 800E165C 0C0B77B9 */  jal       set_player_imgfx_comp
/* 7AB10 800E1660 AFA0001C */   sw       $zero, 0x1C($sp)
.L800E1664:
/* 7AB14 800E1664 C64200A8 */  lwc1      $f2, 0xA8($s2)
/* 7AB18 800E1668 3C0142B4 */  lui       $at, (0x42B40000 >> 16)
/* 7AB1C 800E166C 44810000 */  mtc1      $at, $f0
/* 7AB20 800E1670 00000000 */  nop
/* 7AB24 800E1674 4602003E */  c.le.s    $f0, $f2
/* 7AB28 800E1678 00000000 */  nop
/* 7AB2C 800E167C 45000008 */  bc1f      .L800E16A0
/* 7AB30 800E1680 0000202D */   daddu    $a0, $zero, $zero
/* 7AB34 800E1684 3C014387 */  lui       $at, (0x43870000 >> 16)
/* 7AB38 800E1688 44810000 */  mtc1      $at, $f0
/* 7AB3C 800E168C 00000000 */  nop
/* 7AB40 800E1690 4600103C */  c.lt.s    $f2, $f0
/* 7AB44 800E1694 00000000 */  nop
/* 7AB48 800E1698 45030001 */  bc1tl     .L800E16A0
/* 7AB4C 800E169C 3C041000 */   lui      $a0, (0x10000000 >> 16)
.L800E16A0:
/* 7AB50 800E16A0 27A20020 */  addiu     $v0, $sp, 0x20
/* 7AB54 800E16A4 AFA20010 */  sw        $v0, 0x10($sp)
/* 7AB58 800E16A8 0000282D */  daddu     $a1, $zero, $zero
/* 7AB5C 800E16AC 00A0302D */  daddu     $a2, $a1, $zero
/* 7AB60 800E16B0 00A0382D */  daddu     $a3, $a1, $zero
.L800E16B4:
/* 7AB64 800E16B4 0C0B7710 */  jal       spr_draw_player_sprite
/* 7AB68 800E16B8 00000000 */   nop
/* 7AB6C 800E16BC 3C03800F */  lui       $v1, %hi(D_800F7B4C)
/* 7AB70 800E16C0 24637B4C */  addiu     $v1, $v1, %lo(D_800F7B4C)
/* 7AB74 800E16C4 8C620000 */  lw        $v0, 0x0($v1)
/* 7AB78 800E16C8 24420001 */  addiu     $v0, $v0, 0x1
/* 7AB7C 800E16CC AC620000 */  sw        $v0, 0x0($v1)
/* 7AB80 800E16D0 28420003 */  slti      $v0, $v0, 0x3
/* 7AB84 800E16D4 50400001 */  beql      $v0, $zero, .L800E16DC
/* 7AB88 800E16D8 AC600000 */   sw       $zero, 0x0($v1)
.L800E16DC:
/* 7AB8C 800E16DC 8FBF012C */  lw        $ra, 0x12C($sp)
/* 7AB90 800E16E0 8FB20128 */  lw        $s2, 0x128($sp)
/* 7AB94 800E16E4 8FB10124 */  lw        $s1, 0x124($sp)
/* 7AB98 800E16E8 8FB00120 */  lw        $s0, 0x120($sp)
/* 7AB9C 800E16EC D7BA0148 */  ldc1      $f26, 0x148($sp)
/* 7ABA0 800E16F0 D7B80140 */  ldc1      $f24, 0x140($sp)
/* 7ABA4 800E16F4 D7B60138 */  ldc1      $f22, 0x138($sp)
/* 7ABA8 800E16F8 D7B40130 */  ldc1      $f20, 0x130($sp)
/* 7ABAC 800E16FC 03E00008 */  jr        $ra
/* 7ABB0 800E1700 27BD0150 */   addiu    $sp, $sp, 0x150

### DECOMPILED C INSTRUCTIONS:

void appendGfx_player(void* data) {
    PlayerStatus* playerStatus = &gPlayerStatus;
    Matrix4f sp20, sp60, spA0, spE0;
    f32 temp_f0 = -gCameras[gCurrentCamID].currentYaw;
    s32 spriteIdx;

    if (playerStatus->actionState == ACTION_STATE_SLIDING) {
        guScaleF(spE0, SPRITE_WORLD_SCALE_D, SPRITE_WORLD_SCALE_D, SPRITE_WORLD_SCALE_D);
        guRotateF(sp20, temp_f0, 0.0f, 1.0f, 0.0f);
        guMtxCatF(spE0, sp20, sp20);
        guRotateF(spA0, playerStatus->spriteFacingAngle, 0.0f, 1.0f, 0.0f);
        guMtxCatF(sp20, spA0, sp20);
        guTranslateF(sp60, playerStatus->position.x, playerStatus->position.y - 1.0f, playerStatus->position.z);
        guMtxCatF(sp20, sp60, sp20);
        spr_draw_player_sprite(PLAYER_SPRITE_MAIN, 0, 0, 0, sp20);
    } else {
        guRotateF(spA0, temp_f0, 0.0f, -1.0f, 0.0f);
        guRotateF(sp20, clamp_angle(playerStatus->pitch), 0.0f, 0.0f, 1.0f);
        guMtxCatF(spA0, sp20, sp20);
        guTranslateF(sp60, 0.0f, -playerStatus->colliderHeight * 0.5f, 0.0f);
        guMtxCatF(sp60, sp20, sp20);
        guRotateF(spA0, temp_f0, 0.0f, 1.0f, 0.0f);
        guMtxCatF(sp20, spA0, sp20);
        guRotateF(spA0, playerStatus->spriteFacingAngle, 0.0f, 1.0f, 0.0f);
        guMtxCatF(sp20, spA0, sp20);
        guTranslateF(sp60, 0.0f, playerStatus->colliderHeight * 0.5f, 0.0f);
        guMtxCatF(sp20, sp60, sp20);
        guScaleF(spE0, SPRITE_WORLD_SCALE_D, SPRITE_WORLD_SCALE_D, SPRITE_WORLD_SCALE_D);
        guMtxCatF(sp20, spE0, sp20);
        guTranslateF(sp60, playerStatus->position.x, playerStatus->position.y, playerStatus->position.z);
        guMtxCatF(sp20, sp60, sp20);

        if (playerStatus->animFlags & PA_FLAG_SHIVERING) {
            playerStatus->animFlags = playerStatus->animFlags & ~PA_FLAG_SHIVERING;
            playerStatus->shiverTime = 22;
            set_player_imgfx_comp(PLAYER_SPRITE_MAIN, -1, IMGFX_CLEAR, 0, 0, 0, 0, 0);
            set_player_imgfx_all(playerStatus->anim, IMGFX_SET_ANIM, IMGFX_ANIM_SHIVER, 1, 1, 0, 0);
        }

        if (playerStatus->shiverTime != 0) {
            playerStatus->shiverTime--;
            if (playerStatus->shiverTime == 0) {
                set_player_imgfx_comp(PLAYER_SPRITE_MAIN, -1, IMGFX_CLEAR, 0, 0, 0, 0, 0);
            }
        }

        if (playerStatus->spriteFacingAngle >= 90.0f && playerStatus->spriteFacingAngle < 270.0f) {
            spriteIdx = PLAYER_SPRITE_MAIN | DRAW_SPRITE_UPSIDE_DOWN;
        } else {
            spriteIdx = PLAYER_SPRITE_MAIN;
        }

        spr_draw_player_sprite(spriteIdx, 0, 0, 0, sp20);
    }

    D_800F7B4C++;

    if (D_800F7B4C >= 3) {
        D_800F7B4C = 0;
    }
}


### RAW ASSEMBLY INSTRUCTIONS:

glabel steam_burst_appendGfx
/* 361238 E005C2F8 27BDFEF8 */  addiu     $sp, $sp, -0x108
/* 36123C E005C2FC AFBE0100 */  sw        $fp, 0x100($sp)
/* 361240 E005C300 0080F02D */  daddu     $fp, $a0, $zero
/* 361244 E005C304 3C08DB06 */  lui       $t0, (0xDB060024 >> 16)
/* 361248 E005C308 35080024 */  ori       $t0, $t0, (0xDB060024 & 0xFFFF)
/* 36124C E005C30C 27A40018 */  addiu     $a0, $sp, 0x18
/* 361250 E005C310 AFB500F4 */  sw        $s5, 0xF4($sp)
/* 361254 E005C314 3C150001 */  lui       $s5, (0x11630 >> 16)
/* 361258 E005C318 AFB700FC */  sw        $s7, 0xFC($sp)
/* 36125C E005C31C 3C17800A */  lui       $s7, %hi(gMainGfxPos)
/* 361260 E005C320 26F7A66C */  addiu     $s7, $s7, %lo(gMainGfxPos)
/* 361264 E005C324 AFBF0104 */  sw        $ra, 0x104($sp)
/* 361268 E005C328 AFB600F8 */  sw        $s6, 0xF8($sp)
/* 36126C E005C32C AFB400F0 */  sw        $s4, 0xF0($sp)
/* 361270 E005C330 AFB300EC */  sw        $s3, 0xEC($sp)
/* 361274 E005C334 AFB200E8 */  sw        $s2, 0xE8($sp)
/* 361278 E005C338 AFB100E4 */  sw        $s1, 0xE4($sp)
/* 36127C E005C33C AFB000E0 */  sw        $s0, 0xE0($sp)
/* 361280 E005C340 8EE50000 */  lw        $a1, 0x0($s7)
/* 361284 E005C344 8FD6000C */  lw        $s6, 0xC($fp)
/* 361288 E005C348 00A0302D */  daddu     $a2, $a1, $zero
/* 36128C E005C34C 24A50008 */  addiu     $a1, $a1, 0x8
/* 361290 E005C350 AEE50000 */  sw        $a1, 0x0($s7)
/* 361294 E005C354 96C30000 */  lhu       $v1, 0x0($s6)
/* 361298 E005C358 24A20008 */  addiu     $v0, $a1, 0x8
/* 36129C E005C35C AEE20000 */  sw        $v0, 0x0($s7)
/* 3612A0 E005C360 C6C20030 */  lwc1      $f2, 0x30($s6)
/* 3612A4 E005C364 00031880 */  sll       $v1, $v1, 2
/* 3612A8 E005C368 3C09E006 */  lui       $t1, (0xE0060000 >> 16)
/* 3612AC E005C36C 01234821 */  addu      $t1, $t1, $v1
/* 3612B0 E005C370 8D29C700 */  lw        $t1, -0x3900($t1)
/* 3612B4 E005C374 36B51630 */  ori       $s5, $s5, (0x11630 & 0xFFFF)
/* 3612B8 E005C378 AFA900D8 */  sw        $t1, 0xD8($sp)
/* 3612BC E005C37C 3C07E006 */  lui       $a3, (0xE0060000 >> 16)
/* 3612C0 E005C380 00E33821 */  addu      $a3, $a3, $v1
/* 3612C4 E005C384 8CE7C704 */  lw        $a3, -0x38FC($a3)
/* 3612C8 E005C388 3C02E700 */  lui       $v0, (0xE7000000 >> 16)
/* 3612CC E005C38C ACC20000 */  sw        $v0, 0x0($a2)
/* 3612D0 E005C390 ACC00004 */  sw        $zero, 0x4($a2)
/* 3612D4 E005C394 ACA80000 */  sw        $t0, 0x0($a1)
/* 3612D8 E005C398 8FC30010 */  lw        $v1, 0x10($fp)
/* 3612DC E005C39C 24A20010 */  addiu     $v0, $a1, 0x10
/* 3612E0 E005C3A0 AEE20000 */  sw        $v0, 0x0($s7)
/* 3612E4 E005C3A4 3C02DE00 */  lui       $v0, (0xDE000000 >> 16)
/* 3612E8 E005C3A8 4600110D */  trunc.w.s $f4, $f2
/* 3612EC E005C3AC 44132000 */  mfc1      $s3, $f4
/* 3612F0 E005C3B0 00000000 */  nop
/* 3612F4 E005C3B4 44930000 */  mtc1      $s3, $f0
/* 3612F8 E005C3B8 00000000 */  nop
/* 3612FC E005C3BC 46800020 */  cvt.s.w   $f0, $f0
/* 361300 E005C3C0 3A740006 */  xori      $s4, $s3, 0x6
/* 361304 E005C3C4 46001081 */  sub.s     $f2, $f2, $f0
/* 361308 E005C3C8 3C014380 */  lui       $at, (0x43800000 >> 16)
/* 36130C E005C3CC 44810000 */  mtc1      $at, $f0
/* 361310 E005C3D0 8C63001C */  lw        $v1, 0x1C($v1)
/* 361314 E005C3D4 ACA20008 */  sw        $v0, 0x8($a1)
/* 361318 E005C3D8 3C028000 */  lui       $v0, (0x80000000 >> 16)
/* 36131C E005C3DC ACA7000C */  sw        $a3, 0xC($a1)
/* 361320 E005C3E0 00621821 */  addu      $v1, $v1, $v0
/* 361324 E005C3E4 46001082 */  mul.s     $f2, $f2, $f0
/* 361328 E005C3E8 00000000 */  nop
/* 36132C E005C3EC ACA30004 */  sw        $v1, 0x4($a1)
/* 361330 E005C3F0 8EC50004 */  lw        $a1, 0x4($s6)
/* 361334 E005C3F4 8EC60008 */  lw        $a2, 0x8($s6)
/* 361338 E005C3F8 8EC7000C */  lw        $a3, 0xC($s6)
/* 36133C E005C3FC 4600110D */  trunc.w.s $f4, $f2
/* 361340 E005C400 44122000 */  mfc1      $s2, $f4
/* 361344 E005C404 0C080108 */  jal       shim_guTranslateF
/* 361348 E005C408 2E940001 */   sltiu    $s4, $s4, 0x1
/* 36134C E005C40C 27B00058 */  addiu     $s0, $sp, 0x58
/* 361350 E005C410 3C038007 */  lui       $v1, %hi(gCurrentCameraID)
/* 361354 E005C414 8C637410 */  lw        $v1, %lo(gCurrentCameraID)($v1)
/* 361358 E005C418 44800000 */  mtc1      $zero, $f0
/* 36135C E005C41C 00031080 */  sll       $v0, $v1, 2
/* 361360 E005C420 00431021 */  addu      $v0, $v0, $v1
/* 361364 E005C424 00021080 */  sll       $v0, $v0, 2
/* 361368 E005C428 00431023 */  subu      $v0, $v0, $v1
/* 36136C E005C42C 000218C0 */  sll       $v1, $v0, 3
/* 361370 E005C430 00431021 */  addu      $v0, $v0, $v1
/* 361374 E005C434 000210C0 */  sll       $v0, $v0, 3
/* 361378 E005C438 44060000 */  mfc1      $a2, $f0
/* 36137C E005C43C 3C01800B */  lui       $at, %hi(gCameras + 0x6C)
/* 361380 E005C440 00220821 */  addu      $at, $at, $v0
/* 361384 E005C444 C4201DEC */  lwc1      $f0, %lo(gCameras + 0x6C)($at)
/* 361388 E005C448 3C073F80 */  lui       $a3, (0x3F800000 >> 16)
/* 36138C E005C44C 46000007 */  neg.s     $f0, $f0
/* 361390 E005C450 44050000 */  mfc1      $a1, $f0
/* 361394 E005C454 0200202D */  daddu     $a0, $s0, $zero
/* 361398 E005C458 0C080104 */  jal       shim_guRotateF
/* 36139C E005C45C AFA60010 */   sw       $a2, 0x10($sp)
/* 3613A0 E005C460 0200202D */  daddu     $a0, $s0, $zero
/* 3613A4 E005C464 27A50018 */  addiu     $a1, $sp, 0x18
/* 3613A8 E005C468 27B00098 */  addiu     $s0, $sp, 0x98
/* 3613AC E005C46C 0C080114 */  jal       shim_guMtxCatF
/* 3613B0 E005C470 0200302D */   daddu    $a2, $s0, $zero
/* 3613B4 E005C474 0200202D */  daddu     $a0, $s0, $zero
/* 3613B8 E005C478 3C108007 */  lui       $s0, %hi(gMatrixListPos)
/* 3613BC E005C47C 261041F0 */  addiu     $s0, $s0, %lo(gMatrixListPos)
/* 3613C0 E005C480 3C11800A */  lui       $s1, %hi(gDisplayContext)
/* 3613C4 E005C484 2631A674 */  addiu     $s1, $s1, %lo(gDisplayContext)
/* 3613C8 E005C488 96050000 */  lhu       $a1, 0x0($s0)
/* 3613CC E005C48C 8E220000 */  lw        $v0, 0x0($s1)
/* 3613D0 E005C490 00052980 */  sll       $a1, $a1, 6
/* 3613D4 E005C494 00B52821 */  addu      $a1, $a1, $s5
/* 3613D8 E005C498 0C080118 */  jal       shim_guMtxF2L
/* 3613DC E005C49C 00452821 */   addu     $a1, $v0, $a1
/* 3613E0 E005C4A0 3C05E6DE */  lui       $a1, (0xE6DEDE82 >> 16)
/* 3613E4 E005C4A4 34A5DE82 */  ori       $a1, $a1, (0xE6DEDE82 & 0xFFFF)
/* 3613E8 E005C4A8 8EE60000 */  lw        $a2, 0x0($s7)
/* 3613EC E005C4AC 3C03DA38 */  lui       $v1, (0xDA380000 >> 16)
/* 3613F0 E005C4B0 00C0202D */  daddu     $a0, $a2, $zero
/* 3613F4 E005C4B4 24C60008 */  addiu     $a2, $a2, 0x8
/* 3613F8 E005C4B8 AEE60000 */  sw        $a2, 0x0($s7)
/* 3613FC E005C4BC 96020000 */  lhu       $v0, 0x0($s0)
/* 361400 E005C4C0 325200FF */  andi      $s2, $s2, 0xFF
/* 361404 E005C4C4 AC830000 */  sw        $v1, 0x0($a0)
/* 361408 E005C4C8 24430001 */  addiu     $v1, $v0, 0x1
/* 36140C E005C4CC 3042FFFF */  andi      $v0, $v0, 0xFFFF
/* 361410 E005C4D0 00021180 */  sll       $v0, $v0, 6
/* 361414 E005C4D4 A6030000 */  sh        $v1, 0x0($s0)
/* 361418 E005C4D8 8E230000 */  lw        $v1, 0x0($s1)
/* 36141C E005C4DC 00551021 */  addu      $v0, $v0, $s5
/* 361420 E005C4E0 00621821 */  addu      $v1, $v1, $v0
/* 361424 E005C4E4 24C20008 */  addiu     $v0, $a2, 0x8
/* 361428 E005C4E8 AC830004 */  sw        $v1, 0x4($a0)
/* 36142C E005C4EC AEE20000 */  sw        $v0, 0x0($s7)
/* 361430 E005C4F0 3C02FA00 */  lui       $v0, (0xFA000000 >> 16)
/* 361434 E005C4F4 ACC20000 */  sw        $v0, 0x0($a2)
/* 361438 E005C4F8 24C20010 */  addiu     $v0, $a2, 0x10
/* 36143C E005C4FC ACC50004 */  sw        $a1, 0x4($a2)
/* 361440 E005C500 AEE20000 */  sw        $v0, 0x0($s7)
/* 361444 E005C504 3C02FB00 */  lui       $v0, (0xFB000000 >> 16)
/* 361448 E005C508 ACC20008 */  sw        $v0, 0x8($a2)
/* 36144C E005C50C 24C20018 */  addiu     $v0, $a2, 0x18
/* 361450 E005C510 ACD2000C */  sw        $s2, 0xC($a2)
/* 361454 E005C514 AEE20000 */  sw        $v0, 0x0($s7)
/* 361458 E005C518 001311C0 */  sll       $v0, $s3, 7
/* 36145C E005C51C 30420FFF */  andi      $v0, $v0, 0xFFF
/* 361460 E005C520 00021300 */  sll       $v0, $v0, 12
/* 361464 E005C524 3C04F200 */  lui       $a0, (0xF2000080 >> 16)
/* 361468 E005C528 00441025 */  or        $v0, $v0, $a0
/* 36146C E005C52C 00139940 */  sll       $s3, $s3, 5
/* 361470 E005C530 ACC20010 */  sw        $v0, 0x10($a2)
/* 361474 E005C534 26620020 */  addiu     $v0, $s3, 0x20
/* 361478 E005C538 00021080 */  sll       $v0, $v0, 2
/* 36147C E005C53C 30420FFF */  andi      $v0, $v0, 0xFFF
/* 361480 E005C540 00022B00 */  sll       $a1, $v0, 12
/* 361484 E005C544 34A20080 */  ori       $v0, $a1, 0x80
/* 361488 E005C548 1280000F */  beqz      $s4, .LE005C588
/* 36148C E005C54C ACC20014 */   sw       $v0, 0x14($a2)
/* 361490 E005C550 0080182D */  daddu     $v1, $a0, $zero
/* 361494 E005C554 34630080 */  ori       $v1, $v1, (0xF2000080 & 0xFFFF)
/* 361498 E005C558 3C040100 */  lui       $a0, (0x1000100 >> 16)
/* 36149C E005C55C 34840100 */  ori       $a0, $a0, (0x1000100 & 0xFFFF)
/* 3614A0 E005C560 24C20020 */  addiu     $v0, $a2, 0x20
/* 3614A4 E005C564 00A31825 */  or        $v1, $a1, $v1
/* 3614A8 E005C568 AEE20000 */  sw        $v0, 0x0($s7)
/* 3614AC E005C56C 26620040 */  addiu     $v0, $s3, 0x40
/* 3614B0 E005C570 00021080 */  sll       $v0, $v0, 2
/* 3614B4 E005C574 30420FFF */  andi      $v0, $v0, 0xFFF
/* 3614B8 E005C578 00021300 */  sll       $v0, $v0, 12
/* 3614BC E005C57C 00441025 */  or        $v0, $v0, $a0
/* 3614C0 E005C580 0801716D */  j         .LE005C5B4
/* 3614C4 E005C584 ACC30018 */   sw       $v1, 0x18($a2)
.LE005C588:
/* 3614C8 E005C588 3C030100 */  lui       $v1, (0x1000080 >> 16)
/* 3614CC E005C58C 34630080 */  ori       $v1, $v1, (0x1000080 & 0xFFFF)
/* 3614D0 E005C590 24C20020 */  addiu     $v0, $a2, 0x20
/* 3614D4 E005C594 AEE20000 */  sw        $v0, 0x0($s7)
/* 3614D8 E005C598 00A41025 */  or        $v0, $a1, $a0
/* 3614DC E005C59C ACC20018 */  sw        $v0, 0x18($a2)
/* 3614E0 E005C5A0 26620040 */  addiu     $v0, $s3, 0x40
/* 3614E4 E005C5A4 00021080 */  sll       $v0, $v0, 2
/* 3614E8 E005C5A8 30420FFF */  andi      $v0, $v0, 0xFFF
/* 3614EC E005C5AC 00021300 */  sll       $v0, $v0, 12
/* 3614F0 E005C5B0 00431025 */  or        $v0, $v0, $v1
.LE005C5B4:
/* 3614F4 E005C5B4 ACC2001C */  sw        $v0, 0x1C($a2)
/* 3614F8 E005C5B8 8FC20008 */  lw        $v0, 0x8($fp)
/* 3614FC E005C5BC 24110001 */  addiu     $s1, $zero, 0x1
/* 361500 E005C5C0 0222102A */  slt       $v0, $s1, $v0
/* 361504 E005C5C4 10400037 */  beqz      $v0, .LE005C6A4
/* 361508 E005C5C8 26D60034 */   addiu    $s6, $s6, 0x34
/* 36150C E005C5CC 3C15800A */  lui       $s5, %hi(gDisplayContext)
/* 361510 E005C5D0 26B5A674 */  addiu     $s5, $s5, %lo(gDisplayContext)
/* 361514 E005C5D4 3C148007 */  lui       $s4, %hi(gMatrixListPos)
/* 361518 E005C5D8 269441F0 */  addiu     $s4, $s4, %lo(gMatrixListPos)
/* 36151C E005C5DC 3C130001 */  lui       $s3, (0x11630 >> 16)
/* 361520 E005C5E0 36731630 */  ori       $s3, $s3, (0x11630 & 0xFFFF)
/* 361524 E005C5E4 3C12800A */  lui       $s2, %hi(gMainGfxPos)
/* 361528 E005C5E8 2652A66C */  addiu     $s2, $s2, %lo(gMainGfxPos)
/* 36152C E005C5EC 26D0000C */  addiu     $s0, $s6, 0xC
.LE005C5F0:
/* 361530 E005C5F0 27A40018 */  addiu     $a0, $sp, 0x18
/* 361534 E005C5F4 26310001 */  addiu     $s1, $s1, 0x1
/* 361538 E005C5F8 8E05FFF8 */  lw        $a1, -0x8($s0)
/* 36153C E005C5FC 8E06FFFC */  lw        $a2, -0x4($s0)
/* 361540 E005C600 8E070000 */  lw        $a3, 0x0($s0)
/* 361544 E005C604 0C080108 */  jal       shim_guTranslateF
/* 361548 E005C608 26100034 */   addiu    $s0, $s0, 0x34
/* 36154C E005C60C 27A40018 */  addiu     $a0, $sp, 0x18
/* 361550 E005C610 96850000 */  lhu       $a1, 0x0($s4)
/* 361554 E005C614 8EA20000 */  lw        $v0, 0x0($s5)
/* 361558 E005C618 00052980 */  sll       $a1, $a1, 6
/* 36155C E005C61C 00B32821 */  addu      $a1, $a1, $s3
/* 361560 E005C620 0C080118 */  jal       shim_guMtxF2L
/* 361564 E005C624 00452821 */   addu     $a1, $v0, $a1
/* 361568 E005C628 3C06D838 */  lui       $a2, (0xD8380002 >> 16)
/* 36156C E005C62C 8E440000 */  lw        $a0, 0x0($s2)
/* 361570 E005C630 34C60002 */  ori       $a2, $a2, (0xD8380002 & 0xFFFF)
/* 361574 E005C634 0080282D */  daddu     $a1, $a0, $zero
/* 361578 E005C638 24840008 */  addiu     $a0, $a0, 0x8
/* 36157C E005C63C AE440000 */  sw        $a0, 0x0($s2)
/* 361580 E005C640 96820000 */  lhu       $v0, 0x0($s4)
/* 361584 E005C644 3C03DA38 */  lui       $v1, (0xDA380000 >> 16)
/* 361588 E005C648 ACA30000 */  sw        $v1, 0x0($a1)
/* 36158C E005C64C 24430001 */  addiu     $v1, $v0, 0x1
/* 361590 E005C650 3042FFFF */  andi      $v0, $v0, 0xFFFF
/* 361594 E005C654 00021180 */  sll       $v0, $v0, 6
/* 361598 E005C658 A6830000 */  sh        $v1, 0x0($s4)
/* 36159C E005C65C 8EA30000 */  lw        $v1, 0x0($s5)
/* 3615A0 E005C660 00531021 */  addu      $v0, $v0, $s3
/* 3615A4 E005C664 00621821 */  addu      $v1, $v1, $v0
/* 3615A8 E005C668 24820008 */  addiu     $v0, $a0, 0x8
/* 3615AC E005C66C ACA30004 */  sw        $v1, 0x4($a1)
/* 3615B0 E005C670 AE420000 */  sw        $v0, 0x0($s2)
/* 3615B4 E005C674 3C02DE00 */  lui       $v0, (0xDE000000 >> 16)
/* 3615B8 E005C678 AC820000 */  sw        $v0, 0x0($a0)
/* 3615BC E005C67C 8FA900D8 */  lw        $t1, 0xD8($sp)
/* 3615C0 E005C680 24020040 */  addiu     $v0, $zero, 0x40
/* 3615C4 E005C684 AC860008 */  sw        $a2, 0x8($a0)
/* 3615C8 E005C688 AC82000C */  sw        $v0, 0xC($a0)
/* 3615CC E005C68C AC890004 */  sw        $t1, 0x4($a0)
/* 3615D0 E005C690 8FC20008 */  lw        $v0, 0x8($fp)
/* 3615D4 E005C694 24840010 */  addiu     $a0, $a0, 0x10
/* 3615D8 E005C698 0222102A */  slt       $v0, $s1, $v0
/* 3615DC E005C69C 1440FFD4 */  bnez      $v0, .LE005C5F0
/* 3615E0 E005C6A0 AE440000 */   sw       $a0, 0x0($s2)
.LE005C6A4:
/* 3615E4 E005C6A4 3C05D838 */  lui       $a1, (0xD8380002 >> 16)
/* 3615E8 E005C6A8 3C03800A */  lui       $v1, %hi(gMainGfxPos)
/* 3615EC E005C6AC 2463A66C */  addiu     $v1, $v1, %lo(gMainGfxPos)
/* 3615F0 E005C6B0 8C620000 */  lw        $v0, 0x0($v1)
/* 3615F4 E005C6B4 34A50002 */  ori       $a1, $a1, (0xD8380002 & 0xFFFF)
/* 3615F8 E005C6B8 0040202D */  daddu     $a0, $v0, $zero
/* 3615FC E005C6BC 24420008 */  addiu     $v0, $v0, 0x8
/* 361600 E005C6C0 AC620000 */  sw        $v0, 0x0($v1)
/* 361604 E005C6C4 24020040 */  addiu     $v0, $zero, 0x40
/* 361608 E005C6C8 AC850000 */  sw        $a1, 0x0($a0)
/* 36160C E005C6CC AC820004 */  sw        $v0, 0x4($a0)
/* 361610 E005C6D0 8FBF0104 */  lw        $ra, 0x104($sp)
/* 361614 E005C6D4 8FBE0100 */  lw        $fp, 0x100($sp)
/* 361618 E005C6D8 8FB700FC */  lw        $s7, 0xFC($sp)
/* 36161C E005C6DC 8FB600F8 */  lw        $s6, 0xF8($sp)
/* 361620 E005C6E0 8FB500F4 */  lw        $s5, 0xF4($sp)
/* 361624 E005C6E4 8FB400F0 */  lw        $s4, 0xF0($sp)
/* 361628 E005C6E8 8FB300EC */  lw        $s3, 0xEC($sp)
/* 36162C E005C6EC 8FB200E8 */  lw        $s2, 0xE8($sp)
/* 361630 E005C6F0 8FB100E4 */  lw        $s1, 0xE4($sp)
/* 361634 E005C6F4 8FB000E0 */  lw        $s0, 0xE0($sp)
/* 361638 E005C6F8 03E00008 */  jr        $ra
/* 36163C E005C6FC 27BD0108 */   addiu    $sp, $sp, 0x108

### DECOMPILED C INSTRUCTIONS:

void steam_burst_appendGfx(void* effect) {
    SteamBurstFXData* part = ((EffectInstance*)effect)->data.steamBurst;
    s32 unk_30_s32 = part->unk_30;
    s32 envAlpha = (part->unk_30 - unk_30_s32) * 256.0f;
    s32 cond = (unk_30_s32 == 6);
    Gfx* dlist = D_E005C700[part->unk_00];
    Gfx* dlist2 = D_E005C704[part->unk_00];
    Matrix4f sp18;
    Matrix4f sp58;
    Matrix4f sp98;
    s32 i;

    gDPPipeSync(gMainGfxPos++);
    gSPSegment(gMainGfxPos++, 0x09, VIRTUAL_TO_PHYSICAL(((EffectInstance*)effect)->graphics->data));
    gSPDisplayList(gMainGfxPos++, dlist2);

    shim_guTranslateF(sp18, part->unk_04, part->unk_08, part->unk_0C);
    shim_guRotateF(sp58, -gCameras[gCurrentCameraID].currentYaw, 0.0f, 1.0f, 0.0f);
    shim_guMtxCatF(sp58, sp18, sp98);
    shim_guMtxF2L(sp98, &gDisplayContext->matrixStack[gMatrixListPos]);

    gSPMatrix(gMainGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW);
    gDPSetPrimColor(gMainGfxPos++, 0, 0, 230, 222, 222, 130);
    gDPSetEnvColor(gMainGfxPos++, 0, 0, 0, envAlpha);
    gDPSetTileSize(gMainGfxPos++, G_TX_RENDERTILE,
        (unk_30_s32 * 32     ) * 4, 0,
        (unk_30_s32 * 32 + 32) * 4, 32 * 4);

    if (cond) {
        gDPSetTileSize(gMainGfxPos++, 1,
            (unk_30_s32 * 32 + 32) * 4, 32 * 4,
            (unk_30_s32 * 32 + 64) * 4, 64 * 4);
    } else {
        gDPSetTileSize(gMainGfxPos++, 1,
            (unk_30_s32 * 32 + 32) * 4, 0,
            (unk_30_s32 * 32 + 64) * 4, 32 * 4);
    }

    part++;
    for (i = 1; i < ((EffectInstance*)effect)->numParts; i++, part++) {
        shim_guTranslateF(sp18, part->unk_04, part->unk_08, part->unk_0C);
        shim_guMtxF2L(sp18, &gDisplayContext->matrixStack[gMatrixListPos]);

        gSPMatrix(gMainGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW);
        gSPDisplayList(gMainGfxPos++, dlist);
        gSPPopMatrix(gMainGfxPos++, G_MTX_MODELVIEW);
    }

    gSPPopMatrix(gMainGfxPos++, G_MTX_MODELVIEW);
}


### RAW ASSEMBLY INSTRUCTIONS:

glabel func_80240D10
/* BD4580 80240D10 27BDFFC8 */  addiu     $sp, $sp, -0x38
glabel func_80240D14
/* BD4584 80240D14 AFB20020 */  sw        $s2, 0x20($sp)
glabel func_80240D18
/* BD4588 80240D18 0080902D */  daddu     $s2, $a0, $zero
glabel func_80240D1C
/* BD458C 80240D1C AFBF0028 */  sw        $ra, 0x28($sp)
.L80240D20:
/* BD4590 80240D20 AFB30024 */  sw        $s3, 0x24($sp)
D_80240D24:
/* BD4594 80240D24 AFB1001C */  sw        $s1, 0x1C($sp)
glabel func_80240D28
/* BD4598 80240D28 AFB00018 */  sw        $s0, 0x18($sp)
glabel .L80240D2C
/* BD459C 80240D2C F7B40030 */  sdc1      $f20, 0x30($sp)
glabel dead_11_FlyingAI_ChaseInit
/* BD45A0 80240D30 0C00EABB */  jal       get_npc_unsafe
glabel .L80240D34
/* BD45A4 80240D34 8E44014C */   lw       $a0, 0x14C($s2)
flo_24_pad_D38:
/* BD45A8 80240D38 0040802D */  daddu     $s0, $v0, $zero
glabel pra_40_EnablePartnerReflection
/* BD45AC 80240D3C 8E430074 */  lw        $v1, 0x74($s2)
glabel dead_flo_08_DeadUnkFunc1
/* BD45B0 80240D40 8E110020 */  lw        $s1, 0x20($s0)
glabel func_80240D44
/* BD45B4 80240D44 2C62000E */  sltiu     $v0, $v1, 0xE
glabel func_80240D48
/* BD45B8 80240D48 8E330020 */  lw        $s3, 0x20($s1)
glabel mgm_00_PatrolAI_LosePlayer
/* BD45BC 80240D4C 10400099 */  beqz      $v0, omo_17_FlyingAI_WanderInit
glabel func_80240D50
/* BD45C0 80240D50 00031080 */   sll      $v0, $v1, 2
glabel func_80240D54
/* BD45C4 80240D54 3C018024 */  lui       $at, %hi(jtbl_80246F00)
glabel dead_flo_16_SuperBlock_PartnerSparkles2
/* BD45C8 80240D58 00220821 */  addu      $at, $at, $v0
glabel func_80240D5C
/* BD45CC 80240D5C 8C226F00 */  lw        $v0, %lo(jtbl_80246F00)($at)
glabel mim_08_FlyingAI_ChaseInit
/* BD45D0 80240D60 00400008 */  jr        $v0
glabel .L80240D64
/* BD45D4 80240D64 00000000 */   nop
glabel func_80240D68
/* BD45D8 80240D68 C620000C */  lwc1      $f0, 0xC($s1)
glabel func_80240D6C
/* BD45DC 80240D6C C64C0078 */  lwc1      $f12, 0x78($s2)
glabel func_80240D70
/* BD45E0 80240D70 46806320 */  cvt.s.w   $f12, $f12
glabel func_80240D74
/* BD45E4 80240D74 0C00A6C9 */  jal       clamp_angle
glabel func_80240D78
/* BD45E8 80240D78 46006300 */   add.s    $f12, $f12, $f0
glabel func_80240D7C
/* BD45EC 80240D7C E600000C */  swc1      $f0, 0xC($s0)
glabel dead_flo_08_AvoidPlayerAI_ChaseInit
/* BD45F0 80240D80 8E630000 */  lw        $v1, 0x0($s3)
glabel mgm_01_DoubleScore
/* BD45F4 80240D84 24020001 */  addiu     $v0, $zero, 0x1
glabel omo_07_PatrolAI_ChaseInit
/* BD45F8 80240D88 1462008A */  bne       $v1, $v0, omo_17_FlyingAI_WanderInit
.L80240D8C:
/* BD45FC 80240D8C 24040014 */   addiu    $a0, $zero, 0x14
glabel omo_11_SuperBlock_AnimateEnergyOrbs
/* BD4600 80240D90 0C00A67F */  jal       rand_int
glabel .L80240D94
/* BD4604 80240D94 AE430074 */   sw       $v1, 0x74($s2)
D_80240D98:
/* BD4608 80240D98 2442000A */  addiu     $v0, $v0, 0xA
D_80240D9C:
/* BD460C 80240D9C 080903ED */  j         omo_17_FlyingAI_WanderInit
glabel dead_flo_16_SuperBlock_PartnerSparkles4
/* BD4610 80240DA0 A602008E */   sh       $v0, 0x8E($s0)
glabel func_80240DA4_EA9884
/* BD4614 80240DA4 C620000C */  lwc1      $f0, 0xC($s1)
glabel func_80240DA8
/* BD4618 80240DA8 C64C0078 */  lwc1      $f12, 0x78($s2)
glabel sam_08_MeleeHitbox_31
/* BD461C 80240DAC 46806320 */  cvt.s.w   $f12, $f12
glabel .L80240DB0
/* BD4620 80240DB0 0C00A6C9 */  jal       clamp_angle
glabel mgm_00_PatrolNoAttackAI_15
/* BD4624 80240DB4 46006300 */   add.s    $f12, $f12, $f0
glabel mgm_01_EndBowserPanelAnimation
/* BD4628 80240DB8 9602008E */  lhu       $v0, 0x8E($s0)
glabel pra_31_UnkFunc12
/* BD462C 80240DBC E600000C */  swc1      $f0, 0xC($s0)
glabel func_80240DC0
/* BD4630 80240DC0 2442FFFF */  addiu     $v0, $v0, -0x1
glabel dead_kzn_17_func_80240DC4_EA16C4
/* BD4634 80240DC4 A602008E */  sh        $v0, 0x8E($s0)
glabel .L80240DC8
/* BD4638 80240DC8 00021400 */  sll       $v0, $v0, 16
glabel func_80240DCC
/* BD463C 80240DCC 14400079 */  bnez      $v0, omo_17_FlyingAI_WanderInit
glabel func_80240DD0
/* BD4640 80240DD0 3C04B000 */   lui      $a0, (0xB000000F >> 16)
glabel .L80240DD4
/* BD4644 80240DD4 C6000040 */  lwc1      $f0, 0x40($s0)
glabel .L80240DD8
/* BD4648 80240DD8 3484000F */  ori       $a0, $a0, (0xB000000F & 0xFFFF)
D_80240DDC:
/* BD464C 80240DDC E7A00010 */  swc1      $f0, 0x10($sp)
glabel func_80240DE0
/* BD4650 80240DE0 8E060038 */  lw        $a2, 0x38($s0)
D_80240DE4:
/* BD4654 80240DE4 8E07003C */  lw        $a3, 0x3C($s0)
glabel dead_flo_16_SuperBlock_WaitForPlayerToLand
/* BD4658 80240DE8 0C052757 */  jal       sfx_play_sound_at_position
glabel func_80240DEC
/* BD465C 80240DEC 0000282D */   daddu    $a1, $zero, $zero
glabel func_80240DF0
/* BD4660 80240DF0 24020002 */  addiu     $v0, $zero, 0x2
glabel func_80240DF4
/* BD4664 80240DF4 AE420074 */  sw        $v0, 0x74($s2)
glabel func_80240DF8
/* BD4668 80240DF8 C6000038 */  lwc1      $f0, 0x38($s0)
glabel func_80240DFC
/* BD466C 80240DFC C602003C */  lwc1      $f2, 0x3C($s0)
glabel func_80240E00
/* BD4670 80240E00 C6040040 */  lwc1      $f4, 0x40($s0)
D_80240E04:
/* BD4674 80240E04 A600008E */  sh        $zero, 0x8E($s0)
glabel flo_22_pad_E08
/* BD4678 80240E08 E6000060 */  swc1      $f0, 0x60($s0)
glabel func_80240E0C
/* BD467C 80240E0C E6020064 */  swc1      $f2, 0x64($s0)
D_80240E10:
/* BD4680 80240E10 080903ED */  j         omo_17_FlyingAI_WanderInit
glabel func_80240E14
/* BD4684 80240E14 E6040068 */   swc1     $f4, 0x68($s0)
glabel dead_flo_16_IsPlayerPounding
/* BD4688 80240E18 C620000C */  lwc1      $f0, 0xC($s1)
glabel func_80240E1C
/* BD468C 80240E1C C64C0078 */  lwc1      $f12, 0x78($s2)
glabel func_80240E20
/* BD4690 80240E20 46806320 */  cvt.s.w   $f12, $f12
D_80240E24:
/* BD4694 80240E24 0C00A6C9 */  jal       clamp_angle
glabel flo_12_pad_E28
/* BD4698 80240E28 46006300 */   add.s    $f12, $f12, $f0
glabel func_80240E2C
/* BD469C 80240E2C 46000506 */  mov.s     $f20, $f0
D_80240E30:
/* BD46A0 80240E30 4406A000 */  mfc1      $a2, $f20
glabel func_80240E34
/* BD46A4 80240E34 00000000 */  nop
glabel func_80240E38
/* BD46A8 80240E38 AE06000C */  sw        $a2, 0xC($s0)
D_80240E3C:
/* BD46AC 80240E3C C6200038 */  lwc1      $f0, 0x38($s1)
D_80240E40:
/* BD46B0 80240E40 E6000038 */  swc1      $f0, 0x38($s0)
.L80240E44:
/* BD46B4 80240E44 C6200040 */  lwc1      $f0, 0x40($s1)
glabel func_80240E48
/* BD46B8 80240E48 E6000040 */  swc1      $f0, 0x40($s0)
glabel func_80240E4C
/* BD46BC 80240E4C 8E250010 */  lw        $a1, 0x10($s1)
glabel dead_flo_16_FlyingAI_WanderInit
/* BD46C0 80240E50 0C00EA95 */  jal       npc_move_heading
glabel func_80240E54
/* BD46C4 80240E54 0200202D */   daddu    $a0, $s0, $zero
glabel func_80240E58
/* BD46C8 80240E58 8602008E */  lh        $v0, 0x8E($s0)
D_80240E5C:
/* BD46CC 80240E5C 3C014220 */  lui       $at, (0x42200000 >> 16)
glabel func_80240E60
/* BD46D0 80240E60 44817000 */  mtc1      $at, $f14
glabel dead_11_FlyingAI_Chase
/* BD46D4 80240E64 44820000 */  mtc1      $v0, $f0
D_80240E68:
/* BD46D8 80240E68 00000000 */  nop
glabel func_80240E6C
/* BD46DC 80240E6C 46800020 */  cvt.s.w   $f0, $f0
glabel func_80240E70
/* BD46E0 80240E70 46007001 */  sub.s     $f0, $f14, $f0
glabel func_80240E74
/* BD46E4 80240E74 460E0003 */  div.s     $f0, $f0, $f14
glabel .L80240E78
/* BD46E8 80240E78 46000002 */  mul.s     $f0, $f0, $f0
glabel .L80240E7C
/* BD46EC 80240E7C 00000000 */  nop
glabel func_80240E80
/* BD46F0 80240E80 C60C0038 */  lwc1      $f12, 0x38($s0)
glabel dead_flo_13_FlyingAI_ChaseInit
/* BD46F4 80240E84 C6060060 */  lwc1      $f6, 0x60($s0)
flo_18_pad_E88:
/* BD46F8 80240E88 46066181 */  sub.s     $f6, $f12, $f6
glabel sam_02_Quizmo_RenderInit
/* BD46FC 80240E8C 46003182 */  mul.s     $f6, $f6, $f0
D_80240E90:
/* BD4700 80240E90 00000000 */  nop
glabel func_80240E94
/* BD4704 80240E94 C60A0040 */  lwc1      $f10, 0x40($s0)
glabel func_80240E98
/* BD4708 80240E98 C6080068 */  lwc1      $f8, 0x68($s0)
glabel func_80240E9C
/* BD470C 80240E9C C624003C */  lwc1      $f4, 0x3C($s1)
glabel .L80240EA0
/* BD4710 80240EA0 46085201 */  sub.s     $f8, $f10, $f8
glabel flo_03_pad_EA4
/* BD4714 80240EA4 3C01447A */  lui       $at, (0x447A0000 >> 16)
glabel func_80240EA8
/* BD4718 80240EA8 44811000 */  mtc1      $at, $f2
glabel func_80240EAC
/* BD471C 80240EAC 00000000 */  nop
glabel func_80240EB0
/* BD4720 80240EB0 46022100 */  add.s     $f4, $f4, $f2
glabel func_80240EB4
/* BD4724 80240EB4 46004202 */  mul.s     $f8, $f8, $f0
glabel func_80240EB8
/* BD4728 80240EB8 00000000 */  nop
glabel sam_11_Quizmo_UpdateRecords
/* BD472C 80240EBC E604003C */  swc1      $f4, 0x3C($s0)
glabel end_01_CharAnim_FadeIn_5
/* BD4730 80240EC0 46002006 */  mov.s     $f0, $f4
glabel .L80240EC4
/* BD4734 80240EC4 C6040064 */  lwc1      $f4, 0x64($s0)
glabel dead_11_FlyingAI_LosePlayer
/* BD4738 80240EC8 46040001 */  sub.s     $f0, $f0, $f4
glabel func_80240ECC
/* BD473C 80240ECC 44821000 */  mtc1      $v0, $f2
glabel func_80240ED0
/* BD4740 80240ED0 00000000 */  nop
glabel .L80240ED4
/* BD4744 80240ED4 468010A0 */  cvt.s.w   $f2, $f2
glabel sam_02_Quizmo_NPC_Aux_Impl
/* BD4748 80240ED8 46020002 */  mul.s     $f0, $f0, $f2
glabel omo_02_GuardAI_IdleInit
/* BD474C 80240EDC 00000000 */  nop
D_80240EE0:
/* BD4750 80240EE0 9602008E */  lhu       $v0, 0x8E($s0)
glabel .L80240EE4
/* BD4754 80240EE4 24030028 */  addiu     $v1, $zero, 0x28
glabel pra_39_worker_reflect_partner_floor
/* BD4758 80240EE8 24420001 */  addiu     $v0, $v0, 0x1
glabel func_80240EEC
/* BD475C 80240EEC 46066301 */  sub.s     $f12, $f12, $f6
D_80240EF0:
/* BD4760 80240EF0 A602008E */  sh        $v0, 0x8E($s0)
glabel sam_08_MeleeHitbox_33
/* BD4764 80240EF4 00021400 */  sll       $v0, $v0, 16
glabel func_80240EF8
/* BD4768 80240EF8 46085281 */  sub.s     $f10, $f10, $f8
glabel dead_flo_09_FlyingAI_JumpInit
/* BD476C 80240EFC 00021403 */  sra       $v0, $v0, 16
glabel func_80240F00
/* BD4770 80240F00 460E0003 */  div.s     $f0, $f0, $f14
glabel func_80240F04
/* BD4774 80240F04 46040000 */  add.s     $f0, $f0, $f4
flo_03_varStash:
/* BD4778 80240F08 E60C0038 */  swc1      $f12, 0x38($s0)
D_80240F0C:
/* BD477C 80240F0C E60A0040 */  swc1      $f10, 0x40($s0)
glabel func_80240F10
/* BD4780 80240F10 14430028 */  bne       $v0, $v1, omo_17_FlyingAI_WanderInit
glabel func_80240F14
/* BD4784 80240F14 E600003C */   swc1     $f0, 0x3C($s0)
glabel func_80240F18
/* BD4788 80240F18 080903EC */  j         func_80240FB0_EB9E00
glabel func_80240F1C
/* BD478C 80240F1C 2402000A */   addiu    $v0, $zero, 0xA
glabel func_80240F20
/* BD4790 80240F20 C620000C */  lwc1      $f0, 0xC($s1)
glabel .L80240F24
/* BD4794 80240F24 C64C0078 */  lwc1      $f12, 0x78($s2)
dead_flo_03_varStash:
/* BD4798 80240F28 46806320 */  cvt.s.w   $f12, $f12
glabel func_80240F2C_D7FC8C
/* BD479C 80240F2C 0C00A6C9 */  jal       clamp_angle
glabel func_80240F30
/* BD47A0 80240F30 46006300 */   add.s    $f12, $f12, $f0
glabel .L80240F34
/* BD47A4 80240F34 46000506 */  mov.s     $f20, $f0
glabel func_80240F38
/* BD47A8 80240F38 0240202D */  daddu     $a0, $s2, $zero
D_80240F3C:
/* BD47AC 80240F3C 3C05FD05 */  lui       $a1, (0xFD050F82 >> 16)
glabel func_80240F40_EB9D90
/* BD47B0 80240F40 34A50F82 */  ori       $a1, $a1, (0xFD050F82 & 0xFFFF)
glabel func_80240F44
/* BD47B4 80240F44 0C0B1EAF */  jal       evt_get_variable
glabel func_80240F48
/* BD47B8 80240F48 E614000C */   swc1     $f20, 0xC($s0)
glabel func_80240F4C
/* BD47BC 80240F4C 24030001 */  addiu     $v1, $zero, 0x1
glabel pra_39_SwooperAI_Main
/* BD47C0 80240F50 14430002 */  bne       $v0, $v1, .L80240F5C
glabel func_80240F54_DE33E4
/* BD47C4 80240F54 2402000D */   addiu    $v0, $zero, 0xD
glabel func_80240F58
/* BD47C8 80240F58 AE420074 */  sw        $v0, 0x74($s2)
.L80240F5C:
/* BD47CC 80240F5C C6200038 */  lwc1      $f0, 0x38($s1)
glabel func_80240F60_D4DFA0
/* BD47D0 80240F60 4406A000 */  mfc1      $a2, $f20
D_80240F64:
/* BD47D4 80240F64 E6000038 */  swc1      $f0, 0x38($s0)
glabel func_80240F68
/* BD47D8 80240F68 C6200040 */  lwc1      $f0, 0x40($s1)
D_80240F6C:
/* BD47DC 80240F6C E6000040 */  swc1      $f0, 0x40($s0)
glabel func_80240F70
/* BD47E0 80240F70 8E250010 */  lw        $a1, 0x10($s1)
glabel dead_flo_09lo_09_FlyingAI_Jump
/* BD47E4 80240F74 0C00EA95 */  jal       npc_move_heading
glabel func_80240F78
/* BD47E8 80240F78 0200202D */   daddu    $a0, $s0, $zero
glabel omo_04_FlyingAI_JumpInit
/* BD47EC 80240F7C C620003C */  lwc1      $f0, 0x3C($s1)
glabel func_80240F80
/* BD47F0 80240F80 3C01447A */  lui       $at, (0x447A0000 >> 16)
glabel func_80240F84
/* BD47F4 80240F84 44811000 */  mtc1      $at, $f2
glabel kzn_04_SuperBlock_PartnerSparkles2
/* BD47F8 80240F88 00000000 */  nop
glabel func_80240F8C
/* BD47FC 80240F8C 46020000 */  add.s     $f0, $f0, $f2
glabel func_80240F90
/* BD4800 80240F90 080903ED */  j         omo_17_FlyingAI_WanderInit
glabel func_80240F94
/* BD4804 80240F94 E600003C */   swc1     $f0, 0x3C($s0)
glabel .L80240F98
/* BD4808 80240F98 0240202D */  daddu     $a0, $s2, $zero
glabel func_80240F9C
/* BD480C 80240F9C 3C05FD05 */  lui       $a1, (0xFD050F82 >> 16)
glabel func_80240FA0
/* BD4810 80240FA0 0C0B1EAF */  jal       evt_get_variable
glabel func_80240FA4
/* BD4814 80240FA4 34A50F82 */   ori      $a1, $a1, (0xFD050F82 & 0xFFFF)
glabel func_80240FA8
/* BD4818 80240FA8 14400002 */  bnez      $v0, omo_17_FlyingAI_WanderInit
glabel func_80240FAC
/* BD481C 80240FAC 2402000A */   addiu    $v0, $zero, 0xA
glabel func_80240FB0_EB9E00
/* BD4820 80240FB0 AE420074 */  sw        $v0, 0x74($s2)
glabel omo_17_FlyingAI_WanderInit
/* BD4824 80240FB4 8FBF0028 */  lw        $ra, 0x28($sp)
glabel func_80240FB8
/* BD4828 80240FB8 8FB30024 */  lw        $s3, 0x24($sp)
glabel func_80240FBC
/* BD482C 80240FBC 8FB20020 */  lw        $s2, 0x20($sp)
glabel func_80240FC0
/* BD4830 80240FC0 8FB1001C */  lw        $s1, 0x1C($sp)
glabel func_80240FC4
/* BD4834 80240FC4 8FB00018 */  lw        $s0, 0x18($sp)
.L80240FC8:
/* BD4838 80240FC8 D7B40030 */  ldc1      $f20, 0x30($sp)
glabel func_80240FCC
/* BD483C 80240FCC 24020002 */  addiu     $v0, $zero, 0x2
tst_04_B_80240FD0:
/* BD4840 80240FD0 03E00008 */  jr        $ra
glabel func_80240FD4
/* BD4844 80240FD4 27BD0038 */   addiu    $sp, $sp, 0x38

### DECOMPILED C INSTRUCTIONS:

API_CALLABLE(func_80240D10_BD4580) {
    Npc* npc = get_npc_unsafe(script->owner2.npcID);
    Npc* hiddenBoo = npc->blur.keepAwayNpc;
    f32 posX, posY, posZ;
    f32 interpAlpha, alphaSquared;
    f32 deltaX, deltaZ;
    s32* isGameStarted;
    f32 yaw;

    isGameStarted = hiddenBoo->blur.keepAwayStarted;
    switch (script->functionTemp[1]) {
        case RING_STATE_0:
            npc->yaw = clamp_angle(script->functionTemp[2] + hiddenBoo->yaw);
            if (*isGameStarted == TRUE) {
                script->functionTemp[1] = RING_STATE_1;
                npc->duration = rand_int(20) + 10;
            }
            break;
        case RING_STATE_1:
            yaw = clamp_angle(script->functionTemp[2] + hiddenBoo->yaw);
            npc->yaw = yaw;
            npc->duration--;
            if (npc->duration == 0) {
                sfx_play_sound_at_position(SOUND_B000000F, SOUND_SPACE_MODE_0, npc->pos.x, npc->pos.y, npc->pos.z);
                script->functionTemp[1] = RING_STATE_2;
                npc->duration = 0;
                npc->moveToPos.x = npc->pos.x;
                npc->moveToPos.y = npc->pos.y;
                npc->moveToPos.z = npc->pos.z;
            }
            break;
        case RING_STATE_2:
            // here `moveToPos` is original position
            yaw = clamp_angle(script->functionTemp[2] + hiddenBoo->yaw);
            npc->yaw = yaw;
            npc->pos.x = hiddenBoo->pos.x;
            npc->pos.z = hiddenBoo->pos.z;
            npc_move_heading(npc, hiddenBoo->planarFlyDist, yaw);

            interpAlpha = (40.0f - npc->duration) / 40.0f;
            alphaSquared = interpAlpha * interpAlpha;

            posX = npc->pos.x;
            posY = hiddenBoo->pos.y + 1000.0f;
            posZ = npc->pos.z;

            deltaX = (npc->pos.x - npc->moveToPos.x) * alphaSquared;
            deltaZ = (npc->pos.z - npc->moveToPos.z) * alphaSquared;
            npc->pos.y = posY;

            npc->pos.x = posX - deltaX;
            npc->pos.y = (npc->pos.y - npc->moveToPos.y) * npc->duration / 40.0f + npc->moveToPos.y;
            npc->pos.z = posZ - deltaZ;
            npc->duration++;
            if (npc->duration == 40) {
                script->functionTemp[1] = RING_STATE_10;
            }
            break;
        case RING_STATE_10:
            yaw = clamp_angle(script->functionTemp[2] + hiddenBoo->yaw);
            npc->yaw = yaw;
            if (evt_get_variable(script, MV_Unk_02) == 1) {
                script->functionTemp[1] = RING_STATE_13;
            }
            npc->pos.x = hiddenBoo->pos.x;
            npc->pos.z = hiddenBoo->pos.z;
            npc_move_heading(npc, hiddenBoo->planarFlyDist, yaw);
            npc->pos.y = hiddenBoo->pos.y + 1000.0f;
            break;
        case RING_STATE_13:
            if (evt_get_variable(script, MV_Unk_02) == 0) {
                script->functionTemp[1] = RING_STATE_10;
            }
            break;
    }
    return ApiStatus_DONE2;
}


### RAW ASSEMBLY INSTRUCTIONS:

glabel tubba_heart_attack_appendGfx
/* 3D2060 E00CC9D0 27BDFF28 */  addiu     $sp, $sp, -0xD8
/* 3D2064 E00CC9D4 0080302D */  daddu     $a2, $a0, $zero
/* 3D2068 E00CC9D8 3C07DB06 */  lui       $a3, (0xDB060024 >> 16)
/* 3D206C E00CC9DC 34E70024 */  ori       $a3, $a3, (0xDB060024 & 0xFFFF)
/* 3D2070 E00CC9E0 27A40018 */  addiu     $a0, $sp, 0x18
/* 3D2074 E00CC9E4 AFB100A4 */  sw        $s1, 0xA4($sp)
/* 3D2078 E00CC9E8 3C110001 */  lui       $s1, (0x11630 >> 16)
/* 3D207C E00CC9EC 36311630 */  ori       $s1, $s1, (0x11630 & 0xFFFF)
/* 3D2080 E00CC9F0 AFB600B8 */  sw        $s6, 0xB8($sp)
/* 3D2084 E00CC9F4 0000B02D */  daddu     $s6, $zero, $zero
/* 3D2088 E00CC9F8 27A20058 */  addiu     $v0, $sp, 0x58
/* 3D208C E00CC9FC AFB300AC */  sw        $s3, 0xAC($sp)
/* 3D2090 E00CCA00 0040982D */  daddu     $s3, $v0, $zero
/* 3D2094 E00CCA04 3C02800A */  lui       $v0, %hi(gDisplayContext)
/* 3D2098 E00CCA08 2442A674 */  addiu     $v0, $v0, %lo(gDisplayContext)
/* 3D209C E00CCA0C AFBE00C0 */  sw        $fp, 0xC0($sp)
/* 3D20A0 E00CCA10 0040F02D */  daddu     $fp, $v0, $zero
/* 3D20A4 E00CCA14 3C028007 */  lui       $v0, %hi(gMatrixListPos)
/* 3D20A8 E00CCA18 244241F0 */  addiu     $v0, $v0, %lo(gMatrixListPos)
/* 3D20AC E00CCA1C AFB500B4 */  sw        $s5, 0xB4($sp)
/* 3D20B0 E00CCA20 0040A82D */  daddu     $s5, $v0, $zero
/* 3D20B4 E00CCA24 AFB700BC */  sw        $s7, 0xBC($sp)
/* 3D20B8 E00CCA28 3C170001 */  lui       $s7, (0x11630 >> 16)
/* 3D20BC E00CCA2C 36F71630 */  ori       $s7, $s7, (0x11630 & 0xFFFF)
/* 3D20C0 E00CCA30 3C02800A */  lui       $v0, %hi(gMainGfxPos)
/* 3D20C4 E00CCA34 2442A66C */  addiu     $v0, $v0, %lo(gMainGfxPos)
/* 3D20C8 E00CCA38 AFB400B0 */  sw        $s4, 0xB0($sp)
/* 3D20CC E00CCA3C 0040A02D */  daddu     $s4, $v0, $zero
/* 3D20D0 E00CCA40 3C08800B */  lui       $t0, %hi(gCameras)
/* 3D20D4 E00CCA44 25081D80 */  addiu     $t0, $t0, %lo(gCameras)
/* 3D20D8 E00CCA48 AFBF00C4 */  sw        $ra, 0xC4($sp)
/* 3D20DC E00CCA4C AFB200A8 */  sw        $s2, 0xA8($sp)
/* 3D20E0 E00CCA50 AFB000A0 */  sw        $s0, 0xA0($sp)
/* 3D20E4 E00CCA54 F7B600D0 */  sdc1      $f22, 0xD0($sp)
/* 3D20E8 E00CCA58 F7B400C8 */  sdc1      $f20, 0xC8($sp)
/* 3D20EC E00CCA5C 8E850000 */  lw        $a1, 0x0($s4)
/* 3D20F0 E00CCA60 4480A000 */  mtc1      $zero, $f20
/* 3D20F4 E00CCA64 3C013F80 */  lui       $at, (0x3F800000 >> 16)
/* 3D20F8 E00CCA68 4481B000 */  mtc1      $at, $f22
/* 3D20FC E00CCA6C 8CC2000C */  lw        $v0, 0xC($a2)
/* 3D2100 E00CCA70 00A0182D */  daddu     $v1, $a1, $zero
/* 3D2104 E00CCA74 24A50008 */  addiu     $a1, $a1, 0x8
/* 3D2108 E00CCA78 0040902D */  daddu     $s2, $v0, $zero
/* 3D210C E00CCA7C AE850000 */  sw        $a1, 0x0($s4)
/* 3D2110 E00CCA80 8E500024 */  lw        $s0, 0x24($s2)
/* 3D2114 E00CCA84 3C02E700 */  lui       $v0, (0xE7000000 >> 16)
/* 3D2118 E00CCA88 AC620000 */  sw        $v0, 0x0($v1)
/* 3D211C E00CCA8C AC600004 */  sw        $zero, 0x4($v1)
/* 3D2120 E00CCA90 ACA70000 */  sw        $a3, 0x0($a1)
/* 3D2124 E00CCA94 8CC30010 */  lw        $v1, 0x10($a2)
/* 3D2128 E00CCA98 24A20008 */  addiu     $v0, $a1, 0x8
/* 3D212C E00CCA9C AE820000 */  sw        $v0, 0x0($s4)
/* 3D2130 E00CCAA0 8C62001C */  lw        $v0, 0x1C($v1)
/* 3D2134 E00CCAA4 3C038000 */  lui       $v1, (0x80000000 >> 16)
/* 3D2138 E00CCAA8 00431021 */  addu      $v0, $v0, $v1
/* 3D213C E00CCAAC ACA20004 */  sw        $v0, 0x4($a1)
/* 3D2140 E00CCAB0 8E450004 */  lw        $a1, 0x4($s2)
/* 3D2144 E00CCAB4 8E460008 */  lw        $a2, 0x8($s2)
/* 3D2148 E00CCAB8 3C038007 */  lui       $v1, %hi(gCurrentCameraID)
/* 3D214C E00CCABC 8C637410 */  lw        $v1, %lo(gCurrentCameraID)($v1)
/* 3D2150 E00CCAC0 8E47000C */  lw        $a3, 0xC($s2)
/* 3D2154 E00CCAC4 00031080 */  sll       $v0, $v1, 2
/* 3D2158 E00CCAC8 00431021 */  addu      $v0, $v0, $v1
/* 3D215C E00CCACC 00021080 */  sll       $v0, $v0, 2
/* 3D2160 E00CCAD0 00431023 */  subu      $v0, $v0, $v1
/* 3D2164 E00CCAD4 000218C0 */  sll       $v1, $v0, 3
/* 3D2168 E00CCAD8 00431021 */  addu      $v0, $v0, $v1
/* 3D216C E00CCADC 000210C0 */  sll       $v0, $v0, 3
/* 3D2170 E00CCAE0 00481021 */  addu      $v0, $v0, $t0
/* 3D2174 E00CCAE4 0C080108 */  jal       shim_guTranslateF
/* 3D2178 E00CCAE8 AFA20098 */   sw       $v0, 0x98($sp)
/* 3D217C E00CCAEC 8E450028 */  lw        $a1, 0x28($s2)
/* 3D2180 E00CCAF0 0260202D */  daddu     $a0, $s3, $zero
/* 3D2184 E00CCAF4 00A0302D */  daddu     $a2, $a1, $zero
/* 3D2188 E00CCAF8 0C080110 */  jal       shim_guScaleF
/* 3D218C E00CCAFC 00A0382D */   daddu    $a3, $a1, $zero
/* 3D2190 E00CCB00 0260202D */  daddu     $a0, $s3, $zero
/* 3D2194 E00CCB04 27A50018 */  addiu     $a1, $sp, 0x18
/* 3D2198 E00CCB08 0C080114 */  jal       shim_guMtxCatF
/* 3D219C E00CCB0C 00A0302D */   daddu    $a2, $a1, $zero
/* 3D21A0 E00CCB10 27A40018 */  addiu     $a0, $sp, 0x18
/* 3D21A4 E00CCB14 96A50000 */  lhu       $a1, 0x0($s5)
/* 3D21A8 E00CCB18 8FC20000 */  lw        $v0, 0x0($fp)
/* 3D21AC E00CCB1C 00052980 */  sll       $a1, $a1, 6
/* 3D21B0 E00CCB20 00B12821 */  addu      $a1, $a1, $s1
/* 3D21B4 E00CCB24 0C080118 */  jal       shim_guMtxF2L
/* 3D21B8 E00CCB28 00452821 */   addu     $a1, $v0, $a1
/* 3D21BC E00CCB2C 3C03DA38 */  lui       $v1, (0xDA380002 >> 16)
/* 3D21C0 E00CCB30 34630002 */  ori       $v1, $v1, (0xDA380002 & 0xFFFF)
/* 3D21C4 E00CCB34 321000FF */  andi      $s0, $s0, 0xFF
/* 3D21C8 E00CCB38 8E840000 */  lw        $a0, 0x0($s4)
/* 3D21CC E00CCB3C 96A20000 */  lhu       $v0, 0x0($s5)
/* 3D21D0 E00CCB40 0080282D */  daddu     $a1, $a0, $zero
/* 3D21D4 E00CCB44 24840008 */  addiu     $a0, $a0, 0x8
/* 3D21D8 E00CCB48 AE840000 */  sw        $a0, 0x0($s4)
/* 3D21DC E00CCB4C ACA30000 */  sw        $v1, 0x0($a1)
/* 3D21E0 E00CCB50 24430001 */  addiu     $v1, $v0, 0x1
/* 3D21E4 E00CCB54 3042FFFF */  andi      $v0, $v0, 0xFFFF
/* 3D21E8 E00CCB58 00021180 */  sll       $v0, $v0, 6
/* 3D21EC E00CCB5C A6A30000 */  sh        $v1, 0x0($s5)
/* 3D21F0 E00CCB60 8FC30000 */  lw        $v1, 0x0($fp)
/* 3D21F4 E00CCB64 00511021 */  addu      $v0, $v0, $s1
/* 3D21F8 E00CCB68 00621821 */  addu      $v1, $v1, $v0
/* 3D21FC E00CCB6C 24820008 */  addiu     $v0, $a0, 0x8
/* 3D2200 E00CCB70 ACA30004 */  sw        $v1, 0x4($a1)
/* 3D2204 E00CCB74 AE820000 */  sw        $v0, 0x0($s4)
/* 3D2208 E00CCB78 3C02FA00 */  lui       $v0, (0xFA000000 >> 16)
/* 3D220C E00CCB7C AC820000 */  sw        $v0, 0x0($a0)
/* 3D2210 E00CCB80 9243001B */  lbu       $v1, 0x1B($s2)
/* 3D2214 E00CCB84 9245001F */  lbu       $a1, 0x1F($s2)
/* 3D2218 E00CCB88 92460023 */  lbu       $a2, 0x23($s2)
/* 3D221C E00CCB8C 24820010 */  addiu     $v0, $a0, 0x10
/* 3D2220 E00CCB90 AE820000 */  sw        $v0, 0x0($s4)
/* 3D2224 E00CCB94 3C02FB00 */  lui       $v0, (0xFB000000 >> 16)
/* 3D2228 E00CCB98 AC820008 */  sw        $v0, 0x8($a0)
/* 3D222C E00CCB9C 24820018 */  addiu     $v0, $a0, 0x18
/* 3D2230 E00CCBA0 AC80000C */  sw        $zero, 0xC($a0)
/* 3D2234 E00CCBA4 AE820000 */  sw        $v0, 0x0($s4)
/* 3D2238 E00CCBA8 3C02DE00 */  lui       $v0, (0xDE000000 >> 16)
/* 3D223C E00CCBAC AC820010 */  sw        $v0, 0x10($a0)
/* 3D2240 E00CCBB0 3C020900 */  lui       $v0, %hi(D_09000400_415460)
/* 3D2244 E00CCBB4 24420400 */  addiu     $v0, $v0, %lo(D_09000400_415460)
/* 3D2248 E00CCBB8 AC820014 */  sw        $v0, 0x14($a0)
/* 3D224C E00CCBBC 00031E00 */  sll       $v1, $v1, 24
/* 3D2250 E00CCBC0 00052C00 */  sll       $a1, $a1, 16
/* 3D2254 E00CCBC4 00651825 */  or        $v1, $v1, $a1
/* 3D2258 E00CCBC8 00063200 */  sll       $a2, $a2, 8
/* 3D225C E00CCBCC 00661825 */  or        $v1, $v1, $a2
/* 3D2260 E00CCBD0 00701825 */  or        $v1, $v1, $s0
/* 3D2264 E00CCBD4 AC830004 */  sw        $v1, 0x4($a0)
.LE00CCBD8:
/* 3D2268 E00CCBD8 8E4306D0 */  lw        $v1, 0x6D0($s2)
/* 3D226C E00CCBDC 5060005F */  beql      $v1, $zero, .LE00CCD5C
/* 3D2270 E00CCBE0 26D60001 */   addiu    $s6, $s6, 0x1
/* 3D2274 E00CCBE4 24020007 */  addiu     $v0, $zero, 0x7
/* 3D2278 E00CCBE8 5062005C */  beql      $v1, $v0, .LE00CCD5C
/* 3D227C E00CCBEC 26D60001 */   addiu    $s6, $s6, 0x1
/* 3D2280 E00CCBF0 E7B40010 */  swc1      $f20, 0x10($sp)
/* 3D2284 E00CCBF4 8E4504DC */  lw        $a1, 0x4DC($s2)
/* 3D2288 E00CCBF8 4406A000 */  mfc1      $a2, $f20
/* 3D228C E00CCBFC 4407B000 */  mfc1      $a3, $f22
/* 3D2290 E00CCC00 0C080104 */  jal       shim_guRotateF
/* 3D2294 E00CCC04 27A40018 */   addiu    $a0, $sp, 0x18
/* 3D2298 E00CCC08 8E45002C */  lw        $a1, 0x2C($s2)
/* 3D229C E00CCC0C 8E460090 */  lw        $a2, 0x90($s2)
/* 3D22A0 E00CCC10 8E4700F4 */  lw        $a3, 0xF4($s2)
/* 3D22A4 E00CCC14 0C080108 */  jal       shim_guTranslateF
/* 3D22A8 E00CCC18 0260202D */   daddu    $a0, $s3, $zero
/* 3D22AC E00CCC1C 0260202D */  daddu     $a0, $s3, $zero
/* 3D22B0 E00CCC20 27A50018 */  addiu     $a1, $sp, 0x18
/* 3D22B4 E00CCC24 0C080114 */  jal       shim_guMtxCatF
/* 3D22B8 E00CCC28 00A0302D */   daddu    $a2, $a1, $zero
/* 3D22BC E00CCC2C 4406A000 */  mfc1      $a2, $f20
/* 3D22C0 E00CCC30 C64004DC */  lwc1      $f0, 0x4DC($s2)
/* 3D22C4 E00CCC34 4407B000 */  mfc1      $a3, $f22
/* 3D22C8 E00CCC38 46000007 */  neg.s     $f0, $f0
/* 3D22CC E00CCC3C 44050000 */  mfc1      $a1, $f0
/* 3D22D0 E00CCC40 0260202D */  daddu     $a0, $s3, $zero
/* 3D22D4 E00CCC44 0C080104 */  jal       shim_guRotateF
/* 3D22D8 E00CCC48 E7B40010 */   swc1     $f20, 0x10($sp)
/* 3D22DC E00CCC4C 0260202D */  daddu     $a0, $s3, $zero
/* 3D22E0 E00CCC50 27A50018 */  addiu     $a1, $sp, 0x18
/* 3D22E4 E00CCC54 0C080114 */  jal       shim_guMtxCatF
/* 3D22E8 E00CCC58 00A0302D */   daddu    $a2, $a1, $zero
/* 3D22EC E00CCC5C E7B60010 */  swc1      $f22, 0x10($sp)
/* 3D22F0 E00CCC60 8E450478 */  lw        $a1, 0x478($s2)
/* 3D22F4 E00CCC64 4406A000 */  mfc1      $a2, $f20
/* 3D22F8 E00CCC68 4407A000 */  mfc1      $a3, $f20
/* 3D22FC E00CCC6C 0C080104 */  jal       shim_guRotateF
/* 3D2300 E00CCC70 0260202D */   daddu    $a0, $s3, $zero
/* 3D2304 E00CCC74 0260202D */  daddu     $a0, $s3, $zero
/* 3D2308 E00CCC78 27A50018 */  addiu     $a1, $sp, 0x18
/* 3D230C E00CCC7C 0C080114 */  jal       shim_guMtxCatF
/* 3D2310 E00CCC80 00A0302D */   daddu    $a2, $a1, $zero
/* 3D2314 E00CCC84 8E4503B0 */  lw        $a1, 0x3B0($s2)
/* 3D2318 E00CCC88 8E460414 */  lw        $a2, 0x414($s2)
/* 3D231C E00CCC8C 4407B000 */  mfc1      $a3, $f22
/* 3D2320 E00CCC90 0C080110 */  jal       shim_guScaleF
/* 3D2324 E00CCC94 0260202D */   daddu    $a0, $s3, $zero
/* 3D2328 E00CCC98 0260202D */  daddu     $a0, $s3, $zero
/* 3D232C E00CCC9C 27A50018 */  addiu     $a1, $sp, 0x18
/* 3D2330 E00CCCA0 0C080114 */  jal       shim_guMtxCatF
/* 3D2334 E00CCCA4 00A0302D */   daddu    $a2, $a1, $zero
/* 3D2338 E00CCCA8 27A40018 */  addiu     $a0, $sp, 0x18
/* 3D233C E00CCCAC 96A50000 */  lhu       $a1, 0x0($s5)
/* 3D2340 E00CCCB0 8FC20000 */  lw        $v0, 0x0($fp)
/* 3D2344 E00CCCB4 00052980 */  sll       $a1, $a1, 6
/* 3D2348 E00CCCB8 00B72821 */  addu      $a1, $a1, $s7
/* 3D234C E00CCCBC 0C080118 */  jal       shim_guMtxF2L
/* 3D2350 E00CCCC0 00452821 */   addu     $a1, $v0, $a1
/* 3D2354 E00CCCC4 3C06DA38 */  lui       $a2, (0xDA380001 >> 16)
/* 3D2358 E00CCCC8 34C60001 */  ori       $a2, $a2, (0xDA380001 & 0xFFFF)
/* 3D235C E00CCCCC 8E840000 */  lw        $a0, 0x0($s4)
/* 3D2360 E00CCCD0 3C07D838 */  lui       $a3, (0xD8380002 >> 16)
/* 3D2364 E00CCCD4 0080282D */  daddu     $a1, $a0, $zero
/* 3D2368 E00CCCD8 24840008 */  addiu     $a0, $a0, 0x8
/* 3D236C E00CCCDC AE840000 */  sw        $a0, 0x0($s4)
/* 3D2370 E00CCCE0 96A20000 */  lhu       $v0, 0x0($s5)
/* 3D2374 E00CCCE4 3C03DA38 */  lui       $v1, (0xDA380000 >> 16)
/* 3D2378 E00CCCE8 ACA30000 */  sw        $v1, 0x0($a1)
/* 3D237C E00CCCEC 24430001 */  addiu     $v1, $v0, 0x1
/* 3D2380 E00CCCF0 3042FFFF */  andi      $v0, $v0, 0xFFFF
/* 3D2384 E00CCCF4 00021180 */  sll       $v0, $v0, 6
/* 3D2388 E00CCCF8 A6A30000 */  sh        $v1, 0x0($s5)
/* 3D238C E00CCCFC 8FC30000 */  lw        $v1, 0x0($fp)
/* 3D2390 E00CCD00 00571021 */  addu      $v0, $v0, $s7
/* 3D2394 E00CCD04 00621821 */  addu      $v1, $v1, $v0
/* 3D2398 E00CCD08 24820008 */  addiu     $v0, $a0, 0x8
/* 3D239C E00CCD0C ACA30004 */  sw        $v1, 0x4($a1)
/* 3D23A0 E00CCD10 AE820000 */  sw        $v0, 0x0($s4)
/* 3D23A4 E00CCD14 24820010 */  addiu     $v0, $a0, 0x10
/* 3D23A8 E00CCD18 AC860000 */  sw        $a2, 0x0($a0)
/* 3D23AC E00CCD1C AE820000 */  sw        $v0, 0x0($s4)
/* 3D23B0 E00CCD20 8FA90098 */  lw        $t1, 0x98($sp)
/* 3D23B4 E00CCD24 34E70002 */  ori       $a3, $a3, (0xD8380002 & 0xFFFF)
/* 3D23B8 E00CCD28 8D230204 */  lw        $v1, 0x204($t1)
/* 3D23BC E00CCD2C 3C02DE00 */  lui       $v0, (0xDE000000 >> 16)
/* 3D23C0 E00CCD30 AC820008 */  sw        $v0, 0x8($a0)
/* 3D23C4 E00CCD34 3C020900 */  lui       $v0, %hi(D_09000518_415578)
/* 3D23C8 E00CCD38 24420518 */  addiu     $v0, $v0, %lo(D_09000518_415578)
/* 3D23CC E00CCD3C AC82000C */  sw        $v0, 0xC($a0)
/* 3D23D0 E00CCD40 24820018 */  addiu     $v0, $a0, 0x18
/* 3D23D4 E00CCD44 AE820000 */  sw        $v0, 0x0($s4)
/* 3D23D8 E00CCD48 24020040 */  addiu     $v0, $zero, 0x40
/* 3D23DC E00CCD4C AC870010 */  sw        $a3, 0x10($a0)
/* 3D23E0 E00CCD50 AC820014 */  sw        $v0, 0x14($a0)
/* 3D23E4 E00CCD54 AC830004 */  sw        $v1, 0x4($a0)
/* 3D23E8 E00CCD58 26D60001 */  addiu     $s6, $s6, 0x1
.LE00CCD5C:
/* 3D23EC E00CCD5C 2AC20019 */  slti      $v0, $s6, 0x19
/* 3D23F0 E00CCD60 1440FF9D */  bnez      $v0, .LE00CCBD8
/* 3D23F4 E00CCD64 26520004 */   addiu    $s2, $s2, 0x4
/* 3D23F8 E00CCD68 3C05D838 */  lui       $a1, (0xD8380002 >> 16)
/* 3D23FC E00CCD6C 3C03800A */  lui       $v1, %hi(gMainGfxPos)
/* 3D2400 E00CCD70 2463A66C */  addiu     $v1, $v1, %lo(gMainGfxPos)
/* 3D2404 E00CCD74 8C620000 */  lw        $v0, 0x0($v1)
/* 3D2408 E00CCD78 34A50002 */  ori       $a1, $a1, (0xD8380002 & 0xFFFF)
/* 3D240C E00CCD7C 0040202D */  daddu     $a0, $v0, $zero
/* 3D2410 E00CCD80 24420008 */  addiu     $v0, $v0, 0x8
/* 3D2414 E00CCD84 AC620000 */  sw        $v0, 0x0($v1)
/* 3D2418 E00CCD88 24020040 */  addiu     $v0, $zero, 0x40
/* 3D241C E00CCD8C AC850000 */  sw        $a1, 0x0($a0)
/* 3D2420 E00CCD90 AC820004 */  sw        $v0, 0x4($a0)
/* 3D2424 E00CCD94 8FBF00C4 */  lw        $ra, 0xC4($sp)
/* 3D2428 E00CCD98 8FBE00C0 */  lw        $fp, 0xC0($sp)
/* 3D242C E00CCD9C 8FB700BC */  lw        $s7, 0xBC($sp)
/* 3D2430 E00CCDA0 8FB600B8 */  lw        $s6, 0xB8($sp)
/* 3D2434 E00CCDA4 8FB500B4 */  lw        $s5, 0xB4($sp)
/* 3D2438 E00CCDA8 8FB400B0 */  lw        $s4, 0xB0($sp)
/* 3D243C E00CCDAC 8FB300AC */  lw        $s3, 0xAC($sp)
/* 3D2440 E00CCDB0 8FB200A8 */  lw        $s2, 0xA8($sp)
/* 3D2444 E00CCDB4 8FB100A4 */  lw        $s1, 0xA4($sp)
/* 3D2448 E00CCDB8 8FB000A0 */  lw        $s0, 0xA0($sp)
/* 3D244C E00CCDBC D7B600D0 */  ldc1      $f22, 0xD0($sp)
/* 3D2450 E00CCDC0 D7B400C8 */  ldc1      $f20, 0xC8($sp)
/* 3D2454 E00CCDC4 03E00008 */  jr        $ra
/* 3D2458 E00CCDC8 27BD00D8 */   addiu    $sp, $sp, 0xD8
/* 3D245C E00CCDCC 00000000 */  nop

### DECOMPILED C INSTRUCTIONS:

void tubba_heart_attack_appendGfx(void* effect) {
    TubbaHeartAttackFXData* data = ((EffectInstance*)effect)->data.tubbaHeartAttack;
    Camera* camera = &gCameras[gCurrentCameraID];
    s32 unk_24 = data->unk_24;
    Matrix4f sp18;
    Matrix4f sp58;
    s32 i;

    gDPPipeSync(gMainGfxPos++);
    gSPSegment(gMainGfxPos++, 0x09, VIRTUAL_TO_PHYSICAL(((EffectInstance*)effect)->graphics->data));

    shim_guTranslateF(sp18, data->unk_04, data->unk_08, data->unk_0C);
    shim_guScaleF(sp58, data->unk_28, data->unk_28, data->unk_28);
    shim_guMtxCatF(sp58, sp18, sp18);
    shim_guMtxF2L(sp18, &gDisplayContext->matrixStack[gMatrixListPos]);

    gSPMatrix(gMainGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
    gDPSetPrimColor(gMainGfxPos++, 0, 0, data->unk_18, data->unk_1C, data->unk_20, unk_24);
    gDPSetEnvColor(gMainGfxPos++, 0, 0, 0, 0);
    gSPDisplayList(gMainGfxPos++, D_09000400_3D2980);

    for (i = 0; i < 25; i++) {
        if (data->unk_6D0[i] != 0 && data->unk_6D0[i] != 7) {
            shim_guRotateF(sp18, data->unk_4DC[i], 0.0f, 1.0f, 0.0f);
            shim_guTranslateF(sp58, data->unk_2C[i], data->unk_90[i], data->unk_F4[i]);
            shim_guMtxCatF(sp58, sp18, sp18);
            shim_guRotateF(sp58, -data->unk_4DC[i], 0.0f, 1.0f, 0.0f);
            shim_guMtxCatF(sp58, sp18, sp18);
            shim_guRotateF(sp58, data->unk_478[i], 0.0f, 0.0f, 1.0f);
            shim_guMtxCatF(sp58, sp18, sp18);
            shim_guScaleF(sp58, data->unk_3B0[i], data->unk_414[i], 1.0f);
            shim_guMtxCatF(sp58, sp18, sp18);
            shim_guMtxF2L(sp18, &gDisplayContext->matrixStack[gMatrixListPos]);

            gSPMatrix(gMainGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW);
            gSPMatrix(gMainGfxPos++, camera->unkMatrix, G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW);
            gSPDisplayList(gMainGfxPos++, D_09000518_3D2A98);
            gSPPopMatrix(gMainGfxPos++, G_MTX_MODELVIEW);
        }
    }

    gSPPopMatrix(gMainGfxPos++, G_MTX_MODELVIEW);
}


### RAW ASSEMBLY INSTRUCTIONS:

glabel damage_stars_appendGfx
/* 342BA8 E0030A68 27BDFF20 */  addiu     $sp, $sp, -0xE0
/* 342BAC E0030A6C 3C05DB06 */  lui       $a1, (0xDB060024 >> 16)
/* 342BB0 E0030A70 34A50024 */  ori       $a1, $a1, (0xDB060024 & 0xFFFF)
/* 342BB4 E0030A74 3C09800A */  lui       $t1, %hi(gMainGfxPos)
/* 342BB8 E0030A78 2529A66C */  addiu     $t1, $t1, %lo(gMainGfxPos)
/* 342BBC E0030A7C 3C0638E3 */  lui       $a2, (0x38E38E39 >> 16)
/* 342BC0 E0030A80 3C02E700 */  lui       $v0, (0xE7000000 >> 16)
/* 342BC4 E0030A84 AFBF00CC */  sw        $ra, 0xCC($sp)
/* 342BC8 E0030A88 AFBE00C8 */  sw        $fp, 0xC8($sp)
/* 342BCC E0030A8C AFB700C4 */  sw        $s7, 0xC4($sp)
/* 342BD0 E0030A90 AFB600C0 */  sw        $s6, 0xC0($sp)
/* 342BD4 E0030A94 AFB500BC */  sw        $s5, 0xBC($sp)
/* 342BD8 E0030A98 AFB400B8 */  sw        $s4, 0xB8($sp)
/* 342BDC E0030A9C AFB300B4 */  sw        $s3, 0xB4($sp)
/* 342BE0 E0030AA0 AFB200B0 */  sw        $s2, 0xB0($sp)
/* 342BE4 E0030AA4 AFB100AC */  sw        $s1, 0xAC($sp)
/* 342BE8 E0030AA8 AFB000A8 */  sw        $s0, 0xA8($sp)
/* 342BEC E0030AAC F7B600D8 */  sdc1      $f22, 0xD8($sp)
/* 342BF0 E0030AB0 F7B400D0 */  sdc1      $f20, 0xD0($sp)
/* 342BF4 E0030AB4 AFA400E0 */  sw        $a0, 0xE0($sp)
/* 342BF8 E0030AB8 8D240000 */  lw        $a0, 0x0($t1)
/* 342BFC E0030ABC 8FAA00E0 */  lw        $t2, 0xE0($sp)
/* 342C00 E0030AC0 0080182D */  daddu     $v1, $a0, $zero
/* 342C04 E0030AC4 8D47000C */  lw        $a3, 0xC($t2)
/* 342C08 E0030AC8 24840008 */  addiu     $a0, $a0, 0x8
/* 342C0C E0030ACC AC620000 */  sw        $v0, 0x0($v1)
/* 342C10 E0030AD0 AC600004 */  sw        $zero, 0x4($v1)
/* 342C14 E0030AD4 AC850000 */  sw        $a1, 0x0($a0)
/* 342C18 E0030AD8 8D420010 */  lw        $v0, 0x10($t2)
/* 342C1C E0030ADC 34C68E39 */  ori       $a2, $a2, (0x38E38E39 & 0xFFFF)
/* 342C20 E0030AE0 8C43001C */  lw        $v1, 0x1C($v0)
/* 342C24 E0030AE4 3C02DE00 */  lui       $v0, (0xDE000000 >> 16)
/* 342C28 E0030AE8 AC820008 */  sw        $v0, 0x8($a0)
/* 342C2C E0030AEC 3C020900 */  lui       $v0, %hi(D_090004C0_415520)
/* 342C30 E0030AF0 244204C0 */  addiu     $v0, $v0, %lo(D_090004C0_415520)
/* 342C34 E0030AF4 AC82000C */  sw        $v0, 0xC($a0)
/* 342C38 E0030AF8 3C028000 */  lui       $v0, (0x80000000 >> 16)
/* 342C3C E0030AFC 00621821 */  addu      $v1, $v1, $v0
/* 342C40 E0030B00 AC830004 */  sw        $v1, 0x4($a0)
/* 342C44 E0030B04 8CE2002C */  lw        $v0, 0x2C($a3)
/* 342C48 E0030B08 0000A82D */  daddu     $s5, $zero, $zero
/* 342C4C E0030B0C AD240000 */  sw        $a0, 0x0($t1)
/* 342C50 E0030B10 2442FFFF */  addiu     $v0, $v0, -0x1
/* 342C54 E0030B14 00021840 */  sll       $v1, $v0, 1
/* 342C58 E0030B18 0062A021 */  addu      $s4, $v1, $v0
/* 342C5C E0030B1C 24820008 */  addiu     $v0, $a0, 0x8
/* 342C60 E0030B20 02860018 */  mult      $s4, $a2
/* 342C64 E0030B24 24840010 */  addiu     $a0, $a0, 0x10
/* 342C68 E0030B28 AD220000 */  sw        $v0, 0x0($t1)
/* 342C6C E0030B2C 001417C3 */  sra       $v0, $s4, 31
/* 342C70 E0030B30 AD240000 */  sw        $a0, 0x0($t1)
/* 342C74 E0030B34 00005010 */  mfhi      $t2
/* 342C78 E0030B38 000A18C3 */  sra       $v1, $t2, 3
/* 342C7C E0030B3C 00621823 */  subu      $v1, $v1, $v0
/* 342C80 E0030B40 000310C0 */  sll       $v0, $v1, 3
/* 342C84 E0030B44 00431021 */  addu      $v0, $v0, $v1
/* 342C88 E0030B48 8FAA00E0 */  lw        $t2, 0xE0($sp)
/* 342C8C E0030B4C 00021080 */  sll       $v0, $v0, 2
/* 342C90 E0030B50 8D430008 */  lw        $v1, 0x8($t2)
/* 342C94 E0030B54 186000BE */  blez      $v1, .LE0030E50
/* 342C98 E0030B58 0282A023 */   subu     $s4, $s4, $v0
/* 342C9C E0030B5C 0120882D */  daddu     $s1, $t1, $zero
/* 342CA0 E0030B60 3C0A38E3 */  lui       $t2, (0x38E38E39 >> 16)
/* 342CA4 E0030B64 354A8E39 */  ori       $t2, $t2, (0x38E38E39 & 0xFFFF)
/* 342CA8 E0030B68 AFAA0098 */  sw        $t2, 0x98($sp)
/* 342CAC E0030B6C 27AA0058 */  addiu     $t2, $sp, 0x58
/* 342CB0 E0030B70 3C168007 */  lui       $s6, %hi(gMatrixListPos)
/* 342CB4 E0030B74 26D641F0 */  addiu     $s6, $s6, %lo(gMatrixListPos)
/* 342CB8 E0030B78 3C130001 */  lui       $s3, (0x11630 >> 16)
/* 342CBC E0030B7C 36731630 */  ori       $s3, $s3, (0x11630 & 0xFFFF)
/* 342CC0 E0030B80 AFAA009C */  sw        $t2, 0x9C($sp)
/* 342CC4 E0030B84 3C0AD838 */  lui       $t2, (0xD8380002 >> 16)
/* 342CC8 E0030B88 354A0002 */  ori       $t2, $t2, (0xD8380002 & 0xFFFF)
/* 342CCC E0030B8C 24F0001C */  addiu     $s0, $a3, 0x1C
/* 342CD0 E0030B90 241E0002 */  addiu     $fp, $zero, 0x2
/* 342CD4 E0030B94 24170001 */  addiu     $s7, $zero, 0x1
/* 342CD8 E0030B98 4480A000 */  mtc1      $zero, $f20
/* 342CDC E0030B9C 3C013F80 */  lui       $at, (0x3F800000 >> 16)
/* 342CE0 E0030BA0 4481B000 */  mtc1      $at, $f22
/* 342CE4 E0030BA4 0280902D */  daddu     $s2, $s4, $zero
/* 342CE8 E0030BA8 AFAA00A0 */  sw        $t2, 0xA0($sp)
.LE0030BAC:
/* 342CEC E0030BAC 27A40018 */  addiu     $a0, $sp, 0x18
/* 342CF0 E0030BB0 029E3821 */  addu      $a3, $s4, $fp
/* 342CF4 E0030BB4 02973021 */  addu      $a2, $s4, $s7
/* 342CF8 E0030BB8 8E220000 */  lw        $v0, 0x0($s1)
/* 342CFC E0030BBC 8FAA0098 */  lw        $t2, 0x98($sp)
/* 342D00 E0030BC0 0040402D */  daddu     $t0, $v0, $zero
/* 342D04 E0030BC4 24420008 */  addiu     $v0, $v0, 0x8
/* 342D08 E0030BC8 024A0018 */  mult      $s2, $t2
/* 342D0C E0030BCC AE220000 */  sw        $v0, 0x0($s1)
/* 342D10 E0030BD0 3C02FA00 */  lui       $v0, (0xFA000000 >> 16)
/* 342D14 E0030BD4 AD020000 */  sw        $v0, 0x0($t0)
/* 342D18 E0030BD8 001217C3 */  sra       $v0, $s2, 31
/* 342D1C E0030BDC 00005010 */  mfhi      $t2
/* 342D20 E0030BE0 000A18C3 */  sra       $v1, $t2, 3
/* 342D24 E0030BE4 00621823 */  subu      $v1, $v1, $v0
/* 342D28 E0030BE8 000328C0 */  sll       $a1, $v1, 3
/* 342D2C E0030BEC 00A32821 */  addu      $a1, $a1, $v1
/* 342D30 E0030BF0 00052880 */  sll       $a1, $a1, 2
/* 342D34 E0030BF4 8FAA0098 */  lw        $t2, 0x98($sp)
/* 342D38 E0030BF8 02452823 */  subu      $a1, $s2, $a1
/* 342D3C E0030BFC 00CA0018 */  mult      $a2, $t2
/* 342D40 E0030C00 000617C3 */  sra       $v0, $a2, 31
/* 342D44 E0030C04 3C0AE003 */  lui       $t2, %hi(D_E0030E90)
/* 342D48 E0030C08 254A0E90 */  addiu     $t2, $t2, %lo(D_E0030E90)
/* 342D4C E0030C0C 00AA2821 */  addu      $a1, $a1, $t2
/* 342D50 E0030C10 90A50000 */  lbu       $a1, 0x0($a1)
/* 342D54 E0030C14 00005010 */  mfhi      $t2
/* 342D58 E0030C18 000A18C3 */  sra       $v1, $t2, 3
/* 342D5C E0030C1C 00621823 */  subu      $v1, $v1, $v0
/* 342D60 E0030C20 000310C0 */  sll       $v0, $v1, 3
/* 342D64 E0030C24 00431021 */  addu      $v0, $v0, $v1
/* 342D68 E0030C28 00021080 */  sll       $v0, $v0, 2
/* 342D6C E0030C2C 00C23023 */  subu      $a2, $a2, $v0
/* 342D70 E0030C30 3C0AE003 */  lui       $t2, %hi(D_E0030E90)
/* 342D74 E0030C34 254A0E90 */  addiu     $t2, $t2, %lo(D_E0030E90)
/* 342D78 E0030C38 00CA3021 */  addu      $a2, $a2, $t2
/* 342D7C E0030C3C 8FAA0098 */  lw        $t2, 0x98($sp)
/* 342D80 E0030C40 00052E00 */  sll       $a1, $a1, 24
/* 342D84 E0030C44 00EA0018 */  mult      $a3, $t2
/* 342D88 E0030C48 90C60000 */  lbu       $a2, 0x0($a2)
/* 342D8C E0030C4C 000717C3 */  sra       $v0, $a3, 31
/* 342D90 E0030C50 00063400 */  sll       $a2, $a2, 16
/* 342D94 E0030C54 00A62825 */  or        $a1, $a1, $a2
/* 342D98 E0030C58 00005010 */  mfhi      $t2
/* 342D9C E0030C5C 000A18C3 */  sra       $v1, $t2, 3
/* 342DA0 E0030C60 00621823 */  subu      $v1, $v1, $v0
/* 342DA4 E0030C64 000310C0 */  sll       $v0, $v1, 3
/* 342DA8 E0030C68 00431021 */  addu      $v0, $v0, $v1
/* 342DAC E0030C6C 00021080 */  sll       $v0, $v0, 2
/* 342DB0 E0030C70 00E23823 */  subu      $a3, $a3, $v0
/* 342DB4 E0030C74 3C0AE003 */  lui       $t2, %hi(D_E0030E90)
/* 342DB8 E0030C78 254A0E90 */  addiu     $t2, $t2, %lo(D_E0030E90)
/* 342DBC E0030C7C 00EA3821 */  addu      $a3, $a3, $t2
/* 342DC0 E0030C80 90E20000 */  lbu       $v0, 0x0($a3)
/* 342DC4 E0030C84 9203000B */  lbu       $v1, 0xB($s0)
/* 342DC8 E0030C88 00021200 */  sll       $v0, $v0, 8
/* 342DCC E0030C8C 00A22825 */  or        $a1, $a1, $v0
/* 342DD0 E0030C90 00A32825 */  or        $a1, $a1, $v1
/* 342DD4 E0030C94 AD050004 */  sw        $a1, 0x4($t0)
/* 342DD8 E0030C98 8E05FFE8 */  lw        $a1, -0x18($s0)
/* 342DDC E0030C9C 8E06FFEC */  lw        $a2, -0x14($s0)
/* 342DE0 E0030CA0 8E07FFF0 */  lw        $a3, -0x10($s0)
/* 342DE4 E0030CA4 0C080108 */  jal       shim_guTranslateF
/* 342DE8 E0030CA8 27DE0003 */   addiu    $fp, $fp, 0x3
/* 342DEC E0030CAC 3C0A800B */  lui       $t2, %hi(gCameras)
/* 342DF0 E0030CB0 254A1D80 */  addiu     $t2, $t2, %lo(gCameras)
/* 342DF4 E0030CB4 4406A000 */  mfc1      $a2, $f20
/* 342DF8 E0030CB8 3C038007 */  lui       $v1, %hi(gCurrentCameraID)
/* 342DFC E0030CBC 8C637410 */  lw        $v1, %lo(gCurrentCameraID)($v1)
/* 342E00 E0030CC0 4407B000 */  mfc1      $a3, $f22
/* 342E04 E0030CC4 00031080 */  sll       $v0, $v1, 2
/* 342E08 E0030CC8 00431021 */  addu      $v0, $v0, $v1
/* 342E0C E0030CCC 00021080 */  sll       $v0, $v0, 2
/* 342E10 E0030CD0 00431023 */  subu      $v0, $v0, $v1
/* 342E14 E0030CD4 000218C0 */  sll       $v1, $v0, 3
/* 342E18 E0030CD8 00431021 */  addu      $v0, $v0, $v1
/* 342E1C E0030CDC 000210C0 */  sll       $v0, $v0, 3
/* 342E20 E0030CE0 004A1021 */  addu      $v0, $v0, $t2
/* 342E24 E0030CE4 C440006C */  lwc1      $f0, 0x6C($v0)
/* 342E28 E0030CE8 8FA4009C */  lw        $a0, 0x9C($sp)
/* 342E2C E0030CEC 46000007 */  neg.s     $f0, $f0
/* 342E30 E0030CF0 44050000 */  mfc1      $a1, $f0
/* 342E34 E0030CF4 26F70003 */  addiu     $s7, $s7, 0x3
/* 342E38 E0030CF8 0C080104 */  jal       shim_guRotateF
/* 342E3C E0030CFC E7B40010 */   swc1     $f20, 0x10($sp)
/* 342E40 E0030D00 27A50018 */  addiu     $a1, $sp, 0x18
/* 342E44 E0030D04 8FA4009C */  lw        $a0, 0x9C($sp)
/* 342E48 E0030D08 0C080114 */  jal       shim_guMtxCatF
/* 342E4C E0030D0C 00A0302D */   daddu    $a2, $a1, $zero
/* 342E50 E0030D10 27A40018 */  addiu     $a0, $sp, 0x18
/* 342E54 E0030D14 96C50000 */  lhu       $a1, 0x0($s6)
/* 342E58 E0030D18 3C02800A */  lui       $v0, %hi(gDisplayContext)
/* 342E5C E0030D1C 8C42A674 */  lw        $v0, %lo(gDisplayContext)($v0)
/* 342E60 E0030D20 00052980 */  sll       $a1, $a1, 6
/* 342E64 E0030D24 00B32821 */  addu      $a1, $a1, $s3
/* 342E68 E0030D28 0C080118 */  jal       shim_guMtxF2L
/* 342E6C E0030D2C 00452821 */   addu     $a1, $v0, $a1
/* 342E70 E0030D30 27A40018 */  addiu     $a0, $sp, 0x18
/* 342E74 E0030D34 8E290000 */  lw        $t1, 0x0($s1)
/* 342E78 E0030D38 4406A000 */  mfc1      $a2, $f20
/* 342E7C E0030D3C 4407A000 */  mfc1      $a3, $f20
/* 342E80 E0030D40 96C80000 */  lhu       $t0, 0x0($s6)
/* 342E84 E0030D44 3C03800A */  lui       $v1, %hi(gDisplayContext)
/* 342E88 E0030D48 8C63A674 */  lw        $v1, %lo(gDisplayContext)($v1)
/* 342E8C E0030D4C 0120282D */  daddu     $a1, $t1, $zero
/* 342E90 E0030D50 3C0ADA38 */  lui       $t2, (0xDA380000 >> 16)
/* 342E94 E0030D54 3102FFFF */  andi      $v0, $t0, 0xFFFF
/* 342E98 E0030D58 00021180 */  sll       $v0, $v0, 6
/* 342E9C E0030D5C 00531021 */  addu      $v0, $v0, $s3
/* 342EA0 E0030D60 00621821 */  addu      $v1, $v1, $v0
/* 342EA4 E0030D64 25290008 */  addiu     $t1, $t1, 0x8
/* 342EA8 E0030D68 ACAA0000 */  sw        $t2, 0x0($a1)
/* 342EAC E0030D6C ACA30004 */  sw        $v1, 0x4($a1)
/* 342EB0 E0030D70 E7B60010 */  swc1      $f22, 0x10($sp)
/* 342EB4 E0030D74 8E050000 */  lw        $a1, 0x0($s0)
/* 342EB8 E0030D78 25080001 */  addiu     $t0, $t0, 0x1
/* 342EBC E0030D7C AE290000 */  sw        $t1, 0x0($s1)
/* 342EC0 E0030D80 0C080104 */  jal       shim_guRotateF
/* 342EC4 E0030D84 A6C80000 */   sh       $t0, 0x0($s6)
/* 342EC8 E0030D88 27A40018 */  addiu     $a0, $sp, 0x18
/* 342ECC E0030D8C 96C50000 */  lhu       $a1, 0x0($s6)
/* 342ED0 E0030D90 3C02800A */  lui       $v0, %hi(gDisplayContext)
/* 342ED4 E0030D94 8C42A674 */  lw        $v0, %lo(gDisplayContext)($v0)
/* 342ED8 E0030D98 00052980 */  sll       $a1, $a1, 6
/* 342EDC E0030D9C 00B32821 */  addu      $a1, $a1, $s3
/* 342EE0 E0030DA0 0C080118 */  jal       shim_guMtxF2L
/* 342EE4 E0030DA4 00452821 */   addu     $a1, $v0, $a1
/* 342EE8 E0030DA8 8E240000 */  lw        $a0, 0x0($s1)
/* 342EEC E0030DAC 96C30000 */  lhu       $v1, 0x0($s6)
/* 342EF0 E0030DB0 0080282D */  daddu     $a1, $a0, $zero
/* 342EF4 E0030DB4 24840008 */  addiu     $a0, $a0, 0x8
/* 342EF8 E0030DB8 3C0ADA38 */  lui       $t2, (0xDA380000 >> 16)
/* 342EFC E0030DBC 24620001 */  addiu     $v0, $v1, 0x1
/* 342F00 E0030DC0 3063FFFF */  andi      $v1, $v1, 0xFFFF
/* 342F04 E0030DC4 00031980 */  sll       $v1, $v1, 6
/* 342F08 E0030DC8 AE240000 */  sw        $a0, 0x0($s1)
/* 342F0C E0030DCC ACAA0000 */  sw        $t2, 0x0($a1)
/* 342F10 E0030DD0 A6C20000 */  sh        $v0, 0x0($s6)
/* 342F14 E0030DD4 3C02800A */  lui       $v0, %hi(gDisplayContext)
/* 342F18 E0030DD8 8C42A674 */  lw        $v0, %lo(gDisplayContext)($v0)
/* 342F1C E0030DDC 00731821 */  addu      $v1, $v1, $s3
/* 342F20 E0030DE0 00431021 */  addu      $v0, $v0, $v1
/* 342F24 E0030DE4 ACA20004 */  sw        $v0, 0x4($a1)
/* 342F28 E0030DE8 24820008 */  addiu     $v0, $a0, 0x8
/* 342F2C E0030DEC AE220000 */  sw        $v0, 0x0($s1)
/* 342F30 E0030DF0 3C02DE00 */  lui       $v0, (0xDE000000 >> 16)
/* 342F34 E0030DF4 AC820000 */  sw        $v0, 0x0($a0)
/* 342F38 E0030DF8 3C020900 */  lui       $v0, %hi(D_090005E0_415640)
/* 342F3C E0030DFC 244205E0 */  addiu     $v0, $v0, %lo(D_090005E0_415640)
/* 342F40 E0030E00 AC820004 */  sw        $v0, 0x4($a0)
/* 342F44 E0030E04 24820010 */  addiu     $v0, $a0, 0x10
/* 342F48 E0030E08 AE220000 */  sw        $v0, 0x0($s1)
/* 342F4C E0030E0C 8FAA00A0 */  lw        $t2, 0xA0($sp)
/* 342F50 E0030E10 26B50001 */  addiu     $s5, $s5, 0x1
/* 342F54 E0030E14 AC8A0008 */  sw        $t2, 0x8($a0)
/* 342F58 E0030E18 240A0040 */  addiu     $t2, $zero, 0x40
/* 342F5C E0030E1C AC8A000C */  sw        $t2, 0xC($a0)
/* 342F60 E0030E20 8FAA00A0 */  lw        $t2, 0xA0($sp)
/* 342F64 E0030E24 26520003 */  addiu     $s2, $s2, 0x3
/* 342F68 E0030E28 AC8A0010 */  sw        $t2, 0x10($a0)
/* 342F6C E0030E2C 240A0040 */  addiu     $t2, $zero, 0x40
/* 342F70 E0030E30 AC8A0014 */  sw        $t2, 0x14($a0)
/* 342F74 E0030E34 8FAA00E0 */  lw        $t2, 0xE0($sp)
/* 342F78 E0030E38 26100030 */  addiu     $s0, $s0, 0x30
/* 342F7C E0030E3C 8D420008 */  lw        $v0, 0x8($t2)
/* 342F80 E0030E40 24840018 */  addiu     $a0, $a0, 0x18
/* 342F84 E0030E44 02A2102A */  slt       $v0, $s5, $v0
/* 342F88 E0030E48 1440FF58 */  bnez      $v0, .LE0030BAC
/* 342F8C E0030E4C AE240000 */   sw       $a0, 0x0($s1)
.LE0030E50:
/* 342F90 E0030E50 8FBF00CC */  lw        $ra, 0xCC($sp)
/* 342F94 E0030E54 8FBE00C8 */  lw        $fp, 0xC8($sp)
/* 342F98 E0030E58 8FB700C4 */  lw        $s7, 0xC4($sp)
/* 342F9C E0030E5C 8FB600C0 */  lw        $s6, 0xC0($sp)
/* 342FA0 E0030E60 8FB500BC */  lw        $s5, 0xBC($sp)
/* 342FA4 E0030E64 8FB400B8 */  lw        $s4, 0xB8($sp)
/* 342FA8 E0030E68 8FB300B4 */  lw        $s3, 0xB4($sp)
/* 342FAC E0030E6C 8FB200B0 */  lw        $s2, 0xB0($sp)
/* 342FB0 E0030E70 8FB100AC */  lw        $s1, 0xAC($sp)
/* 342FB4 E0030E74 8FB000A8 */  lw        $s0, 0xA8($sp)
/* 342FB8 E0030E78 D7B600D8 */  ldc1      $f22, 0xD8($sp)
/* 342FBC E0030E7C D7B400D0 */  ldc1      $f20, 0xD0($sp)
/* 342FC0 E0030E80 03E00008 */  jr        $ra
/* 342FC4 E0030E84 27BD00E0 */   addiu    $sp, $sp, 0xE0
/* 342FC8 E0030E88 00000000 */  nop
/* 342FCC E0030E8C 00000000 */  nop

### DECOMPILED C INSTRUCTIONS:

void damage_stars_appendGfx(void* effect) {
    DamageStarsFXData* part = ((EffectInstance*)effect)->data.damageStars;
    Matrix4f sp18;
    Matrix4f sp58;
    s32 baseIdx;
    s32 i;

    gDPPipeSync(gMainGfxPos++);
    gSPSegment(gMainGfxPos++, 0x09, VIRTUAL_TO_PHYSICAL(((EffectInstance*)effect)->graphics->data));
    gSPDisplayList(gMainGfxPos++, D_090004C0_343500);

    baseIdx = (part->unk_2C - 1) * 3;
    baseIdx %= 36;

    for (i = 0; i < ((EffectInstance*)effect)->numParts; i++, part++) {
        s32 rIdx = baseIdx + i * 3;
        s32 gIdx = baseIdx + 1 + i * 3;
        s32 bIdx = baseIdx + 2 + i * 3;

        gDPSetPrimColor(gMainGfxPos++, 0, 0, D_E0030E90[rIdx % 36], D_E0030E90[gIdx % 36], D_E0030E90[bIdx % 36], part->unk_24);
        shim_guTranslateF(sp18, part->unk_04, part->unk_08, part->unk_0C);
        shim_guRotateF(sp58, -gCameras[gCurrentCameraID].currentYaw, 0.0f, 1.0f, 0.0f);
        shim_guMtxCatF(sp58, sp18, sp18);
        shim_guMtxF2L(sp18, &gDisplayContext->matrixStack[gMatrixListPos]);

        gSPMatrix(gMainGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW);

        shim_guRotateF(sp18, part->unk_1C, 0.0f, 0.0f, 1.0f);
        shim_guMtxF2L(sp18, &gDisplayContext->matrixStack[gMatrixListPos]);

        gSPMatrix(gMainGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW);
        gSPDisplayList(gMainGfxPos++, D_090005E0_343620);
        gSPPopMatrix(gMainGfxPos++, G_MTX_MODELVIEW);
        gSPPopMatrix(gMainGfxPos++, G_MTX_MODELVIEW);
    }
}