mono_inst_name (int op)
{
  unsigned int op.0;
  unsigned int D.24871;
  const char * D.24874;
  int D.24875;
  short int D.24876;
  sizetype D.24877;

  op.0 = (unsigned int) op;
  D.24871 = op.0 + 4294966983;
  if (D.24871 <= 533) goto <D.24872>; else goto <D.24873>;
  <D.24872>:
  D.24875 = op + -313;
  D.24876 = opidx[D.24875];
  D.24877 = (sizetype) D.24876;
  D.24874 = &opstr + D.24877;
  return D.24874;
  <D.24873>:
  if (op <= 312) goto <D.24878>; else goto <D.24879>;
  <D.24878>:
  D.24874 = mono_opcode_name (op);
  return D.24874;
  <D.24879>:
  monoeg_g_log (0B, 4, "unknown opcode name for %d", op);
  <D.24830>:
  goto <D.24830>;
  D.24874 = 0B;
  return D.24874;
}


mono_blockset_print (struct MonoCompile * cfg, struct MonoBitSet * set, const char * name, guint idom)
{
  unsigned int i.1;
  struct MonoBasicBlock * * D.24886;
  unsigned int i.2;
  unsigned int D.24888;
  struct MonoBasicBlock * * D.24889;
  struct MonoBasicBlock * D.24890;
  int D.24891;
  unsigned int D.24893;
  int i;

  if (name != 0B) goto <D.24881>; else goto <D.24882>;
  <D.24881>:
  monoeg_g_print ("%s:", name);
  <D.24882>:
  i = mono_bitset_find_start (set);
  goto <D.24839>;
  <D.24838>:
  i.1 = (unsigned int) i;
  if (i.1 == idom) goto <D.24884>; else goto <D.24885>;
  <D.24884>:
  D.24886 = cfg->bblocks;
  i.2 = (unsigned int) i;
  D.24888 = i.2 * 4;
  D.24889 = D.24886 + D.24888;
  D.24890 = *D.24889;
  D.24891 = D.24890->block_num;
  monoeg_g_print (" [BB%d]", D.24891);
  goto <D.24892>;
  <D.24885>:
  D.24886 = cfg->bblocks;
  i.2 = (unsigned int) i;
  D.24888 = i.2 * 4;
  D.24889 = D.24886 + D.24888;
  D.24890 = *D.24889;
  D.24891 = D.24890->block_num;
  monoeg_g_print (" BB%d", D.24891);
  <D.24892>:
  i = mono_bitset_find_first (set, i);
  <D.24839>:
  i.1 = (unsigned int) i;
  D.24893 = cfg->num_bblocks;
  if (i.1 < D.24893) goto <D.24894>; else goto <D.24840>;
  <D.24894>:
  if (i >= 0) goto <D.24838>; else goto <D.24840>;
  <D.24840>:
  monoeg_g_print ("\n");
}


