### RAW ASSEMBLY INSTRUCTIONS:

glabel parasol_get_npc
/* E26DE0 802B6000 27BDFFC8 */  addiu     $sp, $sp, -0x38
/* E26DE4 802B6004 AFB00018 */  sw        $s0, 0x18($sp)
/* E26DE8 802B6008 3C108011 */  lui       $s0, %hi(gPlayerStatus)
/* E26DEC 802B600C 2610EFC8 */  addiu     $s0, $s0, %lo(gPlayerStatus)
/* E26DF0 802B6010 AFBF0024 */  sw        $ra, 0x24($sp)
/* E26DF4 802B6014 AFB20020 */  sw        $s2, 0x20($sp)
.L802B6018:
/* E26DF8 802B6018 AFB1001C */  sw        $s1, 0x1C($sp)
/* E26DFC 802B601C F7B60030 */  sdc1      $f22, 0x30($sp)
/* E26E00 802B6020 F7B40028 */  sdc1      $f20, 0x28($sp)
/* E26E04 802B6024 8E030000 */  lw        $v1, 0x0($s0)
/* E26E08 802B6028 3C118016 */  lui       $s1, %hi(gCollisionStatus)
/* E26E0C 802B602C 2631A550 */  addiu     $s1, $s1, %lo(gCollisionStatus)
/* E26E10 802B6030 0461001D */  bgez      $v1, .L802B60A8
/* E26E14 802B6034 3C027FFF */   lui      $v0, (0x7FFFFFF9 >> 16)
/* E26E18 802B6038 3442FFF9 */  ori       $v0, $v0, (0x7FFFFFF9 & 0xFFFF)
/* E26E1C 802B603C 3C040001 */  lui       $a0, (0x1000A >> 16)
.L802B6040:
/* E26E20 802B6040 3484000A */  ori       $a0, $a0, (0x1000A & 0xFFFF)
.L802B6044:
/* E26E24 802B6044 00621024 */  and       $v0, $v1, $v0
glabel action_hammer_play_hit_fx
/* E26E28 802B6048 3C0140A6 */  lui       $at, (0x40A66666 >> 16)
.L802B604C:
/* E26E2C 802B604C 34216666 */  ori       $at, $at, (0x40A66666 & 0xFFFF)
.L802B6050:
/* E26E30 802B6050 44810000 */  mtc1      $at, $f0
/* E26E34 802B6054 3442000A */  ori       $v0, $v0, 0xA
.L802B6058:
/* E26E38 802B6058 AE020000 */  sw        $v0, 0x0($s0)
/* E26E3C 802B605C A20000B6 */  sb        $zero, 0xB6($s0)
glabel action_update_sliding
/* E26E40 802B6060 AE000054 */  sw        $zero, 0x54($s0)
/* E26E44 802B6064 3C01802B */  lui       $at, %hi(D_802B6730)
.L802B6068:
/* E26E48 802B6068 AC206730 */  sw        $zero, %lo(D_802B6730)($at)
/* E26E4C 802B606C 0C037FBF */  jal       suggest_player_anim_allow_backward
/* E26E50 802B6070 E6000070 */   swc1     $f0, 0x70($s0)
.L802B6074:
/* E26E54 802B6074 0C03805E */  jal       disable_player_input
/* E26E58 802B6078 00000000 */   nop
glabel .L802B607C
/* E26E5C 802B607C 24040146 */  addiu     $a0, $zero, 0x146
.L802B6080:
/* E26E60 802B6080 0000282D */  daddu     $a1, $zero, $zero
/* E26E64 802B6084 3C06800B */  lui       $a2, %hi(gCameras)
/* E26E68 802B6088 24C61D80 */  addiu     $a2, $a2, %lo(gCameras)
.L802B608C:
/* E26E6C 802B608C 8E020000 */  lw        $v0, 0x0($s0)
.L802B6090:
/* E26E70 802B6090 94C30002 */  lhu       $v1, 0x2($a2)
.L802B6094:
/* E26E74 802B6094 34420200 */  ori       $v0, $v0, 0x200
/* E26E78 802B6098 34630001 */  ori       $v1, $v1, 0x1
glabel action_update_state_23
/* E26E7C 802B609C AE020000 */  sw        $v0, 0x0($s0)
/* E26E80 802B60A0 0C052736 */  jal       sfx_play_sound_at_player
glabel action_update_use_spinning_flower
/* E26E84 802B60A4 A4C30002 */   sh       $v1, 0x2($a2)
.L802B60A8:
/* E26E88 802B60A8 820300B6 */  lb        $v1, 0xB6($s0)
.L802B60AC:
/* E26E8C 802B60AC 2C62000D */  sltiu     $v0, $v1, 0xD
/* E26E90 802B60B0 10400146 */  beqz      $v0, .L802B65CC
glabel action_update_jump
/* E26E94 802B60B4 0000902D */   daddu    $s2, $zero, $zero
/* E26E98 802B60B8 00031080 */  sll       $v0, $v1, 2
/* E26E9C 802B60BC 3C01802B */  lui       $at, %hi(func_802B66A8 + 0x38)
/* E26EA0 802B60C0 00220821 */  addu      $at, $at, $v0
/* E26EA4 802B60C4 8C2266E0 */  lw        $v0, %lo(func_802B66A8 + 0x38)($at)
.L802B60C8:
/* E26EA8 802B60C8 00400008 */  jr        $v0
/* E26EAC 802B60CC 00000000 */   nop
glabel .L802B60D0
/* E26EB0 802B60D0 3C014220 */  lui       $at, (0x42200000 >> 16)
.L802B60D4:
/* E26EB4 802B60D4 44811000 */  mtc1      $at, $f2
/* E26EB8 802B60D8 C600008C */  lwc1      $f0, 0x8C($s0)
/* E26EBC 802B60DC 3C0143B4 */  lui       $at, (0x43B40000 >> 16)
/* E26EC0 802B60E0 44812000 */  mtc1      $at, $f4
/* E26EC4 802B60E4 46020000 */  add.s     $f0, $f0, $f2
.L802B60E8:
/* E26EC8 802B60E8 3C01802B */  lui       $at, %hi(D_802B6730)
.L802B60EC:
/* E26ECC 802B60EC E4226730 */  swc1      $f2, %lo(D_802B6730)($at)
.L802B60F0:
/* E26ED0 802B60F0 4600203E */  c.le.s    $f4, $f0
glabel .L802B60F4
/* E26ED4 802B60F4 00000000 */  nop
/* E26ED8 802B60F8 45000002 */  bc1f      .L802B6104
/* E26EDC 802B60FC E600008C */   swc1     $f0, 0x8C($s0)
.L802B6100:
/* E26EE0 802B6100 E604008C */  swc1      $f4, 0x8C($s0)
.L802B6104:
/* E26EE4 802B6104 C6040070 */  lwc1      $f4, 0x70($s0)
.L802B6108:
/* E26EE8 802B6108 44800000 */  mtc1      $zero, $f0
glabel .L802B610C
/* E26EEC 802B610C 00000000 */  nop
.L802B6110:
/* E26EF0 802B6110 4604003E */  c.le.s    $f0, $f4
/* E26EF4 802B6114 00000000 */  nop
.L802B6118:
/* E26EF8 802B6118 45000023 */  bc1f      .L802B61A8
/* E26EFC 802B611C 00000000 */   nop
glabel action_update_parasol
/* E26F00 802B6120 3C01802B */  lui       $at, %hi(D_802B6718_E274F8)
.L802B6124:
/* E26F04 802B6124 D4226718 */  ldc1      $f2, %lo(D_802B6718_E274F8)($at)
.L802B6128:
/* E26F08 802B6128 46002021 */  cvt.d.s   $f0, $f4
/* E26F0C 802B612C 46220001 */  sub.d     $f0, $f0, $f2
/* E26F10 802B6130 462000A0 */  cvt.s.d   $f2, $f0
glabel .L802B6134
/* E26F14 802B6134 E6020070 */  swc1      $f2, 0x70($s0)
/* E26F18 802B6138 86240008 */  lh        $a0, 0x8($s1)
.L802B613C:
/* E26F1C 802B613C 96220008 */  lhu       $v0, 0x8($s1)
.L802B6140:
/* E26F20 802B6140 04810004 */  bgez      $a0, .L802B6154
.L802B6144:
/* E26F24 802B6144 30424000 */   andi     $v0, $v0, 0x4000
/* E26F28 802B6148 C600002C */  lwc1      $f0, 0x2C($s0)
.L802B614C:
/* E26F2C 802B614C 080AD869 */  j         .L802B61A4
.L802B6150:
/* E26F30 802B6150 46020000 */   add.s    $f0, $f0, $f2
.L802B6154:
/* E26F34 802B6154 10400014 */  beqz      $v0, .L802B61A8
.L802B6158:
/* E26F38 802B6158 00000000 */   nop
.L802B615C:
/* E26F3C 802B615C 0C04417A */  jal       get_entity_by_index
/* E26F40 802B6160 00000000 */   nop
.L802B6164:
/* E26F44 802B6164 0040182D */  daddu     $v1, $v0, $zero
.L802B6168:
/* E26F48 802B6168 1060000F */  beqz      $v1, .L802B61A8
/* E26F4C 802B616C 00000000 */   nop
glabel .L802B6170
/* E26F50 802B6170 860200B0 */  lh        $v0, 0xB0($s0)
glabel .L802B6174
/* E26F54 802B6174 3C013FE0 */  lui       $at, (0x3FE00000 >> 16)
/* E26F58 802B6178 44810800 */  mtc1      $at, $f1
.L802B617C:
/* E26F5C 802B617C 44800000 */  mtc1      $zero, $f0
.L802B6180:
/* E26F60 802B6180 44821000 */  mtc1      $v0, $f2
glabel .L802B6184
/* E26F64 802B6184 00000000 */  nop
.L802B6188:
/* E26F68 802B6188 468010A1 */  cvt.d.w   $f2, $f2
.L802B618C:
/* E26F6C 802B618C 46201082 */  mul.d     $f2, $f2, $f0
.L802B6190:
/* E26F70 802B6190 00000000 */  nop
.L802B6194:
/* E26F74 802B6194 C460004C */  lwc1      $f0, 0x4C($v1)
glabel func_802B6198
/* E26F78 802B6198 46000021 */  cvt.d.s   $f0, $f0
/* E26F7C 802B619C 46220001 */  sub.d     $f0, $f0, $f2
.L802B61A0:
/* E26F80 802B61A0 46200020 */  cvt.s.d   $f0, $f0
.L802B61A4:
/* E26F84 802B61A4 E600002C */  swc1      $f0, 0x2C($s0)
.L802B61A8:
/* E26F88 802B61A8 C602008C */  lwc1      $f2, 0x8C($s0)
.L802B61AC:
/* E26F8C 802B61AC 3C0143B4 */  lui       $at, (0x43B40000 >> 16)
.L802B61B0:
/* E26F90 802B61B0 44810000 */  mtc1      $at, $f0
.L802B61B4:
/* E26F94 802B61B4 00000000 */  nop
/* E26F98 802B61B8 46001032 */  c.eq.s    $f2, $f0
/* E26F9C 802B61BC 00000000 */  nop
glabel func_802B61C0
/* E26FA0 802B61C0 4500000F */  bc1f      .L802B6200
/* E26FA4 802B61C4 2402FFFF */   addiu    $v0, $zero, -0x1
.L802B61C8:
/* E26FA8 802B61C8 C6020070 */  lwc1      $f2, 0x70($s0)
.L802B61CC:
/* E26FAC 802B61CC 44800000 */  mtc1      $zero, $f0
/* E26FB0 802B61D0 00000000 */  nop
.L802B61D4:
/* E26FB4 802B61D4 4600103E */  c.le.s    $f2, $f0
.L802B61D8:
/* E26FB8 802B61D8 00000000 */  nop
.L802B61DC:
/* E26FBC 802B61DC 45000007 */  bc1f      .L802B61FC
/* E26FC0 802B61E0 24020005 */   addiu    $v0, $zero, 0x5
glabel func_802B61E4
/* E26FC4 802B61E4 3C014000 */  lui       $at, (0x40000000 >> 16)
.L802B61E8:
/* E26FC8 802B61E8 44810000 */  mtc1      $at, $f0
.L802B61EC:
/* E26FCC 802B61EC A6020008 */  sh        $v0, 0x8($s0)
.L802B61F0:
/* E26FD0 802B61F0 24020002 */  addiu     $v0, $zero, 0x2
.L802B61F4:
/* E26FD4 802B61F4 A20200B6 */  sb        $v0, 0xB6($s0)
.L802B61F8:
/* E26FD8 802B61F8 E6000070 */  swc1      $f0, 0x70($s0)
.L802B61FC:
/* E26FDC 802B61FC 2402FFFF */  addiu     $v0, $zero, -0x1
.L802B6200:
/* E26FE0 802B6200 080AD973 */  j         .L802B65CC
.L802B6204:
/* E26FE4 802B6204 A6220008 */   sh       $v0, 0x8($s1)
glabel .L802B6208
/* E26FE8 802B6208 C6020070 */  lwc1      $f2, 0x70($s0)
/* E26FEC 802B620C 44800000 */  mtc1      $zero, $f0
.L802B6210:
/* E26FF0 802B6210 00000000 */  nop
.L802B6214:
/* E26FF4 802B6214 4602003E */  c.le.s    $f0, $f2
glabel .L802B6218
/* E26FF8 802B6218 00000000 */  nop
/* E26FFC 802B621C 4500000C */  bc1f      .L802B6250
.L802B6220:
/* E27000 802B6220 00000000 */   nop
.L802B6224:
/* E27004 802B6224 3C01802B */  lui       $at, %hi(D_802B6720_E27500)
glabel .L802B6228
/* E27008 802B6228 D4206720 */  ldc1      $f0, %lo(D_802B6720_E27500)($at)
.L802B622C:
/* E2700C 802B622C 460010A1 */  cvt.d.s   $f2, $f2
glabel action_update_step_up_peach
/* E27010 802B6230 46201081 */  sub.d     $f2, $f2, $f0
/* E27014 802B6234 86220008 */  lh        $v0, 0x8($s1)
glabel .L802B6238
/* E27018 802B6238 462010A0 */  cvt.s.d   $f2, $f2
glabel .L802B623C
/* E2701C 802B623C 04410004 */  bgez      $v0, .L802B6250
glabel .L802B6240
/* E27020 802B6240 E6020070 */   swc1     $f2, 0x70($s0)
glabel .L802B6244
/* E27024 802B6244 C600002C */  lwc1      $f0, 0x2C($s0)
glabel .L802B6248
/* E27028 802B6248 46020000 */  add.s     $f0, $f0, $f2
/* E2702C 802B624C E600002C */  swc1      $f0, 0x2C($s0)
glabel .L802B6250
/* E27030 802B6250 96020008 */  lhu       $v0, 0x8($s0)
.L802B6254:
/* E27034 802B6254 2442FFFF */  addiu     $v0, $v0, -0x1
glabel .L802B6258
/* E27038 802B6258 A6020008 */  sh        $v0, 0x8($s0)
.L802B625C:
/* E2703C 802B625C 00021400 */  sll       $v0, $v0, 16
/* E27040 802B6260 1C4000DA */  bgtz      $v0, .L802B65CC
/* E27044 802B6264 00000000 */   nop
.L802B6268:
/* E27048 802B6268 920200B6 */  lbu       $v0, 0xB6($s0)
.L802B626C:
/* E2704C 802B626C 24420001 */  addiu     $v0, $v0, 0x1
/* E27050 802B6270 080AD973 */  j         .L802B65CC
.L802B6274:
/* E27054 802B6274 A20200B6 */   sb       $v0, 0xB6($s0)
glabel .L802B6278
/* E27058 802B6278 4480A000 */  mtc1      $zero, $f20
/* E2705C 802B627C 27A50010 */  addiu     $a1, $sp, 0x10
.L802B6280:
/* E27060 802B6280 0C038D45 */  jal       player_check_collision_below
.L802B6284:
/* E27064 802B6284 4600A306 */   mov.s    $f12, $f20
glabel action_update_run
/* E27068 802B6288 3C014234 */  lui       $at, (0x42340000 >> 16)
/* E2706C 802B628C 44811000 */  mtc1      $at, $f2
.L802B6290:
/* E27070 802B6290 C604008C */  lwc1      $f4, 0x8C($s0)
glabel func_802B6294
/* E27074 802B6294 E600002C */  swc1      $f0, 0x2C($s0)
glabel .L802B6298
/* E27078 802B6298 46022100 */  add.s     $f4, $f4, $f2
/* E2707C 802B629C 3C01802B */  lui       $at, %hi(D_802B6730)
/* E27080 802B62A0 E4226730 */  swc1      $f2, %lo(D_802B6730)($at)
glabel func_802B62A4
/* E27084 802B62A4 3C01802B */  lui       $at, %hi(D_802B6728_E27508)
.L802B62A8:
/* E27088 802B62A8 D4226728 */  ldc1      $f2, %lo(D_802B6728_E27508)($at)
/* E2708C 802B62AC 46002021 */  cvt.d.s   $f0, $f4
jtbl_802B62B0:
/* E27090 802B62B0 4620103E */  c.le.d    $f2, $f0
.L802B62B4:
/* E27094 802B62B4 00000000 */  nop
glabel .L802B62B8
/* E27098 802B62B8 450000C4 */  bc1f      .L802B65CC
/* E2709C 802B62BC E604008C */   swc1     $f4, 0x8C($s0)
/* E270A0 802B62C0 3C040001 */  lui       $a0, (0x1000B >> 16)
/* E270A4 802B62C4 3C01C05E */  lui       $at, (0xC05E5C92 >> 16)
.L802B62C8:
/* E270A8 802B62C8 34215C92 */  ori       $at, $at, (0xC05E5C92 & 0xFFFF)
glabel action_update_peach_land
/* E270AC 802B62CC 44810000 */  mtc1      $at, $f0
Munchlesia_LaunchVelocity:
/* E270B0 802B62D0 920200B6 */  lbu       $v0, 0xB6($s0)
Munchlesia_LateralVelocity:
/* E270B4 802B62D4 3C01BF98 */  lui       $at, (0xBF985F07 >> 16)
Munchlesia_LaunchAccel:
/* E270B8 802B62D8 34215F07 */  ori       $at, $at, (0xBF985F07 & 0xFFFF)
Munchlesia_LaunchYaw:
/* E270BC 802B62DC 44811000 */  mtc1      $at, $f2
D_802B62E0:
/* E270C0 802B62E0 3484000B */  ori       $a0, $a0, (0x1000B & 0xFFFF)
.L802B62E4:
/* E270C4 802B62E4 E614008C */  swc1      $f20, 0x8C($s0)
/* E270C8 802B62E8 E6000074 */  swc1      $f0, 0x74($s0)
/* E270CC 802B62EC 3C013EF0 */  lui       $at, (0x3EF0D845 >> 16)
/* E270D0 802B62F0 3421D845 */  ori       $at, $at, (0x3EF0D845 & 0xFFFF)
/* E270D4 802B62F4 44810000 */  mtc1      $at, $f0
glabel func_802B62F8
/* E270D8 802B62F8 C6040074 */  lwc1      $f4, 0x74($s0)
.L802B62FC:
/* E270DC 802B62FC 24420001 */  addiu     $v0, $v0, 0x1
D_802B6300:
/* E270E0 802B6300 A20200B6 */  sb        $v0, 0xB6($s0)
/* E270E4 802B6304 E602007C */  swc1      $f2, 0x7C($s0)
.L802B6308:
/* E270E8 802B6308 E6000078 */  swc1      $f0, 0x78($s0)
.L802B630C:
/* E270EC 802B630C 0C037FBF */  jal       suggest_player_anim_allow_backward
.L802B6310:
/* E270F0 802B6310 E6040070 */   swc1     $f4, 0x70($s0)
/* E270F4 802B6314 080AD973 */  j         .L802B65CC
/* E270F8 802B6318 00000000 */   nop
glabel .L802B631C
/* E270FC 802B631C 0C038D36 */  jal       func_800E34D8
.L802B6320:
/* E27100 802B6320 00000000 */   nop
glabel .L802B6324
/* E27104 802B6324 46000506 */  mov.s     $f20, $f0
.L802B6328:
/* E27108 802B6328 4600A306 */  mov.s     $f12, $f20
glabel .L802B632C
/* E2710C 802B632C 0C038D45 */  jal       player_check_collision_below
.L802B6330:
/* E27110 802B6330 27A50010 */   addiu    $a1, $sp, 0x10
/* E27114 802B6334 3C01C2C8 */  lui       $at, (0xC2C80000 >> 16)
.L802B6338:
/* E27118 802B6338 44811000 */  mtc1      $at, $f2
/* E2711C 802B633C 00000000 */  nop
.L802B6340:
/* E27120 802B6340 4602A03C */  c.lt.s    $f20, $f2
/* E27124 802B6344 00000000 */  nop
glabel func_802B6348
/* E27128 802B6348 45000005 */  bc1f      D_802B6360
/* E2712C 802B634C E600002C */   swc1     $f0, 0x2C($s0)
PlayerTweesterPhysicsPtr:
/* E27130 802B6350 AE00007C */  sw        $zero, 0x7C($s0)
glabel .L802B6354
/* E27134 802B6354 AE000078 */  sw        $zero, 0x78($s0)
/* E27138 802B6358 AE000074 */  sw        $zero, 0x74($s0)
.L802B635C:
/* E2713C 802B635C E6020070 */  swc1      $f2, 0x70($s0)
D_802B6360:
/* E27140 802B6360 8FA20010 */  lw        $v0, 0x10($sp)
.L802B6364:
/* E27144 802B6364 04400099 */  bltz      $v0, .L802B65CC
/* E27148 802B6368 00000000 */   nop
.L802B636C:
/* E2714C 802B636C 96240002 */  lhu       $a0, 0x2($s1)
glabel .L802B6370
/* E27150 802B6370 30824000 */  andi      $v0, $a0, 0x4000
.L802B6374:
/* E27154 802B6374 10400013 */  beqz      $v0, .L802B63C4
/* E27158 802B6378 00042400 */   sll      $a0, $a0, 16
glabel .L802B637C
/* E2715C 802B637C 0C0441A9 */  jal       get_entity_type
/* E27160 802B6380 00042403 */   sra      $a0, $a0, 16
/* E27164 802B6384 2442FFF9 */  addiu     $v0, $v0, -0x7
/* E27168 802B6388 2C420002 */  sltiu     $v0, $v0, 0x2
/* E2716C 802B638C 1040000D */  beqz      $v0, .L802B63C4
/* E27170 802B6390 00000000 */   nop
glabel .L802B6394
/* E27174 802B6394 0C04417A */  jal       get_entity_by_index
.L802B6398:
/* E27178 802B6398 86240002 */   lh       $a0, 0x2($s1)
.L802B639C:
/* E2717C 802B639C 90430006 */  lbu       $v1, 0x6($v0)
/* E27180 802B63A0 34630001 */  ori       $v1, $v1, 0x1
/* E27184 802B63A4 A0430006 */  sb        $v1, 0x6($v0)
.L802B63A8:
/* E27188 802B63A8 2402000B */  addiu     $v0, $zero, 0xB
.L802B63AC:
/* E2718C 802B63AC A20200B6 */  sb        $v0, 0xB6($s0)
glabel .L802B63B0
/* E27190 802B63B0 8E020000 */  lw        $v0, 0x0($s0)
/* E27194 802B63B4 2403FFF7 */  addiu     $v1, $zero, -0x9
/* E27198 802B63B8 00431024 */  and       $v0, $v0, $v1
/* E2719C 802B63BC 080AD973 */  j         .L802B65CC
.L802B63C0:
/* E271A0 802B63C0 AE020000 */   sw       $v0, 0x0($s0)
.L802B63C4:
/* E271A4 802B63C4 8FA40010 */  lw        $a0, 0x10($sp)
.L802B63C8:
/* E271A8 802B63C8 0C016F6A */  jal       get_collider_flags
.L802B63CC:
/* E271AC 802B63CC 00000000 */   nop
.L802B63D0:
/* E271B0 802B63D0 304300FF */  andi      $v1, $v0, 0xFF
glabel action_update_first_strike
/* E271B4 802B63D4 24020003 */  addiu     $v0, $zero, 0x3
.L802B63D8:
/* E271B8 802B63D8 54620009 */  bnel      $v1, $v0, .L802B6400
glabel .L802B63DC
/* E271BC 802B63DC 24020002 */   addiu    $v0, $zero, 0x2
.L802B63E0:
/* E271C0 802B63E0 24040017 */  addiu     $a0, $zero, 0x17
.L802B63E4:
/* E271C4 802B63E4 24020001 */  addiu     $v0, $zero, 0x1
/* E271C8 802B63E8 0C039769 */  jal       set_action_state
/* E271CC 802B63EC A20200BF */   sb       $v0, 0xBF($s0)
.L802B63F0:
/* E271D0 802B63F0 8E020000 */  lw        $v0, 0x0($s0)
.L802B63F4:
/* E271D4 802B63F4 2403FFF7 */  addiu     $v1, $zero, -0x9
/* E271D8 802B63F8 080AD906 */  j         .L802B6418
/* E271DC 802B63FC 34420800 */   ori      $v0, $v0, 0x800
.L802B6400:
/* E271E0 802B6400 14620008 */  bne       $v1, $v0, .L802B6424
/* E271E4 802B6404 3C040001 */   lui      $a0, (0x1000B >> 16)
/* E271E8 802B6408 0C039769 */  jal       set_action_state
.L802B640C:
/* E271EC 802B640C 24040017 */   addiu    $a0, $zero, 0x17
/* E271F0 802B6410 8E020000 */  lw        $v0, 0x0($s0)
.L802B6414:
/* E271F4 802B6414 2403FFF7 */  addiu     $v1, $zero, -0x9
.L802B6418:
/* E271F8 802B6418 00431024 */  and       $v0, $v0, $v1
/* E271FC 802B641C 080AD98A */  j         .L802B6628
.L802B6420:
/* E27200 802B6420 AE020000 */   sw       $v0, 0x0($s0)
.L802B6424:
/* E27204 802B6424 3C01C05E */  lui       $at, (0xC05E5C92 >> 16)
.L802B6428:
/* E27208 802B6428 34215C92 */  ori       $at, $at, (0xC05E5C92 & 0xFFFF)
.L802B642C:
/* E2720C 802B642C 44810000 */  mtc1      $at, $f0
D_802B6430:
/* E27210 802B6430 3C013EF0 */  lui       $at, (0x3EF0D845 >> 16)
/* E27214 802B6434 3421D845 */  ori       $at, $at, (0x3EF0D845 & 0xFFFF)
/* E27218 802B6438 44811000 */  mtc1      $at, $f2
/* E2721C 802B643C 3C01BF98 */  lui       $at, (0xBF985F07 >> 16)
/* E27220 802B6440 34215F07 */  ori       $at, $at, (0xBF985F07 & 0xFFFF)
/* E27224 802B6444 44812000 */  mtc1      $at, $f4
.L802B6448:
/* E27228 802B6448 3C014120 */  lui       $at, (0x41200000 >> 16)
glabel action_update_peach_step_down_land
/* E2722C 802B644C 44813000 */  mtc1      $at, $f6
.L802B6450:
/* E27230 802B6450 3484000B */  ori       $a0, $a0, (0x1000B & 0xFFFF)
.L802B6454:
/* E27234 802B6454 E6000074 */  swc1      $f0, 0x74($s0)
/* E27238 802B6458 E6020078 */  swc1      $f2, 0x78($s0)
/* E2723C 802B645C E604007C */  swc1      $f4, 0x7C($s0)
.L802B6460:
/* E27240 802B6460 0C037FBF */  jal       suggest_player_anim_allow_backward
.L802B6464:
/* E27244 802B6464 E6060070 */   swc1     $f6, 0x70($s0)
/* E27248 802B6468 0000202D */  daddu     $a0, $zero, $zero
glabel .L802B646C
/* E2724C 802B646C 0080282D */  daddu     $a1, $a0, $zero
/* E27250 802B6470 2402000E */  addiu     $v0, $zero, 0xE
/* E27254 802B6474 A20200B4 */  sb        $v0, 0xB4($s0)
glabel action_update_raise_arms
/* E27258 802B6478 2402000C */  addiu     $v0, $zero, 0xC
glabel action_update_peach_falling
/* E2725C 802B647C 920300B6 */  lbu       $v1, 0xB6($s0)
/* E27260 802B6480 24060004 */  addiu     $a2, $zero, 0x4
/* E27264 802B6484 A60000C0 */  sh        $zero, 0xC0($s0)
/* E27268 802B6488 A2020280 */  sb        $v0, 0x280($s0)
.L802B648C:
/* E2726C 802B648C AE00008C */  sw        $zero, 0x8C($s0)
.L802B6490:
/* E27270 802B6490 24630001 */  addiu     $v1, $v1, 0x1
.L802B6494:
/* E27274 802B6494 0C0B2D5B */  jal       exec_ShakeCam1
/* E27278 802B6498 A20300B6 */   sb       $v1, 0xB6($s0)
/* E2727C 802B649C 24040149 */  addiu     $a0, $zero, 0x149
.L802B64A0:
/* E27280 802B64A0 0C052736 */  jal       sfx_play_sound_at_player
/* E27284 802B64A4 0000282D */   daddu    $a1, $zero, $zero
glabel .L802B64A8
/* E27288 802B64A8 24040080 */  addiu     $a0, $zero, 0x80
.L802B64AC:
/* E2728C 802B64AC 0C00A3C2 */  jal       start_rumble
/* E27290 802B64B0 24050019 */   addiu    $a1, $zero, 0x19
.L802B64B4:
/* E27294 802B64B4 3C048016 */  lui       $a0, %hi(gCurrentHiddenPanels)
/* E27298 802B64B8 2484A578 */  addiu     $a0, $a0, %lo(gCurrentHiddenPanels)
/* E2729C 802B64BC C600002C */  lwc1      $f0, 0x2C($s0)
/* E272A0 802B64C0 8E030000 */  lw        $v1, 0x0($s0)
.L802B64C4:
/* E272A4 802B64C4 24020001 */  addiu     $v0, $zero, 0x1
/* E272A8 802B64C8 A0820000 */  sb        $v0, 0x0($a0)
.L802B64CC:
/* E272AC 802B64CC 34630400 */  ori       $v1, $v1, 0x400
.L802B64D0:
/* E272B0 802B64D0 E4800008 */  swc1      $f0, 0x8($a0)
.L802B64D4:
/* E272B4 802B64D4 080AD973 */  j         .L802B65CC
.L802B64D8:
/* E272B8 802B64D8 AE030000 */   sw       $v1, 0x0($s0)
glabel .L802B64DC
/* E272BC 802B64DC 0C038D12 */  jal       integrate_gravity
glabel .L802B64E0
/* E272C0 802B64E0 00000000 */   nop
/* E272C4 802B64E4 4480B000 */  mtc1      $zero, $f22
/* E272C8 802B64E8 46000506 */  mov.s     $f20, $f0
.L802B64EC:
/* E272CC 802B64EC 4616A032 */  c.eq.s    $f20, $f22
glabel .L802B64F0
/* E272D0 802B64F0 00000000 */  nop
/* E272D4 802B64F4 45030035 */  bc1tl     .L802B65CC
.L802B64F8:
/* E272D8 802B64F8 24120001 */   addiu    $s2, $zero, 0x1
/* E272DC 802B64FC C6000070 */  lwc1      $f0, 0x70($s0)
/* E272E0 802B6500 4600B03C */  c.lt.s    $f22, $f0
/* E272E4 802B6504 00000000 */  nop
glabel action_update_pushing_block
/* E272E8 802B6508 45000005 */  bc1f      .L802B6520
.L802B650C:
/* E272EC 802B650C 4600A306 */   mov.s    $f12, $f20
glabel .L802B6510
/* E272F0 802B6510 C600002C */  lwc1      $f0, 0x2C($s0)
/* E272F4 802B6514 46140000 */  add.s     $f0, $f0, $f20
/* E272F8 802B6518 080AD955 */  j         .L802B6554
.L802B651C:
/* E272FC 802B651C E600002C */   swc1     $f0, 0x2C($s0)
.L802B6520:
/* E27300 802B6520 0C038D45 */  jal       player_check_collision_below
.L802B6524:
/* E27304 802B6524 27A50010 */   addiu    $a1, $sp, 0x10
/* E27308 802B6528 C6020070 */  lwc1      $f2, 0x70($s0)
/* E2730C 802B652C 4616103C */  c.lt.s    $f2, $f22
.L802B6530:
/* E27310 802B6530 00000000 */  nop
.L802B6534:
/* E27314 802B6534 45000007 */  bc1f      .L802B6554
/* E27318 802B6538 E600002C */   swc1     $f0, 0x2C($s0)
/* E2731C 802B653C 8FA20010 */  lw        $v0, 0x10($sp)
/* E27320 802B6540 04400004 */  bltz      $v0, .L802B6554
glabel .L802B6544
/* E27324 802B6544 00000000 */   nop
glabel .L802B6548
/* E27328 802B6548 920200B6 */  lbu       $v0, 0xB6($s0)
/* E2732C 802B654C 24420001 */  addiu     $v0, $v0, 0x1
glabel func_802B6550
/* E27330 802B6550 A20200B6 */  sb        $v0, 0xB6($s0)
.L802B6554:
/* E27334 802B6554 44806000 */  mtc1      $zero, $f12
/* E27338 802B6558 0C038D45 */  jal       player_check_collision_below
/* E2733C 802B655C 27A50010 */   addiu    $a1, $sp, 0x10
/* E27340 802B6560 080AD973 */  j         .L802B65CC
/* E27344 802B6564 E600002C */   swc1     $f0, 0x2C($s0)
glabel .L802B6568
/* E27348 802B6568 4480A000 */  mtc1      $zero, $f20
.L802B656C:
/* E2734C 802B656C 27A50010 */  addiu     $a1, $sp, 0x10
.L802B6570:
/* E27350 802B6570 0C038D45 */  jal       player_check_collision_below
.L802B6574:
/* E27354 802B6574 4600A306 */   mov.s    $f12, $f20
/* E27358 802B6578 8FA20010 */  lw        $v0, 0x10($sp)
/* E2735C 802B657C 04400005 */  bltz      $v0, .L802B6594
.L802B6580:
/* E27360 802B6580 E600002C */   swc1     $f0, 0x2C($s0)
/* E27364 802B6584 E6140070 */  swc1      $f20, 0x70($s0)
/* E27368 802B6588 E6140074 */  swc1      $f20, 0x74($s0)
glabel .L802B658C
/* E2736C 802B658C E6140078 */  swc1      $f20, 0x78($s0)
.L802B6590:
/* E27370 802B6590 E614007C */  swc1      $f20, 0x7C($s0)
glabel .L802B6594
/* E27374 802B6594 92020280 */  lbu       $v0, 0x280($s0)
.L802B6598:
/* E27378 802B6598 2442FFFF */  addiu     $v0, $v0, -0x1
.L802B659C:
/* E2737C 802B659C A2020280 */  sb        $v0, 0x280($s0)
/* E27380 802B65A0 00021600 */  sll       $v0, $v0, 24
glabel .L802B65A4
/* E27384 802B65A4 1C400009 */  bgtz      $v0, .L802B65CC
.L802B65A8:
/* E27388 802B65A8 00000000 */   nop
/* E2738C 802B65AC 080AD973 */  j         .L802B65CC
/* E27390 802B65B0 24120001 */   addiu    $s2, $zero, 0x1
glabel .L802B65B4
/* E27394 802B65B4 0C039769 */  jal       set_action_state
.L802B65B8:
/* E27398 802B65B8 24040007 */   addiu    $a0, $zero, 0x7
/* E2739C 802B65BC 920200B6 */  lbu       $v0, 0xB6($s0)
glabel .L802B65C0
/* E273A0 802B65C0 24420001 */  addiu     $v0, $v0, 0x1
/* E273A4 802B65C4 0C038069 */  jal       enable_player_input
/* E273A8 802B65C8 A20200B6 */   sb       $v0, 0xB6($s0)
glabel .L802B65CC
/* E273AC 802B65CC 12400007 */  beqz      $s2, .L802B65EC
.L802B65D0:
/* E273B0 802B65D0 00000000 */   nop
/* E273B4 802B65D4 0C039769 */  jal       set_action_state
/* E273B8 802B65D8 2404000A */   addiu    $a0, $zero, 0xA
.L802B65DC:
/* E273BC 802B65DC 8E020000 */  lw        $v0, 0x0($s0)
.L802B65E0:
/* E273C0 802B65E0 2403FFF7 */  addiu     $v1, $zero, -0x9
.L802B65E4:
/* E273C4 802B65E4 00431024 */  and       $v0, $v0, $v1
glabel action_update_walk_peach
/* E273C8 802B65E8 AE020000 */  sw        $v0, 0x0($s0)
.L802B65EC:
/* E273CC 802B65EC C6020070 */  lwc1      $f2, 0x70($s0)
.L802B65F0:
/* E273D0 802B65F0 44800000 */  mtc1      $zero, $f0
/* E273D4 802B65F4 00000000 */  nop
glabel func_802B65F8_E26D08
/* E273D8 802B65F8 4600103C */  c.lt.s    $f2, $f0
/* E273DC 802B65FC 00000000 */  nop
/* E273E0 802B6600 45000009 */  bc1f      .L802B6628
.L802B6604:
/* E273E4 802B6604 00000000 */   nop
/* E273E8 802B6608 0C0AD992 */  jal       func_802B6648_E27428
glabel .L802B660C
/* E273EC 802B660C 00000000 */   nop
/* E273F0 802B6610 04400005 */  bltz      $v0, .L802B6628
/* E273F4 802B6614 AFA20010 */   sw       $v0, 0x10($sp)
/* E273F8 802B6618 97A30012 */  lhu       $v1, 0x12($sp)
glabel .L802B661C
/* E273FC 802B661C 2402FFFF */  addiu     $v0, $zero, -0x1
.L802B6620:
/* E27400 802B6620 A6220004 */  sh        $v0, 0x4($s1)
/* E27404 802B6624 A6230002 */  sh        $v1, 0x2($s1)
.L802B6628:
/* E27408 802B6628 8FBF0024 */  lw        $ra, 0x24($sp)
/* E2740C 802B662C 8FB20020 */  lw        $s2, 0x20($sp)
.L802B6630:
/* E27410 802B6630 8FB1001C */  lw        $s1, 0x1C($sp)
glabel .L802B6634
/* E27414 802B6634 8FB00018 */  lw        $s0, 0x18($sp)
glabel action_update_talk
/* E27418 802B6638 D7B60030 */  ldc1      $f22, 0x30($sp)
/* E2741C 802B663C D7B40028 */  ldc1      $f20, 0x28($sp)
/* E27420 802B6640 03E00008 */  jr        $ra
glabel .L802B6644
/* E27424 802B6644 27BD0038 */   addiu    $sp, $sp, 0x38

