mono_inst_name (int op)
{
  unsigned int op.0;
  unsigned int D.23025;
  const char * D.23028;
  int D.23029;
  short int D.23030;
  sizetype D.23031;

  op.0 = (unsigned int) op;
  D.23025 = op.0 + 4294966983;
  if (D.23025 <= 763) goto <D.23026>; else goto <D.23027>;
  <D.23026>:
  D.23029 = op + -313;
  D.23030 = opidx[D.23029];
  D.23031 = (sizetype) D.23030;
  D.23028 = &opstr + D.23031;
  return D.23028;
  <D.23027>:
  if (op <= 312) goto <D.23032>; else goto <D.23033>;
  <D.23032>:
  D.23028 = mono_opcode_name (op);
  return D.23028;
  <D.23033>:
  monoeg_g_log (0B, 4, "unknown opcode name for %d", op);
  <D.22986>:
  goto <D.22986>;
  D.23028 = 0B;
  return D.23028;
}


mono_blockset_print (struct MonoCompile * cfg, struct MonoBitSet * set, const char * name, guint idom)
{
  unsigned int i.1;
  struct MonoBasicBlock * * D.23040;
  long unsigned int D.23041;
  long unsigned int D.23042;
  struct MonoBasicBlock * * D.23043;
  struct MonoBasicBlock * D.23044;
  int D.23045;
  unsigned int D.23047;
  int i;

  if (name != 0B) goto <D.23035>; else goto <D.23036>;
  <D.23035>:
  monoeg_g_print ("%s:", name);
  <D.23036>:
  i = mono_bitset_find_start (set);
  goto <D.22995>;
  <D.22994>:
  i.1 = (unsigned int) i;
  if (i.1 == idom) goto <D.23038>; else goto <D.23039>;
  <D.23038>:
  D.23040 = cfg->bblocks;
  D.23041 = (long unsigned int) i;
  D.23042 = D.23041 * 8;
  D.23043 = D.23040 + D.23042;
  D.23044 = *D.23043;
  D.23045 = D.23044->block_num;
  monoeg_g_print (" [BB%d]", D.23045);
  goto <D.23046>;
  <D.23039>:
  D.23040 = cfg->bblocks;
  D.23041 = (long unsigned int) i;
  D.23042 = D.23041 * 8;
  D.23043 = D.23040 + D.23042;
  D.23044 = *D.23043;
  D.23045 = D.23044->block_num;
  monoeg_g_print (" BB%d", D.23045);
  <D.23046>:
  i = mono_bitset_find_first (set, i);
  <D.22995>:
  i.1 = (unsigned int) i;
  D.23047 = cfg->num_bblocks;
  if (i.1 < D.23047) goto <D.23048>; else goto <D.22996>;
  <D.23048>:
  if (i >= 0) goto <D.22994>; else goto <D.22996>;
  <D.22996>:
  monoeg_g_print ("\n");
}


