### RAW ASSEMBLY INSTRUCTIONS:

glabel func_8024A214
/* 178AF4 8024A214 27BDFFA0 */  addiu     $sp, $sp, -0x60
/* 178AF8 8024A218 AFB20028 */  sw        $s2, 0x28($sp)
/* 178AFC 8024A21C 00A0902D */  daddu     $s2, $a1, $zero
/* 178B00 8024A220 AFB10024 */  sw        $s1, 0x24($sp)
/* 178B04 8024A224 3C11800B */  lui       $s1, %hi(gCameras + 0x558)
/* 178B08 8024A228 263122D8 */  addiu     $s1, $s1, %lo(gCameras + 0x558)
/* 178B0C 8024A22C 3C02802A */  lui       $v0, %hi(BattleCam_TargetActor)
/* 178B10 8024A230 9442F27C */  lhu       $v0, %lo(BattleCam_TargetActor)($v0)
/* 178B14 8024A234 3C04800E */  lui       $a0, %hi(gBattleStatus)
/* 178B18 8024A238 2484C070 */  addiu     $a0, $a0, %lo(gBattleStatus)
/* 178B1C 8024A23C AFBF002C */  sw        $ra, 0x2C($sp)
/* 178B20 8024A240 AFB00020 */  sw        $s0, 0x20($sp)
/* 178B24 8024A244 F7BE0058 */  sdc1      $f30, 0x58($sp)
/* 178B28 8024A248 F7BC0050 */  sdc1      $f28, 0x50($sp)
/* 178B2C 8024A24C F7BA0048 */  sdc1      $f26, 0x48($sp)
/* 178B30 8024A250 F7B80040 */  sdc1      $f24, 0x40($sp)
/* 178B34 8024A254 F7B60038 */  sdc1      $f22, 0x38($sp)
/* 178B38 8024A258 F7B40030 */  sdc1      $f20, 0x30($sp)
/* 178B3C 8024A25C 30430700 */  andi      $v1, $v0, 0x700
/* 178B40 8024A260 304500FF */  andi      $a1, $v0, 0xFF
.L8024A264:
/* 178B44 8024A264 24020100 */  addiu     $v0, $zero, 0x100
/* 178B48 8024A268 10620044 */  beq       $v1, $v0, .L8024A37C
/* 178B4C 8024A26C 28620101 */   slti     $v0, $v1, 0x101
/* 178B50 8024A270 10400005 */  beqz      $v0, .L8024A288
/* 178B54 8024A274 24020200 */   addiu    $v0, $zero, 0x200
/* 178B58 8024A278 10600007 */  beqz      $v1, .L8024A298
.L8024A27C:
/* 178B5C 8024A27C 24020002 */   addiu    $v0, $zero, 0x2
/* 178B60 8024A280 08092A58 */  j         .L8024A960
/* 178B64 8024A284 00000000 */   nop
.L8024A288:
/* 178B68 8024A288 1062003F */  beq       $v1, $v0, .L8024A388
/* 178B6C 8024A28C 24020002 */   addiu    $v0, $zero, 0x2
D_8024A290:
/* 178B70 8024A290 08092A58 */  j         .L8024A960
/* 178B74 8024A294 00000000 */   nop
.L8024A298:
/* 178B78 8024A298 8C8500D8 */  lw        $a1, 0xD8($a0)
.L8024A29C:
/* 178B7C 8024A29C 10A001B0 */  beqz      $a1, .L8024A960
D_8024A2A0:
/* 178B80 8024A2A0 0000102D */   daddu    $v0, $zero, $zero
/* 178B84 8024A2A4 C4BA0144 */  lwc1      $f26, 0x144($a1)
/* 178B88 8024A2A8 C4B6014C */  lwc1      $f22, 0x14C($a1)
/* 178B8C 8024A2AC 84A40428 */  lh        $a0, 0x428($a1)
/* 178B90 8024A2B0 90A20191 */  lbu       $v0, 0x191($a1)
/* 178B94 8024A2B4 90A30190 */  lbu       $v1, 0x190($a1)
/* 178B98 8024A2B8 C4A20148 */  lwc1      $f2, 0x148($a1)
/* 178B9C 8024A2BC 4482F000 */  mtc1      $v0, $f30
/* 178BA0 8024A2C0 00000000 */  nop
/* 178BA4 8024A2C4 4680F7A0 */  cvt.s.w   $f30, $f30
/* 178BA8 8024A2C8 4483A000 */  mtc1      $v1, $f20
/* 178BAC 8024A2CC 00000000 */  nop
end_01_CreditsMessageBuffers:
/* 178BB0 8024A2D0 4680A520 */  cvt.s.w   $f20, $f20
.L8024A2D4:
/* 178BB4 8024A2D4 00021842 */  srl       $v1, $v0, 1
/* 178BB8 8024A2D8 44830000 */  mtc1      $v1, $f0
/* 178BBC 8024A2DC 00000000 */  nop
/* 178BC0 8024A2E0 46800020 */  cvt.s.w   $f0, $f0
/* 178BC4 8024A2E4 46001080 */  add.s     $f2, $f2, $f0
/* 178BC8 8024A2E8 00021082 */  srl       $v0, $v0, 2
/* 178BCC 8024A2EC 44820000 */  mtc1      $v0, $f0
/* 178BD0 8024A2F0 00000000 */  nop
/* 178BD4 8024A2F4 46800020 */  cvt.s.w   $f0, $f0
/* 178BD8 8024A2F8 0C09A75B */  jal       get_actor
/* 178BDC 8024A2FC 46001600 */   add.s    $f24, $f2, $f0
/* 178BE0 8024A300 0040802D */  daddu     $s0, $v0, $zero
/* 178BE4 8024A304 12000196 */  beqz      $s0, .L8024A960
/* 178BE8 8024A308 0000102D */   daddu    $v0, $zero, $zero
/* 178BEC 8024A30C C6040144 */  lwc1      $f4, 0x144($s0)
/* 178BF0 8024A310 461A2101 */  sub.s     $f4, $f4, $f26
/* 178BF4 8024A314 3C013F00 */  lui       $at, (0x3F000000 >> 16)
/* 178BF8 8024A318 44815000 */  mtc1      $at, $f10
/* 178BFC 8024A31C 00000000 */  nop
/* 178C00 8024A320 460A2102 */  mul.s     $f4, $f4, $f10
/* 178C04 8024A324 00000000 */  nop
/* 178C08 8024A328 92020191 */  lbu       $v0, 0x191($s0)
/* 178C0C 8024A32C C6020148 */  lwc1      $f2, 0x148($s0)
/* 178C10 8024A330 00021842 */  srl       $v1, $v0, 1
/* 178C14 8024A334 44830000 */  mtc1      $v1, $f0
/* 178C18 8024A338 00000000 */  nop
/* 178C1C 8024A33C 46800020 */  cvt.s.w   $f0, $f0
.L8024A340:
/* 178C20 8024A340 46001080 */  add.s     $f2, $f2, $f0
/* 178C24 8024A344 00021082 */  srl       $v0, $v0, 2
/* 178C28 8024A348 44820000 */  mtc1      $v0, $f0
/* 178C2C 8024A34C 00000000 */  nop
/* 178C30 8024A350 46800020 */  cvt.s.w   $f0, $f0
.L8024A354:
/* 178C34 8024A354 46001180 */  add.s     $f6, $f2, $f0
/* 178C38 8024A358 C608014C */  lwc1      $f8, 0x14C($s0)
/* 178C3C 8024A35C 3C02802A */  lui       $v0, %hi(BattleCam_ModeY)
/* 178C40 8024A360 8042F2A2 */  lb        $v0, %lo(BattleCam_ModeY)($v0)
/* 178C44 8024A364 0440004E */  bltz      $v0, .L8024A4A0
/* 178C48 8024A368 4604D680 */   add.s    $f26, $f26, $f4
/* 178C4C 8024A36C 54400044 */  bnel      $v0, $zero, .L8024A480
D_8024A370:
/* 178C50 8024A370 4606C001 */   sub.s    $f0, $f24, $f6
/* 178C54 8024A374 08092929 */  j         .L8024A4A4
/* 178C58 8024A378 4600C706 */   mov.s    $f28, $f24
.L8024A37C:
/* 178C5C 8024A37C 8C8500DC */  lw        $a1, 0xDC($a0)
/* 178C60 8024A380 080928A7 */  j         .L8024A29C
/* 178C64 8024A384 00000000 */   nop
.L8024A388:
/* 178C68 8024A388 00051080 */  sll       $v0, $a1, 2
/* 178C6C 8024A38C 00441021 */  addu      $v0, $v0, $a0
/* 178C70 8024A390 8C5000E0 */  lw        $s0, 0xE0($v0)
/* 178C74 8024A394 12000172 */  beqz      $s0, .L8024A960
/* 178C78 8024A398 0000102D */   daddu    $v0, $zero, $zero
/* 178C7C 8024A39C 3C05802A */  lui       $a1, %hi(BattleCam_TargetActorPart)
D_8024A3A0:
/* 178C80 8024A3A0 84A5F27E */  lh        $a1, %lo(BattleCam_TargetActorPart)($a1)
.L8024A3A4:
/* 178C84 8024A3A4 0C099117 */  jal       get_actor_part
/* 178C88 8024A3A8 0200202D */   daddu    $a0, $s0, $zero
/* 178C8C 8024A3AC C45A002C */  lwc1      $f26, 0x2C($v0)
/* 178C90 8024A3B0 C4560034 */  lwc1      $f22, 0x34($v0)
/* 178C94 8024A3B4 86040428 */  lh        $a0, 0x428($s0)
D_8024A3B8:
/* 178C98 8024A3B8 90430073 */  lbu       $v1, 0x73($v0)
/* 178C9C 8024A3BC 90450072 */  lbu       $a1, 0x72($v0)
/* 178CA0 8024A3C0 C4420030 */  lwc1      $f2, 0x30($v0)
/* 178CA4 8024A3C4 4483F000 */  mtc1      $v1, $f30
/* 178CA8 8024A3C8 00000000 */  nop
/* 178CAC 8024A3CC 4680F7A0 */  cvt.s.w   $f30, $f30
D_8024A3D0:
/* 178CB0 8024A3D0 4485A000 */  mtc1      $a1, $f20
/* 178CB4 8024A3D4 00000000 */  nop
/* 178CB8 8024A3D8 4680A520 */  cvt.s.w   $f20, $f20
/* 178CBC 8024A3DC 00032842 */  srl       $a1, $v1, 1
/* 178CC0 8024A3E0 44850000 */  mtc1      $a1, $f0
/* 178CC4 8024A3E4 00000000 */  nop
/* 178CC8 8024A3E8 46800020 */  cvt.s.w   $f0, $f0
/* 178CCC 8024A3EC 46001080 */  add.s     $f2, $f2, $f0
/* 178CD0 8024A3F0 00031882 */  srl       $v1, $v1, 2
/* 178CD4 8024A3F4 44830000 */  mtc1      $v1, $f0
/* 178CD8 8024A3F8 00000000 */  nop
D_8024A3FC:
/* 178CDC 8024A3FC 46800020 */  cvt.s.w   $f0, $f0
D_8024A400:
/* 178CE0 8024A400 0C09A75B */  jal       get_actor
/* 178CE4 8024A404 46001600 */   add.s    $f24, $f2, $f0
/* 178CE8 8024A408 0040802D */  daddu     $s0, $v0, $zero
/* 178CEC 8024A40C 12000154 */  beqz      $s0, .L8024A960
/* 178CF0 8024A410 0000102D */   daddu    $v0, $zero, $zero
/* 178CF4 8024A414 C6040144 */  lwc1      $f4, 0x144($s0)
/* 178CF8 8024A418 461A2101 */  sub.s     $f4, $f4, $f26
/* 178CFC 8024A41C 3C013F00 */  lui       $at, (0x3F000000 >> 16)
/* 178D00 8024A420 44815000 */  mtc1      $at, $f10
/* 178D04 8024A424 00000000 */  nop
/* 178D08 8024A428 460A2102 */  mul.s     $f4, $f4, $f10
/* 178D0C 8024A42C 00000000 */  nop
/* 178D10 8024A430 92020191 */  lbu       $v0, 0x191($s0)
/* 178D14 8024A434 C6020148 */  lwc1      $f2, 0x148($s0)
/* 178D18 8024A438 00021842 */  srl       $v1, $v0, 1
/* 178D1C 8024A43C 44830000 */  mtc1      $v1, $f0
/* 178D20 8024A440 00000000 */  nop
/* 178D24 8024A444 46800020 */  cvt.s.w   $f0, $f0
/* 178D28 8024A448 46001080 */  add.s     $f2, $f2, $f0
.L8024A44C:
/* 178D2C 8024A44C 00021082 */  srl       $v0, $v0, 2
/* 178D30 8024A450 44820000 */  mtc1      $v0, $f0
.L8024A454:
/* 178D34 8024A454 00000000 */  nop
/* 178D38 8024A458 46800020 */  cvt.s.w   $f0, $f0
/* 178D3C 8024A45C 46001180 */  add.s     $f6, $f2, $f0
/* 178D40 8024A460 C608014C */  lwc1      $f8, 0x14C($s0)
/* 178D44 8024A464 3C02802A */  lui       $v0, %hi(BattleCam_ModeY)
/* 178D48 8024A468 8042F2A2 */  lb        $v0, %lo(BattleCam_ModeY)($v0)
/* 178D4C 8024A46C 0440000C */  bltz      $v0, .L8024A4A0
/* 178D50 8024A470 4604D680 */   add.s    $f26, $f26, $f4
/* 178D54 8024A474 1040000B */  beqz      $v0, .L8024A4A4
/* 178D58 8024A478 4600C706 */   mov.s    $f28, $f24
/* 178D5C 8024A47C 4606C001 */  sub.s     $f0, $f24, $f6
.L8024A480:
/* 178D60 8024A480 460A0082 */  mul.s     $f2, $f0, $f10
/* 178D64 8024A484 00000000 */  nop
/* 178D68 8024A488 3C0140C0 */  lui       $at, (0x40C00000 >> 16)
/* 178D6C 8024A48C 44812000 */  mtc1      $at, $f4
.L8024A490:
/* 178D70 8024A490 46023080 */  add.s     $f2, $f6, $f2
/* 178D74 8024A494 46040003 */  div.s     $f0, $f0, $f4
/* 178D78 8024A498 08092929 */  j         .L8024A4A4
/* 178D7C 8024A49C 46001700 */   add.s    $f28, $f2, $f0
.L8024A4A0:
/* 178D80 8024A4A0 C63C0058 */  lwc1      $f28, 0x58($s1)
.L8024A4A4:
/* 178D84 8024A4A4 46164001 */  sub.s     $f0, $f8, $f22
/* 178D88 8024A4A8 3C013F00 */  lui       $at, (0x3F000000 >> 16)
.L8024A4AC:
/* 178D8C 8024A4AC 44811000 */  mtc1      $at, $f2
/* 178D90 8024A4B0 00000000 */  nop
/* 178D94 8024A4B4 46020002 */  mul.s     $f0, $f0, $f2
/* 178D98 8024A4B8 00000000 */  nop
/* 178D9C 8024A4BC 4600B580 */  add.s     $f22, $f22, $f0
/* 178DA0 8024A4C0 E7B60010 */  swc1      $f22, 0x10($sp)
/* 178DA4 8024A4C4 3C02802A */  lui       $v0, %hi(D_8029F2A6)
/* 178DA8 8024A4C8 8042F2A6 */  lb        $v0, %lo(D_8029F2A6)($v0)
/* 178DAC 8024A4CC 10400029 */  beqz      $v0, .L8024A574
/* 178DB0 8024A4D0 00000000 */   nop
/* 178DB4 8024A4D4 3C01802A */  lui       $at, %hi(BattleCam_InitialBoomLength)
/* 178DB8 8024A4D8 C422F28C */  lwc1      $f2, %lo(BattleCam_InitialBoomLength)($at)
glabel func_8024A4DC
/* 178DBC 8024A4DC 3C0143FA */  lui       $at, (0x43FA0000 >> 16)
/* 178DC0 8024A4E0 44810000 */  mtc1      $at, $f0
/* 178DC4 8024A4E4 00000000 */  nop
/* 178DC8 8024A4E8 46020001 */  sub.s     $f0, $f0, $f2
/* 178DCC 8024A4EC 3C01802A */  lui       $at, %hi(D_8029CC10)
/* 178DD0 8024A4F0 D422CC10 */  ldc1      $f2, %lo(D_8029CC10)($at)
/* 178DD4 8024A4F4 46000021 */  cvt.d.s   $f0, $f0
/* 178DD8 8024A4F8 46220002 */  mul.d     $f0, $f0, $f2
/* 178DDC 8024A4FC 00000000 */  nop
/* 178DE0 8024A500 3C01403E */  lui       $at, (0x403E0000 >> 16)
/* 178DE4 8024A504 44811800 */  mtc1      $at, $f3
/* 178DE8 8024A508 44801000 */  mtc1      $zero, $f2
/* 178DEC 8024A50C 00000000 */  nop
/* 178DF0 8024A510 46220000 */  add.d     $f0, $f0, $f2
.L8024A514:
/* 178DF4 8024A514 46200120 */  cvt.s.d   $f4, $f0
/* 178DF8 8024A518 46002007 */  neg.s     $f0, $f4
/* 178DFC 8024A51C 4600D03C */  c.lt.s    $f26, $f0
D_8024A520:
/* 178E00 8024A520 00000000 */  nop
/* 178E04 8024A524 45000008 */  bc1f      .L8024A548
/* 178E08 8024A528 00000000 */   nop
/* 178E0C 8024A52C 461A0001 */  sub.s     $f0, $f0, $f26
.L8024A530:
/* 178E10 8024A530 3C013F00 */  lui       $at, (0x3F000000 >> 16)
/* 178E14 8024A534 44811000 */  mtc1      $at, $f2
/* 178E18 8024A538 00000000 */  nop
/* 178E1C 8024A53C 46020002 */  mul.s     $f0, $f0, $f2
/* 178E20 8024A540 00000000 */  nop
.L8024A544:
/* 178E24 8024A544 4600D680 */  add.s     $f26, $f26, $f0
.L8024A548:
/* 178E28 8024A548 461A203C */  c.lt.s    $f4, $f26
/* 178E2C 8024A54C 00000000 */  nop
/* 178E30 8024A550 45000008 */  bc1f      .L8024A574
.L8024A554:
/* 178E34 8024A554 00000000 */   nop
/* 178E38 8024A558 461A2001 */  sub.s     $f0, $f4, $f26
/* 178E3C 8024A55C 3C013F00 */  lui       $at, (0x3F000000 >> 16)
/* 178E40 8024A560 44811000 */  mtc1      $at, $f2
/* 178E44 8024A564 00000000 */  nop
/* 178E48 8024A568 46020002 */  mul.s     $f0, $f0, $f2
/* 178E4C 8024A56C 00000000 */  nop
.L8024A570:
/* 178E50 8024A570 4600D680 */  add.s     $f26, $f26, $f0
.L8024A574:
/* 178E54 8024A574 12400055 */  beqz      $s2, .L8024A6CC
/* 178E58 8024A578 00000000 */   nop
.L8024A57C:
/* 178E5C 8024A57C 3C0141C0 */  lui       $at, (0x41C00000 >> 16)
/* 178E60 8024A580 44810000 */  mtc1      $at, $f0
/* 178E64 8024A584 00000000 */  nop
/* 178E68 8024A588 4600A501 */  sub.s     $f20, $f20, $f0
/* 178E6C 8024A58C 4600F781 */  sub.s     $f30, $f30, $f0
/* 178E70 8024A590 44800000 */  mtc1      $zero, $f0
.L8024A594:
/* 178E74 8024A594 00000000 */  nop
/* 178E78 8024A598 4600A03C */  c.lt.s    $f20, $f0
/* 178E7C 8024A59C 00000000 */  nop
/* 178E80 8024A5A0 45030001 */  bc1tl     .L8024A5A8
/* 178E84 8024A5A4 46000506 */   mov.s    $f20, $f0
.L8024A5A8:
/* 178E88 8024A5A8 4600F03C */  c.lt.s    $f30, $f0
D_8024A5AC:
/* 178E8C 8024A5AC 00000000 */  nop
/* 178E90 8024A5B0 45030001 */  bc1tl     .L8024A5B8
/* 178E94 8024A5B4 46000786 */   mov.s    $f30, $f0
.L8024A5B8:
/* 178E98 8024A5B8 3C03802A */  lui       $v1, %hi(BattleCam_BoomLength)
/* 178E9C 8024A5BC 2463F280 */  addiu     $v1, $v1, %lo(BattleCam_BoomLength)
/* 178EA0 8024A5C0 84620000 */  lh        $v0, 0x0($v1)
/* 178EA4 8024A5C4 461EA080 */  add.s     $f2, $f20, $f30
/* 178EA8 8024A5C8 44820000 */  mtc1      $v0, $f0
/* 178EAC 8024A5CC 00000000 */  nop
/* 178EB0 8024A5D0 46800020 */  cvt.s.w   $f0, $f0
.L8024A5D4:
/* 178EB4 8024A5D4 46020000 */  add.s     $f0, $f0, $f2
/* 178EB8 8024A5D8 3C02802A */  lui       $v0, %hi(BattleCam_SetImmediately)
/* 178EBC 8024A5DC 8042F2A4 */  lb        $v0, %lo(BattleCam_SetImmediately)($v0)
/* 178EC0 8024A5E0 4600038D */  trunc.w.s $f14, $f0
/* 178EC4 8024A5E4 44047000 */  mfc1      $a0, $f14
.L8024A5E8:
/* 178EC8 8024A5E8 10400010 */  beqz      $v0, .L8024A62C
/* 178ECC 8024A5EC A4640000 */   sh       $a0, 0x0($v1)
dgb_01_img5_gfx:
/* 178ED0 8024A5F0 E63A0054 */  swc1      $f26, 0x54($s1)
/* 178ED4 8024A5F4 E63C0058 */  swc1      $f28, 0x58($s1)
/* 178ED8 8024A5F8 C7AE0010 */  lwc1      $f14, 0x10($sp)
/* 178EDC 8024A5FC 3C02802A */  lui       $v0, %hi(BattleCam_BoomZOffset)
/* 178EE0 8024A600 8442F286 */  lh        $v0, %lo(BattleCam_BoomZOffset)($v0)
/* 178EE4 8024A604 3C03802A */  lui       $v1, %hi(BattleCam_BoomYaw)
/* 178EE8 8024A608 9463F282 */  lhu       $v1, %lo(BattleCam_BoomYaw)($v1)
/* 178EEC 8024A60C A624001E */  sh        $a0, 0x1E($s1)
/* 178EF0 8024A610 3C04802A */  lui       $a0, %hi(BattleCam_BoomPitch)
/* 178EF4 8024A614 9484F284 */  lhu       $a0, %lo(BattleCam_BoomPitch)($a0)
/* 178EF8 8024A618 00021200 */  sll       $v0, $v0, 8
/* 178EFC 8024A61C E62E005C */  swc1      $f14, 0x5C($s1)
/* 178F00 8024A620 A6220026 */  sh        $v0, 0x26($s1)
/* 178F04 8024A624 A6230024 */  sh        $v1, 0x24($s1)
/* 178F08 8024A628 A6240022 */  sh        $a0, 0x22($s1)
.L8024A62C:
/* 178F0C 8024A62C 8622001E */  lh        $v0, 0x1E($s1)
D_8024A630_DD7300:
/* 178F10 8024A630 86240026 */  lh        $a0, 0x26($s1)
.L8024A634:
/* 178F14 8024A634 86230024 */  lh        $v1, 0x24($s1)
D_8024A638_DD7308:
/* 178F18 8024A638 44820000 */  mtc1      $v0, $f0
/* 178F1C 8024A63C 00000000 */  nop
jtbl_8024A640:
/* 178F20 8024A640 46800020 */  cvt.s.w   $f0, $f0
/* 178F24 8024A644 86220022 */  lh        $v0, 0x22($s1)
/* 178F28 8024A648 3C01802A */  lui       $at, %hi(BattleCam_InitialBoomLength)
/* 178F2C 8024A64C E420F28C */  swc1      $f0, %lo(BattleCam_InitialBoomLength)($at)
/* 178F30 8024A650 44820000 */  mtc1      $v0, $f0
/* 178F34 8024A654 00000000 */  nop
/* 178F38 8024A658 46800020 */  cvt.s.w   $f0, $f0
/* 178F3C 8024A65C 3C01802A */  lui       $at, %hi(BattleCam_InitialBoomPitch)
/* 178F40 8024A660 E420F294 */  swc1      $f0, %lo(BattleCam_InitialBoomPitch)($at)
/* 178F44 8024A664 44830000 */  mtc1      $v1, $f0
/* 178F48 8024A668 00000000 */  nop
/* 178F4C 8024A66C 46800020 */  cvt.s.w   $f0, $f0
dgb_01_img6_png:
/* 178F50 8024A670 3C01802A */  lui       $at, %hi(BattleCam_InitialBoomYaw)
/* 178F54 8024A674 E420F290 */  swc1      $f0, %lo(BattleCam_InitialBoomYaw)($at)
.L8024A678:
/* 178F58 8024A678 04820001 */  bltzl     $a0, .L8024A680
/* 178F5C 8024A67C 248400FF */   addiu    $a0, $a0, 0xFF
.L8024A680:
/* 178F60 8024A680 00041203 */  sra       $v0, $a0, 8
/* 178F64 8024A684 C6220054 */  lwc1      $f2, 0x54($s1)
/* 178F68 8024A688 C6240058 */  lwc1      $f4, 0x58($s1)
/* 178F6C 8024A68C C626005C */  lwc1      $f6, 0x5C($s1)
/* 178F70 8024A690 3C03802A */  lui       $v1, %hi(BattleCam_MoveTimeLeft)
/* 178F74 8024A694 9463F29E */  lhu       $v1, %lo(BattleCam_MoveTimeLeft)($v1)
/* 178F78 8024A698 44820000 */  mtc1      $v0, $f0
/* 178F7C 8024A69C 00000000 */  nop
/* 178F80 8024A6A0 46800020 */  cvt.s.w   $f0, $f0
/* 178F84 8024A6A4 3C01802A */  lui       $at, %hi(BattleCam_InitialBoomZOffset)
/* 178F88 8024A6A8 E420F298 */  swc1      $f0, %lo(BattleCam_InitialBoomZOffset)($at)
.L8024A6AC:
/* 178F8C 8024A6AC 3C01802A */  lui       $at, %hi(BattleCam_InitialPosX)
D_8024A6B0:
/* 178F90 8024A6B0 E422F2A8 */  swc1      $f2, %lo(BattleCam_InitialPosX)($at)
/* 178F94 8024A6B4 3C01802A */  lui       $at, %hi(BattleCam_InitialPosY)
/* 178F98 8024A6B8 E424F2AC */  swc1      $f4, %lo(BattleCam_InitialPosY)($at)
/* 178F9C 8024A6BC 3C01802A */  lui       $at, %hi(BattleCam_InitialPosZ)
/* 178FA0 8024A6C0 E426F2B0 */  swc1      $f6, %lo(BattleCam_InitialPosZ)($at)
/* 178FA4 8024A6C4 3C01802A */  lui       $at, %hi(BattleCam_MoveTimeTotal)
/* 178FA8 8024A6C8 A423F2A0 */  sh        $v1, %lo(BattleCam_MoveTimeTotal)($at)
.L8024A6CC:
/* 178FAC 8024A6CC 3C02802A */  lui       $v0, %hi(BattleCam_UseLinearInterp)
/* 178FB0 8024A6D0 8042F2A5 */  lb        $v0, %lo(BattleCam_UseLinearInterp)($v0)
.L8024A6D4:
/* 178FB4 8024A6D4 14400027 */  bnez      $v0, .L8024A774
.L8024A6D8:
/* 178FB8 8024A6D8 00000000 */   nop
.L8024A6DC:
/* 178FBC 8024A6DC 3C02802A */  lui       $v0, %hi(BattleCam_MoveTimeLeft)
/* 178FC0 8024A6E0 8442F29E */  lh        $v0, %lo(BattleCam_MoveTimeLeft)($v0)
/* 178FC4 8024A6E4 3C03802A */  lui       $v1, %hi(BattleCam_MoveTimeTotal)
/* 178FC8 8024A6E8 8463F2A0 */  lh        $v1, %lo(BattleCam_MoveTimeTotal)($v1)
/* 178FCC 8024A6EC 3C013F80 */  lui       $at, (0x3F800000 >> 16)
/* 178FD0 8024A6F0 4481C000 */  mtc1      $at, $f24
/* 178FD4 8024A6F4 44822000 */  mtc1      $v0, $f4
/* 178FD8 8024A6F8 00000000 */  nop
/* 178FDC 8024A6FC 46802120 */  cvt.s.w   $f4, $f4
/* 178FE0 8024A700 44830000 */  mtc1      $v1, $f0
/* 178FE4 8024A704 00000000 */  nop
/* 178FE8 8024A708 46800020 */  cvt.s.w   $f0, $f0
/* 178FEC 8024A70C 46002103 */  div.s     $f4, $f4, $f0
/* 178FF0 8024A710 4604C301 */  sub.s     $f12, $f24, $f4
glabel func_8024A714
/* 178FF4 8024A714 3C014049 */  lui       $at, (0x40490FD0 >> 16)
/* 178FF8 8024A718 34210FD0 */  ori       $at, $at, (0x40490FD0 & 0xFFFF)
/* 178FFC 8024A71C 4481B000 */  mtc1      $at, $f22
/* 179000 8024A720 00000000 */  nop
/* 179004 8024A724 46166302 */  mul.s     $f12, $f12, $f22
/* 179008 8024A728 00000000 */  nop
/* 17900C 8024A72C 3C013F00 */  lui       $at, (0x3F000000 >> 16)
/* 179010 8024A730 4481A000 */  mtc1      $at, $f20
/* 179014 8024A734 00000000 */  nop
/* 179018 8024A738 46146302 */  mul.s     $f12, $f12, $f20
/* 17901C 8024A73C 0C00A85B */  jal       sin_rad
/* 179020 8024A740 00000000 */   nop
/* 179024 8024A744 46160002 */  mul.s     $f0, $f0, $f22
/* 179028 8024A748 00000000 */  nop
/* 17902C 8024A74C 46140302 */  mul.s     $f12, $f0, $f20
/* 179030 8024A750 0C00A85B */  jal       sin_rad
/* 179034 8024A754 00000000 */   nop
/* 179038 8024A758 46160002 */  mul.s     $f0, $f0, $f22
.L8024A75C:
/* 17903C 8024A75C 00000000 */  nop
/* 179040 8024A760 46140302 */  mul.s     $f12, $f0, $f20
/* 179044 8024A764 0C00A85B */  jal       sin_rad
/* 179048 8024A768 00000000 */   nop
/* 17904C 8024A76C 080929E8 */  j         .L8024A7A0
/* 179050 8024A770 4600C101 */   sub.s    $f4, $f24, $f0
.L8024A774:
/* 179054 8024A774 3C02802A */  lui       $v0, %hi(BattleCam_MoveTimeLeft)
/* 179058 8024A778 8442F29E */  lh        $v0, %lo(BattleCam_MoveTimeLeft)($v0)
/* 17905C 8024A77C 3C03802A */  lui       $v1, %hi(BattleCam_MoveTimeTotal)
/* 179060 8024A780 8463F2A0 */  lh        $v1, %lo(BattleCam_MoveTimeTotal)($v1)
/* 179064 8024A784 44822000 */  mtc1      $v0, $f4
/* 179068 8024A788 00000000 */  nop
/* 17906C 8024A78C 46802120 */  cvt.s.w   $f4, $f4
/* 179070 8024A790 44830000 */  mtc1      $v1, $f0
.L8024A794:
/* 179074 8024A794 00000000 */  nop
/* 179078 8024A798 46800020 */  cvt.s.w   $f0, $f0
/* 17907C 8024A79C 46002103 */  div.s     $f4, $f4, $f0
.L8024A7A0:
/* 179080 8024A7A0 3C01802A */  lui       $at, %hi(BattleCam_InitialPosX)
/* 179084 8024A7A4 C434F2A8 */  lwc1      $f20, %lo(BattleCam_InitialPosX)($at)
/* 179088 8024A7A8 4604A502 */  mul.s     $f20, $f20, $f4
/* 17908C 8024A7AC 00000000 */  nop
/* 179090 8024A7B0 3C01802A */  lui       $at, %hi(BattleCam_InitialPosY)
/* 179094 8024A7B4 C432F2AC */  lwc1      $f18, %lo(BattleCam_InitialPosY)($at)
/* 179098 8024A7B8 46049482 */  mul.s     $f18, $f18, $f4
/* 17909C 8024A7BC 00000000 */  nop
/* 1790A0 8024A7C0 3C01802A */  lui       $at, %hi(BattleCam_InitialPosZ)
/* 1790A4 8024A7C4 C430F2B0 */  lwc1      $f16, %lo(BattleCam_InitialPosZ)($at)
/* 1790A8 8024A7C8 46048402 */  mul.s     $f16, $f16, $f4
/* 1790AC 8024A7CC 00000000 */  nop
D_8024A7D0_DD74A0:
/* 1790B0 8024A7D0 3C01802A */  lui       $at, %hi(BattleCam_InitialBoomZOffset)
/* 1790B4 8024A7D4 C426F298 */  lwc1      $f6, %lo(BattleCam_InitialBoomZOffset)($at)
D_8024A7D8_DD74A8:
/* 1790B8 8024A7D8 46043182 */  mul.s     $f6, $f6, $f4
/* 1790BC 8024A7DC 00000000 */  nop
jtbl_8024A7E0:
/* 1790C0 8024A7E0 3C01802A */  lui       $at, %hi(BattleCam_InitialBoomLength)
/* 1790C4 8024A7E4 C42CF28C */  lwc1      $f12, %lo(BattleCam_InitialBoomLength)($at)
/* 1790C8 8024A7E8 46046302 */  mul.s     $f12, $f12, $f4
/* 1790CC 8024A7EC 00000000 */  nop
/* 1790D0 8024A7F0 3C01802A */  lui       $at, %hi(BattleCam_InitialBoomYaw)
/* 1790D4 8024A7F4 C428F290 */  lwc1      $f8, %lo(BattleCam_InitialBoomYaw)($at)
/* 1790D8 8024A7F8 46044202 */  mul.s     $f8, $f8, $f4
/* 1790DC 8024A7FC 00000000 */  nop
/* 1790E0 8024A800 3C013F80 */  lui       $at, (0x3F800000 >> 16)
/* 1790E4 8024A804 44811000 */  mtc1      $at, $f2
/* 1790E8 8024A808 00000000 */  nop
/* 1790EC 8024A80C 46041081 */  sub.s     $f2, $f2, $f4
/* 1790F0 8024A810 4602D682 */  mul.s     $f26, $f26, $f2
/* 1790F4 8024A814 00000000 */  nop
/* 1790F8 8024A818 4602E602 */  mul.s     $f24, $f28, $f2
/* 1790FC 8024A81C 00000000 */  nop
/* 179100 8024A820 3C02802A */  lui       $v0, %hi(BattleCam_BoomZOffset)
.L8024A824:
/* 179104 8024A824 8442F286 */  lh        $v0, %lo(BattleCam_BoomZOffset)($v0)
/* 179108 8024A828 44820000 */  mtc1      $v0, $f0
/* 17910C 8024A82C 00000000 */  nop
/* 179110 8024A830 46800020 */  cvt.s.w   $f0, $f0
/* 179114 8024A834 46020002 */  mul.s     $f0, $f0, $f2
/* 179118 8024A838 00000000 */  nop
.L8024A83C:
/* 17911C 8024A83C C7AE0010 */  lwc1      $f14, 0x10($sp)
/* 179120 8024A840 46027582 */  mul.s     $f22, $f14, $f2
/* 179124 8024A844 00000000 */  nop
/* 179128 8024A848 3C02802A */  lui       $v0, %hi(BattleCam_BoomLength)
/* 17912C 8024A84C 8442F280 */  lh        $v0, %lo(BattleCam_BoomLength)($v0)
/* 179130 8024A850 44827000 */  mtc1      $v0, $f14
/* 179134 8024A854 00000000 */  nop
/* 179138 8024A858 468073A0 */  cvt.s.w   $f14, $f14
/* 17913C 8024A85C 46027382 */  mul.s     $f14, $f14, $f2
/* 179140 8024A860 00000000 */  nop
/* 179144 8024A864 3C02802A */  lui       $v0, %hi(BattleCam_BoomYaw)
/* 179148 8024A868 8442F282 */  lh        $v0, %lo(BattleCam_BoomYaw)($v0)
/* 17914C 8024A86C 44825000 */  mtc1      $v0, $f10
/* 179150 8024A870 00000000 */  nop
/* 179154 8024A874 468052A0 */  cvt.s.w   $f10, $f10
/* 179158 8024A878 46025282 */  mul.s     $f10, $f10, $f2
/* 17915C 8024A87C 00000000 */  nop
/* 179160 8024A880 46003180 */  add.s     $f6, $f6, $f0
/* 179164 8024A884 3C014380 */  lui       $at, (0x43800000 >> 16)
.L8024A888:
/* 179168 8024A888 44810000 */  mtc1      $at, $f0
D_8024A88C:
/* 17916C 8024A88C 00000000 */  nop
/* 179170 8024A890 46003182 */  mul.s     $f6, $f6, $f0
/* 179174 8024A894 00000000 */  nop
/* 179178 8024A898 3C01802A */  lui       $at, %hi(BattleCam_InitialBoomPitch)
.L8024A89C:
/* 17917C 8024A89C C420F294 */  lwc1      $f0, %lo(BattleCam_InitialBoomPitch)($at)
/* 179180 8024A8A0 46040002 */  mul.s     $f0, $f0, $f4
/* 179184 8024A8A4 00000000 */  nop
/* 179188 8024A8A8 461AA500 */  add.s     $f20, $f20, $f26
/* 17918C 8024A8AC 46189480 */  add.s     $f18, $f18, $f24
D_8024A8B0:
/* 179190 8024A8B0 46168400 */  add.s     $f16, $f16, $f22
/* 179194 8024A8B4 3C02802A */  lui       $v0, %hi(BattleCam_BoomPitch)
/* 179198 8024A8B8 8442F284 */  lh        $v0, %lo(BattleCam_BoomPitch)($v0)
/* 17919C 8024A8BC 460A4200 */  add.s     $f8, $f8, $f10
/* 1791A0 8024A8C0 E7AE0018 */  swc1      $f14, 0x18($sp)
/* 1791A4 8024A8C4 E6340054 */  swc1      $f20, 0x54($s1)
/* 1791A8 8024A8C8 460E6300 */  add.s     $f12, $f12, $f14
/* 1791AC 8024A8CC 3C04802A */  lui       $a0, %hi(BattleCam_MoveTimeLeft)
/* 1791B0 8024A8D0 2484F29E */  addiu     $a0, $a0, %lo(BattleCam_MoveTimeLeft)
/* 1791B4 8024A8D4 44822000 */  mtc1      $v0, $f4
/* 1791B8 8024A8D8 00000000 */  nop
D_8024A8DC:
/* 1791BC 8024A8DC 46802120 */  cvt.s.w   $f4, $f4
/* 1791C0 8024A8E0 46022102 */  mul.s     $f4, $f4, $f2
.L8024A8E4:
/* 1791C4 8024A8E4 00000000 */  nop
/* 1791C8 8024A8E8 E6320058 */  swc1      $f18, 0x58($s1)
/* 1791CC 8024A8EC E630005C */  swc1      $f16, 0x5C($s1)
/* 1791D0 8024A8F0 4600638D */  trunc.w.s $f14, $f12
/* 1791D4 8024A8F4 44027000 */  mfc1      $v0, $f14
/* 1791D8 8024A8F8 00000000 */  nop
/* 1791DC 8024A8FC A622001E */  sh        $v0, 0x1E($s1)
/* 1791E0 8024A900 46040000 */  add.s     $f0, $f0, $f4
/* 1791E4 8024A904 4600438D */  trunc.w.s $f14, $f8
D_8024A908:
/* 1791E8 8024A908 44027000 */  mfc1      $v0, $f14
.L8024A90C:
/* 1791EC 8024A90C 00000000 */  nop
/* 1791F0 8024A910 A6220024 */  sh        $v0, 0x24($s1)
/* 1791F4 8024A914 4600038D */  trunc.w.s $f14, $f0
/* 1791F8 8024A918 44027000 */  mfc1      $v0, $f14
/* 1791FC 8024A91C 00000000 */  nop
/* 179200 8024A920 A6220022 */  sh        $v0, 0x22($s1)
/* 179204 8024A924 4600338D */  trunc.w.s $f14, $f6
/* 179208 8024A928 44027000 */  mfc1      $v0, $f14
/* 17920C 8024A92C 00000000 */  nop
/* 179210 8024A930 A6220026 */  sh        $v0, 0x26($s1)
/* 179214 8024A934 84820000 */  lh        $v0, 0x0($a0)
.L8024A938:
/* 179218 8024A938 94830000 */  lhu       $v1, 0x0($a0)
/* 17921C 8024A93C 14400006 */  bnez      $v0, .L8024A958
/* 179220 8024A940 2462FFFF */   addiu    $v0, $v1, -0x1
/* 179224 8024A944 24020001 */  addiu     $v0, $zero, 0x1
/* 179228 8024A948 3C01802A */  lui       $at, %hi(BattleCam_DoneMoving)
/* 17922C 8024A94C A022F29C */  sb        $v0, %lo(BattleCam_DoneMoving)($at)
/* 179230 8024A950 08092A58 */  j         .L8024A960
/* 179234 8024A954 0000102D */   daddu    $v0, $zero, $zero
.L8024A958:
/* 179238 8024A958 A4820000 */  sh        $v0, 0x0($a0)
/* 17923C 8024A95C 0000102D */  daddu     $v0, $zero, $zero
.L8024A960:
/* 179240 8024A960 8FBF002C */  lw        $ra, 0x2C($sp)
/* 179244 8024A964 8FB20028 */  lw        $s2, 0x28($sp)
/* 179248 8024A968 8FB10024 */  lw        $s1, 0x24($sp)
D_8024A96C:
/* 17924C 8024A96C 8FB00020 */  lw        $s0, 0x20($sp)
D_8024A970_DD7640:
/* 179250 8024A970 D7BE0058 */  ldc1      $f30, 0x58($sp)
/* 179254 8024A974 D7BC0050 */  ldc1      $f28, 0x50($sp)
D_8024A978_DD7648:
/* 179258 8024A978 D7BA0048 */  ldc1      $f26, 0x48($sp)
/* 17925C 8024A97C D7B80040 */  ldc1      $f24, 0x40($sp)
jtbl_8024A980:
/* 179260 8024A980 D7B60038 */  ldc1      $f22, 0x38($sp)
/* 179264 8024A984 D7B40030 */  ldc1      $f20, 0x30($sp)
/* 179268 8024A988 03E00008 */  jr        $ra
.L8024A98C:
/* 17926C 8024A98C 27BD0060 */   addiu    $sp, $sp, 0x60

