### RAW ASSEMBLY INSTRUCTIONS:

glabel shockwave_appendGfx
/* 358C4C E004A78C 27BDFEE8 */  addiu     $sp, $sp, -0x118
/* 358C50 E004A790 AFBF00FC */  sw        $ra, 0xFC($sp)
/* 358C54 E004A794 AFBE00F8 */  sw        $fp, 0xF8($sp)
/* 358C58 E004A798 AFB700F4 */  sw        $s7, 0xF4($sp)
/* 358C5C E004A79C AFB600F0 */  sw        $s6, 0xF0($sp)
/* 358C60 E004A7A0 AFB500EC */  sw        $s5, 0xEC($sp)
/* 358C64 E004A7A4 AFB400E8 */  sw        $s4, 0xE8($sp)
/* 358C68 E004A7A8 AFB300E4 */  sw        $s3, 0xE4($sp)
/* 358C6C E004A7AC AFB200E0 */  sw        $s2, 0xE0($sp)
/* 358C70 E004A7B0 AFB100DC */  sw        $s1, 0xDC($sp)
/* 358C74 E004A7B4 AFB000D8 */  sw        $s0, 0xD8($sp)
/* 358C78 E004A7B8 F7B80110 */  sdc1      $f24, 0x110($sp)
/* 358C7C E004A7BC F7B60108 */  sdc1      $f22, 0x108($sp)
/* 358C80 E004A7C0 F7B40100 */  sdc1      $f20, 0x100($sp)
/* 358C84 E004A7C4 AFA40118 */  sw        $a0, 0x118($sp)
/* 358C88 E004A7C8 8C91000C */  lw        $s1, 0xC($a0)
/* 358C8C E004A7CC 922F0050 */  lbu       $t7, 0x50($s1)
/* 358C90 E004A7D0 AFAF00A4 */  sw        $t7, 0xA4($sp)
/* 358C94 E004A7D4 922F0051 */  lbu       $t7, 0x51($s1)
/* 358C98 E004A7D8 AFAF00A8 */  sw        $t7, 0xA8($sp)
/* 358C9C E004A7DC 8FAF00A4 */  lw        $t7, 0xA4($sp)
/* 358CA0 E004A7E0 AFAF00BC */  sw        $t7, 0xBC($sp)
/* 358CA4 E004A7E4 8FAF00A8 */  lw        $t7, 0xA8($sp)
/* 358CA8 E004A7E8 AFAF00C0 */  sw        $t7, 0xC0($sp)
/* 358CAC E004A7EC 922F0052 */  lbu       $t7, 0x52($s1)
/* 358CB0 E004A7F0 AFAF00AC */  sw        $t7, 0xAC($sp)
/* 358CB4 E004A7F4 922F0053 */  lbu       $t7, 0x53($s1)
/* 358CB8 E004A7F8 AFAF00B0 */  sw        $t7, 0xB0($sp)
/* 358CBC E004A7FC 8FAF00AC */  lw        $t7, 0xAC($sp)
/* 358CC0 E004A800 AFAF00C4 */  sw        $t7, 0xC4($sp)
/* 358CC4 E004A804 8FAF00B0 */  lw        $t7, 0xB0($sp)
/* 358CC8 E004A808 AFAF00C8 */  sw        $t7, 0xC8($sp)
/* 358CCC E004A80C 922F0054 */  lbu       $t7, 0x54($s1)
/* 358CD0 E004A810 AFAF00B4 */  sw        $t7, 0xB4($sp)
/* 358CD4 E004A814 922F0055 */  lbu       $t7, 0x55($s1)
/* 358CD8 E004A818 AFAF00B8 */  sw        $t7, 0xB8($sp)
/* 358CDC E004A81C 8FAF00B4 */  lw        $t7, 0xB4($sp)
/* 358CE0 E004A820 AFAF00CC */  sw        $t7, 0xCC($sp)
/* 358CE4 E004A824 8FAF00B8 */  lw        $t7, 0xB8($sp)
/* 358CE8 E004A828 AFAF00D0 */  sw        $t7, 0xD0($sp)
/* 358CEC E004A82C 96220000 */  lhu       $v0, 0x0($s1)
/* 358CF0 E004A830 00021880 */  sll       $v1, $v0, 2
/* 358CF4 E004A834 28420002 */  slti      $v0, $v0, 0x2
/* 358CF8 E004A838 3C09E005 */  lui       $t1, (0xE0050000 >> 16)
/* 358CFC E004A83C 01234821 */  addu      $t1, $t1, $v1
/* 358D00 E004A840 8D29AE60 */  lw        $t1, -0x51A0($t1)
/* 358D04 E004A844 14400013 */  bnez      $v0, .LE004A894
/* 358D08 E004A848 3C06DB06 */   lui      $a2, (0xDB060024 >> 16)
/* 358D0C E004A84C 8FAF00A4 */  lw        $t7, 0xA4($sp)
/* 358D10 E004A850 000F7883 */  sra       $t7, $t7, 2
/* 358D14 E004A854 AFAF00BC */  sw        $t7, 0xBC($sp)
/* 358D18 E004A858 8FAF00A8 */  lw        $t7, 0xA8($sp)
/* 358D1C E004A85C 000F7883 */  sra       $t7, $t7, 2
/* 358D20 E004A860 AFAF00C0 */  sw        $t7, 0xC0($sp)
/* 358D24 E004A864 8FAF00AC */  lw        $t7, 0xAC($sp)
/* 358D28 E004A868 000F7883 */  sra       $t7, $t7, 2
/* 358D2C E004A86C AFAF00C4 */  sw        $t7, 0xC4($sp)
/* 358D30 E004A870 8FAF00B0 */  lw        $t7, 0xB0($sp)
/* 358D34 E004A874 000F7883 */  sra       $t7, $t7, 2
/* 358D38 E004A878 AFAF00C8 */  sw        $t7, 0xC8($sp)
/* 358D3C E004A87C 8FAF00B4 */  lw        $t7, 0xB4($sp)
/* 358D40 E004A880 000F7883 */  sra       $t7, $t7, 2
/* 358D44 E004A884 AFAF00CC */  sw        $t7, 0xCC($sp)
/* 358D48 E004A888 8FAF00B8 */  lw        $t7, 0xB8($sp)
/* 358D4C E004A88C 000F7883 */  sra       $t7, $t7, 2
/* 358D50 E004A890 AFAF00D0 */  sw        $t7, 0xD0($sp)
.LE004A894:
/* 358D54 E004A894 34C60024 */  ori       $a2, $a2, (0xDB060024 & 0xFFFF)
/* 358D58 E004A898 27A40020 */  addiu     $a0, $sp, 0x20
/* 358D5C E004A89C 3C13800A */  lui       $s3, %hi(gMainGfxPos)
/* 358D60 E004A8A0 2673A66C */  addiu     $s3, $s3, %lo(gMainGfxPos)
/* 358D64 E004A8A4 3C02E700 */  lui       $v0, (0xE7000000 >> 16)
/* 358D68 E004A8A8 8E680000 */  lw        $t0, 0x0($s3)
/* 358D6C E004A8AC 4480A000 */  mtc1      $zero, $f20
/* 358D70 E004A8B0 3C013F80 */  lui       $at, (0x3F800000 >> 16)
/* 358D74 E004A8B4 4481C000 */  mtc1      $at, $f24
/* 358D78 E004A8B8 0100182D */  daddu     $v1, $t0, $zero
/* 358D7C E004A8BC 4405A000 */  mfc1      $a1, $f20
/* 358D80 E004A8C0 25080008 */  addiu     $t0, $t0, 0x8
/* 358D84 E004A8C4 AC620000 */  sw        $v0, 0x0($v1)
/* 358D88 E004A8C8 AC600004 */  sw        $zero, 0x4($v1)
/* 358D8C E004A8CC AD060000 */  sw        $a2, 0x0($t0)
/* 358D90 E004A8D0 8FAF0118 */  lw        $t7, 0x118($sp)
/* 358D94 E004A8D4 4407A000 */  mfc1      $a3, $f20
/* 358D98 E004A8D8 8DE20010 */  lw        $v0, 0x10($t7)
/* 358D9C E004A8DC 3C038007 */  lui       $v1, %hi(gCurrentCameraID)
/* 358DA0 E004A8E0 8C637410 */  lw        $v1, %lo(gCurrentCameraID)($v1)
/* 358DA4 E004A8E4 8C46001C */  lw        $a2, 0x1C($v0)
/* 358DA8 E004A8E8 3C02DE00 */  lui       $v0, (0xDE000000 >> 16)
/* 358DAC E004A8EC AD020008 */  sw        $v0, 0x8($t0)
/* 358DB0 E004A8F0 3C028000 */  lui       $v0, (0x80000000 >> 16)
/* 358DB4 E004A8F4 AD09000C */  sw        $t1, 0xC($t0)
/* 358DB8 E004A8F8 00C23021 */  addu      $a2, $a2, $v0
/* 358DBC E004A8FC 00031080 */  sll       $v0, $v1, 2
/* 358DC0 E004A900 00431021 */  addu      $v0, $v0, $v1
/* 358DC4 E004A904 00021080 */  sll       $v0, $v0, 2
/* 358DC8 E004A908 00431023 */  subu      $v0, $v0, $v1
/* 358DCC E004A90C 000218C0 */  sll       $v1, $v0, 3
/* 358DD0 E004A910 00431021 */  addu      $v0, $v0, $v1
/* 358DD4 E004A914 000210C0 */  sll       $v0, $v0, 3
/* 358DD8 E004A918 AD060004 */  sw        $a2, 0x4($t0)
/* 358DDC E004A91C 3C01800B */  lui       $at, %hi(gCameras + 0x6C)
/* 358DE0 E004A920 00220821 */  addu      $at, $at, $v0
/* 358DE4 E004A924 C4221DEC */  lwc1      $f2, %lo(gCameras + 0x6C)($at)
/* 358DE8 E004A928 3C100001 */  lui       $s0, (0x11630 >> 16)
/* 358DEC E004A92C AE680000 */  sw        $t0, 0x0($s3)
/* 358DF0 E004A930 E7B80010 */  swc1      $f24, 0x10($sp)
/* 358DF4 E004A934 C6200004 */  lwc1      $f0, 0x4($s1)
/* 358DF8 E004A938 25020008 */  addiu     $v0, $t0, 0x8
/* 358DFC E004A93C AE620000 */  sw        $v0, 0x0($s3)
/* 358E00 E004A940 46001087 */  neg.s     $f2, $f2
/* 358E04 E004A944 E7A00014 */  swc1      $f0, 0x14($sp)
/* 358E08 E004A948 C6200008 */  lwc1      $f0, 0x8($s1)
/* 358E0C E004A94C 44061000 */  mfc1      $a2, $f2
/* 358E10 E004A950 25080010 */  addiu     $t0, $t0, 0x10
/* 358E14 E004A954 AE680000 */  sw        $t0, 0x0($s3)
/* 358E18 E004A958 E7A00018 */  swc1      $f0, 0x18($sp)
/* 358E1C E004A95C C620000C */  lwc1      $f0, 0xC($s1)
/* 358E20 E004A960 36101630 */  ori       $s0, $s0, (0x11630 & 0xFFFF)
/* 358E24 E004A964 0C080180 */  jal       shim_guPositionF
/* 358E28 E004A968 E7A0001C */   swc1     $f0, 0x1C($sp)
/* 358E2C E004A96C 27A40020 */  addiu     $a0, $sp, 0x20
/* 358E30 E004A970 3C158007 */  lui       $s5, %hi(gMatrixListPos)
/* 358E34 E004A974 26B541F0 */  addiu     $s5, $s5, %lo(gMatrixListPos)
/* 358E38 E004A978 3C16800A */  lui       $s6, %hi(gDisplayContext)
/* 358E3C E004A97C 26D6A674 */  addiu     $s6, $s6, %lo(gDisplayContext)
/* 358E40 E004A980 96A50000 */  lhu       $a1, 0x0($s5)
/* 358E44 E004A984 8EC20000 */  lw        $v0, 0x0($s6)
/* 358E48 E004A988 00052980 */  sll       $a1, $a1, 6
/* 358E4C E004A98C 00B02821 */  addu      $a1, $a1, $s0
/* 358E50 E004A990 0C080118 */  jal       shim_guMtxF2L
/* 358E54 E004A994 00452821 */   addu     $a1, $v0, $a1
/* 358E58 E004A998 24140001 */  addiu     $s4, $zero, 0x1
/* 358E5C E004A99C 3C02DA38 */  lui       $v0, (0xDA380000 >> 16)
/* 358E60 E004A9A0 8E650000 */  lw        $a1, 0x0($s3)
/* 358E64 E004A9A4 96A40000 */  lhu       $a0, 0x0($s5)
/* 358E68 E004A9A8 00A0302D */  daddu     $a2, $a1, $zero
/* 358E6C E004A9AC 24A50008 */  addiu     $a1, $a1, 0x8
/* 358E70 E004A9B0 ACC20000 */  sw        $v0, 0x0($a2)
/* 358E74 E004A9B4 3082FFFF */  andi      $v0, $a0, 0xFFFF
/* 358E78 E004A9B8 00021180 */  sll       $v0, $v0, 6
/* 358E7C E004A9BC 00501021 */  addu      $v0, $v0, $s0
/* 358E80 E004A9C0 00942021 */  addu      $a0, $a0, $s4
/* 358E84 E004A9C4 8EC30000 */  lw        $v1, 0x0($s6)
/* 358E88 E004A9C8 00A0B82D */  daddu     $s7, $a1, $zero
/* 358E8C E004A9CC 00621821 */  addu      $v1, $v1, $v0
/* 358E90 E004A9D0 ACC30004 */  sw        $v1, 0x4($a2)
/* 358E94 E004A9D4 8E2F0038 */  lw        $t7, 0x38($s1)
/* 358E98 E004A9D8 26E30008 */  addiu     $v1, $s7, 0x8
/* 358E9C E004A9DC AFAF00A0 */  sw        $t7, 0xA0($sp)
/* 358EA0 E004A9E0 AE650000 */  sw        $a1, 0x0($s3)
/* 358EA4 E004A9E4 A6A40000 */  sh        $a0, 0x0($s5)
/* 358EA8 E004A9E8 AE630000 */  sw        $v1, 0x0($s3)
/* 358EAC E004A9EC 8FAF0118 */  lw        $t7, 0x118($sp)
/* 358EB0 E004A9F0 8DE20008 */  lw        $v0, 0x8($t7)
/* 358EB4 E004A9F4 26310058 */  addiu     $s1, $s1, 0x58
/* 358EB8 E004A9F8 0282102A */  slt       $v0, $s4, $v0
/* 358EBC E004A9FC 10400090 */  beqz      $v0, .LE004AC40
/* 358EC0 E004AA00 AFA300D4 */   sw       $v1, 0xD4($sp)
/* 358EC4 E004AA04 27B20060 */  addiu     $s2, $sp, 0x60
/* 358EC8 E004AA08 4600A586 */  mov.s     $f22, $f20
/* 358ECC E004AA0C 3C01E005 */  lui       $at, (0xE0050000 >> 16)
/* 358ED0 E004AA10 D434AEE8 */  ldc1      $f20, -0x5118($at)
/* 358ED4 E004AA14 02A0B02D */  daddu     $s6, $s5, $zero
/* 358ED8 E004AA18 3C150001 */  lui       $s5, (0x11630 >> 16)
/* 358EDC E004AA1C 36B51630 */  ori       $s5, $s5, (0x11630 & 0xFFFF)
/* 358EE0 E004AA20 3C1EF200 */  lui       $fp, (0xF2000000 >> 16)
/* 358EE4 E004AA24 26300044 */  addiu     $s0, $s1, 0x44
.LE004AA28:
/* 358EE8 E004AA28 8E020008 */  lw        $v0, 0x8($s0)
/* 358EEC E004AA2C 0440007E */  bltz      $v0, .LE004AC28
/* 358EF0 E004AA30 00000000 */   nop
/* 358EF4 E004AA34 8E05FFC0 */  lw        $a1, -0x40($s0)
/* 358EF8 E004AA38 8E06FFC4 */  lw        $a2, -0x3C($s0)
/* 358EFC E004AA3C 8E07FFC8 */  lw        $a3, -0x38($s0)
/* 358F00 E004AA40 0C080108 */  jal       shim_guTranslateF
/* 358F04 E004AA44 27A40020 */   addiu    $a0, $sp, 0x20
/* 358F08 E004AA48 E7B80010 */  swc1      $f24, 0x10($sp)
/* 358F0C E004AA4C 8E05FFF0 */  lw        $a1, -0x10($s0)
/* 358F10 E004AA50 4406B000 */  mfc1      $a2, $f22
/* 358F14 E004AA54 4407B000 */  mfc1      $a3, $f22
/* 358F18 E004AA58 0C080104 */  jal       shim_guRotateF
/* 358F1C E004AA5C 0240202D */   daddu    $a0, $s2, $zero
/* 358F20 E004AA60 0240202D */  daddu     $a0, $s2, $zero
/* 358F24 E004AA64 27A50020 */  addiu     $a1, $sp, 0x20
/* 358F28 E004AA68 0C080114 */  jal       shim_guMtxCatF
/* 358F2C E004AA6C 00A0302D */   daddu    $a2, $a1, $zero
/* 358F30 E004AA70 C604FFD8 */  lwc1      $f4, -0x28($s0)
/* 358F34 E004AA74 46002121 */  cvt.d.s   $f4, $f4
/* 358F38 E004AA78 46342102 */  mul.d     $f4, $f4, $f20
/* 358F3C E004AA7C 00000000 */  nop
/* 358F40 E004AA80 C602FFDC */  lwc1      $f2, -0x24($s0)
/* 358F44 E004AA84 460010A1 */  cvt.d.s   $f2, $f2
/* 358F48 E004AA88 46341082 */  mul.d     $f2, $f2, $f20
/* 358F4C E004AA8C 00000000 */  nop
/* 358F50 E004AA90 C600FFE0 */  lwc1      $f0, -0x20($s0)
/* 358F54 E004AA94 46000021 */  cvt.d.s   $f0, $f0
/* 358F58 E004AA98 46340002 */  mul.d     $f0, $f0, $f20
/* 358F5C E004AA9C 00000000 */  nop
/* 358F60 E004AAA0 46202120 */  cvt.s.d   $f4, $f4
/* 358F64 E004AAA4 462010A0 */  cvt.s.d   $f2, $f2
/* 358F68 E004AAA8 46200020 */  cvt.s.d   $f0, $f0
/* 358F6C E004AAAC 44052000 */  mfc1      $a1, $f4
/* 358F70 E004AAB0 44061000 */  mfc1      $a2, $f2
/* 358F74 E004AAB4 44070000 */  mfc1      $a3, $f0
/* 358F78 E004AAB8 0C080110 */  jal       shim_guScaleF
/* 358F7C E004AABC 0240202D */   daddu    $a0, $s2, $zero
/* 358F80 E004AAC0 0240202D */  daddu     $a0, $s2, $zero
/* 358F84 E004AAC4 27A50020 */  addiu     $a1, $sp, 0x20
/* 358F88 E004AAC8 0C080114 */  jal       shim_guMtxCatF
/* 358F8C E004AACC 00A0302D */   daddu    $a2, $a1, $zero
/* 358F90 E004AAD0 E7B60010 */  swc1      $f22, 0x10($sp)
/* 358F94 E004AAD4 8E05FFEC */  lw        $a1, -0x14($s0)
/* 358F98 E004AAD8 4406B000 */  mfc1      $a2, $f22
/* 358F9C E004AADC 4407C000 */  mfc1      $a3, $f24
/* 358FA0 E004AAE0 0C080104 */  jal       shim_guRotateF
/* 358FA4 E004AAE4 0240202D */   daddu    $a0, $s2, $zero
/* 358FA8 E004AAE8 0240202D */  daddu     $a0, $s2, $zero
/* 358FAC E004AAEC 27A50020 */  addiu     $a1, $sp, 0x20
/* 358FB0 E004AAF0 0C080114 */  jal       shim_guMtxCatF
/* 358FB4 E004AAF4 00A0302D */   daddu    $a2, $a1, $zero
/* 358FB8 E004AAF8 27A40020 */  addiu     $a0, $sp, 0x20
/* 358FBC E004AAFC 96C50000 */  lhu       $a1, 0x0($s6)
/* 358FC0 E004AB00 3C02800A */  lui       $v0, %hi(gDisplayContext)
/* 358FC4 E004AB04 8C42A674 */  lw        $v0, %lo(gDisplayContext)($v0)
/* 358FC8 E004AB08 00052980 */  sll       $a1, $a1, 6
/* 358FCC E004AB0C 00B52821 */  addu      $a1, $a1, $s5
/* 358FD0 E004AB10 0C080118 */  jal       shim_guMtxF2L
/* 358FD4 E004AB14 00452821 */   addu     $a1, $v0, $a1
/* 358FD8 E004AB18 3C06000F */  lui       $a2, (0xFC000 >> 16)
/* 358FDC E004AB1C 34C6C000 */  ori       $a2, $a2, (0xFC000 & 0xFFFF)
/* 358FE0 E004AB20 3C080107 */  lui       $t0, (0x107C000 >> 16)
/* 358FE4 E004AB24 3508C000 */  ori       $t0, $t0, (0x107C000 & 0xFFFF)
/* 358FE8 E004AB28 3C07D838 */  lui       $a3, (0xD8380002 >> 16)
/* 358FEC E004AB2C 34E70002 */  ori       $a3, $a3, (0xD8380002 & 0xFFFF)
/* 358FF0 E004AB30 8E630000 */  lw        $v1, 0x0($s3)
/* 358FF4 E004AB34 C600FFF8 */  lwc1      $f0, -0x8($s0)
/* 358FF8 E004AB38 0060282D */  daddu     $a1, $v1, $zero
/* 358FFC E004AB3C 24630008 */  addiu     $v1, $v1, 0x8
/* 359000 E004AB40 4600018D */  trunc.w.s $f6, $f0
/* 359004 E004AB44 44023000 */  mfc1      $v0, $f6
/* 359008 E004AB48 00000000 */  nop
/* 35900C E004AB4C 30420FFF */  andi      $v0, $v0, 0xFFF
/* 359010 E004AB50 005E1025 */  or        $v0, $v0, $fp
/* 359014 E004AB54 AE630000 */  sw        $v1, 0x0($s3)
/* 359018 E004AB58 ACA20000 */  sw        $v0, 0x0($a1)
/* 35901C E004AB5C 24620008 */  addiu     $v0, $v1, 0x8
/* 359020 E004AB60 AE620000 */  sw        $v0, 0x0($s3)
/* 359024 E004AB64 96C40000 */  lhu       $a0, 0x0($s6)
/* 359028 E004AB68 24620010 */  addiu     $v0, $v1, 0x10
/* 35902C E004AB6C AE620000 */  sw        $v0, 0x0($s3)
/* 359030 E004AB70 24820001 */  addiu     $v0, $a0, 0x1
/* 359034 E004AB74 A6C20000 */  sh        $v0, 0x0($s6)
/* 359038 E004AB78 24620018 */  addiu     $v0, $v1, 0x18
/* 35903C E004AB7C 3084FFFF */  andi      $a0, $a0, 0xFFFF
/* 359040 E004AB80 00042180 */  sll       $a0, $a0, 6
/* 359044 E004AB84 C600FFF8 */  lwc1      $f0, -0x8($s0)
/* 359048 E004AB88 00952021 */  addu      $a0, $a0, $s5
/* 35904C E004AB8C AE620000 */  sw        $v0, 0x0($s3)
/* 359050 E004AB90 4600018D */  trunc.w.s $f6, $f0
/* 359054 E004AB94 44023000 */  mfc1      $v0, $f6
/* 359058 E004AB98 00000000 */  nop
/* 35905C E004AB9C 2442007C */  addiu     $v0, $v0, 0x7C
/* 359060 E004ABA0 30420FFF */  andi      $v0, $v0, 0xFFF
/* 359064 E004ABA4 00461025 */  or        $v0, $v0, $a2
/* 359068 E004ABA8 ACA20004 */  sw        $v0, 0x4($a1)
/* 35906C E004ABAC C6000000 */  lwc1      $f0, 0x0($s0)
/* 359070 E004ABB0 24620020 */  addiu     $v0, $v1, 0x20
/* 359074 E004ABB4 AE620000 */  sw        $v0, 0x0($s3)
/* 359078 E004ABB8 4600018D */  trunc.w.s $f6, $f0
/* 35907C E004ABBC 44023000 */  mfc1      $v0, $f6
/* 359080 E004ABC0 00000000 */  nop
/* 359084 E004ABC4 30420FFF */  andi      $v0, $v0, 0xFFF
/* 359088 E004ABC8 005E1025 */  or        $v0, $v0, $fp
/* 35908C E004ABCC AC620000 */  sw        $v0, 0x0($v1)
/* 359090 E004ABD0 C6000000 */  lwc1      $f0, 0x0($s0)
/* 359094 E004ABD4 3C02DA38 */  lui       $v0, (0xDA380000 >> 16)
/* 359098 E004ABD8 AC620008 */  sw        $v0, 0x8($v1)
/* 35909C E004ABDC 3C02800A */  lui       $v0, %hi(gDisplayContext)
/* 3590A0 E004ABE0 8C42A674 */  lw        $v0, %lo(gDisplayContext)($v0)
/* 3590A4 E004ABE4 3C0F0900 */  lui       $t7, %hi(D_09000940_4159A0)
/* 3590A8 E004ABE8 25EF0940 */  addiu     $t7, $t7, %lo(D_09000940_4159A0)
/* 3590AC E004ABEC AC6F0014 */  sw        $t7, 0x14($v1)
/* 3590B0 E004ABF0 AC670018 */  sw        $a3, 0x18($v1)
/* 3590B4 E004ABF4 00441021 */  addu      $v0, $v0, $a0
/* 3590B8 E004ABF8 AC62000C */  sw        $v0, 0xC($v1)
/* 3590BC E004ABFC 3C02DE00 */  lui       $v0, (0xDE000000 >> 16)
/* 3590C0 E004AC00 AC620010 */  sw        $v0, 0x10($v1)
/* 3590C4 E004AC04 24020040 */  addiu     $v0, $zero, 0x40
/* 3590C8 E004AC08 AC62001C */  sw        $v0, 0x1C($v1)
/* 3590CC E004AC0C 4600018D */  trunc.w.s $f6, $f0
/* 3590D0 E004AC10 44023000 */  mfc1      $v0, $f6
/* 3590D4 E004AC14 00000000 */  nop
/* 3590D8 E004AC18 2442007C */  addiu     $v0, $v0, 0x7C
/* 3590DC E004AC1C 30420FFF */  andi      $v0, $v0, 0xFFF
/* 3590E0 E004AC20 00481025 */  or        $v0, $v0, $t0
/* 3590E4 E004AC24 AC620004 */  sw        $v0, 0x4($v1)
.LE004AC28:
/* 3590E8 E004AC28 8FAF0118 */  lw        $t7, 0x118($sp)
/* 3590EC E004AC2C 26940001 */  addiu     $s4, $s4, 0x1
/* 3590F0 E004AC30 8DE20008 */  lw        $v0, 0x8($t7)
/* 3590F4 E004AC34 0282102A */  slt       $v0, $s4, $v0
/* 3590F8 E004AC38 1440FF7B */  bnez      $v0, .LE004AA28
/* 3590FC E004AC3C 26100058 */   addiu    $s0, $s0, 0x58
.LE004AC40:
/* 359100 E004AC40 3C0AD9FF */  lui       $t2, (0xD9FFF9FF >> 16)
/* 359104 E004AC44 354AF9FF */  ori       $t2, $t2, (0xD9FFF9FF & 0xFFFF)
/* 359108 E004AC48 3C0BD9FF */  lui       $t3, (0xD9FFFFFF >> 16)
/* 35910C E004AC4C 356BFFFF */  ori       $t3, $t3, (0xD9FFFFFF & 0xFFFF)
/* 359110 E004AC50 3C05800A */  lui       $a1, %hi(gMainGfxPos)
/* 359114 E004AC54 24A5A66C */  addiu     $a1, $a1, %lo(gMainGfxPos)
/* 359118 E004AC58 3C02DF00 */  lui       $v0, (0xDF000000 >> 16)
/* 35911C E004AC5C 8CA30000 */  lw        $v1, 0x0($a1)
/* 359120 E004AC60 3C09FA00 */  lui       $t1, (0xFA000000 >> 16)
/* 359124 E004AC64 0060202D */  daddu     $a0, $v1, $zero
/* 359128 E004AC68 24630008 */  addiu     $v1, $v1, 0x8
/* 35912C E004AC6C ACA30000 */  sw        $v1, 0x0($a1)
/* 359130 E004AC70 AC820000 */  sw        $v0, 0x0($a0)
/* 359134 E004AC74 3C02DE01 */  lui       $v0, (0xDE010000 >> 16)
/* 359138 E004AC78 AC800004 */  sw        $zero, 0x4($a0)
/* 35913C E004AC7C AEE20000 */  sw        $v0, 0x0($s7)
/* 359140 E004AC80 24620008 */  addiu     $v0, $v1, 0x8
/* 359144 E004AC84 AEE30004 */  sw        $v1, 0x4($s7)
/* 359148 E004AC88 ACA20000 */  sw        $v0, 0x0($a1)
/* 35914C E004AC8C AC690000 */  sw        $t1, 0x0($v1)
/* 359150 E004AC90 8FAF00BC */  lw        $t7, 0xBC($sp)
/* 359154 E004AC94 3C0CE300 */  lui       $t4, (0xE3001801 >> 16)
/* 359158 E004AC98 000F1600 */  sll       $v0, $t7, 24
/* 35915C E004AC9C 8FAF00C0 */  lw        $t7, 0xC0($sp)
/* 359160 E004ACA0 3C07FB00 */  lui       $a3, (0xFB000000 >> 16)
/* 359164 E004ACA4 000F2400 */  sll       $a0, $t7, 16
/* 359168 E004ACA8 8FAF00C4 */  lw        $t7, 0xC4($sp)
/* 35916C E004ACAC 00441025 */  or        $v0, $v0, $a0
/* 359170 E004ACB0 000F2200 */  sll       $a0, $t7, 8
/* 359174 E004ACB4 8FAF00A0 */  lw        $t7, 0xA0($sp)
/* 359178 E004ACB8 00441025 */  or        $v0, $v0, $a0
/* 35917C E004ACBC 31E800FF */  andi      $t0, $t7, 0xFF
/* 359180 E004ACC0 00481025 */  or        $v0, $v0, $t0
/* 359184 E004ACC4 AC620004 */  sw        $v0, 0x4($v1)
/* 359188 E004ACC8 24620010 */  addiu     $v0, $v1, 0x10
/* 35918C E004ACCC ACA20000 */  sw        $v0, 0x0($a1)
/* 359190 E004ACD0 AC670008 */  sw        $a3, 0x8($v1)
/* 359194 E004ACD4 8FAF00C8 */  lw        $t7, 0xC8($sp)
/* 359198 E004ACD8 358C1801 */  ori       $t4, $t4, (0xE3001801 & 0xFFFF)
/* 35919C E004ACDC 000F1600 */  sll       $v0, $t7, 24
/* 3591A0 E004ACE0 8FAF00CC */  lw        $t7, 0xCC($sp)
/* 3591A4 E004ACE4 3C06DE00 */  lui       $a2, (0xDE000000 >> 16)
/* 3591A8 E004ACE8 000F2400 */  sll       $a0, $t7, 16
/* 3591AC E004ACEC 8FAF00D0 */  lw        $t7, 0xD0($sp)
/* 3591B0 E004ACF0 00441025 */  or        $v0, $v0, $a0
/* 3591B4 E004ACF4 000F2200 */  sll       $a0, $t7, 8
/* 3591B8 E004ACF8 00441025 */  or        $v0, $v0, $a0
/* 3591BC E004ACFC AC62000C */  sw        $v0, 0xC($v1)
/* 3591C0 E004AD00 24620018 */  addiu     $v0, $v1, 0x18
/* 3591C4 E004AD04 ACA20000 */  sw        $v0, 0x0($a1)
/* 3591C8 E004AD08 24620020 */  addiu     $v0, $v1, 0x20
/* 3591CC E004AD0C AC6A0010 */  sw        $t2, 0x10($v1)
/* 3591D0 E004AD10 AC600014 */  sw        $zero, 0x14($v1)
/* 3591D4 E004AD14 ACA20000 */  sw        $v0, 0x0($a1)
/* 3591D8 E004AD18 24020200 */  addiu     $v0, $zero, 0x200
/* 3591DC E004AD1C AC62001C */  sw        $v0, 0x1C($v1)
/* 3591E0 E004AD20 24620028 */  addiu     $v0, $v1, 0x28
/* 3591E4 E004AD24 AC6B0018 */  sw        $t3, 0x18($v1)
/* 3591E8 E004AD28 ACA20000 */  sw        $v0, 0x0($a1)
/* 3591EC E004AD2C AC660020 */  sw        $a2, 0x20($v1)
/* 3591F0 E004AD30 8FAF00D4 */  lw        $t7, 0xD4($sp)
/* 3591F4 E004AD34 24620030 */  addiu     $v0, $v1, 0x30
/* 3591F8 E004AD38 AC6F0024 */  sw        $t7, 0x24($v1)
/* 3591FC E004AD3C ACA20000 */  sw        $v0, 0x0($a1)
/* 359200 E004AD40 AC690028 */  sw        $t1, 0x28($v1)
/* 359204 E004AD44 8FAF00A4 */  lw        $t7, 0xA4($sp)
/* 359208 E004AD48 3C0DE300 */  lui       $t5, (0xE3001A01 >> 16)
/* 35920C E004AD4C 000F1600 */  sll       $v0, $t7, 24
/* 359210 E004AD50 8FAF00A8 */  lw        $t7, 0xA8($sp)
/* 359214 E004AD54 35AD1A01 */  ori       $t5, $t5, (0xE3001A01 & 0xFFFF)
/* 359218 E004AD58 000F2400 */  sll       $a0, $t7, 16
/* 35921C E004AD5C 8FAF00AC */  lw        $t7, 0xAC($sp)
/* 359220 E004AD60 00441025 */  or        $v0, $v0, $a0
/* 359224 E004AD64 000F2200 */  sll       $a0, $t7, 8
/* 359228 E004AD68 00441025 */  or        $v0, $v0, $a0
/* 35922C E004AD6C 00481025 */  or        $v0, $v0, $t0
/* 359230 E004AD70 AC62002C */  sw        $v0, 0x2C($v1)
/* 359234 E004AD74 24620038 */  addiu     $v0, $v1, 0x38
/* 359238 E004AD78 ACA20000 */  sw        $v0, 0x0($a1)
/* 35923C E004AD7C AC670030 */  sw        $a3, 0x30($v1)
/* 359240 E004AD80 8FAF00B0 */  lw        $t7, 0xB0($sp)
/* 359244 E004AD84 3C0ED838 */  lui       $t6, (0xD8380002 >> 16)
/* 359248 E004AD88 000F1600 */  sll       $v0, $t7, 24
/* 35924C E004AD8C 8FAF00B4 */  lw        $t7, 0xB4($sp)
/* 359250 E004AD90 35CE0002 */  ori       $t6, $t6, (0xD8380002 & 0xFFFF)
/* 359254 E004AD94 000F2400 */  sll       $a0, $t7, 16
/* 359258 E004AD98 8FAF00B8 */  lw        $t7, 0xB8($sp)
/* 35925C E004AD9C 00441025 */  or        $v0, $v0, $a0
/* 359260 E004ADA0 000F2200 */  sll       $a0, $t7, 8
/* 359264 E004ADA4 00441025 */  or        $v0, $v0, $a0
/* 359268 E004ADA8 AC620034 */  sw        $v0, 0x34($v1)
/* 35926C E004ADAC 24620040 */  addiu     $v0, $v1, 0x40
/* 359270 E004ADB0 ACA20000 */  sw        $v0, 0x0($a1)
/* 359274 E004ADB4 24620048 */  addiu     $v0, $v1, 0x48
/* 359278 E004ADB8 AC6A0038 */  sw        $t2, 0x38($v1)
/* 35927C E004ADBC AC60003C */  sw        $zero, 0x3C($v1)
/* 359280 E004ADC0 ACA20000 */  sw        $v0, 0x0($a1)
/* 359284 E004ADC4 24020400 */  addiu     $v0, $zero, 0x400
/* 359288 E004ADC8 AC620044 */  sw        $v0, 0x44($v1)
/* 35928C E004ADCC 24620050 */  addiu     $v0, $v1, 0x50
/* 359290 E004ADD0 AC6B0040 */  sw        $t3, 0x40($v1)
/* 359294 E004ADD4 ACA20000 */  sw        $v0, 0x0($a1)
/* 359298 E004ADD8 AC660048 */  sw        $a2, 0x48($v1)
/* 35929C E004ADDC 8FAF00D4 */  lw        $t7, 0xD4($sp)
/* 3592A0 E004ADE0 24620058 */  addiu     $v0, $v1, 0x58
/* 3592A4 E004ADE4 AC6F004C */  sw        $t7, 0x4C($v1)
/* 3592A8 E004ADE8 ACA20000 */  sw        $v0, 0x0($a1)
/* 3592AC E004ADEC 240200C0 */  addiu     $v0, $zero, 0xC0
/* 3592B0 E004ADF0 AC6C0050 */  sw        $t4, 0x50($v1)
/* 3592B4 E004ADF4 AC620054 */  sw        $v0, 0x54($v1)
/* 3592B8 E004ADF8 24620060 */  addiu     $v0, $v1, 0x60
/* 3592BC E004ADFC ACA20000 */  sw        $v0, 0x0($a1)
/* 3592C0 E004AE00 24020030 */  addiu     $v0, $zero, 0x30
/* 3592C4 E004AE04 AC62005C */  sw        $v0, 0x5C($v1)
/* 3592C8 E004AE08 24620068 */  addiu     $v0, $v1, 0x68
/* 3592CC E004AE0C AC6D0058 */  sw        $t5, 0x58($v1)
/* 3592D0 E004AE10 ACA20000 */  sw        $v0, 0x0($a1)
/* 3592D4 E004AE14 24020040 */  addiu     $v0, $zero, 0x40
/* 3592D8 E004AE18 AC6E0060 */  sw        $t6, 0x60($v1)
/* 3592DC E004AE1C AC620064 */  sw        $v0, 0x64($v1)
/* 3592E0 E004AE20 8FBF00FC */  lw        $ra, 0xFC($sp)
/* 3592E4 E004AE24 8FBE00F8 */  lw        $fp, 0xF8($sp)
/* 3592E8 E004AE28 8FB700F4 */  lw        $s7, 0xF4($sp)
/* 3592EC E004AE2C 8FB600F0 */  lw        $s6, 0xF0($sp)
/* 3592F0 E004AE30 8FB500EC */  lw        $s5, 0xEC($sp)
/* 3592F4 E004AE34 8FB400E8 */  lw        $s4, 0xE8($sp)
/* 3592F8 E004AE38 8FB300E4 */  lw        $s3, 0xE4($sp)
/* 3592FC E004AE3C 8FB200E0 */  lw        $s2, 0xE0($sp)
/* 359300 E004AE40 8FB100DC */  lw        $s1, 0xDC($sp)
/* 359304 E004AE44 8FB000D8 */  lw        $s0, 0xD8($sp)
/* 359308 E004AE48 D7B80110 */  ldc1      $f24, 0x110($sp)
/* 35930C E004AE4C D7B60108 */  ldc1      $f22, 0x108($sp)
/* 359310 E004AE50 D7B40100 */  ldc1      $f20, 0x100($sp)
/* 359314 E004AE54 03E00008 */  jr        $ra
/* 359318 E004AE58 27BD0118 */   addiu    $sp, $sp, 0x118
/* 35931C E004AE5C 00000000 */  nop