mono_disassemble_code (struct MonoCompile * cfg, guint8 * code, int size, char * id)
{
  _Bool D.23049;
  long int D.23050;
  long int D.23051;
  const short unsigned int * * D.23057;
  const short unsigned int * D.23058;
  sizetype D.23059;
  char * D.23060;
  char D.23061;
  long unsigned int D.23062;
  long unsigned int D.23063;
  const short unsigned int * D.23064;
  short unsigned int D.23065;
  int D.23066;
  int D.23067;
  int D.23069;
  int D.23073;
  int D.23076;
  int D.23077;
  long int D.23078;
  void * D.23079;
  int D.23080;
  long int D.23081;
  void * D.23082;
  long int D.23085;
  const void * D.23086;
  void * D.23087;
  long int D.23088;
  int D.23091;
  guint8 * D.23094;
  unsigned char D.23095;
  unsigned int D.23096;
  char * o_file.2;
  char * as_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.23049 = ofd == 0B;
      D.23050 = (long int) D.23049;
      D.23051 = __builtin_expect (D.23050, 0);
      if (D.23051 != 0) goto <D.23052>; else goto <D.23053>;
      <D.23052>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "helpers.c", 157, "ofd");
      <D.23053>:
      i = 0;
      goto <D.23014>;
      <D.23013>:
      if (i == 0) goto <D.23056>; else goto <D.23054>;
      <D.23056>:
      D.23057 = __ctype_b_loc ();
      D.23058 = *D.23057;
      D.23059 = (sizetype) i;
      D.23060 = id + D.23059;
      D.23061 = *D.23060;
      D.23062 = (long unsigned int) D.23061;
      D.23063 = D.23062 * 2;
      D.23064 = D.23058 + D.23063;
      D.23065 = *D.23064;
      D.23066 = (int) D.23065;
      D.23067 = D.23066 & 2048;
      if (D.23067 != 0) goto <D.23068>; else goto <D.23054>;
      <D.23068>:
      fprintf (ofd, "_");
      goto <D.23055>;
      <D.23054>:
      D.23057 = __ctype_b_loc ();
      D.23058 = *D.23057;
      D.23059 = (sizetype) i;
      D.23060 = id + D.23059;
      D.23061 = *D.23060;
      D.23062 = (long unsigned int) D.23061;
      D.23063 = D.23062 * 2;
      D.23064 = D.23058 + D.23063;
      D.23065 = *D.23064;
      D.23066 = (int) D.23065;
      D.23069 = D.23066 & 8;
      if (D.23069 == 0) goto <D.23070>; else goto <D.23071>;
      <D.23070>:
      fprintf (ofd, "_");
      goto <D.23072>;
      <D.23071>:
      D.23059 = (sizetype) i;
      D.23060 = id + D.23059;
      D.23061 = *D.23060;
      D.23073 = (int) D.23061;
      fprintf (ofd, "%c", D.23073);
      <D.23072>:
      <D.23055>:
      i = i + 1;
      <D.23014>:
      D.23059 = (sizetype) i;
      D.23060 = id + D.23059;
      D.23061 = *D.23060;
      if (D.23061 != 0) goto <D.23013>; else goto <D.23015>;
      <D.23015>:
      fprintf (ofd, ":\n");
      if (cfg != 0B) goto <D.23074>; else goto <D.23075>;
      <D.23074>:
      {
        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.23018>;
        <D.23017>:
        D.23076 = bb->block_num;
        D.23077 = D.23076 + 1;
        D.23078 = (long int) D.23077;
        D.23079 = (void *) D.23078;
        D.23080 = bb->native_offset;
        D.23081 = (long int) D.23080;
        D.23082 = (void *) D.23081;
        monoeg_g_hash_table_insert_replace (offset_to_bb_hash, D.23082, D.23079, 0);
        bb = bb->next_bb;
        <D.23018>:
        if (bb != 0B) goto <D.23017>; else goto <D.23019>;
        <D.23019>:
      }
      <D.23075>:
      cindex = 0;
      i = 0;
      goto <D.23021>;
      <D.23020>:
      if (cfg != 0B) goto <D.23083>; else goto <D.23084>;
      <D.23083>:
      D.23085 = (long int) i;
      D.23086 = (const void *) D.23085;
      D.23087 = monoeg_g_hash_table_lookup (offset_to_bb_hash, D.23086);
      D.23088 = (long int) D.23087;
      bb_num = (int) D.23088;
      if (bb_num != 0) goto <D.23089>; else goto <D.23090>;
      <D.23089>:
      D.23091 = bb_num + -1;
      fprintf (ofd, "\n.stabd 68,0,%d\n", D.23091);
      cindex = 0;
      <D.23090>:
      <D.23084>:
      if (cindex == 0) goto <D.23092>; else goto <D.23093>;
      <D.23092>:
      D.23059 = (sizetype) i;
      D.23094 = code + D.23059;
      D.23095 = *D.23094;
      D.23096 = (unsigned int) D.23095;
      fprintf (ofd, "\n.byte %d", D.23096);
      goto <D.23097>;
      <D.23093>:
      D.23059 = (sizetype) i;
      D.23094 = code + D.23059;
      D.23095 = *D.23094;
      D.23096 = (unsigned int) D.23095;
      fprintf (ofd, ",%d", D.23096);
      <D.23097>:
      cindex = cindex + 1;
      if (cindex == 64) goto <D.23098>; else goto <D.23099>;
      <D.23098>:
      cindex = 0;
      <D.23099>:
      i = i + 1;
      <D.23021>:
      if (i < size) goto <D.23020>; else goto <D.23022>;
      <D.23022>:
      fprintf (ofd, "\n");
      fclose (ofd);
      i = monoeg_g_file_open_tmp (0B, &o_file, 0B);
      close (i);
      o_file.2 = o_file;
      as_file.3 = as_file;
      cmd = monoeg_g_strdup_printf ("as -gstabs %s -o %s", as_file.3, o_file.2);
      unused = system (cmd);
      monoeg_g_free (cmd);
      if (objdump_args == 0B) goto <D.23102>; else goto <D.23103>;
      <D.23102>:
      objdump_args = "";
      <D.23103>:
      stdout.4 = stdout;
      fflush (stdout.4);
      o_file.2 = o_file;
      cmd = monoeg_g_strdup_printf ("objdump -l -d %s %s", objdump_args, o_file.2);
      unused = system (cmd);
      monoeg_g_free (cmd);
      o_file.2 = o_file;
      unlink (o_file.2);
      as_file.3 = as_file;
      unlink (as_file.3);
      o_file.2 = o_file;
      monoeg_g_free (o_file.2);
      as_file.3 = as_file;
      monoeg_g_free (as_file.3);
    }
  finally
    {
      as_file = {CLOBBER};
      o_file = {CLOBBER};
    }
}


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

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


