### RAW ASSEMBLY INSTRUCTIONS:

glabel draw_mash_meter
/* 196B64 80268284 27BDFF98 */  addiu     $sp, $sp, -0x68
/* 196B68 80268288 3C0B802A */  lui       $t3, %hi(gActionCommandStatus)
/* 196B6C 8026828C 256BFBE0 */  addiu     $t3, $t3, %lo(gActionCommandStatus)
/* 196B70 80268290 AFBF0064 */  sw        $ra, 0x64($sp)
/* 196B74 80268294 AFBE0060 */  sw        $fp, 0x60($sp)
/* 196B78 80268298 AFB7005C */  sw        $s7, 0x5C($sp)
/* 196B7C 8026829C AFB60058 */  sw        $s6, 0x58($sp)
/* 196B80 802682A0 AFB50054 */  sw        $s5, 0x54($sp)
/* 196B84 802682A4 AFB40050 */  sw        $s4, 0x50($sp)
/* 196B88 802682A8 AFB3004C */  sw        $s3, 0x4C($sp)
/* 196B8C 802682AC AFB20048 */  sw        $s2, 0x48($sp)
/* 196B90 802682B0 AFB10044 */  sw        $s1, 0x44($sp)
/* 196B94 802682B4 AFB00040 */  sw        $s0, 0x40($sp)
/* 196B98 802682B8 AFA40068 */  sw        $a0, 0x68($sp)
/* 196B9C 802682BC AFA5006C */  sw        $a1, 0x6C($sp)
/* 196BA0 802682C0 AFA70074 */  sw        $a3, 0x74($sp)
/* 196BA4 802682C4 81620061 */  lb        $v0, 0x61($t3)
/* 196BA8 802682C8 1040011D */  beqz      $v0, .L80268740
/* 196BAC 802682CC 00C0602D */   daddu    $t4, $a2, $zero
/* 196BB0 802682D0 0080702D */  daddu     $t6, $a0, $zero
/* 196BB4 802682D4 25CEFFE4 */  addiu     $t6, $t6, -0x1C
/* 196BB8 802682D8 AFAE0068 */  sw        $t6, 0x68($sp)
/* 196BBC 802682DC 00A0702D */  daddu     $t6, $a1, $zero
/* 196BC0 802682E0 81630080 */  lb        $v1, 0x80($t3)
/* 196BC4 802682E4 25CEFFFC */  addiu     $t6, $t6, -0x4
/* 196BC8 802682E8 AFAE006C */  sw        $t6, 0x6C($sp)
/* 196BCC 802682EC 00031040 */  sll       $v0, $v1, 1
/* 196BD0 802682F0 004B1021 */  addu      $v0, $v0, $t3
/* 196BD4 802682F4 844D0074 */  lh        $t5, 0x74($v0)
/* 196BD8 802682F8 05820001 */  bltzl     $t4, .L80268300
/* 196BDC 802682FC 0000602D */   daddu    $t4, $zero, $zero
.L80268300:
/* 196BE0 80268300 0000802D */  daddu     $s0, $zero, $zero
/* 196BE4 80268304 18600020 */  blez      $v1, .L80268388
/* 196BE8 80268308 0200902D */   daddu    $s2, $s0, $zero
/* 196BEC 8026830C 0060282D */  daddu     $a1, $v1, $zero
/* 196BF0 80268310 26440001 */  addiu     $a0, $s2, 0x1
.L80268314:
/* 196BF4 80268314 00041040 */  sll       $v0, $a0, 1
/* 196BF8 80268318 01621021 */  addu      $v0, $t3, $v0
/* 196BFC 8026831C 84460074 */  lh        $a2, 0x74($v0)
/* 196C00 80268320 0186102A */  slt       $v0, $t4, $a2
/* 196C04 80268324 54400001 */  bnel      $v0, $zero, .L8026832C
/* 196C08 80268328 0180302D */   daddu    $a2, $t4, $zero
.L8026832C:
/* 196C0C 8026832C 00061900 */  sll       $v1, $a2, 4
/* 196C10 80268330 00661823 */  subu      $v1, $v1, $a2
/* 196C14 80268334 00031880 */  sll       $v1, $v1, 2
/* 196C18 80268338 15A00002 */  bnez      $t5, .L80268344
/* 196C1C 8026833C 006D001A */   div      $zero, $v1, $t5
/* 196C20 80268340 0007000D */  break     7
.L80268344:
/* 196C24 80268344 2401FFFF */  addiu     $at, $zero, -0x1
/* 196C28 80268348 15A10004 */  bne       $t5, $at, .L8026835C
/* 196C2C 8026834C 3C018000 */   lui      $at, (0x80000000 >> 16)
/* 196C30 80268350 14610002 */  bne       $v1, $at, .L8026835C
/* 196C34 80268354 00000000 */   nop
/* 196C38 80268358 0006000D */  break     6
.L8026835C:
/* 196C3C 8026835C 00001812 */  mflo      $v1
/* 196C40 80268360 00031040 */  sll       $v0, $v1, 1
/* 196C44 80268364 00431021 */  addu      $v0, $v0, $v1
/* 196C48 80268368 000210C0 */  sll       $v0, $v0, 3
/* 196C4C 8026836C 00431021 */  addu      $v0, $v0, $v1
/* 196C50 80268370 11860005 */  beq       $t4, $a2, .L80268388
/* 196C54 80268374 00028080 */   sll      $s0, $v0, 2
/* 196C58 80268378 0080902D */  daddu     $s2, $a0, $zero
/* 196C5C 8026837C 0245102A */  slt       $v0, $s2, $a1
/* 196C60 80268380 1440FFE4 */  bnez      $v0, .L80268314
/* 196C64 80268384 26440001 */   addiu    $a0, $s2, 0x1
.L80268388:
/* 196C68 80268388 85620048 */  lh        $v0, 0x48($t3)
/* 196C6C 8026838C 3C04802A */  lui       $a0, %hi(D_8029FBC0)
/* 196C70 80268390 8C84FBC0 */  lw        $a0, %lo(D_8029FBC0)($a0)
/* 196C74 80268394 95650048 */  lhu       $a1, 0x48($t3)
/* 196C78 80268398 0202A823 */  subu      $s5, $s0, $v0
/* 196C7C 8026839C 06A10002 */  bgez      $s5, .L802683A8
/* 196C80 802683A0 02A0182D */   daddu    $v1, $s5, $zero
/* 196C84 802683A4 00031823 */  negu      $v1, $v1
.L802683A8:
/* 196C88 802683A8 00041040 */  sll       $v0, $a0, 1
/* 196C8C 802683AC 00441021 */  addu      $v0, $v0, $a0
/* 196C90 802683B0 000210C0 */  sll       $v0, $v0, 3
/* 196C94 802683B4 00441021 */  addu      $v0, $v0, $a0
/* 196C98 802683B8 00021080 */  sll       $v0, $v0, 2
/* 196C9C 802683BC 0062182A */  slt       $v1, $v1, $v0
/* 196CA0 802683C0 5460000D */  bnel      $v1, $zero, .L802683F8
/* 196CA4 802683C4 A5700048 */   sh       $s0, 0x48($t3)
/* 196CA8 802683C8 14800002 */  bnez      $a0, .L802683D4
/* 196CAC 802683CC 02A4001A */   div      $zero, $s5, $a0
/* 196CB0 802683D0 0007000D */  break     7
.L802683D4:
/* 196CB4 802683D4 2401FFFF */  addiu     $at, $zero, -0x1
/* 196CB8 802683D8 14810004 */  bne       $a0, $at, .L802683EC
/* 196CBC 802683DC 3C018000 */   lui      $at, (0x80000000 >> 16)
/* 196CC0 802683E0 16A10002 */  bne       $s5, $at, .L802683EC
/* 196CC4 802683E4 00000000 */   nop
/* 196CC8 802683E8 0006000D */  break     6
.L802683EC:
/* 196CCC 802683EC 00001012 */  mflo      $v0
/* 196CD0 802683F0 00A21021 */  addu      $v0, $a1, $v0
/* 196CD4 802683F4 A5620048 */  sh        $v0, 0x48($t3)
.L802683F8:
/* 196CD8 802683F8 0000A82D */  daddu     $s5, $zero, $zero
/* 196CDC 802683FC 81620080 */  lb        $v0, 0x80($t3)
/* 196CE0 80268400 18400060 */  blez      $v0, .L80268584
/* 196CE4 80268404 02A0902D */   daddu    $s2, $s5, $zero
/* 196CE8 80268408 8FAE006C */  lw        $t6, 0x6C($sp)
/* 196CEC 8026840C 000E1400 */  sll       $v0, $t6, 16
/* 196CF0 80268410 00021403 */  sra       $v0, $v0, 16
/* 196CF4 80268414 AFA20020 */  sw        $v0, 0x20($sp)
/* 196CF8 80268418 25C20005 */  addiu     $v0, $t6, 0x5
/* 196CFC 8026841C 00021400 */  sll       $v0, $v0, 16
/* 196D00 80268420 00021403 */  sra       $v0, $v0, 16
/* 196D04 80268424 AFA20024 */  sw        $v0, 0x24($sp)
/* 196D08 80268428 265E0001 */  addiu     $fp, $s2, 0x1
.L8026842C:
/* 196D0C 8026842C 001E1040 */  sll       $v0, $fp, 1
/* 196D10 80268430 01621021 */  addu      $v0, $t3, $v0
/* 196D14 80268434 84460074 */  lh        $a2, 0x74($v0)
/* 196D18 80268438 00061900 */  sll       $v1, $a2, 4
/* 196D1C 8026843C 00661823 */  subu      $v1, $v1, $a2
/* 196D20 80268440 00031880 */  sll       $v1, $v1, 2
/* 196D24 80268444 15A00002 */  bnez      $t5, .L80268450
/* 196D28 80268448 006D001A */   div      $zero, $v1, $t5
/* 196D2C 8026844C 0007000D */  break     7
.L80268450:
/* 196D30 80268450 2401FFFF */  addiu     $at, $zero, -0x1
/* 196D34 80268454 15A10004 */  bne       $t5, $at, .L80268468
/* 196D38 80268458 3C018000 */   lui      $at, (0x80000000 >> 16)
/* 196D3C 8026845C 14610002 */  bne       $v1, $at, .L80268468
/* 196D40 80268460 00000000 */   nop
/* 196D44 80268464 0006000D */  break     6
.L80268468:
/* 196D48 80268468 00001812 */  mflo      $v1
/* 196D4C 8026846C 8FAE0068 */  lw        $t6, 0x68($sp)
/* 196D50 80268470 8FA50020 */  lw        $a1, 0x20($sp)
/* 196D54 80268474 8FA70024 */  lw        $a3, 0x24($sp)
/* 196D58 80268478 01D53021 */  addu      $a2, $t6, $s5
/* 196D5C 8026847C 00062400 */  sll       $a0, $a2, 16
/* 196D60 80268480 00042403 */  sra       $a0, $a0, 16
/* 196D64 80268484 00121040 */  sll       $v0, $s2, 1
/* 196D68 80268488 0052A021 */  addu      $s4, $v0, $s2
/* 196D6C 8026848C 26970001 */  addiu     $s7, $s4, 0x1
/* 196D70 80268490 3C0E8029 */  lui       $t6, %hi(D_80294190)
/* 196D74 80268494 25CE4190 */  addiu     $t6, $t6, %lo(D_80294190)
/* 196D78 80268498 02EE1021 */  addu      $v0, $s7, $t6
/* 196D7C 8026849C 26960002 */  addiu     $s6, $s4, 0x2
/* 196D80 802684A0 904A0000 */  lbu       $t2, 0x0($v0)
/* 196D84 802684A4 02CE1021 */  addu      $v0, $s6, $t6
/* 196D88 802684A8 90490000 */  lbu       $t1, 0x0($v0)
/* 196D8C 802684AC 028E1021 */  addu      $v0, $s4, $t6
/* 196D90 802684B0 90420000 */  lbu       $v0, 0x0($v0)
/* 196D94 802684B4 240E00FF */  addiu     $t6, $zero, 0xFF
/* 196D98 802684B8 AFAE001C */  sw        $t6, 0x1C($sp)
/* 196D9C 802684BC AFAB0030 */  sw        $t3, 0x30($sp)
/* 196DA0 802684C0 AFAC0034 */  sw        $t4, 0x34($sp)
/* 196DA4 802684C4 AFAD0038 */  sw        $t5, 0x38($sp)
/* 196DA8 802684C8 AFA20010 */  sw        $v0, 0x10($sp)
/* 196DAC 802684CC AFAA0014 */  sw        $t2, 0x14($sp)
/* 196DB0 802684D0 AFA90018 */  sw        $t1, 0x18($sp)
/* 196DB4 802684D4 00758023 */  subu      $s0, $v1, $s5
/* 196DB8 802684D8 00D08821 */  addu      $s1, $a2, $s0
/* 196DBC 802684DC 00111400 */  sll       $v0, $s1, 16
/* 196DC0 802684E0 00029C03 */  sra       $s3, $v0, 16
/* 196DC4 802684E4 0C00AAB1 */  jal       startup_draw_prim_rect_COPY
/* 196DC8 802684E8 0260302D */   daddu    $a2, $s3, $zero
/* 196DCC 802684EC 8FAB0030 */  lw        $t3, 0x30($sp)
/* 196DD0 802684F0 8FAC0034 */  lw        $t4, 0x34($sp)
/* 196DD4 802684F4 81620080 */  lb        $v0, 0x80($t3)
/* 196DD8 802684F8 8FAD0038 */  lw        $t5, 0x38($sp)
/* 196DDC 802684FC 2442FFFF */  addiu     $v0, $v0, -0x1
/* 196DE0 80268500 0242102A */  slt       $v0, $s2, $v0
/* 196DE4 80268504 1040001D */  beqz      $v0, .L8026857C
/* 196DE8 80268508 2624FFFF */   addiu    $a0, $s1, -0x1
/* 196DEC 8026850C 00042400 */  sll       $a0, $a0, 16
/* 196DF0 80268510 00042403 */  sra       $a0, $a0, 16
/* 196DF4 80268514 0260302D */  daddu     $a2, $s3, $zero
/* 196DF8 80268518 3C0E8029 */  lui       $t6, %hi(D_802941B0)
/* 196DFC 8026851C 25CE41B0 */  addiu     $t6, $t6, %lo(D_802941B0)
/* 196E00 80268520 02EE1021 */  addu      $v0, $s7, $t6
/* 196E04 80268524 904A0000 */  lbu       $t2, 0x0($v0)
/* 196E08 80268528 02CE1021 */  addu      $v0, $s6, $t6
/* 196E0C 8026852C 90490000 */  lbu       $t1, 0x0($v0)
/* 196E10 80268530 028E1021 */  addu      $v0, $s4, $t6
/* 196E14 80268534 02B0A821 */  addu      $s5, $s5, $s0
/* 196E18 80268538 8FA50020 */  lw        $a1, 0x20($sp)
/* 196E1C 8026853C 8FA70024 */  lw        $a3, 0x24($sp)
/* 196E20 80268540 90420000 */  lbu       $v0, 0x0($v0)
/* 196E24 80268544 240E00FF */  addiu     $t6, $zero, 0xFF
/* 196E28 80268548 AFAE001C */  sw        $t6, 0x1C($sp)
/* 196E2C 8026854C AFA20010 */  sw        $v0, 0x10($sp)
/* 196E30 80268550 AFAA0014 */  sw        $t2, 0x14($sp)
/* 196E34 80268554 0C00AAB1 */  jal       startup_draw_prim_rect_COPY
/* 196E38 80268558 AFA90018 */   sw       $t1, 0x18($sp)
/* 196E3C 8026855C 03C0902D */  daddu     $s2, $fp, $zero
/* 196E40 80268560 8FAB0030 */  lw        $t3, 0x30($sp)
/* 196E44 80268564 8FAC0034 */  lw        $t4, 0x34($sp)
/* 196E48 80268568 81620080 */  lb        $v0, 0x80($t3)
/* 196E4C 8026856C 8FAD0038 */  lw        $t5, 0x38($sp)
/* 196E50 80268570 0242102A */  slt       $v0, $s2, $v0
/* 196E54 80268574 1440FFAD */  bnez      $v0, .L8026842C
/* 196E58 80268578 265E0001 */   addiu    $fp, $s2, 0x1
.L8026857C:
/* 196E5C 8026857C 0000A82D */  daddu     $s5, $zero, $zero
/* 196E60 80268580 81620080 */  lb        $v0, 0x80($t3)
.L80268584:
/* 196E64 80268584 1840006E */  blez      $v0, .L80268740
/* 196E68 80268588 02A0902D */   daddu    $s2, $s5, $zero
/* 196E6C 8026858C 8FAE006C */  lw        $t6, 0x6C($sp)
/* 196E70 80268590 25C20005 */  addiu     $v0, $t6, 0x5
/* 196E74 80268594 00021400 */  sll       $v0, $v0, 16
/* 196E78 80268598 AFA20028 */  sw        $v0, 0x28($sp)
/* 196E7C 8026859C 241E0002 */  addiu     $fp, $zero, 0x2
/* 196E80 802685A0 03C0B02D */  daddu     $s6, $fp, $zero
/* 196E84 802685A4 24140001 */  addiu     $s4, $zero, 0x1
/* 196E88 802685A8 3C178029 */  lui       $s7, %hi(D_802941A0)
/* 196E8C 802685AC 26F741A0 */  addiu     $s7, $s7, %lo(D_802941A0)
/* 196E90 802685B0 02E0982D */  daddu     $s3, $s7, $zero
.L802685B4:
/* 196E94 802685B4 8FAE0074 */  lw        $t6, 0x74($sp)
/* 196E98 802685B8 11C0000B */  beqz      $t6, .L802685E8
/* 196E9C 802685BC 02971021 */   addu     $v0, $s4, $s7
/* 196EA0 802685C0 19C00003 */  blez      $t6, .L802685D0
/* 196EA4 802685C4 240800E0 */   addiu    $t0, $zero, 0xE0
/* 196EA8 802685C8 0809A182 */  j         .L80268608
/* 196EAC 802685CC 240A003F */   addiu    $t2, $zero, 0x3F
.L802685D0:
/* 196EB0 802685D0 3C028007 */  lui       $v0, %hi(gGameStatusPtr)
/* 196EB4 802685D4 8C42419C */  lw        $v0, %lo(gGameStatusPtr)($v0)
/* 196EB8 802685D8 94420134 */  lhu       $v0, 0x134($v0)
/* 196EBC 802685DC 30420001 */  andi      $v0, $v0, 0x1
/* 196EC0 802685E0 10400007 */  beqz      $v0, .L80268600
/* 196EC4 802685E4 02971021 */   addu     $v0, $s4, $s7
.L802685E8:
/* 196EC8 802685E8 904A0000 */  lbu       $t2, 0x0($v0)
/* 196ECC 802685EC 02D71021 */  addu      $v0, $s6, $s7
/* 196ED0 802685F0 92680000 */  lbu       $t0, 0x0($s3)
/* 196ED4 802685F4 90490000 */  lbu       $t1, 0x0($v0)
/* 196ED8 802685F8 0809A184 */  j         .L80268610
/* 196EDC 802685FC 017E1021 */   addu     $v0, $t3, $fp
.L80268600:
/* 196EE0 80268600 240800FA */  addiu     $t0, $zero, 0xFA
/* 196EE4 80268604 240A00AF */  addiu     $t2, $zero, 0xAF
.L80268608:
/* 196EE8 80268608 0000482D */  daddu     $t1, $zero, $zero
/* 196EEC 8026860C 017E1021 */  addu      $v0, $t3, $fp
.L80268610:
/* 196EF0 80268610 84460074 */  lh        $a2, 0x74($v0)
/* 196EF4 80268614 0186102A */  slt       $v0, $t4, $a2
/* 196EF8 80268618 54400001 */  bnel      $v0, $zero, .L80268620
/* 196EFC 8026861C 0180302D */   daddu    $a2, $t4, $zero
.L80268620:
/* 196F00 80268620 00062100 */  sll       $a0, $a2, 4
/* 196F04 80268624 00862023 */  subu      $a0, $a0, $a2
/* 196F08 80268628 00042080 */  sll       $a0, $a0, 2
/* 196F0C 8026862C 15A00002 */  bnez      $t5, .L80268638
/* 196F10 80268630 008D001A */   div      $zero, $a0, $t5
/* 196F14 80268634 0007000D */  break     7
.L80268638:
/* 196F18 80268638 2401FFFF */  addiu     $at, $zero, -0x1
/* 196F1C 8026863C 15A10004 */  bne       $t5, $at, .L80268650
/* 196F20 80268640 3C018000 */   lui      $at, (0x80000000 >> 16)
/* 196F24 80268644 14810002 */  bne       $a0, $at, .L80268650
/* 196F28 80268648 00000000 */   nop
/* 196F2C 8026864C 0006000D */  break     6
.L80268650:
/* 196F30 80268650 00002012 */  mflo      $a0
/* 196F34 80268654 3C0551EB */  lui       $a1, (0x51EB851F >> 16)
/* 196F38 80268658 95630048 */  lhu       $v1, 0x48($t3)
/* 196F3C 8026865C 34A5851F */  ori       $a1, $a1, (0x51EB851F & 0xFFFF)
/* 196F40 80268660 00031C00 */  sll       $v1, $v1, 16
/* 196F44 80268664 00031403 */  sra       $v0, $v1, 16
/* 196F48 80268668 00450018 */  mult      $v0, $a1
/* 196F4C 8026866C 00031FC3 */  sra       $v1, $v1, 31
/* 196F50 80268670 00001010 */  mfhi      $v0
/* 196F54 80268674 00021143 */  sra       $v0, $v0, 5
/* 196F58 80268678 00431023 */  subu      $v0, $v0, $v1
/* 196F5C 8026867C 00021400 */  sll       $v0, $v0, 16
/* 196F60 80268680 00021403 */  sra       $v0, $v0, 16
/* 196F64 80268684 00558023 */  subu      $s0, $v0, $s5
/* 196F68 80268688 0600002D */  bltz      $s0, .L80268740
/* 196F6C 8026868C 00958823 */   subu     $s1, $a0, $s5
/* 196F70 80268690 52200007 */  beql      $s1, $zero, .L802686B0
/* 196F74 80268694 0200882D */   daddu    $s1, $s0, $zero
/* 196F78 80268698 14CC0003 */  bne       $a2, $t4, .L802686A8
/* 196F7C 8026869C 0230102A */   slt      $v0, $s1, $s0
/* 196F80 802686A0 0809A1AC */  j         .L802686B0
/* 196F84 802686A4 0200882D */   daddu    $s1, $s0, $zero
.L802686A8:
/* 196F88 802686A8 54400001 */  bnel      $v0, $zero, .L802686B0
/* 196F8C 802686AC 0220802D */   daddu    $s0, $s1, $zero
.L802686B0:
/* 196F90 802686B0 8FAE0068 */  lw        $t6, 0x68($sp)
/* 196F94 802686B4 240200FF */  addiu     $v0, $zero, 0xFF
/* 196F98 802686B8 AFA80010 */  sw        $t0, 0x10($sp)
/* 196F9C 802686BC AFAA0014 */  sw        $t2, 0x14($sp)
/* 196FA0 802686C0 AFA90018 */  sw        $t1, 0x18($sp)
/* 196FA4 802686C4 AFA2001C */  sw        $v0, 0x1C($sp)
/* 196FA8 802686C8 AFAB0030 */  sw        $t3, 0x30($sp)
/* 196FAC 802686CC AFAC0034 */  sw        $t4, 0x34($sp)
/* 196FB0 802686D0 AFAD0038 */  sw        $t5, 0x38($sp)
/* 196FB4 802686D4 01D53021 */  addu      $a2, $t6, $s5
/* 196FB8 802686D8 00062400 */  sll       $a0, $a2, 16
/* 196FBC 802686DC 00042403 */  sra       $a0, $a0, 16
/* 196FC0 802686E0 00D03021 */  addu      $a2, $a2, $s0
/* 196FC4 802686E4 00063400 */  sll       $a2, $a2, 16
/* 196FC8 802686E8 8FAE006C */  lw        $t6, 0x6C($sp)
/* 196FCC 802686EC 00063403 */  sra       $a2, $a2, 16
/* 196FD0 802686F0 000E2C00 */  sll       $a1, $t6, 16
/* 196FD4 802686F4 8FAE0028 */  lw        $t6, 0x28($sp)
/* 196FD8 802686F8 00052C03 */  sra       $a1, $a1, 16
/* 196FDC 802686FC 0C00AAB1 */  jal       startup_draw_prim_rect_COPY
/* 196FE0 80268700 000E3C03 */   sra      $a3, $t6, 16
/* 196FE4 80268704 8FAB0030 */  lw        $t3, 0x30($sp)
/* 196FE8 80268708 8FAC0034 */  lw        $t4, 0x34($sp)
/* 196FEC 8026870C 81630080 */  lb        $v1, 0x80($t3)
/* 196FF0 80268710 8FAD0038 */  lw        $t5, 0x38($sp)
/* 196FF4 80268714 2462FFFF */  addiu     $v0, $v1, -0x1
/* 196FF8 80268718 0242102A */  slt       $v0, $s2, $v0
/* 196FFC 8026871C 10400008 */  beqz      $v0, .L80268740
/* 197000 80268720 02B1A821 */   addu     $s5, $s5, $s1
/* 197004 80268724 27DE0002 */  addiu     $fp, $fp, 0x2
/* 197008 80268728 26D60003 */  addiu     $s6, $s6, 0x3
/* 19700C 8026872C 26940003 */  addiu     $s4, $s4, 0x3
/* 197010 80268730 26520001 */  addiu     $s2, $s2, 0x1
/* 197014 80268734 0243102A */  slt       $v0, $s2, $v1
/* 197018 80268738 1440FF9E */  bnez      $v0, .L802685B4
/* 19701C 8026873C 26730003 */   addiu    $s3, $s3, 0x3
.L80268740:
/* 197020 80268740 8FBF0064 */  lw        $ra, 0x64($sp)
/* 197024 80268744 8FBE0060 */  lw        $fp, 0x60($sp)
/* 197028 80268748 8FB7005C */  lw        $s7, 0x5C($sp)
/* 19702C 8026874C 8FB60058 */  lw        $s6, 0x58($sp)
/* 197030 80268750 8FB50054 */  lw        $s5, 0x54($sp)
/* 197034 80268754 8FB40050 */  lw        $s4, 0x50($sp)
/* 197038 80268758 8FB3004C */  lw        $s3, 0x4C($sp)
/* 19703C 8026875C 8FB20048 */  lw        $s2, 0x48($sp)
/* 197040 80268760 8FB10044 */  lw        $s1, 0x44($sp)
/* 197044 80268764 8FB00040 */  lw        $s0, 0x40($sp)
/* 197048 80268768 03E00008 */  jr        $ra
/* 19704C 8026876C 27BD0068 */   addiu    $sp, $sp, 0x68