### DECOMPILED C INSTRUCTIONS:

void shockwave_appendGfx(void* effect) {
    ShockwaveFXData* data = ((EffectInstance*) effect)->data.shockwave;
    Matrix4f sp20, sp60;
    Gfx* dlist = D_09000940_359CF0;
    Gfx* dlist2;
    s32 primA;
    s32 primR, primG, primB;
    s32 envR, envG, envB;
    s32 primR2, primG2, primB2;
    s32 envR2, envG2, envB2;
    Gfx* savedGfxPos;
    Gfx* savedGfxPos2;
    s32 temp_v0;
    s32 i;

    primR = data->prim.r;
    primG = data->prim.g;
    primB = data->prim.b;
    envR = data->env.r;
    envG = data->env.g;
    envB = data->env.b;
    primR2 = data->prim.r;
    primG2 = data->prim.g;
    primB2 = data->prim.b;
    envR2 = data->env.r;
    envG2 = data->env.g;
    envB2 = data->env.b;

    temp_v0 = data->unk_00;
    dlist2 = D_E004AE60[temp_v0];

    if (temp_v0 >= 2) {
        primR2 = primR >> 2;
        primG2 = primG >> 2;
        primB2 = primB >> 2;
        envR2 = envR >> 2;
        envG2 = envG >> 2;
        envB2 = envB >> 2;
    }

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

    shim_guPositionF(sp20, 0.0f, -gCameras[gCurrentCameraID].currentYaw, 0.0f, 1.0f,
                     data->pos.x, data->pos.y, data->pos.z);
    shim_guMtxF2L(sp20, &gDisplayContext->matrixStack[gMatrixListPos]);

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

    savedGfxPos = gMainGfxPos;
    gMainGfxPos++;
    savedGfxPos2 = gMainGfxPos;

    data++;
    for (i = 1; i < ((EffectInstance*) effect)->numParts; i++, data++) {
        if (data->unk_4C >= 0) {
            shim_guTranslateF(sp20, data->pos.x, data->pos.y, data->pos.z);
            shim_guRotateF(sp60, data->unk_34, 0.0f, 0.0f, 1.0f);
            shim_guMtxCatF(sp60, sp20, sp20);
            shim_guScaleF(sp60, data->unk_1C * 0.3, data->unk_20 * 0.3, data->unk_24 * 0.3);
            shim_guMtxCatF(sp60, sp20, sp20);
            shim_guRotateF(sp60, data->unk_30, 0.0f, 1.0f, 0.0f);
            shim_guMtxCatF(sp60, sp20, sp20);
            shim_guMtxF2L(sp20, &gDisplayContext->matrixStack[gMatrixListPos]);

            gDPSetTileSize(gMainGfxPos++, G_TX_RENDERTILE, 0, (s32) data->unk_3C, 0x00FC, (s32) data->unk_3C + 0x7C);
            gDPSetTileSize(gMainGfxPos++, 1, 0, (s32) data->unk_44, 0x007C, (s32) data->unk_44 + 0x7C);

            gSPMatrix(gMainGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++],
                      G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW);
            gSPDisplayList(gMainGfxPos++, dlist);
            gSPPopMatrix(gMainGfxPos++, G_MTX_MODELVIEW);
        }
    }
    gSPEndDisplayList(gMainGfxPos++);
    gSPBranchList(savedGfxPos, gMainGfxPos);
    gDPSetPrimColor(gMainGfxPos++, 0, 0, primR2, primG2, primB2, primA);
    gDPSetEnvColor(gMainGfxPos++, envR2, envG2, envB2, 0);
    gSPClearGeometryMode(gMainGfxPos++, G_CULL_BOTH);
    gSPSetGeometryMode(gMainGfxPos++, G_CULL_FRONT);
    gSPDisplayList(gMainGfxPos++, savedGfxPos2);
    gDPSetPrimColor(gMainGfxPos++, 0, 0, primR, primG, primB, primA);
    gDPSetEnvColor(gMainGfxPos++, envR, envG, envB, 0);
    gSPClearGeometryMode(gMainGfxPos++, G_CULL_BOTH);
    gSPSetGeometryMode(gMainGfxPos++, G_CULL_BACK);
    gSPDisplayList(gMainGfxPos++, savedGfxPos2);
    gDPSetColorDither(gMainGfxPos++, G_CD_DISABLE);
    gDPSetAlphaDither(gMainGfxPos++, G_AD_DISABLE);
    gSPPopMatrix(gMainGfxPos++, G_MTX_MODELVIEW);
}