### DECOMPILED C INSTRUCTIONS:

s32 CamPresetUpdate_G(Evt* script, s32 isInitialCall) {
    Actor* actor;
    Actor* targetActor;
    Actor* enemyActor;
    ActorPart* actorPart;
    Camera* camera = &gCameras[CAM_BATTLE];
    BattleStatus* battleStatus = &gBattleStatus;
    f32 x, y, z;
    f32 middlePosX, middlePosY, middlePosZ;
    f32 targetX, targetY, targetZ;
    f32 sizeX, sizeY;
    f32 targetAverageSize;
    f32 alpha;
    s32 actorClass = BattleCam_TargetActor & ACTOR_CLASS_MASK;
    s32 actorID = BattleCam_TargetActor & 0xFF;

    switch (actorClass) {
        case ACTOR_CLASS_PLAYER:
            actor = battleStatus->playerActor;
            if (actor == NULL) {
                return ApiStatus_BLOCK;
            }
            x = actor->currentPos.x;
            y = actor->currentPos.y + actor->size.y / 2 + actor->size.y / 4;
            z = actor->currentPos.z;

            sizeY = actor->size.y;
            sizeX = actor->size.x;

            targetActor = get_actor(actor->targetActorID);
            if (targetActor == NULL) {
                return ApiStatus_BLOCK;
            }

            targetX = targetActor->currentPos.x;
            targetY = targetActor->currentPos.y + targetActor->size.y / 2 + targetActor->size.y / 4;
            targetZ = targetActor->currentPos.z;
            targetAverageSize = (targetActor->size.y + targetActor->size.x) / 2;

            middlePosX = x + (targetX - x) / 2;
            if (BattleCam_ModeY > BTL_CAM_MODEY_MINUS_1) {
                if (BattleCam_ModeY != BTL_CAM_MODEY_0) {
                    middlePosY = targetY + (y - targetY) * 0.5f + (y - targetY) / 6.0f;
                } else {
                    middlePosY = y;
                }
            } else {
                middlePosY = camera->lookAt_obj_target.y;
            }
            middlePosZ = z + (targetZ - z) / 2;
            break;
        case ACTOR_CLASS_PARTNER:
            actor = battleStatus->partnerActor;
            if (actor == NULL) {
                return ApiStatus_BLOCK;
            }
            x = actor->currentPos.x;
            y = actor->currentPos.y + actor->size.y / 2 + actor->size.y / 4;
            z = actor->currentPos.z;

            sizeY = actor->size.y;
            sizeX = actor->size.x;

            targetActor = get_actor(actor->targetActorID);
            if (targetActor == NULL) {
                return ApiStatus_BLOCK;
            }

            targetX = targetActor->currentPos.x;
            targetY = targetActor->currentPos.y + targetActor->size.y / 2 + targetActor->size.y / 4;
            targetZ = targetActor->currentPos.z;
            targetAverageSize = (targetActor->size.y + targetActor->size.x) / 2;

            middlePosX = x + (targetX - x) / 2;
            if (BattleCam_ModeY > BTL_CAM_MODEY_MINUS_1) {
                if (BattleCam_ModeY != BTL_CAM_MODEY_0) {
                    middlePosY = targetY + (y - targetY) * 0.5f + (y - targetY) / 6.0f;
                } else {
                    middlePosY = y;
                }
            } else {
                middlePosY = camera->lookAt_obj_target.y;
            }
            middlePosZ = z + (targetZ - z) / 2;
            break;
        case ACTOR_CLASS_ENEMY:
            targetActor = battleStatus->enemyActors[actorID];
            if (targetActor == NULL) {
                return ApiStatus_BLOCK;
            }
            actorPart = get_actor_part(targetActor, BattleCam_TargetActorPart);
            x = actorPart->absolutePosition.x;
            y = actorPart->absolutePosition.y + actorPart->size.y / 2 + actorPart->size.y / 4;
            z = actorPart->absolutePosition.z;

            sizeY = actorPart->size.y;
            sizeX = actorPart->size.x;

            targetActor = get_actor(targetActor->targetActorID);
            if (targetActor == NULL) {
                return ApiStatus_BLOCK;
            }

            targetX = targetActor->currentPos.x;
            targetY = targetActor->currentPos.y + targetActor->size.y / 2 + targetActor->size.y / 4;
            targetZ = targetActor->currentPos.z;
            targetAverageSize = (targetActor->size.y + targetActor->size.x) / 2;

            middlePosX = x + (targetX - x) / 2;
            if (BattleCam_ModeY > BTL_CAM_MODEY_MINUS_1) {
                if (BattleCam_ModeY != BTL_CAM_MODEY_0) {
                    middlePosY = targetY + (y - targetY) * 0.5f + (y - targetY) / 6.0f;
                } else {
                    middlePosY = y;
                }
            } else {
                middlePosY = camera->lookAt_obj_target.y;
            }
            middlePosZ = z + (targetZ - z) / 2;
            break;
        default:
            return ApiStatus_DONE2;
    }

    if (D_8029F2A6) {
        f32 upperBound = (500.0f - BattleCam_InitialBoomLength) * 0.4 + 30.0;
        f32 lowerBound = -upperBound;

        if (middlePosX < lowerBound) {
            middlePosX += (lowerBound - middlePosX) / 2;
        }
        if (middlePosX > upperBound) {
            middlePosX += (upperBound - middlePosX) / 2;
        }
    }
    if (isInitialCall) {
        sizeX -= 24.0f;
        sizeY -= 24.0f;
        if (sizeX < 0.0f) {
            sizeX = 0.0f;
        }
        if (sizeY < 0.0f) {
            sizeY = 0.0f;
        }
        BattleCam_BoomLength += sizeX + sizeY;
        if (BattleCam_SetImmediately) {
            camera->lookAt_obj_target.x = middlePosX;
            camera->lookAt_obj_target.y = middlePosY;
            camera->lookAt_obj_target.z = middlePosZ;
            camera->auxBoomLength = BattleCam_BoomLength;
            camera->auxBoomZOffset = BattleCam_BoomZOffset * 256;
            camera->auxBoomYaw = BattleCam_BoomYaw;
            camera->auxBoomPitch = BattleCam_BoomPitch;
        }

        BattleCam_InitialBoomLength = camera->auxBoomLength;
        BattleCam_InitialBoomPitch = camera->auxBoomPitch;
        BattleCam_InitialBoomYaw = camera->auxBoomYaw;
        BattleCam_InitialBoomZOffset = camera->auxBoomZOffset / 256;
        BattleCam_InitialPosX = camera->lookAt_obj_target.x;
        BattleCam_InitialPosY = camera->lookAt_obj_target.y;
        BattleCam_InitialPosZ = camera->lookAt_obj_target.z;
        BattleCam_MoveTimeTotal = BattleCam_MoveTimeLeft;
    }

    if (!BattleCam_UseLinearInterp) {
        alpha = BattleCam_MoveTimeLeft;
        alpha /= BattleCam_MoveTimeTotal;
        alpha = 1.0f - sin_rad(sin_rad(sin_rad((1.0f - alpha) * PI_S / 2) * PI_S / 2) * PI_S / 2);
    } else {
        alpha = BattleCam_MoveTimeLeft;
        alpha /= BattleCam_MoveTimeTotal;
    }

    x = camera->lookAt_obj_target.x;
    y = camera->lookAt_obj_target.y;
    z = camera->lookAt_obj_target.z;

    camera->lookAt_obj_target.x = LERP(BattleCam_InitialPosX, middlePosX, alpha);
    camera->lookAt_obj_target.y = LERP(BattleCam_InitialPosY, middlePosY, alpha);
    camera->lookAt_obj_target.z = LERP(BattleCam_InitialPosZ, middlePosZ, alpha);
    camera->auxBoomZOffset = LERP(BattleCam_InitialBoomZOffset, BattleCam_BoomZOffset, alpha) * 256.0f;

    camera->auxBoomLength = LERP(BattleCam_InitialBoomLength, BattleCam_BoomLength, alpha);
    camera->auxBoomYaw = LERP(BattleCam_InitialBoomYaw, BattleCam_BoomYaw, alpha);
    camera->auxBoomPitch = LERP(BattleCam_InitialBoomPitch, BattleCam_BoomPitch, alpha);

    if (BattleCam_MoveTimeLeft == 0) {
        BattleCam_DoneMoving = TRUE;
    } else {
        BattleCam_MoveTimeLeft--;
    }

    return ApiStatus_BLOCK;
}


