### RAW ASSEMBLY INSTRUCTIONS:

glabel ai_check_fwd_collisions
/* 25B84 8004A784 27BDFF68 */  addiu     $sp, $sp, -0x98
/* 25B88 8004A788 F7BC0088 */  sdc1      $f28, 0x88($sp)
/* 25B8C 8004A78C 4485E000 */  mtc1      $a1, $f28
/* 25B90 8004A790 AFB40058 */  sw        $s4, 0x58($sp)
/* 25B94 8004A794 8FB400A8 */  lw        $s4, 0xA8($sp)
/* 25B98 8004A798 AFB00048 */  sw        $s0, 0x48($sp)
/* 25B9C 8004A79C 0080802D */  daddu     $s0, $a0, $zero
/* 25BA0 8004A7A0 AFB1004C */  sw        $s1, 0x4C($sp)
/* 25BA4 8004A7A4 00C0882D */  daddu     $s1, $a2, $zero
/* 25BA8 8004A7A8 AFB30054 */  sw        $s3, 0x54($sp)
/* 25BAC 8004A7AC 00E0982D */  daddu     $s3, $a3, $zero
/* 25BB0 8004A7B0 AFB5005C */  sw        $s5, 0x5C($sp)
/* 25BB4 8004A7B4 8FB500AC */  lw        $s5, 0xAC($sp)
/* 25BB8 8004A7B8 27A50020 */  addiu     $a1, $sp, 0x20
/* 25BBC 8004A7BC AFBF0060 */  sw        $ra, 0x60($sp)
/* 25BC0 8004A7C0 AFB20050 */  sw        $s2, 0x50($sp)
/* 25BC4 8004A7C4 F7BE0090 */  sdc1      $f30, 0x90($sp)
/* 25BC8 8004A7C8 F7BA0080 */  sdc1      $f26, 0x80($sp)
/* 25BCC 8004A7CC F7B80078 */  sdc1      $f24, 0x78($sp)
/* 25BD0 8004A7D0 F7B60070 */  sdc1      $f22, 0x70($sp)
/* 25BD4 8004A7D4 F7B40068 */  sdc1      $f20, 0x68($sp)
/* 25BD8 8004A7D8 C6000038 */  lwc1      $f0, 0x38($s0)
/* 25BDC 8004A7DC C602003C */  lwc1      $f2, 0x3C($s0)
/* 25BE0 8004A7E0 27A60024 */  addiu     $a2, $sp, 0x24
/* 25BE4 8004A7E4 E7A00020 */  swc1      $f0, 0x20($sp)
/* 25BE8 8004A7E8 E7A20024 */  swc1      $f2, 0x24($sp)
/* 25BEC 8004A7EC C6000018 */  lwc1      $f0, 0x18($s0)
/* 25BF0 8004A7F0 C6020040 */  lwc1      $f2, 0x40($s0)
/* 25BF4 8004A7F4 461C0002 */  mul.s     $f0, $f0, $f28
/* 25BF8 8004A7F8 00000000 */  nop
/* 25BFC 8004A7FC E7A20028 */  swc1      $f2, 0x28($sp)
/* 25C00 8004A800 C63A0000 */  lwc1      $f26, 0x0($s1)
/* 25C04 8004A804 27A70028 */  addiu     $a3, $sp, 0x28
/* 25C08 8004A808 E7BA0014 */  swc1      $f26, 0x14($sp)
/* 25C0C 8004A80C E7A00010 */  swc1      $f0, 0x10($sp)
/* 25C10 8004A810 860200A8 */  lh        $v0, 0xA8($s0)
/* 25C14 8004A814 3C01BF80 */  lui       $at, (0xBF800000 >> 16)
/* 25C18 8004A818 4481A000 */  mtc1      $at, $f20
/* 25C1C 8004A81C 44820000 */  mtc1      $v0, $f0
/* 25C20 8004A820 00000000 */  nop
/* 25C24 8004A824 46800020 */  cvt.s.w   $f0, $f0
/* 25C28 8004A828 E7A00018 */  swc1      $f0, 0x18($sp)
/* 25C2C 8004A82C 860200A6 */  lh        $v0, 0xA6($s0)
/* 25C30 8004A830 4600A586 */  mov.s     $f22, $f20
/* 25C34 8004A834 44820000 */  mtc1      $v0, $f0
/* 25C38 8004A838 00000000 */  nop
/* 25C3C 8004A83C 46800020 */  cvt.s.w   $f0, $f0
/* 25C40 8004A840 E7A0001C */  swc1      $f0, 0x1C($sp)
/* 25C44 8004A844 8E040080 */  lw        $a0, 0x80($s0)
/* 25C48 8004A848 0C037711 */  jal       npc_test_move_simple_with_slipping
/* 25C4C 8004A84C 4600A606 */   mov.s    $f24, $f20
/* 25C50 8004A850 0040902D */  daddu     $s2, $v0, $zero
/* 25C54 8004A854 1240008D */  beqz      $s2, .L8004AA8C
/* 25C58 8004A858 00000000 */   nop
/* 25C5C 8004A85C C60C0038 */  lwc1      $f12, 0x38($s0)
/* 25C60 8004A860 C60E0040 */  lwc1      $f14, 0x40($s0)
/* 25C64 8004A864 8FA60020 */  lw        $a2, 0x20($sp)
/* 25C68 8004A868 0C00A7B5 */  jal       dist2D
/* 25C6C 8004A86C 8FA70028 */   lw       $a3, 0x28($sp)
/* 25C70 8004A870 46000586 */  mov.s     $f22, $f0
/* 25C74 8004A874 C6020038 */  lwc1      $f2, 0x38($s0)
/* 25C78 8004A878 C604003C */  lwc1      $f4, 0x3C($s0)
/* 25C7C 8004A87C 3C01420C */  lui       $at, (0x420C0000 >> 16)
/* 25C80 8004A880 4481F000 */  mtc1      $at, $f30
/* 25C84 8004A884 C6000040 */  lwc1      $f0, 0x40($s0)
/* 25C88 8004A888 461ED300 */  add.s     $f12, $f26, $f30
/* 25C8C 8004A88C E7A2002C */  swc1      $f2, 0x2C($sp)
/* 25C90 8004A890 E7A40030 */  swc1      $f4, 0x30($sp)
/* 25C94 8004A894 0C00A6C9 */  jal       clamp_angle
/* 25C98 8004A898 E7A00034 */   swc1     $f0, 0x34($sp)
/* 25C9C 8004A89C C6020018 */  lwc1      $f2, 0x18($s0)
/* 25CA0 8004A8A0 461C1082 */  mul.s     $f2, $f2, $f28
/* 25CA4 8004A8A4 00000000 */  nop
/* 25CA8 8004A8A8 E7A00014 */  swc1      $f0, 0x14($sp)
/* 25CAC 8004A8AC E7A20010 */  swc1      $f2, 0x10($sp)
/* 25CB0 8004A8B0 860200A8 */  lh        $v0, 0xA8($s0)
/* 25CB4 8004A8B4 27A5002C */  addiu     $a1, $sp, 0x2C
/* 25CB8 8004A8B8 44820000 */  mtc1      $v0, $f0
/* 25CBC 8004A8BC 00000000 */  nop
/* 25CC0 8004A8C0 46800020 */  cvt.s.w   $f0, $f0
/* 25CC4 8004A8C4 E7A00018 */  swc1      $f0, 0x18($sp)
/* 25CC8 8004A8C8 860200A6 */  lh        $v0, 0xA6($s0)
/* 25CCC 8004A8CC 27A60030 */  addiu     $a2, $sp, 0x30
/* 25CD0 8004A8D0 44820000 */  mtc1      $v0, $f0
/* 25CD4 8004A8D4 00000000 */  nop
/* 25CD8 8004A8D8 46800020 */  cvt.s.w   $f0, $f0
/* 25CDC 8004A8DC E7A0001C */  swc1      $f0, 0x1C($sp)
/* 25CE0 8004A8E0 8E040080 */  lw        $a0, 0x80($s0)
/* 25CE4 8004A8E4 0C037711 */  jal       npc_test_move_simple_with_slipping
/* 25CE8 8004A8E8 27A70034 */   addiu    $a3, $sp, 0x34
/* 25CEC 8004A8EC 10400007 */  beqz      $v0, .L8004A90C
/* 25CF0 8004A8F0 00000000 */   nop
/* 25CF4 8004A8F4 C60C0038 */  lwc1      $f12, 0x38($s0)
/* 25CF8 8004A8F8 C60E0040 */  lwc1      $f14, 0x40($s0)
/* 25CFC 8004A8FC 8FA6002C */  lw        $a2, 0x2C($sp)
/* 25D00 8004A900 0C00A7B5 */  jal       dist2D
/* 25D04 8004A904 8FA70034 */   lw       $a3, 0x34($sp)
/* 25D08 8004A908 46000506 */  mov.s     $f20, $f0
.L8004A90C:
/* 25D0C 8004A90C C6000038 */  lwc1      $f0, 0x38($s0)
/* 25D10 8004A910 C602003C */  lwc1      $f2, 0x3C($s0)
/* 25D14 8004A914 C6040040 */  lwc1      $f4, 0x40($s0)
/* 25D18 8004A918 461ED301 */  sub.s     $f12, $f26, $f30
/* 25D1C 8004A91C E7A00038 */  swc1      $f0, 0x38($sp)
/* 25D20 8004A920 E7A2003C */  swc1      $f2, 0x3C($sp)
/* 25D24 8004A924 0C00A6C9 */  jal       clamp_angle
/* 25D28 8004A928 E7A40040 */   swc1     $f4, 0x40($sp)
/* 25D2C 8004A92C C6020018 */  lwc1      $f2, 0x18($s0)
/* 25D30 8004A930 461C1082 */  mul.s     $f2, $f2, $f28
/* 25D34 8004A934 00000000 */  nop
/* 25D38 8004A938 E7A00014 */  swc1      $f0, 0x14($sp)
/* 25D3C 8004A93C E7A20010 */  swc1      $f2, 0x10($sp)
/* 25D40 8004A940 860200A8 */  lh        $v0, 0xA8($s0)
/* 25D44 8004A944 27A50038 */  addiu     $a1, $sp, 0x38
/* 25D48 8004A948 44820000 */  mtc1      $v0, $f0
/* 25D4C 8004A94C 00000000 */  nop
/* 25D50 8004A950 46800020 */  cvt.s.w   $f0, $f0
/* 25D54 8004A954 E7A00018 */  swc1      $f0, 0x18($sp)
/* 25D58 8004A958 860200A6 */  lh        $v0, 0xA6($s0)
/* 25D5C 8004A95C 27A6003C */  addiu     $a2, $sp, 0x3C
/* 25D60 8004A960 44820000 */  mtc1      $v0, $f0
/* 25D64 8004A964 00000000 */  nop
/* 25D68 8004A968 46800020 */  cvt.s.w   $f0, $f0
/* 25D6C 8004A96C E7A0001C */  swc1      $f0, 0x1C($sp)
/* 25D70 8004A970 8E040080 */  lw        $a0, 0x80($s0)
/* 25D74 8004A974 0C037711 */  jal       npc_test_move_simple_with_slipping
/* 25D78 8004A978 27A70040 */   addiu    $a3, $sp, 0x40
/* 25D7C 8004A97C 10400007 */  beqz      $v0, .L8004A99C
/* 25D80 8004A980 00000000 */   nop
/* 25D84 8004A984 C60C0038 */  lwc1      $f12, 0x38($s0)
/* 25D88 8004A988 C60E0040 */  lwc1      $f14, 0x40($s0)
/* 25D8C 8004A98C 8FA60038 */  lw        $a2, 0x38($sp)
/* 25D90 8004A990 0C00A7B5 */  jal       dist2D
/* 25D94 8004A994 8FA70040 */   lw       $a3, 0x40($sp)
/* 25D98 8004A998 46000606 */  mov.s     $f24, $f0
.L8004A99C:
/* 25D9C 8004A99C 4616A03C */  c.lt.s    $f20, $f22
/* 25DA0 8004A9A0 00000000 */  nop
/* 25DA4 8004A9A4 45000005 */  bc1f      .L8004A9BC
/* 25DA8 8004A9A8 00000000 */   nop
/* 25DAC 8004A9AC 4614C03C */  c.lt.s    $f24, $f20
/* 25DB0 8004A9B0 00000000 */  nop
/* 25DB4 8004A9B4 45010009 */  bc1t      .L8004A9DC
/* 25DB8 8004A9B8 00000000 */   nop
.L8004A9BC:
/* 25DBC 8004A9BC 4616C03C */  c.lt.s    $f24, $f22
/* 25DC0 8004A9C0 00000000 */  nop
/* 25DC4 8004A9C4 45000007 */  bc1f      .L8004A9E4
/* 25DC8 8004A9C8 00000000 */   nop
/* 25DCC 8004A9CC 4618A03C */  c.lt.s    $f20, $f24
/* 25DD0 8004A9D0 00000000 */  nop
/* 25DD4 8004A9D4 45000003 */  bc1f      .L8004A9E4
/* 25DD8 8004A9D8 00000000 */   nop
.L8004A9DC:
/* 25DDC 8004A9DC 08012AA3 */  j         .L8004AA8C
/* 25DE0 8004A9E0 C61A000C */   lwc1     $f26, 0xC($s0)
.L8004A9E4:
/* 25DE4 8004A9E4 4614B03C */  c.lt.s    $f22, $f20
/* 25DE8 8004A9E8 00000000 */  nop
/* 25DEC 8004A9EC 45000005 */  bc1f      .L8004AA04
/* 25DF0 8004A9F0 00000000 */   nop
/* 25DF4 8004A9F4 4616C03C */  c.lt.s    $f24, $f22
/* 25DF8 8004A9F8 00000000 */  nop
/* 25DFC 8004A9FC 45010009 */  bc1t      .L8004AA24
/* 25E00 8004AA00 00000000 */   nop
.L8004AA04:
/* 25E04 8004AA04 4614C03C */  c.lt.s    $f24, $f20
/* 25E08 8004AA08 00000000 */  nop
/* 25E0C 8004AA0C 4500000A */  bc1f      .L8004AA38
/* 25E10 8004AA10 00000000 */   nop
/* 25E14 8004AA14 4618B03C */  c.lt.s    $f22, $f24
/* 25E18 8004AA18 00000000 */  nop
/* 25E1C 8004AA1C 45000008 */  bc1f      .L8004AA40
/* 25E20 8004AA20 00000000 */   nop
.L8004AA24:
/* 25E24 8004AA24 C602000C */  lwc1      $f2, 0xC($s0)
/* 25E28 8004AA28 3C01420C */  lui       $at, (0x420C0000 >> 16)
/* 25E2C 8004AA2C 44810000 */  mtc1      $at, $f0
/* 25E30 8004AA30 08012AA3 */  j         .L8004AA8C
/* 25E34 8004AA34 46001680 */   add.s    $f26, $f2, $f0
.L8004AA38:
/* 25E38 8004AA38 4618B03C */  c.lt.s    $f22, $f24
/* 25E3C 8004AA3C 00000000 */  nop
.L8004AA40:
/* 25E40 8004AA40 45000005 */  bc1f      .L8004AA58
/* 25E44 8004AA44 00000000 */   nop
/* 25E48 8004AA48 4616A03C */  c.lt.s    $f20, $f22
/* 25E4C 8004AA4C 00000000 */  nop
/* 25E50 8004AA50 45010009 */  bc1t      .L8004AA78
/* 25E54 8004AA54 00000000 */   nop
.L8004AA58:
/* 25E58 8004AA58 4618A03C */  c.lt.s    $f20, $f24
/* 25E5C 8004AA5C 00000000 */  nop
/* 25E60 8004AA60 4500000A */  bc1f      .L8004AA8C
/* 25E64 8004AA64 00000000 */   nop
/* 25E68 8004AA68 4614B03C */  c.lt.s    $f22, $f20
/* 25E6C 8004AA6C 00000000 */  nop
/* 25E70 8004AA70 45000006 */  bc1f      .L8004AA8C
/* 25E74 8004AA74 00000000 */   nop
.L8004AA78:
/* 25E78 8004AA78 C602000C */  lwc1      $f2, 0xC($s0)
/* 25E7C 8004AA7C 3C01420C */  lui       $at, (0x420C0000 >> 16)
/* 25E80 8004AA80 44810000 */  mtc1      $at, $f0
/* 25E84 8004AA84 00000000 */  nop
/* 25E88 8004AA88 46001681 */  sub.s     $f26, $f2, $f0
.L8004AA8C:
/* 25E8C 8004AA8C 12200004 */  beqz      $s1, .L8004AAA0
/* 25E90 8004AA90 00000000 */   nop
/* 25E94 8004AA94 0C00A6C9 */  jal       clamp_angle
/* 25E98 8004AA98 4600D306 */   mov.s    $f12, $f26
/* 25E9C 8004AA9C E6200000 */  swc1      $f0, 0x0($s1)
.L8004AAA0:
/* 25EA0 8004AAA0 56600001 */  bnel      $s3, $zero, .L8004AAA8
/* 25EA4 8004AAA4 E6760000 */   swc1     $f22, 0x0($s3)
.L8004AAA8:
/* 25EA8 8004AAA8 56800001 */  bnel      $s4, $zero, .L8004AAB0
/* 25EAC 8004AAAC E6940000 */   swc1     $f20, 0x0($s4)
.L8004AAB0:
/* 25EB0 8004AAB0 56A00001 */  bnel      $s5, $zero, .L8004AAB8
/* 25EB4 8004AAB4 E6B80000 */   swc1     $f24, 0x0($s5)
.L8004AAB8:
/* 25EB8 8004AAB8 0240102D */  daddu     $v0, $s2, $zero
/* 25EBC 8004AABC 8FBF0060 */  lw        $ra, 0x60($sp)
/* 25EC0 8004AAC0 8FB5005C */  lw        $s5, 0x5C($sp)
/* 25EC4 8004AAC4 8FB40058 */  lw        $s4, 0x58($sp)
/* 25EC8 8004AAC8 8FB30054 */  lw        $s3, 0x54($sp)
/* 25ECC 8004AACC 8FB20050 */  lw        $s2, 0x50($sp)
/* 25ED0 8004AAD0 8FB1004C */  lw        $s1, 0x4C($sp)
/* 25ED4 8004AAD4 8FB00048 */  lw        $s0, 0x48($sp)
/* 25ED8 8004AAD8 D7BE0090 */  ldc1      $f30, 0x90($sp)
/* 25EDC 8004AADC D7BC0088 */  ldc1      $f28, 0x88($sp)
/* 25EE0 8004AAE0 D7BA0080 */  ldc1      $f26, 0x80($sp)
/* 25EE4 8004AAE4 D7B80078 */  ldc1      $f24, 0x78($sp)
/* 25EE8 8004AAE8 D7B60070 */  ldc1      $f22, 0x70($sp)
/* 25EEC 8004AAEC D7B40068 */  ldc1      $f20, 0x68($sp)
/* 25EF0 8004AAF0 03E00008 */  jr        $ra
/* 25EF4 8004AAF4 27BD0098 */   addiu    $sp, $sp, 0x98
/* 25EF8 8004AAF8 00000000 */  nop
/* 25EFC 8004AAFC 00000000 */  nop