### RAW ASSEMBLY INSTRUCTIONS:

glabel squirt_appendGfx
/* 3B4C40 E00B24B0 27BDFF00 */  addiu     $sp, $sp, -0x100
/* 3B4C44 E00B24B4 0080482D */  daddu     $t1, $a0, $zero
/* 3B4C48 E00B24B8 3C0ADB06 */  lui       $t2, (0xDB060024 >> 16)
/* 3B4C4C E00B24BC 354A0024 */  ori       $t2, $t2, (0xDB060024 & 0xFFFF)
/* 3B4C50 E00B24C0 27A40010 */  addiu     $a0, $sp, 0x10
/* 3B4C54 E00B24C4 AFB300B4 */  sw        $s3, 0xB4($sp)
/* 3B4C58 E00B24C8 3C130001 */  lui       $s3, (0x11630 >> 16)
/* 3B4C5C E00B24CC 36731630 */  ori       $s3, $s3, (0x11630 & 0xFFFF)
/* 3B4C60 E00B24D0 AFB500BC */  sw        $s5, 0xBC($sp)
/* 3B4C64 E00B24D4 0000A82D */  daddu     $s5, $zero, $zero
/* 3B4C68 E00B24D8 3C18E00B */  lui       $t8, %hi(D_E00B2BA0)
/* 3B4C6C E00B24DC 27182BA0 */  addiu     $t8, $t8, %lo(D_E00B2BA0)
/* 3B4C70 E00B24E0 AFB800A0 */  sw        $t8, 0xA0($sp)
/* 3B4C74 E00B24E4 24180004 */  addiu     $t8, $zero, 0x4
/* 3B4C78 E00B24E8 AFB100AC */  sw        $s1, 0xAC($sp)
/* 3B4C7C E00B24EC 3C11800A */  lui       $s1, %hi(gMainGfxPos)
/* 3B4C80 E00B24F0 2631A66C */  addiu     $s1, $s1, %lo(gMainGfxPos)
/* 3B4C84 E00B24F4 3C02E700 */  lui       $v0, (0xE7000000 >> 16)
/* 3B4C88 E00B24F8 AFBF00CC */  sw        $ra, 0xCC($sp)
/* 3B4C8C E00B24FC AFBE00C8 */  sw        $fp, 0xC8($sp)
/* 3B4C90 E00B2500 AFB700C4 */  sw        $s7, 0xC4($sp)
/* 3B4C94 E00B2504 AFB600C0 */  sw        $s6, 0xC0($sp)
/* 3B4C98 E00B2508 AFB400B8 */  sw        $s4, 0xB8($sp)
/* 3B4C9C E00B250C AFB200B0 */  sw        $s2, 0xB0($sp)
/* 3B4CA0 E00B2510 AFB000A8 */  sw        $s0, 0xA8($sp)
/* 3B4CA4 E00B2514 F7BE00F8 */  sdc1      $f30, 0xF8($sp)
/* 3B4CA8 E00B2518 F7BC00F0 */  sdc1      $f28, 0xF0($sp)
/* 3B4CAC E00B251C F7BA00E8 */  sdc1      $f26, 0xE8($sp)
/* 3B4CB0 E00B2520 F7B800E0 */  sdc1      $f24, 0xE0($sp)
/* 3B4CB4 E00B2524 F7B600D8 */  sdc1      $f22, 0xD8($sp)
/* 3B4CB8 E00B2528 F7B400D0 */  sdc1      $f20, 0xD0($sp)
/* 3B4CBC E00B252C AFA0009C */  sw        $zero, 0x9C($sp)
/* 3B4CC0 E00B2530 AFB800A4 */  sw        $t8, 0xA4($sp)
/* 3B4CC4 E00B2534 8E280000 */  lw        $t0, 0x0($s1)
/* 3B4CC8 E00B2538 3C013FE0 */  lui       $at, (0x3FE00000 >> 16)
/* 3B4CCC E00B253C 4481E800 */  mtc1      $at, $f29
/* 3B4CD0 E00B2540 4480E000 */  mtc1      $zero, $f28
/* 3B4CD4 E00B2544 3C0141A0 */  lui       $at, (0x41A00000 >> 16)
/* 3B4CD8 E00B2548 4481D000 */  mtc1      $at, $f26
/* 3B4CDC E00B254C 44800000 */  mtc1      $zero, $f0
/* 3B4CE0 E00B2550 8D37000C */  lw        $s7, 0xC($t1)
/* 3B4CE4 E00B2554 0100182D */  daddu     $v1, $t0, $zero
/* 3B4CE8 E00B2558 44050000 */  mfc1      $a1, $f0
/* 3B4CEC E00B255C 25080008 */  addiu     $t0, $t0, 0x8
/* 3B4CF0 E00B2560 AE280000 */  sw        $t0, 0x0($s1)
/* 3B4CF4 E00B2564 8EF80000 */  lw        $t8, 0x0($s7)
/* 3B4CF8 E00B2568 4485F000 */  mtc1      $a1, $f30
/* 3B4CFC E00B256C 00A0302D */  daddu     $a2, $a1, $zero
/* 3B4D00 E00B2570 AFB80090 */  sw        $t8, 0x90($sp)
/* 3B4D04 E00B2574 C6E40050 */  lwc1      $f4, 0x50($s7)
/* 3B4D08 E00B2578 00A0382D */  daddu     $a3, $a1, $zero
/* 3B4D0C E00B257C E7A40098 */  swc1      $f4, 0x98($sp)
/* 3B4D10 E00B2580 AC620000 */  sw        $v0, 0x0($v1)
/* 3B4D14 E00B2584 AC600004 */  sw        $zero, 0x4($v1)
/* 3B4D18 E00B2588 AD0A0000 */  sw        $t2, 0x0($t0)
/* 3B4D1C E00B258C 8D230010 */  lw        $v1, 0x10($t1)
/* 3B4D20 E00B2590 25020008 */  addiu     $v0, $t0, 0x8
/* 3B4D24 E00B2594 AE220000 */  sw        $v0, 0x0($s1)
/* 3B4D28 E00B2598 8C62001C */  lw        $v0, 0x1C($v1)
/* 3B4D2C E00B259C 3C038000 */  lui       $v1, (0x80000000 >> 16)
/* 3B4D30 E00B25A0 00431021 */  addu      $v0, $v0, $v1
/* 3B4D34 E00B25A4 0C080108 */  jal       shim_guTranslateF
/* 3B4D38 E00B25A8 AD020004 */   sw       $v0, 0x4($t0)
/* 3B4D3C E00B25AC 02E0B02D */  daddu     $s6, $s7, $zero
/* 3B4D40 E00B25B0 3C013D4C */  lui       $at, (0x3D4CCCCD >> 16)
/* 3B4D44 E00B25B4 3421CCCD */  ori       $at, $at, (0x3D4CCCCD & 0xFFFF)
/* 3B4D48 E00B25B8 44810000 */  mtc1      $at, $f0
/* 3B4D4C E00B25BC 27B00050 */  addiu     $s0, $sp, 0x50
/* 3B4D50 E00B25C0 44050000 */  mfc1      $a1, $f0
/* 3B4D54 E00B25C4 0200202D */  daddu     $a0, $s0, $zero
/* 3B4D58 E00B25C8 00A0302D */  daddu     $a2, $a1, $zero
/* 3B4D5C E00B25CC 0C080110 */  jal       shim_guScaleF
/* 3B4D60 E00B25D0 00A0382D */   daddu    $a3, $a1, $zero
/* 3B4D64 E00B25D4 0200202D */  daddu     $a0, $s0, $zero
/* 3B4D68 E00B25D8 27A50010 */  addiu     $a1, $sp, 0x10
/* 3B4D6C E00B25DC 0C080114 */  jal       shim_guMtxCatF
/* 3B4D70 E00B25E0 00A0302D */   daddu    $a2, $a1, $zero
/* 3B4D74 E00B25E4 27A40010 */  addiu     $a0, $sp, 0x10
/* 3B4D78 E00B25E8 3C108007 */  lui       $s0, %hi(gMatrixListPos)
/* 3B4D7C E00B25EC 261041F0 */  addiu     $s0, $s0, %lo(gMatrixListPos)
/* 3B4D80 E00B25F0 3C12800A */  lui       $s2, %hi(gDisplayContext)
/* 3B4D84 E00B25F4 2652A674 */  addiu     $s2, $s2, %lo(gDisplayContext)
/* 3B4D88 E00B25F8 96050000 */  lhu       $a1, 0x0($s0)
/* 3B4D8C E00B25FC 8E420000 */  lw        $v0, 0x0($s2)
/* 3B4D90 E00B2600 00052980 */  sll       $a1, $a1, 6
/* 3B4D94 E00B2604 00B32821 */  addu      $a1, $a1, $s3
/* 3B4D98 E00B2608 0C080118 */  jal       shim_guMtxF2L
/* 3B4D9C E00B260C 00452821 */   addu     $a1, $v0, $a1
/* 3B4DA0 E00B2610 3C03DA38 */  lui       $v1, (0xDA380002 >> 16)
/* 3B4DA4 E00B2614 8E240000 */  lw        $a0, 0x0($s1)
/* 3B4DA8 E00B2618 34630002 */  ori       $v1, $v1, (0xDA380002 & 0xFFFF)
/* 3B4DAC E00B261C 0080282D */  daddu     $a1, $a0, $zero
/* 3B4DB0 E00B2620 24840008 */  addiu     $a0, $a0, 0x8
/* 3B4DB4 E00B2624 24980018 */  addiu     $t8, $a0, 0x18
/* 3B4DB8 E00B2628 0300F02D */  daddu     $fp, $t8, $zero
/* 3B4DBC E00B262C AFB80094 */  sw        $t8, 0x94($sp)
/* 3B4DC0 E00B2630 96020000 */  lhu       $v0, 0x0($s0)
/* 3B4DC4 E00B2634 24940027 */  addiu     $s4, $a0, 0x27
/* 3B4DC8 E00B2638 AE240000 */  sw        $a0, 0x0($s1)
/* 3B4DCC E00B263C ACA30000 */  sw        $v1, 0x0($a1)
/* 3B4DD0 E00B2640 24430001 */  addiu     $v1, $v0, 0x1
/* 3B4DD4 E00B2644 3042FFFF */  andi      $v0, $v0, 0xFFFF
/* 3B4DD8 E00B2648 00021180 */  sll       $v0, $v0, 6
/* 3B4DDC E00B264C A6030000 */  sh        $v1, 0x0($s0)
/* 3B4DE0 E00B2650 8E430000 */  lw        $v1, 0x0($s2)
/* 3B4DE4 E00B2654 00531021 */  addu      $v0, $v0, $s3
/* 3B4DE8 E00B2658 00621821 */  addu      $v1, $v1, $v0
/* 3B4DEC E00B265C 24820008 */  addiu     $v0, $a0, 0x8
/* 3B4DF0 E00B2660 ACA30004 */  sw        $v1, 0x4($a1)
/* 3B4DF4 E00B2664 AE220000 */  sw        $v0, 0x0($s1)
/* 3B4DF8 E00B2668 3C02FA00 */  lui       $v0, (0xFA000000 >> 16)
/* 3B4DFC E00B266C AC820000 */  sw        $v0, 0x0($a0)
/* 3B4E00 E00B2670 92E20037 */  lbu       $v0, 0x37($s7)
/* 3B4E04 E00B2674 92E5003B */  lbu       $a1, 0x3B($s7)
/* 3B4E08 E00B2678 92E6003F */  lbu       $a2, 0x3F($s7)
/* 3B4E0C E00B267C 92E70043 */  lbu       $a3, 0x43($s7)
/* 3B4E10 E00B2680 24830010 */  addiu     $v1, $a0, 0x10
/* 3B4E14 E00B2684 AE230000 */  sw        $v1, 0x0($s1)
/* 3B4E18 E00B2688 3C03FB00 */  lui       $v1, (0xFB000000 >> 16)
/* 3B4E1C E00B268C AC830008 */  sw        $v1, 0x8($a0)
/* 3B4E20 E00B2690 00021600 */  sll       $v0, $v0, 24
/* 3B4E24 E00B2694 00052C00 */  sll       $a1, $a1, 16
/* 3B4E28 E00B2698 00451025 */  or        $v0, $v0, $a1
/* 3B4E2C E00B269C 00063200 */  sll       $a2, $a2, 8
/* 3B4E30 E00B26A0 00461025 */  or        $v0, $v0, $a2
/* 3B4E34 E00B26A4 00471025 */  or        $v0, $v0, $a3
/* 3B4E38 E00B26A8 AC820004 */  sw        $v0, 0x4($a0)
/* 3B4E3C E00B26AC 92E20047 */  lbu       $v0, 0x47($s7)
/* 3B4E40 E00B26B0 92E5004B */  lbu       $a1, 0x4B($s7)
/* 3B4E44 E00B26B4 92E6004F */  lbu       $a2, 0x4F($s7)
/* 3B4E48 E00B26B8 3C03DE01 */  lui       $v1, (0xDE010000 >> 16)
/* 3B4E4C E00B26BC AC830010 */  sw        $v1, 0x10($a0)
/* 3B4E50 E00B26C0 24830198 */  addiu     $v1, $a0, 0x198
/* 3B4E54 E00B26C4 AC830014 */  sw        $v1, 0x14($a0)
/* 3B4E58 E00B26C8 AE230000 */  sw        $v1, 0x0($s1)
/* 3B4E5C E00B26CC 00021600 */  sll       $v0, $v0, 24
/* 3B4E60 E00B26D0 00052C00 */  sll       $a1, $a1, 16
/* 3B4E64 E00B26D4 00451025 */  or        $v0, $v0, $a1
/* 3B4E68 E00B26D8 00063200 */  sll       $a2, $a2, 8
/* 3B4E6C E00B26DC 00461025 */  or        $v0, $v0, $a2
/* 3B4E70 E00B26E0 344200C8 */  ori       $v0, $v0, 0xC8
/* 3B4E74 E00B26E4 AC82000C */  sw        $v0, 0xC($a0)
.LE00B26E8:
/* 3B4E78 E00B26E8 12A00008 */  beqz      $s5, .LE00B270C
/* 3B4E7C E00B26EC 0000C02D */   daddu    $t8, $zero, $zero
/* 3B4E80 E00B26F0 13150006 */  beq       $t8, $s5, .LE00B270C
/* 3B4E84 E00B26F4 2402000B */   addiu    $v0, $zero, 0xB
/* 3B4E88 E00B26F8 12A2000F */  beq       $s5, $v0, .LE00B2738
/* 3B4E8C E00B26FC 00000000 */   nop
/* 3B4E90 E00B2700 8EC20178 */  lw        $v0, 0x178($s6)
/* 3B4E94 E00B2704 1440000C */  bnez      $v0, .LE00B2738
/* 3B4E98 E00B2708 00000000 */   nop
.LE00B270C:
/* 3B4E9C E00B270C 8FB800A4 */  lw        $t8, 0xA4($sp)
/* 3B4EA0 E00B2710 8EC60118 */  lw        $a2, 0x118($s6)
/* 3B4EA4 E00B2714 C6C000E8 */  lwc1      $f0, 0xE8($s6)
/* 3B4EA8 E00B2718 02F81021 */  addu      $v0, $s7, $t8
/* 3B4EAC E00B271C 46000007 */  neg.s     $f0, $f0
/* 3B4EB0 E00B2720 C44C0118 */  lwc1      $f12, 0x118($v0)
/* 3B4EB4 E00B2724 C44E00E8 */  lwc1      $f14, 0xE8($v0)
/* 3B4EB8 E00B2728 44070000 */  mfc1      $a3, $f0
/* 3B4EBC E00B272C 0C080148 */  jal       shim_atan2
/* 3B4EC0 E00B2730 46007387 */   neg.s    $f14, $f14
/* 3B4EC4 E00B2734 46000607 */  neg.s     $f24, $f0
.LE00B2738:
/* 3B4EC8 E00B2738 8EE20000 */  lw        $v0, 0x0($s7)
/* 3B4ECC E00B273C 14400015 */  bnez      $v0, .LE00B2794
/* 3B4ED0 E00B2740 00000000 */   nop
/* 3B4ED4 E00B2744 C6C001A8 */  lwc1      $f0, 0x1A8($s6)
/* 3B4ED8 E00B2748 46800020 */  cvt.s.w   $f0, $f0
/* 3B4EDC E00B274C 46000021 */  cvt.d.s   $f0, $f0
/* 3B4EE0 E00B2750 463C0002 */  mul.d     $f0, $f0, $f28
/* 3B4EE4 E00B2754 00000000 */  nop
/* 3B4EE8 E00B2758 3C014000 */  lui       $at, (0x40000000 >> 16)
/* 3B4EEC E00B275C 44811800 */  mtc1      $at, $f3
/* 3B4EF0 E00B2760 44801000 */  mtc1      $zero, $f2
/* 3B4EF4 E00B2764 00000000 */  nop
/* 3B4EF8 E00B2768 46220000 */  add.d     $f0, $f0, $f2
/* 3B4EFC E00B276C 3C0140C0 */  lui       $at, (0x40C00000 >> 16)
/* 3B4F00 E00B2770 44812000 */  mtc1      $at, $f4
/* 3B4F04 E00B2774 462005A0 */  cvt.s.d   $f22, $f0
/* 3B4F08 E00B2778 4616203C */  c.lt.s    $f4, $f22
/* 3B4F0C E00B277C 00000000 */  nop
/* 3B4F10 E00B2780 45030001 */  bc1tl     .LE00B2788
/* 3B4F14 E00B2784 46002586 */   mov.s    $f22, $f4
.LE00B2788:
/* 3B4F18 E00B2788 8FB800A0 */  lw        $t8, 0xA0($sp)
/* 3B4F1C E00B278C 0802CA04 */  j         .LE00B2810
/* 3B4F20 E00B2790 93110000 */   lbu      $s1, 0x0($t8)
.LE00B2794:
/* 3B4F24 E00B2794 C6C001A8 */  lwc1      $f0, 0x1A8($s6)
/* 3B4F28 E00B2798 46800020 */  cvt.s.w   $f0, $f0
/* 3B4F2C E00B279C 46000021 */  cvt.d.s   $f0, $f0
/* 3B4F30 E00B27A0 463C0002 */  mul.d     $f0, $f0, $f28
/* 3B4F34 E00B27A4 00000000 */  nop
/* 3B4F38 E00B27A8 3C013FF0 */  lui       $at, (0x3FF00000 >> 16)
/* 3B4F3C E00B27AC 44811800 */  mtc1      $at, $f3
/* 3B4F40 E00B27B0 44801000 */  mtc1      $zero, $f2
/* 3B4F44 E00B27B4 00000000 */  nop
/* 3B4F48 E00B27B8 46220000 */  add.d     $f0, $f0, $f2
/* 3B4F4C E00B27BC 3C0141F0 */  lui       $at, (0x41F00000 >> 16)
/* 3B4F50 E00B27C0 44811000 */  mtc1      $at, $f2
/* 3B4F54 E00B27C4 462005A0 */  cvt.s.d   $f22, $f0
/* 3B4F58 E00B27C8 4616103C */  c.lt.s    $f2, $f22
/* 3B4F5C E00B27CC 00000000 */  nop
/* 3B4F60 E00B27D0 45030001 */  bc1tl     .LE00B27D8
/* 3B4F64 E00B27D4 46001586 */   mov.s    $f22, $f2
.LE00B27D8:
/* 3B4F68 E00B27D8 02F51021 */  addu      $v0, $s7, $s5
/* 3B4F6C E00B27DC 8FB800A0 */  lw        $t8, 0xA0($sp)
/* 3B4F70 E00B27E0 904201D8 */  lbu       $v0, 0x1D8($v0)
/* 3B4F74 E00B27E4 93030000 */  lbu       $v1, 0x0($t8)
/* 3B4F78 E00B27E8 00620018 */  mult      $v1, $v0
/* 3B4F7C E00B27EC 00001812 */  mflo      $v1
/* 3B4F80 E00B27F0 3C028080 */  lui       $v0, (0x80808081 >> 16)
/* 3B4F84 E00B27F4 34428081 */  ori       $v0, $v0, (0x80808081 & 0xFFFF)
/* 3B4F88 E00B27F8 00620018 */  mult      $v1, $v0
/* 3B4F8C E00B27FC 00001010 */  mfhi      $v0
/* 3B4F90 E00B2800 00431021 */  addu      $v0, $v0, $v1
/* 3B4F94 E00B2804 000211C3 */  sra       $v0, $v0, 7
/* 3B4F98 E00B2808 00031FC3 */  sra       $v1, $v1, 31
/* 3B4F9C E00B280C 00438823 */  subu      $s1, $v0, $v1
.LE00B2810:
/* 3B4FA0 E00B2810 C7A40098 */  lwc1      $f4, 0x98($sp)
/* 3B4FA4 E00B2814 8FB8009C */  lw        $t8, 0x9C($sp)
/* 3B4FA8 E00B2818 4604B582 */  mul.s     $f22, $f22, $f4
/* 3B4FAC E00B281C 00000000 */  nop
/* 3B4FB0 E00B2820 4600C306 */  mov.s     $f12, $f24
/* 3B4FB4 E00B2824 03158021 */  addu      $s0, $t8, $s5
/* 3B4FB8 E00B2828 0C080140 */  jal       shim_sin_deg
/* 3B4FBC E00B282C 00108180 */   sll      $s0, $s0, 6
/* 3B4FC0 E00B2830 4600B502 */  mul.s     $f20, $f22, $f0
/* 3B4FC4 E00B2834 00000000 */  nop
/* 3B4FC8 E00B2838 0C080144 */  jal       shim_cos_deg
/* 3B4FCC E00B283C 4600C306 */   mov.s    $f12, $f24
/* 3B4FD0 E00B2840 C6C200E8 */  lwc1      $f2, 0xE8($s6)
/* 3B4FD4 E00B2844 46141080 */  add.s     $f2, $f2, $f20
/* 3B4FD8 E00B2848 461A1082 */  mul.s     $f2, $f2, $f26
/* 3B4FDC E00B284C 00000000 */  nop
/* 3B4FE0 E00B2850 4600B002 */  mul.s     $f0, $f22, $f0
/* 3B4FE4 E00B2854 00000000 */  nop
/* 3B4FE8 E00B2858 4600110D */  trunc.w.s $f4, $f2
/* 3B4FEC E00B285C 44022000 */  mfc1      $v0, $f4
/* 3B4FF0 E00B2860 00000000 */  nop
/* 3B4FF4 E00B2864 A7C20000 */  sh        $v0, 0x0($fp)
/* 3B4FF8 E00B2868 C6C20118 */  lwc1      $f2, 0x118($s6)
/* 3B4FFC E00B286C 46001080 */  add.s     $f2, $f2, $f0
/* 3B5000 E00B2870 461A1082 */  mul.s     $f2, $f2, $f26
/* 3B5004 E00B2874 00000000 */  nop
/* 3B5008 E00B2878 4600110D */  trunc.w.s $f4, $f2
/* 3B500C E00B287C 44022000 */  mfc1      $v0, $f4
/* 3B5010 E00B2880 00000000 */  nop
/* 3B5014 E00B2884 A682FFF3 */  sh        $v0, -0xD($s4)
/* 3B5018 E00B2888 32A20001 */  andi      $v0, $s5, 0x1
/* 3B501C E00B288C 00022A00 */  sll       $a1, $v0, 8
/* 3B5020 E00B2890 00A22823 */  subu      $a1, $a1, $v0
/* 3B5024 E00B2894 00151043 */  sra       $v0, $s5, 1
/* 3B5028 E00B2898 30420001 */  andi      $v0, $v0, 0x1
/* 3B502C E00B289C 00022200 */  sll       $a0, $v0, 8
/* 3B5030 E00B28A0 00822023 */  subu      $a0, $a0, $v0
/* 3B5034 E00B28A4 00151083 */  sra       $v0, $s5, 2
/* 3B5038 E00B28A8 30420001 */  andi      $v0, $v0, 0x1
/* 3B503C E00B28AC 00021A00 */  sll       $v1, $v0, 8
/* 3B5040 E00B28B0 C6C20148 */  lwc1      $f2, 0x148($s6)
/* 3B5044 E00B28B4 00621823 */  subu      $v1, $v1, $v0
/* 3B5048 E00B28B8 461E1080 */  add.s     $f2, $f2, $f30
/* 3B504C E00B28BC A690FFF9 */  sh        $s0, -0x7($s4)
/* 3B5050 E00B28C0 A680FFFB */  sh        $zero, -0x5($s4)
/* 3B5054 E00B28C4 461A1082 */  mul.s     $f2, $f2, $f26
/* 3B5058 E00B28C8 00000000 */  nop
/* 3B505C E00B28CC A285FFFD */  sb        $a1, -0x3($s4)
/* 3B5060 E00B28D0 A284FFFE */  sb        $a0, -0x2($s4)
/* 3B5064 E00B28D4 A283FFFF */  sb        $v1, -0x1($s4)
/* 3B5068 E00B28D8 A2910000 */  sb        $s1, 0x0($s4)
/* 3B506C E00B28DC 4600110D */  trunc.w.s $f4, $f2
/* 3B5070 E00B28E0 44022000 */  mfc1      $v0, $f4
/* 3B5074 E00B28E4 00000000 */  nop
/* 3B5078 E00B28E8 A682FFF5 */  sh        $v0, -0xB($s4)
/* 3B507C E00B28EC C6C200E8 */  lwc1      $f2, 0xE8($s6)
/* 3B5080 E00B28F0 46141081 */  sub.s     $f2, $f2, $f20
/* 3B5084 E00B28F4 461A1082 */  mul.s     $f2, $f2, $f26
/* 3B5088 E00B28F8 00000000 */  nop
/* 3B508C E00B28FC 27DE0010 */  addiu     $fp, $fp, 0x10
/* 3B5090 E00B2900 26B50001 */  addiu     $s5, $s5, 0x1
/* 3B5094 E00B2904 26940010 */  addiu     $s4, $s4, 0x10
/* 3B5098 E00B2908 4600110D */  trunc.w.s $f4, $f2
/* 3B509C E00B290C 44022000 */  mfc1      $v0, $f4
/* 3B50A0 E00B2910 00000000 */  nop
/* 3B50A4 E00B2914 A7C20000 */  sh        $v0, 0x0($fp)
/* 3B50A8 E00B2918 8FB8009C */  lw        $t8, 0x9C($sp)
/* 3B50AC E00B291C C6C20118 */  lwc1      $f2, 0x118($s6)
/* 3B50B0 E00B2920 27180004 */  addiu     $t8, $t8, 0x4
/* 3B50B4 E00B2924 AFB8009C */  sw        $t8, 0x9C($sp)
/* 3B50B8 E00B2928 8FB800A0 */  lw        $t8, 0xA0($sp)
/* 3B50BC E00B292C 46001081 */  sub.s     $f2, $f2, $f0
/* 3B50C0 E00B2930 27180001 */  addiu     $t8, $t8, 0x1
/* 3B50C4 E00B2934 AFB800A0 */  sw        $t8, 0xA0($sp)
/* 3B50C8 E00B2938 461A1082 */  mul.s     $f2, $f2, $f26
/* 3B50CC E00B293C 00000000 */  nop
/* 3B50D0 E00B2940 8FB800A4 */  lw        $t8, 0xA4($sp)
/* 3B50D4 E00B2944 27DE0010 */  addiu     $fp, $fp, 0x10
/* 3B50D8 E00B2948 27180004 */  addiu     $t8, $t8, 0x4
/* 3B50DC E00B294C AFB800A4 */  sw        $t8, 0xA4($sp)
/* 3B50E0 E00B2950 4600110D */  trunc.w.s $f4, $f2
/* 3B50E4 E00B2954 44022000 */  mfc1      $v0, $f4
/* 3B50E8 E00B2958 00000000 */  nop
/* 3B50EC E00B295C A682FFF3 */  sh        $v0, -0xD($s4)
/* 3B50F0 E00B2960 C6C00148 */  lwc1      $f0, 0x148($s6)
/* 3B50F4 E00B2964 26D60004 */  addiu     $s6, $s6, 0x4
/* 3B50F8 E00B2968 24020400 */  addiu     $v0, $zero, 0x400
/* 3B50FC E00B296C 461E0000 */  add.s     $f0, $f0, $f30
/* 3B5100 E00B2970 A690FFF9 */  sh        $s0, -0x7($s4)
/* 3B5104 E00B2974 A682FFFB */  sh        $v0, -0x5($s4)
/* 3B5108 E00B2978 461A0002 */  mul.s     $f0, $f0, $f26
/* 3B510C E00B297C 00000000 */  nop
/* 3B5110 E00B2980 A285FFFD */  sb        $a1, -0x3($s4)
/* 3B5114 E00B2984 A284FFFE */  sb        $a0, -0x2($s4)
/* 3B5118 E00B2988 A283FFFF */  sb        $v1, -0x1($s4)
/* 3B511C E00B298C A2910000 */  sb        $s1, 0x0($s4)
/* 3B5120 E00B2990 4600010D */  trunc.w.s $f4, $f0
/* 3B5124 E00B2994 44022000 */  mfc1      $v0, $f4
/* 3B5128 E00B2998 00000000 */  nop
/* 3B512C E00B299C A682FFF5 */  sh        $v0, -0xB($s4)
/* 3B5130 E00B29A0 2AA2000C */  slti      $v0, $s5, 0xC
/* 3B5134 E00B29A4 1440FF50 */  bnez      $v0, .LE00B26E8
/* 3B5138 E00B29A8 26940010 */   addiu    $s4, $s4, 0x10
/* 3B513C E00B29AC 3C07800A */  lui       $a3, %hi(gMainGfxPos)
/* 3B5140 E00B29B0 24E7A66C */  addiu     $a3, $a3, %lo(gMainGfxPos)
/* 3B5144 E00B29B4 3C080900 */  lui       $t0, %hi(D_090008A8_415908)
/* 3B5148 E00B29B8 250808A8 */  addiu     $t0, $t0, %lo(D_090008A8_415908)
/* 3B514C E00B29BC 00151040 */  sll       $v0, $s5, 1
/* 3B5150 E00B29C0 304400FF */  andi      $a0, $v0, 0xFF
/* 3B5154 E00B29C4 00042300 */  sll       $a0, $a0, 12
/* 3B5158 E00B29C8 3042007F */  andi      $v0, $v0, 0x7F
/* 3B515C E00B29CC 00021040 */  sll       $v0, $v0, 1
/* 3B5160 E00B29D0 3C030100 */  lui       $v1, (0x1000000 >> 16)
/* 3B5164 E00B29D4 00431025 */  or        $v0, $v0, $v1
/* 3B5168 E00B29D8 8CE60000 */  lw        $a2, 0x0($a3)
/* 3B516C E00B29DC 00822025 */  or        $a0, $a0, $v0
/* 3B5170 E00B29E0 00C0282D */  daddu     $a1, $a2, $zero
/* 3B5174 E00B29E4 24C60008 */  addiu     $a2, $a2, 0x8
/* 3B5178 E00B29E8 ACE60000 */  sw        $a2, 0x0($a3)
/* 3B517C E00B29EC ACA40000 */  sw        $a0, 0x0($a1)
/* 3B5180 E00B29F0 8FB80094 */  lw        $t8, 0x94($sp)
/* 3B5184 E00B29F4 24C20008 */  addiu     $v0, $a2, 0x8
/* 3B5188 E00B29F8 ACB80004 */  sw        $t8, 0x4($a1)
/* 3B518C E00B29FC ACE20000 */  sw        $v0, 0x0($a3)
/* 3B5190 E00B2A00 3C02DE00 */  lui       $v0, (0xDE000000 >> 16)
/* 3B5194 E00B2A04 ACC20000 */  sw        $v0, 0x0($a2)
/* 3B5198 E00B2A08 8FB80090 */  lw        $t8, 0x90($sp)
/* 3B519C E00B2A0C 17000003 */  bnez      $t8, .LE00B2A1C
/* 3B51A0 E00B2A10 02A0102D */   daddu    $v0, $s5, $zero
/* 3B51A4 E00B2A14 3C080900 */  lui       $t0, %hi(D_09000800_415860)
/* 3B51A8 E00B2A18 25080800 */  addiu     $t0, $t0, %lo(D_09000800_415860)
.LE00B2A1C:
/* 3B51AC E00B2A1C ACC80004 */  sw        $t0, 0x4($a2)
/* 3B51B0 E00B2A20 2442FFFF */  addiu     $v0, $v0, -0x1
/* 3B51B4 E00B2A24 18400039 */  blez      $v0, .LE00B2B0C
/* 3B51B8 E00B2A28 0000A82D */   daddu    $s5, $zero, $zero
/* 3B51BC E00B2A2C 00E0582D */  daddu     $t3, $a3, $zero
/* 3B51C0 E00B2A30 3C0A0600 */  lui       $t2, (0x6000000 >> 16)
/* 3B51C4 E00B2A34 24090001 */  addiu     $t1, $zero, 0x1
/* 3B51C8 E00B2A38 3C0F0606 */  lui       $t7, (0x6060402 >> 16)
/* 3B51CC E00B2A3C 35EF0402 */  ori       $t7, $t7, (0x6060402 & 0xFFFF)
/* 3B51D0 E00B2A40 3C0E0002 */  lui       $t6, (0x20406 >> 16)
/* 3B51D4 E00B2A44 35CE0406 */  ori       $t6, $t6, (0x20406 & 0xFFFF)
/* 3B51D8 E00B2A48 3C0D0006 */  lui       $t5, (0x60804 >> 16)
/* 3B51DC E00B2A4C 35AD0804 */  ori       $t5, $t5, (0x60804 & 0xFFFF)
/* 3B51E0 E00B2A50 0040602D */  daddu     $t4, $v0, $zero
/* 3B51E4 E00B2A54 24070004 */  addiu     $a3, $zero, 0x4
/* 3B51E8 E00B2A58 24060002 */  addiu     $a2, $zero, 0x2
/* 3B51EC E00B2A5C 24080006 */  addiu     $t0, $zero, 0x6
.LE00B2A60:
/* 3B51F0 E00B2A60 2AA20000 */  slti      $v0, $s5, 0x0
/* 3B51F4 E00B2A64 14400023 */  bnez      $v0, .LE00B2AF4
/* 3B51F8 E00B2A68 00152840 */   sll      $a1, $s5, 1
/* 3B51FC E00B2A6C 8D640000 */  lw        $a0, 0x0($t3)
/* 3B5200 E00B2A70 24820008 */  addiu     $v0, $a0, 0x8
/* 3B5204 E00B2A74 14A00004 */  bnez      $a1, .LE00B2A88
/* 3B5208 E00B2A78 AD620000 */   sw       $v0, 0x0($t3)
/* 3B520C E00B2A7C 00151440 */  sll       $v0, $s5, 17
/* 3B5210 E00B2A80 0802CAAC */  j         .LE00B2AB0
/* 3B5214 E00B2A84 34420402 */   ori      $v0, $v0, 0x402
.LE00B2A88:
/* 3B5218 E00B2A88 14A90003 */  bne       $a1, $t1, .LE00B2A98
/* 3B521C E00B2A8C 30C200FF */   andi     $v0, $a2, 0xFF
/* 3B5220 E00B2A90 0802CAAE */  j         .LE00B2AB8
/* 3B5224 E00B2A94 AC8F0000 */   sw       $t7, 0x0($a0)
.LE00B2A98:
/* 3B5228 E00B2A98 00021400 */  sll       $v0, $v0, 16
/* 3B522C E00B2A9C 00151A80 */  sll       $v1, $s5, 10
/* 3B5230 E00B2AA0 3063FC00 */  andi      $v1, $v1, 0xFC00
/* 3B5234 E00B2AA4 00431025 */  or        $v0, $v0, $v1
/* 3B5238 E00B2AA8 30E300FF */  andi      $v1, $a3, 0xFF
/* 3B523C E00B2AAC 00431025 */  or        $v0, $v0, $v1
.LE00B2AB0:
/* 3B5240 E00B2AB0 004A1025 */  or        $v0, $v0, $t2
/* 3B5244 E00B2AB4 AC820000 */  sw        $v0, 0x0($a0)
.LE00B2AB8:
/* 3B5248 E00B2AB8 14A00003 */  bnez      $a1, .LE00B2AC8
/* 3B524C E00B2ABC 00000000 */   nop
/* 3B5250 E00B2AC0 0802CABD */  j         .LE00B2AF4
/* 3B5254 E00B2AC4 AC8E0004 */   sw       $t6, 0x4($a0)
.LE00B2AC8:
/* 3B5258 E00B2AC8 14A90003 */  bne       $a1, $t1, .LE00B2AD8
/* 3B525C E00B2ACC 310200FF */   andi     $v0, $t0, 0xFF
/* 3B5260 E00B2AD0 0802CABD */  j         .LE00B2AF4
/* 3B5264 E00B2AD4 AC8D0004 */   sw       $t5, 0x4($a0)
.LE00B2AD8:
/* 3B5268 E00B2AD8 00021400 */  sll       $v0, $v0, 16
/* 3B526C E00B2ADC 30C300FF */  andi      $v1, $a2, 0xFF
/* 3B5270 E00B2AE0 00031A00 */  sll       $v1, $v1, 8
/* 3B5274 E00B2AE4 00431025 */  or        $v0, $v0, $v1
/* 3B5278 E00B2AE8 30E300FF */  andi      $v1, $a3, 0xFF
/* 3B527C E00B2AEC 00431025 */  or        $v0, $v0, $v1
/* 3B5280 E00B2AF0 AC820004 */  sw        $v0, 0x4($a0)
.LE00B2AF4:
/* 3B5284 E00B2AF4 24E70004 */  addiu     $a3, $a3, 0x4
/* 3B5288 E00B2AF8 24C60004 */  addiu     $a2, $a2, 0x4
/* 3B528C E00B2AFC 26B50001 */  addiu     $s5, $s5, 0x1
/* 3B5290 E00B2B00 02AC102A */  slt       $v0, $s5, $t4
/* 3B5294 E00B2B04 1440FFD6 */  bnez      $v0, .LE00B2A60
/* 3B5298 E00B2B08 25080004 */   addiu    $t0, $t0, 0x4
.LE00B2B0C:
/* 3B529C E00B2B0C 3C03D838 */  lui       $v1, (0xD8380002 >> 16)
/* 3B52A0 E00B2B10 3C04800A */  lui       $a0, %hi(gMainGfxPos)
/* 3B52A4 E00B2B14 2484A66C */  addiu     $a0, $a0, %lo(gMainGfxPos)
/* 3B52A8 E00B2B18 8C820000 */  lw        $v0, 0x0($a0)
/* 3B52AC E00B2B1C 34630002 */  ori       $v1, $v1, (0xD8380002 & 0xFFFF)
/* 3B52B0 E00B2B20 0040282D */  daddu     $a1, $v0, $zero
/* 3B52B4 E00B2B24 24420008 */  addiu     $v0, $v0, 0x8
/* 3B52B8 E00B2B28 AC820000 */  sw        $v0, 0x0($a0)
/* 3B52BC E00B2B2C ACA30000 */  sw        $v1, 0x0($a1)
/* 3B52C0 E00B2B30 24030040 */  addiu     $v1, $zero, 0x40
/* 3B52C4 E00B2B34 ACA30004 */  sw        $v1, 0x4($a1)
/* 3B52C8 E00B2B38 24430008 */  addiu     $v1, $v0, 0x8
/* 3B52CC E00B2B3C AC830000 */  sw        $v1, 0x0($a0)
/* 3B52D0 E00B2B40 3C03E700 */  lui       $v1, (0xE7000000 >> 16)
/* 3B52D4 E00B2B44 AC430000 */  sw        $v1, 0x0($v0)
/* 3B52D8 E00B2B48 AC400004 */  sw        $zero, 0x4($v0)
/* 3B52DC E00B2B4C 8FBF00CC */  lw        $ra, 0xCC($sp)
/* 3B52E0 E00B2B50 8FBE00C8 */  lw        $fp, 0xC8($sp)
/* 3B52E4 E00B2B54 8FB700C4 */  lw        $s7, 0xC4($sp)
/* 3B52E8 E00B2B58 8FB600C0 */  lw        $s6, 0xC0($sp)
/* 3B52EC E00B2B5C 8FB500BC */  lw        $s5, 0xBC($sp)
/* 3B52F0 E00B2B60 8FB400B8 */  lw        $s4, 0xB8($sp)
/* 3B52F4 E00B2B64 8FB300B4 */  lw        $s3, 0xB4($sp)
/* 3B52F8 E00B2B68 8FB200B0 */  lw        $s2, 0xB0($sp)
/* 3B52FC E00B2B6C 8FB100AC */  lw        $s1, 0xAC($sp)
/* 3B5300 E00B2B70 8FB000A8 */  lw        $s0, 0xA8($sp)
/* 3B5304 E00B2B74 D7BE00F8 */  ldc1      $f30, 0xF8($sp)
/* 3B5308 E00B2B78 D7BC00F0 */  ldc1      $f28, 0xF0($sp)
/* 3B530C E00B2B7C D7BA00E8 */  ldc1      $f26, 0xE8($sp)
/* 3B5310 E00B2B80 D7B800E0 */  ldc1      $f24, 0xE0($sp)
/* 3B5314 E00B2B84 D7B600D8 */  ldc1      $f22, 0xD8($sp)
/* 3B5318 E00B2B88 D7B400D0 */  ldc1      $f20, 0xD0($sp)
/* 3B531C E00B2B8C 03E00008 */  jr        $ra
/* 3B5320 E00B2B90 27BD0100 */   addiu    $sp, $sp, 0x100
/* 3B5324 E00B2B94 00000000 */  nop
/* 3B5328 E00B2B98 00000000 */  nop
/* 3B532C E00B2B9C 00000000 */  nop

