### RAW ASSEMBLY INSTRUCTIONS:

glabel entity_RedSwitch_animate_scale
/* 103028 802E17A8 27BDFFE0 */  addiu     $sp, $sp, -0x20
/* 10302C 802E17AC AFB10014 */  sw        $s1, 0x14($sp)
/* 103030 802E17B0 0080882D */  daddu     $s1, $a0, $zero
/* 103034 802E17B4 AFBF001C */  sw        $ra, 0x1C($sp)
/* 103038 802E17B8 AFB20018 */  sw        $s2, 0x18($sp)
/* 10303C 802E17BC AFB00010 */  sw        $s0, 0x10($sp)
/* 103040 802E17C0 8E300040 */  lw        $s0, 0x40($s1)
/* 103044 802E17C4 82030010 */  lb        $v1, 0x10($s0)
/* 103048 802E17C8 2C620006 */  sltiu     $v0, $v1, 0x6
/* 10304C 802E17CC 104000D3 */  beqz      $v0, .L802E1B1C
/* 103050 802E17D0 0000902D */   daddu    $s2, $zero, $zero
/* 103054 802E17D4 00031080 */  sll       $v0, $v1, 2
/* 103058 802E17D8 3C01802F */  lui       $at, %hi(jtbl_802EB010)
/* 10305C 802E17DC 00220821 */  addu      $at, $at, $v0
/* 103060 802E17E0 8C22B010 */  lw        $v0, %lo(jtbl_802EB010)($at)
/* 103064 802E17E4 00400008 */  jr        $v0
/* 103068 802E17E8 00000000 */   nop
glabel .L802E17EC
/* 10306C 802E17EC C602001C */  lwc1      $f2, 0x1C($s0)
/* 103070 802E17F0 3C01802F */  lui       $at, %hi(D_802EB028)
/* 103074 802E17F4 D420B028 */  ldc1      $f0, %lo(D_802EB028)($at)
/* 103078 802E17F8 460010A1 */  cvt.d.s   $f2, $f2
/* 10307C 802E17FC 46201082 */  mul.d     $f2, $f2, $f0
/* 103080 802E1800 00000000 */  nop
/* 103084 802E1804 C6000014 */  lwc1      $f0, 0x14($s0)
/* 103088 802E1808 462011A0 */  cvt.s.d   $f6, $f2
/* 10308C 802E180C 46060000 */  add.s     $f0, $f0, $f6
/* 103090 802E1810 C6220054 */  lwc1      $f2, 0x54($s1)
/* 103094 802E1814 46020001 */  sub.s     $f0, $f0, $f2
/* 103098 802E1818 3C013FD0 */  lui       $at, (0x3FD00000 >> 16)
/* 10309C 802E181C 44811800 */  mtc1      $at, $f3
/* 1030A0 802E1820 44801000 */  mtc1      $zero, $f2
/* 1030A4 802E1824 46000021 */  cvt.d.s   $f0, $f0
/* 1030A8 802E1828 46220002 */  mul.d     $f0, $f0, $f2
/* 1030AC 802E182C 00000000 */  nop
/* 1030B0 802E1830 3C01802F */  lui       $at, %hi(D_802EB030)
/* 1030B4 802E1834 D422B030 */  ldc1      $f2, %lo(D_802EB030)($at)
/* 1030B8 802E1838 46200120 */  cvt.s.d   $f4, $f0
/* 1030BC 802E183C 46002021 */  cvt.d.s   $f0, $f4
/* 1030C0 802E1840 4622003C */  c.lt.d    $f0, $f2
/* 1030C4 802E1844 00000000 */  nop
/* 1030C8 802E1848 45000004 */  bc1f      .L802E185C
/* 1030CC 802E184C 00000000 */   nop
/* 1030D0 802E1850 3C013C23 */  lui       $at, (0x3C23D70A >> 16)
/* 1030D4 802E1854 3421D70A */  ori       $at, $at, (0x3C23D70A & 0xFFFF)
/* 1030D8 802E1858 44812000 */  mtc1      $at, $f4
.L802E185C:
/* 1030DC 802E185C C6000004 */  lwc1      $f0, 0x4($s0)
/* 1030E0 802E1860 46040000 */  add.s     $f0, $f0, $f4
/* 1030E4 802E1864 E6000004 */  swc1      $f0, 0x4($s0)
/* 1030E8 802E1868 C6220054 */  lwc1      $f2, 0x54($s1)
/* 1030EC 802E186C 46001080 */  add.s     $f2, $f2, $f0
/* 1030F0 802E1870 E6220054 */  swc1      $f2, 0x54($s1)
/* 1030F4 802E1874 C6000014 */  lwc1      $f0, 0x14($s0)
/* 1030F8 802E1878 46060000 */  add.s     $f0, $f0, $f6
/* 1030FC 802E187C 4602003E */  c.le.s    $f0, $f2
/* 103100 802E1880 00000000 */  nop
/* 103104 802E1884 450000A5 */  bc1f      .L802E1B1C
/* 103108 802E1888 00000000 */   nop
/* 10310C 802E188C 080B86C1 */  j         .L802E1B04
/* 103110 802E1890 00000000 */   nop
glabel .L802E1894
/* 103114 802E1894 C602001C */  lwc1      $f2, 0x1C($s0)
/* 103118 802E1898 3C01802F */  lui       $at, %hi(D_802EB038)
/* 10311C 802E189C D420B038 */  ldc1      $f0, %lo(D_802EB038)($at)
/* 103120 802E18A0 460010A1 */  cvt.d.s   $f2, $f2
/* 103124 802E18A4 46201082 */  mul.d     $f2, $f2, $f0
/* 103128 802E18A8 00000000 */  nop
/* 10312C 802E18AC C6000014 */  lwc1      $f0, 0x14($s0)
/* 103130 802E18B0 462011A0 */  cvt.s.d   $f6, $f2
/* 103134 802E18B4 46060000 */  add.s     $f0, $f0, $f6
/* 103138 802E18B8 C6220054 */  lwc1      $f2, 0x54($s1)
/* 10313C 802E18BC 46020001 */  sub.s     $f0, $f0, $f2
/* 103140 802E18C0 3C014018 */  lui       $at, (0x40180000 >> 16)
/* 103144 802E18C4 44811800 */  mtc1      $at, $f3
/* 103148 802E18C8 44801000 */  mtc1      $zero, $f2
/* 10314C 802E18CC 46000021 */  cvt.d.s   $f0, $f0
/* 103150 802E18D0 46220003 */  div.d     $f0, $f0, $f2
/* 103154 802E18D4 46200120 */  cvt.s.d   $f4, $f0
/* 103158 802E18D8 3C01802F */  lui       $at, %hi(D_802EB040)
/* 10315C 802E18DC D422B040 */  ldc1      $f2, %lo(D_802EB040)($at)
/* 103160 802E18E0 46002021 */  cvt.d.s   $f0, $f4
/* 103164 802E18E4 4620103C */  c.lt.d    $f2, $f0
/* 103168 802E18E8 00000000 */  nop
/* 10316C 802E18EC 45000004 */  bc1f      .L802E1900
/* 103170 802E18F0 00000000 */   nop
/* 103174 802E18F4 3C01BC23 */  lui       $at, (0xBC23D70A >> 16)
/* 103178 802E18F8 3421D70A */  ori       $at, $at, (0xBC23D70A & 0xFFFF)
/* 10317C 802E18FC 44812000 */  mtc1      $at, $f4
.L802E1900:
/* 103180 802E1900 C6000004 */  lwc1      $f0, 0x4($s0)
/* 103184 802E1904 46040000 */  add.s     $f0, $f0, $f4
/* 103188 802E1908 E6000004 */  swc1      $f0, 0x4($s0)
/* 10318C 802E190C C6220054 */  lwc1      $f2, 0x54($s1)
/* 103190 802E1910 46001080 */  add.s     $f2, $f2, $f0
/* 103194 802E1914 E6220054 */  swc1      $f2, 0x54($s1)
/* 103198 802E1918 C6000014 */  lwc1      $f0, 0x14($s0)
/* 10319C 802E191C 46060000 */  add.s     $f0, $f0, $f6
/* 1031A0 802E1920 4600103E */  c.le.s    $f2, $f0
/* 1031A4 802E1924 00000000 */  nop
/* 1031A8 802E1928 4500007C */  bc1f      .L802E1B1C
/* 1031AC 802E192C 00000000 */   nop
/* 1031B0 802E1930 080B86C1 */  j         .L802E1B04
/* 1031B4 802E1934 00000000 */   nop
glabel .L802E1938
/* 1031B8 802E1938 C602001C */  lwc1      $f2, 0x1C($s0)
/* 1031BC 802E193C 3C01802F */  lui       $at, %hi(D_802EB048)
/* 1031C0 802E1940 D420B048 */  ldc1      $f0, %lo(D_802EB048)($at)
/* 1031C4 802E1944 460010A1 */  cvt.d.s   $f2, $f2
/* 1031C8 802E1948 46201082 */  mul.d     $f2, $f2, $f0
/* 1031CC 802E194C 00000000 */  nop
/* 1031D0 802E1950 C6000014 */  lwc1      $f0, 0x14($s0)
/* 1031D4 802E1954 462011A0 */  cvt.s.d   $f6, $f2
/* 1031D8 802E1958 46060000 */  add.s     $f0, $f0, $f6
/* 1031DC 802E195C C6220054 */  lwc1      $f2, 0x54($s1)
/* 1031E0 802E1960 46020001 */  sub.s     $f0, $f0, $f2
/* 1031E4 802E1964 3C013FD0 */  lui       $at, (0x3FD00000 >> 16)
/* 1031E8 802E1968 44811800 */  mtc1      $at, $f3
/* 1031EC 802E196C 44801000 */  mtc1      $zero, $f2
/* 1031F0 802E1970 46000021 */  cvt.d.s   $f0, $f0
/* 1031F4 802E1974 46220002 */  mul.d     $f0, $f0, $f2
/* 1031F8 802E1978 00000000 */  nop
/* 1031FC 802E197C 3C01802F */  lui       $at, %hi(D_802EB050)
/* 103200 802E1980 D422B050 */  ldc1      $f2, %lo(D_802EB050)($at)
/* 103204 802E1984 46200120 */  cvt.s.d   $f4, $f0
/* 103208 802E1988 46002021 */  cvt.d.s   $f0, $f4
/* 10320C 802E198C 4622003C */  c.lt.d    $f0, $f2
/* 103210 802E1990 00000000 */  nop
/* 103214 802E1994 45000004 */  bc1f      .L802E19A8
/* 103218 802E1998 00000000 */   nop
/* 10321C 802E199C 3C013C23 */  lui       $at, (0x3C23D70A >> 16)
/* 103220 802E19A0 3421D70A */  ori       $at, $at, (0x3C23D70A & 0xFFFF)
/* 103224 802E19A4 44812000 */  mtc1      $at, $f4
.L802E19A8:
/* 103228 802E19A8 C6000004 */  lwc1      $f0, 0x4($s0)
/* 10322C 802E19AC 46040000 */  add.s     $f0, $f0, $f4
/* 103230 802E19B0 E6000004 */  swc1      $f0, 0x4($s0)
/* 103234 802E19B4 C6220054 */  lwc1      $f2, 0x54($s1)
/* 103238 802E19B8 46001080 */  add.s     $f2, $f2, $f0
/* 10323C 802E19BC E6220054 */  swc1      $f2, 0x54($s1)
/* 103240 802E19C0 C6000014 */  lwc1      $f0, 0x14($s0)
/* 103244 802E19C4 46060000 */  add.s     $f0, $f0, $f6
/* 103248 802E19C8 4602003E */  c.le.s    $f0, $f2
/* 10324C 802E19CC 00000000 */  nop
/* 103250 802E19D0 45000052 */  bc1f      .L802E1B1C
/* 103254 802E19D4 00000000 */   nop
/* 103258 802E19D8 080B86C1 */  j         .L802E1B04
/* 10325C 802E19DC 00000000 */   nop
glabel .L802E19E0
/* 103260 802E19E0 C602001C */  lwc1      $f2, 0x1C($s0)
/* 103264 802E19E4 3C01802F */  lui       $at, %hi(D_802EB058)
/* 103268 802E19E8 D420B058 */  ldc1      $f0, %lo(D_802EB058)($at)
/* 10326C 802E19EC 460010A1 */  cvt.d.s   $f2, $f2
/* 103270 802E19F0 46201082 */  mul.d     $f2, $f2, $f0
/* 103274 802E19F4 00000000 */  nop
/* 103278 802E19F8 C6000014 */  lwc1      $f0, 0x14($s0)
/* 10327C 802E19FC 462011A0 */  cvt.s.d   $f6, $f2
/* 103280 802E1A00 46060000 */  add.s     $f0, $f0, $f6
/* 103284 802E1A04 C6220054 */  lwc1      $f2, 0x54($s1)
/* 103288 802E1A08 46020001 */  sub.s     $f0, $f0, $f2
/* 10328C 802E1A0C 3C014018 */  lui       $at, (0x40180000 >> 16)
/* 103290 802E1A10 44811800 */  mtc1      $at, $f3
/* 103294 802E1A14 44801000 */  mtc1      $zero, $f2
/* 103298 802E1A18 46000021 */  cvt.d.s   $f0, $f0
/* 10329C 802E1A1C 46220003 */  div.d     $f0, $f0, $f2
/* 1032A0 802E1A20 46200120 */  cvt.s.d   $f4, $f0
/* 1032A4 802E1A24 3C01802F */  lui       $at, %hi(D_802EB060)
/* 1032A8 802E1A28 D422B060 */  ldc1      $f2, %lo(D_802EB060)($at)
/* 1032AC 802E1A2C 46002021 */  cvt.d.s   $f0, $f4
/* 1032B0 802E1A30 4620103C */  c.lt.d    $f2, $f0
/* 1032B4 802E1A34 00000000 */  nop
/* 1032B8 802E1A38 45000004 */  bc1f      .L802E1A4C
/* 1032BC 802E1A3C 00000000 */   nop
/* 1032C0 802E1A40 3C01BC23 */  lui       $at, (0xBC23D70A >> 16)
/* 1032C4 802E1A44 3421D70A */  ori       $at, $at, (0xBC23D70A & 0xFFFF)
/* 1032C8 802E1A48 44812000 */  mtc1      $at, $f4
.L802E1A4C:
/* 1032CC 802E1A4C C6000004 */  lwc1      $f0, 0x4($s0)
/* 1032D0 802E1A50 46040000 */  add.s     $f0, $f0, $f4
/* 1032D4 802E1A54 E6000004 */  swc1      $f0, 0x4($s0)
/* 1032D8 802E1A58 C6220054 */  lwc1      $f2, 0x54($s1)
/* 1032DC 802E1A5C 46001080 */  add.s     $f2, $f2, $f0
/* 1032E0 802E1A60 E6220054 */  swc1      $f2, 0x54($s1)
/* 1032E4 802E1A64 C6000014 */  lwc1      $f0, 0x14($s0)
/* 1032E8 802E1A68 46060000 */  add.s     $f0, $f0, $f6
/* 1032EC 802E1A6C 4600103E */  c.le.s    $f2, $f0
/* 1032F0 802E1A70 00000000 */  nop
/* 1032F4 802E1A74 45000029 */  bc1f      .L802E1B1C
/* 1032F8 802E1A78 00000000 */   nop
/* 1032FC 802E1A7C 080B86C1 */  j         .L802E1B04
/* 103300 802E1A80 00000000 */   nop
glabel .L802E1A84
/* 103304 802E1A84 C6000014 */  lwc1      $f0, 0x14($s0)
/* 103308 802E1A88 C6220054 */  lwc1      $f2, 0x54($s1)
/* 10330C 802E1A8C 46020001 */  sub.s     $f0, $f0, $f2
/* 103310 802E1A90 3C013FD0 */  lui       $at, (0x3FD00000 >> 16)
/* 103314 802E1A94 44811800 */  mtc1      $at, $f3
/* 103318 802E1A98 44801000 */  mtc1      $zero, $f2
/* 10331C 802E1A9C 46000021 */  cvt.d.s   $f0, $f0
/* 103320 802E1AA0 46220002 */  mul.d     $f0, $f0, $f2
/* 103324 802E1AA4 00000000 */  nop
/* 103328 802E1AA8 3C01802F */  lui       $at, %hi(D_802EB068)
/* 10332C 802E1AAC D422B068 */  ldc1      $f2, %lo(D_802EB068)($at)
/* 103330 802E1AB0 46200120 */  cvt.s.d   $f4, $f0
/* 103334 802E1AB4 46002021 */  cvt.d.s   $f0, $f4
/* 103338 802E1AB8 4622003C */  c.lt.d    $f0, $f2
/* 10333C 802E1ABC 00000000 */  nop
/* 103340 802E1AC0 45000004 */  bc1f      .L802E1AD4
/* 103344 802E1AC4 00000000 */   nop
/* 103348 802E1AC8 3C013C23 */  lui       $at, (0x3C23D70A >> 16)
/* 10334C 802E1ACC 3421D70A */  ori       $at, $at, (0x3C23D70A & 0xFFFF)
/* 103350 802E1AD0 44812000 */  mtc1      $at, $f4
.L802E1AD4:
/* 103354 802E1AD4 C6000004 */  lwc1      $f0, 0x4($s0)
/* 103358 802E1AD8 46040000 */  add.s     $f0, $f0, $f4
/* 10335C 802E1ADC E6000004 */  swc1      $f0, 0x4($s0)
/* 103360 802E1AE0 C6220054 */  lwc1      $f2, 0x54($s1)
/* 103364 802E1AE4 46001080 */  add.s     $f2, $f2, $f0
/* 103368 802E1AE8 E6220054 */  swc1      $f2, 0x54($s1)
/* 10336C 802E1AEC C6000014 */  lwc1      $f0, 0x14($s0)
/* 103370 802E1AF0 4602003E */  c.le.s    $f0, $f2
/* 103374 802E1AF4 00000000 */  nop
/* 103378 802E1AF8 45000008 */  bc1f      .L802E1B1C
/* 10337C 802E1AFC 00000000 */   nop
/* 103380 802E1B00 E6200054 */  swc1      $f0, 0x54($s1)
.L802E1B04:
/* 103384 802E1B04 92020010 */  lbu       $v0, 0x10($s0)
/* 103388 802E1B08 AE000004 */  sw        $zero, 0x4($s0)
/* 10338C 802E1B0C 24420001 */  addiu     $v0, $v0, 0x1
/* 103390 802E1B10 080B86C7 */  j         .L802E1B1C
/* 103394 802E1B14 A2020010 */   sb       $v0, 0x10($s0)
glabel .L802E1B18
/* 103398 802E1B18 26520001 */  addiu     $s2, $s2, 0x1
.L802E1B1C:
/* 10339C 802E1B1C C6200054 */  lwc1      $f0, 0x54($s1)
/* 1033A0 802E1B20 E620005C */  swc1      $f0, 0x5C($s1)
/* 1033A4 802E1B24 82030011 */  lb        $v1, 0x11($s0)
/* 1033A8 802E1B28 2C620006 */  sltiu     $v0, $v1, 0x6
/* 1033AC 802E1B2C 104000D0 */  beqz      $v0, .L802E1E70
/* 1033B0 802E1B30 00031080 */   sll      $v0, $v1, 2
/* 1033B4 802E1B34 3C01802F */  lui       $at, %hi(jtbl_802EB070)
/* 1033B8 802E1B38 00220821 */  addu      $at, $at, $v0
/* 1033BC 802E1B3C 8C22B070 */  lw        $v0, %lo(jtbl_802EB070)($at)
/* 1033C0 802E1B40 00400008 */  jr        $v0
/* 1033C4 802E1B44 00000000 */   nop
glabel .L802E1B48
/* 1033C8 802E1B48 C602001C */  lwc1      $f2, 0x1C($s0)
/* 1033CC 802E1B4C 3C01BFE0 */  lui       $at, (0xBFE00000 >> 16)
/* 1033D0 802E1B50 44810800 */  mtc1      $at, $f1
/* 1033D4 802E1B54 44800000 */  mtc1      $zero, $f0
/* 1033D8 802E1B58 460010A1 */  cvt.d.s   $f2, $f2
/* 1033DC 802E1B5C 46201082 */  mul.d     $f2, $f2, $f0
/* 1033E0 802E1B60 00000000 */  nop
/* 1033E4 802E1B64 C6000018 */  lwc1      $f0, 0x18($s0)
/* 1033E8 802E1B68 462011A0 */  cvt.s.d   $f6, $f2
/* 1033EC 802E1B6C 46060000 */  add.s     $f0, $f0, $f6
/* 1033F0 802E1B70 C6220058 */  lwc1      $f2, 0x58($s1)
/* 1033F4 802E1B74 46020001 */  sub.s     $f0, $f0, $f2
/* 1033F8 802E1B78 3C014014 */  lui       $at, (0x40140000 >> 16)
/* 1033FC 802E1B7C 44811800 */  mtc1      $at, $f3
/* 103400 802E1B80 44801000 */  mtc1      $zero, $f2
/* 103404 802E1B84 46000021 */  cvt.d.s   $f0, $f0
/* 103408 802E1B88 46220003 */  div.d     $f0, $f0, $f2
/* 10340C 802E1B8C 46200120 */  cvt.s.d   $f4, $f0
/* 103410 802E1B90 3C01802F */  lui       $at, %hi(D_802EB088)
/* 103414 802E1B94 D422B088 */  ldc1      $f2, %lo(D_802EB088)($at)
/* 103418 802E1B98 46002021 */  cvt.d.s   $f0, $f4
/* 10341C 802E1B9C 4620103C */  c.lt.d    $f2, $f0
/* 103420 802E1BA0 00000000 */  nop
/* 103424 802E1BA4 45000004 */  bc1f      .L802E1BB8
/* 103428 802E1BA8 00000000 */   nop
/* 10342C 802E1BAC 3C01BC23 */  lui       $at, (0xBC23D70A >> 16)
/* 103430 802E1BB0 3421D70A */  ori       $at, $at, (0xBC23D70A & 0xFFFF)
/* 103434 802E1BB4 44812000 */  mtc1      $at, $f4
.L802E1BB8:
/* 103438 802E1BB8 C6000008 */  lwc1      $f0, 0x8($s0)
/* 10343C 802E1BBC 46040000 */  add.s     $f0, $f0, $f4
/* 103440 802E1BC0 E6000008 */  swc1      $f0, 0x8($s0)
/* 103444 802E1BC4 C6220058 */  lwc1      $f2, 0x58($s1)
/* 103448 802E1BC8 46001080 */  add.s     $f2, $f2, $f0
/* 10344C 802E1BCC E6220058 */  swc1      $f2, 0x58($s1)
/* 103450 802E1BD0 C6000018 */  lwc1      $f0, 0x18($s0)
/* 103454 802E1BD4 46060000 */  add.s     $f0, $f0, $f6
/* 103458 802E1BD8 4600103E */  c.le.s    $f2, $f0
/* 10345C 802E1BDC 00000000 */  nop
/* 103460 802E1BE0 450000A3 */  bc1f      .L802E1E70
/* 103464 802E1BE4 00000000 */   nop
/* 103468 802E1BE8 080B8796 */  j         .L802E1E58
/* 10346C 802E1BEC 00000000 */   nop
glabel .L802E1BF0
/* 103470 802E1BF0 C602001C */  lwc1      $f2, 0x1C($s0)
/* 103474 802E1BF4 3C01802F */  lui       $at, %hi(D_802EB090)
/* 103478 802E1BF8 D420B090 */  ldc1      $f0, %lo(D_802EB090)($at)
/* 10347C 802E1BFC 460010A1 */  cvt.d.s   $f2, $f2
/* 103480 802E1C00 46201082 */  mul.d     $f2, $f2, $f0
/* 103484 802E1C04 00000000 */  nop
/* 103488 802E1C08 C6000018 */  lwc1      $f0, 0x18($s0)
/* 10348C 802E1C0C 462011A0 */  cvt.s.d   $f6, $f2
/* 103490 802E1C10 46060000 */  add.s     $f0, $f0, $f6
/* 103494 802E1C14 C6220058 */  lwc1      $f2, 0x58($s1)
/* 103498 802E1C18 46020001 */  sub.s     $f0, $f0, $f2
/* 10349C 802E1C1C 3C014024 */  lui       $at, (0x40240000 >> 16)
/* 1034A0 802E1C20 44811800 */  mtc1      $at, $f3
/* 1034A4 802E1C24 44801000 */  mtc1      $zero, $f2
/* 1034A8 802E1C28 46000021 */  cvt.d.s   $f0, $f0
/* 1034AC 802E1C2C 46220003 */  div.d     $f0, $f0, $f2
/* 1034B0 802E1C30 46200120 */  cvt.s.d   $f4, $f0
/* 1034B4 802E1C34 3C01802F */  lui       $at, %hi(D_802EB098)
/* 1034B8 802E1C38 D422B098 */  ldc1      $f2, %lo(D_802EB098)($at)
/* 1034BC 802E1C3C 46002021 */  cvt.d.s   $f0, $f4
/* 1034C0 802E1C40 4622003C */  c.lt.d    $f0, $f2
/* 1034C4 802E1C44 00000000 */  nop
/* 1034C8 802E1C48 45000004 */  bc1f      .L802E1C5C
/* 1034CC 802E1C4C 00000000 */   nop
/* 1034D0 802E1C50 3C013C23 */  lui       $at, (0x3C23D70A >> 16)
/* 1034D4 802E1C54 3421D70A */  ori       $at, $at, (0x3C23D70A & 0xFFFF)
/* 1034D8 802E1C58 44812000 */  mtc1      $at, $f4
.L802E1C5C:
/* 1034DC 802E1C5C C6000008 */  lwc1      $f0, 0x8($s0)
/* 1034E0 802E1C60 46040000 */  add.s     $f0, $f0, $f4
/* 1034E4 802E1C64 E6000008 */  swc1      $f0, 0x8($s0)
/* 1034E8 802E1C68 C6220058 */  lwc1      $f2, 0x58($s1)
/* 1034EC 802E1C6C 46001080 */  add.s     $f2, $f2, $f0
/* 1034F0 802E1C70 E6220058 */  swc1      $f2, 0x58($s1)
/* 1034F4 802E1C74 C6000018 */  lwc1      $f0, 0x18($s0)
/* 1034F8 802E1C78 46060000 */  add.s     $f0, $f0, $f6
/* 1034FC 802E1C7C 4602003E */  c.le.s    $f0, $f2
/* 103500 802E1C80 00000000 */  nop
/* 103504 802E1C84 4500007A */  bc1f      .L802E1E70
/* 103508 802E1C88 00000000 */   nop
/* 10350C 802E1C8C 080B8796 */  j         .L802E1E58
/* 103510 802E1C90 00000000 */   nop
glabel .L802E1C94
/* 103514 802E1C94 C602001C */  lwc1      $f2, 0x1C($s0)
/* 103518 802E1C98 3C01802F */  lui       $at, %hi(D_802EB0A0)
/* 10351C 802E1C9C D420B0A0 */  ldc1      $f0, %lo(D_802EB0A0)($at)
/* 103520 802E1CA0 460010A1 */  cvt.d.s   $f2, $f2
/* 103524 802E1CA4 46201082 */  mul.d     $f2, $f2, $f0
/* 103528 802E1CA8 00000000 */  nop
/* 10352C 802E1CAC C6000018 */  lwc1      $f0, 0x18($s0)
/* 103530 802E1CB0 462011A0 */  cvt.s.d   $f6, $f2
/* 103534 802E1CB4 46060000 */  add.s     $f0, $f0, $f6
/* 103538 802E1CB8 C6220058 */  lwc1      $f2, 0x58($s1)
/* 10353C 802E1CBC 46020001 */  sub.s     $f0, $f0, $f2
/* 103540 802E1CC0 3C014014 */  lui       $at, (0x40140000 >> 16)
/* 103544 802E1CC4 44811800 */  mtc1      $at, $f3
/* 103548 802E1CC8 44801000 */  mtc1      $zero, $f2
/* 10354C 802E1CCC 46000021 */  cvt.d.s   $f0, $f0
/* 103550 802E1CD0 46220003 */  div.d     $f0, $f0, $f2
/* 103554 802E1CD4 46200120 */  cvt.s.d   $f4, $f0
/* 103558 802E1CD8 3C01802F */  lui       $at, %hi(D_802EB0A8)
/* 10355C 802E1CDC D422B0A8 */  ldc1      $f2, %lo(D_802EB0A8)($at)
/* 103560 802E1CE0 46002021 */  cvt.d.s   $f0, $f4
/* 103564 802E1CE4 4620103C */  c.lt.d    $f2, $f0
/* 103568 802E1CE8 00000000 */  nop
/* 10356C 802E1CEC 45000004 */  bc1f      .L802E1D00
/* 103570 802E1CF0 00000000 */   nop
/* 103574 802E1CF4 3C01BC23 */  lui       $at, (0xBC23D70A >> 16)
/* 103578 802E1CF8 3421D70A */  ori       $at, $at, (0xBC23D70A & 0xFFFF)
/* 10357C 802E1CFC 44812000 */  mtc1      $at, $f4
.L802E1D00:
/* 103580 802E1D00 C6000008 */  lwc1      $f0, 0x8($s0)
/* 103584 802E1D04 46040000 */  add.s     $f0, $f0, $f4
/* 103588 802E1D08 E6000008 */  swc1      $f0, 0x8($s0)
/* 10358C 802E1D0C C6220058 */  lwc1      $f2, 0x58($s1)
/* 103590 802E1D10 46001080 */  add.s     $f2, $f2, $f0
/* 103594 802E1D14 E6220058 */  swc1      $f2, 0x58($s1)
/* 103598 802E1D18 C6000018 */  lwc1      $f0, 0x18($s0)
/* 10359C 802E1D1C 46060000 */  add.s     $f0, $f0, $f6
/* 1035A0 802E1D20 4600103E */  c.le.s    $f2, $f0
/* 1035A4 802E1D24 00000000 */  nop
/* 1035A8 802E1D28 45000051 */  bc1f      .L802E1E70
/* 1035AC 802E1D2C 00000000 */   nop
/* 1035B0 802E1D30 080B8796 */  j         .L802E1E58
/* 1035B4 802E1D34 00000000 */   nop
glabel .L802E1D38
/* 1035B8 802E1D38 C602001C */  lwc1      $f2, 0x1C($s0)
/* 1035BC 802E1D3C 44800000 */  mtc1      $zero, $f0
/* 1035C0 802E1D40 44800800 */  mtc1      $zero, $f1
/* 1035C4 802E1D44 460010A1 */  cvt.d.s   $f2, $f2
/* 1035C8 802E1D48 46201082 */  mul.d     $f2, $f2, $f0
/* 1035CC 802E1D4C 00000000 */  nop
/* 1035D0 802E1D50 C6000018 */  lwc1      $f0, 0x18($s0)
/* 1035D4 802E1D54 462011A0 */  cvt.s.d   $f6, $f2
/* 1035D8 802E1D58 46060000 */  add.s     $f0, $f0, $f6
/* 1035DC 802E1D5C C6220058 */  lwc1      $f2, 0x58($s1)
/* 1035E0 802E1D60 46020001 */  sub.s     $f0, $f0, $f2
/* 1035E4 802E1D64 3C014024 */  lui       $at, (0x40240000 >> 16)
/* 1035E8 802E1D68 44811800 */  mtc1      $at, $f3
/* 1035EC 802E1D6C 44801000 */  mtc1      $zero, $f2
/* 1035F0 802E1D70 46000021 */  cvt.d.s   $f0, $f0
/* 1035F4 802E1D74 46220003 */  div.d     $f0, $f0, $f2
/* 1035F8 802E1D78 46200120 */  cvt.s.d   $f4, $f0
/* 1035FC 802E1D7C 3C01802F */  lui       $at, %hi(D_802EB0B0)
/* 103600 802E1D80 D422B0B0 */  ldc1      $f2, %lo(D_802EB0B0)($at)
/* 103604 802E1D84 46002021 */  cvt.d.s   $f0, $f4
/* 103608 802E1D88 4622003C */  c.lt.d    $f0, $f2
/* 10360C 802E1D8C 00000000 */  nop
/* 103610 802E1D90 45000004 */  bc1f      .L802E1DA4
/* 103614 802E1D94 00000000 */   nop
/* 103618 802E1D98 3C013C23 */  lui       $at, (0x3C23D70A >> 16)
/* 10361C 802E1D9C 3421D70A */  ori       $at, $at, (0x3C23D70A & 0xFFFF)
/* 103620 802E1DA0 44812000 */  mtc1      $at, $f4
.L802E1DA4:
/* 103624 802E1DA4 C6000008 */  lwc1      $f0, 0x8($s0)
/* 103628 802E1DA8 46040000 */  add.s     $f0, $f0, $f4
/* 10362C 802E1DAC E6000008 */  swc1      $f0, 0x8($s0)
/* 103630 802E1DB0 C6220058 */  lwc1      $f2, 0x58($s1)
/* 103634 802E1DB4 46001080 */  add.s     $f2, $f2, $f0
/* 103638 802E1DB8 E6220058 */  swc1      $f2, 0x58($s1)
/* 10363C 802E1DBC C6000018 */  lwc1      $f0, 0x18($s0)
/* 103640 802E1DC0 46060000 */  add.s     $f0, $f0, $f6
/* 103644 802E1DC4 4602003E */  c.le.s    $f0, $f2
/* 103648 802E1DC8 00000000 */  nop
/* 10364C 802E1DCC 45000028 */  bc1f      .L802E1E70
/* 103650 802E1DD0 00000000 */   nop
/* 103654 802E1DD4 080B8796 */  j         .L802E1E58
/* 103658 802E1DD8 00000000 */   nop
glabel .L802E1DDC
/* 10365C 802E1DDC C6000018 */  lwc1      $f0, 0x18($s0)
/* 103660 802E1DE0 C6220058 */  lwc1      $f2, 0x58($s1)
/* 103664 802E1DE4 46020001 */  sub.s     $f0, $f0, $f2
/* 103668 802E1DE8 3C014014 */  lui       $at, (0x40140000 >> 16)
/* 10366C 802E1DEC 44811800 */  mtc1      $at, $f3
/* 103670 802E1DF0 44801000 */  mtc1      $zero, $f2
/* 103674 802E1DF4 46000021 */  cvt.d.s   $f0, $f0
/* 103678 802E1DF8 46220003 */  div.d     $f0, $f0, $f2
/* 10367C 802E1DFC 46200120 */  cvt.s.d   $f4, $f0
/* 103680 802E1E00 3C01802F */  lui       $at, %hi(D_802EB0B8)
/* 103684 802E1E04 D422B0B8 */  ldc1      $f2, %lo(D_802EB0B8)($at)
/* 103688 802E1E08 46002021 */  cvt.d.s   $f0, $f4
/* 10368C 802E1E0C 4620103C */  c.lt.d    $f2, $f0
/* 103690 802E1E10 00000000 */  nop
/* 103694 802E1E14 45000004 */  bc1f      .L802E1E28
/* 103698 802E1E18 00000000 */   nop
/* 10369C 802E1E1C 3C01BC23 */  lui       $at, (0xBC23D70A >> 16)
/* 1036A0 802E1E20 3421D70A */  ori       $at, $at, (0xBC23D70A & 0xFFFF)
/* 1036A4 802E1E24 44812000 */  mtc1      $at, $f4
.L802E1E28:
/* 1036A8 802E1E28 C6000008 */  lwc1      $f0, 0x8($s0)
/* 1036AC 802E1E2C 46040000 */  add.s     $f0, $f0, $f4
/* 1036B0 802E1E30 E6000008 */  swc1      $f0, 0x8($s0)
/* 1036B4 802E1E34 C6220058 */  lwc1      $f2, 0x58($s1)
/* 1036B8 802E1E38 46001080 */  add.s     $f2, $f2, $f0
/* 1036BC 802E1E3C E6220058 */  swc1      $f2, 0x58($s1)
/* 1036C0 802E1E40 C6000018 */  lwc1      $f0, 0x18($s0)
/* 1036C4 802E1E44 4600103E */  c.le.s    $f2, $f0
/* 1036C8 802E1E48 00000000 */  nop
/* 1036CC 802E1E4C 45000008 */  bc1f      .L802E1E70
/* 1036D0 802E1E50 00000000 */   nop
/* 1036D4 802E1E54 E6200058 */  swc1      $f0, 0x58($s1)
.L802E1E58:
/* 1036D8 802E1E58 92020011 */  lbu       $v0, 0x11($s0)
/* 1036DC 802E1E5C AE000008 */  sw        $zero, 0x8($s0)
/* 1036E0 802E1E60 24420001 */  addiu     $v0, $v0, 0x1
/* 1036E4 802E1E64 080B879C */  j         .L802E1E70
/* 1036E8 802E1E68 A2020011 */   sb       $v0, 0x11($s0)
glabel .L802E1E6C
/* 1036EC 802E1E6C 26520001 */  addiu     $s2, $s2, 0x1
.L802E1E70:
/* 1036F0 802E1E70 0C0B854F */  jal       entity_switch_fall_down
/* 1036F4 802E1E74 0220202D */   daddu    $a0, $s1, $zero
/* 1036F8 802E1E78 24020002 */  addiu     $v0, $zero, 0x2
/* 1036FC 802E1E7C 16420004 */  bne       $s2, $v0, .L802E1E90
/* 103700 802E1E80 0220202D */   daddu    $a0, $s1, $zero
/* 103704 802E1E84 A2000010 */  sb        $zero, 0x10($s0)
/* 103708 802E1E88 0C043F5A */  jal       exec_entity_commandlist
/* 10370C 802E1E8C A2000011 */   sb       $zero, 0x11($s0)
.L802E1E90:
/* 103710 802E1E90 8FBF001C */  lw        $ra, 0x1C($sp)
/* 103714 802E1E94 8FB20018 */  lw        $s2, 0x18($sp)
/* 103718 802E1E98 8FB10014 */  lw        $s1, 0x14($sp)
/* 10371C 802E1E9C 8FB00010 */  lw        $s0, 0x10($sp)
/* 103720 802E1EA0 03E00008 */  jr        $ra
/* 103724 802E1EA4 27BD0020 */   addiu    $sp, $sp, 0x20