### DECOMPILED C INSTRUCTIONS:

void action_update_spin_jump(void) {
    PlayerStatus* playerStatus = &gPlayerStatus;
    CollisionStatus* collisionStatus = &gCollisionStatus;
    HiddenPanelsData* panels;
    Entity* entity;
    s32 belowColliderID;
    s32 landed;
    f32 velocity;
    u32 entityType;
    s32 surfaceType;

    static f32 RotationRate;

    if (playerStatus->flags & PS_FLAG_ACTION_STATE_CHANGED) {
        playerStatus->flags &= ~(PS_FLAG_ACTION_STATE_CHANGED | PS_FLAG_JUMPING | PS_FLAG_FALLING);
        playerStatus->flags |= (PS_FLAG_JUMPING | PS_FLAG_FLYING);

        playerStatus->actionSubstate = SUBSTATE_SPIN;
        playerStatus->currentSpeed = 0.0f;
        RotationRate = 0.0f;
        playerStatus->gravityIntegrator[0] = 5.2f;
        suggest_player_anim_allow_backward(ANIM_Mario1_Sit);
        disable_player_input();
        playerStatus->flags |= PS_FLAG_SPECIAL_JUMP;
        gCameras[CAM_DEFAULT].moveFlags |= CAMERA_MOVE_IGNORE_PLAYER_Y;
        sfx_play_sound_at_player(SOUND_SPIN_JUMP, SOUND_SPACE_MODE_0);
    }

    landed = FALSE;
    switch (playerStatus->actionSubstate) {
        case SUBSTATE_SPIN:
            RotationRate = 40.0f;
            playerStatus->pitch += RotationRate;
            if (playerStatus->pitch >= 360.0f) {
                playerStatus->pitch = 360.0f;
            }
            if (playerStatus->gravityIntegrator[0] >= 0.0f) {
                playerStatus->gravityIntegrator[0] -= 0.54;
                if (collisionStatus->currentCeiling < 0) {
                    playerStatus->position.y += playerStatus->gravityIntegrator[0];
                } else if (collisionStatus->currentCeiling & COLLISION_WITH_ENTITY_BIT) {
                    entity = get_entity_by_index(collisionStatus->currentCeiling);
                    if (entity != NULL) {
                        playerStatus->position.y = entity->position.y - (playerStatus->colliderHeight * 0.5);
                    }
                }
            }
            if (playerStatus->pitch == 360.0f) {
                if (playerStatus->gravityIntegrator[0] <= 0.0f) {
                    playerStatus->currentStateTime = 5;
                    playerStatus->actionSubstate = SUBSTATE_RISE;
                    playerStatus->gravityIntegrator[0] = 2.0f;
                }
            }
            collisionStatus->currentCeiling = -1;
            break;
        case SUBSTATE_RISE:
            if (playerStatus->gravityIntegrator[0] >= 0.0f) {
                playerStatus->gravityIntegrator[0] -= 1.4;
                if (collisionStatus->currentCeiling < 0) {
                    playerStatus->position.y += playerStatus->gravityIntegrator[0];
                }
            }
            if (--playerStatus->currentStateTime <= 0) {
                playerStatus->actionSubstate++;
            }
            break;
        case SUBSTATE_HOVER:
            playerStatus->position.y = player_check_collision_below(0.0f, &belowColliderID);
            RotationRate = 45.0f;
            playerStatus->pitch += RotationRate;
            if (playerStatus->pitch >= 360.0) {
                playerStatus->pitch = 0.0f;
                playerStatus->actionSubstate++;
                playerStatus->gravityIntegrator[1] = -3.4744f;
                playerStatus->gravityIntegrator[2] = 0.4704f;
                playerStatus->gravityIntegrator[3] = -1.1904f;
                playerStatus->gravityIntegrator[0] = playerStatus->gravityIntegrator[1];
                suggest_player_anim_allow_backward(ANIM_Mario1_SpinJump);
            }
            break;
        case SUBSTATE_DESCEND:
            velocity = player_fall_distance();
            playerStatus->position.y = player_check_collision_below(velocity, &belowColliderID);
            if (velocity < -100.0f) {
                playerStatus->gravityIntegrator[3] = 0.0f;
                playerStatus->gravityIntegrator[2] = 0.0f;
                playerStatus->gravityIntegrator[1] = 0.0f;
                playerStatus->gravityIntegrator[0] = -100.0f;
            }
            if (belowColliderID >= 0) {
                if (collisionStatus->currentFloor & COLLISION_WITH_ENTITY_BIT && (entityType = get_entity_type(collisionStatus->currentFloor),
                        entityType == ENTITY_TYPE_RED_SWITCH || entityType == ENTITY_TYPE_BLUE_SWITCH)) {
                    get_entity_by_index(collisionStatus->currentFloor)->collisionFlags |= ENTITY_COLLISION_PLAYER_TOUCH_FLOOR;
                    playerStatus->actionSubstate = SUBSTATE_HIT_SWITCH;
                    playerStatus->flags &= ~PS_FLAG_FLYING;
                    break;
                } else {
                    surfaceType = get_collider_flags(belowColliderID) & COLLIDER_FLAGS_SURFACE_TYPE_MASK;
                    if (surfaceType == SURFACE_TYPE_LAVA) {
                        playerStatus->hazardType = HAZARD_TYPE_LAVA;
                        set_action_state(ACTION_STATE_HIT_LAVA);
                        playerStatus->flags |= PS_FLAG_HIT_FIRE;
                        playerStatus->flags &= ~PS_FLAG_FLYING;
                        return;
                    } else if (surfaceType == SURFACE_TYPE_SPIKES) {
                        set_action_state(ACTION_STATE_HIT_LAVA);
                        playerStatus->flags &= ~PS_FLAG_FLYING;
                        return;
                    } else {
                        playerStatus->gravityIntegrator[1] = -3.4744f;
                        playerStatus->gravityIntegrator[2] = 0.4704f;
                        playerStatus->gravityIntegrator[3] = -1.1904f;
                        playerStatus->gravityIntegrator[0] = 10.0f;
                        suggest_player_anim_allow_backward(ANIM_Mario1_SpinJump);
                        playerStatus->actionState = ACTION_STATE_SPIN_POUND;
                        playerStatus->timeInAir = 0;
                        playerStatus->poundImpactDelay = 12;
                        playerStatus->pitch = 0.0f;
                        playerStatus->actionSubstate++;
                        exec_ShakeCam1(0, 0, 4);
                        sfx_play_sound_at_player(SOUND_149, SOUND_SPACE_MODE_0);
                        start_rumble(128, 25);
                        panels = &gCurrentHiddenPanels;
                        panels->tryFlipTrigger = TRUE;
                        panels->flipTriggerPosY = playerStatus->position.y;
                        playerStatus->flags |= PS_FLAG_SPECIAL_LAND;
                    }
                }
            }
            break;
        case SUBSTATE_IMPACT:
            velocity = integrate_gravity();
            if (velocity == 0.0f) {
                landed = TRUE;
            } else {
                if (playerStatus->gravityIntegrator[0] > 0.0f) {
                    playerStatus->position.y += velocity;
                } else {
                    playerStatus->position.y = player_check_collision_below(velocity, &belowColliderID);
                    if (playerStatus->gravityIntegrator[0] < 0.0f && belowColliderID >= 0) {
                        playerStatus->actionSubstate++;
                    }
                }
                playerStatus->position.y = player_check_collision_below(0.0f, &belowColliderID);
            }
            break;
        case SUBSTATE_HOLD:
            playerStatus->position.y = player_check_collision_below(0.0f, &belowColliderID);
            if (belowColliderID >= 0) {
                playerStatus->gravityIntegrator[0] = 0.0f;
                playerStatus->gravityIntegrator[1] = 0.0f;
                playerStatus->gravityIntegrator[2] = 0.0f;
                playerStatus->gravityIntegrator[3] = 0.0f;
            }
            // fallthrough
        case SUBSTATE_ABORT:
            if (--playerStatus->poundImpactDelay <= 0) {
                landed = TRUE;
            }
            break;
        case SUBSTATE_HIT_SWITCH:
            set_action_state(ACTION_STATE_LANDING_ON_SWITCH);
            playerStatus->actionSubstate++;
            enable_player_input();
            break;
        case SUBSTATE_DONE_SWITCH:
            break;
    }

    if (landed) {
        set_action_state(ACTION_STATE_LAND);
        playerStatus->flags &= ~PS_FLAG_FLYING;
    }
    if (playerStatus->gravityIntegrator[0] < 0.0f) {
        belowColliderID = get_collider_below_spin_jump();
        if (belowColliderID >= 0) {
            collisionStatus->lastTouchedFloor = -1;
            collisionStatus->currentFloor = belowColliderID;
        }
    }
}


