### RAW ASSEMBLY INSTRUCTIONS:

glabel npc_do_player_collision
/* 146D8 800392D8 27BDFFA8 */  addiu     $sp, $sp, -0x58
/* 146DC 800392DC AFB1001C */  sw        $s1, 0x1C($sp)
/* 146E0 800392E0 0080882D */  daddu     $s1, $a0, $zero
/* 146E4 800392E4 AFBF0020 */  sw        $ra, 0x20($sp)
/* 146E8 800392E8 AFB00018 */  sw        $s0, 0x18($sp)
/* 146EC 800392EC F7BE0050 */  sdc1      $f30, 0x50($sp)
/* 146F0 800392F0 F7BC0048 */  sdc1      $f28, 0x48($sp)
/* 146F4 800392F4 F7BA0040 */  sdc1      $f26, 0x40($sp)
/* 146F8 800392F8 F7B80038 */  sdc1      $f24, 0x38($sp)
/* 146FC 800392FC F7B60030 */  sdc1      $f22, 0x30($sp)
/* 14700 80039300 F7B40028 */  sdc1      $f20, 0x28($sp)
/* 14704 80039304 8E230000 */  lw        $v1, 0x0($s1)
/* 14708 80039308 3C108011 */  lui       $s0, %hi(gPlayerStatus)
/* 1470C 8003930C 2610EFC8 */  addiu     $s0, $s0, %lo(gPlayerStatus)
/* 14710 80039310 30620100 */  andi      $v0, $v1, 0x100
/* 14714 80039314 144000D1 */  bnez      $v0, .L8003965C
/* 14718 80039318 0000102D */   daddu    $v0, $zero, $zero
/* 1471C 8003931C 3C020400 */  lui       $v0, (0x4000000 >> 16)
/* 14720 80039320 00621024 */  and       $v0, $v1, $v0
/* 14724 80039324 10400003 */  beqz      $v0, .L80039334
/* 14728 80039328 00000000 */   nop
.L8003932C:
/* 1472C 8003932C 0800E597 */  j         .L8003965C
/* 14730 80039330 0000102D */   daddu    $v0, $zero, $zero
.L80039334:
/* 14734 80039334 3C02800A */  lui       $v0, %hi(gNpcPlayerCollisionsEnabled)
/* 14738 80039338 80420B94 */  lb        $v0, %lo(gNpcPlayerCollisionsEnabled)($v0)
/* 1473C 8003933C 504000C7 */  beql      $v0, $zero, .L8003965C
/* 14740 80039340 0000102D */   daddu    $v0, $zero, $zero
/* 14744 80039344 860200B0 */  lh        $v0, 0xB0($s0)
/* 14748 80039348 C604002C */  lwc1      $f4, 0x2C($s0)
/* 1474C 8003934C 44820000 */  mtc1      $v0, $f0
/* 14750 80039350 00000000 */  nop
/* 14754 80039354 46800020 */  cvt.s.w   $f0, $f0
/* 14758 80039358 46002000 */  add.s     $f0, $f4, $f0
/* 1475C 8003935C C622003C */  lwc1      $f2, 0x3C($s1)
/* 14760 80039360 4602003C */  c.lt.s    $f0, $f2
/* 14764 80039364 00000000 */  nop
/* 14768 80039368 450100BC */  bc1t      .L8003965C
/* 1476C 8003936C 0000102D */   daddu    $v0, $zero, $zero
/* 14770 80039370 862200A8 */  lh        $v0, 0xA8($s1)
/* 14774 80039374 44820000 */  mtc1      $v0, $f0
/* 14778 80039378 00000000 */  nop
/* 1477C 8003937C 46800020 */  cvt.s.w   $f0, $f0
/* 14780 80039380 46001000 */  add.s     $f0, $f2, $f0
/* 14784 80039384 4604003C */  c.lt.s    $f0, $f4
/* 14788 80039388 00000000 */  nop
/* 1478C 8003938C 450100B3 */  bc1t      .L8003965C
/* 14790 80039390 0000102D */   daddu    $v0, $zero, $zero
/* 14794 80039394 C63A0038 */  lwc1      $f26, 0x38($s1)
/* 14798 80039398 C61E0028 */  lwc1      $f30, 0x28($s0)
/* 1479C 8003939C C61C0030 */  lwc1      $f28, 0x30($s0)
/* 147A0 800393A0 962200A6 */  lhu       $v0, 0xA6($s1)
/* 147A4 800393A4 461AF581 */  sub.s     $f22, $f30, $f26
/* 147A8 800393A8 960300B2 */  lhu       $v1, 0xB2($s0)
/* 147AC 800393AC 00021400 */  sll       $v0, $v0, 16
/* 147B0 800393B0 4616B082 */  mul.s     $f2, $f22, $f22
/* 147B4 800393B4 00000000 */  nop
/* 147B8 800393B8 00022403 */  sra       $a0, $v0, 16
/* 147BC 800393BC 000217C2 */  srl       $v0, $v0, 31
/* 147C0 800393C0 C6360040 */  lwc1      $f22, 0x40($s1)
/* 147C4 800393C4 00822021 */  addu      $a0, $a0, $v0
/* 147C8 800393C8 4616E501 */  sub.s     $f20, $f28, $f22
/* 147CC 800393CC 00042043 */  sra       $a0, $a0, 1
/* 147D0 800393D0 00031C00 */  sll       $v1, $v1, 16
/* 147D4 800393D4 4614A002 */  mul.s     $f0, $f20, $f20
/* 147D8 800393D8 00000000 */  nop
/* 147DC 800393DC 00031403 */  sra       $v0, $v1, 16
/* 147E0 800393E0 00031FC2 */  srl       $v1, $v1, 31
/* 147E4 800393E4 00431021 */  addu      $v0, $v0, $v1
/* 147E8 800393E8 00021043 */  sra       $v0, $v0, 1
/* 147EC 800393EC 46001300 */  add.s     $f12, $f2, $f0
/* 147F0 800393F0 4484B000 */  mtc1      $a0, $f22
/* 147F4 800393F4 00000000 */  nop
/* 147F8 800393F8 4680B5A0 */  cvt.s.w   $f22, $f22
/* 147FC 800393FC 4482A000 */  mtc1      $v0, $f20
/* 14800 80039400 00000000 */  nop
/* 14804 80039404 4680A520 */  cvt.s.w   $f20, $f20
/* 14808 80039408 46006004 */  sqrt.s    $f0, $f12
/* 1480C 8003940C 46000032 */  c.eq.s    $f0, $f0
/* 14810 80039410 00000000 */  nop
/* 14814 80039414 45010003 */  bc1t      .L80039424
/* 14818 80039418 4614B580 */   add.s    $f22, $f22, $f20
/* 1481C 8003941C 0C0187BC */  jal       sqrtf
/* 14820 80039420 00000000 */   nop
.L80039424:
/* 14824 80039424 4600B03C */  c.lt.s    $f22, $f0
/* 14828 80039428 00000000 */  nop
/* 1482C 8003942C 4501FFBF */  bc1t      .L8003932C
/* 14830 80039430 E7B60010 */   swc1     $f22, 0x10($sp)
/* 14834 80039434 8E020004 */  lw        $v0, 0x4($s0)
/* 14838 80039438 34428000 */  ori       $v0, $v0, 0x8000
/* 1483C 8003943C AE020004 */  sw        $v0, 0x4($s0)
/* 14840 80039440 C63A006C */  lwc1      $f26, 0x6C($s1)
/* 14844 80039444 461AF581 */  sub.s     $f22, $f30, $f26
/* 14848 80039448 4616B082 */  mul.s     $f2, $f22, $f22
/* 1484C 8003944C 00000000 */  nop
/* 14850 80039450 C6360074 */  lwc1      $f22, 0x74($s1)
/* 14854 80039454 4616E501 */  sub.s     $f20, $f28, $f22
/* 14858 80039458 4614A002 */  mul.s     $f0, $f20, $f20
/* 1485C 8003945C 00000000 */  nop
/* 14860 80039460 46001300 */  add.s     $f12, $f2, $f0
/* 14864 80039464 46006004 */  sqrt.s    $f0, $f12
/* 14868 80039468 46000032 */  c.eq.s    $f0, $f0
/* 1486C 8003946C 00000000 */  nop
/* 14870 80039470 45010004 */  bc1t      .L80039484
/* 14874 80039474 46000606 */   mov.s    $f24, $f0
/* 14878 80039478 0C0187BC */  jal       sqrtf
/* 1487C 8003947C 00000000 */   nop
/* 14880 80039480 46000606 */  mov.s     $f24, $f0
.L80039484:
/* 14884 80039484 4600F306 */  mov.s     $f12, $f30
/* 14888 80039488 4406D000 */  mfc1      $a2, $f26
/* 1488C 8003948C 4407B000 */  mfc1      $a3, $f22
/* 14890 80039490 0C00A720 */  jal       atan2
/* 14894 80039494 4600E386 */   mov.s    $f14, $f28
/* 14898 80039498 3C0140C9 */  lui       $at, (0x40C90FD0 >> 16)
/* 1489C 8003949C 34210FD0 */  ori       $at, $at, (0x40C90FD0 & 0xFFFF)
/* 148A0 800394A0 4481A000 */  mtc1      $at, $f20
/* 148A4 800394A4 46000686 */  mov.s     $f26, $f0
/* 148A8 800394A8 4614D502 */  mul.s     $f20, $f26, $f20
/* 148AC 800394AC 00000000 */  nop
/* 148B0 800394B0 3C0143B4 */  lui       $at, (0x43B40000 >> 16)
/* 148B4 800394B4 44810000 */  mtc1      $at, $f0
/* 148B8 800394B8 C7A80010 */  lwc1      $f8, 0x10($sp)
/* 148BC 800394BC C61C0080 */  lwc1      $f28, 0x80($s0)
/* 148C0 800394C0 46184601 */  sub.s     $f24, $f8, $f24
/* 148C4 800394C4 4600A503 */  div.s     $f20, $f20, $f0
/* 148C8 800394C8 0C00A85B */  jal       sin_rad
/* 148CC 800394CC 4600A306 */   mov.s    $f12, $f20
/* 148D0 800394D0 4600C582 */  mul.s     $f22, $f24, $f0
/* 148D4 800394D4 00000000 */  nop
/* 148D8 800394D8 0C00A874 */  jal       cos_rad
/* 148DC 800394DC 4600A306 */   mov.s    $f12, $f20
/* 148E0 800394E0 3C030040 */  lui       $v1, (0x400000 >> 16)
/* 148E4 800394E4 8E020004 */  lw        $v0, 0x4($s0)
/* 148E8 800394E8 4600C087 */  neg.s     $f2, $f24
/* 148EC 800394EC 46001502 */  mul.s     $f20, $f2, $f0
/* 148F0 800394F0 00000000 */  nop
/* 148F4 800394F4 00431024 */  and       $v0, $v0, $v1
/* 148F8 800394F8 1040002D */  beqz      $v0, .L800395B0
/* 148FC 800394FC 4600D306 */   mov.s    $f12, $f26
/* 14900 80039500 0C00A70A */  jal       get_clamped_angle_diff
/* 14904 80039504 4600E386 */   mov.s    $f14, $f28
/* 14908 80039508 3C014234 */  lui       $at, (0x42340000 >> 16)
/* 1490C 8003950C 44811000 */  mtc1      $at, $f2
/* 14910 80039510 46000005 */  abs.s     $f0, $f0
/* 14914 80039514 4602003C */  c.lt.s    $f0, $f2
/* 14918 80039518 00000000 */  nop
/* 1491C 8003951C 4500000E */  bc1f      .L80039558
/* 14920 80039520 00000000 */   nop
/* 14924 80039524 C6020028 */  lwc1      $f2, 0x28($s0)
/* 14928 80039528 46161081 */  sub.s     $f2, $f2, $f22
/* 1492C 8003952C C6000030 */  lwc1      $f0, 0x30($s0)
/* 14930 80039530 3C028011 */  lui       $v0, %hi(wPartnerNpc)
/* 14934 80039534 8C42C930 */  lw        $v0, %lo(wPartnerNpc)($v0)
/* 14938 80039538 46140001 */  sub.s     $f0, $f0, $f20
/* 1493C 8003953C E6020028 */  swc1      $f2, 0x28($s0)
/* 14940 80039540 E6000030 */  swc1      $f0, 0x30($s0)
/* 14944 80039544 C4420038 */  lwc1      $f2, 0x38($v0)
/* 14948 80039548 46161081 */  sub.s     $f2, $f2, $f22
/* 1494C 8003954C C4400040 */  lwc1      $f0, 0x40($v0)
/* 14950 80039550 0800E569 */  j         .L800395A4
/* 14954 80039554 46140001 */   sub.s    $f0, $f0, $f20
.L80039558:
/* 14958 80039558 3C013F00 */  lui       $at, (0x3F000000 >> 16)
/* 1495C 8003955C 44812000 */  mtc1      $at, $f4
/* 14960 80039560 00000000 */  nop
/* 14964 80039564 4604B182 */  mul.s     $f6, $f22, $f4
/* 14968 80039568 00000000 */  nop
/* 1496C 8003956C 4604A102 */  mul.s     $f4, $f20, $f4
/* 14970 80039570 00000000 */  nop
/* 14974 80039574 C6020028 */  lwc1      $f2, 0x28($s0)
/* 14978 80039578 46061081 */  sub.s     $f2, $f2, $f6
/* 1497C 8003957C C6000030 */  lwc1      $f0, 0x30($s0)
/* 14980 80039580 3C028011 */  lui       $v0, %hi(wPartnerNpc)
/* 14984 80039584 8C42C930 */  lw        $v0, %lo(wPartnerNpc)($v0)
/* 14988 80039588 46040001 */  sub.s     $f0, $f0, $f4
/* 1498C 8003958C E6020028 */  swc1      $f2, 0x28($s0)
/* 14990 80039590 E6000030 */  swc1      $f0, 0x30($s0)
/* 14994 80039594 C4420038 */  lwc1      $f2, 0x38($v0)
/* 14998 80039598 46061081 */  sub.s     $f2, $f2, $f6
/* 1499C 8003959C C4400040 */  lwc1      $f0, 0x40($v0)
/* 149A0 800395A0 46040001 */  sub.s     $f0, $f0, $f4
.L800395A4:
/* 149A4 800395A4 E4420038 */  swc1      $f2, 0x38($v0)
/* 149A8 800395A8 0800E590 */  j         .L80039640
/* 149AC 800395AC E4400040 */   swc1     $f0, 0x40($v0)
.L800395B0:
/* 149B0 800395B0 8E020000 */  lw        $v0, 0x0($s0)
/* 149B4 800395B4 30420006 */  andi      $v0, $v0, 0x6
/* 149B8 800395B8 10400006 */  beqz      $v0, .L800395D4
/* 149BC 800395BC 00000000 */   nop
/* 149C0 800395C0 3C013ECC */  lui       $at, (0x3ECCCCCD >> 16)
/* 149C4 800395C4 3421CCCD */  ori       $at, $at, (0x3ECCCCCD & 0xFFFF)
/* 149C8 800395C8 44812000 */  mtc1      $at, $f4
/* 149CC 800395CC 0800E586 */  j         .L80039618
/* 149D0 800395D0 00000000 */   nop
.L800395D4:
/* 149D4 800395D4 0C00A70A */  jal       get_clamped_angle_diff
/* 149D8 800395D8 4600E386 */   mov.s    $f14, $f28
/* 149DC 800395DC 3C014234 */  lui       $at, (0x42340000 >> 16)
/* 149E0 800395E0 44811000 */  mtc1      $at, $f2
/* 149E4 800395E4 46000005 */  abs.s     $f0, $f0
/* 149E8 800395E8 4602003C */  c.lt.s    $f0, $f2
/* 149EC 800395EC 00000000 */  nop
/* 149F0 800395F0 45000006 */  bc1f      .L8003960C
/* 149F4 800395F4 00000000 */   nop
/* 149F8 800395F8 C6020028 */  lwc1      $f2, 0x28($s0)
/* 149FC 800395FC 46161081 */  sub.s     $f2, $f2, $f22
/* 14A00 80039600 C6000030 */  lwc1      $f0, 0x30($s0)
/* 14A04 80039604 0800E58E */  j         .L80039638
/* 14A08 80039608 46140001 */   sub.s    $f0, $f0, $f20
.L8003960C:
/* 14A0C 8003960C 3C013F00 */  lui       $at, (0x3F000000 >> 16)
/* 14A10 80039610 44812000 */  mtc1      $at, $f4
/* 14A14 80039614 00000000 */  nop
.L80039618:
/* 14A18 80039618 4604B002 */  mul.s     $f0, $f22, $f4
/* 14A1C 8003961C 00000000 */  nop
/* 14A20 80039620 4604A102 */  mul.s     $f4, $f20, $f4
/* 14A24 80039624 00000000 */  nop
/* 14A28 80039628 C6020028 */  lwc1      $f2, 0x28($s0)
/* 14A2C 8003962C 46001081 */  sub.s     $f2, $f2, $f0
/* 14A30 80039630 C6000030 */  lwc1      $f0, 0x30($s0)
/* 14A34 80039634 46040001 */  sub.s     $f0, $f0, $f4
.L80039638:
/* 14A38 80039638 E6020028 */  swc1      $f2, 0x28($s0)
/* 14A3C 8003963C E6000030 */  swc1      $f0, 0x30($s0)
.L80039640:
/* 14A40 80039640 C620006C */  lwc1      $f0, 0x6C($s1)
/* 14A44 80039644 C6220070 */  lwc1      $f2, 0x70($s1)
/* 14A48 80039648 C6240074 */  lwc1      $f4, 0x74($s1)
/* 14A4C 8003964C 24020001 */  addiu     $v0, $zero, 0x1
/* 14A50 80039650 E6200038 */  swc1      $f0, 0x38($s1)
/* 14A54 80039654 E622003C */  swc1      $f2, 0x3C($s1)
/* 14A58 80039658 E6240040 */  swc1      $f4, 0x40($s1)
.L8003965C:
/* 14A5C 8003965C 8FBF0020 */  lw        $ra, 0x20($sp)
/* 14A60 80039660 8FB1001C */  lw        $s1, 0x1C($sp)
/* 14A64 80039664 8FB00018 */  lw        $s0, 0x18($sp)
/* 14A68 80039668 D7BE0050 */  ldc1      $f30, 0x50($sp)
/* 14A6C 8003966C D7BC0048 */  ldc1      $f28, 0x48($sp)
/* 14A70 80039670 D7BA0040 */  ldc1      $f26, 0x40($sp)
/* 14A74 80039674 D7B80038 */  ldc1      $f24, 0x38($sp)
/* 14A78 80039678 D7B60030 */  ldc1      $f22, 0x30($sp)
/* 14A7C 8003967C D7B40028 */  ldc1      $f20, 0x28($sp)
/* 14A80 80039680 03E00008 */  jr        $ra
/* 14A84 80039684 27BD0058 */   addiu    $sp, $sp, 0x58

