### RAW ASSEMBLY INSTRUCTIONS:

glabel action_update_parasol
/* E2A7D0 802B6120 27BDFFB0 */  addiu     $sp, $sp, -0x50
.L802B6124:
/* E2A7D4 802B6124 AFB10024 */  sw        $s1, 0x24($sp)
.L802B6128:
/* E2A7D8 802B6128 3C118011 */  lui       $s1, %hi(gPlayerStatus)
/* E2A7DC 802B612C 2631EFC8 */  addiu     $s1, $s1, %lo(gPlayerStatus)
/* E2A7E0 802B6130 AFB20028 */  sw        $s2, 0x28($sp)
glabel .L802B6134
/* E2A7E4 802B6134 3C12802B */  lui       $s2, %hi(ParasolTransformation)
/* E2A7E8 802B6138 26526E80 */  addiu     $s2, $s2, %lo(ParasolTransformation)
.L802B613C:
/* E2A7EC 802B613C 3C038007 */  lui       $v1, %hi(gCurrentCameraID)
.L802B6140:
/* E2A7F0 802B6140 8C637410 */  lw        $v1, %lo(gCurrentCameraID)($v1)
.L802B6144:
/* E2A7F4 802B6144 3C04800B */  lui       $a0, %hi(gCameras)
/* E2A7F8 802B6148 24841D80 */  addiu     $a0, $a0, %lo(gCameras)
.L802B614C:
/* E2A7FC 802B614C AFBF0030 */  sw        $ra, 0x30($sp)
.L802B6150:
/* E2A800 802B6150 AFB3002C */  sw        $s3, 0x2C($sp)
.L802B6154:
/* E2A804 802B6154 AFB00020 */  sw        $s0, 0x20($sp)
.L802B6158:
/* E2A808 802B6158 F7B80048 */  sdc1      $f24, 0x48($sp)
.L802B615C:
/* E2A80C 802B615C F7B60040 */  sdc1      $f22, 0x40($sp)
/* E2A810 802B6160 F7B40038 */  sdc1      $f20, 0x38($sp)
.L802B6164:
/* E2A814 802B6164 00031080 */  sll       $v0, $v1, 2
.L802B6168:
/* E2A818 802B6168 00431021 */  addu      $v0, $v0, $v1
/* E2A81C 802B616C 00021080 */  sll       $v0, $v0, 2
glabel .L802B6170
/* E2A820 802B6170 00431023 */  subu      $v0, $v0, $v1
glabel .L802B6174
/* E2A824 802B6174 000218C0 */  sll       $v1, $v0, 3
/* E2A828 802B6178 00431021 */  addu      $v0, $v0, $v1
.L802B617C:
/* E2A82C 802B617C 000210C0 */  sll       $v0, $v0, 3
.L802B6180:
/* E2A830 802B6180 8E230000 */  lw        $v1, 0x0($s1)
glabel .L802B6184
/* E2A834 802B6184 04610043 */  bgez      $v1, func_802B6294
.L802B6188:
/* E2A838 802B6188 00449821 */   addu     $s3, $v0, $a0
.L802B618C:
/* E2A83C 802B618C 3C027FFF */  lui       $v0, (0x7FFFFFFF >> 16)
.L802B6190:
/* E2A840 802B6190 3442FFFF */  ori       $v0, $v0, (0x7FFFFFFF & 0xFFFF)
.L802B6194:
/* E2A844 802B6194 0240202D */  daddu     $a0, $s2, $zero
glabel func_802B6198
/* E2A848 802B6198 24050024 */  addiu     $a1, $zero, 0x24
/* E2A84C 802B619C 00621024 */  and       $v0, $v1, $v0
.L802B61A0:
/* E2A850 802B61A0 0C00A580 */  jal       mem_clear
.L802B61A4:
/* E2A854 802B61A4 AE220000 */   sw       $v0, 0x0($s1)
.L802B61A8:
/* E2A858 802B61A8 0C038045 */  jal       disable_player_static_collisions
.L802B61AC:
/* E2A85C 802B61AC 00000000 */   nop
.L802B61B0:
/* E2A860 802B61B0 3C01C000 */  lui       $at, (0xC0000000 >> 16)
.L802B61B4:
/* E2A864 802B61B4 44812000 */  mtc1      $at, $f4
/* E2A868 802B61B8 C62200A8 */  lwc1      $f2, 0xA8($s1)
/* E2A86C 802B61BC 3C0142B4 */  lui       $at, (0x42B40000 >> 16)
glabel func_802B61C0
/* E2A870 802B61C0 44810000 */  mtc1      $at, $f0
/* E2A874 802B61C4 2643001C */  addiu     $v1, $s2, 0x1C
.L802B61C8:
/* E2A878 802B61C8 A62000C0 */  sh        $zero, 0xC0($s1)
.L802B61CC:
/* E2A87C 802B61CC A62000C2 */  sh        $zero, 0xC2($s1)
/* E2A880 802B61D0 AE200054 */  sw        $zero, 0x54($s1)
.L802B61D4:
/* E2A884 802B61D4 4602003E */  c.le.s    $f0, $f2
.L802B61D8:
/* E2A888 802B61D8 00000000 */  nop
.L802B61DC:
/* E2A88C 802B61DC 4500000A */  bc1f      .L802B6208
/* E2A890 802B61E0 AE20008C */   sw       $zero, 0x8C($s1)
glabel func_802B61E4
/* E2A894 802B61E4 3C014387 */  lui       $at, (0x43870000 >> 16)
.L802B61E8:
/* E2A898 802B61E8 44810000 */  mtc1      $at, $f0
.L802B61EC:
/* E2A89C 802B61EC 00000000 */  nop
.L802B61F0:
/* E2A8A0 802B61F0 4600103C */  c.lt.s    $f2, $f0
.L802B61F4:
/* E2A8A4 802B61F4 00000000 */  nop
.L802B61F8:
/* E2A8A8 802B61F8 45000003 */  bc1f      .L802B6208
.L802B61FC:
/* E2A8AC 802B61FC 00000000 */   nop
.L802B6200:
/* E2A8B0 802B6200 3C014000 */  lui       $at, (0x40000000 >> 16)
.L802B6204:
/* E2A8B4 802B6204 44812000 */  mtc1      $at, $f4
glabel .L802B6208
/* E2A8B8 802B6208 8E220004 */  lw        $v0, 0x4($s1)
/* E2A8BC 802B620C 30422000 */  andi      $v0, $v0, 0x2000
.L802B6210:
/* E2A8C0 802B6210 14400009 */  bnez      $v0, .L802B6238
.L802B6214:
/* E2A8C4 802B6214 E4640000 */   swc1     $f4, 0x0($v1)
glabel .L802B6218
/* E2A8C8 802B6218 24020014 */  addiu     $v0, $zero, 0x14
/* E2A8CC 802B621C A6220008 */  sh        $v0, 0x8($s1)
.L802B6220:
/* E2A8D0 802B6220 2402000F */  addiu     $v0, $zero, 0xF
.L802B6224:
/* E2A8D4 802B6224 A22000B6 */  sb        $zero, 0xB6($s1)
glabel .L802B6228
/* E2A8D8 802B6228 0C0AD800 */  jal       parasol_get_npc
.L802B622C:
/* E2A8DC 802B622C AE420008 */   sw       $v0, 0x8($s2)
glabel action_update_step_up_peach
/* E2A8E0 802B6230 080AD8A5 */  j         func_802B6294
/* E2A8E4 802B6234 AE420000 */   sw       $v0, 0x0($s2)
glabel .L802B6238
/* E2A8E8 802B6238 3C048011 */  lui       $a0, %hi(PeachDisguiseNpcIndex)
glabel .L802B623C
/* E2A8EC 802B623C 8C84C96C */  lw        $a0, %lo(PeachDisguiseNpcIndex)($a0)
glabel .L802B6240
/* E2A8F0 802B6240 24020014 */  addiu     $v0, $zero, 0x14
glabel .L802B6244
/* E2A8F4 802B6244 A22200B6 */  sb        $v0, 0xB6($s1)
glabel .L802B6248
/* E2A8F8 802B6248 24020028 */  addiu     $v0, $zero, 0x28
/* E2A8FC 802B624C A6220008 */  sh        $v0, 0x8($s1)
glabel .L802B6250
/* E2A900 802B6250 24020001 */  addiu     $v0, $zero, 0x1
.L802B6254:
/* E2A904 802B6254 AE420004 */  sw        $v0, 0x4($s2)
glabel .L802B6258
/* E2A908 802B6258 2402000C */  addiu     $v0, $zero, 0xC
.L802B625C:
/* E2A90C 802B625C 0C00E2B7 */  jal       get_npc_by_index
/* E2A910 802B6260 AE42000C */   sw       $v0, 0xC($s2)
/* E2A914 802B6264 0040802D */  daddu     $s0, $v0, $zero
.L802B6268:
/* E2A918 802B6268 240400FD */  addiu     $a0, $zero, 0xFD
.L802B626C:
/* E2A91C 802B626C 0000282D */  daddu     $a1, $zero, $zero
/* E2A920 802B6270 8E020000 */  lw        $v0, 0x0($s0)
.L802B6274:
/* E2A924 802B6274 3C030004 */  lui       $v1, (0x40000 >> 16)
glabel .L802B6278
/* E2A928 802B6278 00431025 */  or        $v0, $v0, $v1
/* E2A92C 802B627C AE020000 */  sw        $v0, 0x0($s0)
.L802B6280:
/* E2A930 802B6280 8E220000 */  lw        $v0, 0x0($s1)
.L802B6284:
/* E2A934 802B6284 3C030010 */  lui       $v1, (0x100000 >> 16)
glabel action_update_run
/* E2A938 802B6288 00431025 */  or        $v0, $v0, $v1
/* E2A93C 802B628C 0C052736 */  jal       sfx_play_sound_at_player
.L802B6290:
/* E2A940 802B6290 AE220000 */   sw       $v0, 0x0($s1)
glabel func_802B6294
/* E2A944 802B6294 822300B6 */  lb        $v1, 0xB6($s1)
glabel .L802B6298
/* E2A948 802B6298 2C620033 */  sltiu     $v0, $v1, 0x33
/* E2A94C 802B629C 104001D4 */  beqz      $v0, .L802B69F0
/* E2A950 802B62A0 00031080 */   sll      $v0, $v1, 2
glabel func_802B62A4
/* E2A954 802B62A4 3C01802B */  lui       $at, %hi(jtbl_802B6D90)
.L802B62A8:
/* E2A958 802B62A8 00220821 */  addu      $at, $at, $v0
/* E2A95C 802B62AC 8C226D90 */  lw        $v0, %lo(jtbl_802B6D90)($at)
jtbl_802B62B0:
/* E2A960 802B62B0 00400008 */  jr        $v0
.L802B62B4:
/* E2A964 802B62B4 00000000 */   nop
glabel .L802B62B8
/* E2A968 802B62B8 C6220090 */  lwc1      $f2, 0x90($s1)
/* E2A96C 802B62BC 44800000 */  mtc1      $zero, $f0
/* E2A970 802B62C0 00000000 */  nop
/* E2A974 802B62C4 46001032 */  c.eq.s    $f2, $f0
.L802B62C8:
/* E2A978 802B62C8 00000000 */  nop
glabel action_update_peach_land
/* E2A97C 802B62CC 45000015 */  bc1f      .L802B6324
Munchlesia_LaunchVelocity:
/* E2A980 802B62D0 00000000 */   nop
Munchlesia_LateralVelocity:
/* E2A984 802B62D4 0C0399B1 */  jal       peach_disguise_check_overlaps
Munchlesia_LaunchAccel:
/* E2A988 802B62D8 00000000 */   nop
Munchlesia_LaunchYaw:
/* E2A98C 802B62DC 0441000A */  bgez      $v0, .L802B6308
D_802B62E0:
/* E2A990 802B62E0 3C04000C */   lui      $a0, (0xC0024 >> 16)
.L802B62E4:
/* E2A994 802B62E4 0C037FBF */  jal       suggest_player_anim_allow_backward
/* E2A998 802B62E8 34840024 */   ori      $a0, $a0, (0xC0024 & 0xFFFF)
/* E2A99C 802B62EC 24040092 */  addiu     $a0, $zero, 0x92
/* E2A9A0 802B62F0 0C052736 */  jal       sfx_play_sound_at_player
/* E2A9A4 802B62F4 0000282D */   daddu    $a1, $zero, $zero
glabel func_802B62F8
/* E2A9A8 802B62F8 922200B6 */  lbu       $v0, 0xB6($s1)
.L802B62FC:
/* E2A9AC 802B62FC 24420001 */  addiu     $v0, $v0, 0x1
D_802B6300:
/* E2A9B0 802B6300 080AD8C9 */  j         .L802B6324
/* E2A9B4 802B6304 A22200B6 */   sb       $v0, 0xB6($s1)
.L802B6308:
/* E2A9B8 802B6308 0C037FBF */  jal       suggest_player_anim_allow_backward
.L802B630C:
/* E2A9BC 802B630C 34840027 */   ori      $a0, $a0, (0xC0027 & 0xFFFF)
.L802B6310:
/* E2A9C0 802B6310 24020032 */  addiu     $v0, $zero, 0x32
/* E2A9C4 802B6314 A22200B6 */  sb        $v0, 0xB6($s1)
/* E2A9C8 802B6318 2402000A */  addiu     $v0, $zero, 0xA
glabel .L802B631C
/* E2A9CC 802B631C A6220008 */  sh        $v0, 0x8($s1)
.L802B6320:
/* E2A9D0 802B6320 AE400008 */  sw        $zero, 0x8($s2)
glabel .L802B6324
/* E2A9D4 802B6324 96220008 */  lhu       $v0, 0x8($s1)
.L802B6328:
/* E2A9D8 802B6328 2442FFFF */  addiu     $v0, $v0, -0x1
glabel .L802B632C
/* E2A9DC 802B632C A6220008 */  sh        $v0, 0x8($s1)
.L802B6330:
/* E2A9E0 802B6330 00021400 */  sll       $v0, $v0, 16
/* E2A9E4 802B6334 144001AE */  bnez      $v0, .L802B69F0
.L802B6338:
/* E2A9E8 802B6338 3C04000C */   lui      $a0, (0xC0025 >> 16)
/* E2A9EC 802B633C 0C037FBF */  jal       suggest_player_anim_allow_backward
.L802B6340:
/* E2A9F0 802B6340 34840025 */   ori      $a0, $a0, (0xC0025 & 0xFFFF)
/* E2A9F4 802B6344 8E430000 */  lw        $v1, 0x0($s2)
glabel func_802B6348
/* E2A9F8 802B6348 24020002 */  addiu     $v0, $zero, 0x2
/* E2A9FC 802B634C 14600004 */  bnez      $v1, D_802B6360
PlayerTweesterPhysicsPtr:
/* E2AA00 802B6350 A22200B6 */   sb       $v0, 0xB6($s1)
glabel .L802B6354
/* E2AA04 802B6354 24020028 */  addiu     $v0, $zero, 0x28
/* E2AA08 802B6358 080ADA7C */  j         .L802B69F0
.L802B635C:
/* E2AA0C 802B635C A22200B6 */   sb       $v0, 0xB6($s1)
D_802B6360:
/* E2AA10 802B6360 0C009C22 */  jal       set_time_freeze_mode
.L802B6364:
/* E2AA14 802B6364 24040002 */   addiu    $a0, $zero, 0x2
/* E2AA18 802B6368 080ADA7C */  j         .L802B69F0
.L802B636C:
/* E2AA1C 802B636C 00000000 */   nop
glabel .L802B6370
/* E2AA20 802B6370 962200BC */  lhu       $v0, 0xBC($s1)
.L802B6374:
/* E2AA24 802B6374 1040019E */  beqz      $v0, .L802B69F0
/* E2AA28 802B6378 240400FD */   addiu    $a0, $zero, 0xFD
glabel .L802B637C
/* E2AA2C 802B637C 0000282D */  daddu     $a1, $zero, $zero
/* E2AA30 802B6380 2402000C */  addiu     $v0, $zero, 0xC
/* E2AA34 802B6384 3C060010 */  lui       $a2, (0x100000 >> 16)
/* E2AA38 802B6388 A6220008 */  sh        $v0, 0x8($s1)
/* E2AA3C 802B638C 8E220000 */  lw        $v0, 0x0($s1)
/* E2AA40 802B6390 922300B6 */  lbu       $v1, 0xB6($s1)
glabel .L802B6394
/* E2AA44 802B6394 00461025 */  or        $v0, $v0, $a2
.L802B6398:
/* E2AA48 802B6398 24630001 */  addiu     $v1, $v1, 0x1
.L802B639C:
/* E2AA4C 802B639C AE220000 */  sw        $v0, 0x0($s1)
/* E2AA50 802B63A0 0C052736 */  jal       sfx_play_sound_at_player
/* E2AA54 802B63A4 A22300B6 */   sb       $v1, 0xB6($s1)
.L802B63A8:
/* E2AA58 802B63A8 080ADA7C */  j         .L802B69F0
.L802B63AC:
/* E2AA5C 802B63AC 00000000 */   nop
glabel .L802B63B0
/* E2AA60 802B63B0 96220008 */  lhu       $v0, 0x8($s1)
/* E2AA64 802B63B4 2442FFFF */  addiu     $v0, $v0, -0x1
/* E2AA68 802B63B8 A6220008 */  sh        $v0, 0x8($s1)
/* E2AA6C 802B63BC 00021400 */  sll       $v0, $v0, 16
.L802B63C0:
/* E2AA70 802B63C0 14400116 */  bnez      $v0, .L802B681C
.L802B63C4:
/* E2AA74 802B63C4 2402000A */   addiu    $v0, $zero, 0xA
.L802B63C8:
/* E2AA78 802B63C8 A6220008 */  sh        $v0, 0x8($s1)
.L802B63CC:
/* E2AA7C 802B63CC 922200B6 */  lbu       $v0, 0xB6($s1)
.L802B63D0:
/* E2AA80 802B63D0 2403000A */  addiu     $v1, $zero, 0xA
glabel action_update_first_strike
/* E2AA84 802B63D4 080ADA05 */  j         .L802B6814
.L802B63D8:
/* E2AA88 802B63D8 AE43000C */   sw       $v1, 0xC($s2)
glabel .L802B63DC
/* E2AA8C 802B63DC C63400A8 */  lwc1      $f20, 0xA8($s1)
.L802B63E0:
/* E2AA90 802B63E0 0C0ADB3C */  jal       func_802B6CF0_E2B3A0
.L802B63E4:
/* E2AA94 802B63E4 00000000 */   nop
/* E2AA98 802B63E8 C66C006C */  lwc1      $f12, 0x6C($s3)
/* E2AA9C 802B63EC C62000A8 */  lwc1      $f0, 0xA8($s1)
.L802B63F0:
/* E2AAA0 802B63F0 46006301 */  sub.s     $f12, $f12, $f0
.L802B63F4:
/* E2AAA4 802B63F4 3C0142B4 */  lui       $at, (0x42B40000 >> 16)
/* E2AAA8 802B63F8 44810000 */  mtc1      $at, $f0
/* E2AAAC 802B63FC 0C00A6C9 */  jal       clamp_angle
.L802B6400:
/* E2AAB0 802B6400 46006301 */   sub.s    $f12, $f12, $f0
/* E2AAB4 802B6404 86220008 */  lh        $v0, 0x8($s1)
/* E2AAB8 802B6408 96230008 */  lhu       $v1, 0x8($s1)
.L802B640C:
/* E2AABC 802B640C 144000F7 */  bnez      $v0, .L802B67EC
/* E2AAC0 802B6410 E6200080 */   swc1     $f0, 0x80($s1)
.L802B6414:
/* E2AAC4 802B6414 C642001C */  lwc1      $f2, 0x1C($s2)
.L802B6418:
/* E2AAC8 802B6418 44800000 */  mtc1      $zero, $f0
/* E2AACC 802B641C 00000000 */  nop
.L802B6420:
/* E2AAD0 802B6420 4602003C */  c.lt.s    $f0, $f2
.L802B6424:
/* E2AAD4 802B6424 00000000 */  nop
.L802B6428:
/* E2AAD8 802B6428 45000010 */  bc1f      .L802B646C
.L802B642C:
/* E2AADC 802B642C 0000102D */   daddu    $v0, $zero, $zero
D_802B6430:
/* E2AAE0 802B6430 3C014387 */  lui       $at, (0x43870000 >> 16)
/* E2AAE4 802B6434 44811000 */  mtc1      $at, $f2
/* E2AAE8 802B6438 00000000 */  nop
/* E2AAEC 802B643C 4602A03C */  c.lt.s    $f20, $f2
/* E2AAF0 802B6440 00000000 */  nop
/* E2AAF4 802B6444 45000006 */  bc1f      .L802B6460
.L802B6448:
/* E2AAF8 802B6448 00000000 */   nop
glabel action_update_peach_step_down_land
/* E2AAFC 802B644C C62000A8 */  lwc1      $f0, 0xA8($s1)
.L802B6450:
/* E2AB00 802B6450 4600103E */  c.le.s    $f2, $f0
.L802B6454:
/* E2AB04 802B6454 00000000 */  nop
/* E2AB08 802B6458 45030001 */  bc1tl     .L802B6460
/* E2AB0C 802B645C 24020001 */   addiu    $v0, $zero, 0x1
.L802B6460:
/* E2AB10 802B6460 C642001C */  lwc1      $f2, 0x1C($s2)
.L802B6464:
/* E2AB14 802B6464 44800000 */  mtc1      $zero, $f0
/* E2AB18 802B6468 00000000 */  nop
glabel .L802B646C
/* E2AB1C 802B646C 4600103C */  c.lt.s    $f2, $f0
/* E2AB20 802B6470 00000000 */  nop
/* E2AB24 802B6474 4500000D */  bc1f      .L802B64AC
glabel action_update_raise_arms
/* E2AB28 802B6478 00000000 */   nop
glabel action_update_peach_falling
/* E2AB2C 802B647C 3C014387 */  lui       $at, (0x43870000 >> 16)
/* E2AB30 802B6480 44811000 */  mtc1      $at, $f2
/* E2AB34 802B6484 00000000 */  nop
/* E2AB38 802B6488 4614103C */  c.lt.s    $f2, $f20
.L802B648C:
/* E2AB3C 802B648C 00000000 */  nop
.L802B6490:
/* E2AB40 802B6490 45000006 */  bc1f      .L802B64AC
.L802B6494:
/* E2AB44 802B6494 00000000 */   nop
/* E2AB48 802B6498 C62000A8 */  lwc1      $f0, 0xA8($s1)
/* E2AB4C 802B649C 4602003E */  c.le.s    $f0, $f2
.L802B64A0:
/* E2AB50 802B64A0 00000000 */  nop
/* E2AB54 802B64A4 45030001 */  bc1tl     .L802B64AC
glabel .L802B64A8
/* E2AB58 802B64A8 24020001 */   addiu    $v0, $zero, 0x1
.L802B64AC:
/* E2AB5C 802B64AC 10400150 */  beqz      $v0, .L802B69F0
/* E2AB60 802B64B0 24020006 */   addiu    $v0, $zero, 0x6
.L802B64B4:
/* E2AB64 802B64B4 8224000D */  lb        $a0, 0xD($s1)
/* E2AB68 802B64B8 A22200B6 */  sb        $v0, 0xB6($s1)
/* E2AB6C 802B64BC 24020002 */  addiu     $v0, $zero, 0x2
/* E2AB70 802B64C0 0C03995F */  jal       peach_make_disguise_npc
.L802B64C4:
/* E2AB74 802B64C4 A6220008 */   sh       $v0, 0x8($s1)
/* E2AB78 802B64C8 10400149 */  beqz      $v0, .L802B69F0
.L802B64CC:
/* E2AB7C 802B64CC 24020005 */   addiu    $v0, $zero, 0x5
.L802B64D0:
/* E2AB80 802B64D0 0C039940 */  jal       peach_sync_disguise_npc
.L802B64D4:
/* E2AB84 802B64D4 A22200B6 */   sb       $v0, 0xB6($s1)
.L802B64D8:
/* E2AB88 802B64D8 080ADA7C */  j         .L802B69F0
glabel .L802B64DC
/* E2AB8C 802B64DC 00000000 */   nop
glabel .L802B64E0
/* E2AB90 802B64E0 8E220004 */  lw        $v0, 0x4($s1)
/* E2AB94 802B64E4 3C038007 */  lui       $v1, %hi(gGameStatusPtr)
/* E2AB98 802B64E8 8C63419C */  lw        $v1, %lo(gGameStatusPtr)($v1)
.L802B64EC:
/* E2AB9C 802B64EC 34422000 */  ori       $v0, $v0, 0x2000
glabel .L802B64F0
/* E2ABA0 802B64F0 AE220004 */  sw        $v0, 0x4($s1)
/* E2ABA4 802B64F4 9062007E */  lbu       $v0, 0x7E($v1)
.L802B64F8:
/* E2ABA8 802B64F8 34420002 */  ori       $v0, $v0, 0x2
/* E2ABAC 802B64FC A062007E */  sb        $v0, 0x7E($v1)
/* E2ABB0 802B6500 922200B6 */  lbu       $v0, 0xB6($s1)
/* E2ABB4 802B6504 24420001 */  addiu     $v0, $v0, 0x1
glabel action_update_pushing_block
/* E2ABB8 802B6508 080AD9FE */  j         .L802B67F8
.L802B650C:
/* E2ABBC 802B650C A22200B6 */   sb       $v0, 0xB6($s1)
glabel .L802B6510
/* E2ABC0 802B6510 C640001C */  lwc1      $f0, 0x1C($s2)
/* E2ABC4 802B6514 44802000 */  mtc1      $zero, $f4
/* E2ABC8 802B6518 00000000 */  nop
.L802B651C:
/* E2ABCC 802B651C 4600203C */  c.lt.s    $f4, $f0
.L802B6520:
/* E2ABD0 802B6520 00000000 */  nop
.L802B6524:
/* E2ABD4 802B6524 4500001B */  bc1f      .L802B6594
/* E2ABD8 802B6528 00000000 */   nop
/* E2ABDC 802B652C C6400020 */  lwc1      $f0, 0x20($s2)
.L802B6530:
/* E2ABE0 802B6530 3C01802B */  lui       $at, %hi(D_802B6E60_E2B510)
.L802B6534:
/* E2ABE4 802B6534 D4226E60 */  ldc1      $f2, %lo(D_802B6E60_E2B510)($at)
/* E2ABE8 802B6538 46000021 */  cvt.d.s   $f0, $f0
/* E2ABEC 802B653C 46220001 */  sub.d     $f0, $f0, $f2
/* E2ABF0 802B6540 46200020 */  cvt.s.d   $f0, $f0
glabel .L802B6544
/* E2ABF4 802B6544 4604003E */  c.le.s    $f0, $f4
glabel .L802B6548
/* E2ABF8 802B6548 00000000 */  nop
/* E2ABFC 802B654C 450000F9 */  bc1f      .L802B6934
glabel func_802B6550
/* E2AC00 802B6550 E6400020 */   swc1     $f0, 0x20($s2)
.L802B6554:
/* E2AC04 802B6554 3C048011 */  lui       $a0, %hi(PeachDisguiseNpcIndex)
/* E2AC08 802B6558 8C84C96C */  lw        $a0, %lo(PeachDisguiseNpcIndex)($a0)
/* E2AC0C 802B655C 2402000A */  addiu     $v0, $zero, 0xA
/* E2AC10 802B6560 E6440020 */  swc1      $f4, 0x20($s2)
/* E2AC14 802B6564 A6220008 */  sh        $v0, 0x8($s1)
glabel .L802B6568
/* E2AC18 802B6568 922200B6 */  lbu       $v0, 0xB6($s1)
.L802B656C:
/* E2AC1C 802B656C 3C014334 */  lui       $at, (0x43340000 >> 16)
.L802B6570:
/* E2AC20 802B6570 44810000 */  mtc1      $at, $f0
.L802B6574:
/* E2AC24 802B6574 24420001 */  addiu     $v0, $v0, 0x1
/* E2AC28 802B6578 A22200B6 */  sb        $v0, 0xB6($s1)
/* E2AC2C 802B657C 0C00E2B7 */  jal       get_npc_by_index
.L802B6580:
/* E2AC30 802B6580 E62000A8 */   swc1     $f0, 0xA8($s1)
/* E2AC34 802B6584 0040802D */  daddu     $s0, $v0, $zero
/* E2AC38 802B6588 24020001 */  addiu     $v0, $zero, 0x1
glabel .L802B658C
/* E2AC3C 802B658C 080AD97B */  j         .L802B65EC
.L802B6590:
/* E2AC40 802B6590 A6020088 */   sh       $v0, 0x88($s0)
glabel .L802B6594
/* E2AC44 802B6594 C6400020 */  lwc1      $f0, 0x20($s2)
.L802B6598:
/* E2AC48 802B6598 3C01802B */  lui       $at, %hi(D_802B6E68_E2B518)
.L802B659C:
/* E2AC4C 802B659C D4226E68 */  ldc1      $f2, %lo(D_802B6E68_E2B518)($at)
/* E2AC50 802B65A0 46000021 */  cvt.d.s   $f0, $f0
glabel .L802B65A4
/* E2AC54 802B65A4 46220000 */  add.d     $f0, $f0, $f2
.L802B65A8:
/* E2AC58 802B65A8 46200020 */  cvt.s.d   $f0, $f0
/* E2AC5C 802B65AC 4600203E */  c.le.s    $f4, $f0
/* E2AC60 802B65B0 00000000 */  nop
glabel .L802B65B4
/* E2AC64 802B65B4 450000DF */  bc1f      .L802B6934
.L802B65B8:
/* E2AC68 802B65B8 E6400020 */   swc1     $f0, 0x20($s2)
/* E2AC6C 802B65BC 3C048011 */  lui       $a0, %hi(PeachDisguiseNpcIndex)
glabel .L802B65C0
/* E2AC70 802B65C0 8C84C96C */  lw        $a0, %lo(PeachDisguiseNpcIndex)($a0)
/* E2AC74 802B65C4 E6440020 */  swc1      $f4, 0x20($s2)
/* E2AC78 802B65C8 922300B6 */  lbu       $v1, 0xB6($s1)
glabel .L802B65CC
/* E2AC7C 802B65CC 2402000A */  addiu     $v0, $zero, 0xA
.L802B65D0:
/* E2AC80 802B65D0 A6220008 */  sh        $v0, 0x8($s1)
/* E2AC84 802B65D4 E62400A8 */  swc1      $f4, 0xA8($s1)
/* E2AC88 802B65D8 24630001 */  addiu     $v1, $v1, 0x1
.L802B65DC:
/* E2AC8C 802B65DC 0C00E2B7 */  jal       get_npc_by_index
.L802B65E0:
/* E2AC90 802B65E0 A22300B6 */   sb       $v1, 0xB6($s1)
.L802B65E4:
/* E2AC94 802B65E4 0040802D */  daddu     $s0, $v0, $zero
glabel action_update_walk_peach
/* E2AC98 802B65E8 A6000088 */  sh        $zero, 0x88($s0)
.L802B65EC:
/* E2AC9C 802B65EC C66C006C */  lwc1      $f12, 0x6C($s3)
.L802B65F0:
/* E2ACA0 802B65F0 C62000A8 */  lwc1      $f0, 0xA8($s1)
/* E2ACA4 802B65F4 46006301 */  sub.s     $f12, $f12, $f0
glabel func_802B65F8_E26D08
/* E2ACA8 802B65F8 3C0142B4 */  lui       $at, (0x42B40000 >> 16)
/* E2ACAC 802B65FC 44810000 */  mtc1      $at, $f0
/* E2ACB0 802B6600 0C00A6C9 */  jal       clamp_angle
.L802B6604:
/* E2ACB4 802B6604 46006301 */   sub.s    $f12, $f12, $f0
/* E2ACB8 802B6608 4600018D */  trunc.w.s $f6, $f0
glabel .L802B660C
/* E2ACBC 802B660C 44023000 */  mfc1      $v0, $f6
/* E2ACC0 802B6610 E600000C */  swc1      $f0, 0xC($s0)
/* E2ACC4 802B6614 080ADA4D */  j         .L802B6934
/* E2ACC8 802B6618 A602008A */   sh       $v0, 0x8A($s0)
glabel .L802B661C
/* E2ACCC 802B661C 96220008 */  lhu       $v0, 0x8($s1)
.L802B6620:
/* E2ACD0 802B6620 2442FFFF */  addiu     $v0, $v0, -0x1
/* E2ACD4 802B6624 A6220008 */  sh        $v0, 0x8($s1)
.L802B6628:
/* E2ACD8 802B6628 00021400 */  sll       $v0, $v0, 16
/* E2ACDC 802B662C 144000F0 */  bnez      $v0, .L802B69F0
.L802B6630:
/* E2ACE0 802B6630 00000000 */   nop
glabel .L802B6634
/* E2ACE4 802B6634 0C009C22 */  jal       set_time_freeze_mode
glabel action_update_talk
/* E2ACE8 802B6638 0000202D */   daddu    $a0, $zero, $zero
/* E2ACEC 802B663C 3C048011 */  lui       $a0, %hi(PeachDisguiseNpcIndex)
/* E2ACF0 802B6640 8C84C96C */  lw        $a0, %lo(PeachDisguiseNpcIndex)($a0)
glabel .L802B6644
/* E2ACF4 802B6644 0C00E2B7 */  jal       get_npc_by_index
glabel func_802B6648_E27428
/* E2ACF8 802B6648 00000000 */   nop
.L802B664C:
/* E2ACFC 802B664C 0040802D */  daddu     $s0, $v0, $zero
.L802B6650:
/* E2AD00 802B6650 3C03FFFB */  lui       $v1, (0xFFFBFFFF >> 16)
glabel .L802B6654
/* E2AD04 802B6654 3463FFFF */  ori       $v1, $v1, (0xFFFBFFFF & 0xFFFF)
/* E2AD08 802B6658 3C05FFEF */  lui       $a1, (0xFFEFFFFF >> 16)
/* E2AD0C 802B665C 8E020000 */  lw        $v0, 0x0($s0)
glabel .L802B6660
/* E2AD10 802B6660 34A5FFFF */  ori       $a1, $a1, (0xFFEFFFFF & 0xFFFF)
/* E2AD14 802B6664 00431024 */  and       $v0, $v0, $v1
/* E2AD18 802B6668 AE020000 */  sw        $v0, 0x0($s0)
glabel .L802B666C
/* E2AD1C 802B666C 8E220000 */  lw        $v0, 0x0($s1)
glabel .L802B6670
/* E2AD20 802B6670 0000202D */  daddu     $a0, $zero, $zero
glabel .L802B6674
/* E2AD24 802B6674 00451024 */  and       $v0, $v0, $a1
.L802B6678:
/* E2AD28 802B6678 080ADA78 */  j         .L802B69E0
/* E2AD2C 802B667C AE220000 */   sw       $v0, 0x0($s1)
glabel .L802B6680
/* E2AD30 802B6680 96220008 */  lhu       $v0, 0x8($s1)
/* E2AD34 802B6684 2442FFFF */  addiu     $v0, $v0, -0x1
/* E2AD38 802B6688 A6220008 */  sh        $v0, 0x8($s1)
glabel func_802B668C
/* E2AD3C 802B668C 00021400 */  sll       $v0, $v0, 16
jtbl_802B6690:
/* E2AD40 802B6690 14400004 */  bnez      $v0, .L802B66A4
/* E2AD44 802B6694 00000000 */   nop
.L802B6698:
/* E2AD48 802B6698 922200B6 */  lbu       $v0, 0xB6($s1)
/* E2AD4C 802B669C 24420001 */  addiu     $v0, $v0, 0x1
/* E2AD50 802B66A0 A22200B6 */  sb        $v0, 0xB6($s1)
.L802B66A4:
/* E2AD54 802B66A4 0C0ADB3C */  jal       func_802B6CF0_E2B3A0
glabel func_802B66A8
/* E2AD58 802B66A8 00000000 */   nop
/* E2AD5C 802B66AC C66C006C */  lwc1      $f12, 0x6C($s3)
.L802B66B0:
/* E2AD60 802B66B0 C62000A8 */  lwc1      $f0, 0xA8($s1)
.L802B66B4:
/* E2AD64 802B66B4 080ADA54 */  j         .L802B6950
/* E2AD68 802B66B8 46006301 */   sub.s    $f12, $f12, $f0
glabel .L802B66BC
/* E2AD6C 802B66BC C63400A8 */  lwc1      $f20, 0xA8($s1)
glabel .L802B66C0
/* E2AD70 802B66C0 0C0ADB3C */  jal       func_802B6CF0_E2B3A0
/* E2AD74 802B66C4 00000000 */   nop
/* E2AD78 802B66C8 C66C006C */  lwc1      $f12, 0x6C($s3)
/* E2AD7C 802B66CC C62000A8 */  lwc1      $f0, 0xA8($s1)
/* E2AD80 802B66D0 46006301 */  sub.s     $f12, $f12, $f0
/* E2AD84 802B66D4 3C0142B4 */  lui       $at, (0x42B40000 >> 16)
/* E2AD88 802B66D8 44810000 */  mtc1      $at, $f0
.L802B66DC:
/* E2AD8C 802B66DC 0C00A6C9 */  jal       clamp_angle
.L802B66E0:
/* E2AD90 802B66E0 46006301 */   sub.s    $f12, $f12, $f0
/* E2AD94 802B66E4 86220008 */  lh        $v0, 0x8($s1)
/* E2AD98 802B66E8 96230008 */  lhu       $v1, 0x8($s1)
/* E2AD9C 802B66EC 1440003F */  bnez      $v0, .L802B67EC
.L802B66F0:
/* E2ADA0 802B66F0 E6200080 */   swc1     $f0, 0x80($s1)
.L802B66F4:
/* E2ADA4 802B66F4 C642001C */  lwc1      $f2, 0x1C($s2)
/* E2ADA8 802B66F8 44800000 */  mtc1      $zero, $f0
/* E2ADAC 802B66FC 00000000 */  nop
/* E2ADB0 802B6700 4602003C */  c.lt.s    $f0, $f2
/* E2ADB4 802B6704 00000000 */  nop
.L802B6708:
/* E2ADB8 802B6708 45000010 */  bc1f      .L802B674C
/* E2ADBC 802B670C 0000102D */   daddu    $v0, $zero, $zero
.L802B6710:
/* E2ADC0 802B6710 3C014387 */  lui       $at, (0x43870000 >> 16)
/* E2ADC4 802B6714 44811000 */  mtc1      $at, $f2
D_802B6718_E274F8:
/* E2ADC8 802B6718 00000000 */  nop
.L802B671C:
/* E2ADCC 802B671C 4602A03C */  c.lt.s    $f20, $f2
D_802B6720_E27500:
/* E2ADD0 802B6720 00000000 */  nop
/* E2ADD4 802B6724 45000006 */  bc1f      .L802B6740
D_802B6728_E27508:
/* E2ADD8 802B6728 00000000 */   nop
.L802B672C:
/* E2ADDC 802B672C C62000A8 */  lwc1      $f0, 0xA8($s1)
D_802B6730:
/* E2ADE0 802B6730 4600103E */  c.le.s    $f2, $f0
/* E2ADE4 802B6734 00000000 */  nop
glabel func_802B6738
/* E2ADE8 802B6738 45030001 */  bc1tl     .L802B6740
/* E2ADEC 802B673C 24020001 */   addiu    $v0, $zero, 0x1
.L802B6740:
/* E2ADF0 802B6740 C642001C */  lwc1      $f2, 0x1C($s2)
.L802B6744:
/* E2ADF4 802B6744 44800000 */  mtc1      $zero, $f0
/* E2ADF8 802B6748 00000000 */  nop
.L802B674C:
/* E2ADFC 802B674C 4600103C */  c.lt.s    $f2, $f0
.L802B6750:
/* E2AE00 802B6750 00000000 */  nop
/* E2AE04 802B6754 4500000D */  bc1f      .L802B678C
.L802B6758:
/* E2AE08 802B6758 00000000 */   nop
/* E2AE0C 802B675C 3C014387 */  lui       $at, (0x43870000 >> 16)
D_802B6760_E29190:
/* E2AE10 802B6760 44811000 */  mtc1      $at, $f2
.L802B6764:
/* E2AE14 802B6764 00000000 */  nop
D_802B6768_E29198:
/* E2AE18 802B6768 4614103C */  c.lt.s    $f2, $f20
/* E2AE1C 802B676C 00000000 */  nop
D_802B6770_E27C80:
/* E2AE20 802B6770 45000006 */  bc1f      .L802B678C
/* E2AE24 802B6774 00000000 */   nop
.L802B6778:
/* E2AE28 802B6778 C62000A8 */  lwc1      $f0, 0xA8($s1)
.L802B677C:
/* E2AE2C 802B677C 4602003E */  c.le.s    $f0, $f2
D_802B6780:
/* E2AE30 802B6780 00000000 */  nop
D_802B6784:
/* E2AE34 802B6784 45030001 */  bc1tl     .L802B678C
glabel D_802B6788
/* E2AE38 802B6788 24020001 */   addiu    $v0, $zero, 0x1
.L802B678C:
/* E2AE3C 802B678C 10400098 */  beqz      $v0, .L802B69F0
D_802B6790:
/* E2AE40 802B6790 24030002 */   addiu    $v1, $zero, 0x2
D_802B6794:
/* E2AE44 802B6794 922200B6 */  lbu       $v0, 0xB6($s1)
D_802B6798:
/* E2AE48 802B6798 A6230008 */  sh        $v1, 0x8($s1)
D_802B679C:
/* E2AE4C 802B679C 2403DFFF */  addiu     $v1, $zero, -0x2001
/* E2AE50 802B67A0 24420001 */  addiu     $v0, $v0, 0x1
.L802B67A4:
/* E2AE54 802B67A4 A22200B6 */  sb        $v0, 0xB6($s1)
/* E2AE58 802B67A8 8E220004 */  lw        $v0, 0x4($s1)
/* E2AE5C 802B67AC 3C048007 */  lui       $a0, %hi(gGameStatusPtr)
.L802B67B0:
/* E2AE60 802B67B0 8C84419C */  lw        $a0, %lo(gGameStatusPtr)($a0)
.L802B67B4:
/* E2AE64 802B67B4 00431024 */  and       $v0, $v0, $v1
/* E2AE68 802B67B8 AE220004 */  sw        $v0, 0x4($s1)
glabel .L802B67BC
/* E2AE6C 802B67BC 9082007E */  lbu       $v0, 0x7E($a0)
.L802B67C0:
/* E2AE70 802B67C0 304200FD */  andi      $v0, $v0, 0xFD
.L802B67C4:
/* E2AE74 802B67C4 A082007E */  sb        $v0, 0x7E($a0)
/* E2AE78 802B67C8 3C048011 */  lui       $a0, %hi(PeachDisguiseNpcIndex)
/* E2AE7C 802B67CC 8C84C96C */  lw        $a0, %lo(PeachDisguiseNpcIndex)($a0)
/* E2AE80 802B67D0 0C00E228 */  jal       free_npc_by_index
/* E2AE84 802B67D4 A220000C */   sb       $zero, 0xC($s1)
.L802B67D8:
/* E2AE88 802B67D8 24020037 */  addiu     $v0, $zero, 0x37
/* E2AE8C 802B67DC A62200B0 */  sh        $v0, 0xB0($s1)
/* E2AE90 802B67E0 24020026 */  addiu     $v0, $zero, 0x26
.L802B67E4:
/* E2AE94 802B67E4 080ADA7C */  j         .L802B69F0
.L802B67E8:
/* E2AE98 802B67E8 A62200B2 */   sh       $v0, 0xB2($s1)
.L802B67EC:
/* E2AE9C 802B67EC 2462FFFF */  addiu     $v0, $v1, -0x1
/* E2AEA0 802B67F0 080ADA7C */  j         .L802B69F0
.L802B67F4:
/* E2AEA4 802B67F4 A6220008 */   sh       $v0, 0x8($s1)
glabel .L802B67F8
/* E2AEA8 802B67F8 96220008 */  lhu       $v0, 0x8($s1)
/* E2AEAC 802B67FC 2442FFFF */  addiu     $v0, $v0, -0x1
.L802B6800:
/* E2AEB0 802B6800 A6220008 */  sh        $v0, 0x8($s1)
.L802B6804:
/* E2AEB4 802B6804 00021400 */  sll       $v0, $v0, 16
glabel .L802B6808
/* E2AEB8 802B6808 14400004 */  bnez      $v0, .L802B681C
.L802B680C:
/* E2AEBC 802B680C 00000000 */   nop
.L802B6810:
/* E2AEC0 802B6810 922200B6 */  lbu       $v0, 0xB6($s1)
.L802B6814:
/* E2AEC4 802B6814 24420001 */  addiu     $v0, $v0, 0x1
/* E2AEC8 802B6818 A22200B6 */  sb        $v0, 0xB6($s1)
.L802B681C:
/* E2AECC 802B681C 0C0ADB3C */  jal       func_802B6CF0_E2B3A0
glabel func_802B6820_E256F0
/* E2AED0 802B6820 00000000 */   nop
.L802B6824:
/* E2AED4 802B6824 080ADA7C */  j         .L802B69F0
.L802B6828:
/* E2AED8 802B6828 00000000 */   nop
glabel .L802B682C
/* E2AEDC 802B682C C640001C */  lwc1      $f0, 0x1C($s2)
/* E2AEE0 802B6830 44802000 */  mtc1      $zero, $f4
/* E2AEE4 802B6834 00000000 */  nop
/* E2AEE8 802B6838 4600203C */  c.lt.s    $f4, $f0
/* E2AEEC 802B683C 00000000 */  nop
/* E2AEF0 802B6840 4500001D */  bc1f      .L802B68B8
/* E2AEF4 802B6844 00000000 */   nop
/* E2AEF8 802B6848 C6400020 */  lwc1      $f0, 0x20($s2)
/* E2AEFC 802B684C 3C01802B */  lui       $at, %hi(D_802B6E70_E2B520)
jtbl_802B6850:
/* E2AF00 802B6850 D4226E70 */  ldc1      $f2, %lo(D_802B6E70_E2B520)($at)
.L802B6854:
/* E2AF04 802B6854 46000021 */  cvt.d.s   $f0, $f0
.L802B6858:
/* E2AF08 802B6858 46220001 */  sub.d     $f0, $f0, $f2
/* E2AF0C 802B685C 46200020 */  cvt.s.d   $f0, $f0
/* E2AF10 802B6860 4604003E */  c.le.s    $f0, $f4
/* E2AF14 802B6864 00000000 */  nop
/* E2AF18 802B6868 45000032 */  bc1f      .L802B6934
/* E2AF1C 802B686C E6400020 */   swc1     $f0, 0x20($s2)
.L802B6870:
/* E2AF20 802B6870 2402000A */  addiu     $v0, $zero, 0xA
/* E2AF24 802B6874 E6440020 */  swc1      $f4, 0x20($s2)
/* E2AF28 802B6878 A6220008 */  sh        $v0, 0x8($s1)
/* E2AF2C 802B687C 922200B6 */  lbu       $v0, 0xB6($s1)
/* E2AF30 802B6880 3C014334 */  lui       $at, (0x43340000 >> 16)
/* E2AF34 802B6884 44810000 */  mtc1      $at, $f0
/* E2AF38 802B6888 24420001 */  addiu     $v0, $v0, 0x1
/* E2AF3C 802B688C A22200B6 */  sb        $v0, 0xB6($s1)
/* E2AF40 802B6890 E62000A8 */  swc1      $f0, 0xA8($s1)
/* E2AF44 802B6894 C66C006C */  lwc1      $f12, 0x6C($s3)
/* E2AF48 802B6898 46006301 */  sub.s     $f12, $f12, $f0
/* E2AF4C 802B689C 3C0142B4 */  lui       $at, (0x42B40000 >> 16)
.L802B68A0:
/* E2AF50 802B68A0 44810000 */  mtc1      $at, $f0
/* E2AF54 802B68A4 24020001 */  addiu     $v0, $zero, 0x1
/* E2AF58 802B68A8 3C018011 */  lui       $at, %hi(PrevPlayerDirection)
/* E2AF5C 802B68AC AC22C95C */  sw        $v0, %lo(PrevPlayerDirection)($at)
D_802B68B0:
/* E2AF60 802B68B0 080ADA47 */  j         .L802B691C
D_802B68B4:
/* E2AF64 802B68B4 46006301 */   sub.s    $f12, $f12, $f0
.L802B68B8:
/* E2AF68 802B68B8 C6400020 */  lwc1      $f0, 0x20($s2)
D_802B68BC:
/* E2AF6C 802B68BC 3C01802B */  lui       $at, %hi(D_802B6E78_E2B528)
.L802B68C0:
/* E2AF70 802B68C0 D4226E78 */  ldc1      $f2, %lo(D_802B6E78_E2B528)($at)
/* E2AF74 802B68C4 46000021 */  cvt.d.s   $f0, $f0
.L802B68C8:
/* E2AF78 802B68C8 46220000 */  add.d     $f0, $f0, $f2
/* E2AF7C 802B68CC 46200020 */  cvt.s.d   $f0, $f0
/* E2AF80 802B68D0 4600203E */  c.le.s    $f4, $f0
/* E2AF84 802B68D4 00000000 */  nop
/* E2AF88 802B68D8 45000016 */  bc1f      .L802B6934
/* E2AF8C 802B68DC E6400020 */   swc1     $f0, 0x20($s2)
/* E2AF90 802B68E0 E6440020 */  swc1      $f4, 0x20($s2)
/* E2AF94 802B68E4 922300B6 */  lbu       $v1, 0xB6($s1)
/* E2AF98 802B68E8 2402000A */  addiu     $v0, $zero, 0xA
.L802B68EC:
/* E2AF9C 802B68EC A6220008 */  sh        $v0, 0x8($s1)
/* E2AFA0 802B68F0 E62400A8 */  swc1      $f4, 0xA8($s1)
.L802B68F4:
/* E2AFA4 802B68F4 24630001 */  addiu     $v1, $v1, 0x1
/* E2AFA8 802B68F8 A22300B6 */  sb        $v1, 0xB6($s1)
.L802B68FC:
/* E2AFAC 802B68FC C66C006C */  lwc1      $f12, 0x6C($s3)
/* E2AFB0 802B6900 46046301 */  sub.s     $f12, $f12, $f4
.L802B6904:
/* E2AFB4 802B6904 3C0142B4 */  lui       $at, (0x42B40000 >> 16)
.L802B6908:
/* E2AFB8 802B6908 44810000 */  mtc1      $at, $f0
/* E2AFBC 802B690C 00000000 */  nop
WalkPeachAnims:
/* E2AFC0 802B6910 46006301 */  sub.s     $f12, $f12, $f0
/* E2AFC4 802B6914 3C018011 */  lui       $at, %hi(PrevPlayerDirection)
/* E2AFC8 802B6918 AC20C95C */  sw        $zero, %lo(PrevPlayerDirection)($at)
.L802B691C:
/* E2AFCC 802B691C 0C00A6C9 */  jal       clamp_angle
/* E2AFD0 802B6920 00000000 */   nop
/* E2AFD4 802B6924 4600018D */  trunc.w.s $f6, $f0
/* E2AFD8 802B6928 3C01800F */  lui       $at, %hi(PrevPlayerCamRelativeYaw)
/* E2AFDC 802B692C E4267B40 */  swc1      $f6, %lo(PrevPlayerCamRelativeYaw)($at)
/* E2AFE0 802B6930 E6200084 */  swc1      $f0, 0x84($s1)
.L802B6934:
/* E2AFE4 802B6934 C62000A8 */  lwc1      $f0, 0xA8($s1)
/* E2AFE8 802B6938 C64C0020 */  lwc1      $f12, 0x20($s2)
/* E2AFEC 802B693C 0C00A6C9 */  jal       clamp_angle
/* E2AFF0 802B6940 460C0300 */   add.s    $f12, $f0, $f12
/* E2AFF4 802B6944 E62000A8 */  swc1      $f0, 0xA8($s1)
.L802B6948:
/* E2AFF8 802B6948 C66C006C */  lwc1      $f12, 0x6C($s3)
.L802B694C:
/* E2AFFC 802B694C 46006301 */  sub.s     $f12, $f12, $f0
.L802B6950:
/* E2B000 802B6950 3C0142B4 */  lui       $at, (0x42B40000 >> 16)
/* E2B004 802B6954 44810000 */  mtc1      $at, $f0
/* E2B008 802B6958 0C00A6C9 */  jal       clamp_angle
.L802B695C:
/* E2B00C 802B695C 46006301 */   sub.s    $f12, $f12, $f0
.L802B6960:
/* E2B010 802B6960 080ADA7C */  j         .L802B69F0
/* E2B014 802B6964 E6200080 */   swc1     $f0, 0x80($s1)
glabel .L802B6968
/* E2B018 802B6968 96220008 */  lhu       $v0, 0x8($s1)
.L802B696C:
/* E2B01C 802B696C 2442FFFF */  addiu     $v0, $v0, -0x1
/* E2B020 802B6970 A6220008 */  sh        $v0, 0x8($s1)
/* E2B024 802B6974 00021400 */  sll       $v0, $v0, 16
/* E2B028 802B6978 1440001D */  bnez      $v0, .L802B69F0
/* E2B02C 802B697C 00000000 */   nop
/* E2B030 802B6980 0C009C22 */  jal       set_time_freeze_mode
/* E2B034 802B6984 0000202D */   daddu    $a0, $zero, $zero
/* E2B038 802B6988 3C03FFEF */  lui       $v1, (0xFFEFFFFF >> 16)
/* E2B03C 802B698C 3463FFFF */  ori       $v1, $v1, (0xFFEFFFFF & 0xFFFF)
/* E2B040 802B6990 8E220000 */  lw        $v0, 0x0($s1)
/* E2B044 802B6994 0000202D */  daddu     $a0, $zero, $zero
/* E2B048 802B6998 00431024 */  and       $v0, $v0, $v1
/* E2B04C 802B699C 080ADA78 */  j         .L802B69E0
D_802B69A0_E26700:
/* E2B050 802B69A0 AE220000 */   sw       $v0, 0x0($s1)
glabel .L802B69A4
/* E2B054 802B69A4 0C0398E9 */  jal       peach_force_disguise_action
D_802B69A8_E26708:
/* E2B058 802B69A8 0000202D */   daddu    $a0, $zero, $zero
/* E2B05C 802B69AC 080ADA7A */  j         .L802B69E8
/* E2B060 802B69B0 00000000 */   nop
glabel .L802B69B4
/* E2B064 802B69B4 962200BC */  lhu       $v0, 0xBC($s1)
/* E2B068 802B69B8 1040000D */  beqz      $v0, .L802B69F0
.L802B69BC:
/* E2B06C 802B69BC 0000202D */   daddu    $a0, $zero, $zero
/* E2B070 802B69C0 080ADA78 */  j         .L802B69E0
/* E2B074 802B69C4 00000000 */   nop
glabel .L802B69C8
/* E2B078 802B69C8 96220008 */  lhu       $v0, 0x8($s1)
/* E2B07C 802B69CC 2442FFFF */  addiu     $v0, $v0, -0x1
/* E2B080 802B69D0 A6220008 */  sh        $v0, 0x8($s1)
/* E2B084 802B69D4 00021400 */  sll       $v0, $v0, 16
.L802B69D8:
/* E2B088 802B69D8 14400005 */  bnez      $v0, .L802B69F0
glabel .L802B69DC
/* E2B08C 802B69DC 0000202D */   daddu    $a0, $zero, $zero
.L802B69E0:
/* E2B090 802B69E0 0C039769 */  jal       set_action_state
/* E2B094 802B69E4 00000000 */   nop
.L802B69E8:
/* E2B098 802B69E8 0C038050 */  jal       enable_player_static_collisions
/* E2B09C 802B69EC 00000000 */   nop
glabel .L802B69F0
/* E2B0A0 802B69F0 8E430008 */  lw        $v1, 0x8($s2)
/* E2B0A4 802B69F4 18600084 */  blez      $v1, .L802B6C08
/* E2B0A8 802B69F8 2402000A */   addiu    $v0, $zero, 0xA
/* E2B0AC 802B69FC 2463FFFF */  addiu     $v1, $v1, -0x1
/* E2B0B0 802B6A00 14620042 */  bne       $v1, $v0, .L802B6B0C
/* E2B0B4 802B6A04 AE430008 */   sw       $v1, 0x8($s2)
/* E2B0B8 802B6A08 C62200A8 */  lwc1      $f2, 0xA8($s1)
/* E2B0BC 802B6A0C 3C0142B4 */  lui       $at, (0x42B40000 >> 16)
/* E2B0C0 802B6A10 44810000 */  mtc1      $at, $f0
/* E2B0C4 802B6A14 00000000 */  nop
.L802B6A18:
/* E2B0C8 802B6A18 4602003E */  c.le.s    $f0, $f2
/* E2B0CC 802B6A1C 00000000 */  nop
/* E2B0D0 802B6A20 45000016 */  bc1f      .L802B6A7C
/* E2B0D4 802B6A24 00000000 */   nop
/* E2B0D8 802B6A28 3C014387 */  lui       $at, (0x43870000 >> 16)
/* E2B0DC 802B6A2C 44812000 */  mtc1      $at, $f4
/* E2B0E0 802B6A30 00000000 */  nop
/* E2B0E4 802B6A34 4604103C */  c.lt.s    $f2, $f4
/* E2B0E8 802B6A38 00000000 */  nop
/* E2B0EC 802B6A3C 4500000F */  bc1f      .L802B6A7C
/* E2B0F0 802B6A40 00000000 */   nop
/* E2B0F4 802B6A44 C660006C */  lwc1      $f0, 0x6C($s3)
/* E2B0F8 802B6A48 46040001 */  sub.s     $f0, $f0, $f4
/* E2B0FC 802B6A4C 3C0140C9 */  lui       $at, (0x40C90FD0 >> 16)
.L802B6A50:
/* E2B100 802B6A50 34210FD0 */  ori       $at, $at, (0x40C90FD0 & 0xFFFF)
/* E2B104 802B6A54 44811000 */  mtc1      $at, $f2
/* E2B108 802B6A58 00000000 */  nop
/* E2B10C 802B6A5C 46020002 */  mul.s     $f0, $f0, $f2
/* E2B110 802B6A60 00000000 */  nop
/* E2B114 802B6A64 3C0143B4 */  lui       $at, (0x43B40000 >> 16)
/* E2B118 802B6A68 44811000 */  mtc1      $at, $f2
/* E2B11C 802B6A6C 3C014238 */  lui       $at, (0x42380000 >> 16)
/* E2B120 802B6A70 4481B000 */  mtc1      $at, $f22
/* E2B124 802B6A74 080ADAAF */  j         .L802B6ABC
/* E2B128 802B6A78 46020503 */   div.s    $f20, $f0, $f2
.L802B6A7C:
/* E2B12C 802B6A7C C662006C */  lwc1      $f2, 0x6C($s3)
/* E2B130 802B6A80 3C0142B4 */  lui       $at, (0x42B40000 >> 16)
/* E2B134 802B6A84 44810000 */  mtc1      $at, $f0
/* E2B138 802B6A88 00000000 */  nop
.L802B6A8C:
/* E2B13C 802B6A8C 46001081 */  sub.s     $f2, $f2, $f0
/* E2B140 802B6A90 3C0140C9 */  lui       $at, (0x40C90FD0 >> 16)
/* E2B144 802B6A94 34210FD0 */  ori       $at, $at, (0x40C90FD0 & 0xFFFF)
/* E2B148 802B6A98 44810000 */  mtc1      $at, $f0
.L802B6A9C:
/* E2B14C 802B6A9C 00000000 */  nop
.L802B6AA0:
/* E2B150 802B6AA0 46001082 */  mul.s     $f2, $f2, $f0
/* E2B154 802B6AA4 00000000 */  nop
/* E2B158 802B6AA8 3C0143B4 */  lui       $at, (0x43B40000 >> 16)
/* E2B15C 802B6AAC 44810000 */  mtc1      $at, $f0
/* E2B160 802B6AB0 3C0141F0 */  lui       $at, (0x41F00000 >> 16)
/* E2B164 802B6AB4 4481B000 */  mtc1      $at, $f22
/* E2B168 802B6AB8 46001503 */  div.s     $f20, $f2, $f0
.L802B6ABC:
/* E2B16C 802B6ABC 0C00A85B */  jal       sin_rad
/* E2B170 802B6AC0 4600A306 */   mov.s    $f12, $f20
/* E2B174 802B6AC4 4600B002 */  mul.s     $f0, $f22, $f0
/* E2B178 802B6AC8 00000000 */  nop
/* E2B17C 802B6ACC C6220028 */  lwc1      $f2, 0x28($s1)
/* E2B180 802B6AD0 46001080 */  add.s     $f2, $f2, $f0
/* E2B184 802B6AD4 4600A306 */  mov.s     $f12, $f20
.L802B6AD8:
/* E2B188 802B6AD8 0C00A874 */  jal       cos_rad
/* E2B18C 802B6ADC E6420010 */   swc1     $f2, 0x10($s2)
/* E2B190 802B6AE0 4600B002 */  mul.s     $f0, $f22, $f0
/* E2B194 802B6AE4 00000000 */  nop
/* E2B198 802B6AE8 C624002C */  lwc1      $f4, 0x2C($s1)
/* E2B19C 802B6AEC 3C0141A0 */  lui       $at, (0x41A00000 >> 16)
/* E2B1A0 802B6AF0 44811000 */  mtc1      $at, $f2
/* E2B1A4 802B6AF4 00000000 */  nop
/* E2B1A8 802B6AF8 46022101 */  sub.s     $f4, $f4, $f2
/* E2B1AC 802B6AFC C6220030 */  lwc1      $f2, 0x30($s1)
/* E2B1B0 802B6B00 46001081 */  sub.s     $f2, $f2, $f0
/* E2B1B4 802B6B04 E6440014 */  swc1      $f4, 0x14($s2)
/* E2B1B8 802B6B08 E6420018 */  swc1      $f2, 0x18($s2)
.L802B6B0C:
/* E2B1BC 802B6B0C 8E430008 */  lw        $v1, 0x8($s2)
/* E2B1C0 802B6B10 2862000B */  slti      $v0, $v1, 0xB
/* E2B1C4 802B6B14 10400050 */  beqz      $v0, .L802B6C58
/* E2B1C8 802B6B18 30620001 */   andi     $v0, $v1, 0x1
/* E2B1CC 802B6B1C 1040004E */  beqz      $v0, .L802B6C58
/* E2B1D0 802B6B20 00000000 */   nop
/* E2B1D4 802B6B24 C6420010 */  lwc1      $f2, 0x10($s2)
/* E2B1D8 802B6B28 3C014100 */  lui       $at, (0x41000000 >> 16)
/* E2B1DC 802B6B2C 44810000 */  mtc1      $at, $f0
/* E2B1E0 802B6B30 00000000 */  nop
/* E2B1E4 802B6B34 46001081 */  sub.s     $f2, $f2, $f0
/* E2B1E8 802B6B38 3C014248 */  lui       $at, (0x42480000 >> 16)
/* E2B1EC 802B6B3C 44810000 */  mtc1      $at, $f0
/* E2B1F0 802B6B40 44051000 */  mfc1      $a1, $f2
/* E2B1F4 802B6B44 C6420014 */  lwc1      $f2, 0x14($s2)
/* E2B1F8 802B6B48 46001080 */  add.s     $f2, $f2, $f0
/* E2B1FC 802B6B4C 8E470018 */  lw        $a3, 0x18($s2)
/* E2B200 802B6B50 3C014000 */  lui       $at, (0x40000000 >> 16)
/* E2B204 802B6B54 44810000 */  mtc1      $at, $f0
/* E2B208 802B6B58 44061000 */  mfc1      $a2, $f2
/* E2B20C 802B6B5C 24040003 */  addiu     $a0, $zero, 0x3
/* E2B210 802B6B60 0C01BFBC */  jal       fx_sparkles
.L802B6B64:
/* E2B214 802B6B64 E7A00010 */   swc1     $f0, 0x10($sp)
/* E2B218 802B6B68 C660006C */  lwc1      $f0, 0x6C($s3)
.L802B6B6C:
/* E2B21C 802B6B6C C62200A8 */  lwc1      $f2, 0xA8($s1)
/* E2B220 802B6B70 46020000 */  add.s     $f0, $f0, $f2
/* E2B224 802B6B74 3C0142B4 */  lui       $at, (0x42B40000 >> 16)
/* E2B228 802B6B78 44811000 */  mtc1      $at, $f2
.L802B6B7C:
/* E2B22C 802B6B7C 00000000 */  nop
/* E2B230 802B6B80 46020001 */  sub.s     $f0, $f0, $f2
/* E2B234 802B6B84 3C0140C9 */  lui       $at, (0x40C90FD0 >> 16)
/* E2B238 802B6B88 34210FD0 */  ori       $at, $at, (0x40C90FD0 & 0xFFFF)
/* E2B23C 802B6B8C 44811000 */  mtc1      $at, $f2
/* E2B240 802B6B90 00000000 */  nop
/* E2B244 802B6B94 46020002 */  mul.s     $f0, $f0, $f2
/* E2B248 802B6B98 00000000 */  nop
/* E2B24C 802B6B9C C6560010 */  lwc1      $f22, 0x10($s2)
/* E2B250 802B6BA0 3C0143B4 */  lui       $at, (0x43B40000 >> 16)
/* E2B254 802B6BA4 44811000 */  mtc1      $at, $f2
/* E2B258 802B6BA8 4600B5A1 */  cvt.d.s   $f22, $f22
.L802B6BAC:
/* E2B25C 802B6BAC 46020503 */  div.s     $f20, $f0, $f2
/* E2B260 802B6BB0 0C00A85B */  jal       sin_rad
/* E2B264 802B6BB4 4600A306 */   mov.s    $f12, $f20
.L802B6BB8:
/* E2B268 802B6BB8 3C014024 */  lui       $at, (0x40240000 >> 16)
/* E2B26C 802B6BBC 4481C800 */  mtc1      $at, $f25
/* E2B270 802B6BC0 4480C000 */  mtc1      $zero, $f24
/* E2B274 802B6BC4 46000021 */  cvt.d.s   $f0, $f0
/* E2B278 802B6BC8 46380002 */  mul.d     $f0, $f0, $f24
/* E2B27C 802B6BCC 00000000 */  nop
/* E2B280 802B6BD0 4600A306 */  mov.s     $f12, $f20
/* E2B284 802B6BD4 C6540018 */  lwc1      $f20, 0x18($s2)
/* E2B288 802B6BD8 4620B580 */  add.d     $f22, $f22, $f0
/* E2B28C 802B6BDC 4600A521 */  cvt.d.s   $f20, $f20
/* E2B290 802B6BE0 4620B5A0 */  cvt.s.d   $f22, $f22
/* E2B294 802B6BE4 0C00A874 */  jal       cos_rad
/* E2B298 802B6BE8 E6560010 */   swc1     $f22, 0x10($s2)
/* E2B29C 802B6BEC 46000021 */  cvt.d.s   $f0, $f0
/* E2B2A0 802B6BF0 46380002 */  mul.d     $f0, $f0, $f24
/* E2B2A4 802B6BF4 00000000 */  nop
.L802B6BF8:
/* E2B2A8 802B6BF8 4620A501 */  sub.d     $f20, $f20, $f0
/* E2B2AC 802B6BFC 4620A520 */  cvt.s.d   $f20, $f20
/* E2B2B0 802B6C00 080ADB16 */  j         .L802B6C58
/* E2B2B4 802B6C04 E6540018 */   swc1     $f20, 0x18($s2)
.L802B6C08:
/* E2B2B8 802B6C08 14600013 */  bnez      $v1, .L802B6C58
.L802B6C0C:
/* E2B2BC 802B6C0C 2402FFFF */   addiu    $v0, $zero, -0x1
/* E2B2C0 802B6C10 8E430000 */  lw        $v1, 0x0($s2)
/* E2B2C4 802B6C14 10600010 */  beqz      $v1, .L802B6C58
/* E2B2C8 802B6C18 AE420008 */   sw       $v0, 0x8($s2)
/* E2B2CC 802B6C1C 3C013F80 */  lui       $at, (0x3F800000 >> 16)
/* E2B2D0 802B6C20 44810000 */  mtc1      $at, $f0
/* E2B2D4 802B6C24 0060102D */  daddu     $v0, $v1, $zero
/* E2B2D8 802B6C28 E7A00010 */  swc1      $f0, 0x10($sp)
/* E2B2DC 802B6C2C 8442008A */  lh        $v0, 0x8A($v0)
glabel .L802B6C30
/* E2B2E0 802B6C30 44820000 */  mtc1      $v0, $f0
/* E2B2E4 802B6C34 00000000 */  nop
/* E2B2E8 802B6C38 46800020 */  cvt.s.w   $f0, $f0
/* E2B2EC 802B6C3C E7A00014 */  swc1      $f0, 0x14($sp)
/* E2B2F0 802B6C40 8C650038 */  lw        $a1, 0x38($v1)
/* E2B2F4 802B6C44 8C66003C */  lw        $a2, 0x3C($v1)
/* E2B2F8 802B6C48 8224000D */  lb        $a0, 0xD($s1)
/* E2B2FC 802B6C4C 8C670040 */  lw        $a3, 0x40($v1)
/* E2B300 802B6C50 0C01CA84 */  jal       fx_pink_sparkles
/* E2B304 802B6C54 2484FFFF */   addiu    $a0, $a0, -0x1
.L802B6C58:
/* E2B308 802B6C58 8E43000C */  lw        $v1, 0xC($s2)
/* E2B30C 802B6C5C 1060001A */  beqz      $v1, .L802B6CC8
/* E2B310 802B6C60 2862000B */   slti     $v0, $v1, 0xB
/* E2B314 802B6C64 10400015 */  beqz      $v0, .L802B6CBC
/* E2B318 802B6C68 2402000A */   addiu    $v0, $zero, 0xA
/* E2B31C 802B6C6C 14620003 */  bne       $v1, $v0, .L802B6C7C
/* E2B320 802B6C70 240400FE */   addiu    $a0, $zero, 0xFE
/* E2B324 802B6C74 0C052736 */  jal       sfx_play_sound_at_player
/* E2B328 802B6C78 0000282D */   daddu    $a1, $zero, $zero
.L802B6C7C:
/* E2B32C 802B6C7C 8E42000C */  lw        $v0, 0xC($s2)
/* E2B330 802B6C80 30420003 */  andi      $v0, $v0, 0x3
.L802B6C84:
/* E2B334 802B6C84 1440000D */  bnez      $v0, .L802B6CBC
/* E2B338 802B6C88 24040004 */   addiu    $a0, $zero, 0x4
/* E2B33C 802B6C8C 8E250028 */  lw        $a1, 0x28($s1)
.L802B6C90:
/* E2B340 802B6C90 8E26002C */  lw        $a2, 0x2C($s1)
/* E2B344 802B6C94 8E270030 */  lw        $a3, 0x30($s1)
/* E2B348 802B6C98 3C014248 */  lui       $at, (0x42480000 >> 16)
/* E2B34C 802B6C9C 44810000 */  mtc1      $at, $f0
.L802B6CA0:
/* E2B350 802B6CA0 24020028 */  addiu     $v0, $zero, 0x28
/* E2B354 802B6CA4 AFA20018 */  sw        $v0, 0x18($sp)
/* E2B358 802B6CA8 2402001E */  addiu     $v0, $zero, 0x1E
/* E2B35C 802B6CAC AFA2001C */  sw        $v0, 0x1C($sp)
/* E2B360 802B6CB0 E7A00010 */  swc1      $f0, 0x10($sp)
/* E2B364 802B6CB4 0C01C154 */  jal       fx_stars_shimmer
/* E2B368 802B6CB8 E7A00014 */   swc1     $f0, 0x14($sp)
.L802B6CBC:
/* E2B36C 802B6CBC 8E42000C */  lw        $v0, 0xC($s2)
/* E2B370 802B6CC0 2442FFFF */  addiu     $v0, $v0, -0x1
.L802B6CC4:
/* E2B374 802B6CC4 AE42000C */  sw        $v0, 0xC($s2)
.L802B6CC8:
/* E2B378 802B6CC8 8FBF0030 */  lw        $ra, 0x30($sp)
/* E2B37C 802B6CCC 8FB3002C */  lw        $s3, 0x2C($sp)
/* E2B380 802B6CD0 8FB20028 */  lw        $s2, 0x28($sp)
/* E2B384 802B6CD4 8FB10024 */  lw        $s1, 0x24($sp)
/* E2B388 802B6CD8 8FB00020 */  lw        $s0, 0x20($sp)
/* E2B38C 802B6CDC D7B80048 */  ldc1      $f24, 0x48($sp)
/* E2B390 802B6CE0 D7B60040 */  ldc1      $f22, 0x40($sp)
/* E2B394 802B6CE4 D7B40038 */  ldc1      $f20, 0x38($sp)
.L802B6CE8:
/* E2B398 802B6CE8 03E00008 */  jr        $ra
/* E2B39C 802B6CEC 27BD0050 */   addiu    $sp, $sp, 0x50