### DECOMPILED C INSTRUCTIONS:

s32 ai_check_fwd_collisions(Npc* npc, f32 time, f32* outYaw, f32* outDistFwd, f32* outDistCW, f32* outDistCCW) {
    f32 x1, y1, z1;
    f32 x2, y2, z2;
    f32 x3, y3, z3;
    f32 fwdHitDist = -1.0f;
    f32 cwHitDist = -1.0f;
    f32 ccwHitDist = -1.0f;
    f32 yaw;
    s32 fwdHit;

    x1 = npc->pos.x;
    y1 = npc->pos.y;
    z1 = npc->pos.z;
    yaw = *outYaw;

    fwdHit = npc_test_move_simple_with_slipping(npc->collisionChannel,
            &x1, &y1, &z1,
            npc->moveSpeed * time,
            yaw,
            npc->collisionHeight,
            npc->collisionDiameter);

    if (fwdHit != 0) {
        fwdHitDist = dist2D(npc->pos.x, npc->pos.z, x1, z1);

        x2 = npc->pos.x;
        y2 = npc->pos.y;
        z2 = npc->pos.z;
        if (npc_test_move_simple_with_slipping(npc->collisionChannel,
                &x2, &y2, &z2, npc->moveSpeed * time,
                clamp_angle(yaw + 35.0f),
                npc->collisionHeight,
                npc->collisionDiameter) != 0) {
            cwHitDist = dist2D(npc->pos.x, npc->pos.z, x2, z2);
        }

        x3 = npc->pos.x;
        y3 = npc->pos.y;
        z3 = npc->pos.z;
        if (npc_test_move_simple_with_slipping(npc->collisionChannel,
                &x3, &y3, &z3,
                npc->moveSpeed * time,
                clamp_angle(yaw - 35.0f),
                npc->collisionHeight,
                npc->collisionDiameter) != 0) {
            ccwHitDist = dist2D(npc->pos.x, npc->pos.z, x3, z3);
        }

        if ((cwHitDist < fwdHitDist && ccwHitDist < cwHitDist) || (ccwHitDist < fwdHitDist && cwHitDist < ccwHitDist)) {
            yaw = npc->yaw;
        } else if ((fwdHitDist < cwHitDist && ccwHitDist < fwdHitDist) || (ccwHitDist < cwHitDist && fwdHitDist < ccwHitDist)) {
            yaw = npc->yaw + 35.0f;
        } else if ((fwdHitDist < ccwHitDist && cwHitDist < fwdHitDist) || (cwHitDist < ccwHitDist && fwdHitDist < cwHitDist)) {
            yaw = npc->yaw - 35.0f;
        }
    }

    if (outYaw != NULL) {
        *outYaw = clamp_angle(yaw);
    }
    if (outDistFwd != NULL) {
        *outDistFwd = fwdHitDist;
    }
    if (outDistCW != NULL) {
        *outDistCW = cwHitDist;
    }
    if (outDistCCW != NULL) {
        *outDistCCW = ccwHitDist;
    }
    return fwdHit;
}


### RAW ASSEMBLY INSTRUCTIONS:

glabel action_update_state_23
/* E28ACC 802B609C 27BDFF90 */  addiu     $sp, $sp, -0x70
/* E28AD0 802B60A0 AFB20058 */  sw        $s2, 0x58($sp)
glabel action_update_use_spinning_flower
/* E28AD4 802B60A4 3C128011 */  lui       $s2, %hi(gPlayerStatus)
.L802B60A8:
/* E28AD8 802B60A8 2652EFC8 */  addiu     $s2, $s2, %lo(gPlayerStatus)
.L802B60AC:
/* E28ADC 802B60AC AFBF005C */  sw        $ra, 0x5C($sp)
/* E28AE0 802B60B0 AFB10054 */  sw        $s1, 0x54($sp)
glabel action_update_jump
/* E28AE4 802B60B4 AFB00050 */  sw        $s0, 0x50($sp)
/* E28AE8 802B60B8 F7B60068 */  sdc1      $f22, 0x68($sp)
/* E28AEC 802B60BC F7B40060 */  sdc1      $f20, 0x60($sp)
/* E28AF0 802B60C0 8E430000 */  lw        $v1, 0x0($s2)
/* E28AF4 802B60C4 0461000E */  bgez      $v1, .L802B6100
.L802B60C8:
/* E28AF8 802B60C8 3C027FF7 */   lui      $v0, (0x7FF7FFF1 >> 16)
/* E28AFC 802B60CC 3442FFF1 */  ori       $v0, $v0, (0x7FF7FFF1 & 0xFFFF)
glabel .L802B60D0
/* E28B00 802B60D0 3C018011 */  lui       $at, %hi(D_8010C938)
.L802B60D4:
/* E28B04 802B60D4 C420C938 */  lwc1      $f0, %lo(D_8010C938)($at)
/* E28B08 802B60D8 00621024 */  and       $v0, $v1, $v0
/* E28B0C 802B60DC AE420000 */  sw        $v0, 0x0($s2)
/* E28B10 802B60E0 A24000B6 */  sb        $zero, 0xB6($s2)
/* E28B14 802B60E4 A6400008 */  sh        $zero, 0x8($s2)
.L802B60E8:
/* E28B18 802B60E8 A64000C0 */  sh        $zero, 0xC0($s2)
.L802B60EC:
/* E28B1C 802B60EC A64000C2 */  sh        $zero, 0xC2($s2)
.L802B60F0:
/* E28B20 802B60F0 AE400054 */  sw        $zero, 0x54($s2)
glabel .L802B60F4
/* E28B24 802B60F4 AE40008C */  sw        $zero, 0x8C($s2)
/* E28B28 802B60F8 3C01802B */  lui       $at, %hi(D_802B6770_E27C80)
/* E28B2C 802B60FC E4206770 */  swc1      $f0, %lo(D_802B6770_E27C80)($at)
.L802B6100:
/* E28B30 802B6100 824300B6 */  lb        $v1, 0xB6($s2)
.L802B6104:
/* E28B34 802B6104 924200B6 */  lbu       $v0, 0xB6($s2)
.L802B6108:
/* E28B38 802B6108 10600006 */  beqz      $v1, .L802B6124
glabel .L802B610C
/* E28B3C 802B610C 24420001 */   addiu    $v0, $v0, 0x1
.L802B6110:
/* E28B40 802B6110 24020001 */  addiu     $v0, $zero, 0x1
/* E28B44 802B6114 10620004 */  beq       $v1, $v0, .L802B6128
.L802B6118:
/* E28B48 802B6118 00000000 */   nop
/* E28B4C 802B611C 080AD8CC */  j         .L802B6330
glabel action_update_parasol
/* E28B50 802B6120 00000000 */   nop
.L802B6124:
/* E28B54 802B6124 A24200B6 */  sb        $v0, 0xB6($s2)
.L802B6128:
/* E28B58 802B6128 3C018011 */  lui       $at, %hi(D_8010C990)
/* E28B5C 802B612C C42CC990 */  lwc1      $f12, %lo(D_8010C990)($at)
/* E28B60 802B6130 3C0140C9 */  lui       $at, (0x40C90FD0 >> 16)
glabel .L802B6134
/* E28B64 802B6134 34210FD0 */  ori       $at, $at, (0x40C90FD0 & 0xFFFF)
/* E28B68 802B6138 4481A000 */  mtc1      $at, $f20
.L802B613C:
/* E28B6C 802B613C 27B10028 */  addiu     $s1, $sp, 0x28
.L802B6140:
/* E28B70 802B6140 46146302 */  mul.s     $f12, $f12, $f20
.L802B6144:
/* E28B74 802B6144 00000000 */  nop
/* E28B78 802B6148 0220282D */  daddu     $a1, $s1, $zero
.L802B614C:
/* E28B7C 802B614C 27B0002C */  addiu     $s0, $sp, 0x2C
.L802B6150:
/* E28B80 802B6150 3C0143B4 */  lui       $at, (0x43B40000 >> 16)
.L802B6154:
/* E28B84 802B6154 4481B000 */  mtc1      $at, $f22
.L802B6158:
/* E28B88 802B6158 0200302D */  daddu     $a2, $s0, $zero
.L802B615C:
/* E28B8C 802B615C 0C00A82D */  jal       sin_cos_rad
/* E28B90 802B6160 46166303 */   div.s    $f12, $f12, $f22
.L802B6164:
/* E28B94 802B6164 3C01802B */  lui       $at, %hi(D_802B6770_E27C80)
.L802B6168:
/* E28B98 802B6168 C42C6770 */  lwc1      $f12, %lo(D_802B6770_E27C80)($at)
/* E28B9C 802B616C 46146302 */  mul.s     $f12, $f12, $f20
glabel .L802B6170
/* E28BA0 802B6170 00000000 */  nop
glabel .L802B6174
/* E28BA4 802B6174 0220282D */  daddu     $a1, $s1, $zero
/* E28BA8 802B6178 C7A00028 */  lwc1      $f0, 0x28($sp)
.L802B617C:
/* E28BAC 802B617C 3C014040 */  lui       $at, (0x40400000 >> 16)
.L802B6180:
/* E28BB0 802B6180 4481A000 */  mtc1      $at, $f20
glabel .L802B6184
/* E28BB4 802B6184 0200302D */  daddu     $a2, $s0, $zero
.L802B6188:
/* E28BB8 802B6188 46140502 */  mul.s     $f20, $f0, $f20
.L802B618C:
/* E28BBC 802B618C 00000000 */  nop
.L802B6190:
/* E28BC0 802B6190 0C00A82D */  jal       sin_cos_rad
.L802B6194:
/* E28BC4 802B6194 46166303 */   div.s    $f12, $f12, $f22
glabel func_802B6198
/* E28BC8 802B6198 C7A00028 */  lwc1      $f0, 0x28($sp)
/* E28BCC 802B619C 46140102 */  mul.s     $f4, $f0, $f20
.L802B61A0:
/* E28BD0 802B61A0 00000000 */  nop
.L802B61A4:
/* E28BD4 802B61A4 C7A0002C */  lwc1      $f0, 0x2C($sp)
.L802B61A8:
/* E28BD8 802B61A8 46140182 */  mul.s     $f6, $f0, $f20
.L802B61AC:
/* E28BDC 802B61AC 00000000 */  nop
.L802B61B0:
/* E28BE0 802B61B0 3C01802B */  lui       $at, %hi(D_802B6760_E29190)
.L802B61B4:
/* E28BE4 802B61B4 D4226760 */  ldc1      $f2, %lo(D_802B6760_E29190)($at)
/* E28BE8 802B61B8 46002021 */  cvt.d.s   $f0, $f4
/* E28BEC 802B61BC 46200005 */  abs.d     $f0, $f0
glabel func_802B61C0
/* E28BF0 802B61C0 4622003C */  c.lt.d    $f0, $f2
/* E28BF4 802B61C4 00000000 */  nop
.L802B61C8:
/* E28BF8 802B61C8 45020011 */  bc1fl     .L802B6210
.L802B61CC:
/* E28BFC 802B61CC 46003021 */   cvt.d.s  $f0, $f6
/* E28C00 802B61D0 44800000 */  mtc1      $zero, $f0
.L802B61D4:
/* E28C04 802B61D4 3C013DCC */  lui       $at, (0x3DCCCCCD >> 16)
.L802B61D8:
/* E28C08 802B61D8 3421CCCD */  ori       $at, $at, (0x3DCCCCCD & 0xFFFF)
.L802B61DC:
/* E28C0C 802B61DC 44811000 */  mtc1      $at, $f2
/* E28C10 802B61E0 4600203C */  c.lt.s    $f4, $f0
glabel func_802B61E4
/* E28C14 802B61E4 00000000 */  nop
.L802B61E8:
/* E28C18 802B61E8 45000006 */  bc1f      .L802B6204
.L802B61EC:
/* E28C1C 802B61EC 46001106 */   mov.s    $f4, $f2
.L802B61F0:
/* E28C20 802B61F0 3C01BDCC */  lui       $at, (0xBDCCCCCD >> 16)
.L802B61F4:
/* E28C24 802B61F4 3421CCCD */  ori       $at, $at, (0xBDCCCCCD & 0xFFFF)
.L802B61F8:
/* E28C28 802B61F8 44811000 */  mtc1      $at, $f2
.L802B61FC:
/* E28C2C 802B61FC 00000000 */  nop
.L802B6200:
/* E28C30 802B6200 46001106 */  mov.s     $f4, $f2
.L802B6204:
/* E28C34 802B6204 46003021 */  cvt.d.s   $f0, $f6
glabel .L802B6208
/* E28C38 802B6208 3C01802B */  lui       $at, %hi(D_802B6768_E29198)
/* E28C3C 802B620C D4226768 */  ldc1      $f2, %lo(D_802B6768_E29198)($at)
.L802B6210:
/* E28C40 802B6210 46200005 */  abs.d     $f0, $f0
.L802B6214:
/* E28C44 802B6214 4622003C */  c.lt.d    $f0, $f2
glabel .L802B6218
/* E28C48 802B6218 00000000 */  nop
/* E28C4C 802B621C 4500000F */  bc1f      .L802B625C
.L802B6220:
/* E28C50 802B6220 0240202D */   daddu    $a0, $s2, $zero
.L802B6224:
/* E28C54 802B6224 44800000 */  mtc1      $zero, $f0
glabel .L802B6228
/* E28C58 802B6228 3C013DCC */  lui       $at, (0x3DCCCCCD >> 16)
.L802B622C:
/* E28C5C 802B622C 3421CCCD */  ori       $at, $at, (0x3DCCCCCD & 0xFFFF)
glabel action_update_step_up_peach
/* E28C60 802B6230 44811000 */  mtc1      $at, $f2
/* E28C64 802B6234 4600303C */  c.lt.s    $f6, $f0
glabel .L802B6238
/* E28C68 802B6238 00000000 */  nop
glabel .L802B623C
/* E28C6C 802B623C 45000007 */  bc1f      .L802B625C
glabel .L802B6240
/* E28C70 802B6240 46001186 */   mov.s    $f6, $f2
glabel .L802B6244
/* E28C74 802B6244 3C01BDCC */  lui       $at, (0xBDCCCCCD >> 16)
glabel .L802B6248
/* E28C78 802B6248 3421CCCD */  ori       $at, $at, (0xBDCCCCCD & 0xFFFF)
/* E28C7C 802B624C 44811000 */  mtc1      $at, $f2
glabel .L802B6250
/* E28C80 802B6250 00000000 */  nop
.L802B6254:
/* E28C84 802B6254 46001186 */  mov.s     $f6, $f2
glabel .L802B6258
/* E28C88 802B6258 0240202D */  daddu     $a0, $s2, $zero
.L802B625C:
/* E28C8C 802B625C 27A50030 */  addiu     $a1, $sp, 0x30
/* E28C90 802B6260 C6420028 */  lwc1      $f2, 0x28($s2)
/* E28C94 802B6264 27A60034 */  addiu     $a2, $sp, 0x34
.L802B6268:
/* E28C98 802B6268 46041080 */  add.s     $f2, $f2, $f4
.L802B626C:
/* E28C9C 802B626C C6400030 */  lwc1      $f0, 0x30($s2)
/* E28CA0 802B6270 27A2003C */  addiu     $v0, $sp, 0x3C
.L802B6274:
/* E28CA4 802B6274 46060001 */  sub.s     $f0, $f0, $f6
glabel .L802B6278
/* E28CA8 802B6278 E6420028 */  swc1      $f2, 0x28($s2)
/* E28CAC 802B627C 46001186 */  mov.s     $f6, $f2
.L802B6280:
/* E28CB0 802B6280 E6400030 */  swc1      $f0, 0x30($s2)
.L802B6284:
/* E28CB4 802B6284 46000106 */  mov.s     $f4, $f0
glabel action_update_run
/* E28CB8 802B6288 C642002C */  lwc1      $f2, 0x2C($s2)
/* E28CBC 802B628C 3C0140A0 */  lui       $at, (0x40A00000 >> 16)
.L802B6290:
/* E28CC0 802B6290 44810000 */  mtc1      $at, $f0
glabel func_802B6294
/* E28CC4 802B6294 27A70038 */  addiu     $a3, $sp, 0x38
glabel .L802B6298
/* E28CC8 802B6298 E7A60030 */  swc1      $f6, 0x30($sp)
/* E28CCC 802B629C E7A40038 */  swc1      $f4, 0x38($sp)
/* E28CD0 802B62A0 E7A20034 */  swc1      $f2, 0x34($sp)
glabel func_802B62A4
/* E28CD4 802B62A4 E7A0003C */  swc1      $f0, 0x3C($sp)
.L802B62A8:
/* E28CD8 802B62A8 AFA20010 */  sw        $v0, 0x10($sp)
/* E28CDC 802B62AC 27A20040 */  addiu     $v0, $sp, 0x40
jtbl_802B62B0:
/* E28CE0 802B62B0 AFA20014 */  sw        $v0, 0x14($sp)
.L802B62B4:
/* E28CE4 802B62B4 27A20044 */  addiu     $v0, $sp, 0x44
glabel .L802B62B8
/* E28CE8 802B62B8 AFA20018 */  sw        $v0, 0x18($sp)
/* E28CEC 802B62BC 27A20048 */  addiu     $v0, $sp, 0x48
/* E28CF0 802B62C0 AFA2001C */  sw        $v0, 0x1C($sp)
/* E28CF4 802B62C4 27A2004C */  addiu     $v0, $sp, 0x4C
.L802B62C8:
/* E28CF8 802B62C8 0C03791B */  jal       player_raycast_below_cam_relative
glabel action_update_peach_land
/* E28CFC 802B62CC AFA20020 */   sw       $v0, 0x20($sp)
Munchlesia_LaunchVelocity:
/* E28D00 802B62D0 04400003 */  bltz      $v0, D_802B62E0
Munchlesia_LateralVelocity:
/* E28D04 802B62D4 00000000 */   nop
Munchlesia_LaunchAccel:
/* E28D08 802B62D8 C7A00034 */  lwc1      $f0, 0x34($sp)
Munchlesia_LaunchYaw:
/* E28D0C 802B62DC E640002C */  swc1      $f0, 0x2C($s2)
D_802B62E0:
/* E28D10 802B62E0 3C028007 */  lui       $v0, %hi(gGameStatusPtr)
.L802B62E4:
/* E28D14 802B62E4 8C42419C */  lw        $v0, %lo(gGameStatusPtr)($v0)
/* E28D18 802B62E8 3C014270 */  lui       $at, (0x42700000 >> 16)
/* E28D1C 802B62EC 4481A000 */  mtc1      $at, $f20
/* E28D20 802B62F0 84430086 */  lh        $v1, 0x86($v0)
/* E28D24 802B62F4 2402000A */  addiu     $v0, $zero, 0xA
glabel func_802B62F8
/* E28D28 802B62F8 14620003 */  bne       $v1, $v0, .L802B6308
.L802B62FC:
/* E28D2C 802B62FC 00000000 */   nop
D_802B6300:
/* E28D30 802B6300 3C0141F0 */  lui       $at, (0x41F00000 >> 16)
/* E28D34 802B6304 4481A000 */  mtc1      $at, $f20
.L802B6308:
/* E28D38 802B6308 3C018011 */  lui       $at, %hi(D_8010C990)
.L802B630C:
/* E28D3C 802B630C C420C990 */  lwc1      $f0, %lo(D_8010C990)($at)
.L802B6310:
/* E28D40 802B6310 4614003C */  c.lt.s    $f0, $f20
/* E28D44 802B6314 00000000 */  nop
/* E28D48 802B6318 45000005 */  bc1f      .L802B6330
glabel .L802B631C
/* E28D4C 802B631C 00000000 */   nop
.L802B6320:
/* E28D50 802B6320 0C039769 */  jal       set_action_state
glabel .L802B6324
/* E28D54 802B6324 24040008 */   addiu    $a0, $zero, 0x8
.L802B6328:
/* E28D58 802B6328 0C038C1B */  jal       gravity_use_fall_parms
glabel .L802B632C
/* E28D5C 802B632C 00000000 */   nop
.L802B6330:
/* E28D60 802B6330 8FBF005C */  lw        $ra, 0x5C($sp)
/* E28D64 802B6334 8FB20058 */  lw        $s2, 0x58($sp)
.L802B6338:
/* E28D68 802B6338 8FB10054 */  lw        $s1, 0x54($sp)
/* E28D6C 802B633C 8FB00050 */  lw        $s0, 0x50($sp)
.L802B6340:
/* E28D70 802B6340 D7B60068 */  ldc1      $f22, 0x68($sp)
/* E28D74 802B6344 D7B40060 */  ldc1      $f20, 0x60($sp)
glabel func_802B6348
/* E28D78 802B6348 03E00008 */  jr        $ra
/* E28D7C 802B634C 27BD0070 */   addiu    $sp, $sp, 0x70