### DECOMPILED C INSTRUCTIONS:

s32 entity_RedSwitch_animate_scale(Entity* entity) {
    f32 phi_f4;
    f32 temp_f6;
    SwitchData* data = entity->dataBuf.swtch;
    s32 phi_s2 = 0;

    switch (data->animStateScaleX) {
        case 0:
            temp_f6 = data->baseScale.z * 0.3;
            phi_f4 = ((data->baseScale.x + temp_f6) - entity->scale.x) / 4.0;
            if (phi_f4 < 0.01) {
                phi_f4 = 0.01f;
            }
            data->deltaScaleX += phi_f4;
            entity->scale.x += data->deltaScaleX;
            if ((data->baseScale.x + temp_f6) <= entity->scale.x) {
                data->deltaScaleX = 0.0f;
                data->animStateScaleX++;
            }
            break;
        case 1:
            temp_f6 = data->baseScale.z * -0.2;
            phi_f4 = ((data->baseScale.x + temp_f6) - entity->scale.x) / 6.0;
            if (phi_f4 > -0.01) {
                phi_f4 = -0.01f;
            }
            data->deltaScaleX += phi_f4;
            entity->scale.x += data->deltaScaleX;
            if (entity->scale.x <= (data->baseScale.x + temp_f6)) {
                data->deltaScaleX = 0.0f;
                data->animStateScaleX++;
            }
            break;
        case 2:
            temp_f6 = data->baseScale.z * 0.15;
            phi_f4 = ((data->baseScale.x + temp_f6) - entity->scale.x) / 4.0;
            if (phi_f4 < 0.01) {
                phi_f4 = 0.01f;
            }
            data->deltaScaleX += phi_f4;
            entity->scale.x += data->deltaScaleX;
            if ((data->baseScale.x + temp_f6) <= entity->scale.x) {
                data->deltaScaleX = 0.0f;
                data->animStateScaleX++;
            }
            break;
        case 3:
            temp_f6 = data->baseScale.z * -0.1;
            phi_f4 = ((data->baseScale.x + temp_f6) - entity->scale.x) / 6.0;
            if (phi_f4 > -0.01) {
                phi_f4 = -0.01f;
            }
            data->deltaScaleX += phi_f4;
            entity->scale.x += data->deltaScaleX;
            if (entity->scale.x <= (data->baseScale.x + temp_f6)) {
                data->deltaScaleX = 0.0f;
                data->animStateScaleX++;
            }
            break;
        case 4:
            phi_f4 = (data->baseScale.x - entity->scale.x) / 4.0;
            if (phi_f4 < 0.01) {
                phi_f4 = 0.01f;
            }
            data->deltaScaleX += phi_f4;
            entity->scale.x += data->deltaScaleX;
            if (data->baseScale.x <= entity->scale.x) {
                entity->scale.x = data->baseScale.x;
                data->deltaScaleX = 0.0f;
                data->animStateScaleX++;
            }
            break;
        case 5:
            phi_s2++;
            break;
    }

    entity->scale.z = entity->scale.x;

    switch (data->animStateScaleY) {
        case 0:
            temp_f6 = data->baseScale.z * -0.5;
            phi_f4 = ((data->baseScale.y + temp_f6) - entity->scale.y) / 5.0;
            if (phi_f4 > -0.01) {
                phi_f4 = -0.01f;
            }
            data->deltaScaleY += phi_f4;
            entity->scale.y += data->deltaScaleY;
            if (entity->scale.y <= (data->baseScale.y + temp_f6)) {
                data->deltaScaleY = 0.0f;
                data->animStateScaleY++;
            }
            break;
        case 1:
            temp_f6 = data->baseScale.z * 0.1;
            phi_f4 = ((data->baseScale.y + temp_f6) - entity->scale.y) / 10.0;
            if (phi_f4 < 0.01) {
                phi_f4 = 0.01f;
            }
            data->deltaScaleY += phi_f4;
            entity->scale.y += data->deltaScaleY;
            if ((data->baseScale.y + temp_f6) <= entity->scale.y) {
                data->deltaScaleY = 0.0f;
                data->animStateScaleY++;
            }
            break;
        case 2:
            temp_f6 = data->baseScale.z * -0.3;
            phi_f4 = ((data->baseScale.y + temp_f6) - entity->scale.y) / 5.0;
            if (phi_f4 > -0.01) {
                phi_f4 = -0.01f;
            }
            data->deltaScaleY += phi_f4;
            entity->scale.y += data->deltaScaleY;
            if (entity->scale.y <= (data->baseScale.y + temp_f6)) {
                data->deltaScaleY = 0.0f;
                data->animStateScaleY++;
            }
            break;
        case 3:
            temp_f6 = data->baseScale.z * 0.0;
            phi_f4 = ((data->baseScale.y + temp_f6) - entity->scale.y) / 10.0;
            if (phi_f4 < 0.01) {
                phi_f4 = 0.01f;
            }
            data->deltaScaleY += phi_f4;
            entity->scale.y += data->deltaScaleY;
            if ((data->baseScale.y + temp_f6) <= entity->scale.y) {
                data->deltaScaleY = 0.0f;
                data->animStateScaleY++;
            }
            break;
        case 4:
            phi_f4 = (data->baseScale.y - entity->scale.y) / 5.0;
            if (phi_f4 > -0.01) {
                phi_f4 = -0.01f;
            }
            data->deltaScaleY += phi_f4;
            entity->scale.y += data->deltaScaleY;
            if (entity->scale.y <= data->baseScale.y) {
                entity->scale.y = data->baseScale.y;
                data->deltaScaleY = 0.0f;
                data->animStateScaleY++;
            }
            break;
        case 5:
            phi_s2++;
            break;
    }

    entity_switch_fall_down(entity);
    if (phi_s2 == 2) {
        data->animStateScaleX = 0;
        data->animStateScaleY = 0;
        exec_entity_commandlist(entity);
    }
}