### DECOMPILED C INSTRUCTIONS:

void draw_mash_meter(s32 posX, s32 posY, s32 fillValue, s32 colorMode) {
    ActionCommandStatus* actionCommandStatus = &gActionCommandStatus;
    s32 maxCutOff;
    s32 i;
    s32 cutOff;
    s32 width;
    s32 offsetX;
    s32 filledWidth;
    s32 r, g, b;

    if (!actionCommandStatus->showHud) {
        return;
    }

    posX -= 28;
    posY -= 4;

    maxCutOff = actionCommandStatus->mashMeterCutoffs[actionCommandStatus->mashMeterIntervals];

    if (fillValue < 0) {
        fillValue = 0;
    }

    width = 0;
    for (i = 0; i < actionCommandStatus->mashMeterIntervals; i++) {
        cutOff = actionCommandStatus->mashMeterCutoffs[i + 1];
        if (cutOff > fillValue) {
            cutOff = fillValue;
        }

        width = (cutOff * 60 / maxCutOff) * 100;
        if (fillValue == cutOff) {
            break;
        }
    }

    //difference between current and previous filled value
    offsetX = width - actionCommandStatus->barFillWidth;
    if (abs(offsetX) >= sMashMeterSmoothDivisor * 100) {
        actionCommandStatus->barFillWidth += offsetX / sMashMeterSmoothDivisor;
    } else {
        actionCommandStatus->barFillWidth = width;
    }

    offsetX = 0;
    for (i = 0; i < actionCommandStatus->mashMeterIntervals; i++) {
        cutOff = actionCommandStatus->mashMeterCutoffs[i + 1];
        width = (cutOff * 60 / maxCutOff) - offsetX;
        r = mashMeter_bgColors[3 * i + 0];
        g = mashMeter_bgColors[3 * i + 1];
        b = mashMeter_bgColors[3 * i + 2];
        startup_draw_prim_rect_COPY(posX + offsetX, posY, posX + offsetX + width, posY + 5, r, g, b, 255);
        if (i < actionCommandStatus->mashMeterIntervals - 1) {
            r = mashMeter_cutOffColors[3 * i + 0];
            g = mashMeter_cutOffColors[3 * i + 1];
            b = mashMeter_cutOffColors[3 * i + 2];
            startup_draw_prim_rect_COPY(posX + offsetX + width - 1, posY, posX + offsetX + width, posY + 5, r, g, b, 255);
            offsetX += width;
        } else {
            break;
        }
    }

    offsetX = 0;
    for (i = 0; i < actionCommandStatus->mashMeterIntervals; i++) {
        if (colorMode == 0) {
            r = mashMeter_fillColors[3 * i + 0];
            g = mashMeter_fillColors[3 * i + 1];
            b = mashMeter_fillColors[3 * i + 2];
        } else if (colorMode > 0) {
            r = 224;
            g = 63;
            b = 0;
        } else if (gGameStatusPtr->frameCounter % 2 != 0){
            r = mashMeter_fillColors[3 * i + 0];
            g = mashMeter_fillColors[3 * i + 1];
            b = mashMeter_fillColors[3 * i + 2];
        } else {
            r = 250;
            g = 175;
            b = 0;
        }

        cutOff = actionCommandStatus->mashMeterCutoffs[i + 1];
        if (cutOff > fillValue) {
            cutOff = fillValue;
        }

        filledWidth = cutOff * 60 / maxCutOff - offsetX;
        width = actionCommandStatus->barFillWidth / 100 - offsetX;

        if (width < 0) {
            break;
        }
        if (filledWidth == 0) {
            filledWidth = width;
        } else if (cutOff == fillValue) {
            filledWidth = width;
        } else if (width > filledWidth) {
            width = filledWidth;
        }

        startup_draw_prim_rect_COPY(posX + offsetX, posY, posX + offsetX + width, posY + 5, r, g, b, 255);
        offsetX += filledWidth;
        if (i >= actionCommandStatus->mashMeterIntervals - 1) {
            break;
        }
    }
}


### RAW ASSEMBLY INSTRUCTIONS:

glabel func_E011A700
/* 404920 E011A700 27BDFFB8 */  addiu     $sp, $sp, -0x48
/* 404924 E011A704 0080302D */  daddu     $a2, $a0, $zero
/* 404928 E011A708 3C038007 */  lui       $v1, %hi(gCurrentCameraID)
/* 40492C E011A70C 8C637410 */  lw        $v1, %lo(gCurrentCameraID)($v1)
/* 404930 E011A710 3C04800B */  lui       $a0, %hi(gCameras)
/* 404934 E011A714 24841D80 */  addiu     $a0, $a0, %lo(gCameras)
/* 404938 E011A718 AFBF0034 */  sw        $ra, 0x34($sp)
/* 40493C E011A71C AFBE0030 */  sw        $fp, 0x30($sp)
/* 404940 E011A720 AFB7002C */  sw        $s7, 0x2C($sp)
/* 404944 E011A724 AFB60028 */  sw        $s6, 0x28($sp)
/* 404948 E011A728 AFB50024 */  sw        $s5, 0x24($sp)
/* 40494C E011A72C AFB40020 */  sw        $s4, 0x20($sp)
/* 404950 E011A730 AFB3001C */  sw        $s3, 0x1C($sp)
/* 404954 E011A734 AFB20018 */  sw        $s2, 0x18($sp)
/* 404958 E011A738 AFB10014 */  sw        $s1, 0x14($sp)
/* 40495C E011A73C AFB00010 */  sw        $s0, 0x10($sp)
/* 404960 E011A740 F7B60040 */  sdc1      $f22, 0x40($sp)
/* 404964 E011A744 F7B40038 */  sdc1      $f20, 0x38($sp)
/* 404968 E011A748 8CDE000C */  lw        $fp, 0xC($a2)
/* 40496C E011A74C 00031080 */  sll       $v0, $v1, 2
/* 404970 E011A750 00431021 */  addu      $v0, $v0, $v1
/* 404974 E011A754 00021080 */  sll       $v0, $v0, 2
/* 404978 E011A758 00431023 */  subu      $v0, $v0, $v1
/* 40497C E011A75C 000218C0 */  sll       $v1, $v0, 3
/* 404980 E011A760 00431021 */  addu      $v0, $v0, $v1
/* 404984 E011A764 000210C0 */  sll       $v0, $v0, 3
/* 404988 E011A768 87C30002 */  lh        $v1, 0x2($fp)
/* 40498C E011A76C 1060011B */  beqz      $v1, .LE011ABDC
/* 404990 E011A770 0044B821 */   addu     $s7, $v0, $a0
/* 404994 E011A774 3C05DB06 */  lui       $a1, (0xDB060024 >> 16)
/* 404998 E011A778 34A50024 */  ori       $a1, $a1, (0xDB060024 & 0xFFFF)
/* 40499C E011A77C 0000902D */  daddu     $s2, $zero, $zero
/* 4049A0 E011A780 3C02800A */  lui       $v0, %hi(gMainGfxPos)
/* 4049A4 E011A784 2442A66C */  addiu     $v0, $v0, %lo(gMainGfxPos)
/* 4049A8 E011A788 0040982D */  daddu     $s3, $v0, $zero
/* 4049AC E011A78C 3C14D700 */  lui       $s4, (0xD7001002 >> 16)
/* 4049B0 E011A790 36941002 */  ori       $s4, $s4, (0xD7001002 & 0xFFFF)
/* 4049B4 E011A794 2415FFFF */  addiu     $s5, $zero, -0x1
/* 4049B8 E011A798 2411000C */  addiu     $s1, $zero, 0xC
/* 4049BC E011A79C 24100014 */  addiu     $s0, $zero, 0x14
/* 4049C0 E011A7A0 8E640000 */  lw        $a0, 0x0($s3)
/* 4049C4 E011A7A4 3C02E700 */  lui       $v0, (0xE7000000 >> 16)
/* 4049C8 E011A7A8 0080182D */  daddu     $v1, $a0, $zero
/* 4049CC E011A7AC 24840008 */  addiu     $a0, $a0, 0x8
/* 4049D0 E011A7B0 AE640000 */  sw        $a0, 0x0($s3)
/* 4049D4 E011A7B4 AC620000 */  sw        $v0, 0x0($v1)
/* 4049D8 E011A7B8 AC600004 */  sw        $zero, 0x4($v1)
/* 4049DC E011A7BC AC850000 */  sw        $a1, 0x0($a0)
/* 4049E0 E011A7C0 8CC30010 */  lw        $v1, 0x10($a2)
/* 4049E4 E011A7C4 24820008 */  addiu     $v0, $a0, 0x8
/* 4049E8 E011A7C8 AE620000 */  sw        $v0, 0x0($s3)
/* 4049EC E011A7CC 8C63001C */  lw        $v1, 0x1C($v1)
/* 4049F0 E011A7D0 3C02DE00 */  lui       $v0, (0xDE000000 >> 16)
/* 4049F4 E011A7D4 AC820008 */  sw        $v0, 0x8($a0)
/* 4049F8 E011A7D8 3C028000 */  lui       $v0, (0x80000000 >> 16)
/* 4049FC E011A7DC 00621821 */  addu      $v1, $v1, $v0
/* 404A00 E011A7E0 AC830004 */  sw        $v1, 0x4($a0)
/* 404A04 E011A7E4 3C03E012 */  lui       $v1, (0xE0120000 >> 16)
/* 404A08 E011A7E8 8C63AC20 */  lw        $v1, -0x53E0($v1)
/* 404A0C E011A7EC 24820010 */  addiu     $v0, $a0, 0x10
/* 404A10 E011A7F0 AE620000 */  sw        $v0, 0x0($s3)
/* 404A14 E011A7F4 AC83000C */  sw        $v1, 0xC($a0)
.LE011A7F8:
/* 404A18 E011A7F8 03D11021 */  addu      $v0, $fp, $s1
/* 404A1C E011A7FC 84440000 */  lh        $a0, 0x0($v0)
/* 404A20 E011A800 50800012 */  beql      $a0, $zero, .LE011A84C
/* 404A24 E011A804 26520001 */   addiu    $s2, $s2, 0x1
/* 404A28 E011A808 8E620000 */  lw        $v0, 0x0($s3)
/* 404A2C E011A80C 0040182D */  daddu     $v1, $v0, $zero
/* 404A30 E011A810 24420008 */  addiu     $v0, $v0, 0x8
/* 404A34 E011A814 AE620000 */  sw        $v0, 0x0($s3)
/* 404A38 E011A818 32420007 */  andi      $v0, $s2, 0x7
/* 404A3C E011A81C 00021200 */  sll       $v0, $v0, 8
/* 404A40 E011A820 00541025 */  or        $v0, $v0, $s4
/* 404A44 E011A824 AC620000 */  sw        $v0, 0x0($v1)
/* 404A48 E011A828 0C0468EF */  jal       func_E011A3BC
/* 404A4C E011A82C AC750004 */   sw       $s5, 0x4($v1)
/* 404A50 E011A830 0200202D */  daddu     $a0, $s0, $zero
/* 404A54 E011A834 24050032 */  addiu     $a1, $zero, 0x32
/* 404A58 E011A838 0240302D */  daddu     $a2, $s2, $zero
/* 404A5C E011A83C 3C074480 */  lui       $a3, (0x44800000 >> 16)
/* 404A60 E011A840 0C046923 */  jal       func_E011A48C
/* 404A64 E011A844 26100020 */   addiu    $s0, $s0, 0x20
/* 404A68 E011A848 26520001 */  addiu     $s2, $s2, 0x1
.LE011A84C:
/* 404A6C E011A84C 2A420003 */  slti      $v0, $s2, 0x3
/* 404A70 E011A850 1440FFE9 */  bnez      $v0, .LE011A7F8
/* 404A74 E011A854 2631000A */   addiu    $s1, $s1, 0xA
/* 404A78 E011A858 3C03D700 */  lui       $v1, (0xD7000002 >> 16)
/* 404A7C E011A85C 34630002 */  ori       $v1, $v1, (0xD7000002 & 0xFFFF)
/* 404A80 E011A860 3C05E300 */  lui       $a1, (0xE3001001 >> 16)
/* 404A84 E011A864 34A51001 */  ori       $a1, $a1, (0xE3001001 & 0xFFFF)
/* 404A88 E011A868 0000902D */  daddu     $s2, $zero, $zero
/* 404A8C E011A86C 3C02800A */  lui       $v0, %hi(gMainGfxPos)
/* 404A90 E011A870 2442A66C */  addiu     $v0, $v0, %lo(gMainGfxPos)
/* 404A94 E011A874 0040A82D */  daddu     $s5, $v0, $zero
/* 404A98 E011A878 2416000C */  addiu     $s6, $zero, 0xC
/* 404A9C E011A87C 24130014 */  addiu     $s3, $zero, 0x14
/* 404AA0 E011A880 8EA20000 */  lw        $v0, 0x0($s5)
/* 404AA4 E011A884 3C013C23 */  lui       $at, (0x3C23D70A >> 16)
/* 404AA8 E011A888 3421D70A */  ori       $at, $at, (0x3C23D70A & 0xFFFF)
/* 404AAC E011A88C 4481B000 */  mtc1      $at, $f22
/* 404AB0 E011A890 3C014480 */  lui       $at, (0x44800000 >> 16)
/* 404AB4 E011A894 4481A000 */  mtc1      $at, $f20
/* 404AB8 E011A898 0040202D */  daddu     $a0, $v0, $zero
/* 404ABC E011A89C 24420008 */  addiu     $v0, $v0, 0x8
/* 404AC0 E011A8A0 AEA20000 */  sw        $v0, 0x0($s5)
/* 404AC4 E011A8A4 AC830000 */  sw        $v1, 0x0($a0)
/* 404AC8 E011A8A8 2403FFFF */  addiu     $v1, $zero, -0x1
/* 404ACC E011A8AC AC830004 */  sw        $v1, 0x4($a0)
/* 404AD0 E011A8B0 24430008 */  addiu     $v1, $v0, 0x8
/* 404AD4 E011A8B4 AEA30000 */  sw        $v1, 0x0($s5)
/* 404AD8 E011A8B8 AC450000 */  sw        $a1, 0x0($v0)
/* 404ADC E011A8BC AC400004 */  sw        $zero, 0x4($v0)
.LE011A8C0:
/* 404AE0 E011A8C0 03D68021 */  addu      $s0, $fp, $s6
/* 404AE4 E011A8C4 96110002 */  lhu       $s1, 0x2($s0)
/* 404AE8 E011A8C8 86040000 */  lh        $a0, 0x0($s0)
/* 404AEC E011A8CC 96140008 */  lhu       $s4, 0x8($s0)
/* 404AF0 E011A8D0 1080007D */  beqz      $a0, .LE011AAC8
/* 404AF4 E011A8D4 00111400 */   sll      $v0, $s1, 16
/* 404AF8 E011A8D8 04420001 */  bltzl     $v0, .LE011A8E0
/* 404AFC E011A8DC 0000882D */   daddu    $s1, $zero, $zero
.LE011A8E0:
/* 404B00 E011A8E0 00111400 */  sll       $v0, $s1, 16
/* 404B04 E011A8E4 00021403 */  sra       $v0, $v0, 16
/* 404B08 E011A8E8 2842000A */  slti      $v0, $v0, 0xA
/* 404B0C E011A8EC 50400001 */  beql      $v0, $zero, .LE011A8F4
/* 404B10 E011A8F0 24110009 */   addiu    $s1, $zero, 0x9
.LE011A8F4:
/* 404B14 E011A8F4 0C0468EF */  jal       func_E011A3BC
/* 404B18 E011A8F8 00000000 */   nop
/* 404B1C E011A8FC 86030006 */  lh        $v1, 0x6($s0)
/* 404B20 E011A900 2402000A */  addiu     $v0, $zero, 0xA
/* 404B24 E011A904 10620006 */  beq       $v1, $v0, .LE011A920
/* 404B28 E011A908 00111400 */   sll      $v0, $s1, 16
/* 404B2C E011A90C 24020014 */  addiu     $v0, $zero, 0x14
/* 404B30 E011A910 14620041 */  bne       $v1, $v0, .LE011AA18
/* 404B34 E011A914 00111400 */   sll      $v0, $s1, 16
/* 404B38 E011A918 08046A4B */  j         .LE011A92C
/* 404B3C E011A91C 00021403 */   sra      $v0, $v0, 16
.LE011A920:
/* 404B40 E011A920 00021403 */  sra       $v0, $v0, 16
/* 404B44 E011A924 08046A4C */  j         .LE011A930
/* 404B48 E011A928 2442FFFF */   addiu    $v0, $v0, -0x1
.LE011A92C:
/* 404B4C E011A92C 24420001 */  addiu     $v0, $v0, 0x1
.LE011A930:
/* 404B50 E011A930 00021080 */  sll       $v0, $v0, 2
/* 404B54 E011A934 3C08E012 */  lui       $t0, %hi(D_E011AC24)
/* 404B58 E011A938 2508AC24 */  addiu     $t0, $t0, %lo(D_E011AC24)
/* 404B5C E011A93C 00481021 */  addu      $v0, $v0, $t0
/* 404B60 E011A940 8C440000 */  lw        $a0, 0x0($v0)
/* 404B64 E011A944 10800033 */  beqz      $a0, .LE011AA14
/* 404B68 E011A948 3C08DE00 */   lui      $t0, (0xDE000000 >> 16)
/* 404B6C E011A94C 8EA20000 */  lw        $v0, 0x0($s5)
/* 404B70 E011A950 0040182D */  daddu     $v1, $v0, $zero
/* 404B74 E011A954 24420008 */  addiu     $v0, $v0, 0x8
/* 404B78 E011A958 AEA20000 */  sw        $v0, 0x0($s5)
/* 404B7C E011A95C 00141400 */  sll       $v0, $s4, 16
/* 404B80 E011A960 00021403 */  sra       $v0, $v0, 16
/* 404B84 E011A964 AC680000 */  sw        $t0, 0x0($v1)
/* 404B88 E011A968 3C08E012 */  lui       $t0, %hi(D_E011AC4C)
/* 404B8C E011A96C 2508AC4C */  addiu     $t0, $t0, %lo(D_E011AC4C)
/* 404B90 E011A970 00481021 */  addu      $v0, $v0, $t0
/* 404B94 E011A974 AC640004 */  sw        $a0, 0x4($v1)
/* 404B98 E011A978 80420000 */  lb        $v0, 0x0($v0)
/* 404B9C E011A97C 44820000 */  mtc1      $v0, $f0
/* 404BA0 E011A980 00000000 */  nop
/* 404BA4 E011A984 46800020 */  cvt.s.w   $f0, $f0
/* 404BA8 E011A988 46160102 */  mul.s     $f4, $f0, $f22
/* 404BAC E011A98C 00000000 */  nop
/* 404BB0 E011A990 3C013F80 */  lui       $at, (0x3F800000 >> 16)
/* 404BB4 E011A994 44810000 */  mtc1      $at, $f0
/* 404BB8 E011A998 00000000 */  nop
/* 404BBC E011A99C 46002001 */  sub.s     $f0, $f4, $f0
/* 404BC0 E011A9A0 3C014180 */  lui       $at, (0x41800000 >> 16)
/* 404BC4 E011A9A4 44811000 */  mtc1      $at, $f2
/* 404BC8 E011A9A8 46000007 */  neg.s     $f0, $f0
/* 404BCC E011A9AC 46020002 */  mul.s     $f0, $f0, $f2
/* 404BD0 E011A9B0 00000000 */  nop
/* 404BD4 E011A9B4 3C013FE0 */  lui       $at, (0x3FE00000 >> 16)
/* 404BD8 E011A9B8 44811800 */  mtc1      $at, $f3
/* 404BDC E011A9BC 44801000 */  mtc1      $zero, $f2
/* 404BE0 E011A9C0 46000021 */  cvt.d.s   $f0, $f0
/* 404BE4 E011A9C4 46220000 */  add.d     $f0, $f0, $f2
/* 404BE8 E011A9C8 4604A103 */  div.s     $f4, $f20, $f4
/* 404BEC E011A9CC 44072000 */  mfc1      $a3, $f4
/* 404BF0 E011A9D0 4620018D */  trunc.w.d $f6, $f0
/* 404BF4 E011A9D4 44043000 */  mfc1      $a0, $f6
/* 404BF8 E011A9D8 00000000 */  nop
/* 404BFC E011A9DC 00931021 */  addu      $v0, $a0, $s3
/* 404C00 E011A9E0 44821000 */  mtc1      $v0, $f2
/* 404C04 E011A9E4 00000000 */  nop
/* 404C08 E011A9E8 468010A0 */  cvt.s.w   $f2, $f2
/* 404C0C E011A9EC 24820032 */  addiu     $v0, $a0, 0x32
/* 404C10 E011A9F0 44820000 */  mtc1      $v0, $f0
/* 404C14 E011A9F4 00000000 */  nop
/* 404C18 E011A9F8 46800020 */  cvt.s.w   $f0, $f0
/* 404C1C E011A9FC 4600118D */  trunc.w.s $f6, $f2
/* 404C20 E011AA00 44043000 */  mfc1      $a0, $f6
/* 404C24 E011AA04 4600018D */  trunc.w.s $f6, $f0
/* 404C28 E011AA08 44053000 */  mfc1      $a1, $f6
/* 404C2C E011AA0C 0C046923 */  jal       func_E011A48C
/* 404C30 E011AA10 0000302D */   daddu    $a2, $zero, $zero
.LE011AA14:
/* 404C34 E011AA14 00111400 */  sll       $v0, $s1, 16
.LE011AA18:
/* 404C38 E011AA18 00021383 */  sra       $v0, $v0, 14
/* 404C3C E011AA1C 3C08E012 */  lui       $t0, %hi(D_E011AC24)
/* 404C40 E011AA20 2508AC24 */  addiu     $t0, $t0, %lo(D_E011AC24)
/* 404C44 E011AA24 00481021 */  addu      $v0, $v0, $t0
/* 404C48 E011AA28 8C440000 */  lw        $a0, 0x0($v0)
/* 404C4C E011AA2C 10800025 */  beqz      $a0, .LE011AAC4
/* 404C50 E011AA30 3C08DE00 */   lui      $t0, (0xDE000000 >> 16)
/* 404C54 E011AA34 8EA20000 */  lw        $v0, 0x0($s5)
/* 404C58 E011AA38 0040182D */  daddu     $v1, $v0, $zero
/* 404C5C E011AA3C 24420008 */  addiu     $v0, $v0, 0x8
/* 404C60 E011AA40 AEA20000 */  sw        $v0, 0x0($s5)
/* 404C64 E011AA44 AC680000 */  sw        $t0, 0x0($v1)
/* 404C68 E011AA48 AC640004 */  sw        $a0, 0x4($v1)
/* 404C6C E011AA4C 00141C00 */  sll       $v1, $s4, 16
/* 404C70 E011AA50 00031C03 */  sra       $v1, $v1, 16
/* 404C74 E011AA54 3C02E012 */  lui       $v0, (0xE0120000 >> 16)
/* 404C78 E011AA58 00431021 */  addu      $v0, $v0, $v1
/* 404C7C E011AA5C 8042AC64 */  lb        $v0, -0x539C($v0)
/* 404C80 E011AA60 3C01E012 */  lui       $at, (0xE0120000 >> 16)
/* 404C84 E011AA64 00230821 */  addu      $at, $at, $v1
/* 404C88 E011AA68 8023AC58 */  lb        $v1, -0x53A8($at)
/* 404C8C E011AA6C 00022023 */  negu      $a0, $v0
/* 404C90 E011AA70 00531021 */  addu      $v0, $v0, $s3
/* 404C94 E011AA74 44830000 */  mtc1      $v1, $f0
/* 404C98 E011AA78 00000000 */  nop
/* 404C9C E011AA7C 46800020 */  cvt.s.w   $f0, $f0
/* 404CA0 E011AA80 46160102 */  mul.s     $f4, $f0, $f22
/* 404CA4 E011AA84 00000000 */  nop
/* 404CA8 E011AA88 44821000 */  mtc1      $v0, $f2
/* 404CAC E011AA8C 00000000 */  nop
/* 404CB0 E011AA90 468010A0 */  cvt.s.w   $f2, $f2
/* 404CB4 E011AA94 24820032 */  addiu     $v0, $a0, 0x32
/* 404CB8 E011AA98 44820000 */  mtc1      $v0, $f0
/* 404CBC E011AA9C 00000000 */  nop
/* 404CC0 E011AAA0 46800020 */  cvt.s.w   $f0, $f0
/* 404CC4 E011AAA4 4600118D */  trunc.w.s $f6, $f2
/* 404CC8 E011AAA8 44043000 */  mfc1      $a0, $f6
/* 404CCC E011AAAC 4604A103 */  div.s     $f4, $f20, $f4
/* 404CD0 E011AAB0 44072000 */  mfc1      $a3, $f4
/* 404CD4 E011AAB4 4600018D */  trunc.w.s $f6, $f0
/* 404CD8 E011AAB8 44053000 */  mfc1      $a1, $f6
/* 404CDC E011AABC 0C046923 */  jal       func_E011A48C
/* 404CE0 E011AAC0 0000302D */   daddu    $a2, $zero, $zero
.LE011AAC4:
/* 404CE4 E011AAC4 26730020 */  addiu     $s3, $s3, 0x20
.LE011AAC8:
/* 404CE8 E011AAC8 26520001 */  addiu     $s2, $s2, 0x1
/* 404CEC E011AACC 2A420003 */  slti      $v0, $s2, 0x3
/* 404CF0 E011AAD0 1440FF7B */  bnez      $v0, .LE011A8C0
/* 404CF4 E011AAD4 26D6000A */   addiu    $s6, $s6, 0xA
/* 404CF8 E011AAD8 3C06800A */  lui       $a2, %hi(gMainGfxPos)
/* 404CFC E011AADC 24C6A66C */  addiu     $a2, $a2, %lo(gMainGfxPos)
/* 404D00 E011AAE0 86E2000E */  lh        $v0, 0xE($s7)
/* 404D04 E011AAE4 3C014080 */  lui       $at, (0x40800000 >> 16)
/* 404D08 E011AAE8 44812000 */  mtc1      $at, $f4
/* 404D0C E011AAEC 44821000 */  mtc1      $v0, $f2
/* 404D10 E011AAF0 00000000 */  nop
/* 404D14 E011AAF4 468010A0 */  cvt.s.w   $f2, $f2
/* 404D18 E011AAF8 46041082 */  mul.s     $f2, $f2, $f4
/* 404D1C E011AAFC 00000000 */  nop
/* 404D20 E011AB00 3C04ED00 */  lui       $a0, (0xED000000 >> 16)
/* 404D24 E011AB04 86E20010 */  lh        $v0, 0x10($s7)
/* 404D28 E011AB08 8CC50000 */  lw        $a1, 0x0($a2)
/* 404D2C E011AB0C 44820000 */  mtc1      $v0, $f0
/* 404D30 E011AB10 00000000 */  nop
/* 404D34 E011AB14 46800020 */  cvt.s.w   $f0, $f0
/* 404D38 E011AB18 46040002 */  mul.s     $f0, $f0, $f4
/* 404D3C E011AB1C 00000000 */  nop
/* 404D40 E011AB20 00A0382D */  daddu     $a3, $a1, $zero
/* 404D44 E011AB24 4600118D */  trunc.w.s $f6, $f2
/* 404D48 E011AB28 44023000 */  mfc1      $v0, $f6
/* 404D4C E011AB2C 00000000 */  nop
/* 404D50 E011AB30 30420FFF */  andi      $v0, $v0, 0xFFF
/* 404D54 E011AB34 00021300 */  sll       $v0, $v0, 12
/* 404D58 E011AB38 4600018D */  trunc.w.s $f6, $f0
/* 404D5C E011AB3C 44033000 */  mfc1      $v1, $f6
/* 404D60 E011AB40 00000000 */  nop
/* 404D64 E011AB44 30630FFF */  andi      $v1, $v1, 0xFFF
/* 404D68 E011AB48 00641825 */  or        $v1, $v1, $a0
/* 404D6C E011AB4C 00431025 */  or        $v0, $v0, $v1
/* 404D70 E011AB50 ACE20000 */  sw        $v0, 0x0($a3)
/* 404D74 E011AB54 86E2000E */  lh        $v0, 0xE($s7)
/* 404D78 E011AB58 86E3000A */  lh        $v1, 0xA($s7)
/* 404D7C E011AB5C 24A50008 */  addiu     $a1, $a1, 0x8
/* 404D80 E011AB60 00431021 */  addu      $v0, $v0, $v1
/* 404D84 E011AB64 44821000 */  mtc1      $v0, $f2
/* 404D88 E011AB68 00000000 */  nop
/* 404D8C E011AB6C 468010A0 */  cvt.s.w   $f2, $f2
/* 404D90 E011AB70 86E20010 */  lh        $v0, 0x10($s7)
/* 404D94 E011AB74 86E3000C */  lh        $v1, 0xC($s7)
/* 404D98 E011AB78 46041082 */  mul.s     $f2, $f2, $f4
/* 404D9C E011AB7C 00000000 */  nop
/* 404DA0 E011AB80 ACC50000 */  sw        $a1, 0x0($a2)
/* 404DA4 E011AB84 00431021 */  addu      $v0, $v0, $v1
/* 404DA8 E011AB88 44820000 */  mtc1      $v0, $f0
/* 404DAC E011AB8C 00000000 */  nop
/* 404DB0 E011AB90 46800020 */  cvt.s.w   $f0, $f0
/* 404DB4 E011AB94 24A20008 */  addiu     $v0, $a1, 0x8
/* 404DB8 E011AB98 46040002 */  mul.s     $f0, $f0, $f4
/* 404DBC E011AB9C 00000000 */  nop
/* 404DC0 E011ABA0 ACC20000 */  sw        $v0, 0x0($a2)
/* 404DC4 E011ABA4 4600118D */  trunc.w.s $f6, $f2
/* 404DC8 E011ABA8 44023000 */  mfc1      $v0, $f6
/* 404DCC E011ABAC 00000000 */  nop
/* 404DD0 E011ABB0 30420FFF */  andi      $v0, $v0, 0xFFF
/* 404DD4 E011ABB4 00021300 */  sll       $v0, $v0, 12
/* 404DD8 E011ABB8 4600018D */  trunc.w.s $f6, $f0
/* 404DDC E011ABBC 44033000 */  mfc1      $v1, $f6
/* 404DE0 E011ABC0 00000000 */  nop
/* 404DE4 E011ABC4 30630FFF */  andi      $v1, $v1, 0xFFF
/* 404DE8 E011ABC8 00431025 */  or        $v0, $v0, $v1
/* 404DEC E011ABCC ACE20004 */  sw        $v0, 0x4($a3)
/* 404DF0 E011ABD0 3C02E700 */  lui       $v0, (0xE7000000 >> 16)
/* 404DF4 E011ABD4 ACA20000 */  sw        $v0, 0x0($a1)
/* 404DF8 E011ABD8 ACA00004 */  sw        $zero, 0x4($a1)
.LE011ABDC:
/* 404DFC E011ABDC 8FBF0034 */  lw        $ra, 0x34($sp)
/* 404E00 E011ABE0 8FBE0030 */  lw        $fp, 0x30($sp)
/* 404E04 E011ABE4 8FB7002C */  lw        $s7, 0x2C($sp)
/* 404E08 E011ABE8 8FB60028 */  lw        $s6, 0x28($sp)
/* 404E0C E011ABEC 8FB50024 */  lw        $s5, 0x24($sp)
/* 404E10 E011ABF0 8FB40020 */  lw        $s4, 0x20($sp)
/* 404E14 E011ABF4 8FB3001C */  lw        $s3, 0x1C($sp)
/* 404E18 E011ABF8 8FB20018 */  lw        $s2, 0x18($sp)
/* 404E1C E011ABFC 8FB10014 */  lw        $s1, 0x14($sp)
/* 404E20 E011AC00 8FB00010 */  lw        $s0, 0x10($sp)
/* 404E24 E011AC04 D7B60040 */  ldc1      $f22, 0x40($sp)
/* 404E28 E011AC08 D7B40038 */  ldc1      $f20, 0x38($sp)
/* 404E2C E011AC0C 03E00008 */  jr        $ra
/* 404E30 E011AC10 27BD0048 */   addiu    $sp, $sp, 0x48
/* 404E34 E011AC14 00000000 */  nop
/* 404E38 E011AC18 00000000 */  nop
/* 404E3C E011AC1C 00000000 */  nop

