mono_inst_name (int op)
{
  unsigned int op.0;
  unsigned int D.22730;
  const char * D.22733;
  int D.22734;
  short int D.22735;
  sizetype D.22736;

  op.0 = (unsigned int) op;
  D.22730 = op.0 + 4294966983;
  if (D.22730 <= 548) goto <D.22731>; else goto <D.22732>;
  <D.22731>:
  D.22734 = op + -313;
  D.22735 = opidx[D.22734];
  D.22736 = (sizetype) D.22735;
  D.22733 = &opstr + D.22736;
  return D.22733;
  <D.22732>:
  if (op <= 312) goto <D.22737>; else goto <D.22738>;
  <D.22737>:
  D.22733 = mono_opcode_name (op);
  return D.22733;
  <D.22738>:
  monoeg_g_log (0B, 4, "unknown opcode name for %d", op);
  <D.22691>:
  goto <D.22691>;
  D.22733 = 0B;
  return D.22733;
}


__attribute__((visibility ("hidden")))
mono_blockset_print (struct MonoCompile * cfg, struct MonoBitSet * set, const char * name, guint idom)
{
  unsigned int i.1;
  struct MonoBasicBlock * * D.22745;
  long unsigned int D.22746;
  long unsigned int D.22747;
  struct MonoBasicBlock * * D.22748;
  struct MonoBasicBlock * D.22749;
  int D.22750;
  unsigned int D.22752;
  int i;

  if (name != 0B) goto <D.22740>; else goto <D.22741>;
  <D.22740>:
  monoeg_g_print ("%s:", name);
  <D.22741>:
  i = mono_bitset_find_start (set);
  goto <D.22700>;
  <D.22699>:
  i.1 = (unsigned int) i;
  if (idom == i.1) goto <D.22743>; else goto <D.22744>;
  <D.22743>:
  D.22745 = cfg->bblocks;
  D.22746 = (long unsigned int) i;
  D.22747 = D.22746 * 8;
  D.22748 = D.22745 + D.22747;
  D.22749 = *D.22748;
  D.22750 = D.22749->block_num;
  monoeg_g_print (" [BB%d]", D.22750);
  goto <D.22751>;
  <D.22744>:
  D.22745 = cfg->bblocks;
  D.22746 = (long unsigned int) i;
  D.22747 = D.22746 * 8;
  D.22748 = D.22745 + D.22747;
  D.22749 = *D.22748;
  D.22750 = D.22749->block_num;
  monoeg_g_print (" BB%d", D.22750);
  <D.22751>:
  i = mono_bitset_find_first (set, i);
  <D.22700>:
  D.22752 = cfg->num_bblocks;
  i.1 = (unsigned int) i;
  if (D.22752 > i.1) goto <D.22753>; else goto <D.22701>;
  <D.22753>:
  if (i >= 0) goto <D.22699>; else goto <D.22701>;
  <D.22701>:
  monoeg_g_print ("\n");
}