### RAW ASSEMBLY INSTRUCTIONS:

glabel load_tile_header
/* AB46C 80114D6C 27BDFFB0 */  addiu     $sp, $sp, -0x50
/* AB470 80114D70 AFB40038 */  sw        $s4, 0x38($sp)
/* AB474 80114D74 00A0A02D */  daddu     $s4, $a1, $zero
/* AB478 80114D78 AFBF004C */  sw        $ra, 0x4C($sp)
/* AB47C 80114D7C AFBE0048 */  sw        $fp, 0x48($sp)
/* AB480 80114D80 AFB70044 */  sw        $s7, 0x44($sp)
/* AB484 80114D84 AFB60040 */  sw        $s6, 0x40($sp)
/* AB488 80114D88 AFB5003C */  sw        $s5, 0x3C($sp)
/* AB48C 80114D8C AFB30034 */  sw        $s3, 0x34($sp)
/* AB490 80114D90 AFB20030 */  sw        $s2, 0x30($sp)
/* AB494 80114D94 AFB1002C */  sw        $s1, 0x2C($sp)
/* AB498 80114D98 AFB00028 */  sw        $s0, 0x28($sp)
/* AB49C 80114D9C AFA60058 */  sw        $a2, 0x58($sp)
/* AB4A0 80114DA0 AFA00020 */  sw        $zero, 0x20($sp)
/* AB4A4 80114DA4 8C970008 */  lw        $s7, 0x8($a0)
/* AB4A8 80114DA8 12E0017B */  beqz      $s7, .L80115398
/* AB4AC 80114DAC 0280F02D */   daddu    $fp, $s4, $zero
/* AB4B0 80114DB0 8FA80058 */  lw        $t0, 0x58($sp)
/* AB4B4 80114DB4 03C81021 */  addu      $v0, $fp, $t0
/* AB4B8 80114DB8 03C2102B */  sltu      $v0, $fp, $v0
/* AB4BC 80114DBC 10400171 */  beqz      $v0, .L80115384
/* AB4C0 80114DC0 24160001 */   addiu    $s6, $zero, 0x1
/* AB4C4 80114DC4 3C128015 */  lui       $s2, %hi(gCurrentTileDescriptor)
/* AB4C8 80114DC8 26521740 */  addiu     $s2, $s2, %lo(gCurrentTileDescriptor)
/* AB4CC 80114DCC 0280202D */  daddu     $a0, $s4, $zero
.L80114DD0:
/* AB4D0 80114DD0 3C068015 */  lui       $a2, %hi(gCurrentTileDescriptor)
/* AB4D4 80114DD4 24C61740 */  addiu     $a2, $a2, %lo(gCurrentTileDescriptor)
/* AB4D8 80114DD8 0C00A5CF */  jal       dma_copy
/* AB4DC 80114DDC 26850030 */   addiu    $a1, $s4, 0x30
/* AB4E0 80114DE0 96430022 */  lhu       $v1, 0x22($s2)
/* AB4E4 80114DE4 96460026 */  lhu       $a2, 0x26($s2)
/* AB4E8 80114DE8 00660018 */  mult      $v1, $a2
/* AB4EC 80114DEC 9642002C */  lhu       $v0, 0x2C($s2)
/* AB4F0 80114DF0 30420F00 */  andi      $v0, $v0, 0xF00
/* AB4F4 80114DF4 00008012 */  mflo      $s0
/* AB4F8 80114DF8 14400047 */  bnez      $v0, .L80114F18
/* AB4FC 80114DFC 0060382D */   daddu    $a3, $v1, $zero
/* AB500 80114E00 92420029 */  lbu       $v0, 0x29($s2)
/* AB504 80114E04 54560120 */  bnel      $v0, $s6, .L80115288
/* AB508 80114E08 00108042 */   srl      $s0, $s0, 1
/* AB50C 80114E0C 24040002 */  addiu     $a0, $zero, 0x2
/* AB510 80114E10 14800002 */  bnez      $a0, .L80114E1C
/* AB514 80114E14 0064001A */   div      $zero, $v1, $a0
/* AB518 80114E18 0007000D */  break     7
.L80114E1C:
/* AB51C 80114E1C 2401FFFF */  addiu     $at, $zero, -0x1
/* AB520 80114E20 14810004 */  bne       $a0, $at, .L80114E34
/* AB524 80114E24 3C018000 */   lui      $at, (0x80000000 >> 16)
/* AB528 80114E28 14610002 */  bne       $v1, $at, .L80114E34
/* AB52C 80114E2C 00000000 */   nop
/* AB530 80114E30 0006000D */  break     6
.L80114E34:
/* AB534 80114E34 00001012 */  mflo      $v0
/* AB538 80114E38 28420010 */  slti      $v0, $v0, 0x10
/* AB53C 80114E3C 54400112 */  bnel      $v0, $zero, .L80115288
/* AB540 80114E40 00108042 */   srl      $s0, $s0, 1
.L80114E44:
/* AB544 80114E44 14800002 */  bnez      $a0, .L80114E50
/* AB548 80114E48 00C4001A */   div      $zero, $a2, $a0
/* AB54C 80114E4C 0007000D */  break     7
.L80114E50:
/* AB550 80114E50 2401FFFF */  addiu     $at, $zero, -0x1
/* AB554 80114E54 14810004 */  bne       $a0, $at, .L80114E68
/* AB558 80114E58 3C018000 */   lui      $at, (0x80000000 >> 16)
/* AB55C 80114E5C 14C10002 */  bne       $a2, $at, .L80114E68
/* AB560 80114E60 00000000 */   nop
/* AB564 80114E64 0006000D */  break     6
.L80114E68:
/* AB568 80114E68 00001012 */  mflo      $v0
/* AB56C 80114E6C 58400106 */  blezl     $v0, .L80115288
/* AB570 80114E70 00108042 */   srl      $s0, $s0, 1
/* AB574 80114E74 14800002 */  bnez      $a0, .L80114E80
/* AB578 80114E78 00E4001A */   div      $zero, $a3, $a0
/* AB57C 80114E7C 0007000D */  break     7
.L80114E80:
/* AB580 80114E80 2401FFFF */  addiu     $at, $zero, -0x1
/* AB584 80114E84 14810004 */  bne       $a0, $at, .L80114E98
/* AB588 80114E88 3C018000 */   lui      $at, (0x80000000 >> 16)
/* AB58C 80114E8C 14E10002 */  bne       $a3, $at, .L80114E98
/* AB590 80114E90 00000000 */   nop
/* AB594 80114E94 0006000D */  break     6
.L80114E98:
/* AB598 80114E98 00001012 */  mflo      $v0
/* AB59C 80114E9C 00000000 */  nop
/* AB5A0 80114EA0 00000000 */  nop
/* AB5A4 80114EA4 00460018 */  mult      $v0, $a2
/* AB5A8 80114EA8 00001812 */  mflo      $v1
/* AB5AC 80114EAC 00000000 */  nop
/* AB5B0 80114EB0 14800002 */  bnez      $a0, .L80114EBC
/* AB5B4 80114EB4 0064001A */   div      $zero, $v1, $a0
/* AB5B8 80114EB8 0007000D */  break     7
.L80114EBC:
/* AB5BC 80114EBC 2401FFFF */  addiu     $at, $zero, -0x1
/* AB5C0 80114EC0 14810004 */  bne       $a0, $at, .L80114ED4
/* AB5C4 80114EC4 3C018000 */   lui      $at, (0x80000000 >> 16)
/* AB5C8 80114EC8 14610002 */  bne       $v1, $at, .L80114ED4
/* AB5CC 80114ECC 00000000 */   nop
/* AB5D0 80114ED0 0006000D */  break     6
.L80114ED4:
/* AB5D4 80114ED4 00001812 */  mflo      $v1
/* AB5D8 80114ED8 00042040 */  sll       $a0, $a0, 1
/* AB5DC 80114EDC 14800002 */  bnez      $a0, .L80114EE8
/* AB5E0 80114EE0 00E4001A */   div      $zero, $a3, $a0
/* AB5E4 80114EE4 0007000D */  break     7
.L80114EE8:
/* AB5E8 80114EE8 2401FFFF */  addiu     $at, $zero, -0x1
/* AB5EC 80114EEC 14810004 */  bne       $a0, $at, .L80114F00
/* AB5F0 80114EF0 3C018000 */   lui      $at, (0x80000000 >> 16)
/* AB5F4 80114EF4 14E10002 */  bne       $a3, $at, .L80114F00
/* AB5F8 80114EF8 00000000 */   nop
/* AB5FC 80114EFC 0006000D */  break     6
.L80114F00:
/* AB600 80114F00 00001012 */  mflo      $v0
/* AB604 80114F04 28420010 */  slti      $v0, $v0, 0x10
/* AB608 80114F08 1040FFCE */  beqz      $v0, .L80114E44
/* AB60C 80114F0C 02038021 */   addu     $s0, $s0, $v1
/* AB610 80114F10 080454A2 */  j         .L80115288
/* AB614 80114F14 00108042 */   srl      $s0, $s0, 1
.L80114F18:
/* AB618 80114F18 24080100 */  addiu     $t0, $zero, 0x100
/* AB61C 80114F1C 14480044 */  bne       $v0, $t0, .L80115030
/* AB620 80114F20 00000000 */   nop
/* AB624 80114F24 92420029 */  lbu       $v0, 0x29($s2)
/* AB628 80114F28 145600D7 */  bne       $v0, $s6, .L80115288
/* AB62C 80114F2C 24050002 */   addiu    $a1, $zero, 0x2
/* AB630 80114F30 14A00002 */  bnez      $a1, .L80114F3C
/* AB634 80114F34 0065001A */   div      $zero, $v1, $a1
/* AB638 80114F38 0007000D */  break     7
.L80114F3C:
/* AB63C 80114F3C 2401FFFF */  addiu     $at, $zero, -0x1
/* AB640 80114F40 14A10004 */  bne       $a1, $at, .L80114F54
/* AB644 80114F44 3C018000 */   lui      $at, (0x80000000 >> 16)
/* AB648 80114F48 14610002 */  bne       $v1, $at, .L80114F54
/* AB64C 80114F4C 00000000 */   nop
/* AB650 80114F50 0006000D */  break     6
.L80114F54:
/* AB654 80114F54 00001012 */  mflo      $v0
.L80114F58:
/* AB658 80114F58 28420008 */  slti      $v0, $v0, 0x8
/* AB65C 80114F5C 144000CA */  bnez      $v0, .L80115288
/* AB660 80114F60 00000000 */   nop
/* AB664 80114F64 14A00002 */  bnez      $a1, .L80114F70
/* AB668 80114F68 00C5001A */   div      $zero, $a2, $a1
/* AB66C 80114F6C 0007000D */  break     7
.L80114F70:
/* AB670 80114F70 2401FFFF */  addiu     $at, $zero, -0x1
/* AB674 80114F74 14A10004 */  bne       $a1, $at, .L80114F88
/* AB678 80114F78 3C018000 */   lui      $at, (0x80000000 >> 16)
/* AB67C 80114F7C 14C10002 */  bne       $a2, $at, .L80114F88
/* AB680 80114F80 00000000 */   nop
/* AB684 80114F84 0006000D */  break     6
.L80114F88:
/* AB688 80114F88 00001012 */  mflo      $v0
/* AB68C 80114F8C 184000BE */  blez      $v0, .L80115288
/* AB690 80114F90 00000000 */   nop
/* AB694 80114F94 96430022 */  lhu       $v1, 0x22($s2)
/* AB698 80114F98 14A00002 */  bnez      $a1, .L80114FA4
/* AB69C 80114F9C 0065001A */   div      $zero, $v1, $a1
/* AB6A0 80114FA0 0007000D */  break     7
.L80114FA4:
/* AB6A4 80114FA4 2401FFFF */  addiu     $at, $zero, -0x1
/* AB6A8 80114FA8 14A10004 */  bne       $a1, $at, .L80114FBC
/* AB6AC 80114FAC 3C018000 */   lui      $at, (0x80000000 >> 16)
/* AB6B0 80114FB0 14610002 */  bne       $v1, $at, .L80114FBC
/* AB6B4 80114FB4 00000000 */   nop
/* AB6B8 80114FB8 0006000D */  break     6
.L80114FBC:
/* AB6BC 80114FBC 00001012 */  mflo      $v0
/* AB6C0 80114FC0 00000000 */  nop
/* AB6C4 80114FC4 00000000 */  nop
/* AB6C8 80114FC8 00460018 */  mult      $v0, $a2
/* AB6CC 80114FCC 00004812 */  mflo      $t1
/* AB6D0 80114FD0 00000000 */  nop
/* AB6D4 80114FD4 14A00002 */  bnez      $a1, .L80114FE0
/* AB6D8 80114FD8 0125001A */   div      $zero, $t1, $a1
/* AB6DC 80114FDC 0007000D */  break     7
.L80114FE0:
/* AB6E0 80114FE0 2401FFFF */  addiu     $at, $zero, -0x1
/* AB6E4 80114FE4 14A10004 */  bne       $a1, $at, .L80114FF8
/* AB6E8 80114FE8 3C018000 */   lui      $at, (0x80000000 >> 16)
/* AB6EC 80114FEC 15210002 */  bne       $t1, $at, .L80114FF8
/* AB6F0 80114FF0 00000000 */   nop
/* AB6F4 80114FF4 0006000D */  break     6
.L80114FF8:
/* AB6F8 80114FF8 00002012 */  mflo      $a0
/* AB6FC 80114FFC 00052840 */  sll       $a1, $a1, 1
/* AB700 80115000 14A00002 */  bnez      $a1, .L8011500C
/* AB704 80115004 0065001A */   div      $zero, $v1, $a1
/* AB708 80115008 0007000D */  break     7
.L8011500C:
/* AB70C 8011500C 2401FFFF */  addiu     $at, $zero, -0x1
/* AB710 80115010 14A10004 */  bne       $a1, $at, .L80115024
/* AB714 80115014 3C018000 */   lui      $at, (0x80000000 >> 16)
/* AB718 80115018 14610002 */  bne       $v1, $at, .L80115024
/* AB71C 8011501C 00000000 */   nop
/* AB720 80115020 0006000D */  break     6
.L80115024:
/* AB724 80115024 00001012 */  mflo      $v0
/* AB728 80115028 080453D6 */  j         .L80114F58
/* AB72C 8011502C 02048021 */   addu     $s0, $s0, $a0
.L80115030:
/* AB730 80115030 9642002C */  lhu       $v0, 0x2C($s2)
/* AB734 80115034 30430F00 */  andi      $v1, $v0, 0xF00
/* AB738 80115038 24020200 */  addiu     $v0, $zero, 0x200
/* AB73C 8011503C 14620049 */  bne       $v1, $v0, .L80115164
/* AB740 80115040 24020300 */   addiu    $v0, $zero, 0x300
/* AB744 80115044 92420029 */  lbu       $v0, 0x29($s2)
/* AB748 80115048 5456008F */  bnel      $v0, $s6, .L80115288
/* AB74C 8011504C 00108040 */   sll      $s0, $s0, 1
/* AB750 80115050 96470022 */  lhu       $a3, 0x22($s2)
/* AB754 80115054 24040002 */  addiu     $a0, $zero, 0x2
/* AB758 80115058 14800002 */  bnez      $a0, .L80115064
/* AB75C 8011505C 00E4001A */   div      $zero, $a3, $a0
/* AB760 80115060 0007000D */  break     7
.L80115064:
/* AB764 80115064 2401FFFF */  addiu     $at, $zero, -0x1
/* AB768 80115068 14810004 */  bne       $a0, $at, .L8011507C
/* AB76C 8011506C 3C018000 */   lui      $at, (0x80000000 >> 16)
/* AB770 80115070 14E10002 */  bne       $a3, $at, .L8011507C
/* AB774 80115074 00000000 */   nop
/* AB778 80115078 0006000D */  break     6
.L8011507C:
/* AB77C 8011507C 00001012 */  mflo      $v0
/* AB780 80115080 28420004 */  slti      $v0, $v0, 0x4
/* AB784 80115084 54400080 */  bnel      $v0, $zero, .L80115288
/* AB788 80115088 00108040 */   sll      $s0, $s0, 1
/* AB78C 8011508C 96460026 */  lhu       $a2, 0x26($s2)
.L80115090:
/* AB790 80115090 14800002 */  bnez      $a0, .L8011509C
/* AB794 80115094 00C4001A */   div      $zero, $a2, $a0
/* AB798 80115098 0007000D */  break     7
.L8011509C:
/* AB79C 8011509C 2401FFFF */  addiu     $at, $zero, -0x1
/* AB7A0 801150A0 14810004 */  bne       $a0, $at, .L801150B4
/* AB7A4 801150A4 3C018000 */   lui      $at, (0x80000000 >> 16)
/* AB7A8 801150A8 14C10002 */  bne       $a2, $at, .L801150B4
/* AB7AC 801150AC 00000000 */   nop
/* AB7B0 801150B0 0006000D */  break     6
.L801150B4:
/* AB7B4 801150B4 00001012 */  mflo      $v0
/* AB7B8 801150B8 58400073 */  blezl     $v0, .L80115288
/* AB7BC 801150BC 00108040 */   sll      $s0, $s0, 1
/* AB7C0 801150C0 14800002 */  bnez      $a0, .L801150CC
/* AB7C4 801150C4 00E4001A */   div      $zero, $a3, $a0
/* AB7C8 801150C8 0007000D */  break     7
.L801150CC:
/* AB7CC 801150CC 2401FFFF */  addiu     $at, $zero, -0x1
/* AB7D0 801150D0 14810004 */  bne       $a0, $at, .L801150E4
/* AB7D4 801150D4 3C018000 */   lui      $at, (0x80000000 >> 16)
/* AB7D8 801150D8 14E10002 */  bne       $a3, $at, .L801150E4
/* AB7DC 801150DC 00000000 */   nop
/* AB7E0 801150E0 0006000D */  break     6
.L801150E4:
/* AB7E4 801150E4 00001012 */  mflo      $v0
/* AB7E8 801150E8 00000000 */  nop
/* AB7EC 801150EC 00000000 */  nop
/* AB7F0 801150F0 00460018 */  mult      $v0, $a2
/* AB7F4 801150F4 00001812 */  mflo      $v1
/* AB7F8 801150F8 00000000 */  nop
/* AB7FC 801150FC 14800002 */  bnez      $a0, .L80115108
/* AB800 80115100 0064001A */   div      $zero, $v1, $a0
/* AB804 80115104 0007000D */  break     7
.L80115108:
/* AB808 80115108 2401FFFF */  addiu     $at, $zero, -0x1
/* AB80C 8011510C 14810004 */  bne       $a0, $at, .L80115120
/* AB810 80115110 3C018000 */   lui      $at, (0x80000000 >> 16)
/* AB814 80115114 14610002 */  bne       $v1, $at, .L80115120
/* AB818 80115118 00000000 */   nop
/* AB81C 8011511C 0006000D */  break     6
.L80115120:
/* AB820 80115120 00001812 */  mflo      $v1
/* AB824 80115124 00042040 */  sll       $a0, $a0, 1
/* AB828 80115128 14800002 */  bnez      $a0, .L80115134
/* AB82C 8011512C 00E4001A */   div      $zero, $a3, $a0
/* AB830 80115130 0007000D */  break     7
.L80115134:
/* AB834 80115134 2401FFFF */  addiu     $at, $zero, -0x1
/* AB838 80115138 14810004 */  bne       $a0, $at, .L8011514C
/* AB83C 8011513C 3C018000 */   lui      $at, (0x80000000 >> 16)
/* AB840 80115140 14E10002 */  bne       $a3, $at, .L8011514C
/* AB844 80115144 00000000 */   nop
/* AB848 80115148 0006000D */  break     6
.L8011514C:
/* AB84C 8011514C 00001012 */  mflo      $v0
/* AB850 80115150 28420004 */  slti      $v0, $v0, 0x4
/* AB854 80115154 1040FFCE */  beqz      $v0, .L80115090
/* AB858 80115158 02038021 */   addu     $s0, $s0, $v1
/* AB85C 8011515C 080454A2 */  j         .L80115288
/* AB860 80115160 00108040 */   sll      $s0, $s0, 1
.L80115164:
/* AB864 80115164 14620048 */  bne       $v1, $v0, .L80115288
/* AB868 80115168 00000000 */   nop
/* AB86C 8011516C 92420029 */  lbu       $v0, 0x29($s2)
/* AB870 80115170 54560045 */  bnel      $v0, $s6, .L80115288
/* AB874 80115174 00108080 */   sll      $s0, $s0, 2
/* AB878 80115178 96470022 */  lhu       $a3, 0x22($s2)
/* AB87C 8011517C 24040002 */  addiu     $a0, $zero, 0x2
/* AB880 80115180 14800002 */  bnez      $a0, .L8011518C
/* AB884 80115184 00E4001A */   div      $zero, $a3, $a0
/* AB888 80115188 0007000D */  break     7
.L8011518C:
/* AB88C 8011518C 2401FFFF */  addiu     $at, $zero, -0x1
/* AB890 80115190 14810004 */  bne       $a0, $at, .L801151A4
/* AB894 80115194 3C018000 */   lui      $at, (0x80000000 >> 16)
/* AB898 80115198 14E10002 */  bne       $a3, $at, .L801151A4
/* AB89C 8011519C 00000000 */   nop
/* AB8A0 801151A0 0006000D */  break     6
.L801151A4:
/* AB8A4 801151A4 00001012 */  mflo      $v0
/* AB8A8 801151A8 0044102A */  slt       $v0, $v0, $a0
/* AB8AC 801151AC 54400036 */  bnel      $v0, $zero, .L80115288
/* AB8B0 801151B0 00108080 */   sll      $s0, $s0, 2
/* AB8B4 801151B4 96460026 */  lhu       $a2, 0x26($s2)
.L801151B8:
/* AB8B8 801151B8 14800002 */  bnez      $a0, .L801151C4
/* AB8BC 801151BC 00C4001A */   div      $zero, $a2, $a0
/* AB8C0 801151C0 0007000D */  break     7
.L801151C4:
/* AB8C4 801151C4 2401FFFF */  addiu     $at, $zero, -0x1
/* AB8C8 801151C8 14810004 */  bne       $a0, $at, .L801151DC
/* AB8CC 801151CC 3C018000 */   lui      $at, (0x80000000 >> 16)
/* AB8D0 801151D0 14C10002 */  bne       $a2, $at, .L801151DC
/* AB8D4 801151D4 00000000 */   nop
/* AB8D8 801151D8 0006000D */  break     6
.L801151DC:
/* AB8DC 801151DC 00001012 */  mflo      $v0
/* AB8E0 801151E0 58400029 */  blezl     $v0, .L80115288
/* AB8E4 801151E4 00108080 */   sll      $s0, $s0, 2
/* AB8E8 801151E8 14800002 */  bnez      $a0, .L801151F4
/* AB8EC 801151EC 00E4001A */   div      $zero, $a3, $a0
/* AB8F0 801151F0 0007000D */  break     7
.L801151F4:
/* AB8F4 801151F4 2401FFFF */  addiu     $at, $zero, -0x1
/* AB8F8 801151F8 14810004 */  bne       $a0, $at, .L8011520C
/* AB8FC 801151FC 3C018000 */   lui      $at, (0x80000000 >> 16)
/* AB900 80115200 14E10002 */  bne       $a3, $at, .L8011520C
/* AB904 80115204 00000000 */   nop
/* AB908 80115208 0006000D */  break     6
.L8011520C:
/* AB90C 8011520C 00001012 */  mflo      $v0
/* AB910 80115210 00000000 */  nop
/* AB914 80115214 00000000 */  nop
/* AB918 80115218 00460018 */  mult      $v0, $a2
/* AB91C 8011521C 00001812 */  mflo      $v1
/* AB920 80115220 00000000 */  nop
/* AB924 80115224 14800002 */  bnez      $a0, .L80115230
/* AB928 80115228 0064001A */   div      $zero, $v1, $a0
/* AB92C 8011522C 0007000D */  break     7
.L80115230:
/* AB930 80115230 2401FFFF */  addiu     $at, $zero, -0x1
/* AB934 80115234 14810004 */  bne       $a0, $at, .L80115248
/* AB938 80115238 3C018000 */   lui      $at, (0x80000000 >> 16)
/* AB93C 8011523C 14610002 */  bne       $v1, $at, .L80115248
/* AB940 80115240 00000000 */   nop
/* AB944 80115244 0006000D */  break     6
.L80115248:
/* AB948 80115248 00001812 */  mflo      $v1
/* AB94C 8011524C 00042040 */  sll       $a0, $a0, 1
/* AB950 80115250 14800002 */  bnez      $a0, .L8011525C
/* AB954 80115254 00E4001A */   div      $zero, $a3, $a0
/* AB958 80115258 0007000D */  break     7
.L8011525C:
/* AB95C 8011525C 2401FFFF */  addiu     $at, $zero, -0x1
/* AB960 80115260 14810004 */  bne       $a0, $at, .L80115274
/* AB964 80115264 3C018000 */   lui      $at, (0x80000000 >> 16)
/* AB968 80115268 14E10002 */  bne       $a3, $at, .L80115274
/* AB96C 8011526C 00000000 */   nop
/* AB970 80115270 0006000D */  break     6
.L80115274:
/* AB974 80115274 00001012 */  mflo      $v0
/* AB978 80115278 28420002 */  slti      $v0, $v0, 0x2
/* AB97C 8011527C 1040FFCE */  beqz      $v0, .L801151B8
/* AB980 80115280 02038021 */   addu     $s0, $s0, $v1
/* AB984 80115284 00108080 */  sll       $s0, $s0, 2
.L80115288:
/* AB988 80115288 9642002A */  lhu       $v0, 0x2A($s2)
/* AB98C 8011528C 24030002 */  addiu     $v1, $zero, 0x2
/* AB990 80115290 3042000F */  andi      $v0, $v0, 0xF
/* AB994 80115294 14430007 */  bne       $v0, $v1, .L801152B4
/* AB998 80115298 0000A82D */   daddu    $s5, $zero, $zero
/* AB99C 8011529C 9642002C */  lhu       $v0, 0x2C($s2)
/* AB9A0 801152A0 24080100 */  addiu     $t0, $zero, 0x100
/* AB9A4 801152A4 30420F00 */  andi      $v0, $v0, 0xF00
/* AB9A8 801152A8 14480002 */  bne       $v0, $t0, .L801152B4
/* AB9AC 801152AC 24150020 */   addiu    $s5, $zero, 0x20
/* AB9B0 801152B0 24150200 */  addiu     $s5, $zero, 0x200
.L801152B4:
/* AB9B4 801152B4 92430029 */  lbu       $v1, 0x29($s2)
/* AB9B8 801152B8 24020003 */  addiu     $v0, $zero, 0x3
/* AB9BC 801152BC 1462001F */  bne       $v1, $v0, .L8011533C
/* AB9C0 801152C0 0000982D */   daddu    $s3, $zero, $zero
/* AB9C4 801152C4 96440020 */  lhu       $a0, 0x20($s2)
/* AB9C8 801152C8 96420024 */  lhu       $v0, 0x24($s2)
/* AB9CC 801152CC 00820018 */  mult      $a0, $v0
/* AB9D0 801152D0 9643002C */  lhu       $v1, 0x2C($s2)
/* AB9D4 801152D4 3063F000 */  andi      $v1, $v1, 0xF000
/* AB9D8 801152D8 00008812 */  mflo      $s1
/* AB9DC 801152DC 14600003 */  bnez      $v1, .L801152EC
/* AB9E0 801152E0 24081000 */   addiu    $t0, $zero, 0x1000
/* AB9E4 801152E4 080454C3 */  j         .L8011530C
/* AB9E8 801152E8 00118842 */   srl      $s1, $s1, 1
.L801152EC:
/* AB9EC 801152EC 10680007 */  beq       $v1, $t0, .L8011530C
/* AB9F0 801152F0 24022000 */   addiu    $v0, $zero, 0x2000
/* AB9F4 801152F4 14620003 */  bne       $v1, $v0, .L80115304
/* AB9F8 801152F8 24023000 */   addiu    $v0, $zero, 0x3000
/* AB9FC 801152FC 080454C3 */  j         .L8011530C
/* ABA00 80115300 00118840 */   sll      $s1, $s1, 1
.L80115304:
/* ABA04 80115304 50620001 */  beql      $v1, $v0, .L8011530C
/* ABA08 80115308 00118880 */   sll      $s1, $s1, 2
.L8011530C:
/* ABA0C 8011530C 9642002A */  lhu       $v0, 0x2A($s2)
/* ABA10 80115310 24030020 */  addiu     $v1, $zero, 0x20
/* ABA14 80115314 304200F0 */  andi      $v0, $v0, 0xF0
/* ABA18 80115318 14430009 */  bne       $v0, $v1, .L80115340
/* ABA1C 8011531C 0000982D */   daddu    $s3, $zero, $zero
/* ABA20 80115320 9642002C */  lhu       $v0, 0x2C($s2)
/* ABA24 80115324 24081000 */  addiu     $t0, $zero, 0x1000
/* ABA28 80115328 3042F000 */  andi      $v0, $v0, 0xF000
/* ABA2C 8011532C 14480004 */  bne       $v0, $t0, .L80115340
/* ABA30 80115330 0060982D */   daddu    $s3, $v1, $zero
/* ABA34 80115334 080454D0 */  j         .L80115340
/* ABA38 80115338 24130200 */   addiu    $s3, $zero, 0x200
.L8011533C:
/* ABA3C 8011533C 0260882D */  daddu     $s1, $s3, $zero
.L80115340:
/* ABA40 80115340 02E0202D */  daddu     $a0, $s7, $zero
/* ABA44 80115344 0C01BB5C */  jal       strcmp
/* ABA48 80115348 0240282D */   daddu    $a1, $s2, $zero
/* ABA4C 8011534C 1040000D */  beqz      $v0, .L80115384
/* ABA50 80115350 02151021 */   addu     $v0, $s0, $s5
/* ABA54 80115354 24420030 */  addiu     $v0, $v0, 0x30
/* ABA58 80115358 0282A021 */  addu      $s4, $s4, $v0
/* ABA5C 8011535C 8FA80020 */  lw        $t0, 0x20($sp)
/* ABA60 80115360 02331021 */  addu      $v0, $s1, $s3
/* ABA64 80115364 25080001 */  addiu     $t0, $t0, 0x1
/* ABA68 80115368 AFA80020 */  sw        $t0, 0x20($sp)
/* ABA6C 8011536C 8FA80058 */  lw        $t0, 0x58($sp)
/* ABA70 80115370 0282A021 */  addu      $s4, $s4, $v0
/* ABA74 80115374 03C81021 */  addu      $v0, $fp, $t0
/* ABA78 80115378 0282102B */  sltu      $v0, $s4, $v0
/* ABA7C 8011537C 1440FE94 */  bnez      $v0, .L80114DD0
/* ABA80 80115380 0280202D */   daddu    $a0, $s4, $zero
.L80115384:
/* ABA84 80115384 3C020004 */  lui       $v0, (0x40000 >> 16)
/* ABA88 80115388 03C21021 */  addu      $v0, $fp, $v0
/* ABA8C 8011538C 0282102B */  sltu      $v0, $s4, $v0
/* ABA90 80115390 14400009 */  bnez      $v0, .L801153B8
/* ABA94 80115394 00000000 */   nop
.L80115398:
/* ABA98 80115398 3C028015 */  lui       $v0, %hi(mdl_treeIterPos)
/* ABA9C 8011539C 8C423224 */  lw        $v0, %lo(mdl_treeIterPos)($v0)
/* ABAA0 801153A0 3C03800A */  lui       $v1, %hi(mdl_currentModelTreeNodeInfo)
/* ABAA4 801153A4 8C63A5F4 */  lw        $v1, %lo(mdl_currentModelTreeNodeInfo)($v1)
/* ABAA8 801153A8 00021080 */  sll       $v0, $v0, 2
/* ABAAC 801153AC 00431021 */  addu      $v0, $v0, $v1
/* ABAB0 801153B0 0804551A */  j         .L80115468
/* ABAB4 801153B4 A0400002 */   sb       $zero, 0x2($v0)
.L801153B8:
/* ABAB8 801153B8 3C168015 */  lui       $s6, %hi(mdl_treeIterPos)
/* ABABC 801153BC 26D63224 */  addiu     $s6, $s6, %lo(mdl_treeIterPos)
/* ABAC0 801153C0 3C17800A */  lui       $s7, %hi(mdl_currentModelTreeNodeInfo)
/* ABAC4 801153C4 26F7A5F4 */  addiu     $s7, $s7, %lo(mdl_currentModelTreeNodeInfo)
/* ABAC8 801153C8 8EC20000 */  lw        $v0, 0x0($s6)
/* ABACC 801153CC 8EE30000 */  lw        $v1, 0x0($s7)
/* ABAD0 801153D0 8FA80020 */  lw        $t0, 0x20($sp)
/* ABAD4 801153D4 00021080 */  sll       $v0, $v0, 2
/* ABAD8 801153D8 00431021 */  addu      $v0, $v0, $v1
/* ABADC 801153DC 25030001 */  addiu     $v1, $t0, 0x1
/* ABAE0 801153E0 A0430002 */  sb        $v1, 0x2($v0)
/* ABAE4 801153E4 8EC20000 */  lw        $v0, 0x0($s6)
/* ABAE8 801153E8 8EE30000 */  lw        $v1, 0x0($s7)
/* ABAEC 801153EC 00021080 */  sll       $v0, $v0, 2
/* ABAF0 801153F0 00431021 */  addu      $v0, $v0, $v1
/* ABAF4 801153F4 90430002 */  lbu       $v1, 0x2($v0)
/* ABAF8 801153F8 3C048016 */  lui       $a0, %hi(mdl_textureHandles)
/* ABAFC 801153FC 2484A590 */  addiu     $a0, $a0, %lo(mdl_textureHandles)
/* ABB00 80115400 00031100 */  sll       $v0, $v1, 4
/* ABB04 80115404 00431021 */  addu      $v0, $v0, $v1
/* ABB08 80115408 00021080 */  sll       $v0, $v0, 2
/* ABB0C 8011540C 00442821 */  addu      $a1, $v0, $a0
/* ABB10 80115410 8CA20000 */  lw        $v0, 0x0($a1)
/* ABB14 80115414 14400014 */  bnez      $v0, .L80115468
/* ABB18 80115418 26940030 */   addiu    $s4, $s4, 0x30
/* ABB1C 8011541C 0280202D */  daddu     $a0, $s4, $zero
/* ABB20 80115420 0240302D */  daddu     $a2, $s2, $zero
/* ABB24 80115424 0200382D */  daddu     $a3, $s0, $zero
/* ABB28 80115428 AFB50010 */  sw        $s5, 0x10($sp)
/* ABB2C 8011542C AFB10014 */  sw        $s1, 0x14($sp)
/* ABB30 80115430 0C0452D6 */  jal       func_80114B58
/* ABB34 80115434 AFB30018 */   sw       $s3, 0x18($sp)
/* ABB38 80115438 02902021 */  addu      $a0, $s4, $s0
/* ABB3C 8011543C 00952021 */  addu      $a0, $a0, $s5
/* ABB40 80115440 00912021 */  addu      $a0, $a0, $s1
/* ABB44 80115444 00932021 */  addu      $a0, $a0, $s3
/* ABB48 80115448 8EC20000 */  lw        $v0, 0x0($s6)
/* ABB4C 8011544C 8EE30000 */  lw        $v1, 0x0($s7)
/* ABB50 80115450 8FA70058 */  lw        $a3, 0x58($sp)
/* ABB54 80115454 00021080 */  sll       $v0, $v0, 2
/* ABB58 80115458 00431021 */  addu      $v0, $v0, $v1
/* ABB5C 8011545C 90450002 */  lbu       $a1, 0x2($v0)
/* ABB60 80115460 0C045526 */  jal       func_80115498
/* ABB64 80115464 03C0302D */   daddu    $a2, $fp, $zero
.L80115468:
/* ABB68 80115468 8FBF004C */  lw        $ra, 0x4C($sp)
/* ABB6C 8011546C 8FBE0048 */  lw        $fp, 0x48($sp)
/* ABB70 80115470 8FB70044 */  lw        $s7, 0x44($sp)
/* ABB74 80115474 8FB60040 */  lw        $s6, 0x40($sp)
/* ABB78 80115478 8FB5003C */  lw        $s5, 0x3C($sp)
/* ABB7C 8011547C 8FB40038 */  lw        $s4, 0x38($sp)
/* ABB80 80115480 8FB30034 */  lw        $s3, 0x34($sp)
/* ABB84 80115484 8FB20030 */  lw        $s2, 0x30($sp)
/* ABB88 80115488 8FB1002C */  lw        $s1, 0x2C($sp)
/* ABB8C 8011548C 8FB00028 */  lw        $s0, 0x28($sp)
/* ABB90 80115490 03E00008 */  jr        $ra
/* ABB94 80115494 27BD0050 */   addiu    $sp, $sp, 0x50