### DECOMPILED C INSTRUCTIONS:

void func_E011A700(EffectInstance* effect) {
    PartnerBuffFXData* data = effect->data.partnerBuff;
    Camera* camera = &gCameras[gCurrentCameraID];
    s32 numShown;
    s32 alpha;
    s32 temp1;
    s32 temp2;
    f32 scale;
    Gfx* dlist;
    f32 x, y;
    s32 i;

    if (data->unk_02 != 0) {
        gDPPipeSync(gMainGfxPos++);
        gSPSegment(gMainGfxPos++, 0x09, VIRTUAL_TO_PHYSICAL(((EffectInstance*)effect)->graphics->data));

        gSPDisplayList(gMainGfxPos++, D_E011AC20[0]);

        numShown = 0;
        for (i = 0; i < ARRAY_COUNT(data->unk_0C); i++) {
            BuffData* buffData = &data->unk_0C[i];

            alpha = buffData->alpha;
            if (alpha != 0) {
                gSPTexture(gMainGfxPos++, 0xFFFF, 0xFFFF, 2, i, G_ON);
                func_E011A3BC(alpha);
                func_E011A48C(20 + numShown * 32, 50, i, 1024.0f);
                numShown++;
            }
        }

        gSPTexture(gMainGfxPos++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
        gDPSetTextureLUT(gMainGfxPos++, G_TT_NONE);

        numShown = 0;
        for (i = 0; i < ARRAY_COUNT(data->unk_0C); i++) {
            BuffData* buffData = &data->unk_0C[i];
            s16 turnsDisplay = buffData->turnsDisplay;
            s16 stateTimer = buffData->stateTimer;

            alpha = buffData->alpha;

            if (alpha != 0) {
                if (turnsDisplay < 0) {
                    turnsDisplay = 0;
                }
                if (turnsDisplay > 9) {
                    turnsDisplay = 9;
                }
                func_E011A3BC(alpha);

                if (buffData->state == BUFF_STATE_DECREMENT_TURNS || buffData->state == BUFF_STATE_SET_TURNS) {
                    s32 idx;

                    if (buffData->state == BUFF_STATE_DECREMENT_TURNS) {
                        idx = turnsDisplay - 1;
                    } else if (buffData->state == BUFF_STATE_SET_TURNS) {
                        idx = turnsDisplay + 1;
                    }
                    dlist = D_E011AC24[idx];
                    if (dlist != NULL) {
                        gSPDisplayList(gMainGfxPos++, dlist);
                        scale = D_E011AC4C[(s16)stateTimer] * 0.01f;
                        temp2 = (-(scale - 1.0f) * 16.0f) + 0.5;
                        x = temp2 + 20 + numShown * 32;
                        y = temp2 + 50;
                        func_E011A48C(x, y, 0, 1024.0f / scale);
                    }
                }

                dlist = D_E011AC24[turnsDisplay];
                if (dlist != NULL) {
                    gSPDisplayList(gMainGfxPos++, dlist);
                    temp1 = D_E011AC64[(s16)stateTimer];
                    temp2 = -temp1;
                    scale = D_E011AC58[(s16)stateTimer] * 0.01f;
                    x = temp1 + 20 + numShown * 32;
                    y = temp2 + 50;
                    func_E011A48C(x, y, 0, 1024.0f / scale);
                }
                numShown++;
            }
        }

        gDPSetScissor(gMainGfxPos++, G_SC_NON_INTERLACE,
            camera->viewportStartX,
            camera->viewportStartY,
            camera->viewportStartX + camera->viewportW,
            camera->viewportStartY + camera->viewportH
        );
        gDPPipeSync(gMainGfxPos++);
    }
}


### RAW ASSEMBLY INSTRUCTIONS:

glabel step_mesh_animator
/* B6DF8 801206F8 27BDFFC8 */  addiu     $sp, $sp, -0x38
/* B6DFC 801206FC AFB10014 */  sw        $s1, 0x14($sp)
/* B6E00 80120700 0080882D */  daddu     $s1, $a0, $zero
/* B6E04 80120704 AFBF001C */  sw        $ra, 0x1C($sp)
/* B6E08 80120708 AFB20018 */  sw        $s2, 0x18($sp)
/* B6E0C 8012070C AFB00010 */  sw        $s0, 0x10($sp)
/* B6E10 80120710 F7B80030 */  sdc1      $f24, 0x30($sp)
/* B6E14 80120714 F7B60028 */  sdc1      $f22, 0x28($sp)
/* B6E18 80120718 F7B40020 */  sdc1      $f20, 0x20($sp)
/* B6E1C 8012071C 8E320008 */  lw        $s2, 0x8($s1)
/* B6E20 80120720 86430000 */  lh        $v1, 0x0($s2)
/* B6E24 80120724 2C620014 */  sltiu     $v0, $v1, 0x14
/* B6E28 80120728 10400114 */  beqz      $v0, .L80120B7C
/* B6E2C 8012072C 26500002 */   addiu    $s0, $s2, 0x2
/* B6E30 80120730 00031080 */  sll       $v0, $v1, 2
/* B6E34 80120734 3C018015 */  lui       $at, %hi(jtbl_80150030)
/* B6E38 80120738 00220821 */  addu      $at, $at, $v0
/* B6E3C 8012073C 8C220030 */  lw        $v0, %lo(jtbl_80150030)($at)
/* B6E40 80120740 00400008 */  jr        $v0
/* B6E44 80120744 00000000 */   nop
glabel .L80120748
/* B6E48 80120748 080482E0 */  j         .L80120B80
/* B6E4C 8012074C 2402FFFF */   addiu    $v0, $zero, -0x1
glabel .L80120750
/* B6E50 80120750 92030001 */  lbu       $v1, 0x1($s0)
/* B6E54 80120754 26100002 */  addiu     $s0, $s0, 0x2
/* B6E58 80120758 24020001 */  addiu     $v0, $zero, 0x1
/* B6E5C 8012075C AE300008 */  sw        $s0, 0x8($s1)
/* B6E60 80120760 080482E0 */  j         .L80120B80
/* B6E64 80120764 A2230004 */   sb       $v1, 0x4($s1)
glabel .L80120768
/* B6E68 80120768 26100002 */  addiu     $s0, $s0, 0x2
/* B6E6C 8012076C AE300008 */  sw        $s0, 0x8($s1)
.L80120770:
/* B6E70 80120770 080482E0 */  j         .L80120B80
/* B6E74 80120774 24020001 */   addiu    $v0, $zero, 0x1
glabel .L80120778
/* B6E78 80120778 8E22000C */  lw        $v0, 0xC($s1)
/* B6E7C 8012077C 8E2302D0 */  lw        $v1, 0x2D0($s1)
/* B6E80 80120780 0220202D */  daddu     $a0, $s1, $zero
/* B6E84 80120784 AC820008 */  sw        $v0, 0x8($a0)
/* B6E88 80120788 0C04819E */  jal       reload_mesh_animator_tree
/* B6E8C 8012078C AC8302CC */   sw       $v1, 0x2CC($a0)
/* B6E90 80120790 080482E0 */  j         .L80120B80
/* B6E94 80120794 24020001 */   addiu    $v0, $zero, 0x1
glabel .L80120798
/* B6E98 80120798 8E22000C */  lw        $v0, 0xC($s1)
/* B6E9C 8012079C 8E2302D0 */  lw        $v1, 0x2D0($s1)
/* B6EA0 801207A0 AE220008 */  sw        $v0, 0x8($s1)
/* B6EA4 801207A4 080482DF */  j         .L80120B7C
/* B6EA8 801207A8 AE2302CC */   sw       $v1, 0x2CC($s1)
glabel .L801207AC
/* B6EAC 801207AC 8E2302CC */  lw        $v1, 0x2CC($s1)
/* B6EB0 801207B0 24020001 */  addiu     $v0, $zero, 0x1
/* B6EB4 801207B4 AE30000C */  sw        $s0, 0xC($s1)
/* B6EB8 801207B8 AE300008 */  sw        $s0, 0x8($s1)
/* B6EBC 801207BC 080482E0 */  j         .L80120B80
/* B6EC0 801207C0 AE2302D0 */   sw       $v1, 0x2D0($s1)
glabel .L801207C4
/* B6EC4 801207C4 86040000 */  lh        $a0, 0x0($s0)
/* B6EC8 801207C8 26100002 */  addiu     $s0, $s0, 0x2
/* B6ECC 801207CC 8E230000 */  lw        $v1, 0x0($s1)
/* B6ED0 801207D0 24020001 */  addiu     $v0, $zero, 0x1
/* B6ED4 801207D4 AE300008 */  sw        $s0, 0x8($s1)
/* B6ED8 801207D8 08048219 */  j         .L80120864
/* B6EDC 801207DC 3084FFFF */   andi     $a0, $a0, 0xFFFF
glabel .L801207E0
/* B6EE0 801207E0 86020000 */  lh        $v0, 0x0($s0)
/* B6EE4 801207E4 8E240010 */  lw        $a0, 0x10($s1)
/* B6EE8 801207E8 00511021 */  addu      $v0, $v0, $s1
/* B6EEC 801207EC 90450014 */  lbu       $a1, 0x14($v0)
/* B6EF0 801207F0 0C047837 */  jal       get_animator_child_with_id
/* B6EF4 801207F4 26100002 */   addiu    $s0, $s0, 0x2
/* B6EF8 801207F8 0040282D */  daddu     $a1, $v0, $zero
/* B6EFC 801207FC 86040000 */  lh        $a0, 0x0($s0)
/* B6F00 80120800 26100002 */  addiu     $s0, $s0, 0x2
/* B6F04 80120804 94A300F4 */  lhu       $v1, 0xF4($a1)
/* B6F08 80120808 24020001 */  addiu     $v0, $zero, 0x1
/* B6F0C 8012080C 08048212 */  j         .L80120848
/* B6F10 80120810 00641825 */   or       $v1, $v1, $a0
glabel .L80120814
/* B6F14 80120814 86020000 */  lh        $v0, 0x0($s0)
/* B6F18 80120818 8E240010 */  lw        $a0, 0x10($s1)
/* B6F1C 8012081C 00511021 */  addu      $v0, $v0, $s1
/* B6F20 80120820 90450014 */  lbu       $a1, 0x14($v0)
/* B6F24 80120824 0C047837 */  jal       get_animator_child_with_id
/* B6F28 80120828 26100002 */   addiu    $s0, $s0, 0x2
/* B6F2C 8012082C 0040282D */  daddu     $a1, $v0, $zero
/* B6F30 80120830 86040000 */  lh        $a0, 0x0($s0)
/* B6F34 80120834 26100002 */  addiu     $s0, $s0, 0x2
/* B6F38 80120838 24020001 */  addiu     $v0, $zero, 0x1
/* B6F3C 8012083C 94A300F4 */  lhu       $v1, 0xF4($a1)
/* B6F40 80120840 00042027 */  nor       $a0, $zero, $a0
/* B6F44 80120844 00641824 */  and       $v1, $v1, $a0
.L80120848:
/* B6F48 80120848 A4A300F4 */  sh        $v1, 0xF4($a1)
/* B6F4C 8012084C 080482E0 */  j         .L80120B80
/* B6F50 80120850 AE300008 */   sw       $s0, 0x8($s1)
glabel .L80120854
/* B6F54 80120854 24020001 */  addiu     $v0, $zero, 0x1
/* B6F58 80120858 8E230000 */  lw        $v1, 0x0($s1)
/* B6F5C 8012085C 3C040002 */  lui       $a0, (0x20000 >> 16)
/* B6F60 80120860 AE300008 */  sw        $s0, 0x8($s1)
.L80120864:
/* B6F64 80120864 00641825 */  or        $v1, $v1, $a0
/* B6F68 80120868 080482E0 */  j         .L80120B80
/* B6F6C 8012086C AE230000 */   sw       $v1, 0x0($s1)
glabel .L80120870
/* B6F70 80120870 86030000 */  lh        $v1, 0x0($s0)
/* B6F74 80120874 26100002 */  addiu     $s0, $s0, 0x2
/* B6F78 80120878 86020000 */  lh        $v0, 0x0($s0)
/* B6F7C 8012087C 3C018015 */  lui       $at, %hi(D_80150080)
/* B6F80 80120880 D4260080 */  ldc1      $f6, %lo(D_80150080)($at)
/* B6F84 80120884 44822000 */  mtc1      $v0, $f4
/* B6F88 80120888 00000000 */  nop
/* B6F8C 8012088C 46802120 */  cvt.s.w   $f4, $f4
/* B6F90 80120890 46002121 */  cvt.d.s   $f4, $f4
/* B6F94 80120894 46262102 */  mul.d     $f4, $f4, $f6
/* B6F98 80120898 00000000 */  nop
/* B6F9C 8012089C 26100002 */  addiu     $s0, $s0, 0x2
/* B6FA0 801208A0 86020000 */  lh        $v0, 0x0($s0)
/* B6FA4 801208A4 44821000 */  mtc1      $v0, $f2
/* B6FA8 801208A8 00000000 */  nop
/* B6FAC 801208AC 468010A0 */  cvt.s.w   $f2, $f2
/* B6FB0 801208B0 460010A1 */  cvt.d.s   $f2, $f2
/* B6FB4 801208B4 46261082 */  mul.d     $f2, $f2, $f6
/* B6FB8 801208B8 00000000 */  nop
/* B6FBC 801208BC 26100002 */  addiu     $s0, $s0, 0x2
/* B6FC0 801208C0 00711821 */  addu      $v1, $v1, $s1
/* B6FC4 801208C4 90630014 */  lbu       $v1, 0x14($v1)
/* B6FC8 801208C8 86020000 */  lh        $v0, 0x0($s0)
/* B6FCC 801208CC 26100002 */  addiu     $s0, $s0, 0x2
/* B6FD0 801208D0 44820000 */  mtc1      $v0, $f0
/* B6FD4 801208D4 00000000 */  nop
/* B6FD8 801208D8 46800020 */  cvt.s.w   $f0, $f0
/* B6FDC 801208DC 46000021 */  cvt.d.s   $f0, $f0
/* B6FE0 801208E0 46260002 */  mul.d     $f0, $f0, $f6
/* B6FE4 801208E4 00000000 */  nop
/* B6FE8 801208E8 AE300008 */  sw        $s0, 0x8($s1)
/* B6FEC 801208EC 3C018015 */  lui       $at, %hi(D_80150088)
/* B6FF0 801208F0 D4260088 */  ldc1      $f6, %lo(D_80150088)($at)
/* B6FF4 801208F4 240200FF */  addiu     $v0, $zero, 0xFF
/* B6FF8 801208F8 46262103 */  div.d     $f4, $f4, $f6
/* B6FFC 801208FC 46202620 */  cvt.s.d   $f24, $f4
/* B7000 80120900 46261083 */  div.d     $f2, $f2, $f6
/* B7004 80120904 462015A0 */  cvt.s.d   $f22, $f2
/* B7008 80120908 46260003 */  div.d     $f0, $f0, $f6
/* B700C 8012090C 1062FF98 */  beq       $v1, $v0, .L80120770
/* B7010 80120910 46200520 */   cvt.s.d  $f20, $f0
/* B7014 80120914 8E240010 */  lw        $a0, 0x10($s1)
/* B7018 80120918 0C047837 */  jal       get_animator_child_with_id
/* B701C 8012091C 0060282D */   daddu    $a1, $v1, $zero
/* B7020 80120920 0040282D */  daddu     $a1, $v0, $zero
/* B7024 80120924 10A00091 */  beqz      $a1, .L80120B6C
/* B7028 80120928 24020001 */   addiu    $v0, $zero, 0x1
/* B702C 8012092C E4B8009C */  swc1      $f24, 0x9C($a1)
/* B7030 80120930 E4B600A0 */  swc1      $f22, 0xA0($a1)
/* B7034 80120934 080482E0 */  j         .L80120B80
/* B7038 80120938 E4B400A4 */   swc1     $f20, 0xA4($a1)
glabel .L8012093C
/* B703C 8012093C 86030000 */  lh        $v1, 0x0($s0)
/* B7040 80120940 26100002 */  addiu     $s0, $s0, 0x2
/* B7044 80120944 86020000 */  lh        $v0, 0x0($s0)
/* B7048 80120948 3C018015 */  lui       $at, %hi(D_80150090)
/* B704C 8012094C D4260090 */  ldc1      $f6, %lo(D_80150090)($at)
/* B7050 80120950 44822000 */  mtc1      $v0, $f4
/* B7054 80120954 00000000 */  nop
/* B7058 80120958 46802120 */  cvt.s.w   $f4, $f4
/* B705C 8012095C 46002121 */  cvt.d.s   $f4, $f4
/* B7060 80120960 46262102 */  mul.d     $f4, $f4, $f6
/* B7064 80120964 00000000 */  nop
/* B7068 80120968 26100002 */  addiu     $s0, $s0, 0x2
/* B706C 8012096C 86020000 */  lh        $v0, 0x0($s0)
/* B7070 80120970 44821000 */  mtc1      $v0, $f2
/* B7074 80120974 00000000 */  nop
/* B7078 80120978 468010A0 */  cvt.s.w   $f2, $f2
/* B707C 8012097C 460010A1 */  cvt.d.s   $f2, $f2
/* B7080 80120980 46261082 */  mul.d     $f2, $f2, $f6
/* B7084 80120984 00000000 */  nop
/* B7088 80120988 26100002 */  addiu     $s0, $s0, 0x2
/* B708C 8012098C 00711821 */  addu      $v1, $v1, $s1
/* B7090 80120990 90630014 */  lbu       $v1, 0x14($v1)
/* B7094 80120994 86020000 */  lh        $v0, 0x0($s0)
/* B7098 80120998 26100002 */  addiu     $s0, $s0, 0x2
/* B709C 8012099C 44820000 */  mtc1      $v0, $f0
/* B70A0 801209A0 00000000 */  nop
/* B70A4 801209A4 46800020 */  cvt.s.w   $f0, $f0
/* B70A8 801209A8 46000021 */  cvt.d.s   $f0, $f0
/* B70AC 801209AC 46260002 */  mul.d     $f0, $f0, $f6
/* B70B0 801209B0 00000000 */  nop
/* B70B4 801209B4 AE300008 */  sw        $s0, 0x8($s1)
/* B70B8 801209B8 3C018015 */  lui       $at, %hi(D_80150098)
/* B70BC 801209BC D4260098 */  ldc1      $f6, %lo(D_80150098)($at)
/* B70C0 801209C0 240200FF */  addiu     $v0, $zero, 0xFF
/* B70C4 801209C4 46262103 */  div.d     $f4, $f4, $f6
/* B70C8 801209C8 46202620 */  cvt.s.d   $f24, $f4
/* B70CC 801209CC 46261083 */  div.d     $f2, $f2, $f6
/* B70D0 801209D0 462015A0 */  cvt.s.d   $f22, $f2
/* B70D4 801209D4 46260003 */  div.d     $f0, $f0, $f6
/* B70D8 801209D8 1062FF65 */  beq       $v1, $v0, .L80120770
/* B70DC 801209DC 46200520 */   cvt.s.d  $f20, $f0
/* B70E0 801209E0 8E240010 */  lw        $a0, 0x10($s1)
/* B70E4 801209E4 0C047837 */  jal       get_animator_child_with_id
/* B70E8 801209E8 0060282D */   daddu    $a1, $v1, $zero
/* B70EC 801209EC 0040282D */  daddu     $a1, $v0, $zero
/* B70F0 801209F0 10A0005E */  beqz      $a1, .L80120B6C
/* B70F4 801209F4 24020001 */   addiu    $v0, $zero, 0x1
/* B70F8 801209F8 C4A4009C */  lwc1      $f4, 0x9C($a1)
/* B70FC 801209FC 46182100 */  add.s     $f4, $f4, $f24
/* B7100 80120A00 C4A200A0 */  lwc1      $f2, 0xA0($a1)
/* B7104 80120A04 46161080 */  add.s     $f2, $f2, $f22
/* B7108 80120A08 C4A000A4 */  lwc1      $f0, 0xA4($a1)
/* B710C 80120A0C 46140000 */  add.s     $f0, $f0, $f20
/* B7110 80120A10 E4A4009C */  swc1      $f4, 0x9C($a1)
/* B7114 80120A14 E4A200A0 */  swc1      $f2, 0xA0($a1)
/* B7118 80120A18 080482E0 */  j         .L80120B80
/* B711C 80120A1C E4A000A4 */   swc1     $f0, 0xA4($a1)
glabel .L80120A20
/* B7120 80120A20 86020000 */  lh        $v0, 0x0($s0)
/* B7124 80120A24 26100002 */  addiu     $s0, $s0, 0x2
/* B7128 80120A28 86040000 */  lh        $a0, 0x0($s0)
/* B712C 80120A2C 26100002 */  addiu     $s0, $s0, 0x2
/* B7130 80120A30 86030000 */  lh        $v1, 0x0($s0)
/* B7134 80120A34 26100002 */  addiu     $s0, $s0, 0x2
/* B7138 80120A38 86050000 */  lh        $a1, 0x0($s0)
/* B713C 80120A3C 26100002 */  addiu     $s0, $s0, 0x2
/* B7140 80120A40 4484C000 */  mtc1      $a0, $f24
/* B7144 80120A44 00000000 */  nop
/* B7148 80120A48 4680C620 */  cvt.s.w   $f24, $f24
/* B714C 80120A4C 4483B000 */  mtc1      $v1, $f22
/* B7150 80120A50 00000000 */  nop
/* B7154 80120A54 4680B5A0 */  cvt.s.w   $f22, $f22
/* B7158 80120A58 00511021 */  addu      $v0, $v0, $s1
/* B715C 80120A5C 4485A000 */  mtc1      $a1, $f20
/* B7160 80120A60 00000000 */  nop
/* B7164 80120A64 4680A520 */  cvt.s.w   $f20, $f20
/* B7168 80120A68 90430014 */  lbu       $v1, 0x14($v0)
/* B716C 80120A6C 240200FF */  addiu     $v0, $zero, 0xFF
/* B7170 80120A70 1062FF3F */  beq       $v1, $v0, .L80120770
/* B7174 80120A74 AE300008 */   sw       $s0, 0x8($s1)
/* B7178 80120A78 8E240010 */  lw        $a0, 0x10($s1)
/* B717C 80120A7C 0C047837 */  jal       get_animator_child_with_id
/* B7180 80120A80 0060282D */   daddu    $a1, $v1, $zero
/* B7184 80120A84 0040282D */  daddu     $a1, $v0, $zero
/* B7188 80120A88 10A00038 */  beqz      $a1, .L80120B6C
/* B718C 80120A8C 24020001 */   addiu    $v0, $zero, 0x1
/* B7190 80120A90 E4B80090 */  swc1      $f24, 0x90($a1)
/* B7194 80120A94 E4B60094 */  swc1      $f22, 0x94($a1)
/* B7198 80120A98 080482E0 */  j         .L80120B80
/* B719C 80120A9C E4B40098 */   swc1     $f20, 0x98($a1)
glabel .L80120AA0
/* B71A0 80120AA0 86030000 */  lh        $v1, 0x0($s0)
/* B71A4 80120AA4 26100002 */  addiu     $s0, $s0, 0x2
/* B71A8 80120AA8 86020000 */  lh        $v0, 0x0($s0)
/* B71AC 80120AAC 3C018015 */  lui       $at, %hi(D_801500A0)
/* B71B0 80120AB0 D42600A0 */  ldc1      $f6, %lo(D_801500A0)($at)
/* B71B4 80120AB4 44822000 */  mtc1      $v0, $f4
/* B71B8 80120AB8 00000000 */  nop
/* B71BC 80120ABC 46802120 */  cvt.s.w   $f4, $f4
/* B71C0 80120AC0 46002121 */  cvt.d.s   $f4, $f4
/* B71C4 80120AC4 46262102 */  mul.d     $f4, $f4, $f6
/* B71C8 80120AC8 00000000 */  nop
/* B71CC 80120ACC 26100002 */  addiu     $s0, $s0, 0x2
/* B71D0 80120AD0 86020000 */  lh        $v0, 0x0($s0)
/* B71D4 80120AD4 44821000 */  mtc1      $v0, $f2
/* B71D8 80120AD8 00000000 */  nop
/* B71DC 80120ADC 468010A0 */  cvt.s.w   $f2, $f2
/* B71E0 80120AE0 460010A1 */  cvt.d.s   $f2, $f2
/* B71E4 80120AE4 46261082 */  mul.d     $f2, $f2, $f6
/* B71E8 80120AE8 00000000 */  nop
/* B71EC 80120AEC 26100002 */  addiu     $s0, $s0, 0x2
/* B71F0 80120AF0 00711821 */  addu      $v1, $v1, $s1
/* B71F4 80120AF4 90630014 */  lbu       $v1, 0x14($v1)
/* B71F8 80120AF8 86020000 */  lh        $v0, 0x0($s0)
/* B71FC 80120AFC 26100002 */  addiu     $s0, $s0, 0x2
/* B7200 80120B00 44820000 */  mtc1      $v0, $f0
/* B7204 80120B04 00000000 */  nop
/* B7208 80120B08 46800020 */  cvt.s.w   $f0, $f0
/* B720C 80120B0C 46000021 */  cvt.d.s   $f0, $f0
/* B7210 80120B10 46260002 */  mul.d     $f0, $f0, $f6
/* B7214 80120B14 00000000 */  nop
/* B7218 80120B18 AE300008 */  sw        $s0, 0x8($s1)
/* B721C 80120B1C 3C018015 */  lui       $at, %hi(D_801500A8)
/* B7220 80120B20 D42600A8 */  ldc1      $f6, %lo(D_801500A8)($at)
/* B7224 80120B24 240200FF */  addiu     $v0, $zero, 0xFF
/* B7228 80120B28 46262103 */  div.d     $f4, $f4, $f6
/* B722C 80120B2C 46202620 */  cvt.s.d   $f24, $f4
/* B7230 80120B30 46261083 */  div.d     $f2, $f2, $f6
/* B7234 80120B34 462015A0 */  cvt.s.d   $f22, $f2
/* B7238 80120B38 46260003 */  div.d     $f0, $f0, $f6
/* B723C 80120B3C 1062FF0C */  beq       $v1, $v0, .L80120770
/* B7240 80120B40 46200520 */   cvt.s.d  $f20, $f0
/* B7244 80120B44 8E240010 */  lw        $a0, 0x10($s1)
/* B7248 80120B48 0C047837 */  jal       get_animator_child_with_id
/* B724C 80120B4C 0060282D */   daddu    $a1, $v1, $zero
/* B7250 80120B50 0040282D */  daddu     $a1, $v0, $zero
/* B7254 80120B54 10A00005 */  beqz      $a1, .L80120B6C
/* B7258 80120B58 24020001 */   addiu    $v0, $zero, 0x1
/* B725C 80120B5C E4B800A8 */  swc1      $f24, 0xA8($a1)
/* B7260 80120B60 E4B600AC */  swc1      $f22, 0xAC($a1)
/* B7264 80120B64 080482E0 */  j         .L80120B80
/* B7268 80120B68 E4B400B0 */   swc1     $f20, 0xB0($a1)
.L80120B6C:
/* B726C 80120B6C 8E2202CC */  lw        $v0, 0x2CC($s1)
/* B7270 80120B70 AE320008 */  sw        $s2, 0x8($s1)
/* B7274 80120B74 24420001 */  addiu     $v0, $v0, 0x1
/* B7278 80120B78 AE2202CC */  sw        $v0, 0x2CC($s1)
glabel .L80120B7C
/* B727C 80120B7C 0000102D */  daddu     $v0, $zero, $zero
.L80120B80:
/* B7280 80120B80 8FBF001C */  lw        $ra, 0x1C($sp)
/* B7284 80120B84 8FB20018 */  lw        $s2, 0x18($sp)
/* B7288 80120B88 8FB10014 */  lw        $s1, 0x14($sp)
/* B728C 80120B8C 8FB00010 */  lw        $s0, 0x10($sp)
/* B7290 80120B90 D7B80030 */  ldc1      $f24, 0x30($sp)
/* B7294 80120B94 D7B60028 */  ldc1      $f22, 0x28($sp)
/* B7298 80120B98 D7B40020 */  ldc1      $f20, 0x20($sp)
/* B729C 80120B9C 03E00008 */  jr        $ra
/* B72A0 80120BA0 27BD0038 */   addiu    $sp, $sp, 0x38
/* B72A4 80120BA4 00000000 */  nop
/* B72A8 80120BA8 00000000 */  nop
/* B72AC 80120BAC 00000000 */  nop

### DECOMPILED C INSTRUCTIONS:

s32 step_mesh_animator(ModelAnimator* animator) {
    s16* args = animator->animReadPos;
    s16* oldPos = animator->animReadPos;
    AnimatorNode* node;
    f32 x, y, z;
    s32 flags;
    s32 nodeId;

    switch (*args++) {
        case AS_END:
            return -1;
        case AS_SET_RENDER_MODE:
            animator->renderMode = *args++;
            animator->animReadPos = args;
            return 1;
        case AS_WAIT:
            args++;
            animator->animReadPos = args;
            return 1;
        case AS_END_LOOP:
            animator->animReadPos = animator->savedReadPos;
            animator->treeIndexPos = animator->savedTreePos;
            reload_mesh_animator_tree(animator);
            return 1;
        case AS_OP_4:
            animator->animReadPos = animator->savedReadPos;
            animator->treeIndexPos = animator->savedTreePos;
            break;
        case AS_LOOP:
            animator->animReadPos = animator->savedReadPos = args;
            animator->savedTreePos = animator->treeIndexPos;
            return 1;
        case AS_SET_FLAGS:
            flags = *args++;
            animator->animReadPos = args;
            animator->flags |= flags & 0xFFFF;
            return 1;
        case AS_SET_NODE_FLAGS:
            node = get_animator_child_with_id(animator->rootNode, animator->staticNodeIDs[*args++ - 1]);
            flags = *args++;
            node->flags |= flags;
            animator->animReadPos = args;
            return 1;
        case AS_CLEAR_NODE_FLAGS:
            node = get_animator_child_with_id(animator->rootNode, animator->staticNodeIDs[*args++ - 1]);
            flags = *args++;
            node->flags &= ~flags;
            animator->animReadPos = args;
            return 1;
        case AS_OP_19:
            animator->flags |= MODEL_ANIMATOR_FLAG_NO_FLIP;
            animator->animReadPos = args;
            return 1;
        case AS_SET_ROTATION:
            nodeId = animator->staticNodeIDs[*args++ - 1];
            x = (f32)*args++ * 180.0 / 32767.0;
            y = (f32)*args++ * 180.0 / 32767.0;
            z = (f32)*args++ * 180.0 / 32767.0;
            animator->animReadPos = args;
            if (nodeId != 0xFF) {
                node = get_animator_child_with_id(animator->rootNode, nodeId);
                if (node != NULL) {
                    node->rotation.x = x;
                    node->rotation.y = y;
                    node->rotation.z = z;
                    return 1;
                } else {
                    animator->animReadPos = oldPos;
                    animator->treeIndexPos++;
                    break;
                }
            }
            return 1;
        case AS_ADD_ROTATION:
            nodeId = animator->staticNodeIDs[*args++ - 1];
            x = (f32)*args++ * 180.0 / 32767.0;
            y = (f32)*args++ * 180.0 / 32767.0;
            z = (f32)*args++ * 180.0 / 32767.0;
            animator->animReadPos = args;
            if (nodeId != 0xFF) {
                node = get_animator_child_with_id(animator->rootNode, nodeId);
                if (node != NULL) {
                    node->rotation.x += x;
                    node->rotation.y += y;
                    node->rotation.z += z;
                    return 1;
                } else {
                    animator->animReadPos = oldPos;
                    animator->treeIndexPos++;
                    break;
                }
            }
            return 1;
        case AS_SET_POS:
            nodeId = animator->staticNodeIDs[*args++ - 1];
            x = *args++;
            y = *args++;
            z = *args++;
            animator->animReadPos = args;
            if (nodeId != 0xFF) {
                node = get_animator_child_with_id(animator->rootNode, nodeId);
                if (node != NULL) {
                    node->pos.x = x;
                    node->pos.y = y;
                    node->pos.z = z;
                    return 1;
                } else {
                    animator->animReadPos = oldPos;
                    animator->treeIndexPos++;
                    break;
                }
            }
            return 1;
        case AS_SET_SCALE:
            nodeId = animator->staticNodeIDs[*args++ - 1];
            x = (f32)*args++ * 180.0 / 32767.0;
            y = (f32)*args++ * 180.0 / 32767.0;
            z = (f32)*args++ * 180.0 / 32767.0;
            animator->animReadPos = args;
            if (nodeId != 0xFF) {
                node = get_animator_child_with_id(animator->rootNode, nodeId);
                if (node != NULL) {
                    node->scale.x = x;
                    node->scale.y = y;
                    node->scale.z = z;
                    return 1;
                } else {
                    animator->animReadPos = oldPos;
                    animator->treeIndexPos++;
                    break;
                }
            }
            return 1;
    }
    return 0;
}


### RAW ASSEMBLY INSTRUCTIONS:

glabel entity_GiantChest_open
/* 108E64 802E75E4 27BDFFA0 */  addiu     $sp, $sp, -0x60
/* 108E68 802E75E8 AFB00028 */  sw        $s0, 0x28($sp)
/* 108E6C 802E75EC 0080802D */  daddu     $s0, $a0, $zero
/* 108E70 802E75F0 AFBF0034 */  sw        $ra, 0x34($sp)
/* 108E74 802E75F4 AFB20030 */  sw        $s2, 0x30($sp)
/* 108E78 802E75F8 AFB1002C */  sw        $s1, 0x2C($sp)
/* 108E7C 802E75FC F7BC0058 */  sdc1      $f28, 0x58($sp)
/* 108E80 802E7600 F7BA0050 */  sdc1      $f26, 0x50($sp)
/* 108E84 802E7604 F7B80048 */  sdc1      $f24, 0x48($sp)
/* 108E88 802E7608 F7B60040 */  sdc1      $f22, 0x40($sp)
/* 108E8C 802E760C F7B40038 */  sdc1      $f20, 0x38($sp)
/* 108E90 802E7610 8E110040 */  lw        $s1, 0x40($s0)
/* 108E94 802E7614 8E220010 */  lw        $v0, 0x10($s1)
/* 108E98 802E7618 3C128011 */  lui       $s2, %hi(gPlayerStatus)
/* 108E9C 802E761C 2652EFC8 */  addiu     $s2, $s2, %lo(gPlayerStatus)
/* 108EA0 802E7620 10400006 */  beqz      $v0, .L802E763C
/* 108EA4 802E7624 00000000 */   nop
/* 108EA8 802E7628 8E240014 */  lw        $a0, 0x14($s1)
/* 108EAC 802E762C 8E250018 */  lw        $a1, 0x18($s1)
/* 108EB0 802E7630 8E26001C */  lw        $a2, 0x1C($s1)
/* 108EB4 802E7634 0C04D083 */  jal       set_item_entity_position
/* 108EB8 802E7638 8E270020 */   lw       $a3, 0x20($s1)
.L802E763C:
/* 108EBC 802E763C 0C0B9C8C */  jal       entity_Chest_open
/* 108EC0 802E7640 0200202D */   daddu    $a0, $s0, $zero
/* 108EC4 802E7644 92230004 */  lbu       $v1, 0x4($s1)
/* 108EC8 802E7648 24020001 */  addiu     $v0, $zero, 0x1
/* 108ECC 802E764C 1062001E */  beq       $v1, $v0, .L802E76C8
/* 108ED0 802E7650 28620002 */   slti     $v0, $v1, 0x2
/* 108ED4 802E7654 50400005 */  beql      $v0, $zero, .L802E766C
/* 108ED8 802E7658 24020002 */   addiu    $v0, $zero, 0x2
/* 108EDC 802E765C 10600009 */  beqz      $v1, .L802E7684
/* 108EE0 802E7660 00000000 */   nop
/* 108EE4 802E7664 080B9EAE */  j         .L802E7AB8
/* 108EE8 802E7668 00000000 */   nop
.L802E766C:
/* 108EEC 802E766C 1062002C */  beq       $v1, $v0, .L802E7720
/* 108EF0 802E7670 24020003 */   addiu    $v0, $zero, 0x3
/* 108EF4 802E7674 10620107 */  beq       $v1, $v0, .L802E7A94
/* 108EF8 802E7678 00000000 */   nop
/* 108EFC 802E767C 080B9EAE */  j         .L802E7AB8
/* 108F00 802E7680 00000000 */   nop
.L802E7684:
/* 108F04 802E7684 96220002 */  lhu       $v0, 0x2($s1)
/* 108F08 802E7688 2442FFFF */  addiu     $v0, $v0, -0x1
/* 108F0C 802E768C A6220002 */  sh        $v0, 0x2($s1)
/* 108F10 802E7690 00021400 */  sll       $v0, $v0, 16
/* 108F14 802E7694 14400108 */  bnez      $v0, .L802E7AB8
/* 108F18 802E7698 00000000 */   nop
/* 108F1C 802E769C 92220004 */  lbu       $v0, 0x4($s1)
/* 108F20 802E76A0 3C0141A0 */  lui       $at, (0x41A00000 >> 16)
/* 108F24 802E76A4 44810000 */  mtc1      $at, $f0
/* 108F28 802E76A8 3C014100 */  lui       $at, (0x41000000 >> 16)
/* 108F2C 802E76AC 44811000 */  mtc1      $at, $f2
/* 108F30 802E76B0 AE200024 */  sw        $zero, 0x24($s1)
/* 108F34 802E76B4 24420001 */  addiu     $v0, $v0, 0x1
/* 108F38 802E76B8 A2220004 */  sb        $v0, 0x4($s1)
/* 108F3C 802E76BC E6200028 */  swc1      $f0, 0x28($s1)
/* 108F40 802E76C0 080B9EAE */  j         .L802E7AB8
/* 108F44 802E76C4 E622002C */   swc1     $f2, 0x2C($s1)
.L802E76C8:
/* 108F48 802E76C8 C620002C */  lwc1      $f0, 0x2C($s1)
/* 108F4C 802E76CC 3C01802F */  lui       $at, %hi(D_802EB320)
/* 108F50 802E76D0 D422B320 */  ldc1      $f2, %lo(D_802EB320)($at)
/* 108F54 802E76D4 C624001C */  lwc1      $f4, 0x1C($s1)
/* 108F58 802E76D8 46000021 */  cvt.d.s   $f0, $f0
/* 108F5C 802E76DC 46220001 */  sub.d     $f0, $f0, $f2
/* 108F60 802E76E0 C622002C */  lwc1      $f2, 0x2C($s1)
/* 108F64 802E76E4 46022100 */  add.s     $f4, $f4, $f2
/* 108F68 802E76E8 3C014000 */  lui       $at, (0x40000000 >> 16)
/* 108F6C 802E76EC 44811000 */  mtc1      $at, $f2
/* 108F70 802E76F0 46200020 */  cvt.s.d   $f0, $f0
/* 108F74 802E76F4 4602003E */  c.le.s    $f0, $f2
/* 108F78 802E76F8 E620002C */  swc1      $f0, 0x2C($s1)
/* 108F7C 802E76FC 450000EE */  bc1f      .L802E7AB8
/* 108F80 802E7700 E624001C */   swc1     $f4, 0x1C($s1)
/* 108F84 802E7704 92220004 */  lbu       $v0, 0x4($s1)
/* 108F88 802E7708 3C0140C0 */  lui       $at, (0x40C00000 >> 16)
/* 108F8C 802E770C 44810000 */  mtc1      $at, $f0
/* 108F90 802E7710 24420001 */  addiu     $v0, $v0, 0x1
/* 108F94 802E7714 E620002C */  swc1      $f0, 0x2C($s1)
/* 108F98 802E7718 080B9EAE */  j         .L802E7AB8
/* 108F9C 802E771C A2220004 */   sb       $v0, 0x4($s1)
.L802E7720:
/* 108FA0 802E7720 C6220028 */  lwc1      $f2, 0x28($s1)
/* 108FA4 802E7724 3C01430C */  lui       $at, (0x430C0000 >> 16)
/* 108FA8 802E7728 44810000 */  mtc1      $at, $f0
/* 108FAC 802E772C 00000000 */  nop
/* 108FB0 802E7730 4600103C */  c.lt.s    $f2, $f0
/* 108FB4 802E7734 00000000 */  nop
/* 108FB8 802E7738 45000014 */  bc1f      .L802E778C
/* 108FBC 802E773C 00000000 */   nop
/* 108FC0 802E7740 3C0140C9 */  lui       $at, (0x40C90FD0 >> 16)
/* 108FC4 802E7744 34210FD0 */  ori       $at, $at, (0x40C90FD0 & 0xFFFF)
/* 108FC8 802E7748 44816000 */  mtc1      $at, $f12
/* 108FCC 802E774C 00000000 */  nop
/* 108FD0 802E7750 460C1302 */  mul.s     $f12, $f2, $f12
/* 108FD4 802E7754 00000000 */  nop
/* 108FD8 802E7758 3C0143B4 */  lui       $at, (0x43B40000 >> 16)
/* 108FDC 802E775C 44810000 */  mtc1      $at, $f0
/* 108FE0 802E7760 0C00A874 */  jal       cos_rad
/* 108FE4 802E7764 46006303 */   div.s    $f12, $f12, $f0
/* 108FE8 802E7768 3C014040 */  lui       $at, (0x40400000 >> 16)
/* 108FEC 802E776C 44811000 */  mtc1      $at, $f2
/* 108FF0 802E7770 00000000 */  nop
/* 108FF4 802E7774 46020002 */  mul.s     $f0, $f0, $f2
/* 108FF8 802E7778 00000000 */  nop
/* 108FFC 802E777C C622001C */  lwc1      $f2, 0x1C($s1)
/* 109000 802E7780 46001080 */  add.s     $f2, $f2, $f0
/* 109004 802E7784 080B9DFC */  j         .L802E77F0
/* 109008 802E7788 E622001C */   swc1     $f2, 0x1C($s1)
.L802E778C:
/* 10900C 802E778C C626001C */  lwc1      $f6, 0x1C($s1)
/* 109010 802E7790 C640002C */  lwc1      $f0, 0x2C($s2)
/* 109014 802E7794 46003001 */  sub.s     $f0, $f6, $f0
/* 109018 802E7798 3C0141F0 */  lui       $at, (0x41F00000 >> 16)
/* 10901C 802E779C 44811000 */  mtc1      $at, $f2
/* 109020 802E77A0 00000000 */  nop
/* 109024 802E77A4 46020001 */  sub.s     $f0, $f0, $f2
/* 109028 802E77A8 3C013E80 */  lui       $at, (0x3E800000 >> 16)
/* 10902C 802E77AC 44811000 */  mtc1      $at, $f2
/* 109030 802E77B0 00000000 */  nop
/* 109034 802E77B4 46020102 */  mul.s     $f4, $f0, $f2
/* 109038 802E77B8 00000000 */  nop
/* 10903C 802E77BC 3C01802F */  lui       $at, %hi(D_802EB328)
/* 109040 802E77C0 D422B328 */  ldc1      $f2, %lo(D_802EB328)($at)
/* 109044 802E77C4 46002021 */  cvt.d.s   $f0, $f4
/* 109048 802E77C8 4622003E */  c.le.d    $f0, $f2
/* 10904C 802E77CC 00000000 */  nop
/* 109050 802E77D0 45020006 */  bc1fl     .L802E77EC
/* 109054 802E77D4 46043001 */   sub.s    $f0, $f6, $f4
/* 109058 802E77D8 3C013ECC */  lui       $at, (0x3ECCCCCD >> 16)
/* 10905C 802E77DC 3421CCCD */  ori       $at, $at, (0x3ECCCCCD & 0xFFFF)
/* 109060 802E77E0 44812000 */  mtc1      $at, $f4
/* 109064 802E77E4 00000000 */  nop
/* 109068 802E77E8 46043001 */  sub.s     $f0, $f6, $f4
.L802E77EC:
/* 10906C 802E77EC E620001C */  swc1      $f0, 0x1C($s1)
.L802E77F0:
/* 109070 802E77F0 C62C0024 */  lwc1      $f12, 0x24($s1)
/* 109074 802E77F4 3C0140C9 */  lui       $at, (0x40C90FD0 >> 16)
/* 109078 802E77F8 34210FD0 */  ori       $at, $at, (0x40C90FD0 & 0xFFFF)
/* 10907C 802E77FC 4481D000 */  mtc1      $at, $f26
/* 109080 802E7800 00000000 */  nop
/* 109084 802E7804 461A6302 */  mul.s     $f12, $f12, $f26
/* 109088 802E7808 00000000 */  nop
/* 10908C 802E780C 3C0143B4 */  lui       $at, (0x43B40000 >> 16)
/* 109090 802E7810 4481E000 */  mtc1      $at, $f28
/* 109094 802E7814 0C00A85B */  jal       sin_rad
/* 109098 802E7818 461C6303 */   div.s    $f12, $f12, $f28
/* 10909C 802E781C C60C0048 */  lwc1      $f12, 0x48($s0)
/* 1090A0 802E7820 8E460028 */  lw        $a2, 0x28($s2)
/* 1090A4 802E7824 8E470030 */  lw        $a3, 0x30($s2)
/* 1090A8 802E7828 C60E0050 */  lwc1      $f14, 0x50($s0)
/* 1090AC 802E782C 0C00A720 */  jal       atan2
/* 1090B0 802E7830 46000606 */   mov.s    $f24, $f0
/* 1090B4 802E7834 0C00A6C9 */  jal       clamp_angle
/* 1090B8 802E7838 46000306 */   mov.s    $f12, $f0
/* 1090BC 802E783C 3C028007 */  lui       $v0, %hi(gGameStatusPtr)
/* 1090C0 802E7840 8C42419C */  lw        $v0, %lo(gGameStatusPtr)($v0)
/* 1090C4 802E7844 3C014080 */  lui       $at, (0x40800000 >> 16)
/* 1090C8 802E7848 4481B000 */  mtc1      $at, $f22
/* 1090CC 802E784C 84430086 */  lh        $v1, 0x86($v0)
/* 1090D0 802E7850 24020012 */  addiu     $v0, $zero, 0x12
/* 1090D4 802E7854 14620003 */  bne       $v1, $v0, .L802E7864
/* 1090D8 802E7858 00000000 */   nop
/* 1090DC 802E785C 3C014040 */  lui       $at, (0x40400000 >> 16)
/* 1090E0 802E7860 4481B000 */  mtc1      $at, $f22
.L802E7864:
/* 1090E4 802E7864 461A0502 */  mul.s     $f20, $f0, $f26
/* 1090E8 802E7868 00000000 */  nop
/* 1090EC 802E786C 461CA503 */  div.s     $f20, $f20, $f28
/* 1090F0 802E7870 0C00A85B */  jal       sin_rad
/* 1090F4 802E7874 4600A306 */   mov.s    $f12, $f20
/* 1090F8 802E7878 4600B002 */  mul.s     $f0, $f22, $f0
/* 1090FC 802E787C 00000000 */  nop
/* 109100 802E7880 46180002 */  mul.s     $f0, $f0, $f24
/* 109104 802E7884 00000000 */  nop
/* 109108 802E7888 C6220018 */  lwc1      $f2, 0x18($s1)
/* 10910C 802E788C 46001080 */  add.s     $f2, $f2, $f0
/* 109110 802E7890 4600A306 */  mov.s     $f12, $f20
/* 109114 802E7894 0C00A874 */  jal       cos_rad
/* 109118 802E7898 E6220018 */   swc1     $f2, 0x18($s1)
/* 10911C 802E789C 4600B002 */  mul.s     $f0, $f22, $f0
/* 109120 802E78A0 00000000 */  nop
/* 109124 802E78A4 46180002 */  mul.s     $f0, $f0, $f24
/* 109128 802E78A8 00000000 */  nop
/* 10912C 802E78AC C6240024 */  lwc1      $f4, 0x24($s1)
/* 109130 802E78B0 3C014100 */  lui       $at, (0x41000000 >> 16)
/* 109134 802E78B4 44811000 */  mtc1      $at, $f2
/* 109138 802E78B8 00000000 */  nop
/* 10913C 802E78BC 46022100 */  add.s     $f4, $f4, $f2
/* 109140 802E78C0 C6220020 */  lwc1      $f2, 0x20($s1)
/* 109144 802E78C4 3C014334 */  lui       $at, (0x43340000 >> 16)
/* 109148 802E78C8 4481A000 */  mtc1      $at, $f20
/* 10914C 802E78CC 46001081 */  sub.s     $f2, $f2, $f0
/* 109150 802E78D0 E6240024 */  swc1      $f4, 0x24($s1)
/* 109154 802E78D4 4604A03E */  c.le.s    $f20, $f4
/* 109158 802E78D8 00000000 */  nop
/* 10915C 802E78DC 45000002 */  bc1f      .L802E78E8
/* 109160 802E78E0 E6220020 */   swc1     $f2, 0x20($s1)
/* 109164 802E78E4 E6340024 */  swc1      $f20, 0x24($s1)
.L802E78E8:
/* 109168 802E78E8 C6200028 */  lwc1      $f0, 0x28($s1)
/* 10916C 802E78EC 3C014150 */  lui       $at, (0x41500000 >> 16)
/* 109170 802E78F0 44811000 */  mtc1      $at, $f2
/* 109174 802E78F4 00000000 */  nop
/* 109178 802E78F8 46020000 */  add.s     $f0, $f0, $f2
/* 10917C 802E78FC 4600A03E */  c.le.s    $f20, $f0
/* 109180 802E7900 00000000 */  nop
/* 109184 802E7904 4500006C */  bc1f      .L802E7AB8
/* 109188 802E7908 E6200028 */   swc1     $f0, 0x28($s1)
/* 10918C 802E790C 24020007 */  addiu     $v0, $zero, 0x7
/* 109190 802E7910 A6220002 */  sh        $v0, 0x2($s1)
/* 109194 802E7914 92220004 */  lbu       $v0, 0x4($s1)
/* 109198 802E7918 8E230010 */  lw        $v1, 0x10($s1)
/* 10919C 802E791C E6340028 */  swc1      $f20, 0x28($s1)
/* 1091A0 802E7920 24420001 */  addiu     $v0, $v0, 0x1
/* 1091A4 802E7924 10600064 */  beqz      $v1, .L802E7AB8
/* 1091A8 802E7928 A2220004 */   sb       $v0, 0x4($s1)
/* 1091AC 802E792C 3C040006 */  lui       $a0, (0x6000C >> 16)
/* 1091B0 802E7930 0C037FDE */  jal       suggest_player_anim_always_forward
/* 1091B4 802E7934 3484000C */   ori      $a0, $a0, (0x6000C & 0xFFFF)
/* 1091B8 802E7938 3C10800B */  lui       $s0, %hi(gCameras)
/* 1091BC 802E793C 26101D80 */  addiu     $s0, $s0, %lo(gCameras)
/* 1091C0 802E7940 C600006C */  lwc1      $f0, 0x6C($s0)
/* 1091C4 802E7944 3C0142B4 */  lui       $at, (0x42B40000 >> 16)
/* 1091C8 802E7948 44816000 */  mtc1      $at, $f12
/* 1091CC 802E794C 00000000 */  nop
/* 1091D0 802E7950 46006301 */  sub.s     $f12, $f12, $f0
/* 1091D4 802E7954 461A6302 */  mul.s     $f12, $f12, $f26
/* 1091D8 802E7958 00000000 */  nop
/* 1091DC 802E795C 27A50018 */  addiu     $a1, $sp, 0x18
/* 1091E0 802E7960 27A6001C */  addiu     $a2, $sp, 0x1C
/* 1091E4 802E7964 0C00A82D */  jal       sin_cos_rad
/* 1091E8 802E7968 461C6303 */   div.s    $f12, $f12, $f28
/* 1091EC 802E796C C60C006C */  lwc1      $f12, 0x6C($s0)
/* 1091F0 802E7970 460CA301 */  sub.s     $f12, $f20, $f12
/* 1091F4 802E7974 461A6302 */  mul.s     $f12, $f12, $f26
/* 1091F8 802E7978 00000000 */  nop
/* 1091FC 802E797C 27A50020 */  addiu     $a1, $sp, 0x20
/* 109200 802E7980 27A60024 */  addiu     $a2, $sp, 0x24
/* 109204 802E7984 0C00A82D */  jal       sin_cos_rad
/* 109208 802E7988 461C6303 */   div.s    $f12, $f12, $f28
/* 10920C 802E798C 4480B000 */  mtc1      $zero, $f22
/* 109210 802E7990 C7A60018 */  lwc1      $f6, 0x18($sp)
/* 109214 802E7994 46163182 */  mul.s     $f6, $f6, $f22
/* 109218 802E7998 00000000 */  nop
/* 10921C 802E799C 3C014080 */  lui       $at, (0x40800000 >> 16)
/* 109220 802E79A0 4481A000 */  mtc1      $at, $f20
/* 109224 802E79A4 C7A20020 */  lwc1      $f2, 0x20($sp)
/* 109228 802E79A8 46141082 */  mul.s     $f2, $f2, $f20
/* 10922C 802E79AC 00000000 */  nop
/* 109230 802E79B0 C620001C */  lwc1      $f0, 0x1C($s1)
/* 109234 802E79B4 3C014140 */  lui       $at, (0x41400000 >> 16)
/* 109238 802E79B8 4481C000 */  mtc1      $at, $f24
/* 10923C 802E79BC 00000000 */  nop
/* 109240 802E79C0 46180000 */  add.s     $f0, $f0, $f24
/* 109244 802E79C4 C7A4001C */  lwc1      $f4, 0x1C($sp)
/* 109248 802E79C8 46162102 */  mul.s     $f4, $f4, $f22
/* 10924C 802E79CC 00000000 */  nop
/* 109250 802E79D0 44060000 */  mfc1      $a2, $f0
/* 109254 802E79D4 C6200018 */  lwc1      $f0, 0x18($s1)
/* 109258 802E79D8 46060000 */  add.s     $f0, $f0, $f6
/* 10925C 802E79DC 46020001 */  sub.s     $f0, $f0, $f2
/* 109260 802E79E0 C7A80024 */  lwc1      $f8, 0x24($sp)
/* 109264 802E79E4 46144202 */  mul.s     $f8, $f8, $f20
/* 109268 802E79E8 00000000 */  nop
/* 10926C 802E79EC 44050000 */  mfc1      $a1, $f0
/* 109270 802E79F0 C6200020 */  lwc1      $f0, 0x20($s1)
/* 109274 802E79F4 46040001 */  sub.s     $f0, $f0, $f4
/* 109278 802E79F8 46080000 */  add.s     $f0, $f0, $f8
/* 10927C 802E79FC 0000202D */  daddu     $a0, $zero, $zero
/* 109280 802E7A00 3C013F80 */  lui       $at, (0x3F800000 >> 16)
/* 109284 802E7A04 4481D000 */  mtc1      $at, $f26
/* 109288 802E7A08 44070000 */  mfc1      $a3, $f0
/* 10928C 802E7A0C 24020064 */  addiu     $v0, $zero, 0x64
/* 109290 802E7A10 E7BA0010 */  swc1      $f26, 0x10($sp)
/* 109294 802E7A14 0C01C2EC */  jal       fx_radial_shimmer
/* 109298 802E7A18 AFA20014 */   sw       $v0, 0x14($sp)
/* 10929C 802E7A1C C7A60018 */  lwc1      $f6, 0x18($sp)
/* 1092A0 802E7A20 46163182 */  mul.s     $f6, $f6, $f22
/* 1092A4 802E7A24 00000000 */  nop
/* 1092A8 802E7A28 C7A20020 */  lwc1      $f2, 0x20($sp)
/* 1092AC 802E7A2C 46141082 */  mul.s     $f2, $f2, $f20
/* 1092B0 802E7A30 00000000 */  nop
/* 1092B4 802E7A34 C620001C */  lwc1      $f0, 0x1C($s1)
/* 1092B8 802E7A38 46180000 */  add.s     $f0, $f0, $f24
/* 1092BC 802E7A3C C7A4001C */  lwc1      $f4, 0x1C($sp)
/* 1092C0 802E7A40 46162102 */  mul.s     $f4, $f4, $f22
/* 1092C4 802E7A44 00000000 */  nop
/* 1092C8 802E7A48 44060000 */  mfc1      $a2, $f0
/* 1092CC 802E7A4C C6200018 */  lwc1      $f0, 0x18($s1)
/* 1092D0 802E7A50 46060000 */  add.s     $f0, $f0, $f6
/* 1092D4 802E7A54 46020001 */  sub.s     $f0, $f0, $f2
/* 1092D8 802E7A58 C7A80024 */  lwc1      $f8, 0x24($sp)
/* 1092DC 802E7A5C 46144202 */  mul.s     $f8, $f8, $f20
/* 1092E0 802E7A60 00000000 */  nop
/* 1092E4 802E7A64 44050000 */  mfc1      $a1, $f0
/* 1092E8 802E7A68 C6200020 */  lwc1      $f0, 0x20($s1)
/* 1092EC 802E7A6C 46040001 */  sub.s     $f0, $f0, $f4
/* 1092F0 802E7A70 46080000 */  add.s     $f0, $f0, $f8
/* 1092F4 802E7A74 0000202D */  daddu     $a0, $zero, $zero
/* 1092F8 802E7A78 44070000 */  mfc1      $a3, $f0
/* 1092FC 802E7A7C 26220034 */  addiu     $v0, $s1, 0x34
/* 109300 802E7A80 E7BA0010 */  swc1      $f26, 0x10($sp)
/* 109304 802E7A84 0C01C0AC */  jal       fx_got_item_outline
/* 109308 802E7A88 AFA20014 */   sw       $v0, 0x14($sp)
/* 10930C 802E7A8C 080B9EAE */  j         .L802E7AB8
/* 109310 802E7A90 00000000 */   nop
.L802E7A94:
/* 109314 802E7A94 96220002 */  lhu       $v0, 0x2($s1)
/* 109318 802E7A98 2442FFFF */  addiu     $v0, $v0, -0x1
/* 10931C 802E7A9C A6220002 */  sh        $v0, 0x2($s1)
/* 109320 802E7AA0 00021400 */  sll       $v0, $v0, 16
/* 109324 802E7AA4 14400004 */  bnez      $v0, .L802E7AB8
/* 109328 802E7AA8 00000000 */   nop
/* 10932C 802E7AAC 0C043F5A */  jal       exec_entity_commandlist
/* 109330 802E7AB0 0200202D */   daddu    $a0, $s0, $zero
/* 109334 802E7AB4 A2200004 */  sb        $zero, 0x4($s1)
.L802E7AB8:
/* 109338 802E7AB8 8FBF0034 */  lw        $ra, 0x34($sp)
/* 10933C 802E7ABC 8FB20030 */  lw        $s2, 0x30($sp)
/* 109340 802E7AC0 8FB1002C */  lw        $s1, 0x2C($sp)
/* 109344 802E7AC4 8FB00028 */  lw        $s0, 0x28($sp)
/* 109348 802E7AC8 D7BC0058 */  ldc1      $f28, 0x58($sp)
/* 10934C 802E7ACC D7BA0050 */  ldc1      $f26, 0x50($sp)
/* 109350 802E7AD0 D7B80048 */  ldc1      $f24, 0x48($sp)
/* 109354 802E7AD4 D7B60040 */  ldc1      $f22, 0x40($sp)
/* 109358 802E7AD8 D7B40038 */  ldc1      $f20, 0x38($sp)
/* 10935C 802E7ADC 03E00008 */  jr        $ra
/* 109360 802E7AE0 27BD0060 */   addiu    $sp, $sp, 0x60

### DECOMPILED C INSTRUCTIONS:

void entity_GiantChest_open(Entity* entity) {
    PlayerStatus* playerStatus = &gPlayerStatus;
    ChestData* chest = entity->dataBuf.chest;
    f32 cosFwd;
    f32 sinFwd;
    f32 cosRight;
    f32 sinRight;
    f32 theta;
    f32 giveItemLerpAlpha;
    f32 horizontalOffset;
    f32 dy;
    f32 depthOffset;
    f32 intermediateTheta;
    f32 radius;

    if (chest->itemID != 0) {
        set_item_entity_position(chest->itemEntityIndex, chest->itemEntityPos.x, chest->itemEntityPos.y, chest->itemEntityPos.z);
    }
    entity_Chest_open(entity);

    switch (chest->state) {
        case 0:
            chest->giveItemTimer--;
            if (chest->giveItemTimer == 0) {
                chest->giveItemRadiusInterpPhase = 0.0f;
                chest->state++;
                chest->giveItemHeightInterpPhase = 20.0f;
                chest->itemVelY = 8.0f;
            }
            break;
        case 1:
            chest->itemEntityPos.y += chest->itemVelY;
            chest->itemVelY -= 0.7;
            if (chest->itemVelY <= 2.0f) {
                chest->itemVelY = 6.0f;
                chest->state++;
            }
            break;
        case 2:
            if (chest->giveItemHeightInterpPhase < 140.0f) {
                chest->itemEntityPos.y += cos_rad(DEG_TO_RAD(chest->giveItemHeightInterpPhase)) * 3.0f;
            } else {
                dy = (chest->itemEntityPos.y - playerStatus->position.y - 30.0f) * 0.25f;
                if (dy <= 0.4) {
                    dy = 0.4f;
                }
                chest->itemEntityPos.y -= dy;
            }
            giveItemLerpAlpha = sin_rad(DEG_TO_RAD(chest->giveItemRadiusInterpPhase));
            theta = intermediateTheta = clamp_angle(atan2(entity->position.x, entity->position.z, playerStatus->position.x, playerStatus->position.z));

            if (gGameStatusPtr->areaID == AREA_KZN) {
                radius = 3.0f;
            } else {
                radius = 4.0f;
            }

            theta *= TAU;
            theta = theta / 360.0f;
            chest->itemEntityPos.x += (radius * sin_rad(theta) * giveItemLerpAlpha);
            chest->itemEntityPos.z -= (radius * cos_rad(theta) * giveItemLerpAlpha);
            chest->giveItemRadiusInterpPhase += 8.0f;
            if (chest->giveItemRadiusInterpPhase >= 180.0f) {
                chest->giveItemRadiusInterpPhase = 180.0f;
            }
            chest->giveItemHeightInterpPhase += 13.0f;
            if (chest->giveItemHeightInterpPhase >= 180.0f){
                chest->giveItemTimer = 7;
                chest->giveItemHeightInterpPhase = 180.0f;
                chest->state++;
                if (chest->itemID != 0) {
                    suggest_player_anim_always_forward(ANIM_MarioW1_Lift);
                    sin_cos_rad(DEG_TO_RAD(90.0f - gCameras[CAM_DEFAULT].currentYaw), &sinRight, &cosRight);
                    sin_cos_rad(DEG_TO_RAD(180.0f - gCameras[CAM_DEFAULT].currentYaw), &sinFwd, &cosFwd);
                    horizontalOffset = 0.0f;
                    depthOffset = 4.0f;
                    //RadialFlowOut
                    fx_radial_shimmer(0, chest->itemEntityPos.x + horizontalOffset * sinRight - depthOffset * sinFwd,
                              chest->itemEntityPos.y + 12.0f, chest->itemEntityPos.z - cosRight * horizontalOffset + cosFwd * depthOffset, 1.0f, 0x64);
                    //GotItemOutline
                    fx_got_item_outline(0, chest->itemEntityPos.x + horizontalOffset * sinRight - sinFwd * depthOffset,
                              chest->itemEntityPos.y + 12.0f, chest->itemEntityPos.z - cosRight * horizontalOffset + cosFwd * depthOffset, 1.0f, &chest->gotItemEffect);
                }
            }
            break;
        case 3:
            chest->giveItemTimer--;
            if (chest->giveItemTimer == 0) {
                exec_entity_commandlist(entity);
                chest->state = 0;
            }
            break;
    }
}