//--------------------------MIPS2C---------------------
// clang-format off
#include "game/mips2c/mips2c_private.h"
#include "game/kernel/jak1/kscheme.h"
using namespace jak1;
namespace Mips2C {
namespace draw_string {
struct Cache {
  void* font_work; // *font-work*
  void* font12_table; // *font12-table*
  void* font24_table; // *font24-table*
  void* math_camera; // *math-camera*
  void* video_parms; // *video-parms*
} cache;

u64 execute(void* ctxt) {
  auto* c = (ExecutionContext*)ctxt;
  bool bc = false;  c->load_symbol(v1, cache.math_camera);            // lw v1, *math-camera*(s7)
  c->lqc2(vf26, 732, v1);                           // lqc2 vf26, 732(v1)
  c->lqc2(vf27, 732, v1);                           // lqc2 vf27, 732(v1)
  c->vadd_bc(DEST::xy, BC::w, vf26, vf26, vf0);     // vaddw.xy vf26, vf26, vf0
  c->vadd_bc(DEST::x, BC::w, vf26, vf26, vf0);      // vaddw.x vf26, vf26, vf0
  c->lw(v1, 72, a2);                                // lw v1, 72(a2)
  c->lqc2(vf25, 44, a2);                            // lqc2 vf25, 44(a2)
  c->lqc2(vf23, 12, a2);                            // lqc2 vf23, 12(a2)
  c->lqc2(vf24, 12, a2);                            // lqc2 vf24, 12(a2)
  c->lqc2(vf28, 0, v1);                             // lqc2 vf28, 0(v1)
  c->lqc2(vf29, 16, v1);                            // lqc2 vf29, 16(v1)
  c->lqc2(vf30, 32, v1);                            // lqc2 vf30, 32(v1)
  c->lqc2(vf31, 48, v1);                            // lqc2 vf31, 48(v1)
  c->load_symbol(v1, cache.video_parms);            // lw v1, *video-parms*(s7)
  c->mov64(v1, v1);                                 // or v1, v1, r0
  c->lqc2(vf1, 64, v1);                             // lqc2 vf1, 64(v1)
  c->vmul(DEST::xy, vf25, vf25, vf1);               // vmul.xy vf25, vf25, vf1
  c->vmul(DEST::xy, vf23, vf23, vf1);               // vmul.xy vf23, vf23, vf1
  c->vmul(DEST::xy, vf24, vf24, vf1);               // vmul.xy vf24, vf24, vf1
  c->load_symbol(v1, cache.font_work);              // lw v1, *font-work*(s7)
  c->mov64(v1, v1);                                 // or v1, v1, r0
  c->sw(a1, 3024, v1);                              // sw a1, 3024(v1)
  c->lw(a1, 4, a1);                                 // lw a1, 4(a1)
  c->sw(a0, 3028, v1);                              // sw a0, 3028(v1)
  c->lw(t2, 68, a2);                                // lw t2, 68(a2)
  c->vmove(DEST::xyzw, vf1, vf0);                   // vmove.xyzw vf1, vf0
  c->vmove(DEST::xyzw, vf2, vf0);                   // vmove.xyzw vf2, vf0
  c->vmove(DEST::xyzw, vf3, vf0);                   // vmove.xyzw vf3, vf0
  c->vmove(DEST::xyzw, vf4, vf0);                   // vmove.xyzw vf4, vf0
  c->sw(t2, 3032, v1);                              // sw t2, 3032(v1)
  c->lqc2(vf16, 240, v1);                           // lqc2 vf16, 240(v1)
  c->lqc2(vf17, 256, v1);                           // lqc2 vf17, 256(v1)
  c->lqc2(vf18, 272, v1);                           // lqc2 vf18, 272(v1)
  c->andi(a3, t2, 32);                              // andi a3, t2, 32
  // nop                                            // sll r0, r0, 0
  bc = c->sgpr64(a3) != 0;                          // bne a3, r0, L22
  c->load_symbol(a3, cache.font12_table);           // lw a3, *font12-table*(s7)
  if (bc) {goto block_2;}                           // branch non-likely

  c->mov64(a3, a3);                                 // or a3, a3, r0
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf13, 144, v1);                           // lqc2 vf13, 144(v1)
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf14, 160, v1);                           // lqc2 vf14, 160(v1)
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf15, 176, v1);                           // lqc2 vf15, 176(v1)
  // nop                                            // sll r0, r0, 0
  c->lq(t0, 80, v1);                                // lq t0, 80(v1)
  //beq r0, r0, L23                                 // beq r0, r0, L23
  c->lq(t1, 96, v1);                                // lq t1, 96(v1)
  goto block_3;                                     // branch always


  block_2:
  // nop                                            // sll r0, r0, 0
  c->load_symbol(a3, cache.font24_table);           // lw a3, *font24-table*(s7)
  c->mov64(a3, a3);                                 // or a3, a3, r0
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf13, 192, v1);                           // lqc2 vf13, 192(v1)
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf14, 208, v1);                           // lqc2 vf14, 208(v1)
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf15, 224, v1);                           // lqc2 vf15, 224(v1)
  // nop                                            // sll r0, r0, 0
  c->lq(t0, 112, v1);                               // lq t0, 112(v1)
  // nop                                            // sll r0, r0, 0
  c->lq(t1, 128, v1);                               // lq t1, 128(v1)

  block_3:
  c->lw(t3, 60, a2);                                // lw t3, 60(a2)
  // nop                                            // sll r0, r0, 0
  c->sw(t3, 3008, v1);                              // sw t3, 3008(v1)
  // nop                                            // sll r0, r0, 0
  c->sll(t3, t3, 4);                                // sll t3, t3, 4
  // nop                                            // sll r0, r0, 0
  c->daddu(t4, t3, v1);                             // daddu t4, t3, v1
  // nop                                            // sll r0, r0, 0
  // nop                                            // sll r0, r0, 0
  c->lwu(t3, 1984, t4);                             // lwu t3, 1984(t4)
  // nop                                            // sll r0, r0, 0
  c->lwu(t5, 1988, t4);                             // lwu t5, 1988(t4)
  c->pextlb(t6, r0, t3);                            // pextlb t6, r0, t3
  c->lwu(t3, 1992, t4);                             // lwu t3, 1992(t4)
  c->pextlh(t6, r0, t6);                            // pextlh t6, r0, t6
  c->lwu(t4, 1996, t4);                             // lwu t4, 1996(t4)
  c->pextlb(t5, r0, t5);                            // pextlb t5, r0, t5
  c->sq(t6, 432, v1);                               // sq t6, 432(v1)
  c->pextlh(t5, r0, t5);                            // pextlh t5, r0, t5
  c->sq(t6, 816, v1);                               // sq t6, 816(v1)
  c->pextlb(t3, r0, t3);                            // pextlb t3, r0, t3
  c->sq(t5, 448, v1);                               // sq t5, 448(v1)
  c->pextlh(t3, r0, t3);                            // pextlh t3, r0, t3
  c->sq(t5, 832, v1);                               // sq t5, 832(v1)
  c->pextlb(t4, r0, t4);                            // pextlb t4, r0, t4
  c->sq(t3, 464, v1);                               // sq t3, 464(v1)
  c->pextlh(t4, r0, t4);                            // pextlh t4, r0, t4
  c->sq(t3, 848, v1);                               // sq t3, 848(v1)
  // nop                                            // sll r0, r0, 0
  c->sq(t4, 480, v1);                               // sq t4, 480(v1)
  // nop                                            // sll r0, r0, 0
  c->sq(t4, 864, v1);                               // sq t4, 864(v1)
  c->mov64(t3, v1);                                 // or t3, v1, r0
  // nop                                            // sll r0, r0, 0

  block_4:
  c->lbu(t4, 4, a0);                                // lbu t4, 4(a0)
  c->daddiu(a0, a0, 1);                             // daddiu a0, a0, 1
  bc = c->sgpr64(t4) == 0;                          // beq t4, r0, L47
  c->daddiu(t5, t4, -1);                            // daddiu t5, t4, -1
  if (bc) {goto block_67;}                          // branch non-likely

  bc = c->sgpr64(t5) == 0;                          // beq t5, r0, L39
  c->daddiu(t5, t4, -126);                          // daddiu t5, t4, -126
  if (bc) {goto block_54;}                          // branch non-likely

  bc = c->sgpr64(t5) != 0;                          // bne t5, r0, L40
  // nop                                            // sll r0, r0, 0
  if (bc) {goto block_55;}                          // branch non-likely

  c->lbu(t4, 4, a0);                                // lbu t4, 4(a0)
  c->daddiu(a0, a0, 1);                             // daddiu a0, a0, 1
  c->addiu(t5, r0, 0);                              // addiu t5, r0, 0
  c->addiu(t6, r0, 0);                              // addiu t6, r0, 0
  bc = c->sgpr64(t4) == 0;                          // beq t4, r0, L47
  c->daddiu(t7, t4, -43);                           // daddiu t7, t4, -43
  if (bc) {goto block_67;}                          // branch non-likely

  c->movz(t5, t4, t7);                              // movz t5, t4, t7
  c->daddiu(t7, t4, -45);                           // daddiu t7, t4, -45
  c->movz(t5, t4, t7);                              // movz t5, t4, t7
  // nop                                            // sll r0, r0, 0
  bc = c->sgpr64(t5) != 0;                          // bne t5, r0, L25
  c->daddiu(t7, t4, -121);                          // daddiu t7, t4, -121
  if (bc) {goto block_15;}                          // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L37
  c->daddiu(t6, t4, -89);                           // daddiu t6, t4, -89
  if (bc) {goto block_52;}                          // branch non-likely

  bc = c->sgpr64(t6) == 0;                          // beq t6, r0, L37
  c->daddiu(t6, t4, -122);                          // daddiu t6, t4, -122
  if (bc) {goto block_52;}                          // branch non-likely

  bc = c->sgpr64(t6) == 0;                          // beq t6, r0, L38
  c->daddiu(t6, t4, -90);                           // daddiu t6, t4, -90
  if (bc) {goto block_53;}                          // branch non-likely

  bc = c->sgpr64(t6) == 0;                          // beq t6, r0, L38
  c->daddiu(t6, t4, -48);                           // daddiu t6, t4, -48
  if (bc) {goto block_53;}                          // branch non-likely

  bc = ((s64)c->sgpr64(t6)) < 0;                    // bltz t6, L40
  c->daddiu(t6, t4, -57);                           // daddiu t6, t4, -57
  if (bc) {goto block_55;}                          // branch non-likely

  bc = ((s64)c->sgpr64(t6)) > 0;                    // bgtz t6, L40
  c->daddiu(t6, t4, -48);                           // daddiu t6, t4, -48
  if (bc) {goto block_55;}                          // branch non-likely


  block_15:
  c->lbu(t4, 4, a0);                                // lbu t4, 4(a0)
  c->daddiu(a0, a0, 1);                             // daddiu a0, a0, 1
  bc = c->sgpr64(t4) == 0;                          // beq t4, r0, L47
  c->daddiu(t7, t4, -110);                          // daddiu t7, t4, -110
  if (bc) {goto block_67;}                          // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L26
  c->daddiu(t7, t4, -78);                           // daddiu t7, t4, -78
  if (bc) {goto block_33;}                          // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L26
  c->daddiu(t7, t4, -108);                          // daddiu t7, t4, -108
  if (bc) {goto block_33;}                          // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L24
  c->daddiu(t7, t4, -76);                           // daddiu t7, t4, -76
  if (bc) {goto block_4;}                           // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L24
  c->daddiu(t7, t4, -119);                          // daddiu t7, t4, -119
  if (bc) {goto block_4;}                           // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L24
  c->daddiu(t7, t4, -87);                           // daddiu t7, t4, -87
  if (bc) {goto block_4;}                           // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L24
  c->daddiu(t7, t4, -107);                          // daddiu t7, t4, -107
  if (bc) {goto block_4;}                           // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L28
  c->daddiu(t7, t4, -75);                           // daddiu t7, t4, -75
  if (bc) {goto block_36;}                          // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L28
  c->daddiu(t7, t4, -106);                          // daddiu t7, t4, -106
  if (bc) {goto block_36;}                          // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L29
  c->daddiu(t7, t4, -74);                           // daddiu t7, t4, -74
  if (bc) {goto block_38;}                          // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L29
  c->daddiu(t7, t4, -104);                          // daddiu t7, t4, -104
  if (bc) {goto block_38;}                          // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L31
  c->daddiu(t7, t4, -72);                           // daddiu t7, t4, -72
  if (bc) {goto block_42;}                          // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L31
  c->daddiu(t7, t4, -118);                          // daddiu t7, t4, -118
  if (bc) {goto block_42;}                          // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L34
  c->daddiu(t7, t4, -86);                           // daddiu t7, t4, -86
  if (bc) {goto block_47;}                          // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L34
  c->daddiu(t7, t4, -48);                           // daddiu t7, t4, -48
  if (bc) {goto block_47;}                          // branch non-likely

  bc = ((s64)c->sgpr64(t7)) < 0;                    // bltz t7, L40
  c->daddiu(t8, t4, -57);                           // daddiu t8, t4, -57
  if (bc) {goto block_55;}                          // branch non-likely

  bc = ((s64)c->sgpr64(t8)) > 0;                    // bgtz t8, L40
  c->sll(t8, t6, 2);                                // sll t8, t6, 2
  if (bc) {goto block_55;}                          // branch non-likely

  c->daddu(t4, t6, t8);                             // daddu t4, t6, t8
  // nop                                            // sll r0, r0, 0
  c->sll(t4, t4, 1);                                // sll t4, t4, 1
  // nop                                            // sll r0, r0, 0
  //beq r0, r0, L25                                 // beq r0, r0, L25
  c->daddu(t6, t4, t7);                             // daddu t6, t4, t7
  goto block_15;                                    // branch always


  block_33:
  bc = c->sgpr64(t6) != 0;                          // bne t6, r0, L27
  c->addiu(t0, r0, -33);                            // addiu t0, r0, -33
  if (bc) {goto block_35;}                          // branch non-likely

  c->load_symbol(a3, cache.font12_table);           // lw a3, *font12-table*(s7)
  c->mov64(a3, a3);                                 // or a3, a3, r0
  c->lqc2(vf13, 144, v1);                           // lqc2 vf13, 144(v1)
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf14, 160, v1);                           // lqc2 vf14, 160(v1)
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf15, 176, v1);                           // lqc2 vf15, 176(v1)
  c->and_(t2, t2, t0);                              // and t2, t2, t0
  c->lq(t0, 80, v1);                                // lq t0, 80(v1)
  //beq r0, r0, L24                                 // beq r0, r0, L24
  c->lq(t1, 96, v1);                                // lq t1, 96(v1)
  goto block_4;                                     // branch always


  block_35:
  // nop                                            // sll r0, r0, 0
  c->load_symbol(a3, cache.font24_table);           // lw a3, *font24-table*(s7)
  c->mov64(a3, a3);                                 // or a3, a3, r0
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf13, 192, v1);                           // lqc2 vf13, 192(v1)
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf14, 208, v1);                           // lqc2 vf14, 208(v1)
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf15, 224, v1);                           // lqc2 vf15, 224(v1)
  c->ori(t2, t2, 32);                               // ori t2, t2, 32
  c->lq(t0, 112, v1);                               // lq t0, 112(v1)
  //beq r0, r0, L24                                 // beq r0, r0, L24
  c->lq(t1, 128, v1);                               // lq t1, 128(v1)
  goto block_4;                                     // branch always


  block_36:
  c->addiu(t4, r0, -3);                             // addiu t4, r0, -3
  // nop                                            // sll r0, r0, 0
  bc = c->sgpr64(t6) == 0;                          // beq t6, r0, L24
  c->and_(t2, t2, t4);                              // and t2, t2, t4
  if (bc) {goto block_4;}                           // branch non-likely

  //beq r0, r0, L24                                 // beq r0, r0, L24
  c->ori(t2, t2, 2);                                // ori t2, t2, 2
  goto block_4;                                     // branch always


  block_38:
  c->addiu(t4, r0, -21);                            // addiu t4, r0, -21
  c->daddiu(t5, t6, -2);                            // daddiu t5, t6, -2
  bc = c->sgpr64(t6) == 0;                          // beq t6, r0, L24
  c->and_(t2, t2, t4);                              // and t2, t2, t4
  if (bc) {goto block_4;}                           // branch non-likely

  bc = c->sgpr64(t5) == 0;                          // beq t5, r0, L30
  // nop                                            // sll r0, r0, 0
  if (bc) {goto block_41;}                          // branch non-likely

  //beq r0, r0, L24                                 // beq r0, r0, L24
  c->ori(t2, t2, 16);                               // ori t2, t2, 16
  goto block_4;                                     // branch always


  block_41:
  //beq r0, r0, L24                                 // beq r0, r0, L24
  c->ori(t2, t2, 4);                                // ori t2, t2, 4
  goto block_4;                                     // branch always


  block_42:
  c->mov128_vf_gpr(vf1, t6);                        // qmtc2.i vf1, t6
  c->daddiu(t4, t5, -45);                           // daddiu t4, t5, -45
  bc = c->sgpr64(t5) == 0;                          // beq t5, r0, L33
  c->vitof0(DEST::xyzw, vf1, vf1);                  // vitof0.xyzw vf1, vf1
  if (bc) {goto block_46;}                          // branch non-likely

  bc = c->sgpr64(t4) == 0;                          // beq t4, r0, L32
  // nop                                            // sll r0, r0, 0
  if (bc) {goto block_45;}                          // branch non-likely

  //beq r0, r0, L24                                 // beq r0, r0, L24
  c->vadd_bc(DEST::x, BC::x, vf23, vf23, vf1);      // vaddx.x vf23, vf23, vf1
  goto block_4;                                     // branch always


  block_45:
  //beq r0, r0, L24                                 // beq r0, r0, L24
  c->vsub_bc(DEST::x, BC::x, vf23, vf23, vf1);      // vsubx.x vf23, vf23, vf1
  goto block_4;                                     // branch always


  block_46:
  //beq r0, r0, L24                                 // beq r0, r0, L24
  c->vadd_bc(DEST::x, BC::x, vf23, vf0, vf1);       // vaddx.x vf23, vf0, vf1
  goto block_4;                                     // branch always


  block_47:
  c->mov128_vf_gpr(vf1, t6);                        // qmtc2.i vf1, t6
  c->daddiu(t4, t5, -45);                           // daddiu t4, t5, -45
  bc = c->sgpr64(t5) == 0;                          // beq t5, r0, L36
  c->vitof0(DEST::xyzw, vf1, vf1);                  // vitof0.xyzw vf1, vf1
  if (bc) {goto block_51;}                          // branch non-likely

  bc = c->sgpr64(t4) == 0;                          // beq t4, r0, L35
  // nop                                            // sll r0, r0, 0
  if (bc) {goto block_50;}                          // branch non-likely

  //beq r0, r0, L24                                 // beq r0, r0, L24
  c->vadd_bc(DEST::y, BC::x, vf23, vf23, vf1);      // vaddx.y vf23, vf23, vf1
  goto block_4;                                     // branch always


  block_50:
  //beq r0, r0, L24                                 // beq r0, r0, L24
  c->vsub_bc(DEST::y, BC::x, vf23, vf23, vf1);      // vsubx.y vf23, vf23, vf1
  goto block_4;                                     // branch always


  block_51:
  //beq r0, r0, L24                                 // beq r0, r0, L24
  c->vadd_bc(DEST::y, BC::x, vf23, vf0, vf1);       // vaddx.y vf23, vf0, vf1
  goto block_4;                                     // branch always


  block_52:
  //beq r0, r0, L24                                 // beq r0, r0, L24
  c->sqc2(vf23, 288, v1);                           // sqc2 vf23, 288(v1)
  goto block_4;                                     // branch always


  block_53:
  //beq r0, r0, L24                                 // beq r0, r0, L24
  c->lqc2(vf23, 288, v1);                           // lqc2 vf23, 288(v1)
  goto block_4;                                     // branch always


  block_54:
  c->lbu(t4, 4, a0);                                // lbu t4, 4(a0)
  c->daddiu(a0, a0, 1);                             // daddiu a0, a0, 1
  c->vadd(DEST::xyz, vf4, vf23, vf15);              // vadd.xyz vf4, vf23, vf15
  c->andi(t4, t4, 127);                             // andi t4, t4, 127
  c->vsub(DEST::xyzw, vf1, vf25, vf23);             // vsub.xyzw vf1, vf25, vf23
  c->daddiu(t4, t4, 255);                           // daddiu t4, t4, 255
  //beq r0, r0, L44                                 // beq r0, r0, L44
  c->sll(t5, t4, 4);                                // sll t5, t4, 4
  goto block_62;                                    // branch always


  block_55:
  c->vadd(DEST::xyz, vf4, vf23, vf15);              // vadd.xyz vf4, vf23, vf15
  c->sll(t5, t4, 4);                                // sll t5, t4, 4
  c->vsub(DEST::xyzw, vf1, vf25, vf23);             // vsub.xyzw vf1, vf25, vf23
  c->daddiu(t6, t4, -10);                           // daddiu t6, t4, -10
  bc = c->sgpr64(t6) == 0;                          // beq t6, r0, L41
  c->daddiu(t4, t4, -13);                           // daddiu t4, t4, -13
  if (bc) {goto block_57;}                          // branch non-likely

  bc = c->sgpr64(t4) != 0;                          // bne t4, r0, L44
  // nop                                            // sll r0, r0, 0
  if (bc) {goto block_62;}                          // branch non-likely


  block_57:
  c->vsub(DEST::xyzw, vf1, vf23, vf24);             // vsub.xyzw vf1, vf23, vf24
  c->andi(t4, t2, 16);                              // andi t4, t2, 16
  bc = c->sgpr64(t4) != 0;                          // bne t4, r0, L42
  c->andi(t4, t2, 4);                               // andi t4, t2, 4
  if (bc) {goto block_60;}                          // branch non-likely

  bc = c->sgpr64(t4) != 0;                          // bne t4, r0, L43
  // nop                                            // sll r0, r0, 0
  if (bc) {goto block_61;}                          // branch non-likely

  c->vadd_bc(DEST::x, BC::x, vf23, vf0, vf24);      // vaddx.x vf23, vf0, vf24
  // nop                                            // sll r0, r0, 0
  c->sqc2(vf23, 944, t3);                           // sqc2 vf23, 944(t3)
  c->vadd_bc(DEST::y, BC::w, vf23, vf23, vf15);     // vaddw.y vf23, vf23, vf15
  //beq r0, r0, L24                                 // beq r0, r0, L24
  c->daddiu(t3, t3, 16);                            // daddiu t3, t3, 16
  goto block_4;                                     // branch always


  block_60:
  c->vsub(DEST::x, vf23, vf24, vf1);                // vsub.x vf23, vf24, vf1
  c->sqc2(vf23, 944, t3);                           // sqc2 vf23, 944(t3)
  c->vadd_bc(DEST::x, BC::x, vf23, vf0, vf24);      // vaddx.x vf23, vf0, vf24
  c->vadd_bc(DEST::y, BC::w, vf23, vf23, vf15);     // vaddw.y vf23, vf23, vf15
  //beq r0, r0, L24                                 // beq r0, r0, L24
  c->daddiu(t3, t3, 16);                            // daddiu t3, t3, 16
  goto block_4;                                     // branch always


  block_61:
  c->vmul_bc(DEST::x, BC::w, vf1, vf1, vf16);       // vmulw.x vf1, vf1, vf16
  // nop                                            // sll r0, r0, 0
  c->vsub(DEST::x, vf23, vf24, vf1);                // vsub.x vf23, vf24, vf1
  c->sqc2(vf23, 944, t3);                           // sqc2 vf23, 944(t3)
  c->vadd_bc(DEST::x, BC::x, vf23, vf0, vf24);      // vaddx.x vf23, vf0, vf24
  c->vadd_bc(DEST::y, BC::w, vf23, vf23, vf15);     // vaddw.y vf23, vf23, vf15
  //beq r0, r0, L24                                 // beq r0, r0, L24
  c->daddiu(t3, t3, 16);                            // daddiu t3, t3, 16
  goto block_4;                                     // branch always


  block_62:
  c->addu(t4, t5, a3);                              // addu t4, t5, a3
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf5, -256, t4);                           // lqc2 vf5, -256(t4)
  c->mov128_gpr_vf(t4, vf1);                        // qmfc2.i t4, vf1
  bc = ((s64)c->sgpr64(t4)) < 0;                    // bltz t4, L47
  c->sra(t4, t4, 31);                               // sra t4, t4, 31
  if (bc) {goto block_67;}                          // branch non-likely

  c->vmul(DEST::xyzw, vf19, vf5, vf13);             // vmul.xyzw vf19, vf5, vf13
  c->andi(t4, t2, 2);                               // andi t4, t2, 2
  bc = c->sgpr64(t4) == 0;                          // beq t4, r0, L45
  // nop                                            // sll r0, r0, 0
  if (bc) {goto block_65;}                          // branch non-likely

  //beq r0, r0, L46                                 // beq r0, r0, L46
  c->vadd_bc(DEST::x, BC::w, vf23, vf23, vf19);     // vaddw.x vf23, vf23, vf19
  goto block_66;                                    // branch always


  block_65:
  // nop                                            // sll r0, r0, 0
  c->vadd_bc(DEST::x, BC::w, vf23, vf23, vf14);     // vaddw.x vf23, vf23, vf14

  block_66:
  //beq r0, r0, L24                                 // beq r0, r0, L24
  // nop                                            // sll r0, r0, 0
  goto block_4;                                     // branch always


  block_67:
  c->vsub(DEST::xyzw, vf1, vf23, vf24);             // vsub.xyzw vf1, vf23, vf24
  c->andi(a0, t2, 16);                              // andi a0, t2, 16
  bc = c->sgpr64(a0) != 0;                          // bne a0, r0, L48
  c->andi(a0, t2, 4);                               // andi a0, t2, 4
  if (bc) {goto block_70;}                          // branch non-likely

  bc = c->sgpr64(a0) != 0;                          // bne a0, r0, L49
  // nop                                            // sll r0, r0, 0
  if (bc) {goto block_71;}                          // branch non-likely

  c->vadd_bc(DEST::x, BC::x, vf23, vf0, vf24);      // vaddx.x vf23, vf0, vf24
  // nop                                            // sll r0, r0, 0
  //beq r0, r0, L50                                 // beq r0, r0, L50
  c->sqc2(vf23, 944, t3);                           // sqc2 vf23, 944(t3)
  goto block_72;                                    // branch always


  block_70:
  c->vsub(DEST::x, vf23, vf24, vf1);                // vsub.x vf23, vf24, vf1
  // nop                                            // sll r0, r0, 0
  //beq r0, r0, L50                                 // beq r0, r0, L50
  c->sqc2(vf23, 944, t3);                           // sqc2 vf23, 944(t3)
  goto block_72;                                    // branch always


  block_71:
  c->vmul_bc(DEST::x, BC::w, vf1, vf1, vf16);       // vmulw.x vf1, vf1, vf16
  // nop                                            // sll r0, r0, 0
  c->vsub(DEST::x, vf23, vf24, vf1);                // vsub.x vf23, vf24, vf1
  c->sqc2(vf23, 944, t3);                           // sqc2 vf23, 944(t3)

  block_72:
  c->lw(a0, 3032, v1);                              // lw a0, 3032(v1)
  c->mov64(t2, v1);                                 // or t2, v1, r0
  c->lw(t3, 3028, v1);                              // lw t3, 3028(v1)
  c->lqc2(vf23, 944, t2);                           // lqc2 vf23, 944(t2)

  block_73:
  c->lbu(t4, 4, t3);                                // lbu t4, 4(t3)
  c->daddiu(t3, t3, 1);                             // daddiu t3, t3, 1
  bc = c->sgpr64(t4) == 0;                          // beq t4, r0, L71
  c->daddiu(t5, t4, -1);                            // daddiu t5, t4, -1
  if (bc) {goto block_131;}                         // branch non-likely

  bc = c->sgpr64(t5) == 0;                          // beq t5, r0, L65
  c->daddiu(t5, t4, -126);                          // daddiu t5, t4, -126
  if (bc) {goto block_121;}                         // branch non-likely

  bc = c->sgpr64(t5) != 0;                          // bne t5, r0, L66
  // nop                                            // sll r0, r0, 0
  if (bc) {goto block_122;}                         // branch non-likely

  c->lbu(t4, 4, t3);                                // lbu t4, 4(t3)
  c->daddiu(t3, t3, 1);                             // daddiu t3, t3, 1
  c->addiu(t5, r0, 0);                              // addiu t5, r0, 0
  c->addiu(t6, r0, 0);                              // addiu t6, r0, 0
  bc = c->sgpr64(t4) == 0;                          // beq t4, r0, L71
  c->daddiu(t7, t4, -43);                           // daddiu t7, t4, -43
  if (bc) {goto block_131;}                         // branch non-likely

  c->movz(t5, t4, t7);                              // movz t5, t4, t7
  c->daddiu(t7, t4, -45);                           // daddiu t7, t4, -45
  c->movz(t5, t4, t7);                              // movz t5, t4, t7
  // nop                                            // sll r0, r0, 0
  bc = c->sgpr64(t5) != 0;                          // bne t5, r0, L52
  c->daddiu(t7, t4, -121);                          // daddiu t7, t4, -121
  if (bc) {goto block_84;}                          // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L63
  c->daddiu(t6, t4, -89);                           // daddiu t6, t4, -89
  if (bc) {goto block_119;}                         // branch non-likely

  bc = c->sgpr64(t6) == 0;                          // beq t6, r0, L63
  c->daddiu(t6, t4, -122);                          // daddiu t6, t4, -122
  if (bc) {goto block_119;}                         // branch non-likely

  bc = c->sgpr64(t6) == 0;                          // beq t6, r0, L64
  c->daddiu(t6, t4, -90);                           // daddiu t6, t4, -90
  if (bc) {goto block_120;}                         // branch non-likely

  bc = c->sgpr64(t6) == 0;                          // beq t6, r0, L64
  c->daddiu(t6, t4, -48);                           // daddiu t6, t4, -48
  if (bc) {goto block_120;}                         // branch non-likely

  bc = ((s64)c->sgpr64(t6)) < 0;                    // bltz t6, L66
  c->daddiu(t6, t4, -57);                           // daddiu t6, t4, -57
  if (bc) {goto block_122;}                         // branch non-likely

  bc = ((s64)c->sgpr64(t6)) > 0;                    // bgtz t6, L66
  c->daddiu(t6, t4, -48);                           // daddiu t6, t4, -48
  if (bc) {goto block_122;}                         // branch non-likely


  block_84:
  c->lbu(t4, 4, t3);                                // lbu t4, 4(t3)
  c->daddiu(t3, t3, 1);                             // daddiu t3, t3, 1
  bc = c->sgpr64(t4) == 0;                          // beq t4, r0, L71
  c->daddiu(t7, t4, -110);                          // daddiu t7, t4, -110
  if (bc) {goto block_131;}                         // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L53
  c->daddiu(t7, t4, -78);                           // daddiu t7, t4, -78
  if (bc) {goto block_102;}                         // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L53
  c->daddiu(t7, t4, -108);                          // daddiu t7, t4, -108
  if (bc) {goto block_102;}                         // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L51
  c->daddiu(t7, t4, -76);                           // daddiu t7, t4, -76
  if (bc) {goto block_73;}                          // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L51
  c->daddiu(t7, t4, -119);                          // daddiu t7, t4, -119
  if (bc) {goto block_73;}                          // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L55
  c->daddiu(t7, t4, -87);                           // daddiu t7, t4, -87
  if (bc) {goto block_105;}                         // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L55
  c->daddiu(t7, t4, -107);                          // daddiu t7, t4, -107
  if (bc) {goto block_105;}                         // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L56
  c->daddiu(t7, t4, -75);                           // daddiu t7, t4, -75
  if (bc) {goto block_107;}                         // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L56
  c->daddiu(t7, t4, -106);                          // daddiu t7, t4, -106
  if (bc) {goto block_107;}                         // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L51
  c->daddiu(t7, t4, -74);                           // daddiu t7, t4, -74
  if (bc) {goto block_73;}                          // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L51
  c->daddiu(t7, t4, -104);                          // daddiu t7, t4, -104
  if (bc) {goto block_73;}                          // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L57
  c->daddiu(t7, t4, -72);                           // daddiu t7, t4, -72
  if (bc) {goto block_109;}                         // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L57
  c->daddiu(t7, t4, -118);                          // daddiu t7, t4, -118
  if (bc) {goto block_109;}                         // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L60
  c->daddiu(t7, t4, -86);                           // daddiu t7, t4, -86
  if (bc) {goto block_114;}                         // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L60
  c->daddiu(t7, t4, -48);                           // daddiu t7, t4, -48
  if (bc) {goto block_114;}                         // branch non-likely

  bc = ((s64)c->sgpr64(t7)) < 0;                    // bltz t7, L66
  c->daddiu(t8, t4, -57);                           // daddiu t8, t4, -57
  if (bc) {goto block_122;}                         // branch non-likely

  bc = ((s64)c->sgpr64(t8)) > 0;                    // bgtz t8, L66
  c->sll(t8, t6, 2);                                // sll t8, t6, 2
  if (bc) {goto block_122;}                         // branch non-likely

  c->daddu(t4, t6, t8);                             // daddu t4, t6, t8
  // nop                                            // sll r0, r0, 0
  c->sll(t4, t4, 1);                                // sll t4, t4, 1
  // nop                                            // sll r0, r0, 0
  //beq r0, r0, L52                                 // beq r0, r0, L52
  c->daddu(t6, t4, t7);                             // daddu t6, t4, t7
  goto block_84;                                    // branch always


  block_102:
  bc = c->sgpr64(t6) != 0;                          // bne t6, r0, L54
  c->load_symbol(a3, cache.font12_table);           // lw a3, *font12-table*(s7)
  if (bc) {goto block_104;}                         // branch non-likely

  c->mov64(a3, a3);                                 // or a3, a3, r0
  c->addiu(t0, r0, -33);                            // addiu t0, r0, -33
  c->lqc2(vf13, 144, v1);                           // lqc2 vf13, 144(v1)
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf14, 160, v1);                           // lqc2 vf14, 160(v1)
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf15, 176, v1);                           // lqc2 vf15, 176(v1)
  c->and_(a0, a0, t0);                              // and a0, a0, t0
  c->lq(t0, 80, v1);                                // lq t0, 80(v1)
  //beq r0, r0, L51                                 // beq r0, r0, L51
  c->lq(t1, 96, v1);                                // lq t1, 96(v1)
  goto block_73;                                    // branch always


  block_104:
  // nop                                            // sll r0, r0, 0
  c->load_symbol(a3, cache.font24_table);           // lw a3, *font24-table*(s7)
  c->mov64(a3, a3);                                 // or a3, a3, r0
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf13, 192, v1);                           // lqc2 vf13, 192(v1)
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf14, 208, v1);                           // lqc2 vf14, 208(v1)
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf15, 224, v1);                           // lqc2 vf15, 224(v1)
  c->ori(a0, a0, 32);                               // ori a0, a0, 32
  c->lq(t0, 112, v1);                               // lq t0, 112(v1)
  //beq r0, r0, L51                                 // beq r0, r0, L51
  c->lq(t1, 128, v1);                               // lq t1, 128(v1)
  goto block_73;                                    // branch always


  block_105:
  c->addiu(t4, r0, -2);                             // addiu t4, r0, -2
  // nop                                            // sll r0, r0, 0
  bc = c->sgpr64(t6) == 0;                          // beq t6, r0, L51
  c->and_(a0, a0, t4);                              // and a0, a0, t4
  if (bc) {goto block_73;}                          // branch non-likely

  //beq r0, r0, L51                                 // beq r0, r0, L51
  c->ori(a0, a0, 1);                                // ori a0, a0, 1
  goto block_73;                                    // branch always


  block_107:
  c->addiu(t4, r0, -3);                             // addiu t4, r0, -3
  // nop                                            // sll r0, r0, 0
  bc = c->sgpr64(t6) == 0;                          // beq t6, r0, L51
  c->and_(a0, a0, t4);                              // and a0, a0, t4
  if (bc) {goto block_73;}                          // branch non-likely

  //beq r0, r0, L51                                 // beq r0, r0, L51
  c->ori(a0, a0, 2);                                // ori a0, a0, 2
  goto block_73;                                    // branch always


  block_109:
  c->mov128_vf_gpr(vf1, t6);                        // qmtc2.i vf1, t6
  c->daddiu(t4, t5, -45);                           // daddiu t4, t5, -45
  bc = c->sgpr64(t5) == 0;                          // beq t5, r0, L59
  c->vitof0(DEST::xyzw, vf1, vf1);                  // vitof0.xyzw vf1, vf1
  if (bc) {goto block_113;}                         // branch non-likely

  bc = c->sgpr64(t4) == 0;                          // beq t4, r0, L58
  // nop                                            // sll r0, r0, 0
  if (bc) {goto block_112;}                         // branch non-likely

  //beq r0, r0, L51                                 // beq r0, r0, L51
  c->vadd_bc(DEST::x, BC::x, vf23, vf23, vf1);      // vaddx.x vf23, vf23, vf1
  goto block_73;                                    // branch always


  block_112:
  //beq r0, r0, L51                                 // beq r0, r0, L51
  c->vsub_bc(DEST::x, BC::x, vf23, vf23, vf1);      // vsubx.x vf23, vf23, vf1
  goto block_73;                                    // branch always


  block_113:
  //beq r0, r0, L51                                 // beq r0, r0, L51
  c->vadd_bc(DEST::x, BC::x, vf23, vf0, vf1);       // vaddx.x vf23, vf0, vf1
  goto block_73;                                    // branch always


  block_114:
  c->mov128_vf_gpr(vf1, t6);                        // qmtc2.i vf1, t6
  c->daddiu(t4, t5, -45);                           // daddiu t4, t5, -45
  bc = c->sgpr64(t5) == 0;                          // beq t5, r0, L62
  c->vitof0(DEST::xyzw, vf1, vf1);                  // vitof0.xyzw vf1, vf1
  if (bc) {goto block_118;}                         // branch non-likely

  bc = c->sgpr64(t4) == 0;                          // beq t4, r0, L61
  // nop                                            // sll r0, r0, 0
  if (bc) {goto block_117;}                         // branch non-likely

  //beq r0, r0, L51                                 // beq r0, r0, L51
  c->vadd_bc(DEST::y, BC::x, vf23, vf23, vf1);      // vaddx.y vf23, vf23, vf1
  goto block_73;                                    // branch always


  block_117:
  //beq r0, r0, L51                                 // beq r0, r0, L51
  c->vsub_bc(DEST::y, BC::x, vf23, vf23, vf1);      // vsubx.y vf23, vf23, vf1
  goto block_73;                                    // branch always


  block_118:
  //beq r0, r0, L51                                 // beq r0, r0, L51
  c->vadd_bc(DEST::y, BC::x, vf23, vf0, vf1);       // vaddx.y vf23, vf0, vf1
  goto block_73;                                    // branch always


  block_119:
  //beq r0, r0, L51                                 // beq r0, r0, L51
  c->sqc2(vf23, 288, v1);                           // sqc2 vf23, 288(v1)
  goto block_73;                                    // branch always


  block_120:
  //beq r0, r0, L51                                 // beq r0, r0, L51
  c->lqc2(vf23, 288, v1);                           // lqc2 vf23, 288(v1)
  goto block_73;                                    // branch always


  block_121:
  c->lbu(t4, 4, t3);                                // lbu t4, 4(t3)
  c->daddiu(t3, t3, 1);                             // daddiu t3, t3, 1
  c->vadd(DEST::xyz, vf4, vf23, vf15);              // vadd.xyz vf4, vf23, vf15
  c->andi(t5, t4, 127);                             // andi t5, t4, 127
  c->vsub(DEST::xyzw, vf1, vf25, vf23);             // vsub.xyzw vf1, vf25, vf23
  c->daddiu(t5, t5, 255);                           // daddiu t5, t5, 255
  //beq r0, r0, L68                                 // beq r0, r0, L68
  c->sll(t5, t5, 4);                                // sll t5, t5, 4
  goto block_125;                                   // branch always


  block_122:
  c->vadd(DEST::xyz, vf4, vf23, vf15);              // vadd.xyz vf4, vf23, vf15
  c->sll(t5, t4, 4);                                // sll t5, t4, 4
  c->vsub(DEST::xyzw, vf1, vf25, vf23);             // vsub.xyzw vf1, vf25, vf23
  c->daddiu(t6, t4, -10);                           // daddiu t6, t4, -10
  bc = c->sgpr64(t6) == 0;                          // beq t6, r0, L67
  c->daddiu(t6, t4, -13);                           // daddiu t6, t4, -13
  if (bc) {goto block_124;}                         // branch non-likely

  bc = c->sgpr64(t6) != 0;                          // bne t6, r0, L68
  c->andi(t6, a0, 1);                               // andi t6, a0, 1
  if (bc) {goto block_125;}                         // branch non-likely


  block_124:
  c->daddiu(t2, t2, 16);                            // daddiu t2, t2, 16
  // nop                                            // sll r0, r0, 0
  //beq r0, r0, L51                                 // beq r0, r0, L51
  c->lqc2(vf23, 944, t2);                           // lqc2 vf23, 944(t2)
  goto block_73;                                    // branch always


  block_125:
  c->addu(t5, t5, a3);                              // addu t5, t5, a3
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf5, -256, t5);                           // lqc2 vf5, -256(t5)
  c->mov128_gpr_vf(t5, vf1);                        // qmfc2.i t5, vf1
  bc = ((s64)c->sgpr64(t5)) < 0;                    // bltz t5, L71
  c->vadd(DEST::xyz, vf6, vf5, vf16);               // vadd.xyz vf6, vf5, vf16
  if (bc) {goto block_131;}                         // branch non-likely

  c->sra(t5, t5, 31);                               // sra t5, t5, 31
  c->vadd(DEST::xyz, vf7, vf5, vf17);               // vadd.xyz vf7, vf5, vf17
  bc = ((s64)c->sgpr64(t5)) < 0;                    // bltz t5, L51
  c->vadd(DEST::xyz, vf8, vf5, vf18);               // vadd.xyz vf8, vf5, vf18
  if (bc) {goto block_73;}                          // branch non-likely

  c->vadd(DEST::xyz, vf1, vf23, vf0);               // vadd.xyz vf1, vf23, vf0
  // nop                                            // sll r0, r0, 0
  c->vadd(DEST::xyz, vf2, vf23, vf13);              // vadd.xyz vf2, vf23, vf13
  c->sqc2(vf5, 496, v1);                            // sqc2 vf5, 496(v1)
  c->vadd(DEST::xyz, vf3, vf23, vf14);              // vadd.xyz vf3, vf23, vf14
  c->sqc2(vf6, 512, v1);                            // sqc2 vf6, 512(v1)
  c->vmul(DEST::xyzw, vf19, vf5, vf13);             // vmul.xyzw vf19, vf5, vf13
  c->sqc2(vf7, 528, v1);                            // sqc2 vf7, 528(v1)
  // nop                                            // sll r0, r0, 0
  c->sqc2(vf8, 544, v1);                            // sqc2 vf8, 544(v1)
  // nop                                            // sll r0, r0, 0
  c->sqc2(vf1, 368, v1);                            // sqc2 vf1, 368(v1)
  // nop                                            // sll r0, r0, 0
  c->sqc2(vf2, 384, v1);                            // sqc2 vf2, 384(v1)
  // nop                                            // sll r0, r0, 0
  c->sqc2(vf3, 400, v1);                            // sqc2 vf3, 400(v1)
  // nop                                            // sll r0, r0, 0
  c->sqc2(vf4, 416, v1);                            // sqc2 vf4, 416(v1)
  c->lqc2(vf1, 368, v1);                            // lqc2 vf1, 368(v1)
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf2, 384, v1);                            // lqc2 vf2, 384(v1)
  c->vmula_bc(DEST::xyzw, BC::w, vf31, vf0);        // vmulaw.xyzw acc, vf31, vf0
  c->lqc2(vf3, 400, v1);                            // lqc2 vf3, 400(v1)
  c->vmadda_bc(DEST::xyzw, BC::x, vf28, vf1);       // vmaddax.xyzw acc, vf28, vf1
  c->lqc2(vf4, 416, v1);                            // lqc2 vf4, 416(v1)
  c->vmadda_bc(DEST::xyzw, BC::y, vf29, vf1);       // vmadday.xyzw acc, vf29, vf1
  // nop                                            // sll r0, r0, 0
  c->vmadd_bc(DEST::xyzw, BC::z, vf1, vf30, vf1);   // vmaddz.xyzw vf1, vf30, vf1
  // nop                                            // sll r0, r0, 0
  c->vmula_bc(DEST::xyzw, BC::w, vf31, vf0);        // vmulaw.xyzw acc, vf31, vf0
  // nop                                            // sll r0, r0, 0
  c->vmadda_bc(DEST::xyzw, BC::x, vf28, vf2);       // vmaddax.xyzw acc, vf28, vf2
  // nop                                            // sll r0, r0, 0
  c->vmadda_bc(DEST::xyzw, BC::y, vf29, vf2);       // vmadday.xyzw acc, vf29, vf2
  // nop                                            // sll r0, r0, 0
  c->vmadd_bc(DEST::xyzw, BC::z, vf2, vf30, vf2);   // vmaddz.xyzw vf2, vf30, vf2
  // nop                                            // sll r0, r0, 0
  c->vmula_bc(DEST::xyzw, BC::w, vf31, vf0);        // vmulaw.xyzw acc, vf31, vf0
  // nop                                            // sll r0, r0, 0
  c->vmadda_bc(DEST::xyzw, BC::x, vf28, vf3);       // vmaddax.xyzw acc, vf28, vf3
  // nop                                            // sll r0, r0, 0
  c->vmadda_bc(DEST::xyzw, BC::y, vf29, vf3);       // vmadday.xyzw acc, vf29, vf3
  // nop                                            // sll r0, r0, 0
  c->vmadd_bc(DEST::xyzw, BC::z, vf3, vf30, vf3);   // vmaddz.xyzw vf3, vf30, vf3
  // nop                                            // sll r0, r0, 0
  c->vmula_bc(DEST::xyzw, BC::w, vf31, vf0);        // vmulaw.xyzw acc, vf31, vf0
  // nop                                            // sll r0, r0, 0
  c->vmadda_bc(DEST::xyzw, BC::x, vf28, vf4);       // vmaddax.xyzw acc, vf28, vf4
  // nop                                            // sll r0, r0, 0
  c->vmadda_bc(DEST::xyzw, BC::y, vf29, vf4);       // vmadday.xyzw acc, vf29, vf4
  // nop                                            // sll r0, r0, 0
  c->vmadd_bc(DEST::xyzw, BC::z, vf4, vf30, vf4);   // vmaddz.xyzw vf4, vf30, vf4
  c->vdiv(vf25, BC::z, vf1, BC::w);                 // vdiv Q, vf25.z, vf1.w
  c->lq(t5, 32, v1);                                // lq t5, 32(v1)
  // nop                                            // sll r0, r0, 0
  c->lq(t6, 48, v1);                                // lq t6, 48(v1)
  // nop                                            // sll r0, r0, 0
  c->sq(t5, 0, a1);                                 // sq t5, 0(a1)
  // nop                                            // sll r0, r0, 0
  c->sq(t6, 16, a1);                                // sq t6, 16(a1)
  c->lqc2(vf5, 496, v1);                            // lqc2 vf5, 496(v1)
  c->mov128_gpr_gpr(t5, t0);                        // por t5, t0, r0
  c->lqc2(vf6, 512, v1);                            // lqc2 vf6, 512(v1)
  c->andi(t4, t4, 128);                             // andi t4, t4, 128
  c->lqc2(vf7, 528, v1);                            // lqc2 vf7, 528(v1)
  c->movn(t5, t1, t4);                              // movn t5, t1, t4
  c->vmulq(DEST::xyz, vf1, vf1);                    // vmulq.xyz vf1, vf1, Q
  c->sq(t5, 32, a1);                                // sq t5, 32(a1)
  c->vmulq(DEST::xyz, vf5, vf5);                    // vmulq.xyz vf5, vf5, Q
  // nop                                            // sll r0, r0, 0
  // nop                                            // vnop
  // nop                                            // sll r0, r0, 0
  // nop                                            // vnop
  // nop                                            // sll r0, r0, 0
  c->vdiv(vf25, BC::z, vf2, BC::w);                 // vdiv Q, vf25.z, vf2.w
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf8, 544, v1);                            // lqc2 vf8, 544(v1)
  // nop                                            // sll r0, r0, 0
  c->vadd(DEST::xyzw, vf1, vf1, vf26);              // vadd.xyzw vf1, vf1, vf26
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf9, 1968, v1);                           // lqc2 vf9, 1968(v1)
  // nop                                            // sll r0, r0, 0
  // nop                                            // sll r0, r0, 0
  // nop                                            // sll r0, r0, 0
  // nop                                            // sll r0, r0, 0
  // nop                                            // sll r0, r0, 0
  c->vftoi4(DEST::xyzw, vf1, vf1);                  // vftoi4.xyzw vf1, vf1
  // nop                                            // sll r0, r0, 0
  c->vmulq(DEST::xyz, vf2, vf2);                    // vmulq.xyz vf2, vf2, Q
  // nop                                            // sll r0, r0, 0
  c->vmulq(DEST::xyz, vf6, vf6);                    // vmulq.xyz vf6, vf6, Q
  c->sqc2(vf5, 48, a1);                             // sqc2 vf5, 48(a1)
  // nop                                            // vnop
  // nop                                            // sll r0, r0, 0
  // nop                                            // vnop
  // nop                                            // sll r0, r0, 0
  c->vdiv(vf25, BC::z, vf3, BC::w);                 // vdiv Q, vf25.z, vf3.w
  c->sqc2(vf9, 64, a1);                             // sqc2 vf9, 64(a1)
  // nop                                            // sll r0, r0, 0
  c->sqc2(vf1, 80, a1);                             // sqc2 vf1, 80(a1)
  c->vadd(DEST::xyzw, vf2, vf2, vf26);              // vadd.xyzw vf2, vf2, vf26
  // nop                                            // sll r0, r0, 0
  // nop                                            // sll r0, r0, 0
  // nop                                            // sll r0, r0, 0
  // nop                                            // sll r0, r0, 0
  // nop                                            // sll r0, r0, 0
  // nop                                            // sll r0, r0, 0
  // nop                                            // sll r0, r0, 0
  c->vftoi4(DEST::xyzw, vf2, vf2);                  // vftoi4.xyzw vf2, vf2
  // nop                                            // sll r0, r0, 0
  c->vmulq(DEST::xyz, vf3, vf3);                    // vmulq.xyz vf3, vf3, Q
  // nop                                            // sll r0, r0, 0
  c->vmulq(DEST::xyz, vf7, vf7);                    // vmulq.xyz vf7, vf7, Q
  c->sqc2(vf6, 96, a1);                             // sqc2 vf6, 96(a1)
  // nop                                            // vnop
  // nop                                            // sll r0, r0, 0
  // nop                                            // vnop
  // nop                                            // sll r0, r0, 0
  c->vdiv(vf25, BC::z, vf4, BC::w);                 // vdiv Q, vf25.z, vf4.w
  c->sqc2(vf9, 112, a1);                            // sqc2 vf9, 112(a1)
  // nop                                            // sll r0, r0, 0
  c->sqc2(vf2, 128, a1);                            // sqc2 vf2, 128(a1)
  c->vadd(DEST::xyzw, vf3, vf3, vf26);              // vadd.xyzw vf3, vf3, vf26
  // nop                                            // sll r0, r0, 0
  // nop                                            // sll r0, r0, 0
  // nop                                            // sll r0, r0, 0
  // nop                                            // sll r0, r0, 0
  // nop                                            // sll r0, r0, 0
  // nop                                            // sll r0, r0, 0
  // nop                                            // sll r0, r0, 0
  c->vftoi4(DEST::xyzw, vf3, vf3);                  // vftoi4.xyzw vf3, vf3
  // nop                                            // sll r0, r0, 0
  c->vmulq(DEST::xyz, vf4, vf4);                    // vmulq.xyz vf4, vf4, Q
  // nop                                            // sll r0, r0, 0
  c->vmulq(DEST::xyz, vf8, vf8);                    // vmulq.xyz vf8, vf8, Q
  c->sqc2(vf7, 144, a1);                            // sqc2 vf7, 144(a1)
  // nop                                            // sll r0, r0, 0
  c->sqc2(vf9, 160, a1);                            // sqc2 vf9, 160(a1)
  c->vadd(DEST::xyzw, vf4, vf4, vf26);              // vadd.xyzw vf4, vf4, vf26
  c->sqc2(vf3, 176, a1);                            // sqc2 vf3, 176(a1)
  c->andi(t4, a0, 2);                               // andi t4, a0, 2
  // nop                                            // sll r0, r0, 0
  bc = c->sgpr64(t4) == 0;                          // beq t4, r0, L69
  // nop                                            // sll r0, r0, 0
  if (bc) {goto block_129;}                         // branch non-likely

  //beq r0, r0, L70                                 // beq r0, r0, L70
  c->vadd_bc(DEST::x, BC::w, vf23, vf23, vf19);     // vaddw.x vf23, vf23, vf19
  goto block_130;                                   // branch always


  block_129:
  // nop                                            // sll r0, r0, 0
  c->vadd_bc(DEST::x, BC::w, vf23, vf23, vf14);     // vaddw.x vf23, vf23, vf14

  block_130:
  c->vftoi4(DEST::xyzw, vf4, vf4);                  // vftoi4.xyzw vf4, vf4
  // nop                                            // sll r0, r0, 0
  // nop                                            // sll r0, r0, 0
  // nop                                            // sll r0, r0, 0
  // nop                                            // sll r0, r0, 0
  c->sqc2(vf8, 192, a1);                            // sqc2 vf8, 192(a1)
  // nop                                            // sll r0, r0, 0
  c->sqc2(vf9, 208, a1);                            // sqc2 vf9, 208(a1)
  // nop                                            // sll r0, r0, 0
  c->sqc2(vf4, 224, a1);                            // sqc2 vf4, 224(a1)
  //beq r0, r0, L51                                 // beq r0, r0, L51
  c->daddiu(a1, a1, 240);                           // daddiu a1, a1, 240
  goto block_73;                                    // branch always


  block_131:
  c->lw(a0, 3032, v1);                              // lw a0, 3032(v1)
  c->mov64(t2, v1);                                 // or t2, v1, r0
  c->lw(t3, 3028, v1);                              // lw t3, 3028(v1)
  c->lqc2(vf23, 944, t2);                           // lqc2 vf23, 944(t2)

  block_132:
  c->lbu(t4, 4, t3);                                // lbu t4, 4(t3)
  c->daddiu(t3, t3, 1);                             // daddiu t3, t3, 1
  bc = c->sgpr64(t4) == 0;                          // beq t4, r0, L92
  c->daddiu(t5, t4, -1);                            // daddiu t5, t4, -1
  if (bc) {goto block_189;}                         // branch non-likely

  bc = c->sgpr64(t5) == 0;                          // beq t5, r0, L86
  c->daddiu(t5, t4, -126);                          // daddiu t5, t4, -126
  if (bc) {goto block_179;}                         // branch non-likely

  bc = c->sgpr64(t5) != 0;                          // bne t5, r0, L87
  // nop                                            // sll r0, r0, 0
  if (bc) {goto block_180;}                         // branch non-likely

  c->lbu(t4, 4, t3);                                // lbu t4, 4(t3)
  c->daddiu(t3, t3, 1);                             // daddiu t3, t3, 1
  c->addiu(t5, r0, 0);                              // addiu t5, r0, 0
  c->addiu(t6, r0, 0);                              // addiu t6, r0, 0
  bc = c->sgpr64(t4) == 0;                          // beq t4, r0, L92
  c->daddiu(t7, t4, -43);                           // daddiu t7, t4, -43
  if (bc) {goto block_189;}                         // branch non-likely

  c->movz(t5, t4, t7);                              // movz t5, t4, t7
  c->daddiu(t7, t4, -45);                           // daddiu t7, t4, -45
  c->movz(t5, t4, t7);                              // movz t5, t4, t7
  // nop                                            // sll r0, r0, 0
  bc = c->sgpr64(t5) != 0;                          // bne t5, r0, L73
  c->daddiu(t7, t4, -121);                          // daddiu t7, t4, -121
  if (bc) {goto block_143;}                         // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L84
  c->daddiu(t6, t4, -89);                           // daddiu t6, t4, -89
  if (bc) {goto block_177;}                         // branch non-likely

  bc = c->sgpr64(t6) == 0;                          // beq t6, r0, L84
  c->daddiu(t6, t4, -122);                          // daddiu t6, t4, -122
  if (bc) {goto block_177;}                         // branch non-likely

  bc = c->sgpr64(t6) == 0;                          // beq t6, r0, L85
  c->daddiu(t6, t4, -90);                           // daddiu t6, t4, -90
  if (bc) {goto block_178;}                         // branch non-likely

  bc = c->sgpr64(t6) == 0;                          // beq t6, r0, L85
  c->daddiu(t6, t4, -48);                           // daddiu t6, t4, -48
  if (bc) {goto block_178;}                         // branch non-likely

  bc = ((s64)c->sgpr64(t6)) < 0;                    // bltz t6, L87
  c->daddiu(t6, t4, -57);                           // daddiu t6, t4, -57
  if (bc) {goto block_180;}                         // branch non-likely

  bc = ((s64)c->sgpr64(t6)) > 0;                    // bgtz t6, L87
  c->daddiu(t6, t4, -48);                           // daddiu t6, t4, -48
  if (bc) {goto block_180;}                         // branch non-likely


  block_143:
  c->lbu(t4, 4, t3);                                // lbu t4, 4(t3)
  c->daddiu(t3, t3, 1);                             // daddiu t3, t3, 1
  bc = c->sgpr64(t4) == 0;                          // beq t4, r0, L92
  c->daddiu(t7, t4, -110);                          // daddiu t7, t4, -110
  if (bc) {goto block_189;}                         // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L74
  c->daddiu(t7, t4, -78);                           // daddiu t7, t4, -78
  if (bc) {goto block_161;}                         // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L74
  c->daddiu(t7, t4, -108);                          // daddiu t7, t4, -108
  if (bc) {goto block_161;}                         // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L76
  c->daddiu(t7, t4, -76);                           // daddiu t7, t4, -76
  if (bc) {goto block_164;}                         // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L76
  c->daddiu(t7, t4, -119);                          // daddiu t7, t4, -119
  if (bc) {goto block_164;}                         // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L72
  c->daddiu(t7, t4, -87);                           // daddiu t7, t4, -87
  if (bc) {goto block_132;}                         // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L72
  c->daddiu(t7, t4, -107);                          // daddiu t7, t4, -107
  if (bc) {goto block_132;}                         // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L77
  c->daddiu(t7, t4, -75);                           // daddiu t7, t4, -75
  if (bc) {goto block_165;}                         // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L77
  c->daddiu(t7, t4, -106);                          // daddiu t7, t4, -106
  if (bc) {goto block_165;}                         // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L72
  c->daddiu(t7, t4, -74);                           // daddiu t7, t4, -74
  if (bc) {goto block_132;}                         // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L72
  c->daddiu(t7, t4, -104);                          // daddiu t7, t4, -104
  if (bc) {goto block_132;}                         // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L78
  c->daddiu(t7, t4, -72);                           // daddiu t7, t4, -72
  if (bc) {goto block_167;}                         // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L78
  c->daddiu(t7, t4, -118);                          // daddiu t7, t4, -118
  if (bc) {goto block_167;}                         // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L81
  c->daddiu(t7, t4, -86);                           // daddiu t7, t4, -86
  if (bc) {goto block_172;}                         // branch non-likely

  bc = c->sgpr64(t7) == 0;                          // beq t7, r0, L81
  c->daddiu(t7, t4, -48);                           // daddiu t7, t4, -48
  if (bc) {goto block_172;}                         // branch non-likely

  bc = ((s64)c->sgpr64(t7)) < 0;                    // bltz t7, L87
  c->daddiu(t8, t4, -57);                           // daddiu t8, t4, -57
  if (bc) {goto block_180;}                         // branch non-likely

  bc = ((s64)c->sgpr64(t8)) > 0;                    // bgtz t8, L87
  c->sll(t8, t6, 2);                                // sll t8, t6, 2
  if (bc) {goto block_180;}                         // branch non-likely

  c->daddu(t4, t6, t8);                             // daddu t4, t6, t8
  // nop                                            // sll r0, r0, 0
  c->sll(t4, t4, 1);                                // sll t4, t4, 1
  // nop                                            // sll r0, r0, 0
  //beq r0, r0, L73                                 // beq r0, r0, L73
  c->daddu(t6, t4, t7);                             // daddu t6, t4, t7
  goto block_143;                                   // branch always


  block_161:
  bc = c->sgpr64(t6) != 0;                          // bne t6, r0, L75
  c->load_symbol(a3, cache.font12_table);           // lw a3, *font12-table*(s7)
  if (bc) {goto block_163;}                         // branch non-likely

  c->mov64(a3, a3);                                 // or a3, a3, r0
  c->addiu(t0, r0, -33);                            // addiu t0, r0, -33
  c->lqc2(vf13, 144, v1);                           // lqc2 vf13, 144(v1)
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf14, 160, v1);                           // lqc2 vf14, 160(v1)
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf15, 176, v1);                           // lqc2 vf15, 176(v1)
  c->and_(a0, a0, t0);                              // and a0, a0, t0
  c->lq(t0, 80, v1);                                // lq t0, 80(v1)
  //beq r0, r0, L72                                 // beq r0, r0, L72
  c->lq(t1, 96, v1);                                // lq t1, 96(v1)
  goto block_132;                                   // branch always


  block_163:
  // nop                                            // sll r0, r0, 0
  c->load_symbol(a3, cache.font24_table);           // lw a3, *font24-table*(s7)
  c->mov64(a3, a3);                                 // or a3, a3, r0
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf13, 192, v1);                           // lqc2 vf13, 192(v1)
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf14, 208, v1);                           // lqc2 vf14, 208(v1)
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf15, 224, v1);                           // lqc2 vf15, 224(v1)
  c->ori(a0, a0, 32);                               // ori a0, a0, 32
  c->lq(t0, 112, v1);                               // lq t0, 112(v1)
  //beq r0, r0, L72                                 // beq r0, r0, L72
  c->lq(t1, 128, v1);                               // lq t1, 128(v1)
  goto block_132;                                   // branch always


  block_164:
  // nop                                            // sll r0, r0, 0
  c->sw(t6, 3008, v1);                              // sw t6, 3008(v1)
  c->sll(t4, t6, 4);                                // sll t4, t6, 4
  c->lq(t5, 432, v1);                               // lq t5, 432(v1)
  c->daddu(t4, t4, v1);                             // daddu t4, t4, v1
  c->lq(t6, 448, v1);                               // lq t6, 448(v1)
  // nop                                            // sll r0, r0, 0
  c->sq(t5, 624, v1);                               // sq t5, 624(v1)
  // nop                                            // sll r0, r0, 0
  c->sq(t6, 640, v1);                               // sq t6, 640(v1)
  // nop                                            // sll r0, r0, 0
  c->lq(t5, 464, v1);                               // lq t5, 464(v1)
  // nop                                            // sll r0, r0, 0
  c->lq(t6, 480, v1);                               // lq t6, 480(v1)
  // nop                                            // sll r0, r0, 0
  c->sq(t5, 656, v1);                               // sq t5, 656(v1)
  // nop                                            // sll r0, r0, 0
  c->sq(t6, 672, v1);                               // sq t6, 672(v1)
  // nop                                            // sll r0, r0, 0
  c->lwu(t6, 1984, t4);                             // lwu t6, 1984(t4)
  // nop                                            // sll r0, r0, 0
  c->lwu(t5, 1988, t4);                             // lwu t5, 1988(t4)
  c->pextlb(t6, r0, t6);                            // pextlb t6, r0, t6
  c->mfc1(r0, f31);                                 // mfc1 r0, f31
  c->pextlh(t6, r0, t6);                            // pextlh t6, r0, t6
  c->mfc1(r0, f31);                                 // mfc1 r0, f31
  c->pextlb(t5, r0, t5);                            // pextlb t5, r0, t5
  c->sq(t6, 432, v1);                               // sq t6, 432(v1)
  c->pextlh(t5, r0, t5);                            // pextlh t5, r0, t5
  c->sq(t6, 816, v1);                               // sq t6, 816(v1)
  // nop                                            // sll r0, r0, 0
  c->sq(t5, 448, v1);                               // sq t5, 448(v1)
  // nop                                            // sll r0, r0, 0
  c->sq(t5, 832, v1);                               // sq t5, 832(v1)
  // nop                                            // sll r0, r0, 0
  c->lwu(t5, 1992, t4);                             // lwu t5, 1992(t4)
  // nop                                            // sll r0, r0, 0
  c->lwu(t4, 1996, t4);                             // lwu t4, 1996(t4)
  c->pextlb(t5, r0, t5);                            // pextlb t5, r0, t5
  c->mfc1(r0, f31);                                 // mfc1 r0, f31
  c->pextlh(t5, r0, t5);                            // pextlh t5, r0, t5
  c->mfc1(r0, f31);                                 // mfc1 r0, f31
  c->pextlb(t4, r0, t4);                            // pextlb t4, r0, t4
  c->sq(t5, 464, v1);                               // sq t5, 464(v1)
  c->pextlh(t4, r0, t4);                            // pextlh t4, r0, t4
  c->sq(t5, 848, v1);                               // sq t5, 848(v1)
  // nop                                            // sll r0, r0, 0
  c->sq(t4, 480, v1);                               // sq t4, 480(v1)
  //beq r0, r0, L72                                 // beq r0, r0, L72
  c->sq(t4, 864, v1);                               // sq t4, 864(v1)
  goto block_132;                                   // branch always


  block_165:
  c->addiu(t4, r0, -3);                             // addiu t4, r0, -3
  // nop                                            // sll r0, r0, 0
  bc = c->sgpr64(t6) == 0;                          // beq t6, r0, L72
  c->and_(a0, a0, t4);                              // and a0, a0, t4
  if (bc) {goto block_132;}                         // branch non-likely

  //beq r0, r0, L72                                 // beq r0, r0, L72
  c->ori(a0, a0, 2);                                // ori a0, a0, 2
  goto block_132;                                   // branch always


  block_167:
  c->mov128_vf_gpr(vf1, t6);                        // qmtc2.i vf1, t6
  c->daddiu(t4, t5, -45);                           // daddiu t4, t5, -45
  bc = c->sgpr64(t5) == 0;                          // beq t5, r0, L80
  c->vitof0(DEST::xyzw, vf1, vf1);                  // vitof0.xyzw vf1, vf1
  if (bc) {goto block_171;}                         // branch non-likely

  bc = c->sgpr64(t4) == 0;                          // beq t4, r0, L79
  // nop                                            // sll r0, r0, 0
  if (bc) {goto block_170;}                         // branch non-likely

  //beq r0, r0, L72                                 // beq r0, r0, L72
  c->vadd_bc(DEST::x, BC::x, vf23, vf23, vf1);      // vaddx.x vf23, vf23, vf1
  goto block_132;                                   // branch always


  block_170:
  //beq r0, r0, L72                                 // beq r0, r0, L72
  c->vsub_bc(DEST::x, BC::x, vf23, vf23, vf1);      // vsubx.x vf23, vf23, vf1
  goto block_132;                                   // branch always


  block_171:
  //beq r0, r0, L72                                 // beq r0, r0, L72
  c->vadd_bc(DEST::x, BC::x, vf23, vf0, vf1);       // vaddx.x vf23, vf0, vf1
  goto block_132;                                   // branch always


  block_172:
  c->mov128_vf_gpr(vf1, t6);                        // qmtc2.i vf1, t6
  c->daddiu(t4, t5, -45);                           // daddiu t4, t5, -45
  bc = c->sgpr64(t5) == 0;                          // beq t5, r0, L83
  c->vitof0(DEST::xyzw, vf1, vf1);                  // vitof0.xyzw vf1, vf1
  if (bc) {goto block_176;}                         // branch non-likely

  bc = c->sgpr64(t4) == 0;                          // beq t4, r0, L82
  // nop                                            // sll r0, r0, 0
  if (bc) {goto block_175;}                         // branch non-likely

  //beq r0, r0, L72                                 // beq r0, r0, L72
  c->vadd_bc(DEST::y, BC::x, vf23, vf23, vf1);      // vaddx.y vf23, vf23, vf1
  goto block_132;                                   // branch always


  block_175:
  //beq r0, r0, L72                                 // beq r0, r0, L72
  c->vsub_bc(DEST::y, BC::x, vf23, vf23, vf1);      // vsubx.y vf23, vf23, vf1
  goto block_132;                                   // branch always


  block_176:
  //beq r0, r0, L72                                 // beq r0, r0, L72
  c->vadd_bc(DEST::y, BC::x, vf23, vf0, vf1);       // vaddx.y vf23, vf0, vf1
  goto block_132;                                   // branch always


  block_177:
  // nop                                            // sll r0, r0, 0
  c->lw(t4, 3008, v1);                              // lw t4, 3008(v1)
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf9, 432, v1);                            // lqc2 vf9, 432(v1)
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf10, 448, v1);                           // lqc2 vf10, 448(v1)
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf11, 464, v1);                           // lqc2 vf11, 464(v1)
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf12, 480, v1);                           // lqc2 vf12, 480(v1)
  // nop                                            // sll r0, r0, 0
  c->sw(t4, 3016, v1);                              // sw t4, 3016(v1)
  // nop                                            // sll r0, r0, 0
  c->sqc2(vf9, 304, v1);                            // sqc2 vf9, 304(v1)
  // nop                                            // sll r0, r0, 0
  c->sqc2(vf10, 320, v1);                           // sqc2 vf10, 320(v1)
  // nop                                            // sll r0, r0, 0
  c->sqc2(vf11, 336, v1);                           // sqc2 vf11, 336(v1)
  // nop                                            // sll r0, r0, 0
  c->sqc2(vf12, 352, v1);                           // sqc2 vf12, 352(v1)
  //beq r0, r0, L72                                 // beq r0, r0, L72
  c->sqc2(vf23, 288, v1);                           // sqc2 vf23, 288(v1)
  goto block_132;                                   // branch always


  block_178:
  // nop                                            // sll r0, r0, 0
  c->lw(t4, 3016, v1);                              // lw t4, 3016(v1)
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf9, 304, v1);                            // lqc2 vf9, 304(v1)
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf10, 320, v1);                           // lqc2 vf10, 320(v1)
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf11, 336, v1);                           // lqc2 vf11, 336(v1)
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf12, 352, v1);                           // lqc2 vf12, 352(v1)
  // nop                                            // sll r0, r0, 0
  c->sw(t4, 3008, v1);                              // sw t4, 3008(v1)
  // nop                                            // sll r0, r0, 0
  c->sqc2(vf9, 432, v1);                            // sqc2 vf9, 432(v1)
  // nop                                            // sll r0, r0, 0
  c->sqc2(vf9, 816, v1);                            // sqc2 vf9, 816(v1)
  // nop                                            // sll r0, r0, 0
  c->sqc2(vf10, 448, v1);                           // sqc2 vf10, 448(v1)
  // nop                                            // sll r0, r0, 0
  c->sqc2(vf10, 832, v1);                           // sqc2 vf10, 832(v1)
  // nop                                            // sll r0, r0, 0
  c->sqc2(vf11, 464, v1);                           // sqc2 vf11, 464(v1)
  // nop                                            // sll r0, r0, 0
  c->sqc2(vf11, 848, v1);                           // sqc2 vf11, 848(v1)
  // nop                                            // sll r0, r0, 0
  c->sqc2(vf12, 480, v1);                           // sqc2 vf12, 480(v1)
  // nop                                            // sll r0, r0, 0
  c->sqc2(vf12, 864, v1);                           // sqc2 vf12, 864(v1)
  //beq r0, r0, L72                                 // beq r0, r0, L72
  c->lqc2(vf23, 288, v1);                           // lqc2 vf23, 288(v1)
  goto block_132;                                   // branch always


  block_179:
  c->lbu(t4, 4, t3);                                // lbu t4, 4(t3)
  c->daddiu(t3, t3, 1);                             // daddiu t3, t3, 1
  c->vadd(DEST::xyz, vf4, vf23, vf15);              // vadd.xyz vf4, vf23, vf15
  c->andi(t5, t4, 127);                             // andi t5, t4, 127
  c->vsub(DEST::xyzw, vf1, vf25, vf23);             // vsub.xyzw vf1, vf25, vf23
  c->daddiu(t5, t5, 255);                           // daddiu t5, t5, 255
  //beq r0, r0, L89                                 // beq r0, r0, L89
  c->sll(t5, t5, 4);                                // sll t5, t5, 4
  goto block_183;                                   // branch always


  block_180:
  c->vadd(DEST::xyz, vf4, vf23, vf15);              // vadd.xyz vf4, vf23, vf15
  c->sll(t5, t4, 4);                                // sll t5, t4, 4
  c->vsub(DEST::xyzw, vf1, vf25, vf23);             // vsub.xyzw vf1, vf25, vf23
  c->daddiu(t6, t4, -10);                           // daddiu t6, t4, -10
  bc = c->sgpr64(t6) == 0;                          // beq t6, r0, L88
  c->daddiu(t6, t4, -13);                           // daddiu t6, t4, -13
  if (bc) {goto block_182;}                         // branch non-likely

  bc = c->sgpr64(t6) != 0;                          // bne t6, r0, L89
  // nop                                            // sll r0, r0, 0
  if (bc) {goto block_183;}                         // branch non-likely


  block_182:
  c->daddiu(t2, t2, 16);                            // daddiu t2, t2, 16
  // nop                                            // sll r0, r0, 0
  //beq r0, r0, L72                                 // beq r0, r0, L72
  c->lqc2(vf23, 944, t2);                           // lqc2 vf23, 944(t2)
  goto block_132;                                   // branch always


  block_183:
  c->addu(t5, t5, a3);                              // addu t5, t5, a3
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf5, -256, t5);                           // lqc2 vf5, -256(t5)
  c->mov128_gpr_vf(t5, vf1);                        // qmfc2.i t5, vf1
  bc = ((s64)c->sgpr64(t5)) < 0;                    // bltz t5, L92
  c->vadd(DEST::xyz, vf6, vf5, vf16);               // vadd.xyz vf6, vf5, vf16
  if (bc) {goto block_189;}                         // branch non-likely

  c->sra(t5, t5, 31);                               // sra t5, t5, 31
  c->vadd(DEST::xyz, vf7, vf5, vf17);               // vadd.xyz vf7, vf5, vf17
  bc = ((s64)c->sgpr64(t5)) < 0;                    // bltz t5, L72
  c->vadd(DEST::xyz, vf8, vf5, vf18);               // vadd.xyz vf8, vf5, vf18
  if (bc) {goto block_132;}                         // branch non-likely

  c->vadd(DEST::xyz, vf1, vf23, vf0);               // vadd.xyz vf1, vf23, vf0
  // nop                                            // sll r0, r0, 0
  c->vadd(DEST::xyz, vf2, vf23, vf13);              // vadd.xyz vf2, vf23, vf13
  // nop                                            // sll r0, r0, 0
  c->vadd(DEST::xyz, vf3, vf23, vf14);              // vadd.xyz vf3, vf23, vf14
  c->sqc2(vf5, 496, v1);                            // sqc2 vf5, 496(v1)
  c->vadd(DEST::xyz, vf4, vf23, vf15);              // vadd.xyz vf4, vf23, vf15
  c->sqc2(vf6, 512, v1);                            // sqc2 vf6, 512(v1)
  c->vmul(DEST::xyzw, vf19, vf5, vf13);             // vmul.xyzw vf19, vf5, vf13
  c->sqc2(vf7, 528, v1);                            // sqc2 vf7, 528(v1)
  // nop                                            // sll r0, r0, 0
  c->sqc2(vf8, 544, v1);                            // sqc2 vf8, 544(v1)
  // nop                                            // sll r0, r0, 0
  c->sqc2(vf1, 368, v1);                            // sqc2 vf1, 368(v1)
  // nop                                            // sll r0, r0, 0
  c->sqc2(vf2, 384, v1);                            // sqc2 vf2, 384(v1)
  // nop                                            // sll r0, r0, 0
  c->sqc2(vf3, 400, v1);                            // sqc2 vf3, 400(v1)
  // nop                                            // sll r0, r0, 0
  c->sqc2(vf4, 416, v1);                            // sqc2 vf4, 416(v1)
  c->lqc2(vf1, 368, v1);                            // lqc2 vf1, 368(v1)
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf2, 384, v1);                            // lqc2 vf2, 384(v1)
  c->vmula_bc(DEST::xyzw, BC::w, vf31, vf0);        // vmulaw.xyzw acc, vf31, vf0
  c->lqc2(vf3, 400, v1);                            // lqc2 vf3, 400(v1)
  c->vmadda_bc(DEST::xyzw, BC::x, vf28, vf1);       // vmaddax.xyzw acc, vf28, vf1
  c->lqc2(vf4, 416, v1);                            // lqc2 vf4, 416(v1)
  c->vmadda_bc(DEST::xyzw, BC::y, vf29, vf1);       // vmadday.xyzw acc, vf29, vf1
  // nop                                            // sll r0, r0, 0
  c->vmadd_bc(DEST::xyzw, BC::z, vf1, vf30, vf1);   // vmaddz.xyzw vf1, vf30, vf1
  // nop                                            // sll r0, r0, 0
  c->vmula_bc(DEST::xyzw, BC::w, vf31, vf0);        // vmulaw.xyzw acc, vf31, vf0
  // nop                                            // sll r0, r0, 0
  c->vmadda_bc(DEST::xyzw, BC::x, vf28, vf2);       // vmaddax.xyzw acc, vf28, vf2
  // nop                                            // sll r0, r0, 0
  c->vmadda_bc(DEST::xyzw, BC::y, vf29, vf2);       // vmadday.xyzw acc, vf29, vf2
  // nop                                            // sll r0, r0, 0
  c->vmadd_bc(DEST::xyzw, BC::z, vf2, vf30, vf2);   // vmaddz.xyzw vf2, vf30, vf2
  // nop                                            // sll r0, r0, 0
  c->vmula_bc(DEST::xyzw, BC::w, vf31, vf0);        // vmulaw.xyzw acc, vf31, vf0
  // nop                                            // sll r0, r0, 0
  c->vmadda_bc(DEST::xyzw, BC::x, vf28, vf3);       // vmaddax.xyzw acc, vf28, vf3
  // nop                                            // sll r0, r0, 0
  c->vmadda_bc(DEST::xyzw, BC::y, vf29, vf3);       // vmadday.xyzw acc, vf29, vf3
  // nop                                            // sll r0, r0, 0
  c->vmadd_bc(DEST::xyzw, BC::z, vf3, vf30, vf3);   // vmaddz.xyzw vf3, vf30, vf3
  // nop                                            // sll r0, r0, 0
  c->vmula_bc(DEST::xyzw, BC::w, vf31, vf0);        // vmulaw.xyzw acc, vf31, vf0
  // nop                                            // sll r0, r0, 0
  c->vmadda_bc(DEST::xyzw, BC::x, vf28, vf4);       // vmaddax.xyzw acc, vf28, vf4
  // nop                                            // sll r0, r0, 0
  c->vmadda_bc(DEST::xyzw, BC::y, vf29, vf4);       // vmadday.xyzw acc, vf29, vf4
  // nop                                            // sll r0, r0, 0
  c->vmadd_bc(DEST::xyzw, BC::z, vf4, vf30, vf4);   // vmaddz.xyzw vf4, vf30, vf4
  c->vdiv(vf25, BC::z, vf1, BC::w);                 // vdiv Q, vf25.z, vf1.w
  c->lq(t5, 32, v1);                                // lq t5, 32(v1)
  // nop                                            // sll r0, r0, 0
  c->lq(t6, 48, v1);                                // lq t6, 48(v1)
  // nop                                            // sll r0, r0, 0
  c->sq(t5, 0, a1);                                 // sq t5, 0(a1)
  // nop                                            // sll r0, r0, 0
  c->sq(t6, 16, a1);                                // sq t6, 16(a1)
  c->lqc2(vf5, 496, v1);                            // lqc2 vf5, 496(v1)
  c->mov128_gpr_gpr(t5, t0);                        // por t5, t0, r0
  c->lqc2(vf6, 512, v1);                            // lqc2 vf6, 512(v1)
  c->andi(t4, t4, 128);                             // andi t4, t4, 128
  c->lqc2(vf7, 528, v1);                            // lqc2 vf7, 528(v1)
  c->movn(t5, t1, t4);                              // movn t5, t1, t4
  c->vmulq(DEST::xyz, vf1, vf1);                    // vmulq.xyz vf1, vf1, Q
  c->sq(t5, 32, a1);                                // sq t5, 32(a1)
  c->vmulq(DEST::xyz, vf5, vf5);                    // vmulq.xyz vf5, vf5, Q
  // nop                                            // sll r0, r0, 0
  // nop                                            // vnop
  // nop                                            // sll r0, r0, 0
  // nop                                            // vnop
  // nop                                            // sll r0, r0, 0
  c->vdiv(vf25, BC::z, vf2, BC::w);                 // vdiv Q, vf25.z, vf2.w
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf8, 544, v1);                            // lqc2 vf8, 544(v1)
  // nop                                            // sll r0, r0, 0
  c->vadd(DEST::xyzw, vf1, vf1, vf27);              // vadd.xyzw vf1, vf1, vf27
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf9, 432, v1);                            // lqc2 vf9, 432(v1)
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf10, 448, v1);                           // lqc2 vf10, 448(v1)
  // nop                                            // sll r0, r0, 0
  c->lqc2(vf11, 464, v1);                           // lqc2 vf11, 464(v1)
  // nop                                            // sll r0, r0, 0
  c->vftoi4(DEST::xyzw, vf1, vf1);                  // vftoi4.xyzw vf1, vf1
  // nop                                            // sll r0, r0, 0
  c->vmulq(DEST::xyz, vf2, vf2);                    // vmulq.xyz vf2, vf2, Q
  // nop                                            // sll r0, r0, 0
  c->vmulq(DEST::xyz, vf6, vf6);                    // vmulq.xyz vf6, vf6, Q
  c->sqc2(vf5, 48, a1);                             // sqc2 vf5, 48(a1)
  // nop                                            // vnop
  // nop                                            // sll r0, r0, 0
  // nop                                            // vnop
  // nop                                            // sll r0, r0, 0
  c->vdiv(vf25, BC::z, vf3, BC::w);                 // vdiv Q, vf25.z, vf3.w
  c->sqc2(vf9, 64, a1);                             // sqc2 vf9, 64(a1)
  c->lqc2(vf12, 480, v1);                           // lqc2 vf12, 480(v1)
  c->sqc2(vf1, 80, a1);                             // sqc2 vf1, 80(a1)
  c->vadd(DEST::xyzw, vf2, vf2, vf27);              // vadd.xyzw vf2, vf2, vf27
  // nop                                            // sll r0, r0, 0
  // nop                                            // sll r0, r0, 0
  // nop                                            // sll r0, r0, 0
  // nop                                            // sll r0, r0, 0
  // nop                                            // sll r0, r0, 0
  // nop                                            // sll r0, r0, 0
  // nop                                            // sll r0, r0, 0
  c->vftoi4(DEST::xyzw, vf2, vf2);                  // vftoi4.xyzw vf2, vf2
  // nop                                            // sll r0, r0, 0
  c->vmulq(DEST::xyz, vf3, vf3);                    // vmulq.xyz vf3, vf3, Q
  // nop                                            // sll r0, r0, 0
  c->vmulq(DEST::xyz, vf7, vf7);                    // vmulq.xyz vf7, vf7, Q
  c->sqc2(vf6, 96, a1);                             // sqc2 vf6, 96(a1)
  // nop                                            // vnop
  // nop                                            // sll r0, r0, 0
  // nop                                            // vnop
  // nop                                            // sll r0, r0, 0
  c->vdiv(vf25, BC::z, vf4, BC::w);                 // vdiv Q, vf25.z, vf4.w
  c->sqc2(vf10, 112, a1);                           // sqc2 vf10, 112(a1)
  // nop                                            // sll r0, r0, 0
  c->sqc2(vf2, 128, a1);                            // sqc2 vf2, 128(a1)
  c->vadd(DEST::xyzw, vf3, vf3, vf27);              // vadd.xyzw vf3, vf3, vf27
  // nop                                            // sll r0, r0, 0
  // nop                                            // sll r0, r0, 0
  // nop                                            // sll r0, r0, 0
  // nop                                            // sll r0, r0, 0
  // nop                                            // sll r0, r0, 0
  // nop                                            // sll r0, r0, 0
  // nop                                            // sll r0, r0, 0
  c->vftoi4(DEST::xyzw, vf3, vf3);                  // vftoi4.xyzw vf3, vf3
  // nop                                            // sll r0, r0, 0
  c->vmulq(DEST::xyz, vf4, vf4);                    // vmulq.xyz vf4, vf4, Q
  // nop                                            // sll r0, r0, 0
  c->vmulq(DEST::xyz, vf8, vf8);                    // vmulq.xyz vf8, vf8, Q
  c->sqc2(vf7, 144, a1);                            // sqc2 vf7, 144(a1)
  // nop                                            // sll r0, r0, 0
  c->sqc2(vf11, 160, a1);                           // sqc2 vf11, 160(a1)
  c->vadd(DEST::xyzw, vf4, vf4, vf27);              // vadd.xyzw vf4, vf4, vf27
  c->sqc2(vf3, 176, a1);                            // sqc2 vf3, 176(a1)
  c->andi(t4, a0, 2);                               // andi t4, a0, 2
  // nop                                            // sll r0, r0, 0
  bc = c->sgpr64(t4) == 0;                          // beq t4, r0, L90
  // nop                                            // sll r0, r0, 0
  if (bc) {goto block_187;}                         // branch non-likely

  //beq r0, r0, L91                                 // beq r0, r0, L91
  c->vadd_bc(DEST::x, BC::w, vf23, vf23, vf19);     // vaddw.x vf23, vf23, vf19
  goto block_188;                                   // branch always


  block_187:
  // nop                                            // sll r0, r0, 0
  c->vadd_bc(DEST::x, BC::w, vf23, vf23, vf14);     // vaddw.x vf23, vf23, vf14

  block_188:
  c->vftoi4(DEST::xyzw, vf4, vf4);                  // vftoi4.xyzw vf4, vf4
  // nop                                            // sll r0, r0, 0
  // nop                                            // sll r0, r0, 0
  // nop                                            // sll r0, r0, 0
  // nop                                            // sll r0, r0, 0
  c->sqc2(vf8, 192, a1);                            // sqc2 vf8, 192(a1)
  // nop                                            // sll r0, r0, 0
  c->sqc2(vf12, 208, a1);                           // sqc2 vf12, 208(a1)
  // nop                                            // sll r0, r0, 0
  c->sqc2(vf4, 224, a1);                            // sqc2 vf4, 224(a1)
  //beq r0, r0, L72                                 // beq r0, r0, L72
  c->daddiu(a1, a1, 240);                           // daddiu a1, a1, 240
  goto block_132;                                   // branch always


  block_189:
  c->lw(v1, 3024, v1);                              // lw v1, 3024(v1)
  c->sw(a1, 4, v1);                                 // sw a1, 4(v1)
  c->lqc2(vf24, 12, a2);                            // lqc2 vf24, 12(a2)
  c->vsub(DEST::xyzw, vf23, vf23, vf24);            // vsub.xyzw vf23, vf23, vf24
  c->mov128_gpr_vf(v0, vf23);                       // qmfc2.i v0, vf23
  //jr ra                                           // jr ra
  c->daddu(sp, sp, r0);                             // daddu sp, sp, r0
  goto end_of_function;                             // return

  end_of_function:
  return c->gprs[v0].du64[0];
}

void link() {
  cache.font_work = intern_from_c("*font-work*").c();
  cache.font12_table = intern_from_c("*font12-table*").c();
  cache.font24_table = intern_from_c("*font24-table*").c();
  cache.math_camera = intern_from_c("*math-camera*").c();
  cache.video_parms = intern_from_c("*video-parms*").c();
  gLinkedFunctionTable.reg("draw-string", execute, 0);
}

} // namespace draw_string
} // namespace Mips2C
// clang-format on