__attribute__((visibility ("hidden")))
mono_disassemble_code (struct MonoCompile * cfg, guint8 * code, int size, char * id)
{
  _Bool D.22754;
  long int D.22755;
  long int D.22756;
  const short unsigned int * * D.22762;
  const short unsigned int * D.22763;
  sizetype D.22764;
  char * D.22765;
  char D.22766;
  long unsigned int D.22767;
  long unsigned int D.22768;
  const short unsigned int * D.22769;
  short unsigned int D.22770;
  int D.22771;
  int D.22772;
  int D.22774;
  int D.22778;
  int D.22781;
  long int D.22782;
  void * D.22783;
  int D.22784;
  int D.22785;
  long int D.22786;
  void * D.22787;
  long int D.22790;
  const void * D.22791;
  void * D.22792;
  long int D.22793;
  int D.22796;
  guint8 * D.22799;
  unsigned char D.22800;
  unsigned int D.22801;
  char * as_file.2;
  char * o_file.3;
  struct _IO_FILE * stdout.4;
  struct GHashTable * offset_to_bb_hash;
  int i;
  int cindex;
  int bb_num;
  struct FILE * ofd;
  const char * objdump_args;
  char * as_file;
  char * o_file;
  char * cmd;
  int unused;

  try
    {
      offset_to_bb_hash = 0B;
      objdump_args = monoeg_g_getenv ("MONO_OBJDUMP_ARGS");
      i = monoeg_g_file_open_tmp (0B, &as_file, 0B);
      ofd = fdopen (i, "w");
      D.22754 = ofd == 0B;
      D.22755 = (long int) D.22754;
      D.22756 = __builtin_expect (D.22755, 0);
      if (D.22756 != 0) goto <D.22757>; else goto <D.22758>;
      <D.22757>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "helpers.c", 157, "ofd");
      <D.22758>:
      i = 0;
      goto <D.22719>;
      <D.22718>:
      if (i == 0) goto <D.22761>; else goto <D.22759>;
      <D.22761>:
      D.22762 = __ctype_b_loc ();
      D.22763 = *D.22762;
      D.22764 = (sizetype) i;
      D.22765 = id + D.22764;
      D.22766 = *D.22765;
      D.22767 = (long unsigned int) D.22766;
      D.22768 = D.22767 * 2;
      D.22769 = D.22763 + D.22768;
      D.22770 = *D.22769;
      D.22771 = (int) D.22770;
      D.22772 = D.22771 & 8;
      if (D.22772 != 0) goto <D.22773>; else goto <D.22759>;
      <D.22773>:
      fprintf (ofd, "_");
      goto <D.22760>;
      <D.22759>:
      D.22762 = __ctype_b_loc ();
      D.22763 = *D.22762;
      D.22764 = (sizetype) i;
      D.22765 = id + D.22764;
      D.22766 = *D.22765;
      D.22767 = (long unsigned int) D.22766;
      D.22768 = D.22767 * 2;
      D.22769 = D.22763 + D.22768;
      D.22770 = *D.22769;
      D.22771 = (int) D.22770;
      D.22774 = D.22771 & 2048;
      if (D.22774 == 0) goto <D.22775>; else goto <D.22776>;
      <D.22775>:
      fprintf (ofd, "_");
      goto <D.22777>;
      <D.22776>:
      D.22764 = (sizetype) i;
      D.22765 = id + D.22764;
      D.22766 = *D.22765;
      D.22778 = (int) D.22766;
      fprintf (ofd, "%c", D.22778);
      <D.22777>:
      <D.22760>:
      i = i + 1;
      <D.22719>:
      D.22764 = (sizetype) i;
      D.22765 = id + D.22764;
      D.22766 = *D.22765;
      if (D.22766 != 0) goto <D.22718>; else goto <D.22720>;
      <D.22720>:
      fprintf (ofd, ":\n");
      if (0 != 0) goto <D.22779>; else goto <D.22780>;
      <D.22779>:
      {
        struct MonoBasicBlock * bb;

        fprintf (ofd, ".stabs\t\"\",100,0,0,.Ltext0\n");
        fprintf (ofd, ".stabs\t\"<BB>\",100,0,0,.Ltext0\n");
        fprintf (ofd, ".Ltext0:\n");
        offset_to_bb_hash = monoeg_g_hash_table_new (0B, 0B);
        bb = cfg->bb_entry;
        goto <D.22723>;
        <D.22722>:
        D.22781 = bb->native_offset;
        D.22782 = (long int) D.22781;
        D.22783 = (void *) D.22782;
        D.22784 = bb->block_num;
        D.22785 = D.22784 + 1;
        D.22786 = (long int) D.22785;
        D.22787 = (void *) D.22786;
        monoeg_g_hash_table_insert_replace (offset_to_bb_hash, D.22783, D.22787, 0);
        bb = bb->next_bb;
        <D.22723>:
        if (bb != 0B) goto <D.22722>; else goto <D.22724>;
        <D.22724>:
      }
      <D.22780>:
      cindex = 0;
      i = 0;
      goto <D.22726>;
      <D.22725>:
      if (0 != 0) goto <D.22788>; else goto <D.22789>;
      <D.22788>:
      D.22790 = (long int) i;
      D.22791 = (const void *) D.22790;
      D.22792 = monoeg_g_hash_table_lookup (offset_to_bb_hash, D.22791);
      D.22793 = (long int) D.22792;
      bb_num = (int) D.22793;
      if (bb_num != 0) goto <D.22794>; else goto <D.22795>;
      <D.22794>:
      D.22796 = bb_num + -1;
      fprintf (ofd, "\n.stabd 68,0,%d\n", D.22796);
      cindex = 0;
      <D.22795>:
      <D.22789>:
      if (cindex == 0) goto <D.22797>; else goto <D.22798>;
      <D.22797>:
      D.22764 = (sizetype) i;
      D.22799 = code + D.22764;
      D.22800 = *D.22799;
      D.22801 = (unsigned int) D.22800;
      fprintf (ofd, "\n.byte %d", D.22801);
      goto <D.22802>;
      <D.22798>:
      D.22764 = (sizetype) i;
      D.22799 = code + D.22764;
      D.22800 = *D.22799;
      D.22801 = (unsigned int) D.22800;
      fprintf (ofd, ",%d", D.22801);
      <D.22802>:
      cindex = cindex + 1;
      if (cindex == 64) goto <D.22803>; else goto <D.22804>;
      <D.22803>:
      cindex = 0;
      <D.22804>:
      i = i + 1;
      <D.22726>:
      if (i < size) goto <D.22725>; else goto <D.22727>;
      <D.22727>:
      fprintf (ofd, "\n");
      fclose (ofd);
      i = monoeg_g_file_open_tmp (0B, &o_file, 0B);
      close (i);
      as_file.2 = as_file;
      o_file.3 = o_file;
      cmd = monoeg_g_strdup_printf ("as %s -o %s", as_file.2, o_file.3);
      unused = system (cmd);
      monoeg_g_free (cmd);
      if (objdump_args == 0B) goto <D.22807>; else goto <D.22808>;
      <D.22807>:
      objdump_args = "";
      <D.22808>:
      stdout.4 = stdout;
      fflush (stdout.4);
      o_file.3 = o_file;
      cmd = monoeg_g_strdup_printf ("objdump -d %s %s", objdump_args, o_file.3);
      unused = system (cmd);
      monoeg_g_free (cmd);
      o_file.3 = o_file;
      unlink (o_file.3);
      as_file.2 = as_file;
      unlink (as_file.2);
      o_file.3 = o_file;
      monoeg_g_free (o_file.3);
      as_file.2 = as_file;
      monoeg_g_free (as_file.2);
    }
  finally
    {
      as_file = {CLOBBER};
      o_file = {CLOBBER};
    }
}


__attribute__((__artificial__, __gnu_inline__, __always_inline__))
fprintf (struct FILE * restrict __stream, const char * restrict __fmt)
{
  int D.22810;

  D.22810 = __fprintf_chk (__stream, 1, __fmt, __builtin_va_arg_pack ());
  return D.22810;
}


