mono_inst_name (int op)
{
  unsigned int op.0;
  unsigned int D.22558;
  const char * D.22561;
  int D.22562;
  short int D.22563;
  sizetype D.22564;

  op.0 = (unsigned int) op;
  D.22558 = op.0 + 4294966983;
  if (D.22558 <= 734) goto <D.22559>; else goto <D.22560>;
  <D.22559>:
  D.22562 = op + -313;
  D.22563 = opidx[D.22562];
  D.22564 = (sizetype) D.22563;
  D.22561 = &opstr + D.22564;
  return D.22561;
  <D.22560>:
  if (op <= 312) goto <D.22565>; else goto <D.22566>;
  <D.22565>:
  D.22561 = mono_opcode_name (op);
  return D.22561;
  <D.22566>:
  monoeg_g_log (0B, 4, "unknown opcode name for %d", op);
  <D.22519>:
  goto <D.22519>;
  D.22561 = 0B;
  return D.22561;
}


mono_blockset_print (struct MonoCompile * cfg, struct MonoBitSet * set, const char * name, guint idom)
{
  unsigned int i.1;
  struct MonoBasicBlock * * D.22573;
  unsigned int i.2;
  unsigned int D.22575;
  struct MonoBasicBlock * * D.22576;
  struct MonoBasicBlock * D.22577;
  int D.22578;
  unsigned int D.22580;
  int i;

  if (name != 0B) goto <D.22568>; else goto <D.22569>;
  <D.22568>:
  monoeg_g_print ("%s:", name);
  <D.22569>:
  i = mono_bitset_find_start (set);
  goto <D.22528>;
  <D.22527>:
  i.1 = (unsigned int) i;
  if (i.1 == idom) goto <D.22571>; else goto <D.22572>;
  <D.22571>:
  D.22573 = cfg->bblocks;
  i.2 = (unsigned int) i;
  D.22575 = i.2 * 4;
  D.22576 = D.22573 + D.22575;
  D.22577 = *D.22576;
  D.22578 = D.22577->block_num;
  monoeg_g_print (" [BB%d]", D.22578);
  goto <D.22579>;
  <D.22572>:
  D.22573 = cfg->bblocks;
  i.2 = (unsigned int) i;
  D.22575 = i.2 * 4;
  D.22576 = D.22573 + D.22575;
  D.22577 = *D.22576;
  D.22578 = D.22577->block_num;
  monoeg_g_print (" BB%d", D.22578);
  <D.22579>:
  i = mono_bitset_find_first (set, i);
  <D.22528>:
  i.1 = (unsigned int) i;
  D.22580 = cfg->num_bblocks;
  if (i.1 < D.22580) goto <D.22581>; else goto <D.22529>;
  <D.22581>:
  if (i >= 0) goto <D.22527>; else goto <D.22529>;
  <D.22529>:
  monoeg_g_print ("\n");
}