### DECOMPILED C INSTRUCTIONS:

s32 npc_do_player_collision(Npc* npc) {
    PlayerStatus* playerStatus = &gPlayerStatus;
    f32 playerX, playerZ;
    f32 playerYaw, yaw;
    f32 npcX, npcZ;
    f32 dist, colDist, distToNpc;
    f32 npcColRadius, playerColRadius;
    f32 deltaX, deltaZ;

    if (npc->flags & NPC_FLAG_IGNORE_PLAYER_COLLISION) {
        return FALSE;
    }

    if (npc->flags & NPC_FLAG_PARTNER) {
        return FALSE;
    }

    if (!gNpcPlayerCollisionsEnabled) {
        return FALSE;
    }

    if (playerStatus->position.y + playerStatus->colliderHeight < npc->pos.y) {
        return FALSE;
    }

    if (npc->pos.y + npc->collisionHeight < playerStatus->position.y) {
        return FALSE;
    }

    playerX = playerStatus->position.x;
    playerZ = playerStatus->position.z;

    npcColRadius = npc->collisionDiameter / 2;
    playerColRadius = playerStatus->colliderDiameter / 2;

    npcX = npc->pos.x;
    npcZ = npc->pos.z;

    deltaX = playerX - npcX;
    deltaZ = playerZ - npcZ;

    distToNpc = sqrtf(SQ(deltaX) + SQ(deltaZ));
    colDist = npcColRadius + playerColRadius;
    if (colDist < distToNpc) {
        return FALSE;
    }

    playerStatus->animFlags |= PA_FLAG_NPC_COLLIDED;

    npcX = npc->colliderPos.x;
    npcZ = npc->colliderPos.z;

    deltaX = playerX - npcX;
    deltaZ = playerZ - npcZ;

    dist = sqrtf(SQ(deltaX) + SQ(deltaZ));
    yaw = atan2(playerX, playerZ, npcX, npcZ);

    playerYaw = playerStatus->targetYaw;
    dist = colDist - dist;
    deltaX = dist * sin_rad(DEG_TO_RAD(yaw));
    deltaZ = -dist * cos_rad(DEG_TO_RAD(yaw));

    if (playerStatus->animFlags & PA_FLAG_RIDING_PARTNER) {
        if (fabsf(get_clamped_angle_diff(yaw, playerYaw)) < 45.0f) {
            playerStatus->position.x -= deltaX;
            playerStatus->position.z -= deltaZ;
            wPartnerNpc->pos.x -= deltaX;
            wPartnerNpc->pos.z -= deltaZ;
        } else {
            playerStatus->position.x -= deltaX * 0.5f;
            playerStatus->position.z -= deltaZ * 0.5f;
            wPartnerNpc->pos.x -= deltaX * 0.5f;
            wPartnerNpc->pos.z -= deltaZ * 0.5f;
        }
    } else {
        if (playerStatus->flags & (PS_FLAG_JUMPING | PS_FLAG_FALLING)) {
            playerStatus->position.x -= deltaX * 0.4f;
            playerStatus->position.z -= deltaZ * 0.4f;
        } else {
            dist = get_clamped_angle_diff(yaw, playerYaw); // required to match
            if (fabsf(dist) < 45.0f) {
                playerStatus->position.x -= deltaX;
                playerStatus->position.z -= deltaZ;
            } else {
                playerStatus->position.x -= deltaX * 0.5f;
                playerStatus->position.z -= deltaZ * 0.5f;
            }
        }
    }
    npc->pos.x = npc->colliderPos.x;
    npc->pos.y = npc->colliderPos.y;
    npc->pos.z = npc->colliderPos.z;
    return TRUE;
}


### RAW ASSEMBLY INSTRUCTIONS:

glabel sun_appendGfx
/* 40B7D4 E01203E4 27BDFF40 */  addiu     $sp, $sp, -0xC0
/* 40B7D8 E01203E8 0080402D */  daddu     $t0, $a0, $zero
/* 40B7DC E01203EC AFBF00B8 */  sw        $ra, 0xB8($sp)
/* 40B7E0 E01203F0 AFB500B4 */  sw        $s5, 0xB4($sp)
/* 40B7E4 E01203F4 AFB400B0 */  sw        $s4, 0xB0($sp)
/* 40B7E8 E01203F8 AFB300AC */  sw        $s3, 0xAC($sp)
/* 40B7EC E01203FC AFB200A8 */  sw        $s2, 0xA8($sp)
/* 40B7F0 E0120400 AFB100A4 */  sw        $s1, 0xA4($sp)
/* 40B7F4 E0120404 AFB000A0 */  sw        $s0, 0xA0($sp)
/* 40B7F8 E0120408 8D14000C */  lw        $s4, 0xC($t0)
/* 40B7FC E012040C 8E950038 */  lw        $s5, 0x38($s4)
/* 40B800 E0120410 8E870000 */  lw        $a3, 0x0($s4)
/* 40B804 E0120414 12A000D1 */  beqz      $s5, .LE012075C
/* 40B808 E0120418 3C06DB06 */   lui      $a2, (0xDB060024 >> 16)
/* 40B80C E012041C 3C03800A */  lui       $v1, %hi(gMainGfxPos)
/* 40B810 E0120420 2463A66C */  addiu     $v1, $v1, %lo(gMainGfxPos)
/* 40B814 E0120424 34C60024 */  ori       $a2, $a2, (0xDB060024 & 0xFFFF)
/* 40B818 E0120428 8C640000 */  lw        $a0, 0x0($v1)
/* 40B81C E012042C 3C02E700 */  lui       $v0, (0xE7000000 >> 16)
/* 40B820 E0120430 0080282D */  daddu     $a1, $a0, $zero
/* 40B824 E0120434 24840008 */  addiu     $a0, $a0, 0x8
/* 40B828 E0120438 AC640000 */  sw        $a0, 0x0($v1)
/* 40B82C E012043C ACA20000 */  sw        $v0, 0x0($a1)
/* 40B830 E0120440 ACA00004 */  sw        $zero, 0x4($a1)
/* 40B834 E0120444 AC860000 */  sw        $a2, 0x0($a0)
/* 40B838 E0120448 8D050010 */  lw        $a1, 0x10($t0)
/* 40B83C E012044C 24820008 */  addiu     $v0, $a0, 0x8
/* 40B840 E0120450 AC620000 */  sw        $v0, 0x0($v1)
/* 40B844 E0120454 8CA2001C */  lw        $v0, 0x1C($a1)
/* 40B848 E0120458 3C038000 */  lui       $v1, (0x80000000 >> 16)
/* 40B84C E012045C 00431021 */  addu      $v0, $v0, $v1
/* 40B850 E0120460 14E00004 */  bnez      $a3, .LE0120474
/* 40B854 E0120464 AC820004 */   sw       $v0, 0x4($a0)
/* 40B858 E0120468 3C05C4C8 */  lui       $a1, (0xC4C80000 >> 16)
/* 40B85C E012046C 0804811F */  j         .LE012047C
/* 40B860 E0120470 3C0644C8 */   lui      $a2, (0x44C80000 >> 16)
.LE0120474:
/* 40B864 E0120474 3C0544C8 */  lui       $a1, (0x44C80000 >> 16)
/* 40B868 E0120478 3C06C4C8 */  lui       $a2, (0xC4C80000 >> 16)
.LE012047C:
/* 40B86C E012047C 3C07C496 */  lui       $a3, (0xC4960000 >> 16)
/* 40B870 E0120480 3C014496 */  lui       $at, (0x44960000 >> 16)
/* 40B874 E0120484 44810000 */  mtc1      $at, $f0
/* 40B878 E0120488 3C01C2C8 */  lui       $at, (0xC2C80000 >> 16)
/* 40B87C E012048C 44811000 */  mtc1      $at, $f2
/* 40B880 E0120490 3C0142C8 */  lui       $at, (0x42C80000 >> 16)
/* 40B884 E0120494 44812000 */  mtc1      $at, $f4
/* 40B888 E0120498 3C013F80 */  lui       $at, (0x3F800000 >> 16)
/* 40B88C E012049C 44813000 */  mtc1      $at, $f6
/* 40B890 E01204A0 27A40020 */  addiu     $a0, $sp, 0x20
/* 40B894 E01204A4 E7A00010 */  swc1      $f0, 0x10($sp)
/* 40B898 E01204A8 E7A20014 */  swc1      $f2, 0x14($sp)
/* 40B89C E01204AC E7A40018 */  swc1      $f4, 0x18($sp)
/* 40B8A0 E01204B0 0C080184 */  jal       shim_guOrthoF
/* 40B8A4 E01204B4 E7A6001C */   swc1     $f6, 0x1C($sp)
/* 40B8A8 E01204B8 3C130001 */  lui       $s3, (0x11630 >> 16)
/* 40B8AC E01204BC 36731630 */  ori       $s3, $s3, (0x11630 & 0xFFFF)
/* 40B8B0 E01204C0 27A40020 */  addiu     $a0, $sp, 0x20
/* 40B8B4 E01204C4 3C118007 */  lui       $s1, %hi(gMatrixListPos)
/* 40B8B8 E01204C8 263141F0 */  addiu     $s1, $s1, %lo(gMatrixListPos)
/* 40B8BC E01204CC 3C12800A */  lui       $s2, %hi(gDisplayContext)
/* 40B8C0 E01204D0 2652A674 */  addiu     $s2, $s2, %lo(gDisplayContext)
/* 40B8C4 E01204D4 96250000 */  lhu       $a1, 0x0($s1)
/* 40B8C8 E01204D8 8E420000 */  lw        $v0, 0x0($s2)
/* 40B8CC E01204DC 00052980 */  sll       $a1, $a1, 6
/* 40B8D0 E01204E0 00B32821 */  addu      $a1, $a1, $s3
/* 40B8D4 E01204E4 0C080118 */  jal       shim_guMtxF2L
/* 40B8D8 E01204E8 00452821 */   addu     $a1, $v0, $a1
/* 40B8DC E01204EC 3C09DA38 */  lui       $t1, (0xDA380007 >> 16)
/* 40B8E0 E01204F0 35290007 */  ori       $t1, $t1, (0xDA380007 & 0xFFFF)
/* 40B8E4 E01204F4 27A40020 */  addiu     $a0, $sp, 0x20
/* 40B8E8 E01204F8 3C10800A */  lui       $s0, %hi(gMainGfxPos)
/* 40B8EC E01204FC 2610A66C */  addiu     $s0, $s0, %lo(gMainGfxPos)
/* 40B8F0 E0120500 44800000 */  mtc1      $zero, $f0
/* 40B8F4 E0120504 8E030000 */  lw        $v1, 0x0($s0)
/* 40B8F8 E0120508 96220000 */  lhu       $v0, 0x0($s1)
/* 40B8FC E012050C 0060402D */  daddu     $t0, $v1, $zero
/* 40B900 E0120510 24630008 */  addiu     $v1, $v1, 0x8
/* 40B904 E0120514 AE030000 */  sw        $v1, 0x0($s0)
/* 40B908 E0120518 24430001 */  addiu     $v1, $v0, 0x1
/* 40B90C E012051C 3042FFFF */  andi      $v0, $v0, 0xFFFF
/* 40B910 E0120520 00021180 */  sll       $v0, $v0, 6
/* 40B914 E0120524 44050000 */  mfc1      $a1, $f0
/* 40B918 E0120528 00531021 */  addu      $v0, $v0, $s3
/* 40B91C E012052C AD090000 */  sw        $t1, 0x0($t0)
/* 40B920 E0120530 A6230000 */  sh        $v1, 0x0($s1)
/* 40B924 E0120534 8E430000 */  lw        $v1, 0x0($s2)
/* 40B928 E0120538 00A0302D */  daddu     $a2, $a1, $zero
/* 40B92C E012053C 00A0382D */  daddu     $a3, $a1, $zero
/* 40B930 E0120540 00621821 */  addu      $v1, $v1, $v0
/* 40B934 E0120544 0C080108 */  jal       shim_guTranslateF
/* 40B938 E0120548 AD030004 */   sw       $v1, 0x4($t0)
/* 40B93C E012054C 27A40020 */  addiu     $a0, $sp, 0x20
/* 40B940 E0120550 96250000 */  lhu       $a1, 0x0($s1)
/* 40B944 E0120554 8E420000 */  lw        $v0, 0x0($s2)
/* 40B948 E0120558 00052980 */  sll       $a1, $a1, 6
/* 40B94C E012055C 00B32821 */  addu      $a1, $a1, $s3
/* 40B950 E0120560 0C080118 */  jal       shim_guMtxF2L
/* 40B954 E0120564 00452821 */   addu     $a1, $v0, $a1
/* 40B958 E0120568 3C03DA38 */  lui       $v1, (0xDA380002 >> 16)
/* 40B95C E012056C 34630002 */  ori       $v1, $v1, (0xDA380002 & 0xFFFF)
/* 40B960 E0120570 0000582D */  daddu     $t3, $zero, $zero
/* 40B964 E0120574 3C0EF200 */  lui       $t6, (0xF2000000 >> 16)
/* 40B968 E0120578 3C0C0100 */  lui       $t4, (0x100007C >> 16)
/* 40B96C E012057C 358C007C */  ori       $t4, $t4, (0x100007C & 0xFFFF)
/* 40B970 E0120580 3C0DDE00 */  lui       $t5, (0xDE000000 >> 16)
/* 40B974 E0120584 3C0AE012 */  lui       $t2, %hi(D_E0120780)
/* 40B978 E0120588 254A0780 */  addiu     $t2, $t2, %lo(D_E0120780)
/* 40B97C E012058C 0160482D */  daddu     $t1, $t3, $zero
/* 40B980 E0120590 0280402D */  daddu     $t0, $s4, $zero
/* 40B984 E0120594 8E060000 */  lw        $a2, 0x0($s0)
/* 40B988 E0120598 3C014080 */  lui       $at, (0x40800000 >> 16)
/* 40B98C E012059C 44811000 */  mtc1      $at, $f2
/* 40B990 E01205A0 96220000 */  lhu       $v0, 0x0($s1)
/* 40B994 E01205A4 00C0202D */  daddu     $a0, $a2, $zero
/* 40B998 E01205A8 24C60008 */  addiu     $a2, $a2, 0x8
/* 40B99C E01205AC AE060000 */  sw        $a2, 0x0($s0)
/* 40B9A0 E01205B0 AC830000 */  sw        $v1, 0x0($a0)
/* 40B9A4 E01205B4 24430001 */  addiu     $v1, $v0, 0x1
/* 40B9A8 E01205B8 3042FFFF */  andi      $v0, $v0, 0xFFFF
/* 40B9AC E01205BC 00021180 */  sll       $v0, $v0, 6
/* 40B9B0 E01205C0 A6230000 */  sh        $v1, 0x0($s1)
/* 40B9B4 E01205C4 8E430000 */  lw        $v1, 0x0($s2)
/* 40B9B8 E01205C8 00531021 */  addu      $v0, $v0, $s3
/* 40B9BC E01205CC 00621821 */  addu      $v1, $v1, $v0
/* 40B9C0 E01205D0 24C20008 */  addiu     $v0, $a2, 0x8
/* 40B9C4 E01205D4 AC830004 */  sw        $v1, 0x4($a0)
/* 40B9C8 E01205D8 AE020000 */  sw        $v0, 0x0($s0)
/* 40B9CC E01205DC 3C02FA00 */  lui       $v0, (0xFA000000 >> 16)
/* 40B9D0 E01205E0 ACC20000 */  sw        $v0, 0x0($a2)
/* 40B9D4 E01205E4 91030018 */  lbu       $v1, 0x18($t0)
/* 40B9D8 E01205E8 91040019 */  lbu       $a0, 0x19($t0)
/* 40B9DC E01205EC 9105001A */  lbu       $a1, 0x1A($t0)
/* 40B9E0 E01205F0 24C20010 */  addiu     $v0, $a2, 0x10
/* 40B9E4 E01205F4 AE020000 */  sw        $v0, 0x0($s0)
/* 40B9E8 E01205F8 3C02FB00 */  lui       $v0, (0xFB000000 >> 16)
/* 40B9EC E01205FC ACC20008 */  sw        $v0, 0x8($a2)
/* 40B9F0 E0120600 00151043 */  sra       $v0, $s5, 1
/* 40B9F4 E0120604 304200FF */  andi      $v0, $v0, 0xFF
/* 40B9F8 E0120608 00031E00 */  sll       $v1, $v1, 24
/* 40B9FC E012060C 00042400 */  sll       $a0, $a0, 16
/* 40BA00 E0120610 00641825 */  or        $v1, $v1, $a0
/* 40BA04 E0120614 00052A00 */  sll       $a1, $a1, 8
/* 40BA08 E0120618 00651825 */  or        $v1, $v1, $a1
/* 40BA0C E012061C 00621825 */  or        $v1, $v1, $v0
/* 40BA10 E0120620 ACC30004 */  sw        $v1, 0x4($a2)
/* 40BA14 E0120624 9102001B */  lbu       $v0, 0x1B($t0)
/* 40BA18 E0120628 9104001C */  lbu       $a0, 0x1C($t0)
/* 40BA1C E012062C 9105001D */  lbu       $a1, 0x1D($t0)
/* 40BA20 E0120630 9107001E */  lbu       $a3, 0x1E($t0)
/* 40BA24 E0120634 01A0182D */  daddu     $v1, $t5, $zero
/* 40BA28 E0120638 ACC30010 */  sw        $v1, 0x10($a2)
/* 40BA2C E012063C 00021600 */  sll       $v0, $v0, 24
/* 40BA30 E0120640 00042400 */  sll       $a0, $a0, 16
/* 40BA34 E0120644 00441025 */  or        $v0, $v0, $a0
/* 40BA38 E0120648 00052A00 */  sll       $a1, $a1, 8
/* 40BA3C E012064C 00451025 */  or        $v0, $v0, $a1
/* 40BA40 E0120650 00471025 */  or        $v0, $v0, $a3
/* 40BA44 E0120654 ACC2000C */  sw        $v0, 0xC($a2)
/* 40BA48 E0120658 3C03E012 */  lui       $v1, (0xE0120794 >> 16)
/* 40BA4C E012065C 8C630794 */  lw        $v1, (0xE0120794 & 0xFFFF)($v1)
/* 40BA50 E0120660 24C20018 */  addiu     $v0, $a2, 0x18
/* 40BA54 E0120664 AE020000 */  sw        $v0, 0x0($s0)
/* 40BA58 E0120668 ACC30014 */  sw        $v1, 0x14($a2)
.LE012066C:
/* 40BA5C E012066C C5000020 */  lwc1      $f0, 0x20($t0)
/* 40BA60 E0120670 25080004 */  addiu     $t0, $t0, 0x4
/* 40BA64 E0120674 8E040000 */  lw        $a0, 0x0($s0)
/* 40BA68 E0120678 256B0001 */  addiu     $t3, $t3, 0x1
/* 40BA6C E012067C 0080282D */  daddu     $a1, $a0, $zero
/* 40BA70 E0120680 46020002 */  mul.s     $f0, $f0, $f2
/* 40BA74 E0120684 00000000 */  nop
/* 40BA78 E0120688 24840008 */  addiu     $a0, $a0, 0x8
/* 40BA7C E012068C 24820008 */  addiu     $v0, $a0, 0x8
/* 40BA80 E0120690 AE040000 */  sw        $a0, 0x0($s0)
/* 40BA84 E0120694 AE020000 */  sw        $v0, 0x0($s0)
/* 40BA88 E0120698 4600020D */  trunc.w.s $f8, $f0
/* 40BA8C E012069C 44034000 */  mfc1      $v1, $f8
/* 40BA90 E01206A0 00000000 */  nop
/* 40BA94 E01206A4 00691821 */  addu      $v1, $v1, $t1
/* 40BA98 E01206A8 30620FFF */  andi      $v0, $v1, 0xFFF
/* 40BA9C E01206AC 00021300 */  sll       $v0, $v0, 12
/* 40BAA0 E01206B0 004E1025 */  or        $v0, $v0, $t6
/* 40BAA4 E01206B4 246300FC */  addiu     $v1, $v1, 0xFC
/* 40BAA8 E01206B8 30630FFF */  andi      $v1, $v1, 0xFFF
/* 40BAAC E01206BC 00031B00 */  sll       $v1, $v1, 12
/* 40BAB0 E01206C0 006C1825 */  or        $v1, $v1, $t4
/* 40BAB4 E01206C4 ACA20000 */  sw        $v0, 0x0($a1)
/* 40BAB8 E01206C8 ACA30004 */  sw        $v1, 0x4($a1)
/* 40BABC E01206CC AC8D0000 */  sw        $t5, 0x0($a0)
/* 40BAC0 E01206D0 8D420000 */  lw        $v0, 0x0($t2)
/* 40BAC4 E01206D4 254A0004 */  addiu     $t2, $t2, 0x4
/* 40BAC8 E01206D8 AC820004 */  sw        $v0, 0x4($a0)
/* 40BACC E01206DC 29620005 */  slti      $v0, $t3, 0x5
/* 40BAD0 E01206E0 1440FFE2 */  bnez      $v0, .LE012066C
/* 40BAD4 E01206E4 2529002C */   addiu    $t1, $t1, 0x2C
/* 40BAD8 E01206E8 3C02D838 */  lui       $v0, (0xD8380002 >> 16)
/* 40BADC E01206EC 34420002 */  ori       $v0, $v0, (0xD8380002 & 0xFFFF)
/* 40BAE0 E01206F0 3C05800A */  lui       $a1, %hi(gMainGfxPos)
/* 40BAE4 E01206F4 24A5A66C */  addiu     $a1, $a1, %lo(gMainGfxPos)
/* 40BAE8 E01206F8 8CA40000 */  lw        $a0, 0x0($a1)
/* 40BAEC E01206FC 3C06DA38 */  lui       $a2, (0xDA380007 >> 16)
/* 40BAF0 E0120700 0080182D */  daddu     $v1, $a0, $zero
/* 40BAF4 E0120704 24840008 */  addiu     $a0, $a0, 0x8
/* 40BAF8 E0120708 ACA40000 */  sw        $a0, 0x0($a1)
/* 40BAFC E012070C AC620000 */  sw        $v0, 0x0($v1)
/* 40BB00 E0120710 24020040 */  addiu     $v0, $zero, 0x40
/* 40BB04 E0120714 AC620004 */  sw        $v0, 0x4($v1)
/* 40BB08 E0120718 3C038007 */  lui       $v1, %hi(gCurrentCameraID)
/* 40BB0C E012071C 8C637410 */  lw        $v1, %lo(gCurrentCameraID)($v1)
/* 40BB10 E0120720 24820008 */  addiu     $v0, $a0, 0x8
/* 40BB14 E0120724 ACA20000 */  sw        $v0, 0x0($a1)
/* 40BB18 E0120728 3C02800A */  lui       $v0, %hi(gDisplayContext)
/* 40BB1C E012072C 8C42A674 */  lw        $v0, %lo(gDisplayContext)($v0)
/* 40BB20 E0120730 34C60007 */  ori       $a2, $a2, (0xDA380007 & 0xFFFF)
/* 40BB24 E0120734 AC860000 */  sw        $a2, 0x0($a0)
/* 40BB28 E0120738 00031980 */  sll       $v1, $v1, 6
/* 40BB2C E012073C 24630030 */  addiu     $v1, $v1, 0x30
/* 40BB30 E0120740 00431021 */  addu      $v0, $v0, $v1
/* 40BB34 E0120744 AC820004 */  sw        $v0, 0x4($a0)
/* 40BB38 E0120748 24820010 */  addiu     $v0, $a0, 0x10
/* 40BB3C E012074C ACA20000 */  sw        $v0, 0x0($a1)
/* 40BB40 E0120750 3C02E700 */  lui       $v0, (0xE7000000 >> 16)
/* 40BB44 E0120754 AC820008 */  sw        $v0, 0x8($a0)
/* 40BB48 E0120758 AC80000C */  sw        $zero, 0xC($a0)
.LE012075C:
/* 40BB4C E012075C 8FBF00B8 */  lw        $ra, 0xB8($sp)
/* 40BB50 E0120760 8FB500B4 */  lw        $s5, 0xB4($sp)
/* 40BB54 E0120764 8FB400B0 */  lw        $s4, 0xB0($sp)
/* 40BB58 E0120768 8FB300AC */  lw        $s3, 0xAC($sp)
/* 40BB5C E012076C 8FB200A8 */  lw        $s2, 0xA8($sp)
/* 40BB60 E0120770 8FB100A4 */  lw        $s1, 0xA4($sp)
/* 40BB64 E0120774 8FB000A0 */  lw        $s0, 0xA0($sp)
/* 40BB68 E0120778 03E00008 */  jr        $ra
/* 40BB6C E012077C 27BD00C0 */   addiu    $sp, $sp, 0xC0

