mono_inst_name (int op)
{
  unsigned int op.0;
  unsigned int D.22885;
  const char * D.22888;
  int D.22889;
  short int D.22890;
  sizetype D.22891;

  op.0 = (unsigned int) op;
  D.22885 = op.0 + 4294966983;
  if (D.22885 <= 533) goto <D.22886>; else goto <D.22887>;
  <D.22886>:
  D.22889 = op + -313;
  D.22890 = opidx[D.22889];
  D.22891 = (sizetype) D.22890;
  D.22888 = &opstr + D.22891;
  return D.22888;
  <D.22887>:
  if (op <= 312) goto <D.22892>; else goto <D.22893>;
  <D.22892>:
  D.22888 = mono_opcode_name (op);
  return D.22888;
  <D.22893>:
  monoeg_g_log (0B, 4, "unknown opcode name for %d", op);
  <D.22846>:
  goto <D.22846>;
  D.22888 = 0B;
  return D.22888;
}


mono_blockset_print (struct MonoCompile * cfg, struct MonoBitSet * set, const char * name, guint idom)
{
  unsigned int i.1;
  struct MonoBasicBlock * * D.22900;
  long unsigned int D.22901;
  long unsigned int D.22902;
  struct MonoBasicBlock * * D.22903;
  struct MonoBasicBlock * D.22904;
  int D.22905;
  unsigned int D.22907;
  int i;

  if (name != 0B) goto <D.22895>; else goto <D.22896>;
  <D.22895>:
  monoeg_g_print ("%s:", name);
  <D.22896>:
  i = mono_bitset_find_start (set);
  goto <D.22855>;
  <D.22854>:
  i.1 = (unsigned int) i;
  if (i.1 == idom) goto <D.22898>; else goto <D.22899>;
  <D.22898>:
  D.22900 = cfg->bblocks;
  D.22901 = (long unsigned int) i;
  D.22902 = D.22901 * 8;
  D.22903 = D.22900 + D.22902;
  D.22904 = *D.22903;
  D.22905 = D.22904->block_num;
  monoeg_g_print (" [BB%d]", D.22905);
  goto <D.22906>;
  <D.22899>:
  D.22900 = cfg->bblocks;
  D.22901 = (long unsigned int) i;
  D.22902 = D.22901 * 8;
  D.22903 = D.22900 + D.22902;
  D.22904 = *D.22903;
  D.22905 = D.22904->block_num;
  monoeg_g_print (" BB%d", D.22905);
  <D.22906>:
  i = mono_bitset_find_first (set, i);
  <D.22855>:
  i.1 = (unsigned int) i;
  D.22907 = cfg->num_bblocks;
  if (i.1 < D.22907) goto <D.22908>; else goto <D.22856>;
  <D.22908>:
  if (i >= 0) goto <D.22854>; else goto <D.22856>;
  <D.22856>:
  monoeg_g_print ("\n");
}