### RAW ASSEMBLY INSTRUCTIONS:

glabel damage_indicator_render_impl
/* 34F958 E003C498 27BDFF18 */  addiu     $sp, $sp, -0xE8
/* 34F95C E003C49C 3C05DB06 */  lui       $a1, (0xDB060024 >> 16)
/* 34F960 E003C4A0 34A50024 */  ori       $a1, $a1, (0xDB060024 & 0xFFFF)
/* 34F964 E003C4A4 AFA400E8 */  sw        $a0, 0xE8($sp)
/* 34F968 E003C4A8 27A40020 */  addiu     $a0, $sp, 0x20
/* 34F96C E003C4AC AFB300BC */  sw        $s3, 0xBC($sp)
/* 34F970 E003C4B0 3C13800A */  lui       $s3, %hi(gMainGfxPos)
/* 34F974 E003C4B4 2673A66C */  addiu     $s3, $s3, %lo(gMainGfxPos)
/* 34F978 E003C4B8 8FAA00E8 */  lw        $t2, 0xE8($sp)
/* 34F97C E003C4BC 3C02E700 */  lui       $v0, (0xE7000000 >> 16)
/* 34F980 E003C4C0 AFBF00D4 */  sw        $ra, 0xD4($sp)
/* 34F984 E003C4C4 AFBE00D0 */  sw        $fp, 0xD0($sp)
/* 34F988 E003C4C8 AFB700CC */  sw        $s7, 0xCC($sp)
/* 34F98C E003C4CC AFB600C8 */  sw        $s6, 0xC8($sp)
/* 34F990 E003C4D0 AFB500C4 */  sw        $s5, 0xC4($sp)
/* 34F994 E003C4D4 AFB400C0 */  sw        $s4, 0xC0($sp)
/* 34F998 E003C4D8 AFB200B8 */  sw        $s2, 0xB8($sp)
/* 34F99C E003C4DC AFB100B4 */  sw        $s1, 0xB4($sp)
/* 34F9A0 E003C4E0 AFB000B0 */  sw        $s0, 0xB0($sp)
/* 34F9A4 E003C4E4 F7B600E0 */  sdc1      $f22, 0xE0($sp)
/* 34F9A8 E003C4E8 F7B400D8 */  sdc1      $f20, 0xD8($sp)
/* 34F9AC E003C4EC 8E680000 */  lw        $t0, 0x0($s3)
/* 34F9B0 E003C4F0 8D54000C */  lw        $s4, 0xC($t2)
/* 34F9B4 E003C4F4 0100182D */  daddu     $v1, $t0, $zero
/* 34F9B8 E003C4F8 8E8A003C */  lw        $t2, 0x3C($s4)
/* 34F9BC E003C4FC 25080008 */  addiu     $t0, $t0, 0x8
/* 34F9C0 E003C500 AFAA00A8 */  sw        $t2, 0xA8($sp)
/* 34F9C4 E003C504 AC620000 */  sw        $v0, 0x0($v1)
/* 34F9C8 E003C508 AC600004 */  sw        $zero, 0x4($v1)
/* 34F9CC E003C50C AD050000 */  sw        $a1, 0x0($t0)
/* 34F9D0 E003C510 8FAA00E8 */  lw        $t2, 0xE8($sp)
/* 34F9D4 E003C514 3C120001 */  lui       $s2, (0x11630 >> 16)
/* 34F9D8 E003C518 8D420010 */  lw        $v0, 0x10($t2)
/* 34F9DC E003C51C 36521630 */  ori       $s2, $s2, (0x11630 & 0xFFFF)
/* 34F9E0 E003C520 AE680000 */  sw        $t0, 0x0($s3)
/* 34F9E4 E003C524 8C42001C */  lw        $v0, 0x1C($v0)
/* 34F9E8 E003C528 3C038000 */  lui       $v1, (0x80000000 >> 16)
/* 34F9EC E003C52C 00431021 */  addu      $v0, $v0, $v1
/* 34F9F0 E003C530 AD020004 */  sw        $v0, 0x4($t0)
/* 34F9F4 E003C534 8E850004 */  lw        $a1, 0x4($s4)
/* 34F9F8 E003C538 8E860008 */  lw        $a2, 0x8($s4)
/* 34F9FC E003C53C 8E87000C */  lw        $a3, 0xC($s4)
/* 34FA00 E003C540 25080008 */  addiu     $t0, $t0, 0x8
/* 34FA04 E003C544 0C080108 */  jal       shim_guTranslateF
/* 34FA08 E003C548 AE680000 */   sw       $t0, 0x0($s3)
/* 34FA0C E003C54C 27B00060 */  addiu     $s0, $sp, 0x60
/* 34FA10 E003C550 3C038007 */  lui       $v1, %hi(gCurrentCameraID)
/* 34FA14 E003C554 8C637410 */  lw        $v1, %lo(gCurrentCameraID)($v1)
/* 34FA18 E003C558 44800000 */  mtc1      $zero, $f0
/* 34FA1C E003C55C 00031080 */  sll       $v0, $v1, 2
/* 34FA20 E003C560 00431021 */  addu      $v0, $v0, $v1
/* 34FA24 E003C564 00021080 */  sll       $v0, $v0, 2
/* 34FA28 E003C568 00431023 */  subu      $v0, $v0, $v1
/* 34FA2C E003C56C 000218C0 */  sll       $v1, $v0, 3
/* 34FA30 E003C570 00431021 */  addu      $v0, $v0, $v1
/* 34FA34 E003C574 000210C0 */  sll       $v0, $v0, 3
/* 34FA38 E003C578 44060000 */  mfc1      $a2, $f0
/* 34FA3C E003C57C 3C01800B */  lui       $at, %hi(gCameras + 0x6C)
/* 34FA40 E003C580 00220821 */  addu      $at, $at, $v0
/* 34FA44 E003C584 C4201DEC */  lwc1      $f0, %lo(gCameras + 0x6C)($at)
/* 34FA48 E003C588 3C073F80 */  lui       $a3, (0x3F800000 >> 16)
/* 34FA4C E003C58C 46000007 */  neg.s     $f0, $f0
/* 34FA50 E003C590 44050000 */  mfc1      $a1, $f0
/* 34FA54 E003C594 0200202D */  daddu     $a0, $s0, $zero
/* 34FA58 E003C598 0C080104 */  jal       shim_guRotateF
/* 34FA5C E003C59C AFA60010 */   sw       $a2, 0x10($sp)
/* 34FA60 E003C5A0 0200202D */  daddu     $a0, $s0, $zero
/* 34FA64 E003C5A4 27A50020 */  addiu     $a1, $sp, 0x20
/* 34FA68 E003C5A8 0C080114 */  jal       shim_guMtxCatF
/* 34FA6C E003C5AC 00A0302D */   daddu    $a2, $a1, $zero
/* 34FA70 E003C5B0 27A40020 */  addiu     $a0, $sp, 0x20
/* 34FA74 E003C5B4 3C108007 */  lui       $s0, %hi(gMatrixListPos)
/* 34FA78 E003C5B8 261041F0 */  addiu     $s0, $s0, %lo(gMatrixListPos)
/* 34FA7C E003C5BC 3C11800A */  lui       $s1, %hi(gDisplayContext)
/* 34FA80 E003C5C0 2631A674 */  addiu     $s1, $s1, %lo(gDisplayContext)
/* 34FA84 E003C5C4 96050000 */  lhu       $a1, 0x0($s0)
/* 34FA88 E003C5C8 8E220000 */  lw        $v0, 0x0($s1)
/* 34FA8C E003C5CC 00052980 */  sll       $a1, $a1, 6
/* 34FA90 E003C5D0 00B22821 */  addu      $a1, $a1, $s2
/* 34FA94 E003C5D4 0C080118 */  jal       shim_guMtxF2L
/* 34FA98 E003C5D8 00452821 */   addu     $a1, $v0, $a1
/* 34FA9C E003C5DC 8E670000 */  lw        $a3, 0x0($s3)
/* 34FAA0 E003C5E0 00E0282D */  daddu     $a1, $a3, $zero
/* 34FAA4 E003C5E4 24E70008 */  addiu     $a3, $a3, 0x8
/* 34FAA8 E003C5E8 AE670000 */  sw        $a3, 0x0($s3)
/* 34FAAC E003C5EC 96040000 */  lhu       $a0, 0x0($s0)
/* 34FAB0 E003C5F0 3C02DA38 */  lui       $v0, (0xDA380000 >> 16)
/* 34FAB4 E003C5F4 ACA20000 */  sw        $v0, 0x0($a1)
/* 34FAB8 E003C5F8 8E230000 */  lw        $v1, 0x0($s1)
/* 34FABC E003C5FC 3082FFFF */  andi      $v0, $a0, 0xFFFF
/* 34FAC0 E003C600 00021180 */  sll       $v0, $v0, 6
/* 34FAC4 E003C604 00521021 */  addu      $v0, $v0, $s2
/* 34FAC8 E003C608 00621821 */  addu      $v1, $v1, $v0
/* 34FACC E003C60C ACA30004 */  sw        $v1, 0x4($a1)
/* 34FAD0 E003C610 8FAA00E8 */  lw        $t2, 0xE8($sp)
/* 34FAD4 E003C614 8D450008 */  lw        $a1, 0x8($t2)
/* 34FAD8 E003C618 24840001 */  addiu     $a0, $a0, 0x1
/* 34FADC E003C61C A6040000 */  sh        $a0, 0x0($s0)
/* 34FAE0 E003C620 8D43000C */  lw        $v1, 0xC($t2)
/* 34FAE4 E003C624 8E840034 */  lw        $a0, 0x34($s4)
/* 34FAE8 E003C628 00051180 */  sll       $v0, $a1, 6
/* 34FAEC E003C62C 2442FFC0 */  addiu     $v0, $v0, -0x40
/* 34FAF0 E003C630 0062A021 */  addu      $s4, $v1, $v0
/* 34FAF4 E003C634 2484FFFF */  addiu     $a0, $a0, -0x1
/* 34FAF8 E003C638 24A5FFFF */  addiu     $a1, $a1, -0x1
/* 34FAFC E003C63C AFA400A0 */  sw        $a0, 0xA0($sp)
/* 34FB00 E003C640 AFA500A4 */  sw        $a1, 0xA4($sp)
/* 34FB04 E003C644 8E83002C */  lw        $v1, 0x2C($s4)
/* 34FB08 E003C648 240200FF */  addiu     $v0, $zero, 0xFF
/* 34FB0C E003C64C 14620005 */  bne       $v1, $v0, .LE003C664
/* 34FB10 E003C650 3C05E200 */   lui      $a1, (0xE200001C >> 16)
/* 34FB14 E003C654 34A5001C */  ori       $a1, $a1, (0xE200001C & 0xFFFF)
/* 34FB18 E003C658 3C030055 */  lui       $v1, (0x553048 >> 16)
/* 34FB1C E003C65C 0800F19C */  j         .LE003C670
/* 34FB20 E003C660 34633048 */   ori      $v1, $v1, (0x553048 & 0xFFFF)
.LE003C664:
/* 34FB24 E003C664 34A5001C */  ori       $a1, $a1, (0xE200001C & 0xFFFF)
/* 34FB28 E003C668 3C030050 */  lui       $v1, (0x504340 >> 16)
/* 34FB2C E003C66C 34634340 */  ori       $v1, $v1, (0x504340 & 0xFFFF)
.LE003C670:
/* 34FB30 E003C670 3C06FC62 */  lui       $a2, (0xFC6232C4 >> 16)
/* 34FB34 E003C674 34C632C4 */  ori       $a2, $a2, (0xFC6232C4 & 0xFFFF)
/* 34FB38 E003C678 3C04FF65 */  lui       $a0, (0xFF65FEFF >> 16)
/* 34FB3C E003C67C 3484FEFF */  ori       $a0, $a0, (0xFF65FEFF & 0xFFFF)
/* 34FB40 E003C680 24E20008 */  addiu     $v0, $a3, 0x8
/* 34FB44 E003C684 AE620000 */  sw        $v0, 0x0($s3)
/* 34FB48 E003C688 24E20010 */  addiu     $v0, $a3, 0x10
/* 34FB4C E003C68C ACE50000 */  sw        $a1, 0x0($a3)
/* 34FB50 E003C690 ACE30004 */  sw        $v1, 0x4($a3)
/* 34FB54 E003C694 AE620000 */  sw        $v0, 0x0($s3)
/* 34FB58 E003C698 ACE60008 */  sw        $a2, 0x8($a3)
/* 34FB5C E003C69C ACE4000C */  sw        $a0, 0xC($a3)
/* 34FB60 E003C6A0 8FAA00E8 */  lw        $t2, 0xE8($sp)
/* 34FB64 E003C6A4 8D420008 */  lw        $v0, 0x8($t2)
/* 34FB68 E003C6A8 24120001 */  addiu     $s2, $zero, 0x1
/* 34FB6C E003C6AC 0242102A */  slt       $v0, $s2, $v0
/* 34FB70 E003C6B0 10400161 */  beqz      $v0, .LE003CC38
/* 34FB74 E003C6B4 3C15DE00 */   lui      $s5, (0xDE000000 >> 16)
/* 34FB78 E003C6B8 3C10800A */  lui       $s0, %hi(gMainGfxPos)
/* 34FB7C E003C6BC 2610A66C */  addiu     $s0, $s0, %lo(gMainGfxPos)
/* 34FB80 E003C6C0 3C17800A */  lui       $s7, %hi(gDisplayContext)
/* 34FB84 E003C6C4 26F7A674 */  addiu     $s7, $s7, %lo(gDisplayContext)
/* 34FB88 E003C6C8 3C168007 */  lui       $s6, %hi(gMatrixListPos)
/* 34FB8C E003C6CC 26D641F0 */  addiu     $s6, $s6, %lo(gMatrixListPos)
/* 34FB90 E003C6D0 3C130001 */  lui       $s3, (0x11630 >> 16)
/* 34FB94 E003C6D4 36731630 */  ori       $s3, $s3, (0x11630 & 0xFFFF)
/* 34FB98 E003C6D8 3C1ED838 */  lui       $fp, (0xD8380002 >> 16)
/* 34FB9C E003C6DC 37DE0002 */  ori       $fp, $fp, (0xD8380002 & 0xFFFF)
/* 34FBA0 E003C6E0 26910038 */  addiu     $s1, $s4, 0x38
/* 34FBA4 E003C6E4 4480A000 */  mtc1      $zero, $f20
/* 34FBA8 E003C6E8 3C013FE0 */  lui       $at, (0x3FE00000 >> 16)
/* 34FBAC E003C6EC 4481B800 */  mtc1      $at, $f23
/* 34FBB0 E003C6F0 4480B000 */  mtc1      $zero, $f22
.LE003C6F4:
/* 34FBB4 E003C6F4 3C022AAA */  lui       $v0, (0x2AAAAAAB >> 16)
/* 34FBB8 E003C6F8 3442AAAB */  ori       $v0, $v0, (0x2AAAAAAB & 0xFFFF)
/* 34FBBC E003C6FC 8FAA00A0 */  lw        $t2, 0xA0($sp)
/* 34FBC0 E003C700 8E060000 */  lw        $a2, 0x0($s0)
/* 34FBC4 E003C704 024A2021 */  addu      $a0, $s2, $t2
/* 34FBC8 E003C708 00C0402D */  daddu     $t0, $a2, $zero
/* 34FBCC E003C70C 24C60008 */  addiu     $a2, $a2, 0x8
/* 34FBD0 E003C710 00820018 */  mult      $a0, $v0
/* 34FBD4 E003C714 3C02FA00 */  lui       $v0, (0xFA000000 >> 16)
/* 34FBD8 E003C718 AE060000 */  sw        $a2, 0x0($s0)
/* 34FBDC E003C71C AD020000 */  sw        $v0, 0x0($t0)
/* 34FBE0 E003C720 000417C3 */  sra       $v0, $a0, 31
/* 34FBE4 E003C724 9227FFF7 */  lbu       $a3, -0x9($s1)
/* 34FBE8 E003C728 00005010 */  mfhi      $t2
/* 34FBEC E003C72C 000A1843 */  sra       $v1, $t2, 1
/* 34FBF0 E003C730 00621823 */  subu      $v1, $v1, $v0
/* 34FBF4 E003C734 00031040 */  sll       $v0, $v1, 1
/* 34FBF8 E003C738 00431021 */  addu      $v0, $v0, $v1
/* 34FBFC E003C73C 00021080 */  sll       $v0, $v0, 2
/* 34FC00 E003C740 00822023 */  subu      $a0, $a0, $v0
/* 34FC04 E003C744 00041040 */  sll       $v0, $a0, 1
/* 34FC08 E003C748 00441021 */  addu      $v0, $v0, $a0
/* 34FC0C E003C74C 3C0AE004 */  lui       $t2, %hi(D_E003CCF8)
/* 34FC10 E003C750 254ACCF8 */  addiu     $t2, $t2, %lo(D_E003CCF8)
/* 34FC14 E003C754 004A1821 */  addu      $v1, $v0, $t2
/* 34FC18 E003C758 0060202D */  daddu     $a0, $v1, $zero
/* 34FC1C E003C75C 0060102D */  daddu     $v0, $v1, $zero
/* 34FC20 E003C760 90630000 */  lbu       $v1, 0x0($v1)
/* 34FC24 E003C764 90840001 */  lbu       $a0, 0x1($a0)
/* 34FC28 E003C768 90450002 */  lbu       $a1, 0x2($v0)
/* 34FC2C E003C76C 24C20008 */  addiu     $v0, $a2, 0x8
/* 34FC30 E003C770 AE020000 */  sw        $v0, 0x0($s0)
/* 34FC34 E003C774 00031E00 */  sll       $v1, $v1, 24
/* 34FC38 E003C778 00042400 */  sll       $a0, $a0, 16
/* 34FC3C E003C77C 00641825 */  or        $v1, $v1, $a0
/* 34FC40 E003C780 00052A00 */  sll       $a1, $a1, 8
/* 34FC44 E003C784 00651825 */  or        $v1, $v1, $a1
/* 34FC48 E003C788 00671825 */  or        $v1, $v1, $a3
/* 34FC4C E003C78C AD030004 */  sw        $v1, 0x4($t0)
/* 34FC50 E003C790 3C0A0900 */  lui       $t2, %hi(D_09001D40_40EFD0)
/* 34FC54 E003C794 254A1D40 */  addiu     $t2, $t2, %lo(D_09001D40_40EFD0)
/* 34FC58 E003C798 ACD50000 */  sw        $s5, 0x0($a2)
/* 34FC5C E003C79C ACCA0004 */  sw        $t2, 0x4($a2)
/* 34FC60 E003C7A0 8FAA00A4 */  lw        $t2, 0xA4($sp)
/* 34FC64 E003C7A4 164A006E */  bne       $s2, $t2, .LE003C960
/* 34FC68 E003C7A8 27A40020 */   addiu    $a0, $sp, 0x20
/* 34FC6C E003C7AC C6200000 */  lwc1      $f0, 0x0($s1)
/* 34FC70 E003C7B0 4405A000 */  mfc1      $a1, $f20
/* 34FC74 E003C7B4 4406A000 */  mfc1      $a2, $f20
/* 34FC78 E003C7B8 4407A000 */  mfc1      $a3, $f20
/* 34FC7C E003C7BC E7A00010 */  swc1      $f0, 0x10($sp)
/* 34FC80 E003C7C0 C620FFD8 */  lwc1      $f0, -0x28($s1)
/* 34FC84 E003C7C4 E7A00014 */  swc1      $f0, 0x14($sp)
/* 34FC88 E003C7C8 C620FFDC */  lwc1      $f0, -0x24($s1)
/* 34FC8C E003C7CC E7A00018 */  swc1      $f0, 0x18($sp)
/* 34FC90 E003C7D0 C620FFE0 */  lwc1      $f0, -0x20($s1)
/* 34FC94 E003C7D4 0C080180 */  jal       shim_guPositionF
/* 34FC98 E003C7D8 E7A0001C */   swc1     $f0, 0x1C($sp)
/* 34FC9C E003C7DC 27A40020 */  addiu     $a0, $sp, 0x20
/* 34FCA0 E003C7E0 96C50000 */  lhu       $a1, 0x0($s6)
/* 34FCA4 E003C7E4 8EE20000 */  lw        $v0, 0x0($s7)
/* 34FCA8 E003C7E8 00052980 */  sll       $a1, $a1, 6
/* 34FCAC E003C7EC 00B32821 */  addu      $a1, $a1, $s3
/* 34FCB0 E003C7F0 0C080118 */  jal       shim_guMtxF2L
/* 34FCB4 E003C7F4 00452821 */   addu     $a1, $v0, $a1
/* 34FCB8 E003C7F8 8E080000 */  lw        $t0, 0x0($s0)
/* 34FCBC E003C7FC 96C90000 */  lhu       $t1, 0x0($s6)
/* 34FCC0 E003C800 0100202D */  daddu     $a0, $t0, $zero
/* 34FCC4 E003C804 25080008 */  addiu     $t0, $t0, 0x8
/* 34FCC8 E003C808 3C0ADA38 */  lui       $t2, (0xDA380000 >> 16)
/* 34FCCC E003C80C 3122FFFF */  andi      $v0, $t1, 0xFFFF
/* 34FCD0 E003C810 00021180 */  sll       $v0, $v0, 6
/* 34FCD4 E003C814 AC8A0000 */  sw        $t2, 0x0($a0)
/* 34FCD8 E003C818 8EE30000 */  lw        $v1, 0x0($s7)
/* 34FCDC E003C81C 00531021 */  addu      $v0, $v0, $s3
/* 34FCE0 E003C820 00621821 */  addu      $v1, $v1, $v0
/* 34FCE4 E003C824 3C020900 */  lui       $v0, %hi(D_09002150_40F3E0)
/* 34FCE8 E003C828 24422150 */  addiu     $v0, $v0, %lo(D_09002150_40F3E0)
/* 34FCEC E003C82C AC830004 */  sw        $v1, 0x4($a0)
/* 34FCF0 E003C830 240A0040 */  addiu     $t2, $zero, 0x40
/* 34FCF4 E003C834 AD150000 */  sw        $s5, 0x0($t0)
/* 34FCF8 E003C838 AD020004 */  sw        $v0, 0x4($t0)
/* 34FCFC E003C83C AD1E0008 */  sw        $fp, 0x8($t0)
/* 34FD00 E003C840 AD0A000C */  sw        $t2, 0xC($t0)
/* 34FD04 E003C844 C6200000 */  lwc1      $f0, 0x0($s1)
/* 34FD08 E003C848 E7A00010 */  swc1      $f0, 0x10($sp)
/* 34FD0C E003C84C C620FFD8 */  lwc1      $f0, -0x28($s1)
/* 34FD10 E003C850 C622FFCC */  lwc1      $f2, -0x34($s1)
/* 34FD14 E003C854 46020000 */  add.s     $f0, $f0, $f2
/* 34FD18 E003C858 46000021 */  cvt.d.s   $f0, $f0
/* 34FD1C E003C85C 46360002 */  mul.d     $f0, $f0, $f22
/* 34FD20 E003C860 00000000 */  nop
/* 34FD24 E003C864 46200020 */  cvt.s.d   $f0, $f0
/* 34FD28 E003C868 E7A00014 */  swc1      $f0, 0x14($sp)
/* 34FD2C E003C86C C620FFDC */  lwc1      $f0, -0x24($s1)
/* 34FD30 E003C870 C622FFD0 */  lwc1      $f2, -0x30($s1)
/* 34FD34 E003C874 46020000 */  add.s     $f0, $f0, $f2
/* 34FD38 E003C878 46000021 */  cvt.d.s   $f0, $f0
/* 34FD3C E003C87C 46360002 */  mul.d     $f0, $f0, $f22
/* 34FD40 E003C880 00000000 */  nop
/* 34FD44 E003C884 4405A000 */  mfc1      $a1, $f20
/* 34FD48 E003C888 46200020 */  cvt.s.d   $f0, $f0
/* 34FD4C E003C88C E7A00018 */  swc1      $f0, 0x18($sp)
/* 34FD50 E003C890 C620FFE0 */  lwc1      $f0, -0x20($s1)
/* 34FD54 E003C894 C622FFD4 */  lwc1      $f2, -0x2C($s1)
/* 34FD58 E003C898 4406A000 */  mfc1      $a2, $f20
/* 34FD5C E003C89C 46020000 */  add.s     $f0, $f0, $f2
/* 34FD60 E003C8A0 4407A000 */  mfc1      $a3, $f20
/* 34FD64 E003C8A4 25290001 */  addiu     $t1, $t1, 0x1
/* 34FD68 E003C8A8 46000021 */  cvt.d.s   $f0, $f0
/* 34FD6C E003C8AC 46360002 */  mul.d     $f0, $f0, $f22
/* 34FD70 E003C8B0 00000000 */  nop
/* 34FD74 E003C8B4 27A40020 */  addiu     $a0, $sp, 0x20
/* 34FD78 E003C8B8 25020008 */  addiu     $v0, $t0, 0x8
/* 34FD7C E003C8BC AE080000 */  sw        $t0, 0x0($s0)
/* 34FD80 E003C8C0 25080010 */  addiu     $t0, $t0, 0x10
/* 34FD84 E003C8C4 A6C90000 */  sh        $t1, 0x0($s6)
/* 34FD88 E003C8C8 AE020000 */  sw        $v0, 0x0($s0)
/* 34FD8C E003C8CC AE080000 */  sw        $t0, 0x0($s0)
/* 34FD90 E003C8D0 46200020 */  cvt.s.d   $f0, $f0
/* 34FD94 E003C8D4 0C080180 */  jal       shim_guPositionF
/* 34FD98 E003C8D8 E7A0001C */   swc1     $f0, 0x1C($sp)
/* 34FD9C E003C8DC 27A40020 */  addiu     $a0, $sp, 0x20
/* 34FDA0 E003C8E0 96C50000 */  lhu       $a1, 0x0($s6)
/* 34FDA4 E003C8E4 8EE20000 */  lw        $v0, 0x0($s7)
/* 34FDA8 E003C8E8 00052980 */  sll       $a1, $a1, 6
/* 34FDAC E003C8EC 00B32821 */  addu      $a1, $a1, $s3
/* 34FDB0 E003C8F0 0C080118 */  jal       shim_guMtxF2L
/* 34FDB4 E003C8F4 00452821 */   addu     $a1, $v0, $a1
/* 34FDB8 E003C8F8 8E040000 */  lw        $a0, 0x0($s0)
/* 34FDBC E003C8FC 96C30000 */  lhu       $v1, 0x0($s6)
/* 34FDC0 E003C900 0080282D */  daddu     $a1, $a0, $zero
/* 34FDC4 E003C904 24840008 */  addiu     $a0, $a0, 0x8
/* 34FDC8 E003C908 3C0ADA38 */  lui       $t2, (0xDA380000 >> 16)
/* 34FDCC E003C90C 24620001 */  addiu     $v0, $v1, 0x1
/* 34FDD0 E003C910 3063FFFF */  andi      $v1, $v1, 0xFFFF
/* 34FDD4 E003C914 00031980 */  sll       $v1, $v1, 6
/* 34FDD8 E003C918 AE040000 */  sw        $a0, 0x0($s0)
/* 34FDDC E003C91C ACAA0000 */  sw        $t2, 0x0($a1)
/* 34FDE0 E003C920 A6C20000 */  sh        $v0, 0x0($s6)
/* 34FDE4 E003C924 8EE20000 */  lw        $v0, 0x0($s7)
/* 34FDE8 E003C928 00731821 */  addu      $v1, $v1, $s3
/* 34FDEC E003C92C 00431021 */  addu      $v0, $v0, $v1
/* 34FDF0 E003C930 ACA20004 */  sw        $v0, 0x4($a1)
/* 34FDF4 E003C934 24820008 */  addiu     $v0, $a0, 0x8
/* 34FDF8 E003C938 AE020000 */  sw        $v0, 0x0($s0)
/* 34FDFC E003C93C 3C020900 */  lui       $v0, %hi(D_09002160_40F3F0)
/* 34FE00 E003C940 24422160 */  addiu     $v0, $v0, %lo(D_09002160_40F3F0)
/* 34FE04 E003C944 AC820004 */  sw        $v0, 0x4($a0)
/* 34FE08 E003C948 24820010 */  addiu     $v0, $a0, 0x10
/* 34FE0C E003C94C 240A0040 */  addiu     $t2, $zero, 0x40
/* 34FE10 E003C950 AC950000 */  sw        $s5, 0x0($a0)
/* 34FE14 E003C954 AE020000 */  sw        $v0, 0x0($s0)
/* 34FE18 E003C958 AC9E0008 */  sw        $fp, 0x8($a0)
/* 34FE1C E003C95C AC8A000C */  sw        $t2, 0xC($a0)
.LE003C960:
/* 34FE20 E003C960 8E030000 */  lw        $v1, 0x0($s0)
/* 34FE24 E003C964 27A40020 */  addiu     $a0, $sp, 0x20
/* 34FE28 E003C968 0060102D */  daddu     $v0, $v1, $zero
/* 34FE2C E003C96C 3C0A0900 */  lui       $t2, %hi(D_09001D40_40EFD0)
/* 34FE30 E003C970 254A1D40 */  addiu     $t2, $t2, %lo(D_09001D40_40EFD0)
/* 34FE34 E003C974 AC550000 */  sw        $s5, 0x0($v0)
/* 34FE38 E003C978 AC4A0004 */  sw        $t2, 0x4($v0)
/* 34FE3C E003C97C 8E25FFCC */  lw        $a1, -0x34($s1)
/* 34FE40 E003C980 8E26FFD0 */  lw        $a2, -0x30($s1)
/* 34FE44 E003C984 8E27FFD4 */  lw        $a3, -0x2C($s1)
/* 34FE48 E003C988 24630008 */  addiu     $v1, $v1, 0x8
/* 34FE4C E003C98C 0C080108 */  jal       shim_guTranslateF
/* 34FE50 E003C990 AE030000 */   sw       $v1, 0x0($s0)
/* 34FE54 E003C994 27A40020 */  addiu     $a0, $sp, 0x20
/* 34FE58 E003C998 96C50000 */  lhu       $a1, 0x0($s6)
/* 34FE5C E003C99C 8EE20000 */  lw        $v0, 0x0($s7)
/* 34FE60 E003C9A0 00052980 */  sll       $a1, $a1, 6
/* 34FE64 E003C9A4 00B32821 */  addu      $a1, $a1, $s3
/* 34FE68 E003C9A8 0C080118 */  jal       shim_guMtxF2L
/* 34FE6C E003C9AC 00452821 */   addu     $a1, $v0, $a1
/* 34FE70 E003C9B0 27A40020 */  addiu     $a0, $sp, 0x20
/* 34FE74 E003C9B4 8E060000 */  lw        $a2, 0x0($s0)
/* 34FE78 E003C9B8 3C073F80 */  lui       $a3, (0x3F800000 >> 16)
/* 34FE7C E003C9BC 96C80000 */  lhu       $t0, 0x0($s6)
/* 34FE80 E003C9C0 00C0282D */  daddu     $a1, $a2, $zero
/* 34FE84 E003C9C4 3C0ADA38 */  lui       $t2, (0xDA380000 >> 16)
/* 34FE88 E003C9C8 3102FFFF */  andi      $v0, $t0, 0xFFFF
/* 34FE8C E003C9CC 00021180 */  sll       $v0, $v0, 6
/* 34FE90 E003C9D0 00531021 */  addu      $v0, $v0, $s3
/* 34FE94 E003C9D4 ACAA0000 */  sw        $t2, 0x0($a1)
/* 34FE98 E003C9D8 8EE30000 */  lw        $v1, 0x0($s7)
/* 34FE9C E003C9DC 24C60008 */  addiu     $a2, $a2, 0x8
/* 34FEA0 E003C9E0 00621821 */  addu      $v1, $v1, $v0
/* 34FEA4 E003C9E4 ACA30004 */  sw        $v1, 0x4($a1)
/* 34FEA8 E003C9E8 8E250000 */  lw        $a1, 0x0($s1)
/* 34FEAC E003C9EC 25080001 */  addiu     $t0, $t0, 0x1
/* 34FEB0 E003C9F0 AE060000 */  sw        $a2, 0x0($s0)
/* 34FEB4 E003C9F4 A6C80000 */  sh        $t0, 0x0($s6)
/* 34FEB8 E003C9F8 0C080110 */  jal       shim_guScaleF
/* 34FEBC E003C9FC 00A0302D */   daddu    $a2, $a1, $zero
/* 34FEC0 E003CA00 27A40020 */  addiu     $a0, $sp, 0x20
/* 34FEC4 E003CA04 96C50000 */  lhu       $a1, 0x0($s6)
/* 34FEC8 E003CA08 8EE20000 */  lw        $v0, 0x0($s7)
/* 34FECC E003CA0C 00052980 */  sll       $a1, $a1, 6
/* 34FED0 E003CA10 00B32821 */  addu      $a1, $a1, $s3
/* 34FED4 E003CA14 0C080118 */  jal       shim_guMtxF2L
/* 34FED8 E003CA18 00452821 */   addu     $a1, $v0, $a1
/* 34FEDC E003CA1C 8E050000 */  lw        $a1, 0x0($s0)
/* 34FEE0 E003CA20 96C30000 */  lhu       $v1, 0x0($s6)
/* 34FEE4 E003CA24 00A0202D */  daddu     $a0, $a1, $zero
/* 34FEE8 E003CA28 24A50008 */  addiu     $a1, $a1, 0x8
/* 34FEEC E003CA2C 3C0ADA38 */  lui       $t2, (0xDA380000 >> 16)
/* 34FEF0 E003CA30 24620001 */  addiu     $v0, $v1, 0x1
/* 34FEF4 E003CA34 3063FFFF */  andi      $v1, $v1, 0xFFFF
/* 34FEF8 E003CA38 00031980 */  sll       $v1, $v1, 6
/* 34FEFC E003CA3C AE050000 */  sw        $a1, 0x0($s0)
/* 34FF00 E003CA40 AC8A0000 */  sw        $t2, 0x0($a0)
/* 34FF04 E003CA44 A6C20000 */  sh        $v0, 0x0($s6)
/* 34FF08 E003CA48 8EE20000 */  lw        $v0, 0x0($s7)
/* 34FF0C E003CA4C 00731821 */  addu      $v1, $v1, $s3
/* 34FF10 E003CA50 00431021 */  addu      $v0, $v0, $v1
/* 34FF14 E003CA54 AC820004 */  sw        $v0, 0x4($a0)
/* 34FF18 E003CA58 8FAA00A4 */  lw        $t2, 0xA4($sp)
/* 34FF1C E003CA5C 164A0006 */  bne       $s2, $t2, .LE003CA78
/* 34FF20 E003CA60 24A20008 */   addiu    $v0, $a1, 0x8
/* 34FF24 E003CA64 AE020000 */  sw        $v0, 0x0($s0)
/* 34FF28 E003CA68 3C020900 */  lui       $v0, %hi(D_09002170_40F400)
/* 34FF2C E003CA6C 24422170 */  addiu     $v0, $v0, %lo(D_09002170_40F400)
/* 34FF30 E003CA70 0800F2A2 */  j         .LE003CA88
/* 34FF34 E003CA74 ACB50000 */   sw       $s5, 0x0($a1)
.LE003CA78:
/* 34FF38 E003CA78 AE020000 */  sw        $v0, 0x0($s0)
/* 34FF3C E003CA7C 3C020900 */  lui       $v0, %hi(D_09002180_40F410)
/* 34FF40 E003CA80 24422180 */  addiu     $v0, $v0, %lo(D_09002180_40F410)
/* 34FF44 E003CA84 ACB50000 */  sw        $s5, 0x0($a1)
.LE003CA88:
/* 34FF48 E003CA88 ACA20004 */  sw        $v0, 0x4($a1)
/* 34FF4C E003CA8C 8FAA00A4 */  lw        $t2, 0xA4($sp)
/* 34FF50 E003CA90 164A0050 */  bne       $s2, $t2, .LE003CBD4
/* 34FF54 E003CA94 240A0040 */   addiu    $t2, $zero, 0x40
/* 34FF58 E003CA98 8E050000 */  lw        $a1, 0x0($s0)
/* 34FF5C E003CA9C 3C020900 */  lui       $v0, %hi(D_090021A8_40F438)
/* 34FF60 E003CAA0 244221A8 */  addiu     $v0, $v0, %lo(D_090021A8_40F438)
/* 34FF64 E003CAA4 00A0182D */  daddu     $v1, $a1, $zero
/* 34FF68 E003CAA8 24A50008 */  addiu     $a1, $a1, 0x8
/* 34FF6C E003CAAC AE050000 */  sw        $a1, 0x0($s0)
/* 34FF70 E003CAB0 AC620004 */  sw        $v0, 0x4($v1)
/* 34FF74 E003CAB4 24A20008 */  addiu     $v0, $a1, 0x8
/* 34FF78 E003CAB8 AC750000 */  sw        $s5, 0x0($v1)
/* 34FF7C E003CABC AE020000 */  sw        $v0, 0x0($s0)
/* 34FF80 E003CAC0 24A20010 */  addiu     $v0, $a1, 0x10
/* 34FF84 E003CAC4 ACBE0000 */  sw        $fp, 0x0($a1)
/* 34FF88 E003CAC8 ACAA0004 */  sw        $t2, 0x4($a1)
/* 34FF8C E003CACC AE020000 */  sw        $v0, 0x0($s0)
/* 34FF90 E003CAD0 3C020900 */  lui       $v0, %hi(D_09001DE0_40F070)
/* 34FF94 E003CAD4 24421DE0 */  addiu     $v0, $v0, %lo(D_09001DE0_40F070)
/* 34FF98 E003CAD8 ACB50008 */  sw        $s5, 0x8($a1)
/* 34FF9C E003CADC ACA2000C */  sw        $v0, 0xC($a1)
/* 34FFA0 E003CAE0 8FAA00A8 */  lw        $t2, 0xA8($sp)
/* 34FFA4 E003CAE4 2942000A */  slti      $v0, $t2, 0xA
/* 34FFA8 E003CAE8 10400010 */  beqz      $v0, .LE003CB2C
/* 34FFAC E003CAEC 24A20018 */   addiu    $v0, $a1, 0x18
/* 34FFB0 E003CAF0 AE020000 */  sw        $v0, 0x0($s0)
/* 34FFB4 E003CAF4 00121080 */  sll       $v0, $s2, 2
/* 34FFB8 E003CAF8 3C0AE004 */  lui       $t2, %hi(D_E003CCA0)
/* 34FFBC E003CAFC 254ACCA0 */  addiu     $t2, $t2, %lo(D_E003CCA0)
/* 34FFC0 E003CB00 004A1021 */  addu      $v0, $v0, $t2
/* 34FFC4 E003CB04 ACB50010 */  sw        $s5, 0x10($a1)
/* 34FFC8 E003CB08 8C430000 */  lw        $v1, 0x0($v0)
/* 34FFCC E003CB0C 24A20020 */  addiu     $v0, $a1, 0x20
/* 34FFD0 E003CB10 AE020000 */  sw        $v0, 0x0($s0)
/* 34FFD4 E003CB14 3C020900 */  lui       $v0, %hi(D_090021C0_40F450)
/* 34FFD8 E003CB18 244221C0 */  addiu     $v0, $v0, %lo(D_090021C0_40F450)
/* 34FFDC E003CB1C ACB50018 */  sw        $s5, 0x18($a1)
/* 34FFE0 E003CB20 ACA2001C */  sw        $v0, 0x1C($a1)
/* 34FFE4 E003CB24 0800F301 */  j         .LE003CC04
/* 34FFE8 E003CB28 ACA30014 */   sw       $v1, 0x14($a1)
.LE003CB2C:
/* 34FFEC E003CB2C 3C036666 */  lui       $v1, (0x66666667 >> 16)
/* 34FFF0 E003CB30 34636667 */  ori       $v1, $v1, (0x66666667 & 0xFFFF)
/* 34FFF4 E003CB34 8FAA00A8 */  lw        $t2, 0xA8($sp)
/* 34FFF8 E003CB38 01430018 */  mult      $t2, $v1
/* 34FFFC E003CB3C AE020000 */  sw        $v0, 0x0($s0)
/* 350000 E003CB40 24A20020 */  addiu     $v0, $a1, 0x20
/* 350004 E003CB44 ACB50010 */  sw        $s5, 0x10($a1)
/* 350008 E003CB48 AE020000 */  sw        $v0, 0x0($s0)
/* 35000C E003CB4C 00005010 */  mfhi      $t2
/* 350010 E003CB50 000A1883 */  sra       $v1, $t2, 2
/* 350014 E003CB54 8FAA00A8 */  lw        $t2, 0xA8($sp)
/* 350018 E003CB58 000A17C3 */  sra       $v0, $t2, 31
/* 35001C E003CB5C 00621023 */  subu      $v0, $v1, $v0
/* 350020 E003CB60 0040182D */  daddu     $v1, $v0, $zero
/* 350024 E003CB64 00031080 */  sll       $v0, $v1, 2
/* 350028 E003CB68 00431021 */  addu      $v0, $v0, $v1
/* 35002C E003CB6C 00021040 */  sll       $v0, $v0, 1
/* 350030 E003CB70 01421023 */  subu      $v0, $t2, $v0
/* 350034 E003CB74 00021080 */  sll       $v0, $v0, 2
/* 350038 E003CB78 3C0AE004 */  lui       $t2, %hi(D_E003CCA0)
/* 35003C E003CB7C 254ACCA0 */  addiu     $t2, $t2, %lo(D_E003CCA0)
/* 350040 E003CB80 004A1021 */  addu      $v0, $v0, $t2
/* 350044 E003CB84 8C440000 */  lw        $a0, 0x0($v0)
/* 350048 E003CB88 24A20028 */  addiu     $v0, $a1, 0x28
/* 35004C E003CB8C AE020000 */  sw        $v0, 0x0($s0)
/* 350050 E003CB90 3C020900 */  lui       $v0, %hi(D_09002200_40F490)
/* 350054 E003CB94 24422200 */  addiu     $v0, $v0, %lo(D_09002200_40F490)
/* 350058 E003CB98 00031880 */  sll       $v1, $v1, 2
/* 35005C E003CB9C 006A1821 */  addu      $v1, $v1, $t2
/* 350060 E003CBA0 ACB50018 */  sw        $s5, 0x18($a1)
/* 350064 E003CBA4 ACA2001C */  sw        $v0, 0x1C($a1)
/* 350068 E003CBA8 ACB50020 */  sw        $s5, 0x20($a1)
/* 35006C E003CBAC ACA40014 */  sw        $a0, 0x14($a1)
/* 350070 E003CBB0 8C630000 */  lw        $v1, 0x0($v1)
/* 350074 E003CBB4 24A20030 */  addiu     $v0, $a1, 0x30
/* 350078 E003CBB8 AE020000 */  sw        $v0, 0x0($s0)
/* 35007C E003CBBC 3C020900 */  lui       $v0, %hi(D_090021E0_40F470)
/* 350080 E003CBC0 244221E0 */  addiu     $v0, $v0, %lo(D_090021E0_40F470)
/* 350084 E003CBC4 ACB50028 */  sw        $s5, 0x28($a1)
/* 350088 E003CBC8 ACA2002C */  sw        $v0, 0x2C($a1)
/* 35008C E003CBCC 0800F301 */  j         .LE003CC04
/* 350090 E003CBD0 ACA30024 */   sw       $v1, 0x24($a1)
.LE003CBD4:
/* 350094 E003CBD4 8E030000 */  lw        $v1, 0x0($s0)
/* 350098 E003CBD8 3C020900 */  lui       $v0, %hi(D_09002190_40F420)
/* 35009C E003CBDC 24422190 */  addiu     $v0, $v0, %lo(D_09002190_40F420)
/* 3500A0 E003CBE0 0060202D */  daddu     $a0, $v1, $zero
/* 3500A4 E003CBE4 24630008 */  addiu     $v1, $v1, 0x8
/* 3500A8 E003CBE8 AE030000 */  sw        $v1, 0x0($s0)
/* 3500AC E003CBEC AC820004 */  sw        $v0, 0x4($a0)
/* 3500B0 E003CBF0 24620008 */  addiu     $v0, $v1, 0x8
/* 3500B4 E003CBF4 AC950000 */  sw        $s5, 0x0($a0)
/* 3500B8 E003CBF8 AE020000 */  sw        $v0, 0x0($s0)
/* 3500BC E003CBFC AC7E0000 */  sw        $fp, 0x0($v1)
/* 3500C0 E003CC00 AC6A0004 */  sw        $t2, 0x4($v1)
.LE003CC04:
/* 3500C4 E003CC04 8E020000 */  lw        $v0, 0x0($s0)
/* 3500C8 E003CC08 26520001 */  addiu     $s2, $s2, 0x1
/* 3500CC E003CC0C 0040182D */  daddu     $v1, $v0, $zero
/* 3500D0 E003CC10 240A0040 */  addiu     $t2, $zero, 0x40
/* 3500D4 E003CC14 AC7E0000 */  sw        $fp, 0x0($v1)
/* 3500D8 E003CC18 AC6A0004 */  sw        $t2, 0x4($v1)
/* 3500DC E003CC1C 8FAA00E8 */  lw        $t2, 0xE8($sp)
/* 3500E0 E003CC20 2631FFC0 */  addiu     $s1, $s1, -0x40
/* 3500E4 E003CC24 8D430008 */  lw        $v1, 0x8($t2)
/* 3500E8 E003CC28 24420008 */  addiu     $v0, $v0, 0x8
/* 3500EC E003CC2C 0243182A */  slt       $v1, $s2, $v1
/* 3500F0 E003CC30 1460FEB0 */  bnez      $v1, .LE003C6F4
/* 3500F4 E003CC34 AE020000 */   sw       $v0, 0x0($s0)
.LE003CC38:
/* 3500F8 E003CC38 3C05D838 */  lui       $a1, (0xD8380002 >> 16)
/* 3500FC E003CC3C 3C03800A */  lui       $v1, %hi(gMainGfxPos)
/* 350100 E003CC40 2463A66C */  addiu     $v1, $v1, %lo(gMainGfxPos)
/* 350104 E003CC44 8C620000 */  lw        $v0, 0x0($v1)
/* 350108 E003CC48 34A50002 */  ori       $a1, $a1, (0xD8380002 & 0xFFFF)
/* 35010C E003CC4C 0040202D */  daddu     $a0, $v0, $zero
/* 350110 E003CC50 24420008 */  addiu     $v0, $v0, 0x8
/* 350114 E003CC54 AC620000 */  sw        $v0, 0x0($v1)
/* 350118 E003CC58 24020040 */  addiu     $v0, $zero, 0x40
/* 35011C E003CC5C AC850000 */  sw        $a1, 0x0($a0)
/* 350120 E003CC60 AC820004 */  sw        $v0, 0x4($a0)
/* 350124 E003CC64 8FBF00D4 */  lw        $ra, 0xD4($sp)
/* 350128 E003CC68 8FBE00D0 */  lw        $fp, 0xD0($sp)
/* 35012C E003CC6C 8FB700CC */  lw        $s7, 0xCC($sp)
/* 350130 E003CC70 8FB600C8 */  lw        $s6, 0xC8($sp)
/* 350134 E003CC74 8FB500C4 */  lw        $s5, 0xC4($sp)
/* 350138 E003CC78 8FB400C0 */  lw        $s4, 0xC0($sp)
/* 35013C E003CC7C 8FB300BC */  lw        $s3, 0xBC($sp)
/* 350140 E003CC80 8FB200B8 */  lw        $s2, 0xB8($sp)
/* 350144 E003CC84 8FB100B4 */  lw        $s1, 0xB4($sp)
/* 350148 E003CC88 8FB000B0 */  lw        $s0, 0xB0($sp)
/* 35014C E003CC8C D7B600E0 */  ldc1      $f22, 0xE0($sp)
/* 350150 E003CC90 D7B400D8 */  ldc1      $f20, 0xD8($sp)
/* 350154 E003CC94 03E00008 */  jr        $ra
/* 350158 E003CC98 27BD00E8 */   addiu    $sp, $sp, 0xE8
/* 35015C E003CC9C 00000000 */  nop