### DECOMPILED C INSTRUCTIONS:

void sun_appendGfx(void* argEffect) {
    EffectInstance* effect = (EffectInstance*) argEffect;
    SunFXData* data;
    Matrix4f mtx;
    Matrix4f mtxUnused;
    s32 alpha;
    s32 offsetS;
    s32 fromRight;
    s32 i;

    data = effect->data.sun;
    alpha = data->alpha;
    fromRight = data->shineFromRight;

    if (alpha != 0) {
        gDPPipeSync(gMainGfxPos++);
        gSPSegment(gMainGfxPos++, 0x9, VIRTUAL_TO_PHYSICAL(effect->graphics->data));

        if (!fromRight) {
            shim_guOrthoF(mtx, -1600.0f, 1600.0f, -1200.0f, 1200.0f, -100.0f, 100.0f, 1.0f);
        } else {
            shim_guOrthoF(mtx, 1600.0f, -1600.0f, -1200.0f, 1200.0f, -100.0f, 100.0f, 1.0f);
        }

        shim_guMtxF2L(mtx, &gDisplayContext->matrixStack[gMatrixListPos]);
        gSPMatrix(gMainGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++],
            G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
        shim_guTranslateF(mtx, 0.0f, 0.0f, 0.0f);
        shim_guMtxF2L(mtx, &gDisplayContext->matrixStack[gMatrixListPos]);
        gSPMatrix(gMainGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++],
            G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW);

        gDPSetPrimColor(gMainGfxPos++, 0, 0, data->primColor.r, data->primColor.g, data->primColor.b, alpha >> 1);
        gDPSetEnvColor(gMainGfxPos++, data->envColor.r, data->envColor.g, data->envColor.b, data->envColor.a);
        gSPDisplayList(gMainGfxPos++, D_E0120794[0]);

        for (i = 0; i < ARRAY_COUNT(data->texScrollAmt); i++) {
            offsetS = data->texScrollAmt[i] * 4.0f;
            gDPSetTileSize(gMainGfxPos++, 1, offsetS + (44 * i), 0, offsetS + (44 * i) + 252, 124);
            gSPDisplayList(gMainGfxPos++, D_E0120780[i]);
        }
        gSPPopMatrix(gMainGfxPos++, G_MTX_MODELVIEW);
        gSPMatrix(gMainGfxPos++, &gDisplayContext->camPerspMatrix[gCurrentCameraID],
            G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
        gDPPipeSync(gMainGfxPos++);
    }
}


### RAW ASSEMBLY INSTRUCTIONS:

dlabel func_8025A74C
/* 18902C 8025A74C 27BDFFD0 */  addiu     $sp, $sp, -0x30
/* 189030 8025A750 AFB40020 */  sw        $s4, 0x20($sp)
/* 189034 8025A754 0080A02D */  daddu     $s4, $a0, $zero
/* 189038 8025A758 AFB10014 */  sw        $s1, 0x14($sp)
/* 18903C 8025A75C 00A0882D */  daddu     $s1, $a1, $zero
/* 189040 8025A760 AFB20018 */  sw        $s2, 0x18($sp)
/* 189044 8025A764 00C0902D */  daddu     $s2, $a2, $zero
/* 189048 8025A768 AFBF0028 */  sw        $ra, 0x28($sp)
/* 18904C 8025A76C AFB50024 */  sw        $s5, 0x24($sp)
/* 189050 8025A770 AFB3001C */  sw        $s3, 0x1C($sp)
/* 189054 8025A774 AFB00010 */  sw        $s0, 0x10($sp)
/* 189058 8025A778 8E3000C0 */  lw        $s0, 0xC0($s1)
/* 18905C 8025A77C 820206C1 */  lb        $v0, 0x6C1($s0)
/* 189060 8025A780 8FB50040 */  lw        $s5, 0x40($sp)
/* 189064 8025A784 10400032 */  beqz      $v0, .L8025A850
/* 189068 8025A788 00E0982D */   daddu    $s3, $a3, $zero
/* 18906C 8025A78C 16800017 */  bnez      $s4, .L8025A7EC
/* 189070 8025A790 00000000 */   nop
/* 189074 8025A794 0C0B7830 */  jal       spr_get_player_palettes
/* 189078 8025A798 96240088 */   lhu      $a0, 0x88($s1)
/* 18907C 8025A79C AE0206D0 */  sw        $v0, 0x6D0($s0)
/* 189080 8025A7A0 0040202D */  daddu     $a0, $v0, $zero
/* 189084 8025A7A4 A20006CD */  sb        $zero, 0x6CD($s0)
/* 189088 8025A7A8 8C830000 */  lw        $v1, 0x0($a0)
/* 18908C 8025A7AC 2402FFFF */  addiu     $v0, $zero, -0x1
/* 189090 8025A7B0 50620023 */  beql      $v1, $v0, .L8025A840
/* 189094 8025A7B4 2402000A */   addiu    $v0, $zero, 0xA
/* 189098 8025A7B8 0080182D */  daddu     $v1, $a0, $zero
/* 18909C 8025A7BC 0040202D */  daddu     $a0, $v0, $zero
.L8025A7C0:
/* 1890A0 8025A7C0 920206CD */  lbu       $v0, 0x6CD($s0)
/* 1890A4 8025A7C4 24420001 */  addiu     $v0, $v0, 0x1
/* 1890A8 8025A7C8 A20206CD */  sb        $v0, 0x6CD($s0)
/* 1890AC 8025A7CC 00021600 */  sll       $v0, $v0, 24
/* 1890B0 8025A7D0 00021583 */  sra       $v0, $v0, 22
/* 1890B4 8025A7D4 00431021 */  addu      $v0, $v0, $v1
/* 1890B8 8025A7D8 8C420000 */  lw        $v0, 0x0($v0)
/* 1890BC 8025A7DC 1444FFF8 */  bne       $v0, $a0, .L8025A7C0
/* 1890C0 8025A7E0 2402000A */   addiu    $v0, $zero, 0xA
/* 1890C4 8025A7E4 08096A11 */  j         .L8025A844
/* 1890C8 8025A7E8 A20006C2 */   sb       $zero, 0x6C2($s0)
.L8025A7EC:
/* 1890CC 8025A7EC 96240088 */  lhu       $a0, 0x88($s1)
/* 1890D0 8025A7F0 0C0B7A90 */  jal       spr_get_npc_palettes
/* 1890D4 8025A7F4 00000000 */   nop
/* 1890D8 8025A7F8 AE0206D0 */  sw        $v0, 0x6D0($s0)
/* 1890DC 8025A7FC 0040202D */  daddu     $a0, $v0, $zero
/* 1890E0 8025A800 A20006CD */  sb        $zero, 0x6CD($s0)
/* 1890E4 8025A804 8C830000 */  lw        $v1, 0x0($a0)
/* 1890E8 8025A808 2402FFFF */  addiu     $v0, $zero, -0x1
D_8025A80C:
/* 1890EC 8025A80C 5062000C */  beql      $v1, $v0, .L8025A840
/* 1890F0 8025A810 2402000A */   addiu    $v0, $zero, 0xA
/* 1890F4 8025A814 0080182D */  daddu     $v1, $a0, $zero
/* 1890F8 8025A818 0040202D */  daddu     $a0, $v0, $zero
.L8025A81C:
/* 1890FC 8025A81C 920206CD */  lbu       $v0, 0x6CD($s0)
/* 189100 8025A820 24420001 */  addiu     $v0, $v0, 0x1
/* 189104 8025A824 A20206CD */  sb        $v0, 0x6CD($s0)
/* 189108 8025A828 00021600 */  sll       $v0, $v0, 24
/* 18910C 8025A82C 00021583 */  sra       $v0, $v0, 22
/* 189110 8025A830 00431021 */  addu      $v0, $v0, $v1
/* 189114 8025A834 8C420000 */  lw        $v0, 0x0($v0)
/* 189118 8025A838 1444FFF8 */  bne       $v0, $a0, .L8025A81C
/* 18911C 8025A83C 2402000A */   addiu    $v0, $zero, 0xA
.L8025A840:
/* 189120 8025A840 A20006C2 */  sb        $zero, 0x6C2($s0)
.L8025A844:
/* 189124 8025A844 A60006C8 */  sh        $zero, 0x6C8($s0)
/* 189128 8025A848 A60206CA */  sh        $v0, 0x6CA($s0)
/* 18912C 8025A84C A20006C1 */  sb        $zero, 0x6C1($s0)
.L8025A850:
/* 189130 8025A850 820206CD */  lb        $v0, 0x6CD($s0)
/* 189134 8025A854 1840002F */  blez      $v0, .L8025A914
/* 189138 8025A858 0000382D */   daddu    $a3, $zero, $zero
.L8025A85C:
/* 18913C 8025A85C 8E0206D0 */  lw        $v0, 0x6D0($s0)
/* 189140 8025A860 00071880 */  sll       $v1, $a3, 2
/* 189144 8025A864 00621821 */  addu      $v1, $v1, $v0
/* 189148 8025A868 00071140 */  sll       $v0, $a3, 5
/* 18914C 8025A86C 8C660000 */  lw        $a2, 0x0($v1)
/* 189150 8025A870 10C00022 */  beqz      $a2, .L8025A8FC
/* 189154 8025A874 02025021 */   addu     $t2, $s0, $v0
/* 189158 8025A878 0000482D */  daddu     $t1, $zero, $zero
.L8025A87C:
/* 18915C 8025A87C 94C30000 */  lhu       $v1, 0x0($a2)
/* 189160 8025A880 90C20001 */  lbu       $v0, 0x1($a2)
/* 189164 8025A884 24C60002 */  addiu     $a2, $a2, 0x2
/* 189168 8025A888 304B0001 */  andi      $t3, $v0, 0x1
/* 18916C 8025A88C 000312C2 */  srl       $v0, $v1, 11
/* 189170 8025A890 24450004 */  addiu     $a1, $v0, 0x4
/* 189174 8025A894 00031182 */  srl       $v0, $v1, 6
/* 189178 8025A898 3044001F */  andi      $a0, $v0, 0x1F
/* 18917C 8025A89C 00031842 */  srl       $v1, $v1, 1
/* 189180 8025A8A0 2CA20020 */  sltiu     $v0, $a1, 0x20
/* 189184 8025A8A4 14400002 */  bnez      $v0, .L8025A8B0
/* 189188 8025A8A8 3068001F */   andi     $t0, $v1, 0x1F
/* 18918C 8025A8AC 2405001F */  addiu     $a1, $zero, 0x1F
.L8025A8B0:
/* 189190 8025A8B0 24830004 */  addiu     $v1, $a0, 0x4
/* 189194 8025A8B4 2C620020 */  sltiu     $v0, $v1, 0x20
/* 189198 8025A8B8 50400001 */  beql      $v0, $zero, .L8025A8C0
/* 18919C 8025A8BC 2403001F */   addiu    $v1, $zero, 0x1F
.L8025A8C0:
/* 1891A0 8025A8C0 25040004 */  addiu     $a0, $t0, 0x4
/* 1891A4 8025A8C4 2C820020 */  sltiu     $v0, $a0, 0x20
/* 1891A8 8025A8C8 50400001 */  beql      $v0, $zero, .L8025A8D0
/* 1891AC 8025A8CC 2404001F */   addiu    $a0, $zero, 0x1F
.L8025A8D0:
/* 1891B0 8025A8D0 000512C0 */  sll       $v0, $a1, 11
/* 1891B4 8025A8D4 00031980 */  sll       $v1, $v1, 6
/* 1891B8 8025A8D8 00431025 */  or        $v0, $v0, $v1
/* 1891BC 8025A8DC 00041840 */  sll       $v1, $a0, 1
/* 1891C0 8025A8E0 00431025 */  or        $v0, $v0, $v1
/* 1891C4 8025A8E4 01621025 */  or        $v0, $t3, $v0
/* 1891C8 8025A8E8 A5420000 */  sh        $v0, 0x0($t2)
/* 1891CC 8025A8EC 25290001 */  addiu     $t1, $t1, 0x1
/* 1891D0 8025A8F0 29220010 */  slti      $v0, $t1, 0x10
/* 1891D4 8025A8F4 1440FFE1 */  bnez      $v0, .L8025A87C
/* 1891D8 8025A8F8 254A0002 */   addiu    $t2, $t2, 0x2
.L8025A8FC:
/* 1891DC 8025A8FC 820206CD */  lb        $v0, 0x6CD($s0)
/* 1891E0 8025A900 24E70001 */  addiu     $a3, $a3, 0x1
/* 1891E4 8025A904 00E2102A */  slt       $v0, $a3, $v0
/* 1891E8 8025A908 1440FFD4 */  bnez      $v0, .L8025A85C
/* 1891EC 8025A90C 00000000 */   nop
/* 1891F0 8025A910 820206CD */  lb        $v0, 0x6CD($s0)
.L8025A914:
/* 1891F4 8025A914 1840000A */  blez      $v0, .L8025A940
/* 1891F8 8025A918 0000382D */   daddu    $a3, $zero, $zero
/* 1891FC 8025A91C 0200202D */  daddu     $a0, $s0, $zero
/* 189200 8025A920 0200182D */  daddu     $v1, $s0, $zero
.L8025A924:
/* 189204 8025A924 AC6406D4 */  sw        $a0, 0x6D4($v1)
/* 189208 8025A928 24840020 */  addiu     $a0, $a0, 0x20
/* 18920C 8025A92C 820206CD */  lb        $v0, 0x6CD($s0)
/* 189210 8025A930 24E70001 */  addiu     $a3, $a3, 0x1
/* 189214 8025A934 00E2102A */  slt       $v0, $a3, $v0
/* 189218 8025A938 1440FFFA */  bnez      $v0, .L8025A924
/* 18921C 8025A93C 24630004 */   addiu    $v1, $v1, 0x4
.L8025A940:
/* 189220 8025A940 820306C2 */  lb        $v1, 0x6C2($s0)
/* 189224 8025A944 28620002 */  slti      $v0, $v1, 0x2
/* 189228 8025A948 10400044 */  beqz      $v0, .L8025AA5C
/* 18922C 8025A94C 00000000 */   nop
/* 189230 8025A950 04600042 */  bltz      $v1, .L8025AA5C
/* 189234 8025A954 00000000 */   nop
/* 189238 8025A958 860206C8 */  lh        $v0, 0x6C8($s0)
/* 18923C 8025A95C 1C400010 */  bgtz      $v0, .L8025A9A0
/* 189240 8025A960 240300FF */   addiu    $v1, $zero, 0xFF
/* 189244 8025A964 04420001 */  bltzl     $v0, .L8025A96C
/* 189248 8025A968 00021023 */   negu     $v0, $v0
.L8025A96C:
/* 18924C 8025A96C 00021040 */  sll       $v0, $v0, 1
/* 189250 8025A970 3C018028 */  lui       $at, %hi(D_802840DC)
/* 189254 8025A974 00220821 */  addu      $at, $at, $v0
/* 189258 8025A978 942240DC */  lhu       $v0, %lo(D_802840DC)($at)
/* 18925C 8025A97C A622006A */  sh        $v0, 0x6A($s1)
/* 189260 8025A980 00021400 */  sll       $v0, $v0, 16
/* 189264 8025A984 00021403 */  sra       $v0, $v0, 16
/* 189268 8025A988 14430005 */  bne       $v0, $v1, .L8025A9A0
/* 18926C 8025A98C 2404003C */   addiu    $a0, $zero, 0x3C
/* 189270 8025A990 0C00A67F */  jal       rand_int
/* 189274 8025A994 A620006A */   sh       $zero, 0x6A($s1)
/* 189278 8025A998 2442001E */  addiu     $v0, $v0, 0x1E
/* 18927C 8025A99C A60206C8 */  sh        $v0, 0x6C8($s0)
.L8025A9A0:
/* 189280 8025A9A0 16A00004 */  bnez      $s5, .L8025A9B4
/* 189284 8025A9A4 00000000 */   nop
/* 189288 8025A9A8 960206C8 */  lhu       $v0, 0x6C8($s0)
/* 18928C 8025A9AC 2442FFFF */  addiu     $v0, $v0, -0x1
/* 189290 8025A9B0 A60206C8 */  sh        $v0, 0x6C8($s0)
.L8025A9B4:
/* 189294 8025A9B4 860306CA */  lh        $v1, 0x6CA($s0)
/* 189298 8025A9B8 2402000C */  addiu     $v0, $zero, 0xC
/* 18929C 8025A9BC 1062000C */  beq       $v1, $v0, .L8025A9F0
/* 1892A0 8025A9C0 2862000D */   slti     $v0, $v1, 0xD
/* 1892A4 8025A9C4 10400005 */  beqz      $v0, .L8025A9DC
/* 1892A8 8025A9C8 2402000A */   addiu    $v0, $zero, 0xA
/* 1892AC 8025A9CC 10620008 */  beq       $v1, $v0, .L8025A9F0
/* 1892B0 8025A9D0 00000000 */   nop
/* 1892B4 8025A9D4 08096A88 */  j         .L8025AA20
/* 1892B8 8025A9D8 00000000 */   nop
.L8025A9DC:
/* 1892BC 8025A9DC 2402000D */  addiu     $v0, $zero, 0xD
/* 1892C0 8025A9E0 5062000F */  beql      $v1, $v0, .L8025AA20
/* 1892C4 8025A9E4 A60006CA */   sh       $zero, 0x6CA($s0)
/* 1892C8 8025A9E8 08096A88 */  j         .L8025AA20
/* 1892CC 8025A9EC 00000000 */   nop
.L8025A9F0:
/* 1892D0 8025A9F0 16800006 */  bnez      $s4, .L8025AA0C
/* 1892D4 8025A9F4 0220202D */   daddu    $a0, $s1, $zero
/* 1892D8 8025A9F8 0240282D */  daddu     $a1, $s2, $zero
/* 1892DC 8025A9FC 0C096657 */  jal       func_8025995C
/* 1892E0 8025AA00 0260302D */   daddu    $a2, $s3, $zero
/* 1892E4 8025AA04 08096A92 */  j         .L8025AA48
/* 1892E8 8025AA08 00000000 */   nop
.L8025AA0C:
/* 1892EC 8025AA0C 0240282D */  daddu     $a1, $s2, $zero
/* 1892F0 8025AA10 0C0965B0 */  jal       func_802596C0
/* 1892F4 8025AA14 0260302D */   daddu    $a2, $s3, $zero
/* 1892F8 8025AA18 08096A92 */  j         .L8025AA48
/* 1892FC 8025AA1C 00000000 */   nop
.L8025AA20:
/* 189300 8025AA20 16800006 */  bnez      $s4, .L8025AA3C
/* 189304 8025AA24 0220202D */   daddu    $a0, $s1, $zero
/* 189308 8025AA28 0240282D */  daddu     $a1, $s2, $zero
/* 18930C 8025AA2C 0C0965EC */  jal       func_802597B0
/* 189310 8025AA30 0260302D */   daddu    $a2, $s3, $zero
/* 189314 8025AA34 08096A92 */  j         .L8025AA48
/* 189318 8025AA38 00000000 */   nop
.L8025AA3C:
/* 18931C 8025AA3C 0240282D */  daddu     $a1, $s2, $zero
/* 189320 8025AA40 0C096543 */  jal       func_8025950C
/* 189324 8025AA44 0260302D */   daddu    $a2, $s3, $zero
.L8025AA48:
/* 189328 8025AA48 16A00004 */  bnez      $s5, .L8025AA5C
/* 18932C 8025AA4C 00000000 */   nop
/* 189330 8025AA50 960206CA */  lhu       $v0, 0x6CA($s0)
/* 189334 8025AA54 24420001 */  addiu     $v0, $v0, 0x1
/* 189338 8025AA58 A60206CA */  sh        $v0, 0x6CA($s0)
.L8025AA5C:
/* 18933C 8025AA5C 8FBF0028 */  lw        $ra, 0x28($sp)
/* 189340 8025AA60 8FB50024 */  lw        $s5, 0x24($sp)
/* 189344 8025AA64 8FB40020 */  lw        $s4, 0x20($sp)
D_8025AA68:
/* 189348 8025AA68 8FB3001C */  lw        $s3, 0x1C($sp)
/* 18934C 8025AA6C 8FB20018 */  lw        $s2, 0x18($sp)
/* 189350 8025AA70 8FB10014 */  lw        $s1, 0x14($sp)
/* 189354 8025AA74 8FB00010 */  lw        $s0, 0x10($sp)
D_8025AA78:
/* 189358 8025AA78 03E00008 */  jr        $ra
/* 18935C 8025AA7C 27BD0030 */   addiu    $sp, $sp, 0x30

### DECOMPILED C INSTRUCTIONS:

void render_with_paralyze_palettes(b32 isNpcSprite, ActorPart* part, s32 yaw, Matrix4f mtx, b32 skipAnimation) {
    DecorationTable* decorationTable = part->decorationTable;
    PAL_PTR palIn;
    PAL_PTR palOut;
    s32 i, j;

    if (decorationTable->resetPalAdjust) {
        if (isNpcSprite == SPRITE_MODE_PLAYER) {
            decorationTable->originalPalettesList = spr_get_player_palettes(part->currentAnimation >> 16);
            decorationTable->originalPalettesCount = 0;
            while ((s32)decorationTable->originalPalettesList[decorationTable->originalPalettesCount] != -1) {
                decorationTable->originalPalettesCount++;
            }
        } else {
            decorationTable->originalPalettesList = spr_get_npc_palettes(part->currentAnimation >> 16);
            decorationTable->originalPalettesCount = 0;
            while ((s32)decorationTable->originalPalettesList[decorationTable->originalPalettesCount] != -1) {
                decorationTable->originalPalettesCount++;
            }
        }

        decorationTable->palAnimState = 0;
        decorationTable->nextPalTime = 0;
        decorationTable->palBlendAlpha = 10;
        decorationTable->resetPalAdjust = FALSE;
    }

    for (i = 0; i < decorationTable->originalPalettesCount; i++) {
        palIn = decorationTable->originalPalettesList[i];
        palOut = decorationTable->copiedPalettes[0][i];
        if (palIn != NULL) {
            for (j = 0; j < SPR_PAL_SIZE; j++) {
                u8 r = UNPACK_PAL_R(*palIn);
                u8 g = UNPACK_PAL_G(*palIn);
                u8 b = UNPACK_PAL_B(*palIn);
                u8 a = UNPACK_PAL_A(*palIn);
                palIn++;
                r += 4;
                if (r > 31) {
                    r = 31;
                }
                g += 4;
                if (g > 31) {
                    g = 31;
                }
                b += 4;
                if (b > 31) {
                    b = 31;
                }

                *palOut++ = PACK_PAL_RGBA(r, g, b, a);
            }
        }
    }

    for (i = 0; i < decorationTable->originalPalettesCount; i++) {
        decorationTable->adjustedPalettes[i] = decorationTable->copiedPalettes[0][i];
    }

    switch (decorationTable->palAnimState) {
        case 0:
        case 1:
            if (decorationTable->nextPalTime <= 0) {
                part->palAnimPosOffset[1] = ParalyzePaletteAnimXOffsets[abs(decorationTable->nextPalTime)];
                if (part->palAnimPosOffset[1] == PAL_ANIM_END) {
                    part->palAnimPosOffset[1] = 0;
                    decorationTable->nextPalTime = rand_int(60) + 30;
                }
            }

            if (!skipAnimation) {
                decorationTable->nextPalTime--;
            }

            switch (decorationTable->palBlendAlpha) {
                case 10:
                case 12:
                    if (isNpcSprite == SPRITE_MODE_PLAYER) {
                        func_8025995C(part, yaw, mtx);
                    } else {
                        func_802596C0(part, yaw, mtx);
                    }
                    break;
                case 13:
                    decorationTable->palBlendAlpha = 0;
                    // fallthrough
                default:
                    if (isNpcSprite == SPRITE_MODE_PLAYER) {
                        func_802597B0(part, yaw, mtx);
                    } else {
                        func_8025950C(part, yaw, mtx);
                    }
                    break;
            }

            if (!skipAnimation) {
                decorationTable->palBlendAlpha++;
            }
            break;
    }
}