### RAW ASSEMBLY INSTRUCTIONS:

glabel windy_leaves_update
/* 35DD0C E005630C 27BDFFB0 */  addiu     $sp, $sp, -0x50
/* 35DD10 E0056310 AFB40020 */  sw        $s4, 0x20($sp)
/* 35DD14 E0056314 0080A02D */  daddu     $s4, $a0, $zero
/* 35DD18 E0056318 AFBF0024 */  sw        $ra, 0x24($sp)
/* 35DD1C E005631C AFB3001C */  sw        $s3, 0x1C($sp)
/* 35DD20 E0056320 AFB20018 */  sw        $s2, 0x18($sp)
/* 35DD24 E0056324 AFB10014 */  sw        $s1, 0x14($sp)
/* 35DD28 E0056328 AFB00010 */  sw        $s0, 0x10($sp)
/* 35DD2C E005632C F7BC0048 */  sdc1      $f28, 0x48($sp)
/* 35DD30 E0056330 F7BA0040 */  sdc1      $f26, 0x40($sp)
/* 35DD34 E0056334 F7B80038 */  sdc1      $f24, 0x38($sp)
/* 35DD38 E0056338 F7B60030 */  sdc1      $f22, 0x30($sp)
/* 35DD3C E005633C F7B40028 */  sdc1      $f20, 0x28($sp)
/* 35DD40 E0056340 8E84000C */  lw        $a0, 0xC($s4)
/* 35DD44 E0056344 8C820028 */  lw        $v0, 0x28($a0)
/* 35DD48 E0056348 8C85002C */  lw        $a1, 0x2C($a0)
/* 35DD4C E005634C 2442FFFF */  addiu     $v0, $v0, -0x1
/* 35DD50 E0056350 AC820028 */  sw        $v0, 0x28($a0)
/* 35DD54 E0056354 0040302D */  daddu     $a2, $v0, $zero
/* 35DD58 E0056358 24A20001 */  addiu     $v0, $a1, 0x1
/* 35DD5C E005635C 04C10005 */  bgez      $a2, .LE0056374
/* 35DD60 E0056360 AC82002C */   sw       $v0, 0x2C($a0)
/* 35DD64 E0056364 0C080128 */  jal       shim_remove_effect
/* 35DD68 E0056368 0280202D */   daddu    $a0, $s4, $zero
/* 35DD6C E005636C 08015AD6 */  j         .LE0056B58
/* 35DD70 E0056370 00000000 */   nop
.LE0056374:
/* 35DD74 E0056374 8C930000 */  lw        $s3, 0x0($a0)
/* 35DD78 E0056378 2842000A */  slti      $v0, $v0, 0xA
/* 35DD7C E005637C 10400010 */  beqz      $v0, .LE00563C0
/* 35DD80 E0056380 240200FF */   addiu    $v0, $zero, 0xFF
/* 35DD84 E0056384 8C830024 */  lw        $v1, 0x24($a0)
/* 35DD88 E0056388 3C01E005 */  lui       $at, (0xE0056EB8 >> 16)
/* 35DD8C E005638C D4206EB8 */  ldc1      $f0, (0xE0056EB8 & 0xFFFF)($at)
/* 35DD90 E0056390 00431023 */  subu      $v0, $v0, $v1
/* 35DD94 E0056394 44821000 */  mtc1      $v0, $f2
/* 35DD98 E0056398 00000000 */  nop
/* 35DD9C E005639C 468010A1 */  cvt.d.w   $f2, $f2
/* 35DDA0 E00563A0 46201082 */  mul.d     $f2, $f2, $f0
/* 35DDA4 E00563A4 00000000 */  nop
/* 35DDA8 E00563A8 44830000 */  mtc1      $v1, $f0
/* 35DDAC E00563AC 00000000 */  nop
/* 35DDB0 E00563B0 46800021 */  cvt.d.w   $f0, $f0
/* 35DDB4 E00563B4 46220000 */  add.d     $f0, $f0, $f2
/* 35DDB8 E00563B8 4620028D */  trunc.w.d $f10, $f0
/* 35DDBC E00563BC E48A0024 */  swc1      $f10, 0x24($a0)
.LE00563C0:
/* 35DDC0 E00563C0 28C2000A */  slti      $v0, $a2, 0xA
/* 35DDC4 E00563C4 10400009 */  beqz      $v0, .LE00563EC
/* 35DDC8 E00563C8 24020001 */   addiu    $v0, $zero, 0x1
/* 35DDCC E00563CC 3C01E005 */  lui       $at, (0xE0056EC0 >> 16)
/* 35DDD0 E00563D0 D4226EC0 */  ldc1      $f2, (0xE0056EC0 & 0xFFFF)($at)
/* 35DDD4 E00563D4 C4800024 */  lwc1      $f0, 0x24($a0)
/* 35DDD8 E00563D8 46800021 */  cvt.d.w   $f0, $f0
/* 35DDDC E00563DC 46220002 */  mul.d     $f0, $f0, $f2
/* 35DDE0 E00563E0 00000000 */  nop
/* 35DDE4 E00563E4 4620028D */  trunc.w.d $f10, $f0
/* 35DDE8 E00563E8 E48A0024 */  swc1      $f10, 0x24($a0)
.LE00563EC:
/* 35DDEC E00563EC 126200E6 */  beq       $s3, $v0, .LE0056788
/* 35DDF0 E00563F0 2484003C */   addiu    $a0, $a0, 0x3C
/* 35DDF4 E00563F4 2A620002 */  slti      $v0, $s3, 0x2
/* 35DDF8 E00563F8 50400005 */  beql      $v0, $zero, .LE0056410
/* 35DDFC E00563FC 24020002 */   addiu    $v0, $zero, 0x2
/* 35DE00 E0056400 12600007 */  beqz      $s3, .LE0056420
/* 35DE04 E0056404 24120001 */   addiu    $s2, $zero, 0x1
/* 35DE08 E0056408 08015AD6 */  j         .LE0056B58
/* 35DE0C E005640C 00000000 */   nop
.LE0056410:
/* 35DE10 E0056410 1262019E */  beq       $s3, $v0, .LE0056A8C
/* 35DE14 E0056414 24120001 */   addiu    $s2, $zero, 0x1
/* 35DE18 E0056418 08015AD6 */  j         .LE0056B58
/* 35DE1C E005641C 00000000 */   nop
.LE0056420:
/* 35DE20 E0056420 8E820008 */  lw        $v0, 0x8($s4)
/* 35DE24 E0056424 0242102A */  slt       $v0, $s2, $v0
/* 35DE28 E0056428 104001CB */  beqz      $v0, .LE0056B58
/* 35DE2C E005642C 2490000C */   addiu    $s0, $a0, 0xC
/* 35DE30 E0056430 24B10015 */  addiu     $s1, $a1, 0x15
/* 35DE34 E0056434 3C01BD4C */  lui       $at, (0xBD4CCCCD >> 16)
/* 35DE38 E0056438 3421CCCD */  ori       $at, $at, (0xBD4CCCCD & 0xFFFF)
/* 35DE3C E005643C 4481E000 */  mtc1      $at, $f28
/* 35DE40 E0056440 3C014120 */  lui       $at, (0x41200000 >> 16)
/* 35DE44 E0056444 4481D000 */  mtc1      $at, $f26
/* 35DE48 E0056448 3C01E005 */  lui       $at, (0xE0056EC8 >> 16)
/* 35DE4C E005644C D4346EC8 */  ldc1      $f20, (0xE0056EC8 & 0xFFFF)($at)
/* 35DE50 E0056450 4480C000 */  mtc1      $zero, $f24
/* 35DE54 E0056454 3C01E005 */  lui       $at, (0xE0056ED0 >> 16)
/* 35DE58 E0056458 D4366ED0 */  ldc1      $f22, (0xE0056ED0 & 0xFFFF)($at)
.LE005645C:
/* 35DE5C E005645C C60C000C */  lwc1      $f12, 0xC($s0)
/* 35DE60 E0056460 0C080140 */  jal       shim_sin_deg
/* 35DE64 E0056464 460C6300 */   add.s    $f12, $f12, $f12
/* 35DE68 E0056468 3C01E005 */  lui       $at, (0xE0056ED8 >> 16)
/* 35DE6C E005646C D4226ED8 */  ldc1      $f2, (0xE0056ED8 & 0xFFFF)($at)
/* 35DE70 E0056470 46000021 */  cvt.d.s   $f0, $f0
/* 35DE74 E0056474 46220002 */  mul.d     $f0, $f0, $f2
/* 35DE78 E0056478 00000000 */  nop
/* 35DE7C E005647C C6020008 */  lwc1      $f2, 0x8($s0)
/* 35DE80 E0056480 461C1080 */  add.s     $f2, $f2, $f28
/* 35DE84 E0056484 C6040004 */  lwc1      $f4, 0x4($s0)
/* 35DE88 E0056488 46200020 */  cvt.s.d   $f0, $f0
/* 35DE8C E005648C 46002000 */  add.s     $f0, $f4, $f0
/* 35DE90 E0056490 E6020008 */  swc1      $f2, 0x8($s0)
/* 35DE94 E0056494 16600019 */  bnez      $s3, .LE00564FC
/* 35DE98 E0056498 E6000004 */   swc1     $f0, 0x4($s0)
/* 35DE9C E005649C 3C01E005 */  lui       $at, (0xE0056EE0 >> 16)
/* 35DEA0 E00564A0 D4226EE0 */  ldc1      $f2, (0xE0056EE0 & 0xFFFF)($at)
/* 35DEA4 E00564A4 46000021 */  cvt.d.s   $f0, $f0
/* 35DEA8 E00564A8 46220002 */  mul.d     $f0, $f0, $f2
/* 35DEAC E00564AC 00000000 */  nop
/* 35DEB0 E00564B0 C60C000C */  lwc1      $f12, 0xC($s0)
/* 35DEB4 E00564B4 46200020 */  cvt.s.d   $f0, $f0
/* 35DEB8 E00564B8 0C080140 */  jal       shim_sin_deg
/* 35DEBC E00564BC E6000004 */   swc1     $f0, 0x4($s0)
/* 35DEC0 E00564C0 3C01E005 */  lui       $at, (0xE0056EE8 >> 16)
/* 35DEC4 E00564C4 D4226EE8 */  ldc1      $f2, (0xE0056EE8 & 0xFFFF)($at)
/* 35DEC8 E00564C8 46000021 */  cvt.d.s   $f0, $f0
/* 35DECC E00564CC 46220002 */  mul.d     $f0, $f0, $f2
/* 35DED0 E00564D0 00000000 */  nop
/* 35DED4 E00564D4 3C01E005 */  lui       $at, (0xE0056EF0 >> 16)
/* 35DED8 E00564D8 D4246EF0 */  ldc1      $f4, (0xE0056EF0 & 0xFFFF)($at)
/* 35DEDC E00564DC C6020008 */  lwc1      $f2, 0x8($s0)
/* 35DEE0 E00564E0 46240000 */  add.d     $f0, $f0, $f4
/* 35DEE4 E00564E4 460010A1 */  cvt.d.s   $f2, $f2
/* 35DEE8 E00564E8 46201082 */  mul.d     $f2, $f2, $f0
/* 35DEEC E00564EC 00000000 */  nop
/* 35DEF0 E00564F0 462010A0 */  cvt.s.d   $f2, $f2
/* 35DEF4 E00564F4 0801594A */  j         .LE0056528
/* 35DEF8 E00564F8 E6020008 */   swc1     $f2, 0x8($s0)
.LE00564FC:
/* 35DEFC E00564FC C6000004 */  lwc1      $f0, 0x4($s0)
/* 35DF00 E0056500 3C01E005 */  lui       $at, (0xE0056EF8 >> 16)
/* 35DF04 E0056504 D4226EF8 */  ldc1      $f2, (0xE0056EF8 & 0xFFFF)($at)
/* 35DF08 E0056508 46000021 */  cvt.d.s   $f0, $f0
/* 35DF0C E005650C 46220002 */  mul.d     $f0, $f0, $f2
/* 35DF10 E0056510 00000000 */  nop
/* 35DF14 E0056514 C6020008 */  lwc1      $f2, 0x8($s0)
/* 35DF18 E0056518 461C1080 */  add.s     $f2, $f2, $f28
/* 35DF1C E005651C E6020008 */  swc1      $f2, 0x8($s0)
/* 35DF20 E0056520 46200020 */  cvt.s.d   $f0, $f0
/* 35DF24 E0056524 E6000004 */  swc1      $f0, 0x4($s0)
.LE0056528:
/* 35DF28 E0056528 24040032 */  addiu     $a0, $zero, 0x32
/* 35DF2C E005652C 0C080011 */  jal       func_E0200044
/* 35DF30 E0056530 0220282D */   daddu    $a1, $s1, $zero
/* 35DF34 E0056534 2442FFE7 */  addiu     $v0, $v0, -0x19
/* 35DF38 E0056538 C60C0010 */  lwc1      $f12, 0x10($s0)
/* 35DF3C E005653C 44820000 */  mtc1      $v0, $f0
/* 35DF40 E0056540 00000000 */  nop
/* 35DF44 E0056544 46800020 */  cvt.s.w   $f0, $f0
/* 35DF48 E0056548 46006300 */  add.s     $f12, $f12, $f0
/* 35DF4C E005654C 0C080140 */  jal       shim_sin_deg
/* 35DF50 E0056550 E60C0010 */   swc1     $f12, 0x10($s0)
/* 35DF54 E0056554 C60C0010 */  lwc1      $f12, 0x10($s0)
/* 35DF58 E0056558 3C013FE0 */  lui       $at, (0x3FE00000 >> 16)
/* 35DF5C E005655C 44811800 */  mtc1      $at, $f3
/* 35DF60 E0056560 44801000 */  mtc1      $zero, $f2
/* 35DF64 E0056564 46006321 */  cvt.d.s   $f12, $f12
/* 35DF68 E0056568 46226302 */  mul.d     $f12, $f12, $f2
/* 35DF6C E005656C 00000000 */  nop
/* 35DF70 E0056570 461A0002 */  mul.s     $f0, $f0, $f26
/* 35DF74 E0056574 00000000 */  nop
/* 35DF78 E0056578 C602000C */  lwc1      $f2, 0xC($s0)
/* 35DF7C E005657C 46001080 */  add.s     $f2, $f2, $f0
/* 35DF80 E0056580 E602000C */  swc1      $f2, 0xC($s0)
/* 35DF84 E0056584 0C080144 */  jal       shim_cos_deg
/* 35DF88 E0056588 46206320 */   cvt.s.d  $f12, $f12
/* 35DF8C E005658C 461A0002 */  mul.s     $f0, $f0, $f26
/* 35DF90 E0056590 00000000 */  nop
/* 35DF94 E0056594 C606FFF8 */  lwc1      $f6, -0x8($s0)
/* 35DF98 E0056598 C6020004 */  lwc1      $f2, 0x4($s0)
/* 35DF9C E005659C C604FFFC */  lwc1      $f4, -0x4($s0)
/* 35DFA0 E00565A0 46023180 */  add.s     $f6, $f6, $f2
/* 35DFA4 E00565A4 C6020008 */  lwc1      $f2, 0x8($s0)
/* 35DFA8 E00565A8 46022100 */  add.s     $f4, $f4, $f2
/* 35DFAC E00565AC C6020014 */  lwc1      $f2, 0x14($s0)
/* 35DFB0 E00565B0 3C0141F0 */  lui       $at, (0x41F00000 >> 16)
/* 35DFB4 E00565B4 44814000 */  mtc1      $at, $f8
/* 35DFB8 E00565B8 46001080 */  add.s     $f2, $f2, $f0
/* 35DFBC E00565BC E606FFF8 */  swc1      $f6, -0x8($s0)
/* 35DFC0 E00565C0 E604FFFC */  swc1      $f4, -0x4($s0)
/* 35DFC4 E00565C4 4608203C */  c.lt.s    $f4, $f8
/* 35DFC8 E00565C8 00000000 */  nop
/* 35DFCC E00565CC 45000032 */  bc1f      .LE0056698
/* 35DFD0 E00565D0 E6020014 */   swc1     $f2, 0x14($s0)
/* 35DFD4 E00565D4 3C01C348 */  lui       $at, (0xC3480000 >> 16)
/* 35DFD8 E00565D8 44810000 */  mtc1      $at, $f0
/* 35DFDC E00565DC 46003086 */  mov.s     $f2, $f6
/* 35DFE0 E00565E0 4602003C */  c.lt.s    $f0, $f2
/* 35DFE4 E00565E4 00000000 */  nop
/* 35DFE8 E00565E8 45000005 */  bc1f      .LE0056600
/* 35DFEC E00565EC 00000000 */   nop
/* 35DFF0 E00565F0 C6000024 */  lwc1      $f0, 0x24($s0)
/* 35DFF4 E00565F4 46000021 */  cvt.d.s   $f0, $f0
/* 35DFF8 E00565F8 08015983 */  j         .LE005660C
/* 35DFFC E00565FC 46340001 */   sub.d    $f0, $f0, $f20
.LE0056600:
/* 35E000 E0056600 C6000024 */  lwc1      $f0, 0x24($s0)
/* 35E004 E0056604 46000021 */  cvt.d.s   $f0, $f0
/* 35E008 E0056608 46340000 */  add.d     $f0, $f0, $f20
.LE005660C:
/* 35E00C E005660C 46200020 */  cvt.s.d   $f0, $f0
/* 35E010 E0056610 E6000024 */  swc1      $f0, 0x24($s0)
/* 35E014 E0056614 C6000000 */  lwc1      $f0, 0x0($s0)
/* 35E018 E0056618 4600C03C */  c.lt.s    $f24, $f0
/* 35E01C E005661C 00000000 */  nop
/* 35E020 E0056620 45000005 */  bc1f      .LE0056638
/* 35E024 E0056624 00000000 */   nop
/* 35E028 E0056628 C600002C */  lwc1      $f0, 0x2C($s0)
/* 35E02C E005662C 46000021 */  cvt.d.s   $f0, $f0
/* 35E030 E0056630 08015991 */  j         .LE0056644
/* 35E034 E0056634 46340001 */   sub.d    $f0, $f0, $f20
.LE0056638:
/* 35E038 E0056638 C600002C */  lwc1      $f0, 0x2C($s0)
/* 35E03C E005663C 46000021 */  cvt.d.s   $f0, $f0
/* 35E040 E0056640 46340000 */  add.d     $f0, $f0, $f20
.LE0056644:
/* 35E044 E0056644 46200020 */  cvt.s.d   $f0, $f0
/* 35E048 E0056648 E600002C */  swc1      $f0, 0x2C($s0)
/* 35E04C E005664C C6040024 */  lwc1      $f4, 0x24($s0)
/* 35E050 E0056650 46002121 */  cvt.d.s   $f4, $f4
/* 35E054 E0056654 46362102 */  mul.d     $f4, $f4, $f22
/* 35E058 E0056658 00000000 */  nop
/* 35E05C E005665C C602002C */  lwc1      $f2, 0x2C($s0)
/* 35E060 E0056660 460010A1 */  cvt.d.s   $f2, $f2
/* 35E064 E0056664 46361082 */  mul.d     $f2, $f2, $f22
/* 35E068 E0056668 00000000 */  nop
/* 35E06C E005666C C6000008 */  lwc1      $f0, 0x8($s0)
/* 35E070 E0056670 46000021 */  cvt.d.s   $f0, $f0
/* 35E074 E0056674 46360002 */  mul.d     $f0, $f0, $f22
/* 35E078 E0056678 00000000 */  nop
/* 35E07C E005667C 46202120 */  cvt.s.d   $f4, $f4
/* 35E080 E0056680 462010A0 */  cvt.s.d   $f2, $f2
/* 35E084 E0056684 46200020 */  cvt.s.d   $f0, $f0
/* 35E088 E0056688 E6040024 */  swc1      $f4, 0x24($s0)
/* 35E08C E005668C E602002C */  swc1      $f2, 0x2C($s0)
/* 35E090 E0056690 080159CE */  j         .LE0056738
/* 35E094 E0056694 E6000008 */   swc1     $f0, 0x8($s0)
.LE0056698:
/* 35E098 E0056698 C600FFF8 */  lwc1      $f0, -0x8($s0)
/* 35E09C E005669C 4600C03C */  c.lt.s    $f24, $f0
/* 35E0A0 E00566A0 00000000 */  nop
/* 35E0A4 E00566A4 45000005 */  bc1f      .LE00566BC
/* 35E0A8 E00566A8 00000000 */   nop
/* 35E0AC E00566AC C6000024 */  lwc1      $f0, 0x24($s0)
/* 35E0B0 E00566B0 46000021 */  cvt.d.s   $f0, $f0
/* 35E0B4 E00566B4 080159B2 */  j         .LE00566C8
/* 35E0B8 E00566B8 46340001 */   sub.d    $f0, $f0, $f20
.LE00566BC:
/* 35E0BC E00566BC C6000024 */  lwc1      $f0, 0x24($s0)
/* 35E0C0 E00566C0 46000021 */  cvt.d.s   $f0, $f0
/* 35E0C4 E00566C4 46340000 */  add.d     $f0, $f0, $f20
.LE00566C8:
/* 35E0C8 E00566C8 46200020 */  cvt.s.d   $f0, $f0
/* 35E0CC E00566CC E6000024 */  swc1      $f0, 0x24($s0)
/* 35E0D0 E00566D0 C6000000 */  lwc1      $f0, 0x0($s0)
/* 35E0D4 E00566D4 4600C03C */  c.lt.s    $f24, $f0
/* 35E0D8 E00566D8 00000000 */  nop
/* 35E0DC E00566DC 45000005 */  bc1f      .LE00566F4
/* 35E0E0 E00566E0 00000000 */   nop
/* 35E0E4 E00566E4 C600002C */  lwc1      $f0, 0x2C($s0)
/* 35E0E8 E00566E8 46000021 */  cvt.d.s   $f0, $f0
/* 35E0EC E00566EC 080159C0 */  j         .LE0056700
/* 35E0F0 E00566F0 46340001 */   sub.d    $f0, $f0, $f20
.LE00566F4:
/* 35E0F4 E00566F4 C600002C */  lwc1      $f0, 0x2C($s0)
/* 35E0F8 E00566F8 46000021 */  cvt.d.s   $f0, $f0
/* 35E0FC E00566FC 46340000 */  add.d     $f0, $f0, $f20
.LE0056700:
/* 35E100 E0056700 46200020 */  cvt.s.d   $f0, $f0
/* 35E104 E0056704 E600002C */  swc1      $f0, 0x2C($s0)
/* 35E108 E0056708 C6020024 */  lwc1      $f2, 0x24($s0)
/* 35E10C E005670C 460010A1 */  cvt.d.s   $f2, $f2
/* 35E110 E0056710 46361082 */  mul.d     $f2, $f2, $f22
/* 35E114 E0056714 00000000 */  nop
/* 35E118 E0056718 C600002C */  lwc1      $f0, 0x2C($s0)
/* 35E11C E005671C 46000021 */  cvt.d.s   $f0, $f0
/* 35E120 E0056720 46360002 */  mul.d     $f0, $f0, $f22
/* 35E124 E0056724 00000000 */  nop
/* 35E128 E0056728 462010A0 */  cvt.s.d   $f2, $f2
/* 35E12C E005672C 46200020 */  cvt.s.d   $f0, $f0
/* 35E130 E0056730 E6020024 */  swc1      $f2, 0x24($s0)
/* 35E134 E0056734 E600002C */  swc1      $f0, 0x2C($s0)
.LE0056738:
/* 35E138 E0056738 26310014 */  addiu     $s1, $s1, 0x14
/* 35E13C E005673C C606FFF8 */  lwc1      $f6, -0x8($s0)
/* 35E140 E0056740 C6000024 */  lwc1      $f0, 0x24($s0)
/* 35E144 E0056744 C604FFFC */  lwc1      $f4, -0x4($s0)
/* 35E148 E0056748 46003180 */  add.s     $f6, $f6, $f0
/* 35E14C E005674C C6000028 */  lwc1      $f0, 0x28($s0)
/* 35E150 E0056750 C602002C */  lwc1      $f2, 0x2C($s0)
/* 35E154 E0056754 46002100 */  add.s     $f4, $f4, $f0
/* 35E158 E0056758 C6000000 */  lwc1      $f0, 0x0($s0)
/* 35E15C E005675C 26520001 */  addiu     $s2, $s2, 0x1
/* 35E160 E0056760 46020000 */  add.s     $f0, $f0, $f2
/* 35E164 E0056764 E606FFF8 */  swc1      $f6, -0x8($s0)
/* 35E168 E0056768 E604FFFC */  swc1      $f4, -0x4($s0)
/* 35E16C E005676C E6000000 */  swc1      $f0, 0x0($s0)
/* 35E170 E0056770 8E820008 */  lw        $v0, 0x8($s4)
/* 35E174 E0056774 0242102A */  slt       $v0, $s2, $v0
/* 35E178 E0056778 1440FF38 */  bnez      $v0, .LE005645C
/* 35E17C E005677C 2610003C */   addiu    $s0, $s0, 0x3C
/* 35E180 E0056780 08015AD6 */  j         .LE0056B58
/* 35E184 E0056784 00000000 */   nop
.LE0056788:
/* 35E188 E0056788 8E820008 */  lw        $v0, 0x8($s4)
/* 35E18C E005678C 24120001 */  addiu     $s2, $zero, 0x1
/* 35E190 E0056790 0242102A */  slt       $v0, $s2, $v0
/* 35E194 E0056794 104000F0 */  beqz      $v0, .LE0056B58
/* 35E198 E0056798 2490000C */   addiu    $s0, $a0, 0xC
/* 35E19C E005679C 24B10015 */  addiu     $s1, $a1, 0x15
/* 35E1A0 E00567A0 3C01BD4C */  lui       $at, (0xBD4CCCCD >> 16)
/* 35E1A4 E00567A4 3421CCCD */  ori       $at, $at, (0xBD4CCCCD & 0xFFFF)
/* 35E1A8 E00567A8 4481E000 */  mtc1      $at, $f28
/* 35E1AC E00567AC 3C014120 */  lui       $at, (0x41200000 >> 16)
/* 35E1B0 E00567B0 4481D000 */  mtc1      $at, $f26
/* 35E1B4 E00567B4 3C01E005 */  lui       $at, (0xE0056F00 >> 16)
/* 35E1B8 E00567B8 D4346F00 */  ldc1      $f20, (0xE0056F00 & 0xFFFF)($at)
/* 35E1BC E00567BC 4480C000 */  mtc1      $zero, $f24
/* 35E1C0 E00567C0 3C01E005 */  lui       $at, (0xE0056F08 >> 16)
/* 35E1C4 E00567C4 D4366F08 */  ldc1      $f22, (0xE0056F08 & 0xFFFF)($at)
.LE00567C8:
/* 35E1C8 E00567C8 C60C000C */  lwc1      $f12, 0xC($s0)
/* 35E1CC E00567CC 0C080140 */  jal       shim_sin_deg
/* 35E1D0 E00567D0 460C6300 */   add.s    $f12, $f12, $f12
/* 35E1D4 E00567D4 3C01E005 */  lui       $at, (0xE0056F10 >> 16)
/* 35E1D8 E00567D8 D4226F10 */  ldc1      $f2, (0xE0056F10 & 0xFFFF)($at)
/* 35E1DC E00567DC 46000021 */  cvt.d.s   $f0, $f0
/* 35E1E0 E00567E0 46220002 */  mul.d     $f0, $f0, $f2
/* 35E1E4 E00567E4 00000000 */  nop
/* 35E1E8 E00567E8 46200000 */  add.d     $f0, $f0, $f0
/* 35E1EC E00567EC C6020004 */  lwc1      $f2, 0x4($s0)
/* 35E1F0 E00567F0 46200020 */  cvt.s.d   $f0, $f0
/* 35E1F4 E00567F4 46001080 */  add.s     $f2, $f2, $f0
/* 35E1F8 E00567F8 3C01E005 */  lui       $at, (0xE0056F18 >> 16)
/* 35E1FC E00567FC D4206F18 */  ldc1      $f0, (0xE0056F18 & 0xFFFF)($at)
/* 35E200 E0056800 E6020004 */  swc1      $f2, 0x4($s0)
/* 35E204 E0056804 460010A1 */  cvt.d.s   $f2, $f2
/* 35E208 E0056808 46201082 */  mul.d     $f2, $f2, $f0
/* 35E20C E005680C 00000000 */  nop
/* 35E210 E0056810 C6000008 */  lwc1      $f0, 0x8($s0)
/* 35E214 E0056814 461C0000 */  add.s     $f0, $f0, $f28
/* 35E218 E0056818 E6000008 */  swc1      $f0, 0x8($s0)
/* 35E21C E005681C 461C0000 */  add.s     $f0, $f0, $f28
/* 35E220 E0056820 24040032 */  addiu     $a0, $zero, 0x32
/* 35E224 E0056824 0220282D */  daddu     $a1, $s1, $zero
/* 35E228 E0056828 E6000008 */  swc1      $f0, 0x8($s0)
/* 35E22C E005682C 462010A0 */  cvt.s.d   $f2, $f2
/* 35E230 E0056830 0C080011 */  jal       func_E0200044
/* 35E234 E0056834 E6020004 */   swc1     $f2, 0x4($s0)
/* 35E238 E0056838 2442FFE7 */  addiu     $v0, $v0, -0x19
/* 35E23C E005683C C60C0010 */  lwc1      $f12, 0x10($s0)
/* 35E240 E0056840 44820000 */  mtc1      $v0, $f0
/* 35E244 E0056844 00000000 */  nop
/* 35E248 E0056848 46800020 */  cvt.s.w   $f0, $f0
/* 35E24C E005684C 46006300 */  add.s     $f12, $f12, $f0
/* 35E250 E0056850 0C080140 */  jal       shim_sin_deg
/* 35E254 E0056854 E60C0010 */   swc1     $f12, 0x10($s0)
/* 35E258 E0056858 C60C0010 */  lwc1      $f12, 0x10($s0)
/* 35E25C E005685C 3C013FE0 */  lui       $at, (0x3FE00000 >> 16)
/* 35E260 E0056860 44811800 */  mtc1      $at, $f3
/* 35E264 E0056864 44801000 */  mtc1      $zero, $f2
/* 35E268 E0056868 46006321 */  cvt.d.s   $f12, $f12
/* 35E26C E005686C 46226302 */  mul.d     $f12, $f12, $f2
/* 35E270 E0056870 00000000 */  nop
/* 35E274 E0056874 461A0002 */  mul.s     $f0, $f0, $f26
/* 35E278 E0056878 00000000 */  nop
/* 35E27C E005687C C602000C */  lwc1      $f2, 0xC($s0)
/* 35E280 E0056880 46001080 */  add.s     $f2, $f2, $f0
/* 35E284 E0056884 E602000C */  swc1      $f2, 0xC($s0)
/* 35E288 E0056888 0C080144 */  jal       shim_cos_deg
/* 35E28C E005688C 46206320 */   cvt.s.d  $f12, $f12
/* 35E290 E0056890 461A0002 */  mul.s     $f0, $f0, $f26
/* 35E294 E0056894 00000000 */  nop
/* 35E298 E0056898 C606FFF8 */  lwc1      $f6, -0x8($s0)
/* 35E29C E005689C C6020004 */  lwc1      $f2, 0x4($s0)
/* 35E2A0 E00568A0 C604FFFC */  lwc1      $f4, -0x4($s0)
/* 35E2A4 E00568A4 46023180 */  add.s     $f6, $f6, $f2
/* 35E2A8 E00568A8 C6020008 */  lwc1      $f2, 0x8($s0)
/* 35E2AC E00568AC 46022100 */  add.s     $f4, $f4, $f2
/* 35E2B0 E00568B0 C6020014 */  lwc1      $f2, 0x14($s0)
/* 35E2B4 E00568B4 3C0141F0 */  lui       $at, (0x41F00000 >> 16)
/* 35E2B8 E00568B8 44814000 */  mtc1      $at, $f8
/* 35E2BC E00568BC 46001080 */  add.s     $f2, $f2, $f0
/* 35E2C0 E00568C0 E606FFF8 */  swc1      $f6, -0x8($s0)
/* 35E2C4 E00568C4 E604FFFC */  swc1      $f4, -0x4($s0)
/* 35E2C8 E00568C8 4608203C */  c.lt.s    $f4, $f8
/* 35E2CC E00568CC 00000000 */  nop
/* 35E2D0 E00568D0 45000032 */  bc1f      .LE005699C
/* 35E2D4 E00568D4 E6020014 */   swc1     $f2, 0x14($s0)
/* 35E2D8 E00568D8 3C01C348 */  lui       $at, (0xC3480000 >> 16)
/* 35E2DC E00568DC 44810000 */  mtc1      $at, $f0
/* 35E2E0 E00568E0 46003086 */  mov.s     $f2, $f6
/* 35E2E4 E00568E4 4602003C */  c.lt.s    $f0, $f2
/* 35E2E8 E00568E8 00000000 */  nop
/* 35E2EC E00568EC 45000005 */  bc1f      .LE0056904
/* 35E2F0 E00568F0 00000000 */   nop
/* 35E2F4 E00568F4 C6000024 */  lwc1      $f0, 0x24($s0)
/* 35E2F8 E00568F8 46000021 */  cvt.d.s   $f0, $f0
/* 35E2FC E00568FC 08015A44 */  j         .LE0056910
/* 35E300 E0056900 46340001 */   sub.d    $f0, $f0, $f20
.LE0056904:
/* 35E304 E0056904 C6000024 */  lwc1      $f0, 0x24($s0)
/* 35E308 E0056908 46000021 */  cvt.d.s   $f0, $f0
/* 35E30C E005690C 46340000 */  add.d     $f0, $f0, $f20
.LE0056910:
/* 35E310 E0056910 46200020 */  cvt.s.d   $f0, $f0
/* 35E314 E0056914 E6000024 */  swc1      $f0, 0x24($s0)
/* 35E318 E0056918 C6000000 */  lwc1      $f0, 0x0($s0)
/* 35E31C E005691C 4600C03C */  c.lt.s    $f24, $f0
/* 35E320 E0056920 00000000 */  nop
/* 35E324 E0056924 45000005 */  bc1f      .LE005693C
/* 35E328 E0056928 00000000 */   nop
/* 35E32C E005692C C600002C */  lwc1      $f0, 0x2C($s0)
/* 35E330 E0056930 46000021 */  cvt.d.s   $f0, $f0
/* 35E334 E0056934 08015A52 */  j         .LE0056948
/* 35E338 E0056938 46340001 */   sub.d    $f0, $f0, $f20
.LE005693C:
/* 35E33C E005693C C600002C */  lwc1      $f0, 0x2C($s0)
/* 35E340 E0056940 46000021 */  cvt.d.s   $f0, $f0
/* 35E344 E0056944 46340000 */  add.d     $f0, $f0, $f20
.LE0056948:
/* 35E348 E0056948 46200020 */  cvt.s.d   $f0, $f0
/* 35E34C E005694C E600002C */  swc1      $f0, 0x2C($s0)
/* 35E350 E0056950 C6040024 */  lwc1      $f4, 0x24($s0)
/* 35E354 E0056954 46002121 */  cvt.d.s   $f4, $f4
/* 35E358 E0056958 46362102 */  mul.d     $f4, $f4, $f22
/* 35E35C E005695C 00000000 */  nop
/* 35E360 E0056960 C602002C */  lwc1      $f2, 0x2C($s0)
/* 35E364 E0056964 460010A1 */  cvt.d.s   $f2, $f2
/* 35E368 E0056968 46361082 */  mul.d     $f2, $f2, $f22
/* 35E36C E005696C 00000000 */  nop
/* 35E370 E0056970 C6000008 */  lwc1      $f0, 0x8($s0)
/* 35E374 E0056974 46000021 */  cvt.d.s   $f0, $f0
/* 35E378 E0056978 46360002 */  mul.d     $f0, $f0, $f22
/* 35E37C E005697C 00000000 */  nop
/* 35E380 E0056980 46202120 */  cvt.s.d   $f4, $f4
/* 35E384 E0056984 462010A0 */  cvt.s.d   $f2, $f2
/* 35E388 E0056988 46200020 */  cvt.s.d   $f0, $f0
/* 35E38C E005698C E6040024 */  swc1      $f4, 0x24($s0)
/* 35E390 E0056990 E602002C */  swc1      $f2, 0x2C($s0)
/* 35E394 E0056994 08015A8F */  j         .LE0056A3C
/* 35E398 E0056998 E6000008 */   swc1     $f0, 0x8($s0)
.LE005699C:
/* 35E39C E005699C C600FFF8 */  lwc1      $f0, -0x8($s0)
/* 35E3A0 E00569A0 4600C03C */  c.lt.s    $f24, $f0
/* 35E3A4 E00569A4 00000000 */  nop
/* 35E3A8 E00569A8 45000005 */  bc1f      .LE00569C0
/* 35E3AC E00569AC 00000000 */   nop
/* 35E3B0 E00569B0 C6000024 */  lwc1      $f0, 0x24($s0)
/* 35E3B4 E00569B4 46000021 */  cvt.d.s   $f0, $f0
/* 35E3B8 E00569B8 08015A73 */  j         .LE00569CC
/* 35E3BC E00569BC 46340001 */   sub.d    $f0, $f0, $f20
.LE00569C0:
/* 35E3C0 E00569C0 C6000024 */  lwc1      $f0, 0x24($s0)
/* 35E3C4 E00569C4 46000021 */  cvt.d.s   $f0, $f0
/* 35E3C8 E00569C8 46340000 */  add.d     $f0, $f0, $f20
.LE00569CC:
/* 35E3CC E00569CC 46200020 */  cvt.s.d   $f0, $f0
/* 35E3D0 E00569D0 E6000024 */  swc1      $f0, 0x24($s0)
/* 35E3D4 E00569D4 C6000000 */  lwc1      $f0, 0x0($s0)
/* 35E3D8 E00569D8 4600C03C */  c.lt.s    $f24, $f0
/* 35E3DC E00569DC 00000000 */  nop
/* 35E3E0 E00569E0 45000005 */  bc1f      .LE00569F8
/* 35E3E4 E00569E4 00000000 */   nop
/* 35E3E8 E00569E8 C600002C */  lwc1      $f0, 0x2C($s0)
/* 35E3EC E00569EC 46000021 */  cvt.d.s   $f0, $f0
/* 35E3F0 E00569F0 08015A81 */  j         .LE0056A04
/* 35E3F4 E00569F4 46340001 */   sub.d    $f0, $f0, $f20
.LE00569F8:
/* 35E3F8 E00569F8 C600002C */  lwc1      $f0, 0x2C($s0)
/* 35E3FC E00569FC 46000021 */  cvt.d.s   $f0, $f0
/* 35E400 E0056A00 46340000 */  add.d     $f0, $f0, $f20
.LE0056A04:
/* 35E404 E0056A04 46200020 */  cvt.s.d   $f0, $f0
/* 35E408 E0056A08 E600002C */  swc1      $f0, 0x2C($s0)
/* 35E40C E0056A0C C6020024 */  lwc1      $f2, 0x24($s0)
/* 35E410 E0056A10 460010A1 */  cvt.d.s   $f2, $f2
/* 35E414 E0056A14 46361082 */  mul.d     $f2, $f2, $f22
/* 35E418 E0056A18 00000000 */  nop
/* 35E41C E0056A1C C600002C */  lwc1      $f0, 0x2C($s0)
/* 35E420 E0056A20 46000021 */  cvt.d.s   $f0, $f0
/* 35E424 E0056A24 46360002 */  mul.d     $f0, $f0, $f22
/* 35E428 E0056A28 00000000 */  nop
/* 35E42C E0056A2C 462010A0 */  cvt.s.d   $f2, $f2
/* 35E430 E0056A30 46200020 */  cvt.s.d   $f0, $f0
/* 35E434 E0056A34 E6020024 */  swc1      $f2, 0x24($s0)
/* 35E438 E0056A38 E600002C */  swc1      $f0, 0x2C($s0)
.LE0056A3C:
/* 35E43C E0056A3C 26310014 */  addiu     $s1, $s1, 0x14
/* 35E440 E0056A40 C606FFF8 */  lwc1      $f6, -0x8($s0)
/* 35E444 E0056A44 C6000024 */  lwc1      $f0, 0x24($s0)
/* 35E448 E0056A48 C604FFFC */  lwc1      $f4, -0x4($s0)
/* 35E44C E0056A4C 46003180 */  add.s     $f6, $f6, $f0
/* 35E450 E0056A50 C6000028 */  lwc1      $f0, 0x28($s0)
/* 35E454 E0056A54 C602002C */  lwc1      $f2, 0x2C($s0)
/* 35E458 E0056A58 46002100 */  add.s     $f4, $f4, $f0
/* 35E45C E0056A5C C6000000 */  lwc1      $f0, 0x0($s0)
/* 35E460 E0056A60 26520001 */  addiu     $s2, $s2, 0x1
/* 35E464 E0056A64 46020000 */  add.s     $f0, $f0, $f2
/* 35E468 E0056A68 E606FFF8 */  swc1      $f6, -0x8($s0)
/* 35E46C E0056A6C E604FFFC */  swc1      $f4, -0x4($s0)
/* 35E470 E0056A70 E6000000 */  swc1      $f0, 0x0($s0)
/* 35E474 E0056A74 8E820008 */  lw        $v0, 0x8($s4)
/* 35E478 E0056A78 0242102A */  slt       $v0, $s2, $v0
/* 35E47C E0056A7C 1440FF52 */  bnez      $v0, .LE00567C8
/* 35E480 E0056A80 2610003C */   addiu    $s0, $s0, 0x3C
/* 35E484 E0056A84 08015AD6 */  j         .LE0056B58
/* 35E488 E0056A88 00000000 */   nop
.LE0056A8C:
/* 35E48C E0056A8C 8E820008 */  lw        $v0, 0x8($s4)
/* 35E490 E0056A90 0242102A */  slt       $v0, $s2, $v0
/* 35E494 E0056A94 10400030 */  beqz      $v0, .LE0056B58
/* 35E498 E0056A98 24900008 */   addiu    $s0, $a0, 0x8
/* 35E49C E0056A9C 24B10015 */  addiu     $s1, $a1, 0x15
/* 35E4A0 E0056AA0 3C014120 */  lui       $at, (0x41200000 >> 16)
/* 35E4A4 E0056AA4 4481A000 */  mtc1      $at, $f20
/* 35E4A8 E0056AA8 3C013FE0 */  lui       $at, (0x3FE00000 >> 16)
/* 35E4AC E0056AAC 4481B800 */  mtc1      $at, $f23
/* 35E4B0 E0056AB0 4480B000 */  mtc1      $zero, $f22
.LE0056AB4:
/* 35E4B4 E0056AB4 24040032 */  addiu     $a0, $zero, 0x32
/* 35E4B8 E0056AB8 0C080011 */  jal       func_E0200044
/* 35E4BC E0056ABC 0220282D */   daddu    $a1, $s1, $zero
/* 35E4C0 E0056AC0 2442FFE7 */  addiu     $v0, $v0, -0x19
/* 35E4C4 E0056AC4 C60C0014 */  lwc1      $f12, 0x14($s0)
/* 35E4C8 E0056AC8 44820000 */  mtc1      $v0, $f0
/* 35E4CC E0056ACC 00000000 */  nop
/* 35E4D0 E0056AD0 46800020 */  cvt.s.w   $f0, $f0
/* 35E4D4 E0056AD4 46006300 */  add.s     $f12, $f12, $f0
/* 35E4D8 E0056AD8 0C080140 */  jal       shim_sin_deg
/* 35E4DC E0056ADC E60C0014 */   swc1     $f12, 0x14($s0)
/* 35E4E0 E0056AE0 C60C0014 */  lwc1      $f12, 0x14($s0)
/* 35E4E4 E0056AE4 46006321 */  cvt.d.s   $f12, $f12
/* 35E4E8 E0056AE8 46366302 */  mul.d     $f12, $f12, $f22
/* 35E4EC E0056AEC 00000000 */  nop
/* 35E4F0 E0056AF0 46140002 */  mul.s     $f0, $f0, $f20
/* 35E4F4 E0056AF4 00000000 */  nop
/* 35E4F8 E0056AF8 C6020010 */  lwc1      $f2, 0x10($s0)
/* 35E4FC E0056AFC 46001080 */  add.s     $f2, $f2, $f0
/* 35E500 E0056B00 E6020010 */  swc1      $f2, 0x10($s0)
/* 35E504 E0056B04 0C080144 */  jal       shim_cos_deg
/* 35E508 E0056B08 46206320 */   cvt.s.d  $f12, $f12
/* 35E50C E0056B0C 46140002 */  mul.s     $f0, $f0, $f20
/* 35E510 E0056B10 00000000 */  nop
/* 35E514 E0056B14 C606FFFC */  lwc1      $f6, -0x4($s0)
/* 35E518 E0056B18 C6020008 */  lwc1      $f2, 0x8($s0)
/* 35E51C E0056B1C C6040000 */  lwc1      $f4, 0x0($s0)
/* 35E520 E0056B20 46023180 */  add.s     $f6, $f6, $f2
/* 35E524 E0056B24 C602000C */  lwc1      $f2, 0xC($s0)
/* 35E528 E0056B28 26310014 */  addiu     $s1, $s1, 0x14
/* 35E52C E0056B2C 46022100 */  add.s     $f4, $f4, $f2
/* 35E530 E0056B30 C6020018 */  lwc1      $f2, 0x18($s0)
/* 35E534 E0056B34 26520001 */  addiu     $s2, $s2, 0x1
/* 35E538 E0056B38 46001080 */  add.s     $f2, $f2, $f0
/* 35E53C E0056B3C E606FFFC */  swc1      $f6, -0x4($s0)
/* 35E540 E0056B40 E6040000 */  swc1      $f4, 0x0($s0)
/* 35E544 E0056B44 E6020018 */  swc1      $f2, 0x18($s0)
/* 35E548 E0056B48 8E820008 */  lw        $v0, 0x8($s4)
/* 35E54C E0056B4C 0242102A */  slt       $v0, $s2, $v0
/* 35E550 E0056B50 1440FFD8 */  bnez      $v0, .LE0056AB4
/* 35E554 E0056B54 2610003C */   addiu    $s0, $s0, 0x3C
.LE0056B58:
/* 35E558 E0056B58 8FBF0024 */  lw        $ra, 0x24($sp)
/* 35E55C E0056B5C 8FB40020 */  lw        $s4, 0x20($sp)
/* 35E560 E0056B60 8FB3001C */  lw        $s3, 0x1C($sp)
/* 35E564 E0056B64 8FB20018 */  lw        $s2, 0x18($sp)
/* 35E568 E0056B68 8FB10014 */  lw        $s1, 0x14($sp)
/* 35E56C E0056B6C 8FB00010 */  lw        $s0, 0x10($sp)
/* 35E570 E0056B70 D7BC0048 */  ldc1      $f28, 0x48($sp)
/* 35E574 E0056B74 D7BA0040 */  ldc1      $f26, 0x40($sp)
/* 35E578 E0056B78 D7B80038 */  ldc1      $f24, 0x38($sp)
/* 35E57C E0056B7C D7B60030 */  ldc1      $f22, 0x30($sp)
/* 35E580 E0056B80 D7B40028 */  ldc1      $f20, 0x28($sp)
/* 35E584 E0056B84 03E00008 */  jr        $ra
/* 35E588 E0056B88 27BD0050 */   addiu    $sp, $sp, 0x50