mono_disassemble_code (struct MonoCompile * cfg, guint8 * code, int size, char * id)
{
  _Bool D.22909;
  long int D.22910;
  long int D.22911;
  const short unsigned int * * D.22917;
  const short unsigned int * D.22918;
  sizetype D.22919;
  char * D.22920;
  char D.22921;
  long unsigned int D.22922;
  long unsigned int D.22923;
  const short unsigned int * D.22924;
  short unsigned int D.22925;
  int D.22926;
  int D.22927;
  int D.22929;
  int D.22933;
  int D.22936;
  long int D.22937;
  void * D.22938;
  int D.22939;
  int D.22940;
  long int D.22941;
  void * D.22942;
  long int D.22945;
  const void * D.22946;
  void * D.22947;
  long int D.22948;
  int D.22951;
  guint8 * D.22954;
  unsigned char D.22955;
  unsigned int D.22956;
  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.22909 = ofd == 0B;
      D.22910 = (long int) D.22909;
      D.22911 = __builtin_expect (D.22910, 0);
      if (D.22911 != 0) goto <D.22912>; else goto <D.22913>;
      <D.22912>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "helpers.c", 157, "ofd");
      <D.22913>:
      i = 0;
      goto <D.22874>;
      <D.22873>:
      if (i == 0) goto <D.22916>; else goto <D.22914>;
      <D.22916>:
      D.22917 = __ctype_b_loc ();
      D.22918 = *D.22917;
      D.22919 = (sizetype) i;
      D.22920 = id + D.22919;
      D.22921 = *D.22920;
      D.22922 = (long unsigned int) D.22921;
      D.22923 = D.22922 * 2;
      D.22924 = D.22918 + D.22923;
      D.22925 = *D.22924;
      D.22926 = (int) D.22925;
      D.22927 = D.22926 & 2048;
      if (D.22927 != 0) goto <D.22928>; else goto <D.22914>;
      <D.22928>:
      fprintf (ofd, "_");
      goto <D.22915>;
      <D.22914>:
      D.22917 = __ctype_b_loc ();
      D.22918 = *D.22917;
      D.22919 = (sizetype) i;
      D.22920 = id + D.22919;
      D.22921 = *D.22920;
      D.22922 = (long unsigned int) D.22921;
      D.22923 = D.22922 * 2;
      D.22924 = D.22918 + D.22923;
      D.22925 = *D.22924;
      D.22926 = (int) D.22925;
      D.22929 = D.22926 & 8;
      if (D.22929 == 0) goto <D.22930>; else goto <D.22931>;
      <D.22930>:
      fprintf (ofd, "_");
      goto <D.22932>;
      <D.22931>:
      D.22919 = (sizetype) i;
      D.22920 = id + D.22919;
      D.22921 = *D.22920;
      D.22933 = (int) D.22921;
      fprintf (ofd, "%c", D.22933);
      <D.22932>:
      <D.22915>:
      i = i + 1;
      <D.22874>:
      D.22919 = (sizetype) i;
      D.22920 = id + D.22919;
      D.22921 = *D.22920;
      if (D.22921 != 0) goto <D.22873>; else goto <D.22875>;
      <D.22875>:
      fprintf (ofd, ":\n");
      if (0 != 0) goto <D.22934>; else goto <D.22935>;
      <D.22934>:
      {
        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.22878>;
        <D.22877>:
        D.22936 = bb->native_offset;
        D.22937 = (long int) D.22936;
        D.22938 = (void *) D.22937;
        D.22939 = bb->block_num;
        D.22940 = D.22939 + 1;
        D.22941 = (long int) D.22940;
        D.22942 = (void *) D.22941;
        monoeg_g_hash_table_insert_replace (offset_to_bb_hash, D.22938, D.22942, 0);
        bb = bb->next_bb;
        <D.22878>:
        if (bb != 0B) goto <D.22877>; else goto <D.22879>;
        <D.22879>:
      }
      <D.22935>:
      cindex = 0;
      i = 0;
      goto <D.22881>;
      <D.22880>:
      if (0 != 0) goto <D.22943>; else goto <D.22944>;
      <D.22943>:
      D.22945 = (long int) i;
      D.22946 = (const void *) D.22945;
      D.22947 = monoeg_g_hash_table_lookup (offset_to_bb_hash, D.22946);
      D.22948 = (long int) D.22947;
      bb_num = (int) D.22948;
      if (bb_num != 0) goto <D.22949>; else goto <D.22950>;
      <D.22949>:
      D.22951 = bb_num + -1;
      fprintf (ofd, "\n.stabd 68,0,%d\n", D.22951);
      cindex = 0;
      <D.22950>:
      <D.22944>:
      if (cindex == 0) goto <D.22952>; else goto <D.22953>;
      <D.22952>:
      D.22919 = (sizetype) i;
      D.22954 = code + D.22919;
      D.22955 = *D.22954;
      D.22956 = (unsigned int) D.22955;
      fprintf (ofd, "\n.byte %d", D.22956);
      goto <D.22957>;
      <D.22953>:
      D.22919 = (sizetype) i;
      D.22954 = code + D.22919;
      D.22955 = *D.22954;
      D.22956 = (unsigned int) D.22955;
      fprintf (ofd, ",%d", D.22956);
      <D.22957>:
      cindex = cindex + 1;
      if (cindex == 64) goto <D.22958>; else goto <D.22959>;
      <D.22958>:
      cindex = 0;
      <D.22959>:
      i = i + 1;
      <D.22881>:
      if (i < size) goto <D.22880>; else goto <D.22882>;
      <D.22882>:
      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 -mppc64 %s -o %s", as_file.2, o_file.3);
      unused = system (cmd);
      monoeg_g_free (cmd);
      if (objdump_args == 0B) goto <D.22962>; else goto <D.22963>;
      <D.22962>:
      objdump_args = "";
      <D.22963>:
      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};
    }
}


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

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