mono_disassemble_code (struct MonoCompile * cfg, guint8 * code, int size, char * id)
{
  _Bool D.24895;
  long int D.24896;
  long int D.24897;
  const short unsigned int * * D.24903;
  const short unsigned int * D.24904;
  sizetype i.3;
  char * D.24906;
  char D.24907;
  unsigned int D.24908;
  unsigned int D.24909;
  const short unsigned int * D.24910;
  short unsigned int D.24911;
  int D.24912;
  int D.24913;
  int D.24915;
  int D.24919;
  int D.24922;
  void * D.24923;
  int D.24924;
  int D.24925;
  void * D.24926;
  const void * i.4;
  void * D.24930;
  int D.24933;
  guint8 * D.24936;
  unsigned char D.24937;
  unsigned int D.24938;
  char * as_file.5;
  char * o_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.24895 = ofd == 0B;
      D.24896 = (long int) D.24895;
      D.24897 = __builtin_expect (D.24896, 0);
      if (D.24897 != 0) goto <D.24898>; else goto <D.24899>;
      <D.24898>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "helpers.c", 157, "ofd");
      <D.24899>:
      i = 0;
      goto <D.24858>;
      <D.24857>:
      if (i == 0) goto <D.24902>; else goto <D.24900>;
      <D.24902>:
      D.24903 = __ctype_b_loc ();
      D.24904 = *D.24903;
      i.3 = (sizetype) i;
      D.24906 = id + i.3;
      D.24907 = *D.24906;
      D.24908 = (unsigned int) D.24907;
      D.24909 = D.24908 * 2;
      D.24910 = D.24904 + D.24909;
      D.24911 = *D.24910;
      D.24912 = (int) D.24911;
      D.24913 = D.24912 & 2048;
      if (D.24913 != 0) goto <D.24914>; else goto <D.24900>;
      <D.24914>:
      fprintf (ofd, "_");
      goto <D.24901>;
      <D.24900>:
      D.24903 = __ctype_b_loc ();
      D.24904 = *D.24903;
      i.3 = (sizetype) i;
      D.24906 = id + i.3;
      D.24907 = *D.24906;
      D.24908 = (unsigned int) D.24907;
      D.24909 = D.24908 * 2;
      D.24910 = D.24904 + D.24909;
      D.24911 = *D.24910;
      D.24912 = (int) D.24911;
      D.24915 = D.24912 & 8;
      if (D.24915 == 0) goto <D.24916>; else goto <D.24917>;
      <D.24916>:
      fprintf (ofd, "_");
      goto <D.24918>;
      <D.24917>:
      i.3 = (sizetype) i;
      D.24906 = id + i.3;
      D.24907 = *D.24906;
      D.24919 = (int) D.24907;
      fprintf (ofd, "%c", D.24919);
      <D.24918>:
      <D.24901>:
      i = i + 1;
      <D.24858>:
      i.3 = (sizetype) i;
      D.24906 = id + i.3;
      D.24907 = *D.24906;
      if (D.24907 != 0) goto <D.24857>; else goto <D.24859>;
      <D.24859>:
      fprintf (ofd, ":\n");
      if (0 != 0) goto <D.24920>; else goto <D.24921>;
      <D.24920>:
      {
        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.24862>;
        <D.24861>:
        D.24922 = bb->native_offset;
        D.24923 = (void *) D.24922;
        D.24924 = bb->block_num;
        D.24925 = D.24924 + 1;
        D.24926 = (void *) D.24925;
        monoeg_g_hash_table_insert_replace (offset_to_bb_hash, D.24923, D.24926, 0);
        bb = bb->next_bb;
        <D.24862>:
        if (bb != 0B) goto <D.24861>; else goto <D.24863>;
        <D.24863>:
      }
      <D.24921>:
      cindex = 0;
      i = 0;
      goto <D.24865>;
      <D.24864>:
      if (0 != 0) goto <D.24927>; else goto <D.24928>;
      <D.24927>:
      i.4 = (const void *) i;
      D.24930 = monoeg_g_hash_table_lookup (offset_to_bb_hash, i.4);
      bb_num = (int) D.24930;
      if (bb_num != 0) goto <D.24931>; else goto <D.24932>;
      <D.24931>:
      D.24933 = bb_num + -1;
      fprintf (ofd, "\n.stabd 68,0,%d\n", D.24933);
      cindex = 0;
      <D.24932>:
      <D.24928>:
      if (cindex == 0) goto <D.24934>; else goto <D.24935>;
      <D.24934>:
      i.3 = (sizetype) i;
      D.24936 = code + i.3;
      D.24937 = *D.24936;
      D.24938 = (unsigned int) D.24937;
      fprintf (ofd, "\n.byte %d", D.24938);
      goto <D.24939>;
      <D.24935>:
      i.3 = (sizetype) i;
      D.24936 = code + i.3;
      D.24937 = *D.24936;
      D.24938 = (unsigned int) D.24937;
      fprintf (ofd, ",%d", D.24938);
      <D.24939>:
      cindex = cindex + 1;
      if (cindex == 64) goto <D.24940>; else goto <D.24941>;
      <D.24940>:
      cindex = 0;
      <D.24941>:
      i = i + 1;
      <D.24865>:
      if (i < size) goto <D.24864>; else goto <D.24866>;
      <D.24866>:
      fprintf (ofd, "\n");
      fclose (ofd);
      i = monoeg_g_file_open_tmp (0B, &o_file, 0B);
      close (i);
      as_file.5 = as_file;
      o_file.6 = o_file;
      cmd = monoeg_g_strdup_printf ("as -gstabs %s -o %s", as_file.5, o_file.6);
      unused = system (cmd);
      monoeg_g_free (cmd);
      if (objdump_args == 0B) goto <D.24944>; else goto <D.24945>;
      <D.24944>:
      objdump_args = "";
      <D.24945>:
      stdout.7 = stdout;
      fflush (stdout.7);
      o_file.6 = o_file;
      cmd = monoeg_g_strdup_printf ("strip -x %s", o_file.6);
      unused = system (cmd);
      monoeg_g_free (cmd);
      o_file.6 = o_file;
      cmd = monoeg_g_strdup_printf ("objdump -d %s %s", objdump_args, o_file.6);
      unused = system (cmd);
      monoeg_g_free (cmd);
      o_file.6 = o_file;
      unlink (o_file.6);
      as_file.5 = as_file;
      unlink (as_file.5);
      o_file.6 = o_file;
      monoeg_g_free (o_file.6);
      as_file.5 = as_file;
      monoeg_g_free (as_file.5);
    }
  finally
    {
      as_file = {CLOBBER};
      o_file = {CLOBBER};
    }
}


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

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