### DECOMPILED C INSTRUCTIONS:

void squirt_appendGfx(void* effect) {
    SquirtFXData* data = ((EffectInstance*)effect)->data.squirt;
    s32 zero = 0;
    s32 unk_00 = data->unk_00;
    Gfx* savedGfxPos;
    f32 unk_50 = data->unk_50;
    Matrix4f sp10, sp50;
    Vtx_t* vtx;
    s32 savedIdx;
    s32 i;

    f32 cosComp;
    f32 sinComp;
    f32 var_f22;
    f32 theta;

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

    shim_guTranslateF(sp10, 0.0f, 0.0f, 0.0f);
    shim_guScaleF(sp50, 0.05f, 0.05f, 0.05f);
    shim_guMtxCatF(sp50, sp10, sp10);
    shim_guMtxF2L(sp10, &gDisplayContext->matrixStack[gMatrixListPos]);

    gSPMatrix(gMainGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
    gDPSetPrimColor(gMainGfxPos++, 0, 0, data->unk_34, data->unk_38, data->unk_3C, data->unk_40);
    gDPSetEnvColor(gMainGfxPos++, data->unk_44, data->unk_48, data->unk_4C, 200);

    gSPBranchList(gMainGfxPos, &gMainGfxPos[49]);
    savedGfxPos = gMainGfxPos + 1;

    gMainGfxPos = &gMainGfxPos[49];

    vtx = (Vtx_t*) savedGfxPos;
    for (i = 0; i < 12; i++) {
        s32 inc = i + 1;
        s32 tc0;
        s32 cnA;

        if (i == 0 || zero == i || (i != 11 && data->unk_178[i] == 0)) {
            theta = data->unk_118[inc];
            theta = -shim_atan2(theta, -data->unk_E8[i + 1], data->unk_118[i], -data->unk_E8[i]);
        }

        if (data->unk_00 == 0) {
            var_f22 = ((f32) data->unk_1A8[i] * 0.5) + 2.0;
            if (var_f22 > 6.0f) {
                var_f22 = 6.0f;
            }
            cnA = D_E00B2BA0[i];
        } else {
            var_f22 = ((f32) data->unk_1A8[i] * 0.5) + 1.0;
            if (var_f22 > 30.0f) {
                do { } while (0); // TODO required to match
                var_f22 = 30.0f;
            }
            cnA = (D_E00B2BA0[i] * data->unk_1D8[i]) / 255;
        }
        tc0 = i * 5;
        tc0 *= 64;

        var_f22 *= unk_50;
        sinComp = var_f22 * shim_sin_deg(theta);
        cosComp = var_f22 * shim_cos_deg(theta);

        vtx->ob[0] = (data->unk_E8[i] + sinComp) * 20.0f;
        vtx->ob[1] = (data->unk_118[i] + cosComp) * 20.0f;
        vtx->ob[2] = (data->unk_148[i] + 0.0f) * 20.0f;
        vtx->tc[0] = tc0;
        vtx->tc[1] = 0;
        vtx->cn[0] = (i & 1) * 255;
        vtx->cn[1] = ((i >> 1) & 1) * 255;
        vtx->cn[2] = ((i >> 2) & 1) * 255;
        vtx->cn[3] = cnA;
        vtx++;

        vtx->ob[0] = (data->unk_E8[i] - sinComp) * 20.0f;
        vtx->ob[1] = (data->unk_118[i] - cosComp) * 20.0f;
        vtx->ob[2] = (data->unk_148[i] + 0.0f) * 20.0f;
        vtx->tc[0] = tc0;
        vtx->tc[1] = 1024;
        vtx->cn[0] = (i & 1) * 255;
        vtx->cn[1] = ((i >> 1) & 1) * 255;
        vtx->cn[2] = ((i >> 2) & 1) * 255;
        vtx->cn[3] = cnA;
        vtx++;
    }

    gSPVertex(gMainGfxPos++, savedGfxPos, i * 2, 0);

    savedIdx = i;
    gSPDisplayList(gMainGfxPos++, unk_00 == 0 ? D_09000800_3B5B40 : D_090008A8_3B5BE8);

    for (i = 0; i < savedIdx - 1; i++) {
        s32 i2 = i * 2;

        if (i < zero) {
            continue;
        }
        gSP2Triangles(gMainGfxPos++,
            i2,     i2 + 2, i2 + 1, i2,
            i2 + 1, i2 + 2, i2 + 3, i2);
    }

    gSPPopMatrix(gMainGfxPos++, G_MTX_MODELVIEW);
    gDPPipeSync(gMainGfxPos++);
}


### RAW ASSEMBLY INSTRUCTIONS:

glabel func_E0080448
/* 381708 E0080448 27BDFEE8 */  addiu     $sp, $sp, -0x118
/* 38170C E008044C 3C05DB06 */  lui       $a1, (0xDB060024 >> 16)
/* 381710 E0080450 34A50024 */  ori       $a1, $a1, (0xDB060024 & 0xFFFF)
/* 381714 E0080454 AFA40118 */  sw        $a0, 0x118($sp)
/* 381718 E0080458 27A40018 */  addiu     $a0, $sp, 0x18
/* 38171C E008045C AFB300F4 */  sw        $s3, 0xF4($sp)
/* 381720 E0080460 3C13800A */  lui       $s3, %hi(gMainGfxPos)
/* 381724 E0080464 2673A66C */  addiu     $s3, $s3, %lo(gMainGfxPos)
/* 381728 E0080468 8FAA0118 */  lw        $t2, 0x118($sp)
/* 38172C E008046C 3C02E700 */  lui       $v0, (0xE7000000 >> 16)
/* 381730 E0080470 AFBF010C */  sw        $ra, 0x10C($sp)
/* 381734 E0080474 AFBE0108 */  sw        $fp, 0x108($sp)
/* 381738 E0080478 AFB70104 */  sw        $s7, 0x104($sp)
/* 38173C E008047C AFB60100 */  sw        $s6, 0x100($sp)
/* 381740 E0080480 AFB500FC */  sw        $s5, 0xFC($sp)
/* 381744 E0080484 AFB400F8 */  sw        $s4, 0xF8($sp)
/* 381748 E0080488 AFB200F0 */  sw        $s2, 0xF0($sp)
/* 38174C E008048C AFB100EC */  sw        $s1, 0xEC($sp)
/* 381750 E0080490 AFB000E8 */  sw        $s0, 0xE8($sp)
/* 381754 E0080494 F7B40110 */  sdc1      $f20, 0x110($sp)
/* 381758 E0080498 8E680000 */  lw        $t0, 0x0($s3)
/* 38175C E008049C 8D52000C */  lw        $s2, 0xC($t2)
/* 381760 E00804A0 0100182D */  daddu     $v1, $t0, $zero
/* 381764 E00804A4 8E4A0044 */  lw        $t2, 0x44($s2)
/* 381768 E00804A8 25080008 */  addiu     $t0, $t0, 0x8
/* 38176C E00804AC AFAA00DC */  sw        $t2, 0xDC($sp)
/* 381770 E00804B0 AC620000 */  sw        $v0, 0x0($v1)
/* 381774 E00804B4 AC600004 */  sw        $zero, 0x4($v1)
/* 381778 E00804B8 AD050000 */  sw        $a1, 0x0($t0)
/* 38177C E00804BC 8FAA0118 */  lw        $t2, 0x118($sp)
/* 381780 E00804C0 3C110001 */  lui       $s1, (0x11630 >> 16)
/* 381784 E00804C4 8D420010 */  lw        $v0, 0x10($t2)
/* 381788 E00804C8 36311630 */  ori       $s1, $s1, (0x11630 & 0xFFFF)
/* 38178C E00804CC AE680000 */  sw        $t0, 0x0($s3)
/* 381790 E00804D0 8C42001C */  lw        $v0, 0x1C($v0)
/* 381794 E00804D4 3C038000 */  lui       $v1, (0x80000000 >> 16)
/* 381798 E00804D8 00431021 */  addu      $v0, $v0, $v1
/* 38179C E00804DC AD020004 */  sw        $v0, 0x4($t0)
/* 3817A0 E00804E0 8E450004 */  lw        $a1, 0x4($s2)
/* 3817A4 E00804E4 8E460008 */  lw        $a2, 0x8($s2)
/* 3817A8 E00804E8 8E47000C */  lw        $a3, 0xC($s2)
/* 3817AC E00804EC 25080008 */  addiu     $t0, $t0, 0x8
/* 3817B0 E00804F0 0C080108 */  jal       shim_guTranslateF
/* 3817B4 E00804F4 AE680000 */   sw       $t0, 0x0($s3)
/* 3817B8 E00804F8 27B50058 */  addiu     $s5, $sp, 0x58
/* 3817BC E00804FC 3C013F80 */  lui       $at, (0x3F800000 >> 16)
/* 3817C0 E0080500 4481A000 */  mtc1      $at, $f20
/* 3817C4 E0080504 3C038007 */  lui       $v1, %hi(gCurrentCameraID)
/* 3817C8 E0080508 8C637410 */  lw        $v1, %lo(gCurrentCameraID)($v1)
/* 3817CC E008050C 44800000 */  mtc1      $zero, $f0
/* 3817D0 E0080510 00031080 */  sll       $v0, $v1, 2
/* 3817D4 E0080514 00431021 */  addu      $v0, $v0, $v1
/* 3817D8 E0080518 00021080 */  sll       $v0, $v0, 2
/* 3817DC E008051C 00431023 */  subu      $v0, $v0, $v1
/* 3817E0 E0080520 000218C0 */  sll       $v1, $v0, 3
/* 3817E4 E0080524 00431021 */  addu      $v0, $v0, $v1
/* 3817E8 E0080528 000210C0 */  sll       $v0, $v0, 3
/* 3817EC E008052C 44060000 */  mfc1      $a2, $f0
/* 3817F0 E0080530 3C01800B */  lui       $at, %hi(gCameras + 0x6C)
/* 3817F4 E0080534 00220821 */  addu      $at, $at, $v0
/* 3817F8 E0080538 C4201DEC */  lwc1      $f0, %lo(gCameras + 0x6C)($at)
/* 3817FC E008053C 4407A000 */  mfc1      $a3, $f20
/* 381800 E0080540 46000007 */  neg.s     $f0, $f0
/* 381804 E0080544 44050000 */  mfc1      $a1, $f0
/* 381808 E0080548 02A0202D */  daddu     $a0, $s5, $zero
/* 38180C E008054C 0C080104 */  jal       shim_guRotateF
/* 381810 E0080550 AFA60010 */   sw       $a2, 0x10($sp)
/* 381814 E0080554 02A0202D */  daddu     $a0, $s5, $zero
/* 381818 E0080558 27A50018 */  addiu     $a1, $sp, 0x18
/* 38181C E008055C 27B00098 */  addiu     $s0, $sp, 0x98
/* 381820 E0080560 0C080114 */  jal       shim_guMtxCatF
/* 381824 E0080564 0200302D */   daddu    $a2, $s0, $zero
/* 381828 E0080568 0200202D */  daddu     $a0, $s0, $zero
/* 38182C E008056C 3C168007 */  lui       $s6, %hi(gMatrixListPos)
/* 381830 E0080570 26D641F0 */  addiu     $s6, $s6, %lo(gMatrixListPos)
/* 381834 E0080574 3C1E800A */  lui       $fp, %hi(gDisplayContext)
/* 381838 E0080578 27DEA674 */  addiu     $fp, $fp, %lo(gDisplayContext)
/* 38183C E008057C 96C50000 */  lhu       $a1, 0x0($s6)
/* 381840 E0080580 8FC20000 */  lw        $v0, 0x0($fp)
/* 381844 E0080584 00052980 */  sll       $a1, $a1, 6
/* 381848 E0080588 00B12821 */  addu      $a1, $a1, $s1
/* 38184C E008058C 0C080118 */  jal       shim_guMtxF2L
/* 381850 E0080590 00452821 */   addu     $a1, $v0, $a1
/* 381854 E0080594 240A0001 */  addiu     $t2, $zero, 0x1
/* 381858 E0080598 8E650000 */  lw        $a1, 0x0($s3)
/* 38185C E008059C 3C02DA38 */  lui       $v0, (0xDA380000 >> 16)
/* 381860 E00805A0 AFAA00D8 */  sw        $t2, 0xD8($sp)
/* 381864 E00805A4 96C40000 */  lhu       $a0, 0x0($s6)
/* 381868 E00805A8 00A0302D */  daddu     $a2, $a1, $zero
/* 38186C E00805AC ACC20000 */  sw        $v0, 0x0($a2)
/* 381870 E00805B0 3082FFFF */  andi      $v0, $a0, 0xFFFF
/* 381874 E00805B4 00021180 */  sll       $v0, $v0, 6
/* 381878 E00805B8 8FC30000 */  lw        $v1, 0x0($fp)
/* 38187C E00805BC 00511021 */  addu      $v0, $v0, $s1
/* 381880 E00805C0 00621821 */  addu      $v1, $v1, $v0
/* 381884 E00805C4 ACC30004 */  sw        $v1, 0x4($a2)
/* 381888 E00805C8 8E540000 */  lw        $s4, 0x0($s2)
/* 38188C E00805CC 8E570040 */  lw        $s7, 0x40($s2)
/* 381890 E00805D0 24A50008 */  addiu     $a1, $a1, 0x8
/* 381894 E00805D4 AE650000 */  sw        $a1, 0x0($s3)
/* 381898 E00805D8 8FAA0118 */  lw        $t2, 0x118($sp)
/* 38189C E00805DC 8D420008 */  lw        $v0, 0x8($t2)
/* 3818A0 E00805E0 24840001 */  addiu     $a0, $a0, 0x1
/* 3818A4 E00805E4 A6C40000 */  sh        $a0, 0x0($s6)
/* 3818A8 E00805E8 8FAA00D8 */  lw        $t2, 0xD8($sp)
/* 3818AC E00805EC 0142102A */  slt       $v0, $t2, $v0
/* 3818B0 E00805F0 10400118 */  beqz      $v0, .LE0080A54
/* 3818B4 E00805F4 26520048 */   addiu    $s2, $s2, 0x48
/* 3818B8 E00805F8 0260802D */  daddu     $s0, $s3, $zero
/* 3818BC E00805FC 3C13DE00 */  lui       $s3, (0xDE000000 >> 16)
/* 3818C0 E0080600 AFB500E0 */  sw        $s5, 0xE0($sp)
/* 3818C4 E0080604 3C150001 */  lui       $s5, (0x11630 >> 16)
/* 3818C8 E0080608 36B51630 */  ori       $s5, $s5, (0x11630 & 0xFFFF)
/* 3818CC E008060C 3C1ED838 */  lui       $fp, (0xD8380002 >> 16)
/* 3818D0 E0080610 37DE0002 */  ori       $fp, $fp, (0xD8380002 & 0xFFFF)
/* 3818D4 E0080614 2651001C */  addiu     $s1, $s2, 0x1C
.LE0080618:
/* 3818D8 E0080618 8E220018 */  lw        $v0, 0x18($s1)
/* 3818DC E008061C 1C400104 */  bgtz      $v0, .LE0080A30
/* 3818E0 E0080620 3C02FA00 */   lui      $v0, (0xFA000000 >> 16)
/* 3818E4 E0080624 8E070000 */  lw        $a3, 0x0($s0)
/* 3818E8 E0080628 00E0182D */  daddu     $v1, $a3, $zero
/* 3818EC E008062C 24E70008 */  addiu     $a3, $a3, 0x8
/* 3818F0 E0080630 AE070000 */  sw        $a3, 0x0($s0)
/* 3818F4 E0080634 AC620000 */  sw        $v0, 0x0($v1)
/* 3818F8 E0080638 9222000F */  lbu       $v0, 0xF($s1)
/* 3818FC E008063C AC620004 */  sw        $v0, 0x4($v1)
/* 381900 E0080640 8E23000C */  lw        $v1, 0xC($s1)
/* 381904 E0080644 240200FF */  addiu     $v0, $zero, 0xFF
/* 381908 E0080648 14620011 */  bne       $v1, $v0, .LE0080690
/* 38190C E008064C 3C05E200 */   lui      $a1, (0xE200001C >> 16)
/* 381910 E0080650 3C04E200 */  lui       $a0, (0xE200001C >> 16)
/* 381914 E0080654 3484001C */  ori       $a0, $a0, (0xE200001C & 0xFFFF)
/* 381918 E0080658 3C030055 */  lui       $v1, (0x551208 >> 16)
/* 38191C E008065C 34631208 */  ori       $v1, $v1, (0x551208 & 0xFFFF)
/* 381920 E0080660 3C05FC12 */  lui       $a1, (0xFC127E24 >> 16)
/* 381924 E0080664 34A57E24 */  ori       $a1, $a1, (0xFC127E24 & 0xFFFF)
/* 381928 E0080668 24E20008 */  addiu     $v0, $a3, 0x8
/* 38192C E008066C AE020000 */  sw        $v0, 0x0($s0)
/* 381930 E0080670 24E20010 */  addiu     $v0, $a3, 0x10
/* 381934 E0080674 ACE40000 */  sw        $a0, 0x0($a3)
/* 381938 E0080678 ACE30004 */  sw        $v1, 0x4($a3)
/* 38193C E008067C AE020000 */  sw        $v0, 0x0($s0)
/* 381940 E0080680 2402F3F9 */  addiu     $v0, $zero, -0xC07
/* 381944 E0080684 ACE50008 */  sw        $a1, 0x8($a3)
/* 381948 E0080688 080201B3 */  j         .LE00806CC
/* 38194C E008068C ACE2000C */   sw       $v0, 0xC($a3)
.LE0080690:
/* 381950 E0080690 34A5001C */  ori       $a1, $a1, (0xE200001C & 0xFFFF)
/* 381954 E0080694 3C030050 */  lui       $v1, (0x504340 >> 16)
/* 381958 E0080698 34634340 */  ori       $v1, $v1, (0x504340 & 0xFFFF)
/* 38195C E008069C 3C06FC12 */  lui       $a2, (0xFC123224 >> 16)
/* 381960 E00806A0 34C63224 */  ori       $a2, $a2, (0xFC123224 & 0xFFFF)
/* 381964 E00806A4 3C04FF67 */  lui       $a0, (0xFF67FFFF >> 16)
/* 381968 E00806A8 3484FFFF */  ori       $a0, $a0, (0xFF67FFFF & 0xFFFF)
/* 38196C E00806AC 24E20008 */  addiu     $v0, $a3, 0x8
/* 381970 E00806B0 AE020000 */  sw        $v0, 0x0($s0)
/* 381974 E00806B4 24E20010 */  addiu     $v0, $a3, 0x10
/* 381978 E00806B8 ACE50000 */  sw        $a1, 0x0($a3)
/* 38197C E00806BC ACE30004 */  sw        $v1, 0x4($a3)
/* 381980 E00806C0 AE020000 */  sw        $v0, 0x0($s0)
/* 381984 E00806C4 ACE60008 */  sw        $a2, 0x8($a3)
/* 381988 E00806C8 ACE4000C */  sw        $a0, 0xC($a3)
.LE00806CC:
/* 38198C E00806CC 8E020000 */  lw        $v0, 0x0($s0)
/* 381990 E00806D0 0040182D */  daddu     $v1, $v0, $zero
/* 381994 E00806D4 24420008 */  addiu     $v0, $v0, 0x8
/* 381998 E00806D8 AE020000 */  sw        $v0, 0x0($s0)
/* 38199C E00806DC AC730000 */  sw        $s3, 0x0($v1)
/* 3819A0 E00806E0 12800004 */  beqz      $s4, .LE00806F4
/* 3819A4 E00806E4 24630004 */   addiu    $v1, $v1, 0x4
/* 3819A8 E00806E8 24020002 */  addiu     $v0, $zero, 0x2
/* 3819AC E00806EC 1682000A */  bne       $s4, $v0, .LE0080718
/* 3819B0 E00806F0 00000000 */   nop
.LE00806F4:
/* 3819B4 E00806F4 8FAA00DC */  lw        $t2, 0xDC($sp)
/* 3819B8 E00806F8 3C020900 */  lui       $v0, %hi(D_09003298_410528)
/* 3819BC E00806FC 24423298 */  addiu     $v0, $v0, %lo(D_09003298_410528)
/* 3819C0 E0080700 55400008 */  bnel      $t2, $zero, .LE0080724
/* 3819C4 E0080704 AC620000 */   sw       $v0, 0x0($v1)
/* 3819C8 E0080708 3C020900 */  lui       $v0, %hi(D_09003200_410490)
/* 3819CC E008070C 24423200 */  addiu     $v0, $v0, %lo(D_09003200_410490)
/* 3819D0 E0080710 080201C9 */  j         .LE0080724
/* 3819D4 E0080714 AC620000 */   sw       $v0, 0x0($v1)
.LE0080718:
/* 3819D8 E0080718 3C020900 */  lui       $v0, %hi(D_09003330_4105C0)
/* 3819DC E008071C 24423330 */  addiu     $v0, $v0, %lo(D_09003330_4105C0)
/* 3819E0 E0080720 AC620000 */  sw        $v0, 0x0($v1)
.LE0080724:
/* 3819E4 E0080724 C622FFE8 */  lwc1      $f2, -0x18($s1)
/* 3819E8 E0080728 C6200008 */  lwc1      $f0, 0x8($s1)
/* 3819EC E008072C 46001080 */  add.s     $f2, $f2, $f0
/* 3819F0 E0080730 8E26FFEC */  lw        $a2, -0x14($s1)
/* 3819F4 E0080734 8E27FFF0 */  lw        $a3, -0x10($s1)
/* 3819F8 E0080738 44051000 */  mfc1      $a1, $f2
/* 3819FC E008073C 0C080108 */  jal       shim_guTranslateF
/* 381A00 E0080740 27A40018 */   addiu    $a0, $sp, 0x18
/* 381A04 E0080744 8E25001C */  lw        $a1, 0x1C($s1)
/* 381A08 E0080748 8E260020 */  lw        $a2, 0x20($s1)
/* 381A0C E008074C 4407A000 */  mfc1      $a3, $f20
/* 381A10 E0080750 0C080110 */  jal       shim_guScaleF
/* 381A14 E0080754 8FA400E0 */   lw       $a0, 0xE0($sp)
/* 381A18 E0080758 27A50018 */  addiu     $a1, $sp, 0x18
/* 381A1C E008075C 8FA400E0 */  lw        $a0, 0xE0($sp)
/* 381A20 E0080760 0C080114 */  jal       shim_guMtxCatF
/* 381A24 E0080764 00A0302D */   daddu    $a2, $a1, $zero
/* 381A28 E0080768 27A40018 */  addiu     $a0, $sp, 0x18
/* 381A2C E008076C 96C50000 */  lhu       $a1, 0x0($s6)
/* 381A30 E0080770 3C02800A */  lui       $v0, %hi(gDisplayContext)
/* 381A34 E0080774 8C42A674 */  lw        $v0, %lo(gDisplayContext)($v0)
/* 381A38 E0080778 00052980 */  sll       $a1, $a1, 6
/* 381A3C E008077C 00B52821 */  addu      $a1, $a1, $s5
/* 381A40 E0080780 0C080118 */  jal       shim_guMtxF2L
/* 381A44 E0080784 00452821 */   addu     $a1, $v0, $a1
/* 381A48 E0080788 27A40018 */  addiu     $a0, $sp, 0x18
/* 381A4C E008078C 8E080000 */  lw        $t0, 0x0($s0)
/* 381A50 E0080790 96C90000 */  lhu       $t1, 0x0($s6)
/* 381A54 E0080794 3C03800A */  lui       $v1, %hi(gDisplayContext)
/* 381A58 E0080798 8C63A674 */  lw        $v1, %lo(gDisplayContext)($v1)
/* 381A5C E008079C 44800000 */  mtc1      $zero, $f0
/* 381A60 E00807A0 0100282D */  daddu     $a1, $t0, $zero
/* 381A64 E00807A4 3C0ADA38 */  lui       $t2, (0xDA380000 >> 16)
/* 381A68 E00807A8 3122FFFF */  andi      $v0, $t1, 0xFFFF
/* 381A6C E00807AC 00021180 */  sll       $v0, $v0, 6
/* 381A70 E00807B0 00551021 */  addu      $v0, $v0, $s5
/* 381A74 E00807B4 00621821 */  addu      $v1, $v1, $v0
/* 381A78 E00807B8 25080008 */  addiu     $t0, $t0, 0x8
/* 381A7C E00807BC ACAA0000 */  sw        $t2, 0x0($a1)
/* 381A80 E00807C0 ACA30004 */  sw        $v1, 0x4($a1)
/* 381A84 E00807C4 E7B40010 */  swc1      $f20, 0x10($sp)
/* 381A88 E00807C8 8E250000 */  lw        $a1, 0x0($s1)
/* 381A8C E00807CC 44060000 */  mfc1      $a2, $f0
/* 381A90 E00807D0 25290001 */  addiu     $t1, $t1, 0x1
/* 381A94 E00807D4 AE080000 */  sw        $t0, 0x0($s0)
/* 381A98 E00807D8 A6C90000 */  sh        $t1, 0x0($s6)
/* 381A9C E00807DC 0C080104 */  jal       shim_guRotateF
/* 381AA0 E00807E0 00C0382D */   daddu    $a3, $a2, $zero
/* 381AA4 E00807E4 27A40018 */  addiu     $a0, $sp, 0x18
/* 381AA8 E00807E8 96C50000 */  lhu       $a1, 0x0($s6)
/* 381AAC E00807EC 3C02800A */  lui       $v0, %hi(gDisplayContext)
/* 381AB0 E00807F0 8C42A674 */  lw        $v0, %lo(gDisplayContext)($v0)
/* 381AB4 E00807F4 00052980 */  sll       $a1, $a1, 6
/* 381AB8 E00807F8 00B52821 */  addu      $a1, $a1, $s5
/* 381ABC E00807FC 0C080118 */  jal       shim_guMtxF2L
/* 381AC0 E0080800 00452821 */   addu     $a1, $v0, $a1
/* 381AC4 E0080804 8E050000 */  lw        $a1, 0x0($s0)
/* 381AC8 E0080808 96C30000 */  lhu       $v1, 0x0($s6)
/* 381ACC E008080C 00A0202D */  daddu     $a0, $a1, $zero
/* 381AD0 E0080810 24A50008 */  addiu     $a1, $a1, 0x8
/* 381AD4 E0080814 3C0ADA38 */  lui       $t2, (0xDA380000 >> 16)
/* 381AD8 E0080818 24620001 */  addiu     $v0, $v1, 0x1
/* 381ADC E008081C 3063FFFF */  andi      $v1, $v1, 0xFFFF
/* 381AE0 E0080820 00031980 */  sll       $v1, $v1, 6
/* 381AE4 E0080824 AE050000 */  sw        $a1, 0x0($s0)
/* 381AE8 E0080828 AC8A0000 */  sw        $t2, 0x0($a0)
/* 381AEC E008082C A6C20000 */  sh        $v0, 0x0($s6)
/* 381AF0 E0080830 3C02800A */  lui       $v0, %hi(gDisplayContext)
/* 381AF4 E0080834 8C42A674 */  lw        $v0, %lo(gDisplayContext)($v0)
/* 381AF8 E0080838 00751821 */  addu      $v1, $v1, $s5
/* 381AFC E008083C 00431021 */  addu      $v0, $v0, $v1
/* 381B00 E0080840 AC820004 */  sw        $v0, 0x4($a0)
/* 381B04 E0080844 8FAA00D8 */  lw        $t2, 0xD8($sp)
/* 381B08 E0080848 24020001 */  addiu     $v0, $zero, 0x1
/* 381B0C E008084C 15420064 */  bne       $t2, $v0, .LE00809E0
/* 381B10 E0080850 24020002 */   addiu    $v0, $zero, 0x2
/* 381B14 E0080854 12820062 */  beq       $s4, $v0, .LE00809E0
/* 381B18 E0080858 24A20008 */   addiu    $v0, $a1, 0x8
/* 381B1C E008085C AE020000 */  sw        $v0, 0x0($s0)
/* 381B20 E0080860 3C020900 */  lui       $v0, %hi(D_090033D0_410660)
/* 381B24 E0080864 244233D0 */  addiu     $v0, $v0, %lo(D_090033D0_410660)
/* 381B28 E0080868 ACA20004 */  sw        $v0, 0x4($a1)
/* 381B2C E008086C 24A20010 */  addiu     $v0, $a1, 0x10
/* 381B30 E0080870 240A0040 */  addiu     $t2, $zero, 0x40
/* 381B34 E0080874 ACB30000 */  sw        $s3, 0x0($a1)
/* 381B38 E0080878 AE020000 */  sw        $v0, 0x0($s0)
/* 381B3C E008087C 24A20018 */  addiu     $v0, $a1, 0x18
/* 381B40 E0080880 ACBE0008 */  sw        $fp, 0x8($a1)
/* 381B44 E0080884 ACAA000C */  sw        $t2, 0xC($a1)
/* 381B48 E0080888 AE020000 */  sw        $v0, 0x0($s0)
/* 381B4C E008088C 3C020900 */  lui       $v0, %hi(D_090034D0_410760)
/* 381B50 E0080890 244234D0 */  addiu     $v0, $v0, %lo(D_090034D0_410760)
/* 381B54 E0080894 ACA20014 */  sw        $v0, 0x14($a1)
/* 381B58 E0080898 2AE2000A */  slti      $v0, $s7, 0xA
/* 381B5C E008089C 10400017 */  beqz      $v0, .LE00808FC
/* 381B60 E00808A0 ACB30010 */   sw       $s3, 0x10($a1)
/* 381B64 E00808A4 8FAA00DC */  lw        $t2, 0xDC($sp)
/* 381B68 E00808A8 15400015 */  bnez      $t2, .LE0080900
/* 381B6C E00808AC 3C026666 */   lui      $v0, (0x66666667 >> 16)
/* 381B70 E00808B0 3C040900 */  lui       $a0, %hi(D_09003470_410700)
/* 381B74 E00808B4 24843470 */  addiu     $a0, $a0, %lo(D_09003470_410700)
/* 381B78 E00808B8 24A20020 */  addiu     $v0, $a1, 0x20
/* 381B7C E00808BC AE020000 */  sw        $v0, 0x0($s0)
/* 381B80 E00808C0 00171080 */  sll       $v0, $s7, 2
/* 381B84 E00808C4 3C0AE008 */  lui       $t2, %hi(D_E0080AC0)
/* 381B88 E00808C8 254A0AC0 */  addiu     $t2, $t2, %lo(D_E0080AC0)
/* 381B8C E00808CC 004A1021 */  addu      $v0, $v0, $t2
/* 381B90 E00808D0 ACB30018 */  sw        $s3, 0x18($a1)
/* 381B94 E00808D4 8C430000 */  lw        $v1, 0x0($v0)
/* 381B98 E00808D8 24A20028 */  addiu     $v0, $a1, 0x28
/* 381B9C E00808DC AE020000 */  sw        $v0, 0x0($s0)
/* 381BA0 E00808E0 ACB30020 */  sw        $s3, 0x20($a1)
/* 381BA4 E00808E4 16800003 */  bnez      $s4, .LE00808F4
/* 381BA8 E00808E8 ACA3001C */   sw       $v1, 0x1C($a1)
/* 381BAC E00808EC 3C040900 */  lui       $a0, %hi(D_09003410_4106A0)
/* 381BB0 E00808F0 24843410 */  addiu     $a0, $a0, %lo(D_09003410_4106A0)
.LE00808F4:
/* 381BB4 E00808F4 08020285 */  j         .LE0080A14
/* 381BB8 E00808F8 ACA40024 */   sw       $a0, 0x24($a1)
.LE00808FC:
/* 381BBC E00808FC 3C026666 */  lui       $v0, (0x66666667 >> 16)
.LE0080900:
/* 381BC0 E0080900 34426667 */  ori       $v0, $v0, (0x66666667 & 0xFFFF)
/* 381BC4 E0080904 02E20018 */  mult      $s7, $v0
/* 381BC8 E0080908 2409000A */  addiu     $t1, $zero, 0xA
/* 381BCC E008090C 001717C3 */  sra       $v0, $s7, 31
/* 381BD0 E0080910 00005010 */  mfhi      $t2
/* 381BD4 E0080914 000A1883 */  sra       $v1, $t2, 2
/* 381BD8 E0080918 00621023 */  subu      $v0, $v1, $v0
/* 381BDC E008091C 0040202D */  daddu     $a0, $v0, $zero
/* 381BE0 E0080920 00041080 */  sll       $v0, $a0, 2
/* 381BE4 E0080924 00441021 */  addu      $v0, $v0, $a0
/* 381BE8 E0080928 00021040 */  sll       $v0, $v0, 1
/* 381BEC E008092C 8FAA00DC */  lw        $t2, 0xDC($sp)
/* 381BF0 E0080930 15400002 */  bnez      $t2, .LE008093C
/* 381BF4 E0080934 02E21023 */   subu     $v0, $s7, $v0
/* 381BF8 E0080938 0080482D */  daddu     $t1, $a0, $zero
.LE008093C:
/* 381BFC E008093C 3C080900 */  lui       $t0, %hi(D_090034B0_410740)
/* 381C00 E0080940 250834B0 */  addiu     $t0, $t0, %lo(D_090034B0_410740)
/* 381C04 E0080944 00021080 */  sll       $v0, $v0, 2
/* 381C08 E0080948 3C0AE008 */  lui       $t2, %hi(D_E0080AC0)
/* 381C0C E008094C 254A0AC0 */  addiu     $t2, $t2, %lo(D_E0080AC0)
/* 381C10 E0080950 8E060000 */  lw        $a2, 0x0($s0)
/* 381C14 E0080954 004A1021 */  addu      $v0, $v0, $t2
/* 381C18 E0080958 00C0202D */  daddu     $a0, $a2, $zero
/* 381C1C E008095C 24C60008 */  addiu     $a2, $a2, 0x8
/* 381C20 E0080960 AE060000 */  sw        $a2, 0x0($s0)
/* 381C24 E0080964 AC930000 */  sw        $s3, 0x0($a0)
/* 381C28 E0080968 8C430000 */  lw        $v1, 0x0($v0)
/* 381C2C E008096C 24C20008 */  addiu     $v0, $a2, 0x8
/* 381C30 E0080970 AE020000 */  sw        $v0, 0x0($s0)
/* 381C34 E0080974 AC830004 */  sw        $v1, 0x4($a0)
/* 381C38 E0080978 16800003 */  bnez      $s4, .LE0080988
/* 381C3C E008097C ACD30000 */   sw       $s3, 0x0($a2)
/* 381C40 E0080980 3C080900 */  lui       $t0, %hi(D_09003450_4106E0)
/* 381C44 E0080984 25083450 */  addiu     $t0, $t0, %lo(D_09003450_4106E0)
.LE0080988:
/* 381C48 E0080988 3C070900 */  lui       $a3, %hi(D_09003490_410720)
/* 381C4C E008098C 24E73490 */  addiu     $a3, $a3, %lo(D_09003490_410720)
/* 381C50 E0080990 00091080 */  sll       $v0, $t1, 2
/* 381C54 E0080994 3C0AE008 */  lui       $t2, %hi(D_E0080AC0)
/* 381C58 E0080998 254A0AC0 */  addiu     $t2, $t2, %lo(D_E0080AC0)
/* 381C5C E008099C 8E050000 */  lw        $a1, 0x0($s0)
/* 381C60 E00809A0 004A1021 */  addu      $v0, $v0, $t2
/* 381C64 E00809A4 ACC80004 */  sw        $t0, 0x4($a2)
/* 381C68 E00809A8 00A0202D */  daddu     $a0, $a1, $zero
/* 381C6C E00809AC 24A50008 */  addiu     $a1, $a1, 0x8
/* 381C70 E00809B0 AE050000 */  sw        $a1, 0x0($s0)
/* 381C74 E00809B4 AC930000 */  sw        $s3, 0x0($a0)
/* 381C78 E00809B8 8C430000 */  lw        $v1, 0x0($v0)
/* 381C7C E00809BC 24A20008 */  addiu     $v0, $a1, 0x8
/* 381C80 E00809C0 AE020000 */  sw        $v0, 0x0($s0)
/* 381C84 E00809C4 AC830004 */  sw        $v1, 0x4($a0)
/* 381C88 E00809C8 16800003 */  bnez      $s4, .LE00809D8
/* 381C8C E00809CC ACB30000 */   sw       $s3, 0x0($a1)
/* 381C90 E00809D0 3C070900 */  lui       $a3, %hi(D_09003430_4106C0)
/* 381C94 E00809D4 24E73430 */  addiu     $a3, $a3, %lo(D_09003430_4106C0)
.LE00809D8:
/* 381C98 E00809D8 08020285 */  j         .LE0080A14
/* 381C9C E00809DC ACA70004 */   sw       $a3, 0x4($a1)
.LE00809E0:
/* 381CA0 E00809E0 8E030000 */  lw        $v1, 0x0($s0)
/* 381CA4 E00809E4 3C020900 */  lui       $v0, %hi(D_090033F0_410680)
/* 381CA8 E00809E8 244233F0 */  addiu     $v0, $v0, %lo(D_090033F0_410680)
/* 381CAC E00809EC 0060202D */  daddu     $a0, $v1, $zero
/* 381CB0 E00809F0 24630008 */  addiu     $v1, $v1, 0x8
/* 381CB4 E00809F4 AE030000 */  sw        $v1, 0x0($s0)
/* 381CB8 E00809F8 AC820004 */  sw        $v0, 0x4($a0)
/* 381CBC E00809FC 24620008 */  addiu     $v0, $v1, 0x8
/* 381CC0 E0080A00 AC930000 */  sw        $s3, 0x0($a0)
/* 381CC4 E0080A04 240A0040 */  addiu     $t2, $zero, 0x40
/* 381CC8 E0080A08 AE020000 */  sw        $v0, 0x0($s0)
/* 381CCC E0080A0C AC7E0000 */  sw        $fp, 0x0($v1)
/* 381CD0 E0080A10 AC6A0004 */  sw        $t2, 0x4($v1)
.LE0080A14:
/* 381CD4 E0080A14 8E020000 */  lw        $v0, 0x0($s0)
/* 381CD8 E0080A18 0040182D */  daddu     $v1, $v0, $zero
/* 381CDC E0080A1C 24420008 */  addiu     $v0, $v0, 0x8
/* 381CE0 E0080A20 240A0040 */  addiu     $t2, $zero, 0x40
/* 381CE4 E0080A24 AE020000 */  sw        $v0, 0x0($s0)
/* 381CE8 E0080A28 AC7E0000 */  sw        $fp, 0x0($v1)
/* 381CEC E0080A2C AC6A0004 */  sw        $t2, 0x4($v1)
.LE0080A30:
/* 381CF0 E0080A30 8FAA00D8 */  lw        $t2, 0xD8($sp)
/* 381CF4 E0080A34 254A0001 */  addiu     $t2, $t2, 0x1
/* 381CF8 E0080A38 AFAA00D8 */  sw        $t2, 0xD8($sp)
/* 381CFC E0080A3C 8FAA0118 */  lw        $t2, 0x118($sp)
/* 381D00 E0080A40 8D420008 */  lw        $v0, 0x8($t2)
/* 381D04 E0080A44 8FAA00D8 */  lw        $t2, 0xD8($sp)
/* 381D08 E0080A48 0142102A */  slt       $v0, $t2, $v0
/* 381D0C E0080A4C 1440FEF2 */  bnez      $v0, .LE0080618
/* 381D10 E0080A50 26310048 */   addiu    $s1, $s1, 0x48
.LE0080A54:
/* 381D14 E0080A54 3C05D838 */  lui       $a1, (0xD8380002 >> 16)
/* 381D18 E0080A58 3C03800A */  lui       $v1, %hi(gMainGfxPos)
/* 381D1C E0080A5C 2463A66C */  addiu     $v1, $v1, %lo(gMainGfxPos)
/* 381D20 E0080A60 8C620000 */  lw        $v0, 0x0($v1)
/* 381D24 E0080A64 34A50002 */  ori       $a1, $a1, (0xD8380002 & 0xFFFF)
/* 381D28 E0080A68 0040202D */  daddu     $a0, $v0, $zero
/* 381D2C E0080A6C 24420008 */  addiu     $v0, $v0, 0x8
/* 381D30 E0080A70 AC620000 */  sw        $v0, 0x0($v1)
/* 381D34 E0080A74 24020040 */  addiu     $v0, $zero, 0x40
/* 381D38 E0080A78 AC850000 */  sw        $a1, 0x0($a0)
/* 381D3C E0080A7C AC820004 */  sw        $v0, 0x4($a0)
/* 381D40 E0080A80 8FBF010C */  lw        $ra, 0x10C($sp)
/* 381D44 E0080A84 8FBE0108 */  lw        $fp, 0x108($sp)
/* 381D48 E0080A88 8FB70104 */  lw        $s7, 0x104($sp)
/* 381D4C E0080A8C 8FB60100 */  lw        $s6, 0x100($sp)
/* 381D50 E0080A90 8FB500FC */  lw        $s5, 0xFC($sp)
/* 381D54 E0080A94 8FB400F8 */  lw        $s4, 0xF8($sp)
/* 381D58 E0080A98 8FB300F4 */  lw        $s3, 0xF4($sp)
/* 381D5C E0080A9C 8FB200F0 */  lw        $s2, 0xF0($sp)
/* 381D60 E0080AA0 8FB100EC */  lw        $s1, 0xEC($sp)
/* 381D64 E0080AA4 8FB000E8 */  lw        $s0, 0xE8($sp)
/* 381D68 E0080AA8 D7B40110 */  ldc1      $f20, 0x110($sp)
/* 381D6C E0080AAC 03E00008 */  jr        $ra
/* 381D70 E0080AB0 27BD0118 */   addiu    $sp, $sp, 0x118
/* 381D74 E0080AB4 00000000 */  nop
/* 381D78 E0080AB8 00000000 */  nop
/* 381D7C E0080ABC 00000000 */  nop

### DECOMPILED C INSTRUCTIONS:

void func_E0080448(EffectInstance* effect) {
    RecoverFXData* part = ((EffectInstance*)effect)->data.recover;
    s32 i;
    s32 unk_00;
    s32 unk_40;
    s32 unk_44 = part->unk_44;
    Matrix4f sp18;
    Matrix4f sp58;
    Matrix4f sp98;

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

    shim_guTranslateF(sp18, part->unk_04, part->unk_08, part->unk_0C);
    shim_guRotateF(sp58, -gCameras[gCurrentCameraID].currentYaw, 0.0f, 1.0f, 0.0f);
    shim_guMtxCatF(sp58, sp18, sp98);
    shim_guMtxF2L(sp98, &gDisplayContext->matrixStack[gMatrixListPos]);

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

    unk_00 = part->unk_00;
    unk_40 = part->unk_40;

    part++;
    for (i = 1; i < ((EffectInstance*)effect)->numParts; i++, part++) {
        if (part->unk_34 <= 0) {
            gDPSetPrimColor(gMainGfxPos++, 0, 0, 0, 0, 0, part->unk_28);

            if (part->unk_28 == 255) {
                gDPSetRenderMode(gMainGfxPos++, AA_EN | CVG_DST_FULL | ZMODE_OPA | CVG_X_ALPHA | GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM), AA_EN | CVG_DST_FULL | ZMODE_OPA | CVG_X_ALPHA | GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM));
                gDPSetCombineMode(gMainGfxPos++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA);
            } else {
                gDPSetRenderMode(gMainGfxPos++, G_RM_CLD_SURF, G_RM_CLD_SURF2);
                gDPSetCombineLERP(gMainGfxPos++, TEXEL0, 0, SHADE, 0, PRIMITIVE, 0, TEXEL0, 0, TEXEL0, 0, SHADE, 0, PRIMITIVE, 0, TEXEL0, 0);
            }

            gSPDisplayList(gMainGfxPos++, (unk_00 == 0 || unk_00 == 2) ?
                (unk_44 == 0 ? D_09003200_385000 : D_09003298_385098) :
                D_09003330_385130);

            shim_guTranslateF(sp18, part->unk_04 + part->unk_24, part->unk_08, part->unk_0C);
            shim_guScaleF(sp58, part->unk_38, part->unk_3C, 1.0f);
            shim_guMtxCatF(sp58, sp18, sp18);
            shim_guMtxF2L(sp18, &gDisplayContext->matrixStack[gMatrixListPos]);

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

            shim_guRotateF(sp18, part->unk_1C, 0.0f, 0.0f, 1.0f);
            shim_guMtxF2L(sp18, &gDisplayContext->matrixStack[gMatrixListPos]);

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

            if (i == 1 && unk_00 != 2) {
                gSPDisplayList(gMainGfxPos++, D_090033D0_3851D0);
                gSPPopMatrix(gMainGfxPos++, G_MTX_MODELVIEW);
                gSPDisplayList(gMainGfxPos++, D_090034D0_3852D0);

                if (unk_40 < 0xA && unk_44 == 0) {
                    gSPDisplayList(gMainGfxPos++, D_E0080AC0[unk_40]);
                    gSPDisplayList(gMainGfxPos++, unk_00 == 0 ? D_09003410_385210 : D_09003470_385270);
                } else {
                    s32 ones = unk_40 % 10;
                    s32 tens = unk_44 == 0 ? (unk_40 / 10) : 10;

                    gSPDisplayList(gMainGfxPos++, D_E0080AC0[ones]);
                    gSPDisplayList(gMainGfxPos++, unk_00 == 0 ? D_09003450_385250 : D_090034B0_3852B0);
                    gSPDisplayList(gMainGfxPos++, D_E0080AC0[tens]);
                    gSPDisplayList(gMainGfxPos++, unk_00 == 0 ? D_09003430_385230 : D_09003490_385290);
                }
            } else {
                gSPDisplayList(gMainGfxPos++, D_090033F0_3851F0);
                gSPPopMatrix(gMainGfxPos++, G_MTX_MODELVIEW);
            }

            gSPPopMatrix(gMainGfxPos++, G_MTX_MODELVIEW);
        }
    }

    gSPPopMatrix(gMainGfxPos++, G_MTX_MODELVIEW);
}