### DECOMPILED C INSTRUCTIONS:

void action_update_state_23(void) {
    PlayerStatus* playerStatus = &gPlayerStatus;
    f32 hitDirZ;
    f32 hitDirX;
    f32 hitRz;
    f32 hitRx;
    f32 outLength;
    f32 outZ;
    f32 outY;
    f32 outX;
    f32 cosTheta;
    f32 sinTheta;
    f32 miscTempVariable;
    f32 playerXOffset;
    f32 playerZOffset;
    f32 zDelta;
    f32 playerOffsetTempVar;

    if (playerStatus->flags & PS_FLAG_ACTION_STATE_CHANGED) {
        playerStatus->flags &= ~(PS_FLAG_ACTION_STATE_CHANGED | PS_FLAG_ARMS_RAISED | PS_FLAG_AIRBORNE);
        playerStatus->actionSubstate = 0;
        playerStatus->currentStateTime = 0;
        playerStatus->timeInAir = 0;
        playerStatus->peakJumpTime = 0;
        playerStatus->currentSpeed = 0.0f;
        playerStatus->pitch = 0.0f;
        D_802B6770_E27C80 = D_8010C938;
    }

    switch (playerStatus->actionSubstate) {
        case 0:
            playerStatus->actionSubstate++;
        case 1:
            break;
        default:
            return;
    }

    sin_cos_rad(DEG_TO_RAD(D_8010C990), &sinTheta, &cosTheta);

    miscTempVariable = 3.0f;
    miscTempVariable = sinTheta * miscTempVariable;

    sin_cos_rad(DEG_TO_RAD(D_802B6770_E27C80), &sinTheta, &cosTheta);

    playerXOffset = sinTheta * miscTempVariable;
    playerZOffset = cosTheta * miscTempVariable;

    if (fabs(playerXOffset) < 0.1) {
        playerOffsetTempVar = 0.1f;
        if (playerXOffset < 0.0f) {
            playerOffsetTempVar = -0.1f;
        }
        playerXOffset = playerOffsetTempVar;
    }

    if (fabs(playerZOffset) < 0.1) {
        playerOffsetTempVar = 0.1f;
        if (playerZOffset < 0.0f) {
            playerOffsetTempVar = -0.1f;
        }
        playerZOffset = playerOffsetTempVar;
    }

    playerStatus->position.x += playerXOffset;
    playerStatus->position.z -= playerZOffset;
    outX = playerStatus->position.x;
    outY = playerStatus->position.y;
    outZ = playerStatus->position.z;
    outLength = 5.0f;
    if (player_raycast_below_cam_relative(playerStatus, &outX, &outY, &outZ, &outLength, &hitRx, &hitRz, &hitDirX, &hitDirZ) >= 0) {
        playerStatus->position.y = outY;
    }

    if (gGameStatusPtr->areaID == AREA_SBK) {
        miscTempVariable = 30.0f;
    } else {
        miscTempVariable = 60.0f;
    }

    if (D_8010C990 < miscTempVariable) {
        set_action_state(ACTION_STATE_FALLING);
        gravity_use_fall_parms();
    }
}


### RAW ASSEMBLY INSTRUCTIONS:

glabel render_effects_UI
/* 35394 80059F94 27BDFFC8 */  addiu     $sp, $sp, -0x38
/* 35398 80059F98 F7B40030 */  sdc1      $f20, 0x30($sp)
/* 3539C 80059F9C 3C014080 */  lui       $at, (0x40800000 >> 16)
/* 353A0 80059FA0 4481A000 */  mtc1      $at, $f20
/* 353A4 80059FA4 AFB10014 */  sw        $s1, 0x14($sp)
/* 353A8 80059FA8 24110001 */  addiu     $s1, $zero, 0x1
/* 353AC 80059FAC AFB20018 */  sw        $s2, 0x18($sp)
/* 353B0 80059FB0 0000902D */  daddu     $s2, $zero, $zero
/* 353B4 80059FB4 AFB50024 */  sw        $s5, 0x24($sp)
/* 353B8 80059FB8 3C15800B */  lui       $s5, %hi(gCameras)
/* 353BC 80059FBC 26B51D80 */  addiu     $s5, $s5, %lo(gCameras)
/* 353C0 80059FC0 AFB00010 */  sw        $s0, 0x10($sp)
/* 353C4 80059FC4 3C10800A */  lui       $s0, %hi(gMainGfxPos)
/* 353C8 80059FC8 2610A66C */  addiu     $s0, $s0, %lo(gMainGfxPos)
/* 353CC 80059FCC AFB40020 */  sw        $s4, 0x20($sp)
/* 353D0 80059FD0 24140002 */  addiu     $s4, $zero, 0x2
/* 353D4 80059FD4 AFB3001C */  sw        $s3, 0x1C($sp)
/* 353D8 80059FD8 3413FFFE */  ori       $s3, $zero, 0xFFFE
/* 353DC 80059FDC AFBF0028 */  sw        $ra, 0x28($sp)
/* 353E0 80059FE0 00121080 */  sll       $v0, $s2, 2
.L80059FE4:
/* 353E4 80059FE4 3C0E800B */  lui       $t6, %hi(gEffectInstances)
/* 353E8 80059FE8 01C27021 */  addu      $t6, $t6, $v0
/* 353EC 80059FEC 8DCE4398 */  lw        $t6, %lo(gEffectInstances)($t6)
/* 353F0 80059FF0 51C000A5 */  beql      $t6, $zero, .L8005A288
/* 353F4 80059FF4 26520001 */   addiu    $s2, $s2, 0x1
/* 353F8 80059FF8 8DC30000 */  lw        $v1, 0x0($t6)
/* 353FC 80059FFC 30620001 */  andi      $v0, $v1, 0x1
/* 35400 8005A000 504000A1 */  beql      $v0, $zero, .L8005A288
/* 35404 8005A004 26520001 */   addiu    $s2, $s2, 0x1
/* 35408 8005A008 30620008 */  andi      $v0, $v1, 0x8
/* 3540C 8005A00C 5040009E */  beql      $v0, $zero, .L8005A288
/* 35410 8005A010 26520001 */   addiu    $s2, $s2, 0x1
/* 35414 8005A014 3C028007 */  lui       $v0, %hi(gGameStatusPtr)
/* 35418 8005A018 8C42419C */  lw        $v0, %lo(gGameStatusPtr)($v0)
/* 3541C 8005A01C 80420070 */  lb        $v0, 0x70($v0)
/* 35420 8005A020 10400005 */  beqz      $v0, .L8005A038
/* 35424 8005A024 30620004 */   andi     $v0, $v1, 0x4
/* 35428 8005A028 50400097 */  beql      $v0, $zero, .L8005A288
/* 3542C 8005A02C 26520001 */   addiu    $s2, $s2, 0x1
/* 35430 8005A030 08016810 */  j         .L8005A040
/* 35434 8005A034 00000000 */   nop
.L8005A038:
/* 35438 8005A038 54400093 */  bnel      $v0, $zero, .L8005A288
/* 3543C 8005A03C 26520001 */   addiu    $s2, $s2, 0x1
.L8005A040:
/* 35440 8005A040 8DC20010 */  lw        $v0, 0x10($t6)
/* 35444 8005A044 8C4F0018 */  lw        $t7, 0x18($v0)
/* 35448 8005A048 3C028006 */  lui       $v0, %hi(stub_effect_delegate)
/* 3544C 8005A04C 24429C80 */  addiu     $v0, $v0, %lo(stub_effect_delegate)
/* 35450 8005A050 51E2008D */  beql      $t7, $v0, .L8005A288
/* 35454 8005A054 26520001 */   addiu    $s2, $s2, 0x1
/* 35458 8005A058 12200088 */  beqz      $s1, .L8005A27C
/* 3545C 8005A05C 3C04DC08 */   lui      $a0, (0xDC080008 >> 16)
/* 35460 8005A060 34840008 */  ori       $a0, $a0, (0xDC080008 & 0xFFFF)
/* 35464 8005A064 3C06D9FF */  lui       $a2, (0xD9FFFFFF >> 16)
/* 35468 8005A068 34C6FFFF */  ori       $a2, $a2, (0xD9FFFFFF & 0xFFFF)
/* 3546C 8005A06C 3C050020 */  lui       $a1, (0x200405 >> 16)
/* 35470 8005A070 34A50405 */  ori       $a1, $a1, (0x200405 & 0xFFFF)
/* 35474 8005A074 3C07DB04 */  lui       $a3, (0xDB040004 >> 16)
/* 35478 8005A078 34E70004 */  ori       $a3, $a3, (0xDB040004 & 0xFFFF)
/* 3547C 8005A07C 3C08DB04 */  lui       $t0, (0xDB04000C >> 16)
/* 35480 8005A080 3508000C */  ori       $t0, $t0, (0xDB04000C & 0xFFFF)
/* 35484 8005A084 3C09DB04 */  lui       $t1, (0xDB040014 >> 16)
/* 35488 8005A088 35290014 */  ori       $t1, $t1, (0xDB040014 & 0xFFFF)
/* 3548C 8005A08C 3C0ADB04 */  lui       $t2, (0xDB04001C >> 16)
/* 35490 8005A090 8E0B0000 */  lw        $t3, 0x0($s0)
/* 35494 8005A094 354A001C */  ori       $t2, $t2, (0xDB04001C & 0xFFFF)
/* 35498 8005A098 0160182D */  daddu     $v1, $t3, $zero
/* 3549C 8005A09C 256B0008 */  addiu     $t3, $t3, 0x8
/* 354A0 8005A0A0 AE0B0000 */  sw        $t3, 0x0($s0)
/* 354A4 8005A0A4 3C0D8007 */  lui       $t5, %hi(gCurrentCameraID)
/* 354A8 8005A0A8 8DAD7410 */  lw        $t5, %lo(gCurrentCameraID)($t5)
/* 354AC 8005A0AC 3C02E700 */  lui       $v0, (0xE7000000 >> 16)
/* 354B0 8005A0B0 AC620000 */  sw        $v0, 0x0($v1)
/* 354B4 8005A0B4 25620008 */  addiu     $v0, $t3, 0x8
/* 354B8 8005A0B8 AC600004 */  sw        $zero, 0x4($v1)
/* 354BC 8005A0BC AE020000 */  sw        $v0, 0x0($s0)
/* 354C0 8005A0C0 AD640000 */  sw        $a0, 0x0($t3)
/* 354C4 8005A0C4 3C04ED00 */  lui       $a0, (0xED000000 >> 16)
/* 354C8 8005A0C8 000D1080 */  sll       $v0, $t5, 2
/* 354CC 8005A0CC 004D1021 */  addu      $v0, $v0, $t5
/* 354D0 8005A0D0 00021080 */  sll       $v0, $v0, 2
/* 354D4 8005A0D4 004D1023 */  subu      $v0, $v0, $t5
/* 354D8 8005A0D8 000218C0 */  sll       $v1, $v0, 3
/* 354DC 8005A0DC 00431021 */  addu      $v0, $v0, $v1
/* 354E0 8005A0E0 000210C0 */  sll       $v0, $v0, 3
/* 354E4 8005A0E4 00556021 */  addu      $t4, $v0, $s5
/* 354E8 8005A0E8 258200A0 */  addiu     $v0, $t4, 0xA0
/* 354EC 8005A0EC AD620004 */  sw        $v0, 0x4($t3)
/* 354F0 8005A0F0 25620010 */  addiu     $v0, $t3, 0x10
/* 354F4 8005A0F4 AE020000 */  sw        $v0, 0x0($s0)
/* 354F8 8005A0F8 3C02D900 */  lui       $v0, (0xD9000000 >> 16)
/* 354FC 8005A0FC AD620008 */  sw        $v0, 0x8($t3)
/* 35500 8005A100 25620018 */  addiu     $v0, $t3, 0x18
/* 35504 8005A104 AD60000C */  sw        $zero, 0xC($t3)
/* 35508 8005A108 AE020000 */  sw        $v0, 0x0($s0)
/* 3550C 8005A10C 25620020 */  addiu     $v0, $t3, 0x20
/* 35510 8005A110 AD660010 */  sw        $a2, 0x10($t3)
/* 35514 8005A114 AD650014 */  sw        $a1, 0x14($t3)
/* 35518 8005A118 AE020000 */  sw        $v0, 0x0($s0)
/* 3551C 8005A11C 8583000E */  lh        $v1, 0xE($t4)
/* 35520 8005A120 25620028 */  addiu     $v0, $t3, 0x28
/* 35524 8005A124 AE020000 */  sw        $v0, 0x0($s0)
/* 35528 8005A128 44831000 */  mtc1      $v1, $f2
/* 3552C 8005A12C 00000000 */  nop
/* 35530 8005A130 468010A0 */  cvt.s.w   $f2, $f2
/* 35534 8005A134 46141082 */  mul.s     $f2, $f2, $f20
/* 35538 8005A138 00000000 */  nop
/* 3553C 8005A13C 85830010 */  lh        $v1, 0x10($t4)
/* 35540 8005A140 25620030 */  addiu     $v0, $t3, 0x30
/* 35544 8005A144 AE020000 */  sw        $v0, 0x0($s0)
/* 35548 8005A148 25620038 */  addiu     $v0, $t3, 0x38
/* 3554C 8005A14C 44830000 */  mtc1      $v1, $f0
/* 35550 8005A150 00000000 */  nop
/* 35554 8005A154 46800020 */  cvt.s.w   $f0, $f0
/* 35558 8005A158 46140002 */  mul.s     $f0, $f0, $f20
/* 3555C 8005A15C 00000000 */  nop
/* 35560 8005A160 AE020000 */  sw        $v0, 0x0($s0)
/* 35564 8005A164 4600110D */  trunc.w.s $f4, $f2
/* 35568 8005A168 44032000 */  mfc1      $v1, $f4
/* 3556C 8005A16C 00000000 */  nop
/* 35570 8005A170 30630FFF */  andi      $v1, $v1, 0xFFF
/* 35574 8005A174 00031B00 */  sll       $v1, $v1, 12
/* 35578 8005A178 4600010D */  trunc.w.s $f4, $f0
/* 3557C 8005A17C 44022000 */  mfc1      $v0, $f4
/* 35580 8005A180 00000000 */  nop
/* 35584 8005A184 30420FFF */  andi      $v0, $v0, 0xFFF
/* 35588 8005A188 00441025 */  or        $v0, $v0, $a0
/* 3558C 8005A18C 00621825 */  or        $v1, $v1, $v0
/* 35590 8005A190 AD630018 */  sw        $v1, 0x18($t3)
/* 35594 8005A194 8583000E */  lh        $v1, 0xE($t4)
/* 35598 8005A198 8585000A */  lh        $a1, 0xA($t4)
/* 3559C 8005A19C 85840010 */  lh        $a0, 0x10($t4)
/* 355A0 8005A1A0 8586000C */  lh        $a2, 0xC($t4)
/* 355A4 8005A1A4 25620040 */  addiu     $v0, $t3, 0x40
/* 355A8 8005A1A8 AE020000 */  sw        $v0, 0x0($s0)
/* 355AC 8005A1AC AD670020 */  sw        $a3, 0x20($t3)
/* 355B0 8005A1B0 AD740024 */  sw        $s4, 0x24($t3)
/* 355B4 8005A1B4 AD680028 */  sw        $t0, 0x28($t3)
/* 355B8 8005A1B8 00651821 */  addu      $v1, $v1, $a1
/* 355BC 8005A1BC 44831000 */  mtc1      $v1, $f2
/* 355C0 8005A1C0 00000000 */  nop
/* 355C4 8005A1C4 468010A0 */  cvt.s.w   $f2, $f2
/* 355C8 8005A1C8 46141082 */  mul.s     $f2, $f2, $f20
/* 355CC 8005A1CC 00000000 */  nop
/* 355D0 8005A1D0 AD74002C */  sw        $s4, 0x2C($t3)
/* 355D4 8005A1D4 AD690030 */  sw        $t1, 0x30($t3)
/* 355D8 8005A1D8 00862021 */  addu      $a0, $a0, $a2
/* 355DC 8005A1DC 44840000 */  mtc1      $a0, $f0
/* 355E0 8005A1E0 00000000 */  nop
/* 355E4 8005A1E4 46800020 */  cvt.s.w   $f0, $f0
/* 355E8 8005A1E8 46140002 */  mul.s     $f0, $f0, $f20
/* 355EC 8005A1EC 00000000 */  nop
/* 355F0 8005A1F0 AD730034 */  sw        $s3, 0x34($t3)
/* 355F4 8005A1F4 4600110D */  trunc.w.s $f4, $f2
/* 355F8 8005A1F8 44032000 */  mfc1      $v1, $f4
/* 355FC 8005A1FC 00000000 */  nop
/* 35600 8005A200 30630FFF */  andi      $v1, $v1, 0xFFF
/* 35604 8005A204 00031B00 */  sll       $v1, $v1, 12
/* 35608 8005A208 4600010D */  trunc.w.s $f4, $f0
/* 3560C 8005A20C 44022000 */  mfc1      $v0, $f4
/* 35610 8005A210 00000000 */  nop
/* 35614 8005A214 30420FFF */  andi      $v0, $v0, 0xFFF
/* 35618 8005A218 00621825 */  or        $v1, $v1, $v0
/* 3561C 8005A21C AD63001C */  sw        $v1, 0x1C($t3)
/* 35620 8005A220 AD6A0038 */  sw        $t2, 0x38($t3)
/* 35624 8005A224 AD73003C */  sw        $s3, 0x3C($t3)
/* 35628 8005A228 95820000 */  lhu       $v0, 0x0($t4)
/* 3562C 8005A22C 30420010 */  andi      $v0, $v0, 0x10
/* 35630 8005A230 14400012 */  bnez      $v0, .L8005A27C
/* 35634 8005A234 0000882D */   daddu    $s1, $zero, $zero
/* 35638 8005A238 3C04DA38 */  lui       $a0, (0xDA380007 >> 16)
/* 3563C 8005A23C 34840007 */  ori       $a0, $a0, (0xDA380007 & 0xFFFF)
/* 35640 8005A240 25620048 */  addiu     $v0, $t3, 0x48
/* 35644 8005A244 AE020000 */  sw        $v0, 0x0($s0)
/* 35648 8005A248 3C02DB0E */  lui       $v0, (0xDB0E0000 >> 16)
/* 3564C 8005A24C AD620040 */  sw        $v0, 0x40($t3)
/* 35650 8005A250 95830038 */  lhu       $v1, 0x38($t4)
/* 35654 8005A254 25620050 */  addiu     $v0, $t3, 0x50
/* 35658 8005A258 AE020000 */  sw        $v0, 0x0($s0)
/* 3565C 8005A25C 000D1180 */  sll       $v0, $t5, 6
/* 35660 8005A260 AD630044 */  sw        $v1, 0x44($t3)
/* 35664 8005A264 3C03800A */  lui       $v1, %hi(gDisplayContext)
/* 35668 8005A268 8C63A674 */  lw        $v1, %lo(gDisplayContext)($v1)
/* 3566C 8005A26C 24420030 */  addiu     $v0, $v0, 0x30
/* 35670 8005A270 AD640048 */  sw        $a0, 0x48($t3)
/* 35674 8005A274 00621821 */  addu      $v1, $v1, $v0
/* 35678 8005A278 AD63004C */  sw        $v1, 0x4C($t3)
.L8005A27C:
/* 3567C 8005A27C 01E0F809 */  jalr      $t7
/* 35680 8005A280 01C0202D */   daddu    $a0, $t6, $zero
/* 35684 8005A284 26520001 */  addiu     $s2, $s2, 0x1
.L8005A288:
/* 35688 8005A288 2A420060 */  slti      $v0, $s2, 0x60
/* 3568C 8005A28C 5440FF55 */  bnel      $v0, $zero, .L80059FE4
/* 35690 8005A290 00121080 */   sll      $v0, $s2, 2
/* 35694 8005A294 8FBF0028 */  lw        $ra, 0x28($sp)
/* 35698 8005A298 8FB50024 */  lw        $s5, 0x24($sp)
/* 3569C 8005A29C 8FB40020 */  lw        $s4, 0x20($sp)
/* 356A0 8005A2A0 8FB3001C */  lw        $s3, 0x1C($sp)
/* 356A4 8005A2A4 8FB20018 */  lw        $s2, 0x18($sp)
/* 356A8 8005A2A8 8FB10014 */  lw        $s1, 0x14($sp)
/* 356AC 8005A2AC 8FB00010 */  lw        $s0, 0x10($sp)
/* 356B0 8005A2B0 D7B40030 */  ldc1      $f20, 0x30($sp)
/* 356B4 8005A2B4 03E00008 */  jr        $ra
/* 356B8 8005A2B8 27BD0038 */   addiu    $sp, $sp, 0x38