### RAW ASSEMBLY INSTRUCTIONS:

glabel stars_burst_appendGfx
/* 354B58 E00423B8 27BDFF28 */  addiu     $sp, $sp, -0xD8
/* 354B5C E00423BC 3C05DB06 */  lui       $a1, (0xDB060024 >> 16)
/* 354B60 E00423C0 34A50024 */  ori       $a1, $a1, (0xDB060024 & 0xFFFF)
/* 354B64 E00423C4 3C0638E3 */  lui       $a2, (0x38E38E39 >> 16)
/* 354B68 E00423C8 34C68E39 */  ori       $a2, $a2, (0x38E38E39 & 0xFFFF)
/* 354B6C E00423CC 3C08800A */  lui       $t0, %hi(gMainGfxPos)
/* 354B70 E00423D0 2508A66C */  addiu     $t0, $t0, %lo(gMainGfxPos)
/* 354B74 E00423D4 3C02E700 */  lui       $v0, (0xE7000000 >> 16)
/* 354B78 E00423D8 AFBF00C4 */  sw        $ra, 0xC4($sp)
/* 354B7C E00423DC AFBE00C0 */  sw        $fp, 0xC0($sp)
/* 354B80 E00423E0 AFB700BC */  sw        $s7, 0xBC($sp)
/* 354B84 E00423E4 AFB600B8 */  sw        $s6, 0xB8($sp)
/* 354B88 E00423E8 AFB500B4 */  sw        $s5, 0xB4($sp)
/* 354B8C E00423EC AFB400B0 */  sw        $s4, 0xB0($sp)
/* 354B90 E00423F0 AFB300AC */  sw        $s3, 0xAC($sp)
/* 354B94 E00423F4 AFB200A8 */  sw        $s2, 0xA8($sp)
/* 354B98 E00423F8 AFB100A4 */  sw        $s1, 0xA4($sp)
/* 354B9C E00423FC AFB000A0 */  sw        $s0, 0xA0($sp)
/* 354BA0 E0042400 F7B600D0 */  sdc1      $f22, 0xD0($sp)
/* 354BA4 E0042404 F7B400C8 */  sdc1      $f20, 0xC8($sp)
/* 354BA8 E0042408 AFA400D8 */  sw        $a0, 0xD8($sp)
/* 354BAC E004240C 8D040000 */  lw        $a0, 0x0($t0)
/* 354BB0 E0042410 8FA900D8 */  lw        $t1, 0xD8($sp)
/* 354BB4 E0042414 0080182D */  daddu     $v1, $a0, $zero
/* 354BB8 E0042418 8D27000C */  lw        $a3, 0xC($t1)
/* 354BBC E004241C 24840008 */  addiu     $a0, $a0, 0x8
/* 354BC0 E0042420 AC620000 */  sw        $v0, 0x0($v1)
/* 354BC4 E0042424 AC600004 */  sw        $zero, 0x4($v1)
/* 354BC8 E0042428 AC850000 */  sw        $a1, 0x0($a0)
/* 354BCC E004242C 8D220010 */  lw        $v0, 0x10($t1)
/* 354BD0 E0042430 24150001 */  addiu     $s5, $zero, 0x1
/* 354BD4 E0042434 AD040000 */  sw        $a0, 0x0($t0)
/* 354BD8 E0042438 8C43001C */  lw        $v1, 0x1C($v0)
/* 354BDC E004243C 3C02DE00 */  lui       $v0, (0xDE000000 >> 16)
/* 354BE0 E0042440 AC820008 */  sw        $v0, 0x8($a0)
/* 354BE4 E0042444 3C020900 */  lui       $v0, %hi(D_090004C0_415520)
/* 354BE8 E0042448 244204C0 */  addiu     $v0, $v0, %lo(D_090004C0_415520)
/* 354BEC E004244C AC82000C */  sw        $v0, 0xC($a0)
/* 354BF0 E0042450 3C028000 */  lui       $v0, (0x80000000 >> 16)
/* 354BF4 E0042454 00621821 */  addu      $v1, $v1, $v0
/* 354BF8 E0042458 AC830004 */  sw        $v1, 0x4($a0)
/* 354BFC E004245C 24830008 */  addiu     $v1, $a0, 0x8
/* 354C00 E0042460 8CE20034 */  lw        $v0, 0x34($a3)
/* 354C04 E0042464 24840010 */  addiu     $a0, $a0, 0x10
/* 354C08 E0042468 AD030000 */  sw        $v1, 0x0($t0)
/* 354C0C E004246C 2442FFFF */  addiu     $v0, $v0, -0x1
/* 354C10 E0042470 02A21804 */  sllv      $v1, $v0, $s5
/* 354C14 E0042474 00629821 */  addu      $s3, $v1, $v0
/* 354C18 E0042478 02660018 */  mult      $s3, $a2
/* 354C1C E004247C AD040000 */  sw        $a0, 0x0($t0)
/* 354C20 E0042480 8CE9002C */  lw        $t1, 0x2C($a3)
/* 354C24 E0042484 001317C3 */  sra       $v0, $s3, 31
/* 354C28 E0042488 AFA90098 */  sw        $t1, 0x98($sp)
/* 354C2C E004248C 00004810 */  mfhi      $t1
/* 354C30 E0042490 000918C3 */  sra       $v1, $t1, 3
/* 354C34 E0042494 00621823 */  subu      $v1, $v1, $v0
/* 354C38 E0042498 000310C0 */  sll       $v0, $v1, 3
/* 354C3C E004249C 00431021 */  addu      $v0, $v0, $v1
/* 354C40 E00424A0 00021080 */  sll       $v0, $v0, 2
/* 354C44 E00424A4 8FA900D8 */  lw        $t1, 0xD8($sp)
/* 354C48 E00424A8 02629823 */  subu      $s3, $s3, $v0
/* 354C4C E00424AC 8D220008 */  lw        $v0, 0x8($t1)
/* 354C50 E00424B0 02A2102A */  slt       $v0, $s5, $v0
/* 354C54 E00424B4 104000A1 */  beqz      $v0, .LE004273C
/* 354C58 E00424B8 24E70038 */   addiu    $a3, $a3, 0x38
/* 354C5C E00424BC 0100A02D */  daddu     $s4, $t0, $zero
/* 354C60 E00424C0 3C1E38E3 */  lui       $fp, (0x38E38E39 >> 16)
/* 354C64 E00424C4 37DE8E39 */  ori       $fp, $fp, (0x38E38E39 & 0xFFFF)
/* 354C68 E00424C8 27B20058 */  addiu     $s2, $sp, 0x58
/* 354C6C E00424CC 3C090001 */  lui       $t1, (0x11630 >> 16)
/* 354C70 E00424D0 35291630 */  ori       $t1, $t1, (0x11630 & 0xFFFF)
/* 354C74 E00424D4 24F00024 */  addiu     $s0, $a3, 0x24
/* 354C78 E00424D8 24170005 */  addiu     $s7, $zero, 0x5
/* 354C7C E00424DC 24160004 */  addiu     $s6, $zero, 0x4
/* 354C80 E00424E0 4480B000 */  mtc1      $zero, $f22
/* 354C84 E00424E4 3C013F80 */  lui       $at, (0x3F800000 >> 16)
/* 354C88 E00424E8 4481A000 */  mtc1      $at, $f20
/* 354C8C E00424EC 26710003 */  addiu     $s1, $s3, 0x3
/* 354C90 E00424F0 AFA9009C */  sw        $t1, 0x9C($sp)
.LE00424F4:
/* 354C94 E00424F4 27A40018 */  addiu     $a0, $sp, 0x18
/* 354C98 E00424F8 02773821 */  addu      $a3, $s3, $s7
/* 354C9C E00424FC 26F70003 */  addiu     $s7, $s7, 0x3
/* 354CA0 E0042500 02763021 */  addu      $a2, $s3, $s6
/* 354CA4 E0042504 26D60003 */  addiu     $s6, $s6, 0x3
/* 354CA8 E0042508 26B50001 */  addiu     $s5, $s5, 0x1
/* 354CAC E004250C 8E820000 */  lw        $v0, 0x0($s4)
/* 354CB0 E0042510 023E0018 */  mult      $s1, $fp
/* 354CB4 E0042514 0040402D */  daddu     $t0, $v0, $zero
/* 354CB8 E0042518 24420008 */  addiu     $v0, $v0, 0x8
/* 354CBC E004251C AE820000 */  sw        $v0, 0x0($s4)
/* 354CC0 E0042520 3C02FA00 */  lui       $v0, (0xFA000000 >> 16)
/* 354CC4 E0042524 AD020000 */  sw        $v0, 0x0($t0)
/* 354CC8 E0042528 001117C3 */  sra       $v0, $s1, 31
/* 354CCC E004252C 00004810 */  mfhi      $t1
/* 354CD0 E0042530 000918C3 */  sra       $v1, $t1, 3
/* 354CD4 E0042534 00621823 */  subu      $v1, $v1, $v0
/* 354CD8 E0042538 000328C0 */  sll       $a1, $v1, 3
/* 354CDC E004253C 00A32821 */  addu      $a1, $a1, $v1
/* 354CE0 E0042540 00052880 */  sll       $a1, $a1, 2
/* 354CE4 E0042544 02252823 */  subu      $a1, $s1, $a1
/* 354CE8 E0042548 3C09E004 */  lui       $t1, %hi(D_E0042780)
/* 354CEC E004254C 25292780 */  addiu     $t1, $t1, %lo(D_E0042780)
/* 354CF0 E0042550 00DE0018 */  mult      $a2, $fp
/* 354CF4 E0042554 00A92821 */  addu      $a1, $a1, $t1
/* 354CF8 E0042558 90A50000 */  lbu       $a1, 0x0($a1)
/* 354CFC E004255C 000617C3 */  sra       $v0, $a2, 31
/* 354D00 E0042560 00052E00 */  sll       $a1, $a1, 24
/* 354D04 E0042564 00004810 */  mfhi      $t1
/* 354D08 E0042568 000918C3 */  sra       $v1, $t1, 3
/* 354D0C E004256C 00621823 */  subu      $v1, $v1, $v0
/* 354D10 E0042570 000310C0 */  sll       $v0, $v1, 3
/* 354D14 E0042574 00431021 */  addu      $v0, $v0, $v1
/* 354D18 E0042578 00021080 */  sll       $v0, $v0, 2
/* 354D1C E004257C 00C23023 */  subu      $a2, $a2, $v0
/* 354D20 E0042580 3C09E004 */  lui       $t1, %hi(D_E0042780)
/* 354D24 E0042584 25292780 */  addiu     $t1, $t1, %lo(D_E0042780)
/* 354D28 E0042588 00C93021 */  addu      $a2, $a2, $t1
/* 354D2C E004258C 00FE0018 */  mult      $a3, $fp
/* 354D30 E0042590 90C60000 */  lbu       $a2, 0x0($a2)
/* 354D34 E0042594 000717C3 */  sra       $v0, $a3, 31
/* 354D38 E0042598 00063400 */  sll       $a2, $a2, 16
/* 354D3C E004259C 00A62825 */  or        $a1, $a1, $a2
/* 354D40 E00425A0 00004810 */  mfhi      $t1
/* 354D44 E00425A4 000918C3 */  sra       $v1, $t1, 3
/* 354D48 E00425A8 00621823 */  subu      $v1, $v1, $v0
/* 354D4C E00425AC 000310C0 */  sll       $v0, $v1, 3
/* 354D50 E00425B0 00431021 */  addu      $v0, $v0, $v1
/* 354D54 E00425B4 00021080 */  sll       $v0, $v0, 2
/* 354D58 E00425B8 00E23823 */  subu      $a3, $a3, $v0
/* 354D5C E00425BC 3C09E004 */  lui       $t1, %hi(D_E0042780)
/* 354D60 E00425C0 25292780 */  addiu     $t1, $t1, %lo(D_E0042780)
/* 354D64 E00425C4 00E93821 */  addu      $a3, $a3, $t1
/* 354D68 E00425C8 90E20000 */  lbu       $v0, 0x0($a3)
/* 354D6C E00425CC 8FA90098 */  lw        $t1, 0x98($sp)
/* 354D70 E00425D0 00021200 */  sll       $v0, $v0, 8
/* 354D74 E00425D4 00A22825 */  or        $a1, $a1, $v0
/* 354D78 E00425D8 312200FF */  andi      $v0, $t1, 0xFF
/* 354D7C E00425DC 00A22825 */  or        $a1, $a1, $v0
/* 354D80 E00425E0 AD050004 */  sw        $a1, 0x4($t0)
/* 354D84 E00425E4 8E05FFE0 */  lw        $a1, -0x20($s0)
/* 354D88 E00425E8 8E06FFE4 */  lw        $a2, -0x1C($s0)
/* 354D8C E00425EC 8E07FFE8 */  lw        $a3, -0x18($s0)
/* 354D90 E00425F0 0C080108 */  jal       shim_guTranslateF
/* 354D94 E00425F4 26310003 */   addiu    $s1, $s1, 0x3
/* 354D98 E00425F8 3C09800B */  lui       $t1, %hi(gCameras)
/* 354D9C E00425FC 25291D80 */  addiu     $t1, $t1, %lo(gCameras)
/* 354DA0 E0042600 3C038007 */  lui       $v1, %hi(gCurrentCameraID)
/* 354DA4 E0042604 8C637410 */  lw        $v1, %lo(gCurrentCameraID)($v1)
/* 354DA8 E0042608 4406B000 */  mfc1      $a2, $f22
/* 354DAC E004260C 00031080 */  sll       $v0, $v1, 2
/* 354DB0 E0042610 00431021 */  addu      $v0, $v0, $v1
/* 354DB4 E0042614 00021080 */  sll       $v0, $v0, 2
/* 354DB8 E0042618 00431023 */  subu      $v0, $v0, $v1
/* 354DBC E004261C 000218C0 */  sll       $v1, $v0, 3
/* 354DC0 E0042620 00431021 */  addu      $v0, $v0, $v1
/* 354DC4 E0042624 000210C0 */  sll       $v0, $v0, 3
/* 354DC8 E0042628 00491021 */  addu      $v0, $v0, $t1
/* 354DCC E004262C C440006C */  lwc1      $f0, 0x6C($v0)
/* 354DD0 E0042630 4407A000 */  mfc1      $a3, $f20
/* 354DD4 E0042634 46000007 */  neg.s     $f0, $f0
/* 354DD8 E0042638 44050000 */  mfc1      $a1, $f0
/* 354DDC E004263C 0240202D */  daddu     $a0, $s2, $zero
/* 354DE0 E0042640 0C080104 */  jal       shim_guRotateF
/* 354DE4 E0042644 E7B60010 */   swc1     $f22, 0x10($sp)
/* 354DE8 E0042648 0240202D */  daddu     $a0, $s2, $zero
/* 354DEC E004264C 27A50018 */  addiu     $a1, $sp, 0x18
/* 354DF0 E0042650 0C080114 */  jal       shim_guMtxCatF
/* 354DF4 E0042654 00A0302D */   daddu    $a2, $a1, $zero
/* 354DF8 E0042658 0240202D */  daddu     $a0, $s2, $zero
/* 354DFC E004265C 8E050000 */  lw        $a1, 0x0($s0)
/* 354E00 E0042660 4407A000 */  mfc1      $a3, $f20
/* 354E04 E0042664 0C080110 */  jal       shim_guScaleF
/* 354E08 E0042668 00A0302D */   daddu    $a2, $a1, $zero
/* 354E0C E004266C 0240202D */  daddu     $a0, $s2, $zero
/* 354E10 E0042670 27A50018 */  addiu     $a1, $sp, 0x18
/* 354E14 E0042674 0C080114 */  jal       shim_guMtxCatF
/* 354E18 E0042678 00A0302D */   daddu    $a2, $a1, $zero
/* 354E1C E004267C 27A40018 */  addiu     $a0, $sp, 0x18
/* 354E20 E0042680 3C058007 */  lui       $a1, %hi(gMatrixListPos)
/* 354E24 E0042684 94A541F0 */  lhu       $a1, %lo(gMatrixListPos)($a1)
/* 354E28 E0042688 3C02800A */  lui       $v0, %hi(gDisplayContext)
/* 354E2C E004268C 8C42A674 */  lw        $v0, %lo(gDisplayContext)($v0)
/* 354E30 E0042690 8FA9009C */  lw        $t1, 0x9C($sp)
/* 354E34 E0042694 00052980 */  sll       $a1, $a1, 6
/* 354E38 E0042698 00A92821 */  addu      $a1, $a1, $t1
/* 354E3C E004269C 0C080118 */  jal       shim_guMtxF2L
/* 354E40 E00426A0 00452821 */   addu     $a1, $v0, $a1
/* 354E44 E00426A4 3C06D838 */  lui       $a2, (0xD8380002 >> 16)
/* 354E48 E00426A8 8E840000 */  lw        $a0, 0x0($s4)
/* 354E4C E00426AC 34C60002 */  ori       $a2, $a2, (0xD8380002 & 0xFFFF)
/* 354E50 E00426B0 0080282D */  daddu     $a1, $a0, $zero
/* 354E54 E00426B4 24840008 */  addiu     $a0, $a0, 0x8
/* 354E58 E00426B8 AE840000 */  sw        $a0, 0x0($s4)
/* 354E5C E00426BC 3C028007 */  lui       $v0, %hi(gMatrixListPos)
/* 354E60 E00426C0 944241F0 */  lhu       $v0, %lo(gMatrixListPos)($v0)
/* 354E64 E00426C4 3C03DA38 */  lui       $v1, (0xDA380000 >> 16)
/* 354E68 E00426C8 ACA30000 */  sw        $v1, 0x0($a1)
/* 354E6C E00426CC 8FA9009C */  lw        $t1, 0x9C($sp)
/* 354E70 E00426D0 24430001 */  addiu     $v1, $v0, 0x1
/* 354E74 E00426D4 3042FFFF */  andi      $v0, $v0, 0xFFFF
/* 354E78 E00426D8 00021180 */  sll       $v0, $v0, 6
/* 354E7C E00426DC 3C018007 */  lui       $at, %hi(gMatrixListPos)
/* 354E80 E00426E0 A42341F0 */  sh        $v1, %lo(gMatrixListPos)($at)
/* 354E84 E00426E4 3C03800A */  lui       $v1, %hi(gDisplayContext)
/* 354E88 E00426E8 8C63A674 */  lw        $v1, %lo(gDisplayContext)($v1)
/* 354E8C E00426EC 00491021 */  addu      $v0, $v0, $t1
/* 354E90 E00426F0 00621821 */  addu      $v1, $v1, $v0
/* 354E94 E00426F4 24820008 */  addiu     $v0, $a0, 0x8
/* 354E98 E00426F8 ACA30004 */  sw        $v1, 0x4($a1)
/* 354E9C E00426FC AE820000 */  sw        $v0, 0x0($s4)
/* 354EA0 E0042700 3C02DE00 */  lui       $v0, (0xDE000000 >> 16)
/* 354EA4 E0042704 3C090900 */  lui       $t1, %hi(D_090005E0_415640)
/* 354EA8 E0042708 252905E0 */  addiu     $t1, $t1, %lo(D_090005E0_415640)
/* 354EAC E004270C AC820000 */  sw        $v0, 0x0($a0)
/* 354EB0 E0042710 24020040 */  addiu     $v0, $zero, 0x40
/* 354EB4 E0042714 AC890004 */  sw        $t1, 0x4($a0)
/* 354EB8 E0042718 AC860008 */  sw        $a2, 0x8($a0)
/* 354EBC E004271C AC82000C */  sw        $v0, 0xC($a0)
/* 354EC0 E0042720 8FA900D8 */  lw        $t1, 0xD8($sp)
/* 354EC4 E0042724 26100038 */  addiu     $s0, $s0, 0x38
/* 354EC8 E0042728 8D220008 */  lw        $v0, 0x8($t1)
/* 354ECC E004272C 24840010 */  addiu     $a0, $a0, 0x10
/* 354ED0 E0042730 02A2102A */  slt       $v0, $s5, $v0
/* 354ED4 E0042734 1440FF6F */  bnez      $v0, .LE00424F4
/* 354ED8 E0042738 AE840000 */   sw       $a0, 0x0($s4)
.LE004273C:
/* 354EDC E004273C 8FBF00C4 */  lw        $ra, 0xC4($sp)
/* 354EE0 E0042740 8FBE00C0 */  lw        $fp, 0xC0($sp)
/* 354EE4 E0042744 8FB700BC */  lw        $s7, 0xBC($sp)
/* 354EE8 E0042748 8FB600B8 */  lw        $s6, 0xB8($sp)
/* 354EEC E004274C 8FB500B4 */  lw        $s5, 0xB4($sp)
/* 354EF0 E0042750 8FB400B0 */  lw        $s4, 0xB0($sp)
/* 354EF4 E0042754 8FB300AC */  lw        $s3, 0xAC($sp)
/* 354EF8 E0042758 8FB200A8 */  lw        $s2, 0xA8($sp)
/* 354EFC E004275C 8FB100A4 */  lw        $s1, 0xA4($sp)
/* 354F00 E0042760 8FB000A0 */  lw        $s0, 0xA0($sp)
/* 354F04 E0042764 D7B600D0 */  ldc1      $f22, 0xD0($sp)
/* 354F08 E0042768 D7B400C8 */  ldc1      $f20, 0xC8($sp)
/* 354F0C E004276C 03E00008 */  jr        $ra
/* 354F10 E0042770 27BD00D8 */   addiu    $sp, $sp, 0xD8
/* 354F14 E0042774 00000000 */  nop
/* 354F18 E0042778 00000000 */  nop
/* 354F1C E004277C 00000000 */  nop