### DECOMPILED C INSTRUCTIONS:

void windy_leaves_update(EffectInstance* effect) {
    WindyLeavesFXData* part = effect->data.windyLeaves;
    f32 temp_f0_2;
    f32 temp_f4;
    s32 temp_v0;
    s32 temp_v0_2;
    s32 temp_a1;
    s32 i;
    s32 temp;
    s32 temp2;

    part->unk_28--;
    part->unk_2C++;
    if (part->unk_28 < 0) {
        shim_remove_effect(effect);
        return;
    }
    temp_a1 = part->unk_2C;
    temp_v0 = part->unk_28;
    temp = part->type;
    if (temp_a1 < 10) {
        part->alpha += (255 - part->alpha) * 0.3;
    }
    if (temp_v0 < 10) {
        part->alpha *= 0.8;
    }

    part++;
    switch (temp) {
        case 0:
            for (i = 1; i < effect->numParts; i++, part++) {
                f32 temp3 = (shim_sin_deg(2.0f * part->unk_18) * 0.2);
                part->unk_14 += -0.05f;
                part->unk_10 += temp3;
                if (temp == 0) {
                    part->unk_10 *= 0.94;
                    part->unk_14 *= shim_sin_deg(part->unk_18) * 0.05 + 0.95;
                } else {
                    part->unk_14 += -0.05f;
                    part->unk_10 *= 0.92;
                }
                part->unk_1C += func_E0200044(50, temp_a1 + i * 20) - 25;
                part->unk_18 += shim_sin_deg(part->unk_1C) * 10.0f;
                part->unk_20 += shim_cos_deg(part->unk_1C * 0.5) * 10.0f;
                part->unk_04.x += part->unk_10;
                part->unk_04.y += part->unk_14;
                if (part->unk_04.y < 30.0f) {
                    if (part->unk_04.x > -200.0f) {
                        part->unk_30 -= 0.4;
                    } else {
                        part->unk_30 += 0.4;
                    }
                    if (part->unk_04.z > 0.0f) {
                        part->unk_38 -= 0.4;
                    } else {
                        part->unk_38 += 0.4;
                    }
                    part->unk_30 *= 0.98;
                    part->unk_38 *= 0.98;
                    part->unk_14 *= 0.98;
                } else {
                    if(part->unk_04.x > 0.0f) {
                        part->unk_30 -= 0.4;
                    } else {
                        part->unk_30 += 0.4;
                    }
                    if (part->unk_04.z > 0.0f){
                        part->unk_38 -= 0.4;
                    } else {
                        part->unk_38 += 0.4;
                    }
                    part->unk_30 *= 0.98;
                    part->unk_38 *= 0.98;
                }
                part->unk_04.x += part->unk_30;
                part->unk_04.y += part->unk_34;
                part->unk_04.z += part->unk_38;
            }
            break;
        case 1:
            for (i = 1; i < effect->numParts; i++, part++) {
                part->unk_10 += (f32)(shim_sin_deg(2.0f * part->unk_18) * 0.2 * 2.0);
                part->unk_14 += -0.05f;
                part->unk_10 *= 0.8464;
                part->unk_14 += -0.05f;
                part->unk_1C += func_E0200044(50, temp_a1 + i * 20) - 25;
                part->unk_18 += shim_sin_deg(part->unk_1C) * 10.0f;
                part->unk_20 += shim_cos_deg(part->unk_1C * 0.5) * 10.0f;
                part->unk_04.x += part->unk_10;
                part->unk_04.y += part->unk_14;
                if (part->unk_04.y < 30.0f) {
                    if (part->unk_04.x > -200.0f) {
                        part->unk_30 -= 0.8;
                    } else {
                        part->unk_30 += 0.8;
                    }
                    if (part->unk_04.z > 0.0f) {
                        part->unk_38 -= 0.8;
                    } else {
                        part->unk_38 += 0.8;
                    }
                    part->unk_30 *= 0.9603999999999999;
                    part->unk_38 *= 0.9603999999999999;
                    part->unk_14 *= 0.9603999999999999;
                } else {
                    if (part->unk_04.x > 0.0f){
                        part->unk_30 -= 0.8;
                    } else {
                        part->unk_30 += 0.8;
                    }
                    if (part->unk_04.z > 0.0f){
                        part->unk_38 -= 0.8;
                    } else {
                        part->unk_38 += 0.8;
                    }
                    part->unk_30 *= 0.9603999999999999;
                    part->unk_38 *= 0.9603999999999999;
                }
                part->unk_04.x += part->unk_30;
                part->unk_04.y += part->unk_34;
                part->unk_04.z += part->unk_38;
            }
            break;
        case 2:
            for (i = 1; i < effect->numParts; i++, part++) {
                part->unk_1C += func_E0200044(50,  temp_a1 + i * 20) - 25;
                part->unk_18 += shim_sin_deg(part->unk_1C) * 10.0f;
                part->unk_20 += shim_cos_deg(part->unk_1C * 0.5) * 10.0f;
                part->unk_04.x += part->unk_10;
                part->unk_04.y += part->unk_14;
            }
            break;
    }
}