### DECOMPILED C INSTRUCTIONS:

void load_tile_header(ModelNodeProperty* propertyName, s32 romOffset, s32 size) {
    char* textureName = (char*)propertyName->data.p;
    u32 baseOffset = romOffset;
    s32 textureID = 0;
    u32 paletteSize;
    u32 rasterSize;
    u32 auxPaletteSize;
    u32 auxRasterSize;
    TextureHeader* header;
    TextureHandle* textureHandle;
    s32 mainSize;

    if (textureName == NULL) {
        (*mdl_currentModelTreeNodeInfo)[mdl_treeIterPos].textureID = 0;
        return;
    }

    while (romOffset < baseOffset + size) {
        dma_copy((u8*)romOffset, (u8*)romOffset + sizeof(gCurrentTileDescriptor), &gCurrentTileDescriptor);
        header = &gCurrentTileDescriptor;

        rasterSize = header->mainW * header->mainH;

        if (header->mainBitDepth == G_IM_SIZ_4b) {
            if (header->extraTiles == EXTRA_TILE_MIPMAPS) {
                s32 d = 2;
                while (header->mainW / d >= 16 && header->mainH / d > 0) {
                    rasterSize += header->mainW / d * header->mainH / d;
                    d *= 2;
                }
            }
            rasterSize /= 2;
        } else if (header->mainBitDepth == G_IM_SIZ_8b) {
            if (header->extraTiles == EXTRA_TILE_MIPMAPS) {
                s32 d = 2;
                while (header->mainW / d >= 8 && header->mainH / d > 0) {
                    rasterSize += header->mainW / d * header->mainH / d;
                    d *= 2;
                }
            }
        } else {
            do {} while (0);
            if (header->mainBitDepth == G_IM_SIZ_16b) {
                if (header->extraTiles == EXTRA_TILE_MIPMAPS) {
                    s32 d = 2;
                    while (header->mainW / d >= 4 && header->mainH / d > 0) {
                        rasterSize += header->mainW / d * header->mainH / d;
                        d *= 2;
                    }
                }
                rasterSize *= 2;
            } else if (header->mainBitDepth == G_IM_SIZ_32b) {
                if (header->extraTiles == EXTRA_TILE_MIPMAPS) {
                    s32 d = 2;
                    while (header->mainW / d >= 2 && header->mainH / d > 0) {
                        rasterSize += header->mainW / d * header->mainH / d;
                        d *= 2;
                    }
                }
                rasterSize *= 4;
            }
        }

        if (header->mainFmt == G_IM_FMT_CI) {
            paletteSize = 0x20;
            if (header->mainBitDepth == G_IM_SIZ_8b) {
                paletteSize = 0x200;
            }
        } else {
            paletteSize = 0;
        }

        if (header->extraTiles == EXTRA_TILE_AUX_INDEPENDENT) {
            auxRasterSize = header->auxW * header->auxH;
            if (header->auxBitDepth == G_IM_SIZ_4b) {
                auxRasterSize /= 2;
            } else if (header->auxBitDepth == G_IM_SIZ_8b) {
            } else if (header->auxBitDepth == G_IM_SIZ_16b) {
                auxRasterSize *= 2;
            } else {
                if (header->auxBitDepth == G_IM_SIZ_32b) {
                    auxRasterSize *= 4;
                }
            }
            if (header->auxFmt == G_IM_FMT_CI) {
                auxPaletteSize = 0x20;
                if (header->auxBitDepth == G_IM_SIZ_8b) {
                    auxPaletteSize = 0x200;
                }
            } else {
                auxPaletteSize = 0;
            }
        } else {
            auxPaletteSize = 0;
            auxRasterSize = 0;
        }

        if (strcmp(textureName, header->name) == 0) {
            break;
        }

        textureID++;
        mainSize = rasterSize + paletteSize + sizeof(*header);
        romOffset += mainSize;
        romOffset += auxRasterSize + auxPaletteSize;
    }

    if (romOffset >= baseOffset + 0x40000) {
        (*mdl_currentModelTreeNodeInfo)[mdl_treeIterPos].textureID = 0;
        return;
    }

    (*mdl_currentModelTreeNodeInfo)[mdl_treeIterPos].textureID = textureID + 1;
    textureHandle = &mdl_textureHandles[(*mdl_currentModelTreeNodeInfo)[mdl_treeIterPos].textureID];
    romOffset += sizeof(*header);

    if (textureHandle->gfx == NULL) {
        func_80114B58(romOffset, textureHandle, header, rasterSize, paletteSize, auxRasterSize, auxPaletteSize);
        func_80115498(romOffset + rasterSize + paletteSize + auxRasterSize + auxPaletteSize, (*mdl_currentModelTreeNodeInfo)[mdl_treeIterPos].textureID, baseOffset, size);
    }

}