### DECOMPILED C INSTRUCTIONS:

void stars_burst_appendGfx(void* effect) {
    StarsBurstFXData* part = ((EffectInstance*)effect)->data.starsBurst;
    Gfx* dlist = D_090005E0_343620;
    s32 unk_2C;
    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);

    unk_2C = part->unk_2C;

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

    part++;
    for (i = 1; 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_E0042780[rIdx % 36], D_E0042780[gIdx % 36], D_E0042780[bIdx % 36], unk_2C);

        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_guScaleF(sp58, part->unk_24, part->unk_24, 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);
        gSPDisplayList(gMainGfxPos++, dlist);
        gSPPopMatrix(gMainGfxPos++, G_MTX_MODELVIEW);
    }
}


### RAW ASSEMBLY INSTRUCTIONS:

glabel b_area_dig_SetAbsoluteStatusOffsets
/* 63D1E0 80218000 27BDFF48 */  addiu     $sp, $sp, -0xB8
/* 63D1E4 80218004 AFB20088 */  sw        $s2, 0x88($sp)
/* 63D1E8 80218008 0080902D */  daddu     $s2, $a0, $zero
/* 63D1EC 8021800C AFBF0098 */  sw        $ra, 0x98($sp)
/* 63D1F0 80218010 AFB50094 */  sw        $s5, 0x94($sp)
/* 63D1F4 80218014 AFB40090 */  sw        $s4, 0x90($sp)
/* 63D1F8 80218018 AFB3008C */  sw        $s3, 0x8C($sp)
/* 63D1FC 8021801C AFB10084 */  sw        $s1, 0x84($sp)
glabel dup_b_area_kpa4_SetAbsoluteStatusOffsets
/* 63D200 80218020 AFB00080 */  sw        $s0, 0x80($sp)
/* 63D204 80218024 F7B800B0 */  sdc1      $f24, 0xB0($sp)
/* 63D208 80218028 F7B600A8 */  sdc1      $f22, 0xA8($sp)
.L8021802C:
/* 63D20C 8021802C F7B400A0 */  sdc1      $f20, 0xA0($sp)
.L80218030:
/* 63D210 80218030 8E440148 */  lw        $a0, 0x148($s2)
/* 63D214 80218034 0C09A75B */  jal       get_actor
glabel func_80218038_557418
/* 63D218 80218038 00A0802D */   daddu    $s0, $a1, $zero
/* 63D21C 8021803C 0040202D */  daddu     $a0, $v0, $zero
.L80218040:
/* 63D220 80218040 0C099117 */  jal       get_actor_part
/* 63D224 80218044 24050001 */   addiu    $a1, $zero, 0x1
.L80218048:
/* 63D228 80218048 1200000E */  beqz      $s0, .L80218084
b_area_dgb_clubba_DefenseTable_8021804C:
/* 63D22C 8021804C 0040A02D */   daddu    $s4, $v0, $zero
/* 63D230 80218050 0000282D */  daddu     $a1, $zero, $zero
.L80218054:
/* 63D234 80218054 24060011 */  addiu     $a2, $zero, 0x11
glabel b_area_pra2_crystal_king_CosInterpMinMax
/* 63D238 80218058 240200FF */  addiu     $v0, $zero, 0xFF
glabel b_area_iwa_cleft_StartRumbleWithParams
/* 63D23C 8021805C AE400074 */  sw        $zero, 0x74($s2)
/* 63D240 80218060 AE400078 */  sw        $zero, 0x78($s2)
.L80218064:
/* 63D244 80218064 AE400070 */  sw        $zero, 0x70($s2)
.L80218068:
/* 63D248 80218068 AFA00010 */  sw        $zero, 0x10($sp)
/* 63D24C 8021806C AFA00014 */  sw        $zero, 0x14($sp)
glabel func_80218070_557450
/* 63D250 80218070 AFA20018 */  sw        $v0, 0x18($sp)
/* 63D254 80218074 AFA0001C */  sw        $zero, 0x1C($sp)
/* 63D258 80218078 8E840084 */  lw        $a0, 0x84($s4)
/* 63D25C 8021807C 0C0B79E0 */  jal       set_npc_imgfx_comp
/* 63D260 80218080 24070014 */   addiu    $a3, $zero, 0x14
.L80218084:
/* 63D264 80218084 24050001 */  addiu     $a1, $zero, 0x1
.L80218088:
/* 63D268 80218088 240200FF */  addiu     $v0, $zero, 0xFF
.L8021808C:
/* 63D26C 8021808C AFA20010 */  sw        $v0, 0x10($sp)
.L80218090:
/* 63D270 80218090 AFA00014 */  sw        $zero, 0x14($sp)
.L80218094:
/* 63D274 80218094 AFA20018 */  sw        $v0, 0x18($sp)
glabel dup_b_area_kpa2_UnfadeBackgroundToBlack
/* 63D278 80218098 AFA0001C */  sw        $zero, 0x1C($sp)
/* 63D27C 8021809C 8E840084 */  lw        $a0, 0x84($s4)
/* 63D280 802180A0 3C078022 */  lui       $a3, %hi(b_area_sam2_monstar_MonstarDetailTexture)
/* 63D284 802180A4 24E7A2B8 */  addiu     $a3, $a3, %lo(b_area_sam2_monstar_MonstarDetailTexture)
/* 63D288 802180A8 0C0B79E0 */  jal       set_npc_imgfx_comp
/* 63D28C 802180AC 2406000F */   addiu    $a2, $zero, 0xF
.L802180B0:
/* 63D290 802180B0 8E420074 */  lw        $v0, 0x74($s2)
glabel func_802180B4
/* 63D294 802180B4 2444000A */  addiu     $a0, $v0, 0xA
glabel b_area_kkj_SetEntityPositionF
/* 63D298 802180B8 28820168 */  slti      $v0, $a0, 0x168
/* 63D29C 802180BC 14400010 */  bnez      $v0, func_80218100
glabel b_area_iwa_buzzar_StartRumbleWithParams
/* 63D2A0 802180C0 AE440074 */   sw       $a0, 0x74($s2)
.L802180C4:
/* 63D2A4 802180C4 3C02B60B */  lui       $v0, (0xB60B60B7 >> 16)
glabel b_area_trd_part_3_StartBlinkingSP
/* 63D2A8 802180C8 344260B7 */  ori       $v0, $v0, (0xB60B60B7 & 0xFFFF)
glabel func_802180CC
/* 63D2AC 802180CC 00820018 */  mult      $a0, $v0
glabel b_area_dig_SpawnDrainHealthStartFX
/* 63D2B0 802180D0 00041FC3 */  sra       $v1, $a0, 31
/* 63D2B4 802180D4 00004010 */  mfhi      $t0
/* 63D2B8 802180D8 01041021 */  addu      $v0, $t0, $a0
.L802180DC:
/* 63D2BC 802180DC 00021203 */  sra       $v0, $v0, 8
/* 63D2C0 802180E0 00431023 */  subu      $v0, $v0, $v1
.L802180E4:
/* 63D2C4 802180E4 00021840 */  sll       $v1, $v0, 1
glabel func_802180E8
/* 63D2C8 802180E8 00621821 */  addu      $v1, $v1, $v0
glabel dup_p_area_kpa4_StartRumbleWithParams
/* 63D2CC 802180EC 00031100 */  sll       $v0, $v1, 4
glabel func_802180F0
/* 63D2D0 802180F0 00431023 */  subu      $v0, $v0, $v1
.L802180F4:
/* 63D2D4 802180F4 000210C0 */  sll       $v0, $v0, 3
/* 63D2D8 802180F8 00821023 */  subu      $v0, $a0, $v0
.L802180FC:
/* 63D2DC 802180FC AE420074 */  sw        $v0, 0x74($s2)
glabel func_80218100
/* 63D2E0 80218100 0000802D */  daddu     $s0, $zero, $zero
b_area_dgb_clubba_ActorParts:
/* 63D2E4 80218104 3C138000 */  lui       $s3, (0x80000000 >> 16)
glabel func_80218108
/* 63D2E8 80218108 0200882D */  daddu     $s1, $s0, $zero
/* 63D2EC 8021810C 3C013FF0 */  lui       $at, (0x3FF00000 >> 16)
/* 63D2F0 80218110 4481C800 */  mtc1      $at, $f25
glabel b_area_flo2_CosInterpMinMax
/* 63D2F4 80218114 4480C000 */  mtc1      $zero, $f24
glabel func_80218118
/* 63D2F8 80218118 3C01404C */  lui       $at, (0x404C0000 >> 16)
/* 63D2FC 8021811C 4481B800 */  mtc1      $at, $f23
glabel dup_b_area_kpa2_StartRumbleWithParams
/* 63D300 80218120 4480B000 */  mtc1      $zero, $f22
/* 63D304 80218124 3C0141E0 */  lui       $at, (0x41E00000 >> 16)
glabel dup_b_area_tik_SetAbsoluteStatusOffsets
/* 63D308 80218128 4481A800 */  mtc1      $at, $f21
glabel b_area_kzn2_SetVineBonePos
/* 63D30C 8021812C 4480A000 */  mtc1      $zero, $f20
glabel func_80218130
/* 63D310 80218130 96440076 */  lhu       $a0, 0x76($s2)
.L80218134:
/* 63D314 80218134 00912021 */  addu      $a0, $a0, $s1
.L80218138:
/* 63D318 80218138 00042400 */  sll       $a0, $a0, 16
.L8021813C:
/* 63D31C 8021813C 0C00A4F5 */  jal       cosine
/* 63D320 80218140 00042403 */   sra      $a0, $a0, 16
/* 63D324 80218144 46000021 */  cvt.d.s   $f0, $f0
glabel func_80218148
/* 63D328 80218148 46380000 */  add.d     $f0, $f0, $f24
.L8021814C:
/* 63D32C 8021814C 46360002 */  mul.d     $f0, $f0, $f22
glabel b_area_kpa4_ShrinkActor
/* 63D330 80218150 00000000 */  nop
.L80218154:
/* 63D334 80218154 27A20020 */  addiu     $v0, $sp, 0x20
glabel b_area_trd_part_3_ClearPlayerMenuSelections
/* 63D338 80218158 4620A03E */  c.le.d    $f20, $f0
.L8021815C:
/* 63D33C 8021815C 00000000 */  nop
.L80218160:
/* 63D340 80218160 45010005 */  bc1t      dup3_b_area_kpa2_UnkFireBreathFXFunc
.L80218164:
/* 63D344 80218164 00501021 */   addu     $v0, $v0, $s0
/* 63D348 80218168 4620008D */  trunc.w.d $f2, $f0
/* 63D34C 8021816C 44031000 */  mfc1      $v1, $f2
glabel func_80218170
/* 63D350 80218170 08086064 */  j         .L80218190
.L80218174:
/* 63D354 80218174 A0430000 */   sb       $v1, 0x0($v0)
glabel dup3_b_area_kpa2_UnkFireBreathFXFunc
/* 63D358 80218178 46340001 */  sub.d     $f0, $f0, $f20
glabel b_area_trd_part_2_fake_bowser_UnkFunc26
/* 63D35C 8021817C 4620008D */  trunc.w.d $f2, $f0
glabel b_area_kkj_GetEntityPosition
/* 63D360 80218180 44031000 */  mfc1      $v1, $f2
glabel b_area_dig_SpawnDrainHealthContinueFX
/* 63D364 80218184 00000000 */  nop
.L80218188:
/* 63D368 80218188 00731825 */  or        $v1, $v1, $s3
glabel b_area_nok_goomba_CalculateRotationZ
/* 63D36C 8021818C A0430000 */  sb        $v1, 0x0($v0)
.L80218190:
/* 63D370 80218190 96440076 */  lhu       $a0, 0x76($s2)
/* 63D374 80218194 00912021 */  addu      $a0, $a0, $s1
/* 63D378 80218198 2484002D */  addiu     $a0, $a0, 0x2D
glabel b_area_kpa_StartRumbleWithParams
/* 63D37C 8021819C 00042400 */  sll       $a0, $a0, 16
glabel b_area_jan_jungle_fuzzy_SpawnDrainHealthStartFX
/* 63D380 802181A0 0C00A4F5 */  jal       cosine
.L802181A4:
/* 63D384 802181A4 00042403 */   sra      $a0, $a0, 16
.L802181A8:
/* 63D388 802181A8 46000021 */  cvt.d.s   $f0, $f0
b_area_dgb_clubba_handleEvent_802181AC:
/* 63D38C 802181AC 46380000 */  add.d     $f0, $f0, $f24
/* 63D390 802181B0 46360002 */  mul.d     $f0, $f0, $f22
glabel b_area_trd_part_3_func_802181B4_4CF364
/* 63D394 802181B4 00000000 */  nop
/* 63D398 802181B8 27A20038 */  addiu     $v0, $sp, 0x38
/* 63D39C 802181BC 4620A03E */  c.le.d    $f20, $f0
glabel b_area_iwa_iwa_02_IsSaveVar123
/* 63D3A0 802181C0 00000000 */  nop
/* 63D3A4 802181C4 45010005 */  bc1t      .L802181DC
.L802181C8:
/* 63D3A8 802181C8 00501021 */   addu     $v0, $v0, $s0
.L802181CC:
/* 63D3AC 802181CC 4620008D */  trunc.w.d $f2, $f0
/* 63D3B0 802181D0 44031000 */  mfc1      $v1, $f2
/* 63D3B4 802181D4 0808607D */  j         func_802181F4
/* 63D3B8 802181D8 A0430000 */   sb       $v1, 0x0($v0)
.L802181DC:
/* 63D3BC 802181DC 46340001 */  sub.d     $f0, $f0, $f20
/* 63D3C0 802181E0 4620008D */  trunc.w.d $f2, $f0
glabel func_802181E4_69F3E4
/* 63D3C4 802181E4 44031000 */  mfc1      $v1, $f2
glabel GetActorPartOpacity
/* 63D3C8 802181E8 00000000 */  nop
.L802181EC:
/* 63D3CC 802181EC 00731825 */  or        $v1, $v1, $s3
glabel b_area_flo_CosInterpMinMax
/* 63D3D0 802181F0 A0430000 */  sb        $v1, 0x0($v0)
glabel func_802181F4
/* 63D3D4 802181F4 96440076 */  lhu       $a0, 0x76($s2)
glabel b_area_trd_part_3_AddStarPower
/* 63D3D8 802181F8 00912021 */  addu      $a0, $a0, $s1
glabel b_area_kzn_putrid_piranha_UnkEffect6FFunc
/* 63D3DC 802181FC 2484005A */  addiu     $a0, $a0, 0x5A
glabel b_area_kpa_ShrinkActor
/* 63D3E0 80218200 00042400 */  sll       $a0, $a0, 16
.L80218204:
/* 63D3E4 80218204 0C00A4F5 */  jal       cosine
/* 63D3E8 80218208 00042403 */   sra      $a0, $a0, 16
.L8021820C:
/* 63D3EC 8021820C 46000021 */  cvt.d.s   $f0, $f0
b_area_iwa_Formation_00:
/* 63D3F0 80218210 46380000 */  add.d     $f0, $f0, $f24
/* 63D3F4 80218214 46360002 */  mul.d     $f0, $f0, $f22
.L80218218:
/* 63D3F8 80218218 00000000 */  nop
/* 63D3FC 8021821C 27A20050 */  addiu     $v0, $sp, 0x50
glabel func_80218220_6DBFC0
/* 63D400 80218220 4620A03E */  c.le.d    $f20, $f0
glabel func_80218224
/* 63D404 80218224 00000000 */  nop
/* 63D408 80218228 45010005 */  bc1t      dup_b_area_dig_SetAbsoluteStatusOffsets
D_8021822C:
/* 63D40C 8021822C 00501021 */   addu     $v0, $v0, $s0
.L80218230:
/* 63D410 80218230 4620008D */  trunc.w.d $f2, $f0
/* 63D414 80218234 44031000 */  mfc1      $v1, $f2
glabel func_80218238
/* 63D418 80218238 08086096 */  j         func_80218258
glabel func_8021823C
/* 63D41C 8021823C A0430000 */   sb       $v1, 0x0($v0)
glabel dup_b_area_dig_SetAbsoluteStatusOffsets
/* 63D420 80218240 46340001 */  sub.d     $f0, $f0, $f20
/* 63D424 80218244 4620008D */  trunc.w.d $f2, $f0
/* 63D428 80218248 44031000 */  mfc1      $v1, $f2
/* 63D42C 8021824C 00000000 */  nop
glabel b_area_tik3_SpawnDrainHealthContinueFX
/* 63D430 80218250 00731825 */  or        $v1, $v1, $s3
glabel b_area_jan_jungle_fuzzy_SpawnDrainHealthContinueFX
/* 63D434 80218254 A0430000 */  sb        $v1, 0x0($v0)
glabel func_80218258
/* 63D438 80218258 26100001 */  addiu     $s0, $s0, 0x1
glabel b_area_isk_part_2_chain_chomp_ChompChainUpdate
/* 63D43C 8021825C 2A020014 */  slti      $v0, $s0, 0x14
.L80218260:
/* 63D440 80218260 1440FFB3 */  bnez      $v0, func_80218130
D_80218264:
/* 63D444 80218264 26310019 */   addiu    $s1, $s1, 0x19
/* 63D448 80218268 0000802D */  daddu     $s0, $zero, $zero
/* 63D44C 8021826C 27B30020 */  addiu     $s3, $sp, 0x20
glabel func_80218270
/* 63D450 80218270 27B20038 */  addiu     $s2, $sp, 0x38
/* 63D454 80218274 27B10050 */  addiu     $s1, $sp, 0x50
glabel func_80218278
/* 63D458 80218278 241500FF */  addiu     $s5, $zero, 0xFF
/* 63D45C 8021827C 0000282D */  daddu     $a1, $zero, $zero
glabel func_80218280_6609D0
/* 63D460 80218280 2406000C */  addiu     $a2, $zero, 0xC
.L80218284:
/* 63D464 80218284 02701021 */  addu      $v0, $s3, $s0
/* 63D468 80218288 02501821 */  addu      $v1, $s2, $s0
b_area_trd_part_3_eldstar_DefenseTable_8021828C:
/* 63D46C 8021828C 02302021 */  addu      $a0, $s1, $s0
.L80218290:
/* 63D470 80218290 90420000 */  lbu       $v0, 0x0($v0)
.L80218294:
/* 63D474 80218294 90630000 */  lbu       $v1, 0x0($v1)
b_area_trd_part_3_eldstar_StatusTable_80218298:
/* 63D478 80218298 90840000 */  lbu       $a0, 0x0($a0)
/* 63D47C 8021829C 0200382D */  daddu     $a3, $s0, $zero
.L802182A0:
/* 63D480 802182A0 AFA00014 */  sw        $zero, 0x14($sp)
glabel func_802182A4_5CE934
/* 63D484 802182A4 AFB50018 */  sw        $s5, 0x18($sp)
glabel b_area_kpa4_CosInterpMinMax
/* 63D488 802182A8 AFA0001C */  sw        $zero, 0x1C($sp)
.L802182AC:
/* 63D48C 802182AC 00021600 */  sll       $v0, $v0, 24
.L802182B0:
/* 63D490 802182B0 00031C00 */  sll       $v1, $v1, 16
.L802182B4:
/* 63D494 802182B4 00431025 */  or        $v0, $v0, $v1
b_area_iwa_Formation_03:
/* 63D498 802182B8 00042200 */  sll       $a0, $a0, 8
/* 63D49C 802182BC 00441025 */  or        $v0, $v0, $a0
.L802182C0:
/* 63D4A0 802182C0 344200FF */  ori       $v0, $v0, 0xFF
/* 63D4A4 802182C4 AFA20010 */  sw        $v0, 0x10($sp)
.L802182C8:
/* 63D4A8 802182C8 8E840084 */  lw        $a0, 0x84($s4)
/* 63D4AC 802182CC 0C0B79E0 */  jal       set_npc_imgfx_comp
.L802182D0:
/* 63D4B0 802182D0 26100001 */   addiu    $s0, $s0, 0x1
glabel b_area_hos_magikoopa_SetAbsoluteStatusOffsets
/* 63D4B4 802182D4 2A020014 */  slti      $v0, $s0, 0x14
glabel func_802182D8
/* 63D4B8 802182D8 1440FFE9 */  bnez      $v0, func_80218280_6609D0
.L802182DC:
/* 63D4BC 802182DC 0000282D */   daddu    $a1, $zero, $zero
glabel func_802182E0
/* 63D4C0 802182E0 8FBF0098 */  lw        $ra, 0x98($sp)
glabel func_802182E4_660A34
/* 63D4C4 802182E4 8FB50094 */  lw        $s5, 0x94($sp)
/* 63D4C8 802182E8 8FB40090 */  lw        $s4, 0x90($sp)
glabel b_area_tik2_FadeBackgroundToBlack
/* 63D4CC 802182EC 8FB3008C */  lw        $s3, 0x8C($sp)
b_area_iwa_Formation_04:
/* 63D4D0 802182F0 8FB20088 */  lw        $s2, 0x88($sp)
.L802182F4:
/* 63D4D4 802182F4 8FB10084 */  lw        $s1, 0x84($sp)
/* 63D4D8 802182F8 8FB00080 */  lw        $s0, 0x80($sp)
.L802182FC:
/* 63D4DC 802182FC D7B800B0 */  ldc1      $f24, 0xB0($sp)
glabel b_area_pra_ShrinkActor
/* 63D4E0 80218300 D7B600A8 */  ldc1      $f22, 0xA8($sp)
/* 63D4E4 80218304 D7B400A0 */  ldc1      $f20, 0xA0($sp)
glabel func_80218308
/* 63D4E8 80218308 0000102D */  daddu     $v0, $zero, $zero
glabel func_8021830C
/* 63D4EC 8021830C 03E00008 */  jr        $ra
glabel dup2_b_area_dig_SetAbsoluteStatusOffsets
/* 63D4F0 80218310 27BD00B8 */   addiu    $sp, $sp, 0xB8