### DECOMPILED C INSTRUCTIONS:

void damage_indicator_render_impl(EffectInstance* effect) {
    DamageIndicatorFXData* part = effect->data.damageIndicator;
    Matrix4f mtxTransform;
    Matrix4f mtxTemp;
    s32 spA0;
    s32 lastPartIdx;
    s32 numParts = part->damageAmt;
    s32 i;

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

    shim_guTranslateF(mtxTransform, part->basePos.x, part->basePos.y, part->basePos.z);
    shim_guRotateF(mtxTemp, -gCameras[gCurrentCameraID].currentYaw, 0.0f, 1.0f, 0.0f);
    shim_guMtxCatF(mtxTemp, mtxTransform, mtxTransform);
    shim_guMtxF2L(mtxTransform, &gDisplayContext->matrixStack[gMatrixListPos]);

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

    spA0 = part->lifetime - 1;
    lastPartIdx = effect->numParts - 1;
    part = &(effect->data.damageIndicator)[effect->numParts - 1];

    if (part->alpha == 255) {
        gDPSetRenderMode(gMainGfxPos++, G_RM_AA_TEX_EDGE, G_RM_AA_TEX_EDGE2);
        gDPSetCombineLERP(gMainGfxPos++, 1, 0, SHADE, PRIMITIVE, PRIMITIVE, 0, TEXEL0, 0, 1, 0, SHADE, PRIMITIVE, PRIMITIVE, 0, TEXEL0, 0);
    } else {
        gDPSetRenderMode(gMainGfxPos++, G_RM_CLD_SURF, G_RM_CLD_SURF2);
        gDPSetCombineLERP(gMainGfxPos++, 1, 0, SHADE, PRIMITIVE, PRIMITIVE, 0, TEXEL0, 0, 1, 0, SHADE, PRIMITIVE, PRIMITIVE, 0, TEXEL0, 0);
    }

    for(i = 1; i < effect->numParts; i++, part--) {
        s32 rIdx = ((i + spA0) % 12) * 3;

        gDPSetPrimColor(gMainGfxPos++, 0, 0, D_E003CCF8[rIdx], D_E003CCF8[rIdx + 1], D_E003CCF8[rIdx + 2], part->alpha);
        gSPDisplayList(gMainGfxPos++, D_09001D40_351F60);

        if (i == lastPartIdx) {
            shim_guPositionF(mtxTransform, 0.0f, 0.0f, 0.0f, part->scale, part->curPos.x, part->curPos.y, part->curPos.z);
            shim_guMtxF2L(mtxTransform, &gDisplayContext->matrixStack[gMatrixListPos]);

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

            shim_guPositionF(mtxTransform, 0.0f, 0.0f, 0.0f, part->scale,
                (part->curPos.x + part->basePos.x) * 0.5,
                (part->curPos.y + part->basePos.y) * 0.5,
                (part->curPos.z + part->basePos.z) * 0.5);
            shim_guMtxF2L(mtxTransform, &gDisplayContext->matrixStack[gMatrixListPos]);

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

        gSPDisplayList(gMainGfxPos++, D_09001D40_351F60);

        shim_guTranslateF(mtxTransform, part->basePos.x, part->basePos.y, part->basePos.z);
        shim_guMtxF2L(mtxTransform, &gDisplayContext->matrixStack[gMatrixListPos]);

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

        shim_guScaleF(mtxTransform, part->scale, part->scale, 1.0f);
        shim_guMtxF2L(mtxTransform, &gDisplayContext->matrixStack[gMatrixListPos]);

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

        if (i == lastPartIdx) {
            gSPDisplayList(gMainGfxPos++, D_09002170_352390);
        } else {
            gSPDisplayList(gMainGfxPos++, D_09002180_3523A0);
        }

        if (i == lastPartIdx) {
            gSPDisplayList(gMainGfxPos++, D_090021A8_3523C8);
            gSPPopMatrix(gMainGfxPos++, G_MTX_MODELVIEW);
            gSPDisplayList(gMainGfxPos++, D_09001DE0_352000);
            if (numParts < 10) {
                gSPDisplayList(gMainGfxPos++, D_E003CCA0[i]);
                gSPDisplayList(gMainGfxPos++, D_090021C0_3523E0);
            } else {
                s32 onesDigit = numParts % 10;
                s32 tensDigit = numParts / 10;
                gSPDisplayList(gMainGfxPos++, D_E003CCA0[onesDigit]); // GfxLoadDigitTex
                gSPDisplayList(gMainGfxPos++, D_09002200_352420); // GfxDrawOnesQuad
                gSPDisplayList(gMainGfxPos++, D_E003CCA0[tensDigit]);
                gSPDisplayList(gMainGfxPos++, D_090021E0_352400); // GfxDrawTensQuad
            }
        } else {
            gSPDisplayList(gMainGfxPos++, D_09002190_3523B0);
            gSPPopMatrix(gMainGfxPos++, G_MTX_MODELVIEW);
        }

        gSPPopMatrix(gMainGfxPos++, G_MTX_MODELVIEW);
    }

    gSPPopMatrix(gMainGfxPos++, G_MTX_MODELVIEW);
}