### DECOMPILED C INSTRUCTIONS:

void action_update_parasol(void) {
    PlayerStatus* playerStatus = &gPlayerStatus;
    TransformationData* transformation = &ParasolTransformation;
    Camera* cam = &gCameras[gCurrentCameraID];
    GameStatus* gameStatus;
    GameStatus* gameStatus2;
    Npc* disguiseNpc;
    f32* tempUnk_1C;
    f32 prevFacingAngle;
    f32 phi_f4;
    s32 reachedTangentAngle;
    f32 angle;
    f32 radius;

    if (playerStatus->flags & PS_FLAG_ACTION_STATE_CHANGED) {
        playerStatus->flags &= ~PS_FLAG_ACTION_STATE_CHANGED;
        mem_clear(&ParasolTransformation, sizeof(ParasolTransformation));
        disable_player_static_collisions();
        tempUnk_1C = &transformation->playerRotationRate;
        playerStatus->timeInAir = 0;
        playerStatus->peakJumpTime = 0;
        playerStatus->currentSpeed = 0;
        playerStatus->pitch = 0;

        if (playerStatus->spriteFacingAngle >= 90 && playerStatus->spriteFacingAngle < 270) {
            phi_f4 = 2;
        } else {
            phi_f4 = -2;
        }
        *tempUnk_1C = phi_f4;

        if (!(playerStatus->animFlags & PA_FLAG_INVISIBLE)) {
            playerStatus->currentStateTime = 20;
            playerStatus->actionSubstate = SUBSTATE_DISGUISE_INIT;
            transformation->disguiseTime = 15;
            transformation->npc = parasol_get_npc();
        } else {
            playerStatus->actionSubstate = SUBSTATE_REVERT_INIT;
            playerStatus->currentStateTime = 40;
            transformation->reverted = 1;
            transformation->revertTime = 12;
            disguiseNpc = get_npc_by_index(PeachDisguiseNpcIndex);
            disguiseNpc->flags |= NPC_FLAG_IGNORE_CAMERA_FOR_YAW;
            playerStatus->flags |= PS_FLAG_ROTATION_LOCKED;
            sfx_play_sound_at_player(SOUND_FD, SOUND_SPACE_MODE_0);
        }
    }

    switch (playerStatus->actionSubstate) {
        case SUBSTATE_DISGUISE_INIT:
            if (playerStatus->flipYaw[CAM_DEFAULT] == 0) {
                if (peach_disguise_check_overlaps() < 0) {
                    suggest_player_anim_allow_backward(ANIM_Peach2_UseParasol);
                    sfx_play_sound_at_player(SOUND_92, SOUND_SPACE_MODE_0);
                    playerStatus->actionSubstate++; // SUBSTATE_USE_PARASOL
                } else {
                    suggest_player_anim_allow_backward(ANIM_Peach2_CantFitParasol);
                    playerStatus->actionSubstate = SUBSTATE_BLOCKED;
                    playerStatus->currentStateTime = 10;
                    transformation->disguiseTime = 0;
                }
            }
        case SUBSTATE_USE_PARASOL:
            if (--playerStatus->currentStateTime == 0) {
                suggest_player_anim_allow_backward(ANIM_Peach2_PutAwayParasol);
                playerStatus->actionSubstate = SUBSTATE_PUT_AWAY;
                if (transformation->npc == NULL) {
                    playerStatus->actionSubstate = SUBSTATE_FAILED;
                } else {
                    set_time_freeze_mode(TIME_FREEZE_FULL);
                }
            }
            break;
        case SUBSTATE_PUT_AWAY:
            if (playerStatus->animNotifyValue != 0) {
                playerStatus->currentStateTime = 12;
                playerStatus->flags |= PS_FLAG_ROTATION_LOCKED;
                playerStatus->actionSubstate++; // SUBSTATE_DISGUISE_BEGIN
                sfx_play_sound_at_player(SOUND_FD, SOUND_SPACE_MODE_0);
            }
            break;
        case SUBSTATE_DISGUISE_BEGIN:
            if (--playerStatus->currentStateTime == 0) {
                playerStatus->currentStateTime = 10;
                transformation->revertTime = 10;
                playerStatus->actionSubstate++; // SUBSTATE_DISGUISE_WAIT_FOR_ANGLE
            }
            parasol_update_spin();
            break;
        case SUBSTATE_DISGUISE_WAIT_FOR_ANGLE:
            prevFacingAngle = playerStatus->spriteFacingAngle;
            parasol_update_spin();
            playerStatus->targetYaw = clamp_angle((cam->currentYaw - playerStatus->spriteFacingAngle) - 90);
            if (playerStatus->currentStateTime == 0) {
                // wait for the sprite to rotate into a position where it's tangent to the camera
                reachedTangentAngle = FALSE;
                if (transformation->playerRotationRate > 0) {
                    if (prevFacingAngle < 270 && playerStatus->spriteFacingAngle >= 270) {
                        reachedTangentAngle = TRUE;
                    }
                }
                if (transformation->playerRotationRate < 0) {
                    if (prevFacingAngle > 270 && playerStatus->spriteFacingAngle <= 270) {
                        reachedTangentAngle = TRUE;
                    }
                }
                if (reachedTangentAngle) {
                    playerStatus->actionSubstate = SUBSTATE_DISGUISE_SPIN_DOWN;
                    playerStatus->currentStateTime = 2;
                    if (peach_make_disguise_npc(playerStatus->availableDisguiseType) != NULL) {
                        playerStatus->actionSubstate = SUBSTATE_DISGUISE_MAKE_NPC;
                        peach_sync_disguise_npc();
                    }
                }
            } else {
                playerStatus->currentStateTime--;
            }
            break;
        case SUBSTATE_DISGUISE_MAKE_NPC:
            gameStatus = gGameStatusPtr;
            playerStatus->animFlags |= PA_FLAG_INVISIBLE;
            gameStatus->peachFlags |= PEACH_STATUS_FLAG_DISGUISED;
            playerStatus->actionSubstate++; // SUBSTATE_DISGUISE_SPIN_DOWN
        case SUBSTATE_DISGUISE_SPIN_DOWN:
            if (--playerStatus->currentStateTime == 0) {
                playerStatus->actionSubstate++; // SUBSTATE_DISGUISE_FINISH_SPIN
            }
            parasol_update_spin();
            break;
        case SUBSTATE_DISGUISE_FINISH_SPIN:
            if (transformation->playerRotationRate > 0.0f) {
                transformation->playerYawOffset -= 2.35;
                if (transformation->playerYawOffset <= 0) {
                    transformation->playerYawOffset = 0;
                    playerStatus->currentStateTime = 10;
                    playerStatus->actionSubstate++; // SUBSTATE_DISGUISE_DONE
                    playerStatus->spriteFacingAngle = 180;
                    disguiseNpc = get_npc_by_index(PeachDisguiseNpcIndex);
                    disguiseNpc->isFacingAway = TRUE;
                    disguiseNpc->yaw = clamp_angle((cam->currentYaw - playerStatus->spriteFacingAngle) - 90);
                    disguiseNpc->yawCamOffset = disguiseNpc->yaw;
                }
            } else {
                transformation->playerYawOffset += 2.35;
                if (transformation->playerYawOffset >= 0) {
                    transformation->playerYawOffset = 0;
                    playerStatus->currentStateTime = 10;
                    playerStatus->spriteFacingAngle = 0;
                    playerStatus->actionSubstate++; // SUBSTATE_DISGUISE_DONE
                    disguiseNpc = get_npc_by_index(PeachDisguiseNpcIndex);
                    disguiseNpc->isFacingAway = FALSE;
                    disguiseNpc->yaw = clamp_angle((cam->currentYaw - playerStatus->spriteFacingAngle) - 90);
                    disguiseNpc->yawCamOffset = disguiseNpc->yaw;
                }
            }
            playerStatus->spriteFacingAngle = clamp_angle(playerStatus->spriteFacingAngle + transformation->playerYawOffset);
            playerStatus->targetYaw = clamp_angle((cam->currentYaw - playerStatus->spriteFacingAngle) - 90);
            break;
        case SUBSTATE_DISGUISE_DONE:
            if (--playerStatus->currentStateTime == 0) {
                set_time_freeze_mode(TIME_FREEZE_NORMAL);
                disguiseNpc = get_npc_by_index(PeachDisguiseNpcIndex);
                disguiseNpc->flags &= ~NPC_FLAG_IGNORE_CAMERA_FOR_YAW;
                playerStatus->flags &= ~PS_FLAG_ROTATION_LOCKED;
                set_action_state(ACTION_STATE_IDLE);
                enable_player_static_collisions();
            }
            break;
        case SUBSTATE_REVERT_INIT:
            if (--playerStatus->currentStateTime == 0) {
                playerStatus->actionSubstate++; // SUBSTATE_REVERT_WAIT_FOR_ANGLE
            }
            parasol_update_spin();
            playerStatus->targetYaw = clamp_angle(cam->currentYaw - playerStatus->spriteFacingAngle - 90);
            break;
        case SUBSTATE_REVERT_WAIT_FOR_ANGLE:
            prevFacingAngle = playerStatus->spriteFacingAngle;
            parasol_update_spin();
            playerStatus->targetYaw = clamp_angle((cam->currentYaw - playerStatus->spriteFacingAngle) - 90);
            if (playerStatus->currentStateTime == 0) {
                // wait for the sprite to rotate into a position where it's tangent to the camera
                reachedTangentAngle = FALSE;
                if (transformation->playerRotationRate > 0) {
                    if (prevFacingAngle < 270 && playerStatus->spriteFacingAngle >= 270) {
                        reachedTangentAngle = TRUE;
                    }
                }
                if (transformation->playerRotationRate < 0) {
                    if (prevFacingAngle > 270 && playerStatus->spriteFacingAngle <= 270) {
                        reachedTangentAngle = TRUE;
                    }
                }
                if (reachedTangentAngle) {
                    playerStatus->currentStateTime = 2;
                    playerStatus->actionSubstate++; // SUBSTATE_SPIN_DOWN
                    gameStatus2 = gGameStatusPtr;
                    playerStatus->animFlags &= ~PA_FLAG_INVISIBLE;
                    gameStatus2->peachFlags &= ~PEACH_STATUS_FLAG_DISGUISED;
                    playerStatus->peachDisguise = 0;
                    free_npc_by_index(PeachDisguiseNpcIndex);
                    playerStatus->colliderHeight = 55;
                    playerStatus->colliderDiameter = 38;
                }
            } else {
                playerStatus->currentStateTime--;
            }
            break;
        case SUBSTATE_SPIN_DOWN:
            if (--playerStatus->currentStateTime == 0) {
                playerStatus->actionSubstate++; // SUBSTATE_FINISH_SPIN
            }
            parasol_update_spin();
            break;
        case SUBSTATE_FINISH_SPIN:
            if (transformation->playerRotationRate > 0) {
                transformation->playerYawOffset -= 2.35;
                if (transformation->playerYawOffset <= 0) {
                    transformation->playerYawOffset = 0;
                    playerStatus->currentStateTime = 10;
                    playerStatus->actionSubstate++; // SUBSTATE_REVERT_DONE
                    playerStatus->spriteFacingAngle = 180;
                    PrevPlayerDirection = 1;
                    playerStatus->currentYaw = clamp_angle((cam->currentYaw - 180) - 90);
                    PrevPlayerCamRelativeYaw = playerStatus->currentYaw;
                }
            } else {
                transformation->playerYawOffset += 2.35;
                if (transformation->playerYawOffset >= 0) {
                    transformation->playerYawOffset = 0;
                    playerStatus->currentStateTime = 10;
                    playerStatus->spriteFacingAngle = 0;
                    playerStatus->actionSubstate++; // SUBSTATE_REVERT_DONE
                    PrevPlayerDirection = 0;
                    playerStatus->currentYaw = clamp_angle((cam->currentYaw - 0) - 90);
                    PrevPlayerCamRelativeYaw = playerStatus->currentYaw;
                }
            }
            playerStatus->spriteFacingAngle = clamp_angle(playerStatus->spriteFacingAngle + transformation->playerYawOffset);
            playerStatus->targetYaw = clamp_angle(cam->currentYaw - playerStatus->spriteFacingAngle - 90);
            break;
        case SUBSTATE_REVERT_DONE:
            if (--playerStatus->currentStateTime == 0) {
                set_time_freeze_mode(TIME_FREEZE_NORMAL);
                playerStatus->flags &= ~PS_FLAG_ROTATION_LOCKED;
                set_action_state(ACTION_STATE_IDLE);
                enable_player_static_collisions();
            }
            break;
        case SUBSTATE_ABORT:
            peach_force_disguise_action(FALSE);
            enable_player_static_collisions();
            break;
        case SUBSTATE_FAILED:
            if (playerStatus->animNotifyValue != 0) {
                set_action_state(ACTION_STATE_IDLE);
                enable_player_static_collisions();
            }
            break;
        case SUBSTATE_BLOCKED:
            if (--playerStatus->currentStateTime == 0) {
                set_action_state(ACTION_STATE_IDLE);
                enable_player_static_collisions();
            }
            break;
    }

    if (transformation->disguiseTime > 0) {
        if (--transformation->disguiseTime == 10) {
            if (playerStatus->spriteFacingAngle >= 90 && playerStatus->spriteFacingAngle < 270) {
                angle = DEG_TO_RAD(cam->currentYaw - 270);
                radius = 46;
            } else {
                angle = DEG_TO_RAD(cam->currentYaw - 90);
                radius = 30;
            }
            transformation->position.x = playerStatus->position.x + (radius * sin_rad(angle));
            transformation->position.z = playerStatus->position.z - (radius * cos_rad(angle));
            transformation->position.y = playerStatus->position.y - 20;
        }
        if (transformation->disguiseTime <= 10 && transformation->disguiseTime & 1) {
            f64 tempX, tempZ;

            fx_sparkles(FX_SPARKLES_3,
                transformation->position.x - 8,
                transformation->position.y + 50,
                transformation->position.z,
                2);

            /*
            TODO something like:
            angle = DEG_TO_RAD((cam->currentYaw + playerStatus->spriteFacingAngle) - 90);
            transformation->position.x += (10.0 * sin_rad(angle));
            transformation->position.z -= (10.0 * cos_rad(angle));
            */

            angle = DEG_TO_RAD((cam->currentYaw + playerStatus->spriteFacingAngle) - 90);

            tempX = transformation->position.x;
            tempX += 10.0 * sin_rad(angle);
            transformation->position.x = tempX;

            tempZ = transformation->position.z;
            transformation->position.z = tempZ - (10.0 * cos_rad(angle));
        }
    } else if (transformation->disguiseTime == 0) {
        transformation->disguiseTime = -1;
        if (transformation->npc != NULL) {
            fx_pink_sparkles(playerStatus->availableDisguiseType - 1,
                transformation->npc->pos.x,
                transformation->npc->pos.y,
                transformation->npc->pos.z,
                1, transformation->npc->yawCamOffset);
        }
    }
    if (transformation->revertTime != 0) {
        if (transformation->revertTime <= 10) {
            if (transformation->revertTime == 10) {
                sfx_play_sound_at_player(SOUND_FE, SOUND_SPACE_MODE_0);
            }
            if ((transformation->revertTime & 3) == 0) {
                fx_stars_shimmer(4,
                    playerStatus->position.x,
                    playerStatus->position.y,
                    playerStatus->position.z,
                    50, 50, 40, 30);
            }
        }
        transformation->revertTime--;
    }
}