### DECOMPILED C INSTRUCTIONS:

API_CALLABLE(func_80218000_63D1E0) {
    ActorPart* part = get_actor_part(get_actor(script->owner1.actorID), 1);
    s32 i;
    u8 colR[20];
    u8 colG[20];
    u8 colB[20];
    u8 colA[20];

    if (isInitialCall) {
        script->functionTemp[1] = 0;
        script->functionTemp[2] = 0;
        script->functionTemp[0] = 0;
        set_npc_imgfx_comp(part->spriteInstanceID, 0, IMGFX_ALLOC_COLOR_BUF, 20, 0, 0, 255, 0);
    }

    set_npc_imgfx_comp(part->spriteInstanceID, 1, IMGFX_OVERLAY, (s32)&N(MonstarDetailTexture), 255, 0, 255, 0);
    script->functionTemp[1] += 10;
    if (script->functionTemp[1] >= 360) {
        script->functionTemp[1] %= 360;
    }

    for (i = 0; i < 20; i++) {
        colR[i] = (cosine(script->functionTemp[1] + i * 25) + 1.0) * 56.0;
        colG[i] = (cosine(script->functionTemp[1] + i * 25 + 45) + 1.0) * 56.0;
        colB[i] = (cosine(script->functionTemp[1] + i * 25 + 90) + 1.0) * 56.0;
    }

    for (i = 0; i < 20; i++) {
        set_npc_imgfx_comp(part->spriteInstanceID, 0, IMGFX_COLOR_BUF_SET_MODULATE, i, colR[i] << 0x18 | colG[i] << 0x10 | colB[i] << 8 | 255, 0, 255, 0);
    }

    return ApiStatus_BLOCK;
}


### RAW ASSEMBLY INSTRUCTIONS:

glabel parasol_get_npc
/* E291A0 802B6000 27BDFFD0 */  addiu     $sp, $sp, -0x30
/* E291A4 802B6004 AFB1001C */  sw        $s1, 0x1C($sp)
/* E291A8 802B6008 3C118011 */  lui       $s1, %hi(gPlayerStatus)
/* E291AC 802B600C 2631EFC8 */  addiu     $s1, $s1, %lo(gPlayerStatus)
/* E291B0 802B6010 AFBF0020 */  sw        $ra, 0x20($sp)
/* E291B4 802B6014 AFB00018 */  sw        $s0, 0x18($sp)
.L802B6018:
/* E291B8 802B6018 F7B40028 */  sdc1      $f20, 0x28($sp)
/* E291BC 802B601C 8E250000 */  lw        $a1, 0x0($s1)
/* E291C0 802B6020 04A1000D */  bgez      $a1, .L802B6058
/* E291C4 802B6024 3C027FFF */   lui      $v0, (0x7FFFFFFF >> 16)
/* E291C8 802B6028 3442FFFF */  ori       $v0, $v0, (0x7FFFFFFF & 0xFFFF)
/* E291CC 802B602C 3C04800A */  lui       $a0, %hi(gOverrideFlags)
/* E291D0 802B6030 2484A650 */  addiu     $a0, $a0, %lo(gOverrideFlags)
/* E291D4 802B6034 8C830000 */  lw        $v1, 0x0($a0)
/* E291D8 802B6038 00A21024 */  and       $v0, $a1, $v0
/* E291DC 802B603C AE220000 */  sw        $v0, 0x0($s1)
.L802B6040:
/* E291E0 802B6040 A22000B6 */  sb        $zero, 0xB6($s1)
.L802B6044:
/* E291E4 802B6044 34630040 */  ori       $v1, $v1, 0x40
glabel action_hammer_play_hit_fx
/* E291E8 802B6048 0C038045 */  jal       disable_player_static_collisions
.L802B604C:
/* E291EC 802B604C AC830000 */   sw       $v1, 0x0($a0)
.L802B6050:
/* E291F0 802B6050 0C03805E */  jal       disable_player_input
/* E291F4 802B6054 00000000 */   nop
.L802B6058:
/* E291F8 802B6058 822300B6 */  lb        $v1, 0xB6($s1)
/* E291FC 802B605C 2C620006 */  sltiu     $v0, $v1, 0x6
glabel action_update_sliding
/* E29200 802B6060 1040008D */  beqz      $v0, .L802B6298
/* E29204 802B6064 00031080 */   sll      $v0, $v1, 2
.L802B6068:
/* E29208 802B6068 3C01802B */  lui       $at, %hi(jtbl_802B62B0)
/* E2920C 802B606C 00220821 */  addu      $at, $at, $v0
/* E29210 802B6070 8C2262B0 */  lw        $v0, %lo(jtbl_802B62B0)($at)
.L802B6074:
/* E29214 802B6074 00400008 */  jr        $v0
/* E29218 802B6078 00000000 */   nop
glabel .L802B607C
/* E2921C 802B607C 3C040001 */  lui       $a0, (0x1002E >> 16)
.L802B6080:
/* E29220 802B6080 0C037FBF */  jal       suggest_player_anim_allow_backward
/* E29224 802B6084 3484002E */   ori      $a0, $a0, (0x1002E & 0xFFFF)
/* E29228 802B6088 3C014180 */  lui       $at, (0x41800000 >> 16)
.L802B608C:
/* E2922C 802B608C 44810000 */  mtc1      $at, $f0
.L802B6090:
/* E29230 802B6090 3C013F80 */  lui       $at, (0x3F800000 >> 16)
.L802B6094:
/* E29234 802B6094 44811000 */  mtc1      $at, $f2
/* E29238 802B6098 3C013FF0 */  lui       $at, (0x3FF00000 >> 16)
glabel action_update_state_23
/* E2923C 802B609C 44812000 */  mtc1      $at, $f4
/* E29240 802B60A0 24020020 */  addiu     $v0, $zero, 0x20
glabel action_update_use_spinning_flower
/* E29244 802B60A4 3C01802B */  lui       $at, %hi(D_802B62E0)
.L802B60A8:
/* E29248 802B60A8 AC2262E0 */  sw        $v0, %lo(D_802B62E0)($at)
.L802B60AC:
/* E2924C 802B60AC 3C01802B */  lui       $at, %hi(Munchlesia_LaunchVelocity)
/* E29250 802B60B0 E42062D0 */  swc1      $f0, %lo(Munchlesia_LaunchVelocity)($at)
glabel action_update_jump
/* E29254 802B60B4 3C014080 */  lui       $at, (0x40800000 >> 16)
/* E29258 802B60B8 44810000 */  mtc1      $at, $f0
/* E2925C 802B60BC 3C02802B */  lui       $v0, %hi(Munchlesia_LateralVelocity)
/* E29260 802B60C0 244262D4 */  addiu     $v0, $v0, %lo(Munchlesia_LateralVelocity)
/* E29264 802B60C4 E4400000 */  swc1      $f0, 0x0($v0)
.L802B60C8:
/* E29268 802B60C8 3C01802B */  lui       $at, %hi(Munchlesia_LaunchAccel)
/* E2926C 802B60CC E42262D8 */  swc1      $f2, %lo(Munchlesia_LaunchAccel)($at)
glabel .L802B60D0
/* E29270 802B60D0 E4440000 */  swc1      $f4, 0x0($v0)
.L802B60D4:
/* E29274 802B60D4 922200B6 */  lbu       $v0, 0xB6($s1)
/* E29278 802B60D8 C6200080 */  lwc1      $f0, 0x80($s1)
/* E2927C 802B60DC 24420001 */  addiu     $v0, $v0, 0x1
/* E29280 802B60E0 A22200B6 */  sb        $v0, 0xB6($s1)
/* E29284 802B60E4 3C01802B */  lui       $at, %hi(Munchlesia_LaunchYaw)
.L802B60E8:
/* E29288 802B60E8 E42062DC */  swc1      $f0, %lo(Munchlesia_LaunchYaw)($at)
.L802B60EC:
/* E2928C 802B60EC 080AD8A6 */  j         .L802B6298
.L802B60F0:
/* E29290 802B60F0 00000000 */   nop
glabel .L802B60F4
/* E29294 802B60F4 26240028 */  addiu     $a0, $s1, 0x28
/* E29298 802B60F8 3C10802B */  lui       $s0, %hi(Munchlesia_LaunchVelocity)
/* E2929C 802B60FC 261062D0 */  addiu     $s0, $s0, %lo(Munchlesia_LaunchVelocity)
.L802B6100:
/* E292A0 802B6100 C622002C */  lwc1      $f2, 0x2C($s1)
.L802B6104:
/* E292A4 802B6104 C6000000 */  lwc1      $f0, 0x0($s0)
.L802B6108:
/* E292A8 802B6108 3C06802B */  lui       $a2, %hi(Munchlesia_LateralVelocity)
glabel .L802B610C
/* E292AC 802B610C 8CC662D4 */  lw        $a2, %lo(Munchlesia_LateralVelocity)($a2)
.L802B6110:
/* E292B0 802B6110 46001080 */  add.s     $f2, $f2, $f0
/* E292B4 802B6114 3C01802B */  lui       $at, %hi(Munchlesia_LaunchAccel)
.L802B6118:
/* E292B8 802B6118 C42462D8 */  lwc1      $f4, %lo(Munchlesia_LaunchAccel)($at)
/* E292BC 802B611C 3C07802B */  lui       $a3, %hi(Munchlesia_LaunchYaw)
glabel action_update_parasol
/* E292C0 802B6120 8CE762DC */  lw        $a3, %lo(Munchlesia_LaunchYaw)($a3)
.L802B6124:
/* E292C4 802B6124 46040001 */  sub.s     $f0, $f0, $f4
.L802B6128:
/* E292C8 802B6128 26250030 */  addiu     $a1, $s1, 0x30
/* E292CC 802B612C E622002C */  swc1      $f2, 0x2C($s1)
/* E292D0 802B6130 0C00A7E7 */  jal       add_vec2D_polar
glabel .L802B6134
/* E292D4 802B6134 E6000000 */   swc1     $f0, 0x0($s0)
/* E292D8 802B6138 3C02800B */  lui       $v0, %hi(gCameras)
.L802B613C:
/* E292DC 802B613C 24421D80 */  addiu     $v0, $v0, %lo(gCameras)
.L802B6140:
/* E292E0 802B6140 C6220028 */  lwc1      $f2, 0x28($s1)
.L802B6144:
/* E292E4 802B6144 C624002C */  lwc1      $f4, 0x2C($s1)
/* E292E8 802B6148 C6080000 */  lwc1      $f8, 0x0($s0)
.L802B614C:
/* E292EC 802B614C 44800000 */  mtc1      $zero, $f0
.L802B6150:
/* E292F0 802B6150 C6260030 */  lwc1      $f6, 0x30($s1)
.L802B6154:
/* E292F4 802B6154 4600403E */  c.le.s    $f8, $f0
.L802B6158:
/* E292F8 802B6158 E4420060 */  swc1      $f2, 0x60($v0)
.L802B615C:
/* E292FC 802B615C E4440064 */  swc1      $f4, 0x64($v0)
/* E29300 802B6160 4500004D */  bc1f      .L802B6298
.L802B6164:
/* E29304 802B6164 E4460068 */   swc1     $f6, 0x68($v0)
.L802B6168:
/* E29308 802B6168 922200B6 */  lbu       $v0, 0xB6($s1)
/* E2930C 802B616C 080AD888 */  j         .L802B6220
glabel .L802B6170
/* E29310 802B6170 24420001 */   addiu    $v0, $v0, 0x1
glabel .L802B6174
/* E29314 802B6174 26240028 */  addiu     $a0, $s1, 0x28
/* E29318 802B6178 3C10802B */  lui       $s0, %hi(Munchlesia_LaunchVelocity)
.L802B617C:
/* E2931C 802B617C 261062D0 */  addiu     $s0, $s0, %lo(Munchlesia_LaunchVelocity)
.L802B6180:
/* E29320 802B6180 C622002C */  lwc1      $f2, 0x2C($s1)
glabel .L802B6184
/* E29324 802B6184 C6000000 */  lwc1      $f0, 0x0($s0)
.L802B6188:
/* E29328 802B6188 3C06802B */  lui       $a2, %hi(Munchlesia_LateralVelocity)
.L802B618C:
/* E2932C 802B618C 8CC662D4 */  lw        $a2, %lo(Munchlesia_LateralVelocity)($a2)
.L802B6190:
/* E29330 802B6190 46001080 */  add.s     $f2, $f2, $f0
.L802B6194:
/* E29334 802B6194 3C01802B */  lui       $at, %hi(Munchlesia_LaunchAccel)
glabel func_802B6198
/* E29338 802B6198 C42462D8 */  lwc1      $f4, %lo(Munchlesia_LaunchAccel)($at)
/* E2933C 802B619C 3C07802B */  lui       $a3, %hi(Munchlesia_LaunchYaw)
.L802B61A0:
/* E29340 802B61A0 8CE762DC */  lw        $a3, %lo(Munchlesia_LaunchYaw)($a3)
.L802B61A4:
/* E29344 802B61A4 46040001 */  sub.s     $f0, $f0, $f4
.L802B61A8:
/* E29348 802B61A8 26250030 */  addiu     $a1, $s1, 0x30
.L802B61AC:
/* E2934C 802B61AC E622002C */  swc1      $f2, 0x2C($s1)
.L802B61B0:
/* E29350 802B61B0 0C00A7E7 */  jal       add_vec2D_polar
.L802B61B4:
/* E29354 802B61B4 E6000000 */   swc1     $f0, 0x0($s0)
/* E29358 802B61B8 27A50010 */  addiu     $a1, $sp, 0x10
/* E2935C 802B61BC C6200028 */  lwc1      $f0, 0x28($s1)
glabel func_802B61C0
/* E29360 802B61C0 C622002C */  lwc1      $f2, 0x2C($s1)
/* E29364 802B61C4 C6240030 */  lwc1      $f4, 0x30($s1)
.L802B61C8:
/* E29368 802B61C8 C60C0000 */  lwc1      $f12, 0x0($s0)
.L802B61CC:
/* E2936C 802B61CC 3C02800B */  lui       $v0, %hi(gCameras)
/* E29370 802B61D0 24421D80 */  addiu     $v0, $v0, %lo(gCameras)
.L802B61D4:
/* E29374 802B61D4 E4400060 */  swc1      $f0, 0x60($v0)
.L802B61D8:
/* E29378 802B61D8 E4420064 */  swc1      $f2, 0x64($v0)
.L802B61DC:
/* E2937C 802B61DC 0C038D45 */  jal       player_check_collision_below
/* E29380 802B61E0 E4440068 */   swc1     $f4, 0x68($v0)
glabel func_802B61E4
/* E29384 802B61E4 8FA20010 */  lw        $v0, 0x10($sp)
.L802B61E8:
/* E29388 802B61E8 0440002B */  bltz      $v0, .L802B6298
.L802B61EC:
/* E2938C 802B61EC 46000506 */   mov.s    $f20, $f0
.L802B61F0:
/* E29390 802B61F0 24040162 */  addiu     $a0, $zero, 0x162
.L802B61F4:
/* E29394 802B61F4 0C052736 */  jal       sfx_play_sound_at_player
.L802B61F8:
/* E29398 802B61F8 0000282D */   daddu    $a1, $zero, $zero
.L802B61FC:
/* E2939C 802B61FC 3C040008 */  lui       $a0, (0x80003 >> 16)
.L802B6200:
/* E293A0 802B6200 0C037FDE */  jal       suggest_player_anim_always_forward
.L802B6204:
/* E293A4 802B6204 34840003 */   ori      $a0, $a0, (0x80003 & 0xFFFF)
glabel .L802B6208
/* E293A8 802B6208 922200B6 */  lbu       $v0, 0xB6($s1)
/* E293AC 802B620C 2403000A */  addiu     $v1, $zero, 0xA
.L802B6210:
/* E293B0 802B6210 E634002C */  swc1      $f20, 0x2C($s1)
.L802B6214:
/* E293B4 802B6214 3C01802B */  lui       $at, %hi(D_802B62E0)
glabel .L802B6218
/* E293B8 802B6218 AC2362E0 */  sw        $v1, %lo(D_802B62E0)($at)
/* E293BC 802B621C 24420001 */  addiu     $v0, $v0, 0x1
.L802B6220:
/* E293C0 802B6220 080AD8A6 */  j         .L802B6298
.L802B6224:
/* E293C4 802B6224 A22200B6 */   sb       $v0, 0xB6($s1)
glabel .L802B6228
/* E293C8 802B6228 962200BC */  lhu       $v0, 0xBC($s1)
.L802B622C:
/* E293CC 802B622C 1040001A */  beqz      $v0, .L802B6298
glabel action_update_step_up_peach
/* E293D0 802B6230 3C040001 */   lui      $a0, (0x10030 >> 16)
/* E293D4 802B6234 0C037FDE */  jal       suggest_player_anim_always_forward
glabel .L802B6238
/* E293D8 802B6238 34840030 */   ori      $a0, $a0, (0x10030 & 0xFFFF)
glabel .L802B623C
/* E293DC 802B623C 24020005 */  addiu     $v0, $zero, 0x5
glabel .L802B6240
/* E293E0 802B6240 A22200B6 */  sb        $v0, 0xB6($s1)
glabel .L802B6244
/* E293E4 802B6244 2402000F */  addiu     $v0, $zero, 0xF
glabel .L802B6248
/* E293E8 802B6248 080AD8A6 */  j         .L802B6298
/* E293EC 802B624C A6220008 */   sh       $v0, 0x8($s1)
glabel .L802B6250
/* E293F0 802B6250 86220008 */  lh        $v0, 0x8($s1)
.L802B6254:
/* E293F4 802B6254 96230008 */  lhu       $v1, 0x8($s1)
glabel .L802B6258
/* E293F8 802B6258 10400003 */  beqz      $v0, .L802B6268
.L802B625C:
/* E293FC 802B625C 2462FFFF */   addiu    $v0, $v1, -0x1
/* E29400 802B6260 080AD8A6 */  j         .L802B6298
/* E29404 802B6264 A6220008 */   sh       $v0, 0x8($s1)
.L802B6268:
/* E29408 802B6268 0C038050 */  jal       enable_player_static_collisions
.L802B626C:
/* E2940C 802B626C 00000000 */   nop
/* E29410 802B6270 0C038069 */  jal       enable_player_input
.L802B6274:
/* E29414 802B6274 00000000 */   nop
glabel .L802B6278
/* E29418 802B6278 0C039769 */  jal       set_action_state
/* E2941C 802B627C 0000202D */   daddu    $a0, $zero, $zero
.L802B6280:
/* E29420 802B6280 3C02800A */  lui       $v0, %hi(gOverrideFlags)
.L802B6284:
/* E29424 802B6284 2442A650 */  addiu     $v0, $v0, %lo(gOverrideFlags)
glabel action_update_run
/* E29428 802B6288 8C430000 */  lw        $v1, 0x0($v0)
/* E2942C 802B628C 2404FFBF */  addiu     $a0, $zero, -0x41
.L802B6290:
/* E29430 802B6290 00641824 */  and       $v1, $v1, $a0
glabel func_802B6294
/* E29434 802B6294 AC430000 */  sw        $v1, 0x0($v0)
glabel .L802B6298
/* E29438 802B6298 8FBF0020 */  lw        $ra, 0x20($sp)
/* E2943C 802B629C 8FB1001C */  lw        $s1, 0x1C($sp)
/* E29440 802B62A0 8FB00018 */  lw        $s0, 0x18($sp)
glabel func_802B62A4
/* E29444 802B62A4 D7B40028 */  ldc1      $f20, 0x28($sp)
.L802B62A8:
/* E29448 802B62A8 03E00008 */  jr        $ra
/* E2944C 802B62AC 27BD0030 */   addiu    $sp, $sp, 0x30

### DECOMPILED C INSTRUCTIONS:

void action_update_use_munchlesia(void) {
    PlayerStatus* playerStatus = &gPlayerStatus;
    s32 colliderID;
    f32 hitPosY;

    if (playerStatus->flags & PS_FLAG_ACTION_STATE_CHANGED) {
        playerStatus->flags &= ~PS_FLAG_ACTION_STATE_CHANGED;
        playerStatus->actionSubstate = SUBSTATE_INIT;
        gOverrideFlags |= GLOBAL_OVERRIDES_40;
        disable_player_static_collisions();
        disable_player_input();
    }

    switch (playerStatus->actionSubstate) {
        case SUBSTATE_INIT:
            suggest_player_anim_allow_backward(ANIM_Mario1_FallBack);
            D_802B62E0 = 32;
            Munchlesia_LaunchVelocity = 16.0f;
            Munchlesia_LateralVelocity = 4.0f;
            Munchlesia_LaunchAccel = 1.0f;
            Munchlesia_LateralVelocity = 1.875f;
            playerStatus->actionSubstate++; // SUBSTATE_EJECT
            Munchlesia_LaunchYaw = playerStatus->targetYaw;
            break;
        case SUBSTATE_EJECT:
            playerStatus->position.y += Munchlesia_LaunchVelocity;
            Munchlesia_LaunchVelocity -= Munchlesia_LaunchAccel;
            add_vec2D_polar(&playerStatus->position.x, &playerStatus->position.z, Munchlesia_LateralVelocity, Munchlesia_LaunchYaw);
            gCameras[CAM_DEFAULT].targetPos.x = playerStatus->position.x;
            gCameras[CAM_DEFAULT].targetPos.y = playerStatus->position.y;
            gCameras[CAM_DEFAULT].targetPos.z = playerStatus->position.z;
            if (Munchlesia_LaunchVelocity <= 0.0f) {
                playerStatus->actionSubstate++; // SUBSTATE_FALL
            }
            break;
        case SUBSTATE_FALL:
            playerStatus->position.y += Munchlesia_LaunchVelocity;
            Munchlesia_LaunchVelocity -= Munchlesia_LaunchAccel;
            add_vec2D_polar(&playerStatus->position.x, &playerStatus->position.z, Munchlesia_LateralVelocity, Munchlesia_LaunchYaw);
            gCameras[CAM_DEFAULT].targetPos.x = playerStatus->position.x;
            gCameras[CAM_DEFAULT].targetPos.y = playerStatus->position.y;
            gCameras[CAM_DEFAULT].targetPos.z = playerStatus->position.z;
            hitPosY = player_check_collision_below(Munchlesia_LaunchVelocity, &colliderID);
            if (colliderID >= 0) {
                sfx_play_sound_at_player(SOUND_162, SOUND_SPACE_MODE_0);
                suggest_player_anim_always_forward(ANIM_MarioW2_Collapse);
                playerStatus->position.y = hitPosY;
                D_802B62E0 = 10;
                playerStatus->actionSubstate++; // SUBSTATE_CRASH
            }
            break;
        case SUBSTATE_CRASH:
            if (playerStatus->animNotifyValue != 0) {
                suggest_player_anim_always_forward(ANIM_Mario1_GetUp);
                playerStatus->actionSubstate = SUBSTATE_GET_UP;
                playerStatus->currentStateTime = 15;
                break;
            }
            break;
        case SUBSTATE_GET_UP:
            if (playerStatus->currentStateTime != 0) {
                playerStatus->currentStateTime--;
                break;
            }
            enable_player_static_collisions();
            enable_player_input();
            set_action_state(ACTION_STATE_IDLE);
            gOverrideFlags &= ~GLOBAL_OVERRIDES_40;
            break;
    }
}