### RAW ASSEMBLY INSTRUCTIONS:

glabel func_E00863B4
/* 389C04 E00863B4 27BDFF00 */  addiu     $sp, $sp, -0x100
/* 389C08 E00863B8 AFBF00EC */  sw        $ra, 0xEC($sp)
/* 389C0C E00863BC AFBE00E8 */  sw        $fp, 0xE8($sp)
/* 389C10 E00863C0 AFB700E4 */  sw        $s7, 0xE4($sp)
/* 389C14 E00863C4 AFB600E0 */  sw        $s6, 0xE0($sp)
/* 389C18 E00863C8 AFB500DC */  sw        $s5, 0xDC($sp)
/* 389C1C E00863CC AFB400D8 */  sw        $s4, 0xD8($sp)
/* 389C20 E00863D0 AFB300D4 */  sw        $s3, 0xD4($sp)
/* 389C24 E00863D4 AFB200D0 */  sw        $s2, 0xD0($sp)
/* 389C28 E00863D8 AFB100CC */  sw        $s1, 0xCC($sp)
/* 389C2C E00863DC AFB000C8 */  sw        $s0, 0xC8($sp)
/* 389C30 E00863E0 F7B600F8 */  sdc1      $f22, 0xF8($sp)
/* 389C34 E00863E4 F7B400F0 */  sdc1      $f20, 0xF0($sp)
/* 389C38 E00863E8 AFA40100 */  sw        $a0, 0x100($sp)
/* 389C3C E00863EC 8C94000C */  lw        $s4, 0xC($a0)
/* 389C40 E00863F0 3C0140A0 */  lui       $at, (0x40A00000 >> 16)
/* 389C44 E00863F4 44810000 */  mtc1      $at, $f0
/* 389C48 E00863F8 C6820038 */  lwc1      $f2, 0x38($s4)
/* 389C4C E00863FC 46001502 */  mul.s     $f20, $f2, $f0
/* 389C50 E0086400 00000000 */  nop
/* 389C54 E0086404 4600A10D */  trunc.w.s $f4, $f20
/* 389C58 E0086408 E7A400A4 */  swc1      $f4, 0xA4($sp)
/* 389C5C E008640C 8FA900A4 */  lw        $t1, 0xA4($sp)
/* 389C60 E0086410 8E960034 */  lw        $s6, 0x34($s4)
/* 389C64 E0086414 8E950000 */  lw        $s5, 0x0($s4)
/* 389C68 E0086418 29220005 */  slti      $v0, $t1, 0x5
/* 389C6C E008641C 10400191 */  beqz      $v0, .LE0086A64
/* 389C70 E0086420 3C08DB06 */   lui      $t0, (0xDB060024 >> 16)
/* 389C74 E0086424 35080024 */  ori       $t0, $t0, (0xDB060024 & 0xFFFF)
/* 389C78 E0086428 3C11800A */  lui       $s1, %hi(gMainGfxPos)
/* 389C7C E008642C 2631A66C */  addiu     $s1, $s1, %lo(gMainGfxPos)
/* 389C80 E0086430 3C02E700 */  lui       $v0, (0xE7000000 >> 16)
/* 389C84 E0086434 8E260000 */  lw        $a2, 0x0($s1)
/* 389C88 E0086438 44800000 */  mtc1      $zero, $f0
/* 389C8C E008643C 00C0182D */  daddu     $v1, $a2, $zero
/* 389C90 E0086440 24C60008 */  addiu     $a2, $a2, 0x8
/* 389C94 E0086444 AC620000 */  sw        $v0, 0x0($v1)
/* 389C98 E0086448 AC600004 */  sw        $zero, 0x4($v1)
/* 389C9C E008644C ACC80000 */  sw        $t0, 0x0($a2)
/* 389CA0 E0086450 8FA90100 */  lw        $t1, 0x100($sp)
/* 389CA4 E0086454 3C088000 */  lui       $t0, (0x80000000 >> 16)
/* 389CA8 E0086458 8D220010 */  lw        $v0, 0x10($t1)
/* 389CAC E008645C 44050000 */  mfc1      $a1, $f0
/* 389CB0 E0086460 8C42001C */  lw        $v0, 0x1C($v0)
/* 389CB4 E0086464 3C038007 */  lui       $v1, %hi(gCurrentCameraID)
/* 389CB8 E0086468 8C637410 */  lw        $v1, %lo(gCurrentCameraID)($v1)
/* 389CBC E008646C 00481021 */  addu      $v0, $v0, $t0
/* 389CC0 E0086470 ACC20004 */  sw        $v0, 0x4($a2)
/* 389CC4 E0086474 00031080 */  sll       $v0, $v1, 2
/* 389CC8 E0086478 00431021 */  addu      $v0, $v0, $v1
/* 389CCC E008647C 00021080 */  sll       $v0, $v0, 2
/* 389CD0 E0086480 00431023 */  subu      $v0, $v0, $v1
/* 389CD4 E0086484 000218C0 */  sll       $v1, $v0, 3
/* 389CD8 E0086488 00431021 */  addu      $v0, $v0, $v1
/* 389CDC E008648C 000210C0 */  sll       $v0, $v0, 3
/* 389CE0 E0086490 C6800028 */  lwc1      $f0, 0x28($s4)
/* 389CE4 E0086494 3C01800B */  lui       $at, %hi(gCameras + 0x6C)
/* 389CE8 E0086498 00220821 */  addu      $at, $at, $v0
/* 389CEC E008649C C4221DEC */  lwc1      $f2, %lo(gCameras + 0x6C)($at)
/* 389CF0 E00864A0 27A40020 */  addiu     $a0, $sp, 0x20
/* 389CF4 E00864A4 E7A00010 */  swc1      $f0, 0x10($sp)
/* 389CF8 E00864A8 C6800004 */  lwc1      $f0, 0x4($s4)
/* 389CFC E00864AC 3C130001 */  lui       $s3, (0x11630 >> 16)
/* 389D00 E00864B0 AE260000 */  sw        $a2, 0x0($s1)
/* 389D04 E00864B4 24C60008 */  addiu     $a2, $a2, 0x8
/* 389D08 E00864B8 E7A00014 */  swc1      $f0, 0x14($sp)
/* 389D0C E00864BC C6800008 */  lwc1      $f0, 0x8($s4)
/* 389D10 E00864C0 46001087 */  neg.s     $f2, $f2
/* 389D14 E00864C4 AE260000 */  sw        $a2, 0x0($s1)
/* 389D18 E00864C8 44061000 */  mfc1      $a2, $f2
/* 389D1C E00864CC 36731630 */  ori       $s3, $s3, (0x11630 & 0xFFFF)
/* 389D20 E00864D0 E7A00018 */  swc1      $f0, 0x18($sp)
/* 389D24 E00864D4 C680000C */  lwc1      $f0, 0xC($s4)
/* 389D28 E00864D8 00A0382D */  daddu     $a3, $a1, $zero
/* 389D2C E00864DC 0C080180 */  jal       shim_guPositionF
/* 389D30 E00864E0 E7A0001C */   swc1     $f0, 0x1C($sp)
/* 389D34 E00864E4 27A40020 */  addiu     $a0, $sp, 0x20
/* 389D38 E00864E8 3C108007 */  lui       $s0, %hi(gMatrixListPos)
/* 389D3C E00864EC 261041F0 */  addiu     $s0, $s0, %lo(gMatrixListPos)
/* 389D40 E00864F0 3C12800A */  lui       $s2, %hi(gDisplayContext)
/* 389D44 E00864F4 2652A674 */  addiu     $s2, $s2, %lo(gDisplayContext)
/* 389D48 E00864F8 96050000 */  lhu       $a1, 0x0($s0)
/* 389D4C E00864FC 8E420000 */  lw        $v0, 0x0($s2)
/* 389D50 E0086500 00052980 */  sll       $a1, $a1, 6
/* 389D54 E0086504 00B32821 */  addu      $a1, $a1, $s3
/* 389D58 E0086508 0C080118 */  jal       shim_guMtxF2L
/* 389D5C E008650C 00452821 */   addu     $a1, $v0, $a1
/* 389D60 E0086510 8E220000 */  lw        $v0, 0x0($s1)
/* 389D64 E0086514 3C014380 */  lui       $at, (0x43800000 >> 16)
/* 389D68 E0086518 44811000 */  mtc1      $at, $f2
/* 389D6C E008651C 0040202D */  daddu     $a0, $v0, $zero
/* 389D70 E0086520 24420008 */  addiu     $v0, $v0, 0x8
/* 389D74 E0086524 AE220000 */  sw        $v0, 0x0($s1)
/* 389D78 E0086528 96030000 */  lhu       $v1, 0x0($s0)
/* 389D7C E008652C 3C02DA38 */  lui       $v0, (0xDA380000 >> 16)
/* 389D80 E0086530 AC820000 */  sw        $v0, 0x0($a0)
/* 389D84 E0086534 24620001 */  addiu     $v0, $v1, 0x1
/* 389D88 E0086538 A6020000 */  sh        $v0, 0x0($s0)
/* 389D8C E008653C C7A000A4 */  lwc1      $f0, 0xA4($sp)
/* 389D90 E0086540 46800020 */  cvt.s.w   $f0, $f0
/* 389D94 E0086544 4600A001 */  sub.s     $f0, $f20, $f0
/* 389D98 E0086548 3063FFFF */  andi      $v1, $v1, 0xFFFF
/* 389D9C E008654C 00031980 */  sll       $v1, $v1, 6
/* 389DA0 E0086550 46020002 */  mul.s     $f0, $f0, $f2
/* 389DA4 E0086554 00000000 */  nop
/* 389DA8 E0086558 8E420000 */  lw        $v0, 0x0($s2)
/* 389DAC E008655C 00731821 */  addu      $v1, $v1, $s3
/* 389DB0 E0086560 00431021 */  addu      $v0, $v0, $v1
/* 389DB4 E0086564 AC820004 */  sw        $v0, 0x4($a0)
/* 389DB8 E0086568 4600010D */  trunc.w.s $f4, $f0
/* 389DBC E008656C E7A400A0 */  swc1      $f4, 0xA0($sp)
/* 389DC0 E0086570 8FA900A4 */  lw        $t1, 0xA4($sp)
/* 389DC4 E0086574 29220004 */  slti      $v0, $t1, 0x4
/* 389DC8 E0086578 38480001 */  xori      $t0, $v0, 0x1
/* 389DCC E008657C 8E89002C */  lw        $t1, 0x2C($s4)
/* 389DD0 E0086580 24020001 */  addiu     $v0, $zero, 0x1
/* 389DD4 E0086584 12A20008 */  beq       $s5, $v0, .LE00865A8
/* 389DD8 E0086588 AFA900BC */   sw       $t1, 0xBC($sp)
/* 389DDC E008658C 2AA20002 */  slti      $v0, $s5, 0x2
/* 389DE0 E0086590 14400035 */  bnez      $v0, .LE0086668
/* 389DE4 E0086594 24020002 */   addiu    $v0, $zero, 0x2
/* 389DE8 E0086598 12A20028 */  beq       $s5, $v0, .LE008663C
/* 389DEC E008659C 32C20001 */   andi     $v0, $s6, 0x1
/* 389DF0 E00865A0 0802199A */  j         .LE0086668
/* 389DF4 E00865A4 00000000 */   nop
.LE00865A8:
/* 389DF8 E00865A8 26C3FFFF */  addiu     $v1, $s6, -0x1
/* 389DFC E00865AC 2862000D */  slti      $v0, $v1, 0xD
/* 389E00 E00865B0 50400004 */  beql      $v0, $zero, .LE00865C4
/* 389E04 E00865B4 0000182D */   daddu    $v1, $zero, $zero
/* 389E08 E00865B8 3C01E008 */  lui       $at, (0xE0086AE4 >> 16)
/* 389E0C E00865BC 00230821 */  addu      $at, $at, $v1
/* 389E10 E00865C0 90236AE4 */  lbu       $v1, (0xE0086AE4 & 0xFFFF)($at)
.LE00865C4:
/* 389E14 E00865C4 9282003D */  lbu       $v0, 0x3D($s4)
/* 389E18 E00865C8 00430018 */  mult      $v0, $v1
/* 389E1C E00865CC 00003812 */  mflo      $a3
/* 389E20 E00865D0 9282003E */  lbu       $v0, 0x3E($s4)
/* 389E24 E00865D4 00000000 */  nop
/* 389E28 E00865D8 00430018 */  mult      $v0, $v1
/* 389E2C E00865DC 00003012 */  mflo      $a2
/* 389E30 E00865E0 9282003F */  lbu       $v0, 0x3F($s4)
/* 389E34 E00865E4 00000000 */  nop
/* 389E38 E00865E8 00430018 */  mult      $v0, $v1
/* 389E3C E00865EC 00002812 */  mflo      $a1
/* 389E40 E00865F0 92820040 */  lbu       $v0, 0x40($s4)
/* 389E44 E00865F4 00000000 */  nop
/* 389E48 E00865F8 00430018 */  mult      $v0, $v1
/* 389E4C E00865FC 9289003C */  lbu       $t1, 0x3C($s4)
/* 389E50 E0086600 00073A03 */  sra       $a3, $a3, 8
/* 389E54 E0086604 0006F203 */  sra       $fp, $a2, 8
/* 389E58 E0086608 92820041 */  lbu       $v0, 0x41($s4)
/* 389E5C E008660C 00002012 */  mflo      $a0
/* 389E60 E0086610 00052A03 */  sra       $a1, $a1, 8
/* 389E64 E0086614 AFA900A8 */  sw        $t1, 0xA8($sp)
/* 389E68 E0086618 00430018 */  mult      $v0, $v1
/* 389E6C E008661C AFA700AC */  sw        $a3, 0xAC($sp)
/* 389E70 E0086620 AFA500B0 */  sw        $a1, 0xB0($sp)
/* 389E74 E0086624 00042203 */  sra       $a0, $a0, 8
/* 389E78 E0086628 AFA400B4 */  sw        $a0, 0xB4($sp)
/* 389E7C E008662C 00001012 */  mflo      $v0
/* 389E80 E0086630 00021203 */  sra       $v0, $v0, 8
/* 389E84 E0086634 080219A5 */  j         .LE0086694
/* 389E88 E0086638 AFA200B8 */   sw       $v0, 0xB8($sp)
.LE008663C:
/* 389E8C E008663C 1440000A */  bnez      $v0, .LE0086668
/* 389E90 E0086640 0000F02D */   daddu    $fp, $zero, $zero
/* 389E94 E0086644 AFA000A8 */  sw        $zero, 0xA8($sp)
/* 389E98 E0086648 AFA000AC */  sw        $zero, 0xAC($sp)
/* 389E9C E008664C 9289003C */  lbu       $t1, 0x3C($s4)
/* 389EA0 E0086650 AFA900B0 */  sw        $t1, 0xB0($sp)
/* 389EA4 E0086654 9289003D */  lbu       $t1, 0x3D($s4)
/* 389EA8 E0086658 AFA900B4 */  sw        $t1, 0xB4($sp)
/* 389EAC E008665C 9289003E */  lbu       $t1, 0x3E($s4)
/* 389EB0 E0086660 080219A5 */  j         .LE0086694
/* 389EB4 E0086664 AFA900B8 */   sw       $t1, 0xB8($sp)
.LE0086668:
/* 389EB8 E0086668 9289003C */  lbu       $t1, 0x3C($s4)
/* 389EBC E008666C AFA900A8 */  sw        $t1, 0xA8($sp)
/* 389EC0 E0086670 9289003D */  lbu       $t1, 0x3D($s4)
/* 389EC4 E0086674 AFA900AC */  sw        $t1, 0xAC($sp)
/* 389EC8 E0086678 9289003F */  lbu       $t1, 0x3F($s4)
/* 389ECC E008667C 929E003E */  lbu       $fp, 0x3E($s4)
/* 389ED0 E0086680 AFA900B0 */  sw        $t1, 0xB0($sp)
/* 389ED4 E0086684 92890040 */  lbu       $t1, 0x40($s4)
/* 389ED8 E0086688 AFA900B4 */  sw        $t1, 0xB4($sp)
/* 389EDC E008668C 92890041 */  lbu       $t1, 0x41($s4)
/* 389EE0 E0086690 AFA900B8 */  sw        $t1, 0xB8($sp)
.LE0086694:
/* 389EE4 E0086694 3C04800A */  lui       $a0, %hi(gMainGfxPos)
/* 389EE8 E0086698 2484A66C */  addiu     $a0, $a0, %lo(gMainGfxPos)
/* 389EEC E008669C 8C930000 */  lw        $s3, 0x0($a0)
/* 389EF0 E00866A0 3C02DE00 */  lui       $v0, (0xDE000000 >> 16)
/* 389EF4 E00866A4 AE620008 */  sw        $v0, 0x8($s3)
/* 389EF8 E00866A8 00151080 */  sll       $v0, $s5, 2
/* 389EFC E00866AC 3C03E008 */  lui       $v1, (0xE0086AB4 >> 16)
/* 389F00 E00866B0 00621821 */  addu      $v1, $v1, $v0
/* 389F04 E00866B4 8C636AB4 */  lw        $v1, (0xE0086AB4 & 0xFFFF)($v1)
/* 389F08 E00866B8 26620010 */  addiu     $v0, $s3, 0x10
/* 389F0C E00866BC AC820000 */  sw        $v0, 0x0($a0)
/* 389F10 E00866C0 AE63000C */  sw        $v1, 0xC($s3)
/* 389F14 E00866C4 3C03E008 */  lui       $v1, %hi(D_E0086AB4)
/* 389F18 E00866C8 24636AB4 */  addiu     $v1, $v1, %lo(D_E0086AB4)
/* 389F1C E00866CC 11000007 */  beqz      $t0, .LE00866EC
/* 389F20 E00866D0 26940044 */   addiu    $s4, $s4, 0x44
/* 389F24 E00866D4 26620018 */  addiu     $v0, $s3, 0x18
/* 389F28 E00866D8 AC820000 */  sw        $v0, 0x0($a0)
/* 389F2C E00866DC 3C02F200 */  lui       $v0, (0xF2000000 >> 16)
/* 389F30 E00866E0 AE620010 */  sw        $v0, 0x10($s3)
/* 389F34 E00866E4 3C020100 */  lui       $v0, (0x1000000 >> 16)
/* 389F38 E00866E8 AE620014 */  sw        $v0, 0x14($s3)
.LE00866EC:
/* 389F3C E00866EC 8FA90100 */  lw        $t1, 0x100($sp)
/* 389F40 E00866F0 8D220008 */  lw        $v0, 0x8($t1)
/* 389F44 E00866F4 24120001 */  addiu     $s2, $zero, 0x1
/* 389F48 E00866F8 0242102A */  slt       $v0, $s2, $v0
/* 389F4C E00866FC 10400063 */  beqz      $v0, .LE008688C
/* 389F50 E0086700 0080A82D */   daddu    $s5, $a0, $zero
/* 389F54 E0086704 27B10060 */  addiu     $s1, $sp, 0x60
/* 389F58 E0086708 3C178007 */  lui       $s7, %hi(gMatrixListPos)
/* 389F5C E008670C 26F741F0 */  addiu     $s7, $s7, %lo(gMatrixListPos)
/* 389F60 E0086710 3C160001 */  lui       $s6, (0x11630 >> 16)
/* 389F64 E0086714 36D61630 */  ori       $s6, $s6, (0x11630 & 0xFFFF)
/* 389F68 E0086718 3C03E008 */  lui       $v1, %hi(D_E0086AA0)
/* 389F6C E008671C 24636AA0 */  addiu     $v1, $v1, %lo(D_E0086AA0)
/* 389F70 E0086720 2690000C */  addiu     $s0, $s4, 0xC
/* 389F74 E0086724 8FA900A4 */  lw        $t1, 0xA4($sp)
/* 389F78 E0086728 4480A000 */  mtc1      $zero, $f20
/* 389F7C E008672C 3C013F80 */  lui       $at, (0x3F800000 >> 16)
/* 389F80 E0086730 4481B000 */  mtc1      $at, $f22
/* 389F84 E0086734 00091080 */  sll       $v0, $t1, 2
/* 389F88 E0086738 00431021 */  addu      $v0, $v0, $v1
/* 389F8C E008673C AFA200C0 */  sw        $v0, 0xC0($sp)
.LE0086740:
/* 389F90 E0086740 27A40020 */  addiu     $a0, $sp, 0x20
/* 389F94 E0086744 26520001 */  addiu     $s2, $s2, 0x1
/* 389F98 E0086748 8EA30000 */  lw        $v1, 0x0($s5)
/* 389F9C E008674C 4406A000 */  mfc1      $a2, $f20
/* 389FA0 E0086750 4407A000 */  mfc1      $a3, $f20
/* 389FA4 E0086754 0060282D */  daddu     $a1, $v1, $zero
/* 389FA8 E0086758 3C09DE00 */  lui       $t1, (0xDE000000 >> 16)
/* 389FAC E008675C ACA90000 */  sw        $t1, 0x0($a1)
/* 389FB0 E0086760 8E820000 */  lw        $v0, 0x0($s4)
/* 389FB4 E0086764 3C09E008 */  lui       $t1, %hi(D_E0086AB4)
/* 389FB8 E0086768 25296AB4 */  addiu     $t1, $t1, %lo(D_E0086AB4)
/* 389FBC E008676C 00021080 */  sll       $v0, $v0, 2
/* 389FC0 E0086770 00491021 */  addu      $v0, $v0, $t1
/* 389FC4 E0086774 8C420000 */  lw        $v0, 0x0($v0)
/* 389FC8 E0086778 24630008 */  addiu     $v1, $v1, 0x8
/* 389FCC E008677C ACA20004 */  sw        $v0, 0x4($a1)
/* 389FD0 E0086780 E7B60010 */  swc1      $f22, 0x10($sp)
/* 389FD4 E0086784 8E050010 */  lw        $a1, 0x10($s0)
/* 389FD8 E0086788 26940044 */  addiu     $s4, $s4, 0x44
/* 389FDC E008678C 0C080104 */  jal       shim_guRotateF
/* 389FE0 E0086790 AEA30000 */   sw       $v1, 0x0($s5)
/* 389FE4 E0086794 E7B40010 */  swc1      $f20, 0x10($sp)
/* 389FE8 E0086798 8E050018 */  lw        $a1, 0x18($s0)
/* 389FEC E008679C 4406A000 */  mfc1      $a2, $f20
/* 389FF0 E00867A0 4407B000 */  mfc1      $a3, $f22
/* 389FF4 E00867A4 0C080104 */  jal       shim_guRotateF
/* 389FF8 E00867A8 0220202D */   daddu    $a0, $s1, $zero
/* 389FFC E00867AC 0220202D */  daddu     $a0, $s1, $zero
/* 38A000 E00867B0 27A50020 */  addiu     $a1, $sp, 0x20
/* 38A004 E00867B4 0C080114 */  jal       shim_guMtxCatF
/* 38A008 E00867B8 00A0302D */   daddu    $a2, $a1, $zero
/* 38A00C E00867BC 8E05FFF8 */  lw        $a1, -0x8($s0)
/* 38A010 E00867C0 8E06FFFC */  lw        $a2, -0x4($s0)
/* 38A014 E00867C4 8E070000 */  lw        $a3, 0x0($s0)
/* 38A018 E00867C8 0C080108 */  jal       shim_guTranslateF
/* 38A01C E00867CC 0220202D */   daddu    $a0, $s1, $zero
/* 38A020 E00867D0 0220202D */  daddu     $a0, $s1, $zero
/* 38A024 E00867D4 27A50020 */  addiu     $a1, $sp, 0x20
/* 38A028 E00867D8 0C080114 */  jal       shim_guMtxCatF
/* 38A02C E00867DC 00A0302D */   daddu    $a2, $a1, $zero
/* 38A030 E00867E0 27A40020 */  addiu     $a0, $sp, 0x20
/* 38A034 E00867E4 96E50000 */  lhu       $a1, 0x0($s7)
/* 38A038 E00867E8 3C02800A */  lui       $v0, %hi(gDisplayContext)
/* 38A03C E00867EC 8C42A674 */  lw        $v0, %lo(gDisplayContext)($v0)
/* 38A040 E00867F0 00052980 */  sll       $a1, $a1, 6
/* 38A044 E00867F4 00B62821 */  addu      $a1, $a1, $s6
/* 38A048 E00867F8 0C080118 */  jal       shim_guMtxF2L
/* 38A04C E00867FC 00452821 */   addu     $a1, $v0, $a1
/* 38A050 E0086800 8EA40000 */  lw        $a0, 0x0($s5)
/* 38A054 E0086804 3C06D838 */  lui       $a2, (0xD8380002 >> 16)
/* 38A058 E0086808 0080282D */  daddu     $a1, $a0, $zero
/* 38A05C E008680C 24840008 */  addiu     $a0, $a0, 0x8
/* 38A060 E0086810 AEA40000 */  sw        $a0, 0x0($s5)
/* 38A064 E0086814 96E20000 */  lhu       $v0, 0x0($s7)
/* 38A068 E0086818 3C03DA38 */  lui       $v1, (0xDA380000 >> 16)
/* 38A06C E008681C ACA30000 */  sw        $v1, 0x0($a1)
/* 38A070 E0086820 24430001 */  addiu     $v1, $v0, 0x1
/* 38A074 E0086824 3042FFFF */  andi      $v0, $v0, 0xFFFF
/* 38A078 E0086828 00021180 */  sll       $v0, $v0, 6
/* 38A07C E008682C A6E30000 */  sh        $v1, 0x0($s7)
/* 38A080 E0086830 3C03800A */  lui       $v1, %hi(gDisplayContext)
/* 38A084 E0086834 8C63A674 */  lw        $v1, %lo(gDisplayContext)($v1)
/* 38A088 E0086838 00561021 */  addu      $v0, $v0, $s6
/* 38A08C E008683C 00621821 */  addu      $v1, $v1, $v0
/* 38A090 E0086840 ACA30004 */  sw        $v1, 0x4($a1)
/* 38A094 E0086844 3C09DE00 */  lui       $t1, (0xDE000000 >> 16)
/* 38A098 E0086848 AC890000 */  sw        $t1, 0x0($a0)
/* 38A09C E008684C 8FA900C0 */  lw        $t1, 0xC0($sp)
/* 38A0A0 E0086850 34C60002 */  ori       $a2, $a2, (0xD8380002 & 0xFFFF)
/* 38A0A4 E0086854 8D230000 */  lw        $v1, 0x0($t1)
/* 38A0A8 E0086858 24820008 */  addiu     $v0, $a0, 0x8
/* 38A0AC E008685C AEA20000 */  sw        $v0, 0x0($s5)
/* 38A0B0 E0086860 24020040 */  addiu     $v0, $zero, 0x40
/* 38A0B4 E0086864 AC860008 */  sw        $a2, 0x8($a0)
/* 38A0B8 E0086868 AC82000C */  sw        $v0, 0xC($a0)
/* 38A0BC E008686C AC830004 */  sw        $v1, 0x4($a0)
/* 38A0C0 E0086870 8FA90100 */  lw        $t1, 0x100($sp)
/* 38A0C4 E0086874 26100044 */  addiu     $s0, $s0, 0x44
/* 38A0C8 E0086878 8D220008 */  lw        $v0, 0x8($t1)
/* 38A0CC E008687C 24840010 */  addiu     $a0, $a0, 0x10
/* 38A0D0 E0086880 0242102A */  slt       $v0, $s2, $v0
/* 38A0D4 E0086884 1440FFAE */  bnez      $v0, .LE0086740
/* 38A0D8 E0086888 AEA40000 */   sw       $a0, 0x0($s5)
.LE008688C:
/* 38A0DC E008688C 27A40020 */  addiu     $a0, $sp, 0x20
/* 38A0E0 E0086890 3C150001 */  lui       $s5, (0x11630 >> 16)
/* 38A0E4 E0086894 36B51630 */  ori       $s5, $s5, (0x11630 & 0xFFFF)
/* 38A0E8 E0086898 3C10800A */  lui       $s0, %hi(gMainGfxPos)
/* 38A0EC E008689C 2610A66C */  addiu     $s0, $s0, %lo(gMainGfxPos)
/* 38A0F0 E00868A0 3C02DF00 */  lui       $v0, (0xDF000000 >> 16)
/* 38A0F4 E00868A4 3C14DE00 */  lui       $s4, (0xDE000000 >> 16)
/* 38A0F8 E00868A8 8E080000 */  lw        $t0, 0x0($s0)
/* 38A0FC E00868AC 3C013F80 */  lui       $at, (0x3F800000 >> 16)
/* 38A100 E00868B0 44810000 */  mtc1      $at, $f0
/* 38A104 E00868B4 0100182D */  daddu     $v1, $t0, $zero
/* 38A108 E00868B8 25080008 */  addiu     $t0, $t0, 0x8
/* 38A10C E00868BC AE080000 */  sw        $t0, 0x0($s0)
/* 38A110 E00868C0 AC620000 */  sw        $v0, 0x0($v1)
/* 38A114 E00868C4 3C02DE01 */  lui       $v0, (0xDE010000 >> 16)
/* 38A118 E00868C8 AC600004 */  sw        $zero, 0x4($v1)
/* 38A11C E00868CC AE620000 */  sw        $v0, 0x0($s3)
/* 38A120 E00868D0 25020008 */  addiu     $v0, $t0, 0x8
/* 38A124 E00868D4 AE680004 */  sw        $t0, 0x4($s3)
/* 38A128 E00868D8 AE020000 */  sw        $v0, 0x0($s0)
/* 38A12C E00868DC 3C02FA00 */  lui       $v0, (0xFA000000 >> 16)
/* 38A130 E00868E0 AD020000 */  sw        $v0, 0x0($t0)
/* 38A134 E00868E4 8FA900A8 */  lw        $t1, 0xA8($sp)
/* 38A138 E00868E8 3C0542F0 */  lui       $a1, (0x42F00000 >> 16)
/* 38A13C E00868EC 00091E00 */  sll       $v1, $t1, 24
/* 38A140 E00868F0 8FA900AC */  lw        $t1, 0xAC($sp)
/* 38A144 E00868F4 26730008 */  addiu     $s3, $s3, 0x8
/* 38A148 E00868F8 312200FF */  andi      $v0, $t1, 0xFF
/* 38A14C E00868FC 00021400 */  sll       $v0, $v0, 16
/* 38A150 E0086900 00621825 */  or        $v1, $v1, $v0
/* 38A154 E0086904 33C200FF */  andi      $v0, $fp, 0xFF
/* 38A158 E0086908 00021200 */  sll       $v0, $v0, 8
/* 38A15C E008690C 8FA900BC */  lw        $t1, 0xBC($sp)
/* 38A160 E0086910 00621825 */  or        $v1, $v1, $v0
/* 38A164 E0086914 312200FF */  andi      $v0, $t1, 0xFF
/* 38A168 E0086918 00621825 */  or        $v1, $v1, $v0
/* 38A16C E008691C 25020010 */  addiu     $v0, $t0, 0x10
/* 38A170 E0086920 AD030004 */  sw        $v1, 0x4($t0)
/* 38A174 E0086924 AE020000 */  sw        $v0, 0x0($s0)
/* 38A178 E0086928 3C02FB00 */  lui       $v0, (0xFB000000 >> 16)
/* 38A17C E008692C AD020008 */  sw        $v0, 0x8($t0)
/* 38A180 E0086930 8FA900B0 */  lw        $t1, 0xB0($sp)
/* 38A184 E0086934 44060000 */  mfc1      $a2, $f0
/* 38A188 E0086938 00091E00 */  sll       $v1, $t1, 24
/* 38A18C E008693C 8FA900B4 */  lw        $t1, 0xB4($sp)
/* 38A190 E0086940 00C0382D */  daddu     $a3, $a2, $zero
/* 38A194 E0086944 312200FF */  andi      $v0, $t1, 0xFF
/* 38A198 E0086948 00021400 */  sll       $v0, $v0, 16
/* 38A19C E008694C 8FA900B8 */  lw        $t1, 0xB8($sp)
/* 38A1A0 E0086950 00621825 */  or        $v1, $v1, $v0
/* 38A1A4 E0086954 312200FF */  andi      $v0, $t1, 0xFF
/* 38A1A8 E0086958 00021200 */  sll       $v0, $v0, 8
/* 38A1AC E008695C 8FA900A0 */  lw        $t1, 0xA0($sp)
/* 38A1B0 E0086960 00621825 */  or        $v1, $v1, $v0
/* 38A1B4 E0086964 312200FF */  andi      $v0, $t1, 0xFF
/* 38A1B8 E0086968 00621825 */  or        $v1, $v1, $v0
/* 38A1BC E008696C 25020018 */  addiu     $v0, $t0, 0x18
/* 38A1C0 E0086970 AD03000C */  sw        $v1, 0xC($t0)
/* 38A1C4 E0086974 AE020000 */  sw        $v0, 0x0($s0)
/* 38A1C8 E0086978 AD140010 */  sw        $s4, 0x10($t0)
/* 38A1CC E008697C AD130014 */  sw        $s3, 0x14($t0)
/* 38A1D0 E0086980 0C080104 */  jal       shim_guRotateF
/* 38A1D4 E0086984 AFA60010 */   sw       $a2, 0x10($sp)
/* 38A1D8 E0086988 27A40020 */  addiu     $a0, $sp, 0x20
/* 38A1DC E008698C 3C118007 */  lui       $s1, %hi(gMatrixListPos)
/* 38A1E0 E0086990 263141F0 */  addiu     $s1, $s1, %lo(gMatrixListPos)
/* 38A1E4 E0086994 3C12800A */  lui       $s2, %hi(gDisplayContext)
/* 38A1E8 E0086998 2652A674 */  addiu     $s2, $s2, %lo(gDisplayContext)
/* 38A1EC E008699C 96250000 */  lhu       $a1, 0x0($s1)
/* 38A1F0 E00869A0 8E420000 */  lw        $v0, 0x0($s2)
/* 38A1F4 E00869A4 00052980 */  sll       $a1, $a1, 6
/* 38A1F8 E00869A8 00B52821 */  addu      $a1, $a1, $s5
/* 38A1FC E00869AC 0C080118 */  jal       shim_guMtxF2L
/* 38A200 E00869B0 00452821 */   addu     $a1, $v0, $a1
/* 38A204 E00869B4 3C06DA38 */  lui       $a2, (0xDA380001 >> 16)
/* 38A208 E00869B8 34C60001 */  ori       $a2, $a2, (0xDA380001 & 0xFFFF)
/* 38A20C E00869BC 3C07D838 */  lui       $a3, (0xD8380002 >> 16)
/* 38A210 E00869C0 34E70002 */  ori       $a3, $a3, (0xD8380002 & 0xFFFF)
/* 38A214 E00869C4 8E030000 */  lw        $v1, 0x0($s0)
/* 38A218 E00869C8 96220000 */  lhu       $v0, 0x0($s1)
/* 38A21C E00869CC 0060202D */  daddu     $a0, $v1, $zero
/* 38A220 E00869D0 24630008 */  addiu     $v1, $v1, 0x8
/* 38A224 E00869D4 00021180 */  sll       $v0, $v0, 6
/* 38A228 E00869D8 AE030000 */  sw        $v1, 0x0($s0)
/* 38A22C E00869DC AC860000 */  sw        $a2, 0x0($a0)
/* 38A230 E00869E0 8E450000 */  lw        $a1, 0x0($s2)
/* 38A234 E00869E4 00551021 */  addu      $v0, $v0, $s5
/* 38A238 E00869E8 00A21021 */  addu      $v0, $a1, $v0
/* 38A23C E00869EC AC820004 */  sw        $v0, 0x4($a0)
/* 38A240 E00869F0 24620008 */  addiu     $v0, $v1, 0x8
/* 38A244 E00869F4 AE020000 */  sw        $v0, 0x0($s0)
/* 38A248 E00869F8 AC740000 */  sw        $s4, 0x0($v1)
/* 38A24C E00869FC AC730004 */  sw        $s3, 0x4($v1)
/* 38A250 E0086A00 96220000 */  lhu       $v0, 0x0($s1)
/* 38A254 E0086A04 24640010 */  addiu     $a0, $v1, 0x10
/* 38A258 E0086A08 AE040000 */  sw        $a0, 0x0($s0)
/* 38A25C E0086A0C AC660008 */  sw        $a2, 0x8($v1)
/* 38A260 E0086A10 24440001 */  addiu     $a0, $v0, 0x1
/* 38A264 E0086A14 3042FFFF */  andi      $v0, $v0, 0xFFFF
/* 38A268 E0086A18 00021180 */  sll       $v0, $v0, 6
/* 38A26C E0086A1C 00551021 */  addu      $v0, $v0, $s5
/* 38A270 E0086A20 00A22821 */  addu      $a1, $a1, $v0
/* 38A274 E0086A24 24620018 */  addiu     $v0, $v1, 0x18
/* 38A278 E0086A28 A6240000 */  sh        $a0, 0x0($s1)
/* 38A27C E0086A2C AC65000C */  sw        $a1, 0xC($v1)
/* 38A280 E0086A30 AE020000 */  sw        $v0, 0x0($s0)
/* 38A284 E0086A34 24620020 */  addiu     $v0, $v1, 0x20
/* 38A288 E0086A38 AC740010 */  sw        $s4, 0x10($v1)
/* 38A28C E0086A3C AC730014 */  sw        $s3, 0x14($v1)
/* 38A290 E0086A40 AE020000 */  sw        $v0, 0x0($s0)
/* 38A294 E0086A44 24020040 */  addiu     $v0, $zero, 0x40
/* 38A298 E0086A48 AC62001C */  sw        $v0, 0x1C($v1)
/* 38A29C E0086A4C 24620028 */  addiu     $v0, $v1, 0x28
/* 38A2A0 E0086A50 AC670018 */  sw        $a3, 0x18($v1)
/* 38A2A4 E0086A54 AE020000 */  sw        $v0, 0x0($s0)
/* 38A2A8 E0086A58 3C02E700 */  lui       $v0, (0xE7000000 >> 16)
/* 38A2AC E0086A5C AC620020 */  sw        $v0, 0x20($v1)
/* 38A2B0 E0086A60 AC600024 */  sw        $zero, 0x24($v1)
.LE0086A64:
/* 38A2B4 E0086A64 8FBF00EC */  lw        $ra, 0xEC($sp)
/* 38A2B8 E0086A68 8FBE00E8 */  lw        $fp, 0xE8($sp)
/* 38A2BC E0086A6C 8FB700E4 */  lw        $s7, 0xE4($sp)
/* 38A2C0 E0086A70 8FB600E0 */  lw        $s6, 0xE0($sp)
/* 38A2C4 E0086A74 8FB500DC */  lw        $s5, 0xDC($sp)
/* 38A2C8 E0086A78 8FB400D8 */  lw        $s4, 0xD8($sp)
/* 38A2CC E0086A7C 8FB300D4 */  lw        $s3, 0xD4($sp)
/* 38A2D0 E0086A80 8FB200D0 */  lw        $s2, 0xD0($sp)
/* 38A2D4 E0086A84 8FB100CC */  lw        $s1, 0xCC($sp)
/* 38A2D8 E0086A88 8FB000C8 */  lw        $s0, 0xC8($sp)
/* 38A2DC E0086A8C D7B600F8 */  ldc1      $f22, 0xF8($sp)
/* 38A2E0 E0086A90 D7B400F0 */  ldc1      $f20, 0xF0($sp)
/* 38A2E4 E0086A94 03E00008 */  jr        $ra
/* 38A2E8 E0086A98 27BD0100 */   addiu    $sp, $sp, 0x100
/* 38A2EC E0086A9C 00000000 */  nop