mono_disassemble_code (struct MonoCompile * cfg, guint8 * code, int size, char * id)
{
  _Bool D.22582;
  long int D.22583;
  long int D.22584;
  const short unsigned int * * D.22590;
  const short unsigned int * D.22591;
  sizetype i.3;
  char * D.22593;
  char D.22594;
  unsigned int D.22595;
  unsigned int D.22596;
  const short unsigned int * D.22597;
  short unsigned int D.22598;
  int D.22599;
  int D.22600;
  int D.22602;
  int D.22606;
  int D.22609;
  int D.22610;
  void * D.22611;
  int D.22612;
  void * D.22613;
  const void * i.4;
  void * D.22617;
  int D.22620;
  guint8 * D.22623;
  unsigned char D.22624;
  unsigned int D.22625;
  char * o_file.5;
  char * as_file.6;
  struct _IO_FILE * stdout.7;
  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.22582 = ofd == 0B;
      D.22583 = (long int) D.22582;
      D.22584 = __builtin_expect (D.22583, 0);
      if (D.22584 != 0) goto <D.22585>; else goto <D.22586>;
      <D.22585>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "helpers.c", 157, "ofd");
      <D.22586>:
      i = 0;
      goto <D.22547>;
      <D.22546>:
      if (i == 0) goto <D.22589>; else goto <D.22587>;
      <D.22589>:
      D.22590 = __ctype_b_loc ();
      D.22591 = *D.22590;
      i.3 = (sizetype) i;
      D.22593 = id + i.3;
      D.22594 = *D.22593;
      D.22595 = (unsigned int) D.22594;
      D.22596 = D.22595 * 2;
      D.22597 = D.22591 + D.22596;
      D.22598 = *D.22597;
      D.22599 = (int) D.22598;
      D.22600 = D.22599 & 2048;
      if (D.22600 != 0) goto <D.22601>; else goto <D.22587>;
      <D.22601>:
      fprintf (ofd, "_");
      goto <D.22588>;
      <D.22587>:
      D.22590 = __ctype_b_loc ();
      D.22591 = *D.22590;
      i.3 = (sizetype) i;
      D.22593 = id + i.3;
      D.22594 = *D.22593;
      D.22595 = (unsigned int) D.22594;
      D.22596 = D.22595 * 2;
      D.22597 = D.22591 + D.22596;
      D.22598 = *D.22597;
      D.22599 = (int) D.22598;
      D.22602 = D.22599 & 8;
      if (D.22602 == 0) goto <D.22603>; else goto <D.22604>;
      <D.22603>:
      fprintf (ofd, "_");
      goto <D.22605>;
      <D.22604>:
      i.3 = (sizetype) i;
      D.22593 = id + i.3;
      D.22594 = *D.22593;
      D.22606 = (int) D.22594;
      fprintf (ofd, "%c", D.22606);
      <D.22605>:
      <D.22588>:
      i = i + 1;
      <D.22547>:
      i.3 = (sizetype) i;
      D.22593 = id + i.3;
      D.22594 = *D.22593;
      if (D.22594 != 0) goto <D.22546>; else goto <D.22548>;
      <D.22548>:
      fprintf (ofd, ":\n");
      if (cfg != 0B) goto <D.22607>; else goto <D.22608>;
      <D.22607>:
      {
        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.22551>;
        <D.22550>:
        D.22609 = bb->block_num;
        D.22610 = D.22609 + 1;
        D.22611 = (void *) D.22610;
        D.22612 = bb->native_offset;
        D.22613 = (void *) D.22612;
        monoeg_g_hash_table_insert_replace (offset_to_bb_hash, D.22613, D.22611, 0);
        bb = bb->next_bb;
        <D.22551>:
        if (bb != 0B) goto <D.22550>; else goto <D.22552>;
        <D.22552>:
      }
      <D.22608>:
      cindex = 0;
      i = 0;
      goto <D.22554>;
      <D.22553>:
      if (cfg != 0B) goto <D.22614>; else goto <D.22615>;
      <D.22614>:
      i.4 = (const void *) i;
      D.22617 = monoeg_g_hash_table_lookup (offset_to_bb_hash, i.4);
      bb_num = (int) D.22617;
      if (bb_num != 0) goto <D.22618>; else goto <D.22619>;
      <D.22618>:
      D.22620 = bb_num + -1;
      fprintf (ofd, "\n.stabd 68,0,%d\n", D.22620);
      cindex = 0;
      <D.22619>:
      <D.22615>:
      if (cindex == 0) goto <D.22621>; else goto <D.22622>;
      <D.22621>:
      i.3 = (sizetype) i;
      D.22623 = code + i.3;
      D.22624 = *D.22623;
      D.22625 = (unsigned int) D.22624;
      fprintf (ofd, "\n.byte %d", D.22625);
      goto <D.22626>;
      <D.22622>:
      i.3 = (sizetype) i;
      D.22623 = code + i.3;
      D.22624 = *D.22623;
      D.22625 = (unsigned int) D.22624;
      fprintf (ofd, ",%d", D.22625);
      <D.22626>:
      cindex = cindex + 1;
      if (cindex == 64) goto <D.22627>; else goto <D.22628>;
      <D.22627>:
      cindex = 0;
      <D.22628>:
      i = i + 1;
      <D.22554>:
      if (i < size) goto <D.22553>; else goto <D.22555>;
      <D.22555>:
      fprintf (ofd, "\n");
      fclose (ofd);
      i = monoeg_g_file_open_tmp (0B, &o_file, 0B);
      close (i);
      o_file.5 = o_file;
      as_file.6 = as_file;
      cmd = monoeg_g_strdup_printf ("as -gstabs %s -o %s", as_file.6, o_file.5);
      unused = system (cmd);
      monoeg_g_free (cmd);
      if (objdump_args == 0B) goto <D.22631>; else goto <D.22632>;
      <D.22631>:
      objdump_args = "";
      <D.22632>:
      stdout.7 = stdout;
      fflush (stdout.7);
      o_file.5 = o_file;
      cmd = monoeg_g_strdup_printf ("objdump -l -d %s %s", objdump_args, o_file.5);
      unused = system (cmd);
      monoeg_g_free (cmd);
      o_file.5 = o_file;
      unlink (o_file.5);
      as_file.6 = as_file;
      unlink (as_file.6);
      o_file.5 = o_file;
      monoeg_g_free (o_file.5);
      as_file.6 = as_file;
      monoeg_g_free (as_file.6);
    }
  finally
    {
      as_file = {CLOBBER};
      o_file = {CLOBBER};
    }
}


fprintf (struct FILE * restrict __stream, const char * restrict __fmt)
{
  int D.22634;

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