### DECOMPILED C INSTRUCTIONS:

void render_effects_UI(void) {
    s32 cond = TRUE;
    s32 i;

    for (i = 0; i < ARRAY_COUNT(gEffectInstances); i++) {
        EffectInstance* effectInstance = gEffectInstances[i];

        if (effectInstance != NULL) {
            if (effectInstance->flags & FX_INSTANCE_FLAG_ENABLED) {
                if (effectInstance->flags & FX_INSTANCE_FLAG_HAS_UPDATED) {
                    void (*renderUI)(EffectInstance* effect);

                    if (gGameStatusPtr->isBattle && !(effectInstance->flags & FX_INSTANCE_FLAG_BATTLE)) {
                        continue;
                    }

                    if (!gGameStatusPtr->isBattle && effectInstance->flags & FX_INSTANCE_FLAG_BATTLE) {
                        continue;
                    }

                    renderUI = effectInstance->graphics->renderUI;
                    if (renderUI != stub_effect_delegate) {
                        if (cond) {
                            Camera* camera = &gCameras[gCurrentCameraID];

                            gDPPipeSync(gMainGfxPos++);
                            gSPViewport(gMainGfxPos++, &camera->vp);
                            gSPClearGeometryMode(gMainGfxPos++, G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG |
                                                G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR | G_LOD |
                                                G_SHADING_SMOOTH | G_CLIPPING | 0x40F9FA);
                            gSPSetGeometryMode(gMainGfxPos++, G_ZBUFFER | G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH);
                            gDPSetScissor(gMainGfxPos++, G_SC_NON_INTERLACE,
                                              camera->viewportStartX,
                                              camera->viewportStartY,
                                              camera->viewportStartX + camera->viewportW,
                                              camera->viewportStartY + camera->viewportH);
                            gSPClipRatio(gMainGfxPos++, FRUSTRATIO_2);

                            cond = FALSE;
                            if (!(camera->flags & CAMERA_FLAG_ORTHO)) {
                                gSPPerspNormalize(gMainGfxPos++, camera->perspNorm);
                                gSPMatrix(gMainGfxPos++, &gDisplayContext->camPerspMatrix[gCurrentCameraID],
                                          G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
                            }
                        }

                        renderUI(effectInstance);
                    }
                }
            }
        }
    }
}


### RAW ASSEMBLY INSTRUCTIONS:

glabel rising_bubble_appendGfx
/* 3561A0 E00462C0 27BDFF48 */  addiu     $sp, $sp, -0xB8
/* 3561A4 E00462C4 3C05DB06 */  lui       $a1, (0xDB060024 >> 16)
/* 3561A8 E00462C8 3C09800A */  lui       $t1, %hi(gMainGfxPos)
/* 3561AC E00462CC 2529A66C */  addiu     $t1, $t1, %lo(gMainGfxPos)
/* 3561B0 E00462D0 34A50024 */  ori       $a1, $a1, (0xDB060024 & 0xFFFF)
/* 3561B4 E00462D4 3C02E700 */  lui       $v0, (0xE7000000 >> 16)
/* 3561B8 E00462D8 AFBF00B4 */  sw        $ra, 0xB4($sp)
/* 3561BC E00462DC AFB400B0 */  sw        $s4, 0xB0($sp)
/* 3561C0 E00462E0 AFB300AC */  sw        $s3, 0xAC($sp)
/* 3561C4 E00462E4 AFB200A8 */  sw        $s2, 0xA8($sp)
/* 3561C8 E00462E8 AFB100A4 */  sw        $s1, 0xA4($sp)
/* 3561CC E00462EC AFB000A0 */  sw        $s0, 0xA0($sp)
/* 3561D0 E00462F0 8D280000 */  lw        $t0, 0x0($t1)
/* 3561D4 E00462F4 8C93000C */  lw        $s3, 0xC($a0)
/* 3561D8 E00462F8 0100182D */  daddu     $v1, $t0, $zero
/* 3561DC E00462FC 8E74001C */  lw        $s4, 0x1C($s3)
/* 3561E0 E0046300 25080008 */  addiu     $t0, $t0, 0x8
/* 3561E4 E0046304 AC620000 */  sw        $v0, 0x0($v1)
/* 3561E8 E0046308 AC600004 */  sw        $zero, 0x4($v1)
/* 3561EC E004630C AD050000 */  sw        $a1, 0x0($t0)
/* 3561F0 E0046310 8C820010 */  lw        $v0, 0x10($a0)
/* 3561F4 E0046314 AD280000 */  sw        $t0, 0x0($t1)
/* 3561F8 E0046318 8C42001C */  lw        $v0, 0x1C($v0)
/* 3561FC E004631C 3C038000 */  lui       $v1, (0x80000000 >> 16)
/* 356200 E0046320 00431021 */  addu      $v0, $v0, $v1
/* 356204 E0046324 AD020004 */  sw        $v0, 0x4($t0)
/* 356208 E0046328 C6620008 */  lwc1      $f2, 0x8($s3)
/* 35620C E004632C C6600024 */  lwc1      $f0, 0x24($s3)
/* 356210 E0046330 25020008 */  addiu     $v0, $t0, 0x8
/* 356214 E0046334 4602003E */  c.le.s    $f0, $f2
/* 356218 E0046338 00000000 */  nop
/* 35621C E004633C 45000032 */  bc1f      .LE0046408
/* 356220 E0046340 AD220000 */   sw       $v0, 0x0($t1)
/* 356224 E0046344 3C047F7F */  lui       $a0, (0x7F7F7F00 >> 16)
/* 356228 E0046348 25020010 */  addiu     $v0, $t0, 0x10
/* 35622C E004634C AD220000 */  sw        $v0, 0x0($t1)
/* 356230 E0046350 3C02DE00 */  lui       $v0, (0xDE000000 >> 16)
/* 356234 E0046354 AD020008 */  sw        $v0, 0x8($t0)
/* 356238 E0046358 25020018 */  addiu     $v0, $t0, 0x18
/* 35623C E004635C AD220000 */  sw        $v0, 0x0($t1)
/* 356240 E0046360 3C02FA00 */  lui       $v0, (0xFA000000 >> 16)
/* 356244 E0046364 3C03E004 */  lui       $v1, (0xE0046614 >> 16)
/* 356248 E0046368 8C636614 */  lw        $v1, (0xE0046614 & 0xFFFF)($v1)
/* 35624C E004636C 34847F00 */  ori       $a0, $a0, (0x7F7F7F00 & 0xFFFF)
/* 356250 E0046370 AD020010 */  sw        $v0, 0x10($t0)
/* 356254 E0046374 AD03000C */  sw        $v1, 0xC($t0)
/* 356258 E0046378 92620017 */  lbu       $v0, 0x17($s3)
/* 35625C E004637C 3C05F200 */  lui       $a1, (0xF2000000 >> 16)
/* 356260 E0046380 00441025 */  or        $v0, $v0, $a0
/* 356264 E0046384 AD020014 */  sw        $v0, 0x14($t0)
/* 356268 E0046388 8E630020 */  lw        $v1, 0x20($s3)
/* 35626C E004638C 27A40020 */  addiu     $a0, $sp, 0x20
/* 356270 E0046390 00031080 */  sll       $v0, $v1, 2
/* 356274 E0046394 30420FFF */  andi      $v0, $v0, 0xFFF
/* 356278 E0046398 00451025 */  or        $v0, $v0, $a1
/* 35627C E004639C 3C050008 */  lui       $a1, (0x80000 >> 16)
/* 356280 E00463A0 24630020 */  addiu     $v1, $v1, 0x20
/* 356284 E00463A4 00031880 */  sll       $v1, $v1, 2
/* 356288 E00463A8 30630FFF */  andi      $v1, $v1, 0xFFF
/* 35628C E00463AC AD020018 */  sw        $v0, 0x18($t0)
/* 356290 E00463B0 3C020100 */  lui       $v0, (0x1000000 >> 16)
/* 356294 E00463B4 00621825 */  or        $v1, $v1, $v0
/* 356298 E00463B8 00651825 */  or        $v1, $v1, $a1
/* 35629C E00463BC AD03001C */  sw        $v1, 0x1C($t0)
/* 3562A0 E00463C0 8E650004 */  lw        $a1, 0x4($s3)
/* 3562A4 E00463C4 8E660008 */  lw        $a2, 0x8($s3)
/* 3562A8 E00463C8 8E67000C */  lw        $a3, 0xC($s3)
/* 3562AC E00463CC 25020020 */  addiu     $v0, $t0, 0x20
/* 3562B0 E00463D0 0C080108 */  jal       shim_guTranslateF
/* 3562B4 E00463D4 AD220000 */   sw       $v0, 0x0($t1)
/* 3562B8 E00463D8 27B00060 */  addiu     $s0, $sp, 0x60
/* 3562BC E00463DC 0200202D */  daddu     $a0, $s0, $zero
/* 3562C0 E00463E0 8E650010 */  lw        $a1, 0x10($s3)
/* 3562C4 E00463E4 3C063F80 */  lui       $a2, (0x3F800000 >> 16)
/* 3562C8 E00463E8 0C080110 */  jal       shim_guScaleF
/* 3562CC E00463EC 00A0382D */   daddu    $a3, $a1, $zero
/* 3562D0 E00463F0 0200202D */  daddu     $a0, $s0, $zero
/* 3562D4 E00463F4 27A50020 */  addiu     $a1, $sp, 0x20
/* 3562D8 E00463F8 0C080114 */  jal       shim_guMtxCatF
/* 3562DC E00463FC 00A0302D */   daddu    $a2, $a1, $zero
/* 3562E0 E0046400 08011936 */  j         .LE00464D8
/* 3562E4 E0046404 3C120001 */   lui      $s2, (0x11630 >> 16)
.LE0046408:
/* 3562E8 E0046408 3C048080 */  lui       $a0, (0x8080FF00 >> 16)
/* 3562EC E004640C 3484FF00 */  ori       $a0, $a0, (0x8080FF00 & 0xFFFF)
/* 3562F0 E0046410 44800000 */  mtc1      $zero, $f0
/* 3562F4 E0046414 25020010 */  addiu     $v0, $t0, 0x10
/* 3562F8 E0046418 AD220000 */  sw        $v0, 0x0($t1)
/* 3562FC E004641C 3C02DE00 */  lui       $v0, (0xDE000000 >> 16)
/* 356300 E0046420 AD020008 */  sw        $v0, 0x8($t0)
/* 356304 E0046424 25020018 */  addiu     $v0, $t0, 0x18
/* 356308 E0046428 AD220000 */  sw        $v0, 0x0($t1)
/* 35630C E004642C 3C03E004 */  lui       $v1, (0xE0046618 >> 16)
/* 356310 E0046430 8C636618 */  lw        $v1, (0xE0046618 & 0xFFFF)($v1)
/* 356314 E0046434 3C02FA00 */  lui       $v0, (0xFA000000 >> 16)
/* 356318 E0046438 AD020010 */  sw        $v0, 0x10($t0)
/* 35631C E004643C AD03000C */  sw        $v1, 0xC($t0)
/* 356320 E0046440 92630017 */  lbu       $v1, 0x17($s3)
/* 356324 E0046444 25020020 */  addiu     $v0, $t0, 0x20
/* 356328 E0046448 AD220000 */  sw        $v0, 0x0($t1)
/* 35632C E004644C 3C02FB00 */  lui       $v0, (0xFB000000 >> 16)
/* 356330 E0046450 AD020018 */  sw        $v0, 0x18($t0)
/* 356334 E0046454 2402FF00 */  addiu     $v0, $zero, -0x100
/* 356338 E0046458 44050000 */  mfc1      $a1, $f0
/* 35633C E004645C 00621825 */  or        $v1, $v1, $v0
/* 356340 E0046460 AD030014 */  sw        $v1, 0x14($t0)
/* 356344 E0046464 92620017 */  lbu       $v0, 0x17($s3)
/* 356348 E0046468 3C038007 */  lui       $v1, %hi(gCurrentCameraID)
/* 35634C E004646C 8C637410 */  lw        $v1, %lo(gCurrentCameraID)($v1)
/* 356350 E0046470 00441025 */  or        $v0, $v0, $a0
/* 356354 E0046474 AD02001C */  sw        $v0, 0x1C($t0)
/* 356358 E0046478 00031080 */  sll       $v0, $v1, 2
/* 35635C E004647C 00431021 */  addu      $v0, $v0, $v1
/* 356360 E0046480 00021080 */  sll       $v0, $v0, 2
/* 356364 E0046484 00431023 */  subu      $v0, $v0, $v1
/* 356368 E0046488 000218C0 */  sll       $v1, $v0, 3
/* 35636C E004648C 00431021 */  addu      $v0, $v0, $v1
/* 356370 E0046490 000210C0 */  sll       $v0, $v0, 3
/* 356374 E0046494 3C01800B */  lui       $at, %hi(gCameras + 0x6C)
/* 356378 E0046498 00220821 */  addu      $at, $at, $v0
/* 35637C E004649C C4221DEC */  lwc1      $f2, %lo(gCameras + 0x6C)($at)
/* 356380 E00464A0 C6600010 */  lwc1      $f0, 0x10($s3)
/* 356384 E00464A4 46001087 */  neg.s     $f2, $f2
/* 356388 E00464A8 E7A00010 */  swc1      $f0, 0x10($sp)
/* 35638C E00464AC C6600004 */  lwc1      $f0, 0x4($s3)
/* 356390 E00464B0 44061000 */  mfc1      $a2, $f2
/* 356394 E00464B4 E7A00014 */  swc1      $f0, 0x14($sp)
/* 356398 E00464B8 C6600008 */  lwc1      $f0, 0x8($s3)
/* 35639C E00464BC 00A0382D */  daddu     $a3, $a1, $zero
/* 3563A0 E00464C0 E7A00018 */  swc1      $f0, 0x18($sp)
/* 3563A4 E00464C4 C660000C */  lwc1      $f0, 0xC($s3)
/* 3563A8 E00464C8 27A40020 */  addiu     $a0, $sp, 0x20
/* 3563AC E00464CC 0C080180 */  jal       shim_guPositionF
/* 3563B0 E00464D0 E7A0001C */   swc1     $f0, 0x1C($sp)
/* 3563B4 E00464D4 3C120001 */  lui       $s2, (0x11630 >> 16)
.LE00464D8:
/* 3563B8 E00464D8 36521630 */  ori       $s2, $s2, (0x11630 & 0xFFFF)
/* 3563BC E00464DC 27A40020 */  addiu     $a0, $sp, 0x20
/* 3563C0 E00464E0 3C108007 */  lui       $s0, %hi(gMatrixListPos)
/* 3563C4 E00464E4 261041F0 */  addiu     $s0, $s0, %lo(gMatrixListPos)
/* 3563C8 E00464E8 3C11800A */  lui       $s1, %hi(gDisplayContext)
/* 3563CC E00464EC 2631A674 */  addiu     $s1, $s1, %lo(gDisplayContext)
/* 3563D0 E00464F0 96050000 */  lhu       $a1, 0x0($s0)
/* 3563D4 E00464F4 8E220000 */  lw        $v0, 0x0($s1)
/* 3563D8 E00464F8 00052980 */  sll       $a1, $a1, 6
/* 3563DC E00464FC 00B22821 */  addu      $a1, $a1, $s2
/* 3563E0 E0046500 0C080118 */  jal       shim_guMtxF2L
/* 3563E4 E0046504 00452821 */   addu     $a1, $v0, $a1
/* 3563E8 E0046508 3C07800A */  lui       $a3, %hi(gMainGfxPos)
/* 3563EC E004650C 24E7A66C */  addiu     $a3, $a3, %lo(gMainGfxPos)
/* 3563F0 E0046510 8CE60000 */  lw        $a2, 0x0($a3)
/* 3563F4 E0046514 00C0282D */  daddu     $a1, $a2, $zero
/* 3563F8 E0046518 24C60008 */  addiu     $a2, $a2, 0x8
/* 3563FC E004651C ACE60000 */  sw        $a2, 0x0($a3)
/* 356400 E0046520 96040000 */  lhu       $a0, 0x0($s0)
/* 356404 E0046524 3C02DA38 */  lui       $v0, (0xDA380000 >> 16)
/* 356408 E0046528 ACA20000 */  sw        $v0, 0x0($a1)
/* 35640C E004652C 8E230000 */  lw        $v1, 0x0($s1)
/* 356410 E0046530 3082FFFF */  andi      $v0, $a0, 0xFFFF
/* 356414 E0046534 00021180 */  sll       $v0, $v0, 6
/* 356418 E0046538 00521021 */  addu      $v0, $v0, $s2
/* 35641C E004653C 00621821 */  addu      $v1, $v1, $v0
/* 356420 E0046540 ACA30004 */  sw        $v1, 0x4($a1)
/* 356424 E0046544 C6620008 */  lwc1      $f2, 0x8($s3)
/* 356428 E0046548 C6600024 */  lwc1      $f0, 0x24($s3)
/* 35642C E004654C 24840001 */  addiu     $a0, $a0, 0x1
/* 356430 E0046550 4602003E */  c.le.s    $f0, $f2
/* 356434 E0046554 00000000 */  nop
/* 356438 E0046558 45000007 */  bc1f      .LE0046578
/* 35643C E004655C A6040000 */   sh       $a0, 0x0($s0)
/* 356440 E0046560 3C02DE00 */  lui       $v0, (0xDE000000 >> 16)
/* 356444 E0046564 ACC20000 */  sw        $v0, 0x0($a2)
/* 356448 E0046568 3C03E004 */  lui       $v1, (0xE0046600 >> 16)
/* 35644C E004656C 8C636600 */  lw        $v1, (0xE0046600 & 0xFFFF)($v1)
/* 356450 E0046570 08011966 */  j         .LE0046598
/* 356454 E0046574 24C20008 */   addiu    $v0, $a2, 0x8
.LE0046578:
/* 356458 E0046578 3C02DE00 */  lui       $v0, (0xDE000000 >> 16)
/* 35645C E004657C ACC20000 */  sw        $v0, 0x0($a2)
/* 356460 E0046580 00141040 */  sll       $v0, $s4, 1
/* 356464 E0046584 3042000C */  andi      $v0, $v0, 0xC
/* 356468 E0046588 3C03E004 */  lui       $v1, (0xE0046604 >> 16)
/* 35646C E004658C 00621821 */  addu      $v1, $v1, $v0
/* 356470 E0046590 8C636604 */  lw        $v1, (0xE0046604 & 0xFFFF)($v1)
/* 356474 E0046594 24C20008 */  addiu     $v0, $a2, 0x8
.LE0046598:
/* 356478 E0046598 ACE20000 */  sw        $v0, 0x0($a3)
/* 35647C E004659C ACC30004 */  sw        $v1, 0x4($a2)
/* 356480 E00465A0 3C03D838 */  lui       $v1, (0xD8380002 >> 16)
/* 356484 E00465A4 3C04800A */  lui       $a0, %hi(gMainGfxPos)
/* 356488 E00465A8 2484A66C */  addiu     $a0, $a0, %lo(gMainGfxPos)
/* 35648C E00465AC 8C820000 */  lw        $v0, 0x0($a0)
/* 356490 E00465B0 34630002 */  ori       $v1, $v1, (0xD8380002 & 0xFFFF)
/* 356494 E00465B4 0040282D */  daddu     $a1, $v0, $zero
/* 356498 E00465B8 24420008 */  addiu     $v0, $v0, 0x8
/* 35649C E00465BC AC820000 */  sw        $v0, 0x0($a0)
/* 3564A0 E00465C0 ACA30000 */  sw        $v1, 0x0($a1)
/* 3564A4 E00465C4 24030040 */  addiu     $v1, $zero, 0x40
/* 3564A8 E00465C8 ACA30004 */  sw        $v1, 0x4($a1)
/* 3564AC E00465CC 24430008 */  addiu     $v1, $v0, 0x8
/* 3564B0 E00465D0 AC830000 */  sw        $v1, 0x0($a0)
/* 3564B4 E00465D4 3C03E700 */  lui       $v1, (0xE7000000 >> 16)
/* 3564B8 E00465D8 AC430000 */  sw        $v1, 0x0($v0)
/* 3564BC E00465DC AC400004 */  sw        $zero, 0x4($v0)
/* 3564C0 E00465E0 8FBF00B4 */  lw        $ra, 0xB4($sp)
/* 3564C4 E00465E4 8FB400B0 */  lw        $s4, 0xB0($sp)
/* 3564C8 E00465E8 8FB300AC */  lw        $s3, 0xAC($sp)
/* 3564CC E00465EC 8FB200A8 */  lw        $s2, 0xA8($sp)
/* 3564D0 E00465F0 8FB100A4 */  lw        $s1, 0xA4($sp)
/* 3564D4 E00465F4 8FB000A0 */  lw        $s0, 0xA0($sp)
/* 3564D8 E00465F8 03E00008 */  jr        $ra
/* 3564DC E00465FC 27BD00B8 */   addiu    $sp, $sp, 0xB8

### DECOMPILED C INSTRUCTIONS:

void rising_bubble_appendGfx(void* effect) {
    RisingBubbleFXData* data = ((EffectInstance*)effect)->data.risingBubble;
    s32 lifeTime = data->lifeTime;
    Matrix4f sp20;
    Matrix4f sp60;

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

    if (data->pos.y >= data->unk_24) {
        s32 uls;
        s32 ult;

        gSPDisplayList(gMainGfxPos++, D_E0046614[0]);
        gDPSetPrimColor(gMainGfxPos++, 0, 0, 127, 127, 127, data->unk_14);

        uls = 0;
        ult = data->unk_20;

        gDPSetTileSize(gMainGfxPos++, 1,
            (uls     ) * 4, (ult     ) * 4,
            (uls + 32) * 4, (ult + 32) * 4);

        shim_guTranslateF(sp20, data->pos.x, data->pos.y, data->pos.z);
        shim_guScaleF(sp60, data->unk_10, 1.0f, data->unk_10);
        shim_guMtxCatF(sp60, sp20, sp20);
    } else {
        gSPDisplayList(gMainGfxPos++, D_E0046618[0]);
        gDPSetPrimColor(gMainGfxPos++, 0, 0, 255, 255, 255, data->unk_14);
        gDPSetEnvColor(gMainGfxPos++, 128, 128, 255, data->unk_14);

        shim_guPositionF(sp20, 0.0f, -gCameras[gCurrentCameraID].currentYaw, 0.0f, data->unk_10, data->pos.x, data->pos.y, data->pos.z);
    }

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

    if (data->pos.y >= data->unk_24) {
        gSPDisplayList(gMainGfxPos++, D_E0046600[0]);
    } else {
        gSPDisplayList(gMainGfxPos++, D_E0046604[(lifeTime >> 1) & 3]);
    }

    gSPPopMatrix(gMainGfxPos++, G_MTX_MODELVIEW);
    gDPPipeSync(gMainGfxPos++);
}


### RAW ASSEMBLY INSTRUCTIONS:

glabel UpdatePushBlockMotion
/* 7E375C 802828DC 27BDFFC0 */  addiu     $sp, $sp, -0x40
/* 7E3760 802828E0 AFB20018 */  sw        $s2, 0x18($sp)
/* 7E3764 802828E4 0080902D */  daddu     $s2, $a0, $zero
/* 7E3768 802828E8 AFBF0020 */  sw        $ra, 0x20($sp)
/* 7E376C 802828EC AFB3001C */  sw        $s3, 0x1C($sp)
/* 7E3770 802828F0 AFB10014 */  sw        $s1, 0x14($sp)
/* 7E3774 802828F4 AFB00010 */  sw        $s0, 0x10($sp)
/* 7E3778 802828F8 F7B80038 */  sdc1      $f24, 0x38($sp)
/* 7E377C 802828FC F7B60030 */  sdc1      $f22, 0x30($sp)
/* 7E3780 80282900 F7B40028 */  sdc1      $f20, 0x28($sp)
/* 7E3784 80282904 8E4400B0 */  lw        $a0, 0xB0($s2)
/* 7E3788 80282908 0C04417A */  jal       get_entity_by_index
/* 7E378C 8028290C 00A0802D */   daddu    $s0, $a1, $zero
/* 7E3790 80282910 3C138011 */  lui       $s3, %hi(gPlayerStatus)
/* 7E3794 80282914 2673EFC8 */  addiu     $s3, $s3, %lo(gPlayerStatus)
/* 7E3798 80282918 1200001A */  beqz      $s0, .L80282984
/* 7E379C 8028291C 0040882D */   daddu    $s1, $v0, $zero
/* 7E37A0 80282920 AE400070 */  sw        $zero, 0x70($s2)
/* 7E37A4 80282924 C6600028 */  lwc1      $f0, 0x28($s3)
/* 7E37A8 80282928 4600018D */  trunc.w.s $f6, $f0
/* 7E37AC 8028292C E6460084 */  swc1      $f6, 0x84($s2)
/* 7E37B0 80282930 C660002C */  lwc1      $f0, 0x2C($s3)
/* 7E37B4 80282934 4600018D */  trunc.w.s $f6, $f0
/* 7E37B8 80282938 E6460088 */  swc1      $f6, 0x88($s2)
/* 7E37BC 8028293C C6600030 */  lwc1      $f0, 0x30($s3)
/* 7E37C0 80282940 4600018D */  trunc.w.s $f6, $f0
/* 7E37C4 80282944 E646008C */  swc1      $f6, 0x8C($s2)
/* 7E37C8 80282948 C6200048 */  lwc1      $f0, 0x48($s1)
/* 7E37CC 8028294C 4600018D */  trunc.w.s $f6, $f0
/* 7E37D0 80282950 E6460090 */  swc1      $f6, 0x90($s2)
/* 7E37D4 80282954 C620004C */  lwc1      $f0, 0x4C($s1)
/* 7E37D8 80282958 4600018D */  trunc.w.s $f6, $f0
/* 7E37DC 8028295C E6460094 */  swc1      $f6, 0x94($s2)
/* 7E37E0 80282960 C6200050 */  lwc1      $f0, 0x50($s1)
/* 7E37E4 80282964 4600018D */  trunc.w.s $f6, $f0
/* 7E37E8 80282968 E6460098 */  swc1      $f6, 0x98($s2)
/* 7E37EC 8028296C C6200060 */  lwc1      $f0, 0x60($s1)
/* 7E37F0 80282970 4600018D */  trunc.w.s $f6, $f0
/* 7E37F4 80282974 E64600A8 */  swc1      $f6, 0xA8($s2)
/* 7E37F8 80282978 C6200068 */  lwc1      $f0, 0x68($s1)
/* 7E37FC 8028297C 4600018D */  trunc.w.s $f6, $f0
/* 7E3800 80282980 E64600B4 */  swc1      $f6, 0xB4($s2)
.L80282984:
/* 7E3804 80282984 8E420070 */  lw        $v0, 0x70($s2)
/* 7E3808 80282988 00021080 */  sll       $v0, $v0, 2
/* 7E380C 8028298C 3C018028 */  lui       $at, %hi(D_80285640)
/* 7E3810 80282990 00220821 */  addu      $at, $at, $v0
/* 7E3814 80282994 C4245640 */  lwc1      $f4, %lo(D_80285640)($at)
/* 7E3818 80282998 C642009C */  lwc1      $f2, 0x9C($s2)
/* 7E381C 8028299C 468010A0 */  cvt.s.w   $f2, $f2
/* 7E3820 802829A0 46041082 */  mul.s     $f2, $f2, $f4
/* 7E3824 802829A4 00000000 */  nop
/* 7E3828 802829A8 3C0141C8 */  lui       $at, (0x41C80000 >> 16)
/* 7E382C 802829AC 4481C000 */  mtc1      $at, $f24
/* 7E3830 802829B0 00000000 */  nop
/* 7E3834 802829B4 46181082 */  mul.s     $f2, $f2, $f24
/* 7E3838 802829B8 00000000 */  nop
/* 7E383C 802829BC C6400084 */  lwc1      $f0, 0x84($s2)
/* 7E3840 802829C0 46800020 */  cvt.s.w   $f0, $f0
/* 7E3844 802829C4 46020000 */  add.s     $f0, $f0, $f2
/* 7E3848 802829C8 E6600028 */  swc1      $f0, 0x28($s3)
/* 7E384C 802829CC C64200A0 */  lwc1      $f2, 0xA0($s2)
/* 7E3850 802829D0 468010A0 */  cvt.s.w   $f2, $f2
/* 7E3854 802829D4 46041082 */  mul.s     $f2, $f2, $f4
/* 7E3858 802829D8 00000000 */  nop
/* 7E385C 802829DC 46181082 */  mul.s     $f2, $f2, $f24
/* 7E3860 802829E0 00000000 */  nop
/* 7E3864 802829E4 C6400088 */  lwc1      $f0, 0x88($s2)
/* 7E3868 802829E8 46800020 */  cvt.s.w   $f0, $f0
/* 7E386C 802829EC 46020000 */  add.s     $f0, $f0, $f2
/* 7E3870 802829F0 E660002C */  swc1      $f0, 0x2C($s3)
/* 7E3874 802829F4 C64200A4 */  lwc1      $f2, 0xA4($s2)
/* 7E3878 802829F8 468010A0 */  cvt.s.w   $f2, $f2
/* 7E387C 802829FC 46041082 */  mul.s     $f2, $f2, $f4
/* 7E3880 80282A00 00000000 */  nop
/* 7E3884 80282A04 46181082 */  mul.s     $f2, $f2, $f24
/* 7E3888 80282A08 00000000 */  nop
/* 7E388C 80282A0C C640008C */  lwc1      $f0, 0x8C($s2)
/* 7E3890 80282A10 46800020 */  cvt.s.w   $f0, $f0
/* 7E3894 80282A14 46020000 */  add.s     $f0, $f0, $f2
/* 7E3898 80282A18 E6600030 */  swc1      $f0, 0x30($s3)
/* 7E389C 80282A1C C642009C */  lwc1      $f2, 0x9C($s2)
/* 7E38A0 80282A20 468010A0 */  cvt.s.w   $f2, $f2
/* 7E38A4 80282A24 46041082 */  mul.s     $f2, $f2, $f4
/* 7E38A8 80282A28 00000000 */  nop
/* 7E38AC 80282A2C 46181082 */  mul.s     $f2, $f2, $f24
/* 7E38B0 80282A30 00000000 */  nop
/* 7E38B4 80282A34 C6400090 */  lwc1      $f0, 0x90($s2)
/* 7E38B8 80282A38 46800020 */  cvt.s.w   $f0, $f0
/* 7E38BC 80282A3C 46020000 */  add.s     $f0, $f0, $f2
/* 7E38C0 80282A40 E6200048 */  swc1      $f0, 0x48($s1)
/* 7E38C4 80282A44 C64200A0 */  lwc1      $f2, 0xA0($s2)
/* 7E38C8 80282A48 468010A0 */  cvt.s.w   $f2, $f2
/* 7E38CC 80282A4C 46041082 */  mul.s     $f2, $f2, $f4
/* 7E38D0 80282A50 00000000 */  nop
/* 7E38D4 80282A54 46181082 */  mul.s     $f2, $f2, $f24
/* 7E38D8 80282A58 00000000 */  nop
/* 7E38DC 80282A5C C6400094 */  lwc1      $f0, 0x94($s2)
/* 7E38E0 80282A60 46800020 */  cvt.s.w   $f0, $f0
/* 7E38E4 80282A64 46020000 */  add.s     $f0, $f0, $f2
/* 7E38E8 80282A68 E620004C */  swc1      $f0, 0x4C($s1)
/* 7E38EC 80282A6C C64200A4 */  lwc1      $f2, 0xA4($s2)
/* 7E38F0 80282A70 468010A0 */  cvt.s.w   $f2, $f2
/* 7E38F4 80282A74 46041082 */  mul.s     $f2, $f2, $f4
/* 7E38F8 80282A78 00000000 */  nop
/* 7E38FC 80282A7C 46181082 */  mul.s     $f2, $f2, $f24
/* 7E3900 80282A80 00000000 */  nop
/* 7E3904 80282A84 C6400098 */  lwc1      $f0, 0x98($s2)
/* 7E3908 80282A88 46800020 */  cvt.s.w   $f0, $f0
/* 7E390C 80282A8C 46020000 */  add.s     $f0, $f0, $f2
/* 7E3910 80282A90 E6200050 */  swc1      $f0, 0x50($s1)
/* 7E3914 80282A94 8E420070 */  lw        $v0, 0x70($s2)
/* 7E3918 80282A98 2842000C */  slti      $v0, $v0, 0xC
/* 7E391C 80282A9C 1040004D */  beqz      $v0, .L80282BD4
/* 7E3920 80282AA0 00000000 */   nop
/* 7E3924 80282AA4 C642009C */  lwc1      $f2, 0x9C($s2)
/* 7E3928 80282AA8 468010A0 */  cvt.s.w   $f2, $f2
/* 7E392C 80282AAC 46041082 */  mul.s     $f2, $f2, $f4
/* 7E3930 80282AB0 00000000 */  nop
/* 7E3934 80282AB4 3C01C2B4 */  lui       $at, (0xC2B40000 >> 16)
/* 7E3938 80282AB8 44810000 */  mtc1      $at, $f0
/* 7E393C 80282ABC 00000000 */  nop
/* 7E3940 80282AC0 46001082 */  mul.s     $f2, $f2, $f0
/* 7E3944 80282AC4 00000000 */  nop
/* 7E3948 80282AC8 C64000B4 */  lwc1      $f0, 0xB4($s2)
/* 7E394C 80282ACC 46800020 */  cvt.s.w   $f0, $f0
/* 7E3950 80282AD0 46020000 */  add.s     $f0, $f0, $f2
/* 7E3954 80282AD4 E6200068 */  swc1      $f0, 0x68($s1)
/* 7E3958 80282AD8 C64200A4 */  lwc1      $f2, 0xA4($s2)
/* 7E395C 80282ADC 468010A0 */  cvt.s.w   $f2, $f2
/* 7E3960 80282AE0 46041082 */  mul.s     $f2, $f2, $f4
/* 7E3964 80282AE4 00000000 */  nop
/* 7E3968 80282AE8 3C0142B4 */  lui       $at, (0x42B40000 >> 16)
/* 7E396C 80282AEC 4481B000 */  mtc1      $at, $f22
/* 7E3970 80282AF0 00000000 */  nop
/* 7E3974 80282AF4 46161082 */  mul.s     $f2, $f2, $f22
/* 7E3978 80282AF8 00000000 */  nop
/* 7E397C 80282AFC 46162582 */  mul.s     $f22, $f4, $f22
/* 7E3980 80282B00 00000000 */  nop
/* 7E3984 80282B04 C64000A8 */  lwc1      $f0, 0xA8($s2)
/* 7E3988 80282B08 46800020 */  cvt.s.w   $f0, $f0
/* 7E398C 80282B0C 46020000 */  add.s     $f0, $f0, $f2
/* 7E3990 80282B10 4600B306 */  mov.s     $f12, $f22
/* 7E3994 80282B14 0C00A8BB */  jal       sin_deg
/* 7E3998 80282B18 E6200060 */   swc1     $f0, 0x60($s1)
/* 7E399C 80282B1C 46180002 */  mul.s     $f0, $f0, $f24
/* 7E39A0 80282B20 00000000 */  nop
/* 7E39A4 80282B24 3C013FE0 */  lui       $at, (0x3FE00000 >> 16)
/* 7E39A8 80282B28 4481A800 */  mtc1      $at, $f21
/* 7E39AC 80282B2C 4480A000 */  mtc1      $zero, $f20
/* 7E39B0 80282B30 46000021 */  cvt.d.s   $f0, $f0
/* 7E39B4 80282B34 46340002 */  mul.d     $f0, $f0, $f20
/* 7E39B8 80282B38 00000000 */  nop
/* 7E39BC 80282B3C C622004C */  lwc1      $f2, 0x4C($s1)
/* 7E39C0 80282B40 460010A1 */  cvt.d.s   $f2, $f2
/* 7E39C4 80282B44 46201080 */  add.d     $f2, $f2, $f0
/* 7E39C8 80282B48 4600B306 */  mov.s     $f12, $f22
/* 7E39CC 80282B4C 462010A0 */  cvt.s.d   $f2, $f2
/* 7E39D0 80282B50 0C00A8BB */  jal       sin_deg
/* 7E39D4 80282B54 E622004C */   swc1     $f2, 0x4C($s1)
/* 7E39D8 80282B58 C642009C */  lwc1      $f2, 0x9C($s2)
/* 7E39DC 80282B5C 468010A0 */  cvt.s.w   $f2, $f2
/* 7E39E0 80282B60 46001082 */  mul.s     $f2, $f2, $f0
/* 7E39E4 80282B64 00000000 */  nop
/* 7E39E8 80282B68 46181082 */  mul.s     $f2, $f2, $f24
/* 7E39EC 80282B6C 00000000 */  nop
/* 7E39F0 80282B70 460010A1 */  cvt.d.s   $f2, $f2
/* 7E39F4 80282B74 46341082 */  mul.d     $f2, $f2, $f20
/* 7E39F8 80282B78 00000000 */  nop
/* 7E39FC 80282B7C C6200048 */  lwc1      $f0, 0x48($s1)
/* 7E3A00 80282B80 46000021 */  cvt.d.s   $f0, $f0
/* 7E3A04 80282B84 46220001 */  sub.d     $f0, $f0, $f2
/* 7E3A08 80282B88 4600B306 */  mov.s     $f12, $f22
/* 7E3A0C 80282B8C 46200020 */  cvt.s.d   $f0, $f0
/* 7E3A10 80282B90 0C00A8BB */  jal       sin_deg
/* 7E3A14 80282B94 E6200048 */   swc1     $f0, 0x48($s1)
bActorTattles:
/* 7E3A18 80282B98 C64200A4 */  lwc1      $f2, 0xA4($s2)
/* 7E3A1C 80282B9C 468010A0 */  cvt.s.w   $f2, $f2
/* 7E3A20 80282BA0 46001082 */  mul.s     $f2, $f2, $f0
/* 7E3A24 80282BA4 00000000 */  nop
/* 7E3A28 80282BA8 46181082 */  mul.s     $f2, $f2, $f24
/* 7E3A2C 80282BAC 00000000 */  nop
/* 7E3A30 80282BB0 460010A1 */  cvt.d.s   $f2, $f2
/* 7E3A34 80282BB4 46341082 */  mul.d     $f2, $f2, $f20
/* 7E3A38 80282BB8 00000000 */  nop
/* 7E3A3C 80282BBC C6200050 */  lwc1      $f0, 0x50($s1)
/* 7E3A40 80282BC0 46000021 */  cvt.d.s   $f0, $f0
/* 7E3A44 80282BC4 46220001 */  sub.d     $f0, $f0, $f2
/* 7E3A48 80282BC8 46200020 */  cvt.s.d   $f0, $f0
/* 7E3A4C 80282BCC 080A0AF9 */  j         .L80282BE4
/* 7E3A50 80282BD0 E6200050 */   swc1     $f0, 0x50($s1)
.L80282BD4:
/* 7E3A54 80282BD4 44800000 */  mtc1      $zero, $f0
/* 7E3A58 80282BD8 00000000 */  nop
/* 7E3A5C 80282BDC E6200060 */  swc1      $f0, 0x60($s1)
/* 7E3A60 80282BE0 E6200068 */  swc1      $f0, 0x68($s1)
.L80282BE4:
/* 7E3A64 80282BE4 C6600028 */  lwc1      $f0, 0x28($s3)
/* 7E3A68 80282BE8 C662002C */  lwc1      $f2, 0x2C($s3)
/* 7E3A6C 80282BEC C6640030 */  lwc1      $f4, 0x30($s3)
/* 7E3A70 80282BF0 3C02800B */  lui       $v0, %hi(gCameras)
/* 7E3A74 80282BF4 24421D80 */  addiu     $v0, $v0, %lo(gCameras)
/* 7E3A78 80282BF8 E4400060 */  swc1      $f0, 0x60($v0)
/* 7E3A7C 80282BFC E4420064 */  swc1      $f2, 0x64($v0)
/* 7E3A80 80282C00 E4440068 */  swc1      $f4, 0x68($v0)
/* 7E3A84 80282C04 8E430070 */  lw        $v1, 0x70($s2)
/* 7E3A88 80282C08 24630001 */  addiu     $v1, $v1, 0x1
/* 7E3A8C 80282C0C 3862000D */  xori      $v0, $v1, 0xD
/* 7E3A90 80282C10 AE430070 */  sw        $v1, 0x70($s2)
/* 7E3A94 80282C14 8FBF0020 */  lw        $ra, 0x20($sp)
/* 7E3A98 80282C18 8FB3001C */  lw        $s3, 0x1C($sp)
/* 7E3A9C 80282C1C 8FB20018 */  lw        $s2, 0x18($sp)
/* 7E3AA0 80282C20 8FB10014 */  lw        $s1, 0x14($sp)
/* 7E3AA4 80282C24 8FB00010 */  lw        $s0, 0x10($sp)
/* 7E3AA8 80282C28 D7B80038 */  ldc1      $f24, 0x38($sp)
/* 7E3AAC 80282C2C D7B60030 */  ldc1      $f22, 0x30($sp)
/* 7E3AB0 80282C30 D7B40028 */  ldc1      $f20, 0x28($sp)
/* 7E3AB4 80282C34 2C420001 */  sltiu     $v0, $v0, 0x1
/* 7E3AB8 80282C38 03E00008 */  jr        $ra
/* 7E3ABC 80282C3C 27BD0040 */   addiu    $sp, $sp, 0x40

### DECOMPILED C INSTRUCTIONS:

API_CALLABLE(UpdatePushBlockMotion) {
    PlayerStatus* playerStatus = &gPlayerStatus;
    Entity* entity = get_entity_by_index(script->varTable[11]);
    f32 moveRatio;

    if (isInitialCall) {
        script->functionTemp[0] = 0;
        script->varTable[0] = playerStatus->position.x;
        script->varTable[1] = playerStatus->position.y;
        script->varTable[2] = playerStatus->position.z;
        script->varTable[3] = entity->position.x;
        script->varTable[4] = entity->position.y;
        script->varTable[5] = entity->position.z;
        script->varTable[9] = entity->rotation.x;
        script->varTable[12] = entity->rotation.z;
    }

    moveRatio = PushBlockMovePositions[script->functionTemp[0]];
    playerStatus->position.x = script->varTable[0] + (script->varTable[6] * moveRatio * BLOCK_GRID_SIZE);
    playerStatus->position.y = script->varTable[1] + (script->varTable[7] * moveRatio * BLOCK_GRID_SIZE);
    playerStatus->position.z = script->varTable[2] + (script->varTable[8] * moveRatio * BLOCK_GRID_SIZE);
    entity->position.x = script->varTable[3] + (script->varTable[6] * moveRatio * BLOCK_GRID_SIZE);
    entity->position.y = script->varTable[4] + (script->varTable[7] * moveRatio * BLOCK_GRID_SIZE);
    entity->position.z = script->varTable[5] + (script->varTable[8] * moveRatio * BLOCK_GRID_SIZE);

    if (script->functionTemp[0] < 12) {
        entity->rotation.z = script->varTable[12] + (script->varTable[6] * moveRatio * -90.0f);
        entity->rotation.x = script->varTable[9] + (script->varTable[8] * moveRatio * 90.0f);
        entity->position.y = entity->position.y + (sin_deg(moveRatio * 90.0f) * BLOCK_GRID_SIZE * 0.5);
        entity->position.x = entity->position.x - (script->varTable[6] * sin_deg(moveRatio * 90.0f) * BLOCK_GRID_SIZE * 0.5);
        entity->position.z = entity->position.z - (script->varTable[8] * sin_deg(moveRatio * 90.0f) * BLOCK_GRID_SIZE * 0.5);
    } else {
        entity->rotation.z = entity->rotation.x = 0.0f;
    }

    gCameras[CAM_DEFAULT].targetPos.x = playerStatus->position.x;
    gCameras[CAM_DEFAULT].targetPos.y = playerStatus->position.y;
    gCameras[CAM_DEFAULT].targetPos.z = playerStatus->position.z;

    script->functionTemp[0]++;
    if (script->functionTemp[0] == ARRAY_COUNT(PushBlockMovePositions)) {
        return ApiStatus_DONE1;
    }
    return ApiStatus_BLOCK;
}


### RAW ASSEMBLY INSTRUCTIONS:

glabel star_update
/* 331CB8 E001E378 27BDFFC0 */  addiu     $sp, $sp, -0x40
/* 331CBC E001E37C AFB1002C */  sw        $s1, 0x2C($sp)
/* 331CC0 E001E380 0080882D */  daddu     $s1, $a0, $zero
/* 331CC4 E001E384 AFBF0030 */  sw        $ra, 0x30($sp)
/* 331CC8 E001E388 AFB00028 */  sw        $s0, 0x28($sp)
/* 331CCC E001E38C F7B40038 */  sdc1      $f20, 0x38($sp)
/* 331CD0 E001E390 8E30000C */  lw        $s0, 0xC($s1)
/* 331CD4 E001E394 8E020038 */  lw        $v0, 0x38($s0)
/* 331CD8 E001E398 28420002 */  slti      $v0, $v0, 0x2
/* 331CDC E001E39C 144000AF */  bnez      $v0, .LE001E65C
/* 331CE0 E001E3A0 00000000 */   nop
/* 331CE4 E001E3A4 C6040010 */  lwc1      $f4, 0x10($s0)
/* 331CE8 E001E3A8 46042102 */  mul.s     $f4, $f4, $f4
/* 331CEC E001E3AC 00000000 */  nop
/* 331CF0 E001E3B0 C6020014 */  lwc1      $f2, 0x14($s0)
/* 331CF4 E001E3B4 46021082 */  mul.s     $f2, $f2, $f2
/* 331CF8 E001E3B8 00000000 */  nop
/* 331CFC E001E3BC C6000018 */  lwc1      $f0, 0x18($s0)
/* 331D00 E001E3C0 46000002 */  mul.s     $f0, $f0, $f0
/* 331D04 E001E3C4 00000000 */  nop
/* 331D08 E001E3C8 46022100 */  add.s     $f4, $f4, $f2
/* 331D0C E001E3CC 46002300 */  add.s     $f12, $f4, $f0
/* 331D10 E001E3D0 3C013C23 */  lui       $at, (0x3C23D70A >> 16)
/* 331D14 E001E3D4 3421D70A */  ori       $at, $at, (0x3C23D70A & 0xFFFF)
/* 331D18 E001E3D8 44810000 */  mtc1      $at, $f0
/* 331D1C E001E3DC 00000000 */  nop
/* 331D20 E001E3E0 460C003C */  c.lt.s    $f0, $f12
/* 331D24 E001E3E4 00000000 */  nop
/* 331D28 E001E3E8 45000008 */  bc1f      .LE001E40C
/* 331D2C E001E3EC E7AC0024 */   swc1     $f12, 0x24($sp)
/* 331D30 E001E3F0 0C080154 */  jal       shim_sqrtf
/* 331D34 E001E3F4 00000000 */   nop
/* 331D38 E001E3F8 3C013F80 */  lui       $at, (0x3F800000 >> 16)
/* 331D3C E001E3FC 44811000 */  mtc1      $at, $f2
/* 331D40 E001E400 00000000 */  nop
/* 331D44 E001E404 46001083 */  div.s     $f2, $f2, $f0
/* 331D48 E001E408 E7A20024 */  swc1      $f2, 0x24($sp)
.LE001E40C:
/* 331D4C E001E40C C60A0010 */  lwc1      $f10, 0x10($s0)
/* 331D50 E001E410 C7A00024 */  lwc1      $f0, 0x24($sp)
/* 331D54 E001E414 46005282 */  mul.s     $f10, $f10, $f0
/* 331D58 E001E418 00000000 */  nop
/* 331D5C E001E41C C6040014 */  lwc1      $f4, 0x14($s0)
/* 331D60 E001E420 46002102 */  mul.s     $f4, $f4, $f0
/* 331D64 E001E424 00000000 */  nop
/* 331D68 E001E428 C6060018 */  lwc1      $f6, 0x18($s0)
/* 331D6C E001E42C 46003182 */  mul.s     $f6, $f6, $f0
/* 331D70 E001E430 00000000 */  nop
/* 331D74 E001E434 3C014200 */  lui       $at, (0x42000000 >> 16)
/* 331D78 E001E438 44811000 */  mtc1      $at, $f2
/* 331D7C E001E43C 00000000 */  nop
/* 331D80 E001E440 46025282 */  mul.s     $f10, $f10, $f2
/* 331D84 E001E444 00000000 */  nop
/* 331D88 E001E448 46022102 */  mul.s     $f4, $f4, $f2
/* 331D8C E001E44C 00000000 */  nop
/* 331D90 E001E450 46023182 */  mul.s     $f6, $f6, $f2
/* 331D94 E001E454 00000000 */  nop
/* 331D98 E001E458 C6080004 */  lwc1      $f8, 0x4($s0)
/* 331D9C E001E45C 3C014280 */  lui       $at, (0x42800000 >> 16)
/* 331DA0 E001E460 44810000 */  mtc1      $at, $f0
/* 331DA4 E001E464 C6020008 */  lwc1      $f2, 0x8($s0)
/* 331DA8 E001E468 460A4201 */  sub.s     $f8, $f8, $f10
/* 331DAC E001E46C E7A00024 */  swc1      $f0, 0x24($sp)
/* 331DB0 E001E470 46041081 */  sub.s     $f2, $f2, $f4
/* 331DB4 E001E474 C600000C */  lwc1      $f0, 0xC($s0)
/* 331DB8 E001E478 8E020000 */  lw        $v0, 0x0($s0)
/* 331DBC E001E47C 46060001 */  sub.s     $f0, $f0, $f6
/* 331DC0 E001E480 E7A80018 */  swc1      $f8, 0x18($sp)
/* 331DC4 E001E484 E7A2001C */  swc1      $f2, 0x1C($sp)
/* 331DC8 E001E488 1040005C */  beqz      $v0, .LE001E5FC
/* 331DCC E001E48C E7A00020 */   swc1     $f0, 0x20($sp)
/* 331DD0 E001E490 C6000014 */  lwc1      $f0, 0x14($s0)
/* 331DD4 E001E494 4480A000 */  mtc1      $zero, $f20
/* 331DD8 E001E498 00000000 */  nop
/* 331DDC E001E49C 4614003C */  c.lt.s    $f0, $f20
/* 331DE0 E001E4A0 00000000 */  nop
/* 331DE4 E001E4A4 45000055 */  bc1f      .LE001E5FC
/* 331DE8 E001E4A8 27A20024 */   addiu    $v0, $sp, 0x24
/* 331DEC E001E4AC AFA20010 */  sw        $v0, 0x10($sp)
/* 331DF0 E001E4B0 0000202D */  daddu     $a0, $zero, $zero
/* 331DF4 E001E4B4 27A50018 */  addiu     $a1, $sp, 0x18
/* 331DF8 E001E4B8 27A6001C */  addiu     $a2, $sp, 0x1C
/* 331DFC E001E4BC 0C08014C */  jal       shim_npc_raycast_down_sides
/* 331E00 E001E4C0 27A70020 */   addiu    $a3, $sp, 0x20
/* 331E04 E001E4C4 1040004D */  beqz      $v0, .LE001E5FC
/* 331E08 E001E4C8 00000000 */   nop
/* 331E0C E001E4CC C7A20024 */  lwc1      $f2, 0x24($sp)
/* 331E10 E001E4D0 3C014228 */  lui       $at, (0x42280000 >> 16)
/* 331E14 E001E4D4 44810000 */  mtc1      $at, $f0
/* 331E18 E001E4D8 00000000 */  nop
/* 331E1C E001E4DC 4600103C */  c.lt.s    $f2, $f0
/* 331E20 E001E4E0 00000000 */  nop
/* 331E24 E001E4E4 45000045 */  bc1f      .LE001E5FC
/* 331E28 E001E4E8 24040006 */   addiu    $a0, $zero, 0x6
/* 331E2C E001E4EC C6040014 */  lwc1      $f4, 0x14($s0)
/* 331E30 E001E4F0 3C01E002 */  lui       $at, (0xE0020000 >> 16)
/* 331E34 E001E4F4 D420ED50 */  ldc1      $f0, -0x12B0($at)
/* 331E38 E001E4F8 46002107 */  neg.s     $f4, $f4
/* 331E3C E001E4FC 46002121 */  cvt.d.s   $f4, $f4
/* 331E40 E001E500 46202102 */  mul.d     $f4, $f4, $f0
/* 331E44 E001E504 00000000 */  nop
/* 331E48 E001E508 C6060010 */  lwc1      $f6, 0x10($s0)
/* 331E4C E001E50C 3C01E002 */  lui       $at, (0xE0020000 >> 16)
/* 331E50 E001E510 D428ED58 */  ldc1      $f8, -0x12A8($at)
/* 331E54 E001E514 460031A1 */  cvt.d.s   $f6, $f6
/* 331E58 E001E518 46283182 */  mul.d     $f6, $f6, $f8
/* 331E5C E001E51C 00000000 */  nop
/* 331E60 E001E520 C6020034 */  lwc1      $f2, 0x34($s0)
/* 331E64 E001E524 460010A1 */  cvt.d.s   $f2, $f2
/* 331E68 E001E528 46281082 */  mul.d     $f2, $f2, $f8
/* 331E6C E001E52C 00000000 */  nop
/* 331E70 E001E530 C60A001C */  lwc1      $f10, 0x1C($s0)
/* 331E74 E001E534 3C013F80 */  lui       $at, (0x3F800000 >> 16)
/* 331E78 E001E538 44810000 */  mtc1      $at, $f0
/* 331E7C E001E53C 00000000 */  nop
/* 331E80 E001E540 46005280 */  add.s     $f10, $f10, $f0
/* 331E84 E001E544 C600002C */  lwc1      $f0, 0x2C($s0)
/* 331E88 E001E548 46000021 */  cvt.d.s   $f0, $f0
/* 331E8C E001E54C 46280002 */  mul.d     $f0, $f0, $f8
/* 331E90 E001E550 00000000 */  nop
/* 331E94 E001E554 E60A001C */  swc1      $f10, 0x1C($s0)
/* 331E98 E001E558 46202120 */  cvt.s.d   $f4, $f4
/* 331E9C E001E55C 462031A0 */  cvt.s.d   $f6, $f6
/* 331EA0 E001E560 462010A0 */  cvt.s.d   $f2, $f2
/* 331EA4 E001E564 E6040014 */  swc1      $f4, 0x14($s0)
/* 331EA8 E001E568 E6060010 */  swc1      $f6, 0x10($s0)
/* 331EAC E001E56C E6020034 */  swc1      $f2, 0x34($s0)
/* 331EB0 E001E570 46200020 */  cvt.s.d   $f0, $f0
/* 331EB4 E001E574 0C080150 */  jal       shim_load_effect
/* 331EB8 E001E578 E600002C */   swc1     $f0, 0x2C($s0)
/* 331EBC E001E57C C6020008 */  lwc1      $f2, 0x8($s0)
/* 331EC0 E001E580 3C0140A0 */  lui       $at, (0x40A00000 >> 16)
/* 331EC4 E001E584 44810000 */  mtc1      $at, $f0
/* 331EC8 E001E588 E7B40010 */  swc1      $f20, 0x10($sp)
/* 331ECC E001E58C 46001081 */  sub.s     $f2, $f2, $f0
/* 331ED0 E001E590 8E050004 */  lw        $a1, 0x4($s0)
/* 331ED4 E001E594 8E07000C */  lw        $a3, 0xC($s0)
/* 331ED8 E001E598 44061000 */  mfc1      $a2, $f2
/* 331EDC E001E59C 0C003058 */  jal       landing_dust_main
/* 331EE0 E001E5A0 0000202D */   daddu    $a0, $zero, $zero
/* 331EE4 E001E5A4 3C028007 */  lui       $v0, %hi(gGameStatusPtr)
/* 331EE8 E001E5A8 8C42419C */  lw        $v0, %lo(gGameStatusPtr)($v0)
/* 331EEC E001E5AC 80420070 */  lb        $v0, 0x70($v0)
/* 331EF0 E001E5B0 14400008 */  bnez      $v0, .LE001E5D4
/* 331EF4 E001E5B4 3C04B000 */   lui      $a0, (0xB0000016 >> 16)
/* 331EF8 E001E5B8 C600000C */  lwc1      $f0, 0xC($s0)
/* 331EFC E001E5BC 34840016 */  ori       $a0, $a0, (0xB0000016 & 0xFFFF)
/* 331F00 E001E5C0 E7A00010 */  swc1      $f0, 0x10($sp)
/* 331F04 E001E5C4 8E060004 */  lw        $a2, 0x4($s0)
/* 331F08 E001E5C8 8E070008 */  lw        $a3, 0x8($s0)
/* 331F0C E001E5CC 0C0801A0 */  jal       shim_sfx_play_sound_at_position
/* 331F10 E001E5D0 0000282D */   daddu    $a1, $zero, $zero
.LE001E5D4:
/* 331F14 E001E5D4 C602001C */  lwc1      $f2, 0x1C($s0)
/* 331F18 E001E5D8 3C014120 */  lui       $at, (0x41200000 >> 16)
/* 331F1C E001E5DC 44810000 */  mtc1      $at, $f0
/* 331F20 E001E5E0 00000000 */  nop
/* 331F24 E001E5E4 4602003E */  c.le.s    $f0, $f2
/* 331F28 E001E5E8 00000000 */  nop
/* 331F2C E001E5EC 45000003 */  bc1f      .LE001E5FC
/* 331F30 E001E5F0 AE000000 */   sw       $zero, 0x0($s0)
/* 331F34 E001E5F4 2402FFFF */  addiu     $v0, $zero, -0x1
/* 331F38 E001E5F8 AE020030 */  sw        $v0, 0x30($s0)
.LE001E5FC:
/* 331F3C E001E5FC C600001C */  lwc1      $f0, 0x1C($s0)
/* 331F40 E001E600 44806000 */  mtc1      $zero, $f12
/* 331F44 E001E604 00000000 */  nop
/* 331F48 E001E608 460C0032 */  c.eq.s    $f0, $f12
/* 331F4C E001E60C 00000000 */  nop
/* 331F50 E001E610 45010012 */  bc1t      .LE001E65C
/* 331F54 E001E614 46006386 */   mov.s    $f14, $f12
/* 331F58 E001E618 C6000014 */  lwc1      $f0, 0x14($s0)
/* 331F5C E001E61C 3C01BFE0 */  lui       $at, (0xBFE00000 >> 16)
/* 331F60 E001E620 44811800 */  mtc1      $at, $f3
/* 331F64 E001E624 44801000 */  mtc1      $zero, $f2
/* 331F68 E001E628 C604002C */  lwc1      $f4, 0x2C($s0)
/* 331F6C E001E62C 46000021 */  cvt.d.s   $f0, $f0
/* 331F70 E001E630 46220000 */  add.d     $f0, $f0, $f2
/* 331F74 E001E634 C6020024 */  lwc1      $f2, 0x24($s0)
/* 331F78 E001E638 8E070034 */  lw        $a3, 0x34($s0)
/* 331F7C E001E63C 46041080 */  add.s     $f2, $f2, $f4
/* 331F80 E001E640 46200020 */  cvt.s.d   $f0, $f0
/* 331F84 E001E644 E6000014 */  swc1      $f0, 0x14($s0)
/* 331F88 E001E648 46000007 */  neg.s     $f0, $f0
/* 331F8C E001E64C 44060000 */  mfc1      $a2, $f0
/* 331F90 E001E650 0C080148 */  jal       shim_atan2
/* 331F94 E001E654 E6020024 */   swc1     $f2, 0x24($s0)
/* 331F98 E001E658 E6000020 */  swc1      $f0, 0x20($s0)
.LE001E65C:
/* 331F9C E001E65C 3C028011 */  lui       $v0, %hi(gPlayerStatus)
/* 331FA0 E001E660 2442EFC8 */  addiu     $v0, $v0, %lo(gPlayerStatus)
/* 331FA4 E001E664 C440002C */  lwc1      $f0, 0x2C($v0)
/* 331FA8 E001E668 C6020008 */  lwc1      $f2, 0x8($s0)
/* 331FAC E001E66C 46020001 */  sub.s     $f0, $f0, $f2
/* 331FB0 E001E670 3C014396 */  lui       $at, (0x43960000 >> 16)
/* 331FB4 E001E674 44811000 */  mtc1      $at, $f2
/* 331FB8 E001E678 00000000 */  nop
/* 331FBC E001E67C 4600103C */  c.lt.s    $f2, $f0
/* 331FC0 E001E680 00000000 */  nop
/* 331FC4 E001E684 45000002 */  bc1f      .LE001E690
/* 331FC8 E001E688 2402FFFF */   addiu    $v0, $zero, -0x1
/* 331FCC E001E68C AE020030 */  sw        $v0, 0x30($s0)
.LE001E690:
/* 331FD0 E001E690 C6060004 */  lwc1      $f6, 0x4($s0)
/* 331FD4 E001E694 C6000010 */  lwc1      $f0, 0x10($s0)
/* 331FD8 E001E698 C6020008 */  lwc1      $f2, 0x8($s0)
/* 331FDC E001E69C 46003180 */  add.s     $f6, $f6, $f0
/* 331FE0 E001E6A0 C6000014 */  lwc1      $f0, 0x14($s0)
/* 331FE4 E001E6A4 C6040018 */  lwc1      $f4, 0x18($s0)
/* 331FE8 E001E6A8 46001080 */  add.s     $f2, $f2, $f0
/* 331FEC E001E6AC C600000C */  lwc1      $f0, 0xC($s0)
/* 331FF0 E001E6B0 8E020030 */  lw        $v0, 0x30($s0)
/* 331FF4 E001E6B4 46040000 */  add.s     $f0, $f0, $f4
/* 331FF8 E001E6B8 E6060004 */  swc1      $f6, 0x4($s0)
/* 331FFC E001E6BC E6020008 */  swc1      $f2, 0x8($s0)
/* 332000 E001E6C0 04410003 */  bgez      $v0, .LE001E6D0
/* 332004 E001E6C4 E600000C */   swc1     $f0, 0xC($s0)
/* 332008 E001E6C8 0C080128 */  jal       shim_remove_effect
/* 33200C E001E6CC 0220202D */   daddu    $a0, $s1, $zero
.LE001E6D0:
/* 332010 E001E6D0 8FBF0030 */  lw        $ra, 0x30($sp)
/* 332014 E001E6D4 8FB1002C */  lw        $s1, 0x2C($sp)
/* 332018 E001E6D8 8FB00028 */  lw        $s0, 0x28($sp)
/* 33201C E001E6DC D7B40038 */  ldc1      $f20, 0x38($sp)
/* 332020 E001E6E0 03E00008 */  jr        $ra
/* 332024 E001E6E4 27BD0040 */   addiu    $sp, $sp, 0x40

### DECOMPILED C INSTRUCTIONS:

void star_update(EffectInstance* effect) {
    PlayerStatus* playerStatus = &gPlayerStatus;
    StarFXData* data = effect->data.star;
    f32 x, y, z, length;
    f32 xTemp, yTemp, zTemp;

    if (data->unk_38 >= 2) {
        length = SQ(data->unk_10) + SQ(data->unk_14) + SQ(data->unk_18);
        if (length > 0.01f) {
            length = 1.0f / shim_sqrtf(length);
        }

        xTemp = data->unk_10 * length * 32.0f;
        yTemp = data->unk_14 * length * 32.0f;
        zTemp = data->unk_18 * length * 32.0f;
        x = data->unk_04 - xTemp;
        y = data->unk_08 - yTemp;
        z = data->unk_0C - zTemp;
        length = 64.0f;

        if (data->unk_00 != 0 &&
            data->unk_14 < 0.0f &&
            shim_npc_raycast_down_sides(0, &x, &y, &z, &length) != 0 &&
            length < 42.0f)
        {
            data->unk_1C = data->unk_1C + 1.0f;
            data->unk_14 = -data->unk_14 * 0.6;
            data->unk_10 = data->unk_10 * 0.7;
            data->unk_34 = data->unk_34 * 0.7;
            data->unk_2C = data->unk_2C * 0.7;
            shim_load_effect(EFFECT_LANDING_DUST);
            landing_dust_main(0, data->unk_04, data->unk_08 - 5.0f, data->unk_0C, 0.0f);

            if (!gGameStatusPtr->isBattle) {
                shim_sfx_play_sound_at_position(SOUND_B0000016, SOUND_SPACE_MODE_0, data->unk_04, data->unk_08, data->unk_0C);
            }

            data->unk_00 = 0;
            if (data->unk_1C >= 10.0f) {
                data->unk_30 = -1;
            }
        }

        if (data->unk_1C != 0.0f) {
            data->unk_14 += -0.5;
            data->unk_24 += data->unk_2C;
            data->unk_20 = shim_atan2(0.0f, 0.0f, -data->unk_14, data->unk_34);
        }
    }

    if (playerStatus->position.y - data->unk_08 > 300.0f) {
        data->unk_30 = -1;
    }

    data->unk_04 += data->unk_10;
    data->unk_08 += data->unk_14;
    data->unk_0C += data->unk_18;

    if (data->unk_30 < 0) {
        shim_remove_effect(effect);
    }
}


### RAW ASSEMBLY INSTRUCTIONS:

glabel IdleJumpToGoal
/* 1A79EC 8027910C 27BDFFA8 */  addiu     $sp, $sp, -0x58
/* 1A79F0 80279110 AFB20020 */  sw        $s2, 0x20($sp)
/* 1A79F4 80279114 0080902D */  daddu     $s2, $a0, $zero
/* 1A79F8 80279118 AFBF0024 */  sw        $ra, 0x24($sp)
/* 1A79FC 8027911C AFB1001C */  sw        $s1, 0x1C($sp)
/* 1A7A00 80279120 AFB00018 */  sw        $s0, 0x18($sp)
/* 1A7A04 80279124 F7BE0050 */  sdc1      $f30, 0x50($sp)
/* 1A7A08 80279128 F7BC0048 */  sdc1      $f28, 0x48($sp)
/* 1A7A0C 8027912C F7BA0040 */  sdc1      $f26, 0x40($sp)
/* 1A7A10 80279130 F7B80038 */  sdc1      $f24, 0x38($sp)
/* 1A7A14 80279134 F7B60030 */  sdc1      $f22, 0x30($sp)
/* 1A7A18 80279138 F7B40028 */  sdc1      $f20, 0x28($sp)
/* 1A7A1C 8027913C 8E51000C */  lw        $s1, 0xC($s2)
/* 1A7A20 80279140 54A00001 */  bnel      $a1, $zero, .L80279148
/* 1A7A24 80279144 AE400070 */   sw       $zero, 0x70($s2)
.L80279148:
/* 1A7A28 80279148 8E420070 */  lw        $v0, 0x70($s2)
/* 1A7A2C 8027914C 14400073 */  bnez      $v0, .L8027931C
/* 1A7A30 80279150 00000000 */   nop
/* 1A7A34 80279154 8E250000 */  lw        $a1, 0x0($s1)
/* 1A7A38 80279158 26310004 */  addiu     $s1, $s1, 0x4
/* 1A7A3C 8027915C 0C0B1EAF */  jal       evt_get_variable
/* 1A7A40 80279160 0240202D */   daddu    $a0, $s2, $zero
/* 1A7A44 80279164 0040202D */  daddu     $a0, $v0, $zero
/* 1A7A48 80279168 2402FF81 */  addiu     $v0, $zero, -0x7F
/* 1A7A4C 8027916C 14820002 */  bne       $a0, $v0, .L80279178
/* 1A7A50 80279170 00000000 */   nop
/* 1A7A54 80279174 8E440148 */  lw        $a0, 0x148($s2)
.L80279178:
/* 1A7A58 80279178 0C09A75B */  jal       get_actor
/* 1A7A5C 8027917C 00000000 */   nop
/* 1A7A60 80279180 0040802D */  daddu     $s0, $v0, $zero
/* 1A7A64 80279184 AE500074 */  sw        $s0, 0x74($s2)
/* 1A7A68 80279188 8E250000 */  lw        $a1, 0x0($s1)
/* 1A7A6C 8027918C 26310004 */  addiu     $s1, $s1, 0x4
/* 1A7A70 80279190 0C0B1EAF */  jal       evt_get_variable
/* 1A7A74 80279194 0240202D */   daddu    $a0, $s2, $zero
/* 1A7A78 80279198 A6020120 */  sh        $v0, 0x120($s0)
/* 1A7A7C 8027919C 8E250000 */  lw        $a1, 0x0($s1)
/* 1A7A80 802791A0 26310004 */  addiu     $s1, $s1, 0x4
/* 1A7A84 802791A4 0C0B1EAF */  jal       evt_get_variable
/* 1A7A88 802791A8 0240202D */   daddu    $a0, $s2, $zero
/* 1A7A8C 802791AC AE420078 */  sw        $v0, 0x78($s2)
/* 1A7A90 802791B0 8E250000 */  lw        $a1, 0x0($s1)
/* 1A7A94 802791B4 0C0B1EAF */  jal       evt_get_variable
/* 1A7A98 802791B8 0240202D */   daddu    $a0, $s2, $zero
/* 1A7A9C 802791BC AE42007C */  sw        $v0, 0x7C($s2)
/* 1A7AA0 802791C0 C6000148 */  lwc1      $f0, 0x148($s0)
/* 1A7AA4 802791C4 C61A00D4 */  lwc1      $f26, 0xD4($s0)
/* 1A7AA8 802791C8 C61C00DC */  lwc1      $f28, 0xDC($s0)
/* 1A7AAC 802791CC C614014C */  lwc1      $f20, 0x14C($s0)
/* 1A7AB0 802791D0 C61800D8 */  lwc1      $f24, 0xD8($s0)
/* 1A7AB4 802791D4 261100C8 */  addiu     $s1, $s0, 0xC8
/* 1A7AB8 802791D8 E60000CC */  swc1      $f0, 0xCC($s0)
/* 1A7ABC 802791DC 46000786 */  mov.s     $f30, $f0
/* 1A7AC0 802791E0 4406D000 */  mfc1      $a2, $f26
/* 1A7AC4 802791E4 4407E000 */  mfc1      $a3, $f28
/* 1A7AC8 802791E8 C6000144 */  lwc1      $f0, 0x144($s0)
/* 1A7ACC 802791EC 4600A386 */  mov.s     $f14, $f20
/* 1A7AD0 802791F0 E61400D0 */  swc1      $f20, 0xD0($s0)
/* 1A7AD4 802791F4 E60000C8 */  swc1      $f0, 0xC8($s0)
/* 1A7AD8 802791F8 46000586 */  mov.s     $f22, $f0
/* 1A7ADC 802791FC 0C00A720 */  jal       atan2
/* 1A7AE0 80279200 4600B306 */   mov.s    $f12, $f22
/* 1A7AE4 80279204 4600B306 */  mov.s     $f12, $f22
/* 1A7AE8 80279208 4600A386 */  mov.s     $f14, $f20
/* 1A7AEC 8027920C 4406D000 */  mfc1      $a2, $f26
/* 1A7AF0 80279210 4407E000 */  mfc1      $a3, $f28
/* 1A7AF4 80279214 461EC781 */  sub.s     $f30, $f24, $f30
/* 1A7AF8 80279218 0C00A7B5 */  jal       dist2D
/* 1A7AFC 8027921C E6000110 */   swc1     $f0, 0x110($s0)
/* 1A7B00 80279220 86020120 */  lh        $v0, 0x120($s0)
/* 1A7B04 80279224 46000106 */  mov.s     $f4, $f0
/* 1A7B08 80279228 14400012 */  bnez      $v0, .L80279274
/* 1A7B0C 8027922C E6040114 */   swc1     $f4, 0x114($s0)
/* 1A7B10 80279230 C6000108 */  lwc1      $f0, 0x108($s0)
/* 1A7B14 80279234 C6020108 */  lwc1      $f2, 0x108($s0)
/* 1A7B18 80279238 46002003 */  div.s     $f0, $f4, $f0
/* 1A7B1C 8027923C 4600028D */  trunc.w.s $f10, $f0
/* 1A7B20 80279240 44035000 */  mfc1      $v1, $f10
/* 1A7B24 80279244 00000000 */  nop
/* 1A7B28 80279248 00031400 */  sll       $v0, $v1, 16
/* 1A7B2C 8027924C 00021403 */  sra       $v0, $v0, 16
/* 1A7B30 80279250 44820000 */  mtc1      $v0, $f0
/* 1A7B34 80279254 00000000 */  nop
/* 1A7B38 80279258 46800020 */  cvt.s.w   $f0, $f0
/* 1A7B3C 8027925C 46020002 */  mul.s     $f0, $f0, $f2
/* 1A7B40 80279260 00000000 */  nop
/* 1A7B44 80279264 46002086 */  mov.s     $f2, $f4
/* 1A7B48 80279268 A6030120 */  sh        $v1, 0x120($s0)
/* 1A7B4C 8027926C 0809E4AA */  j         .L802792A8
/* 1A7B50 80279270 46001201 */   sub.s    $f8, $f2, $f0
.L80279274:
/* 1A7B54 80279274 44821000 */  mtc1      $v0, $f2
/* 1A7B58 80279278 00000000 */  nop
/* 1A7B5C 8027927C 468010A0 */  cvt.s.w   $f2, $f2
/* 1A7B60 80279280 86020120 */  lh        $v0, 0x120($s0)
/* 1A7B64 80279284 46022083 */  div.s     $f2, $f4, $f2
/* 1A7B68 80279288 44820000 */  mtc1      $v0, $f0
/* 1A7B6C 8027928C 00000000 */  nop
/* 1A7B70 80279290 46800020 */  cvt.s.w   $f0, $f0
/* 1A7B74 80279294 46020002 */  mul.s     $f0, $f0, $f2
/* 1A7B78 80279298 00000000 */  nop
/* 1A7B7C 8027929C C6040114 */  lwc1      $f4, 0x114($s0)
/* 1A7B80 802792A0 E6020108 */  swc1      $f2, 0x108($s0)
/* 1A7B84 802792A4 46002201 */  sub.s     $f8, $f4, $f0
.L802792A8:
/* 1A7B88 802792A8 86220058 */  lh        $v0, 0x58($s1)
/* 1A7B8C 802792AC 14400003 */  bnez      $v0, .L802792BC
/* 1A7B90 802792B0 00000000 */   nop
/* 1A7B94 802792B4 0809E4FC */  j         .L802793F0
/* 1A7B98 802792B8 24020002 */   addiu    $v0, $zero, 0x2
.L802792BC:
/* 1A7B9C 802792BC C622003C */  lwc1      $f2, 0x3C($s1)
/* 1A7BA0 802792C0 44823000 */  mtc1      $v0, $f6
/* 1A7BA4 802792C4 00000000 */  nop
/* 1A7BA8 802792C8 468031A0 */  cvt.s.w   $f6, $f6
/* 1A7BAC 802792CC 46061082 */  mul.s     $f2, $f2, $f6
/* 1A7BB0 802792D0 00000000 */  nop
/* 1A7BB4 802792D4 3C013F00 */  lui       $at, (0x3F000000 >> 16)
/* 1A7BB8 802792D8 44810000 */  mtc1      $at, $f0
/* 1A7BBC 802792DC 00000000 */  nop
/* 1A7BC0 802792E0 46001082 */  mul.s     $f2, $f2, $f0
/* 1A7BC4 802792E4 00000000 */  nop
/* 1A7BC8 802792E8 86220058 */  lh        $v0, 0x58($s1)
/* 1A7BCC 802792EC C6240040 */  lwc1      $f4, 0x40($s1)
/* 1A7BD0 802792F0 44820000 */  mtc1      $v0, $f0
/* 1A7BD4 802792F4 00000000 */  nop
/* 1A7BD8 802792F8 46800020 */  cvt.s.w   $f0, $f0
/* 1A7BDC 802792FC 46004003 */  div.s     $f0, $f8, $f0
/* 1A7BE0 80279300 46002100 */  add.s     $f4, $f4, $f0
/* 1A7BE4 80279304 4606F183 */  div.s     $f6, $f30, $f6
/* 1A7BE8 80279308 46061080 */  add.s     $f2, $f2, $f6
/* 1A7BEC 8027930C 24020001 */  addiu     $v0, $zero, 0x1
/* 1A7BF0 80279310 E6240040 */  swc1      $f4, 0x40($s1)
/* 1A7BF4 80279314 E6220044 */  swc1      $f2, 0x44($s1)
/* 1A7BF8 80279318 AE420070 */  sw        $v0, 0x70($s2)
.L8027931C:
/* 1A7BFC 8027931C 8E500074 */  lw        $s0, 0x74($s2)
/* 1A7C00 80279320 C600010C */  lwc1      $f0, 0x10C($s0)
/* 1A7C04 80279324 C60400CC */  lwc1      $f4, 0xCC($s0)
/* 1A7C08 80279328 46000086 */  mov.s     $f2, $f0
/* 1A7C0C 8027932C 46002100 */  add.s     $f4, $f4, $f0
/* 1A7C10 80279330 C6000104 */  lwc1      $f0, 0x104($s0)
/* 1A7C14 80279334 46001081 */  sub.s     $f2, $f2, $f0
/* 1A7C18 80279338 44800000 */  mtc1      $zero, $f0
/* 1A7C1C 8027933C 261100C8 */  addiu     $s1, $s0, 0xC8
/* 1A7C20 80279340 E60400CC */  swc1      $f4, 0xCC($s0)
/* 1A7C24 80279344 4600103C */  c.lt.s    $f2, $f0
/* 1A7C28 80279348 00000000 */  nop
/* 1A7C2C 8027934C 45000007 */  bc1f      .L8027936C
/* 1A7C30 80279350 E602010C */   swc1     $f2, 0x10C($s0)
/* 1A7C34 80279354 C60200D8 */  lwc1      $f2, 0xD8($s0)
/* 1A7C38 80279358 46002006 */  mov.s     $f0, $f4
/* 1A7C3C 8027935C 4602003C */  c.lt.s    $f0, $f2
/* 1A7C40 80279360 00000000 */  nop
/* 1A7C44 80279364 45030001 */  bc1tl     .L8027936C
/* 1A7C48 80279368 E60200CC */   swc1     $f2, 0xCC($s0)
.L8027936C:
/* 1A7C4C 8027936C 8E250040 */  lw        $a1, 0x40($s1)
/* 1A7C50 80279370 8E260048 */  lw        $a2, 0x48($s1)
/* 1A7C54 80279374 0C099096 */  jal       add_xz_vec3f_copy2
/* 1A7C58 80279378 0220202D */   daddu    $a0, $s1, $zero
/* 1A7C5C 8027937C C6200000 */  lwc1      $f0, 0x0($s1)
/* 1A7C60 80279380 E6000144 */  swc1      $f0, 0x144($s0)
/* 1A7C64 80279384 C6200004 */  lwc1      $f0, 0x4($s1)
/* 1A7C68 80279388 E6000148 */  swc1      $f0, 0x148($s0)
/* 1A7C6C 8027938C C6200008 */  lwc1      $f0, 0x8($s1)
/* 1A7C70 80279390 E600014C */  swc1      $f0, 0x14C($s0)
/* 1A7C74 80279394 96220058 */  lhu       $v0, 0x58($s1)
/* 1A7C78 80279398 2442FFFF */  addiu     $v0, $v0, -0x1
/* 1A7C7C 8027939C A6220058 */  sh        $v0, 0x58($s1)
/* 1A7C80 802793A0 00021400 */  sll       $v0, $v0, 16
/* 1A7C84 802793A4 1C400012 */  bgtz      $v0, .L802793F0
/* 1A7C88 802793A8 0000102D */   daddu    $v0, $zero, $zero
/* 1A7C8C 802793AC 8E42007C */  lw        $v0, 0x7C($s2)
/* 1A7C90 802793B0 10400008 */  beqz      $v0, .L802793D4
/* 1A7C94 802793B4 00000000 */   nop
/* 1A7C98 802793B8 C6200048 */  lwc1      $f0, 0x48($s1)
/* 1A7C9C 802793BC E7A00010 */  swc1      $f0, 0x10($sp)
/* 1A7CA0 802793C0 8E25000C */  lw        $a1, 0xC($s1)
/* 1A7CA4 802793C4 8E260010 */  lw        $a2, 0x10($s1)
/* 1A7CA8 802793C8 8E270014 */  lw        $a3, 0x14($s1)
/* 1A7CAC 802793CC 0C0990BC */  jal       play_movement_dust_effects
/* 1A7CB0 802793D0 24040002 */   addiu    $a0, $zero, 0x2
.L802793D4:
/* 1A7CB4 802793D4 C620000C */  lwc1      $f0, 0xC($s1)
/* 1A7CB8 802793D8 E6000144 */  swc1      $f0, 0x144($s0)
/* 1A7CBC 802793DC C6200010 */  lwc1      $f0, 0x10($s1)
/* 1A7CC0 802793E0 E6000148 */  swc1      $f0, 0x148($s0)
/* 1A7CC4 802793E4 C6200014 */  lwc1      $f0, 0x14($s1)
/* 1A7CC8 802793E8 24020001 */  addiu     $v0, $zero, 0x1
/* 1A7CCC 802793EC E600014C */  swc1      $f0, 0x14C($s0)
.L802793F0:
/* 1A7CD0 802793F0 8FBF0024 */  lw        $ra, 0x24($sp)
/* 1A7CD4 802793F4 8FB20020 */  lw        $s2, 0x20($sp)
/* 1A7CD8 802793F8 8FB1001C */  lw        $s1, 0x1C($sp)
/* 1A7CDC 802793FC 8FB00018 */  lw        $s0, 0x18($sp)
/* 1A7CE0 80279400 D7BE0050 */  ldc1      $f30, 0x50($sp)
/* 1A7CE4 80279404 D7BC0048 */  ldc1      $f28, 0x48($sp)
/* 1A7CE8 80279408 D7BA0040 */  ldc1      $f26, 0x40($sp)
/* 1A7CEC 8027940C D7B80038 */  ldc1      $f24, 0x38($sp)
/* 1A7CF0 80279410 D7B60030 */  ldc1      $f22, 0x30($sp)
/* 1A7CF4 80279414 D7B40028 */  ldc1      $f20, 0x28($sp)
/* 1A7CF8 80279418 03E00008 */  jr        $ra
/* 1A7CFC 8027941C 27BD0058 */   addiu    $sp, $sp, 0x58

### DECOMPILED C INSTRUCTIONS:

ApiStatus IdleJumpToGoal(Evt* script, s32 isInitialCall) {
    Bytecode* args = script->ptrReadPos;
    Actor* actor;
    ActorMovement* movement;
    f32 posX, posY, posZ;
    f32 goalX, goalY, goalZ;
    f32 moveDist;

    if (isInitialCall) {
        script->functionTemp[0] = FALSE;
    }

    if (!script->functionTemp[0]) {
        s32 actorID = evt_get_variable(script, *args++);

        if (actorID == ACTOR_SELF) {
            actorID = script->owner1.actorID;
        }

        script->functionTempPtr[1] = actor = get_actor(actorID);
        movement = &actor->fly;

        actor->fly.flyTime = evt_get_variable(script, *args++);
        script->functionTemp[2] = evt_get_variable(script, *args++);
        script->functionTemp[3] = evt_get_variable(script, *args++);

        movement->currentPos.x = actor->currentPos.x;
        movement->currentPos.y = actor->currentPos.y;
        movement->currentPos.z = actor->currentPos.z;

        posX = movement->currentPos.x;
        posY = movement->currentPos.y;
        posZ = movement->currentPos.z;
        goalX = movement->goalPos.x;
        goalY = movement->goalPos.y;
        goalZ = movement->goalPos.z;
        movement->angle = atan2(posX, posZ, goalX, goalZ);
        movement->distance = dist2D(posX, posZ, goalX, goalZ);

        // make relative
        posX = (goalX - posX);
        posY = (goalY - posY);
        posZ = (goalZ - posZ);

        if (movement->flyTime == 0) {
            movement->flyTime = movement->distance / movement->speed;
            moveDist = movement->distance - (movement->flyTime * movement->speed);
        } else {
            movement->speed = movement->distance / movement->flyTime;
            moveDist = movement->distance - (movement->flyTime * movement->speed);
        }

        if (movement->flyTime == 0) {
            return ApiStatus_DONE2;
        }

        movement->velocity = (movement->acceleration * movement->flyTime * 0.5f) + (posY / movement->flyTime);
        movement->speed += moveDist / movement->flyTime;
        script->functionTemp[0] = TRUE;
    }

    actor = script->functionTempPtr[1];
    movement = &actor->fly;

    movement->currentPos.y += movement->velocity;
    movement->velocity -= movement->acceleration;
    if (movement->velocity < 0.0f && movement->goalPos.y > movement->currentPos.y) {
        movement->currentPos.y = movement->goalPos.y;
    }
    add_xz_vec3f_copy2(&movement->currentPos, movement->speed, movement->angle);
    actor->currentPos.x = movement->currentPos.x;
    actor->currentPos.y = movement->currentPos.y;
    actor->currentPos.z = movement->currentPos.z;

    movement->flyTime--;
    if (movement->flyTime <= 0) {
        if (script->functionTemp[3] != 0) {
            play_movement_dust_effects(2, movement->goalPos.x, movement->goalPos.y, movement->goalPos.z, movement->angle);
        }
        actor->currentPos.x = movement->goalPos.x;
        actor->currentPos.y = movement->goalPos.y;
        actor->currentPos.z = movement->goalPos.z;
        return ApiStatus_DONE1;
    }

    return ApiStatus_BLOCK;
}