### DECOMPILED C INSTRUCTIONS:

void func_E00863B4(EffectInstance* effect) {
    FireworkFXData* part = effect->data.firework;
    Gfx* savedGfxPos;
    f32 temp_f32 = part->unk_38 * 5.0f;
    s32 envA;
    s32 temp_s32 = temp_f32;
    s32 primR;
    s32 primG;
    s32 primB;
    s32 envR;
    s32 envG;
    s32 engB;
    s32 primA;
    s32 unk_34 = part->unk_34;
    s32 unk_00 = part->unk_00;
    s32 var_v1;
    Matrix4f sp20;
    Matrix4f sp60;
    s32 i;

    if (temp_s32 < 5) {
        s32 cond;
        f32 unk_28;

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

        unk_28 = part->unk_28;

        shim_guPositionF(sp20, 0.0f, -gCameras[gCurrentCameraID].currentYaw, 0.0f, unk_28, part->unk_04, part->unk_08, part->unk_0C);
        shim_guMtxF2L(sp20, &gDisplayContext->matrixStack[gMatrixListPos]);

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

        envA = (temp_f32 - temp_s32) * 256.0f;
        primA = part->unk_2C;
        cond = (temp_s32 >= 4);

        switch (unk_00) {
            case 1:
                if (unk_34 - 1 < 13) {
                    var_v1 = D_E0086AE4[unk_34 - 1];
                } else {
                    var_v1 = 0;
                }
                primR = part->unk_3C;
                primG = (part->unk_3D * var_v1) >> 8;
                primB = (part->unk_3E * var_v1) >> 8;
                envR = (part->unk_3F * var_v1) >> 8;
                envG = (part->unk_40 * var_v1) >> 8;
                engB = (part->unk_41 * var_v1) >> 8;
                break;
            case 2:
                if (unk_34 % 2 == 0) {
                    primR = 0;
                    primG = 0;
                    primB = 0;
                    envR = part->unk_3C;
                    envG = part->unk_3D;
                    engB = part->unk_3E;
                } else {
                    primR = part->unk_3C;
                    primG = part->unk_3D;
                    primB = part->unk_3E;
                    envR = part->unk_3F;
                    envG = part->unk_40;
                    engB = part->unk_41;
                }
                break;
            case 0:
            default:
                primR = part->unk_3C;
                primG = part->unk_3D;
                primB = part->unk_3E;
                envR = part->unk_3F;
                envG = part->unk_40;
                engB = part->unk_41;
                break;
        }

        savedGfxPos = gMainGfxPos++;
        gSPDisplayList(gMainGfxPos++, D_E0086AB4[unk_00]);

        part++;

        if (cond) {
            gDPSetTileSize(gMainGfxPos++, 1, 0, 0, 0, 0);
        }

        for (i = 1; i < effect->numParts; i++, part++) {
            gSPDisplayList(gMainGfxPos++, D_E0086AB4[part->unk_00]);

            shim_guRotateF(sp20, part->unk_1C, 0.0f, 0.0f, 1.0f);
            shim_guRotateF(sp60, part->unk_24, 0.0f, 1.0f, 0.0f);
            shim_guMtxCatF(sp60, sp20, sp20);
            shim_guTranslateF(sp60, part->unk_04, part->unk_08, part->unk_0C);
            shim_guMtxCatF(sp60, sp20, sp20);
            shim_guMtxF2L(sp20, &gDisplayContext->matrixStack[gMatrixListPos]);

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

        gSPEndDisplayList(gMainGfxPos++);
        gSPBranchList(savedGfxPos, gMainGfxPos);

        gDPSetPrimColor(gMainGfxPos++, 0, 0, primR, primG, primB, primA);
        gDPSetEnvColor(gMainGfxPos++, envR, envG, engB, envA);
        gSPDisplayList(gMainGfxPos++, savedGfxPos + 1);

        shim_guRotateF(sp20, 120.0f, 1.0f, 1.0f, 1.0f);
        shim_guMtxF2L(sp20, &gDisplayContext->matrixStack[gMatrixListPos]);

        gSPMatrix(gMainGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos], G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW);
        gSPDisplayList(gMainGfxPos++, savedGfxPos + 1);
        gSPMatrix(gMainGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW);
        gSPDisplayList(gMainGfxPos++, savedGfxPos + 1);
        gSPPopMatrix(gMainGfxPos++, G_MTX_MODELVIEW);
        gDPPipeSync(gMainGfxPos++);
    }
}