disassemble_cil (struct MonoImage * m, struct MonoMethodHeader * mh, struct MonoGenericContainer * container)
{
  unsigned int D.16054;
  sizetype D.16055;
  long unsigned int D.16062;
  long unsigned int D.16063;
  <unnamed-unsigned:15> D.16066;
  long unsigned int D.16067;
  long unsigned int D.16068;
  long unsigned int D.16069;
  long unsigned int D.16070;
  gboolean * D.16071;
  struct MonoExceptionClause * D.16072;
  long unsigned int D.16073;
  struct MonoExceptionClause * D.16074;
  unsigned int D.16075;
  long unsigned int D.16076;
  long unsigned int D.16077;
  struct MonoExceptionClause * D.16078;
  unsigned int D.16079;
  unsigned int D.16082;
  unsigned int D.16083;
  int D.16086;
  sizetype D.16087;
  const unsigned char * D.16088;
  int D.16091;
  struct FILE * output.0;
  _Bool D.16095;
  long int D.16096;
  long int D.16097;
  int D.16100;
  int D.16101;
  unsigned int D.16102;
  sizetype D.16103;
  const unsigned char * D.16104;
  unsigned int D.16107;
  _Bool D.16110;
  long int D.16111;
  long int D.16112;
  char * iftmp.1;
  struct MonoClass * D.16120;
  const char * D.16121;
  unsigned int D.16128;
  sizetype D.16129;
  const unsigned char * D.16130;
  const char * D.16133;
  long int ptr.2;
  long int start.3;
  long int D.16138;
  int D.16139;
  unsigned char D.16140;
  int D.16143;
  short unsigned int D.16147;
  const char * D.16149;
  unsigned char D.16150;
  int D.16151;
  unsigned int D.16152;
  int D.16153;
  int D.16154;
  long unsigned int D.16155;
  double r.4;
  double r.5;
  int D.16164;
  unsigned int D.16168;
  const char * us_ptr.6;
  const char * us_ptr.7;
  unsigned int D.16171;
  long unsigned int D.16172;
  long unsigned int D.16173;
  const char * iftmp.8;
  long int endswitch.9;
  long int D.16181;
  unsigned int D.16182;
  unsigned int D.16183;
  int D.16184;
  const char * iftmp.10;
  unsigned int D.16186;
  int D.16192;
  unsigned int D.16193;
  unsigned int D.16194;
  unsigned int D.16195;
  unsigned int D.16196;
  int D.16197;
  int D.16198;
  float f.11;
  float f.12;
  double D.16201;
  int D.16208;
  int D.16212;
  sizetype D.16213;
  sizetype D.16214;
  const unsigned char * D.16215;
  unsigned int D.16222;
  sizetype D.16223;
  sizetype D.16224;
  const unsigned char * D.16225;
  const unsigned char * start;
  int size;
  const unsigned char * end;
  const unsigned char * ptr;
  const struct MonoOpcode * entry;
  char indent[1024];
  int i;
  int j;
  int indent_level;
  gboolean in_fault;
  const char * clause_names[5];
  gboolean * trys;

  try
    {
      start = mh->code;
      D.16054 = mh->code_size;
      size = (int) D.16054;
      D.16055 = (sizetype) size;
      end = start + D.16055;
      ptr = start;
      indent_level = 0;
      in_fault = 0;
      clause_names = *.LC5;
      trys = 0B;
      indent[0] = 0;
      D.16062 = BIT_FIELD_REF <*mh, 64, 64>;
      D.16063 = D.16062 & 9223090561878065152;
      if (D.16063 != 0) goto <D.16064>; else goto <D.16065>;
      <D.16064>:
      D.16066 = mh->num_clauses;
      D.16067 = (long unsigned int) D.16066;
      D.16068 = D.16067 * 4;
      trys = monoeg_malloc0 (D.16068);
      *trys = 1;
      i = 1;
      goto <D.15988>;
      <D.15987>:
      D.16069 = (long unsigned int) i;
      D.16070 = D.16069 * 4;
      D.16071 = trys + D.16070;
      *D.16071 = 1;
      j = 0;
      goto <D.15986>;
      <D.15985>:
      D.16072 = mh->clauses;
      D.16069 = (long unsigned int) i;
      D.16073 = D.16069 * 32;
      D.16074 = D.16072 + D.16073;
      D.16075 = D.16074->try_offset;
      D.16072 = mh->clauses;
      D.16076 = (long unsigned int) j;
      D.16077 = D.16076 * 32;
      D.16078 = D.16072 + D.16077;
      D.16079 = D.16078->try_offset;
      if (D.16075 == D.16079) goto <D.16080>; else goto <D.16081>;
      <D.16080>:
      D.16072 = mh->clauses;
      D.16069 = (long unsigned int) i;
      D.16073 = D.16069 * 32;
      D.16074 = D.16072 + D.16073;
      D.16082 = D.16074->try_len;
      D.16072 = mh->clauses;
      D.16076 = (long unsigned int) j;
      D.16077 = D.16076 * 32;
      D.16078 = D.16072 + D.16077;
      D.16083 = D.16078->try_len;
      if (D.16082 == D.16083) goto <D.16084>; else goto <D.16085>;
      <D.16084>:
      D.16069 = (long unsigned int) i;
      D.16070 = D.16069 * 4;
      D.16071 = trys + D.16070;
      *D.16071 = 0;
      goto <D.15984>;
      <D.16085>:
      <D.16081>:
      j = j + 1;
      <D.15986>:
      if (j < i) goto <D.15985>; else goto <D.15984>;
      <D.15984>:
      i = i + 1;
      <D.15988>:
      D.16066 = mh->num_clauses;
      D.16086 = (int) D.16066;
      if (D.16086 > i) goto <D.15987>; else goto <D.15989>;
      <D.15989>:
      <D.16065>:
      goto <D.16051>;
      <D.16050>:
      D.16066 = mh->num_clauses;
      D.16086 = (int) D.16066;
      i = D.16086 + -1;
      goto <D.15992>;
      <D.15991>:
      D.16072 = mh->clauses;
      D.16069 = (long unsigned int) i;
      D.16073 = D.16069 * 32;
      D.16074 = D.16072 + D.16073;
      D.16075 = D.16074->try_offset;
      D.16087 = (sizetype) D.16075;
      D.16088 = start + D.16087;
      if (D.16088 == ptr) goto <D.16089>; else goto <D.16090>;
      <D.16089>:
      D.16069 = (long unsigned int) i;
      D.16070 = D.16069 * 4;
      D.16071 = trys + D.16070;
      D.16091 = *D.16071;
      if (D.16091 != 0) goto <D.16092>; else goto <D.16093>;
      <D.16092>:
      output.0 = output;
      fprintf (output.0, "\t%s.try { // %d\n", &indent, i);
      D.16095 = indent_level > 511;
      D.16096 = (long int) D.16095;
      D.16097 = __builtin_expect (D.16096, 0);
      if (D.16097 != 0) goto <D.16098>; else goto <D.16099>;
      <D.16098>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "dis-cil.c", 80, "indent_level < 512");
      <D.16099>:
      D.16100 = indent_level * 2;
      indent[D.16100] = 32;
      D.16100 = indent_level * 2;
      D.16101 = D.16100 + 1;
      indent[D.16101] = 32;
      indent_level = indent_level + 1;
      D.16100 = indent_level * 2;
      indent[D.16100] = 0;
      <D.16093>:
      <D.16090>:
      D.16072 = mh->clauses;
      D.16069 = (long unsigned int) i;
      D.16073 = D.16069 * 32;
      D.16074 = D.16072 + D.16073;
      D.16102 = D.16074->handler_offset;
      D.16103 = (sizetype) D.16102;
      D.16104 = start + D.16103;
      if (D.16104 == ptr) goto <D.16105>; else goto <D.16106>;
      <D.16105>:
      D.16072 = mh->clauses;
      D.16069 = (long unsigned int) i;
      D.16073 = D.16069 * 32;
      D.16074 = D.16072 + D.16073;
      D.16107 = D.16074->flags;
      if (D.16107 == 1) goto <D.16108>; else goto <D.16109>;
      <D.16108>:
      D.16110 = indent_level == 0;
      D.16111 = (long int) D.16110;
      D.16112 = __builtin_expect (D.16111, 0);
      if (D.16112 != 0) goto <D.16113>; else goto <D.16114>;
      <D.16113>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "dis-cil.c", 85, "indent_level");
      <D.16114>:
      indent_level = indent_level + -1;
      D.16100 = indent_level * 2;
      indent[D.16100] = 0;
      output.0 = output;
      fprintf (output.0, "\t%s} { // %d\n", &indent, i);
      goto <D.16115>;
      <D.16109>:
      {
        char * klass;

        D.16072 = mh->clauses;
        D.16069 = (long unsigned int) i;
        D.16073 = D.16069 * 32;
        D.16074 = D.16072 + D.16073;
        D.16107 = D.16074->flags;
        if (D.16107 != 0) goto <D.16117>; else goto <D.16118>;
        <D.16117>:
        iftmp.1 = monoeg_strdup ("");
        goto <D.16119>;
        <D.16118>:
        D.16072 = mh->clauses;
        D.16069 = (long unsigned int) i;
        D.16073 = D.16069 * 32;
        D.16074 = D.16072 + D.16073;
        D.16120 = D.16074->data.catch_class;
        iftmp.1 = dis_stringify_object_with_class (m, D.16120, 1, 0);
        <D.16119>:
        klass = iftmp.1;
        output.0 = output;
        D.16072 = mh->clauses;
        D.16069 = (long unsigned int) i;
        D.16073 = D.16069 * 32;
        D.16074 = D.16072 + D.16073;
        D.16107 = D.16074->flags;
        D.16121 = clause_names[D.16107];
        fprintf (output.0, "\t%s%s %s { // %d\n", &indent, D.16121, klass, i);
        monoeg_g_free (klass);
      }
      <D.16115>:
      D.16095 = indent_level > 511;
      D.16096 = (long int) D.16095;
      D.16097 = __builtin_expect (D.16096, 0);
      if (D.16097 != 0) goto <D.16122>; else goto <D.16123>;
      <D.16122>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "dis-cil.c", 95, "indent_level < 512");
      <D.16123>:
      D.16100 = indent_level * 2;
      indent[D.16100] = 32;
      D.16100 = indent_level * 2;
      D.16101 = D.16100 + 1;
      indent[D.16101] = 32;
      indent_level = indent_level + 1;
      D.16100 = indent_level * 2;
      indent[D.16100] = 0;
      D.16072 = mh->clauses;
      D.16069 = (long unsigned int) i;
      D.16073 = D.16069 * 32;
      D.16074 = D.16072 + D.16073;
      D.16107 = D.16074->flags;
      if (D.16107 == 4) goto <D.16124>; else goto <D.16125>;
      <D.16124>:
      in_fault = 1;
      <D.16125>:
      <D.16106>:
      D.16072 = mh->clauses;
      D.16069 = (long unsigned int) i;
      D.16073 = D.16069 * 32;
      D.16074 = D.16072 + D.16073;
      D.16107 = D.16074->flags;
      if (D.16107 == 1) goto <D.16126>; else goto <D.16127>;
      <D.16126>:
      D.16072 = mh->clauses;
      D.16069 = (long unsigned int) i;
      D.16073 = D.16069 * 32;
      D.16074 = D.16072 + D.16073;
      D.16128 = D.16074->data.filter_offset;
      D.16129 = (sizetype) D.16128;
      D.16130 = start + D.16129;
      if (D.16130 == ptr) goto <D.16131>; else goto <D.16132>;
      <D.16131>:
      output.0 = output;
      D.16133 = clause_names[1];
      fprintf (output.0, "\t%s%s {\n", &indent, D.16133);
      D.16095 = indent_level > 511;
      D.16096 = (long int) D.16095;
      D.16097 = __builtin_expect (D.16096, 0);
      if (D.16097 != 0) goto <D.16134>; else goto <D.16135>;
      <D.16134>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "dis-cil.c", 101, "indent_level < 512");
      <D.16135>:
      D.16100 = indent_level * 2;
      indent[D.16100] = 32;
      D.16100 = indent_level * 2;
      D.16101 = D.16100 + 1;
      indent[D.16101] = 32;
      indent_level = indent_level + 1;
      D.16100 = indent_level * 2;
      indent[D.16100] = 0;
      <D.16132>:
      <D.16127>:
      i = i + -1;
      <D.15992>:
      if (i >= 0) goto <D.15991>; else goto <D.15993>;
      <D.15993>:
      output.0 = output;
      ptr.2 = (long int) ptr;
      start.3 = (long int) start;
      D.16138 = ptr.2 - start.3;
      D.16139 = (int) D.16138;
      fprintf (output.0, "\t%sIL_%04x: ", &indent, D.16139);
      D.16140 = *ptr;
      i = (int) D.16140;
      D.16140 = *ptr;
      if (D.16140 == 254) goto <D.16141>; else goto <D.16142>;
      <D.16141>:
      ptr = ptr + 1;
      D.16140 = *ptr;
      D.16143 = (int) D.16140;
      i = D.16143 + 256;
      <D.16142>:
      entry = &mono_opcodes[i];
      if (in_fault != 0) goto <D.16146>; else goto <D.16144>;
      <D.16146>:
      D.16147 = entry->opval;
      if (D.16147 == 220) goto <D.16148>; else goto <D.16144>;
      <D.16148>:
      output.0 = output;
      fprintf (output.0, " %s", "endfault");
      goto <D.16145>;
      <D.16144>:
      output.0 = output;
      D.16149 = mono_opcode_name (i);
      fprintf (output.0, " %s ", D.16149);
      <D.16145>:
      ptr = ptr + 1;
      D.16150 = entry->argument;
      D.16151 = (int) D.16150;
      switch (D.16151) <default: <D.16046>, case 0: <D.16007>, case 1: <D.16030>, case 2: <D.15997>, case 3: <D.16004>, case 4: <D.16027>, case 5: <D.16015>, case 6: <D.16013>, case 7: <D.16033>, case 8: <D.16044>, case 9: <D.15994>, case 10: <D.16035>, case 11: <D.16020>, case 12: <D.16008>, case 13: <D.16039>, case 14: <D.16000>, case 15: <D.16037>, case 16: <D.16002>>
      <D.15994>:
      {
        gint target;

        D.16152 = MEM[(const guint32 *)ptr];
        target = (gint) D.16152;
        output.0 = output;
        ptr.2 = (long int) ptr;
        start.3 = (long int) start;
        D.16138 = ptr.2 - start.3;
        D.16139 = (int) D.16138;
        D.16153 = D.16139 + 4;
        D.16154 = D.16153 + target;
        fprintf (output.0, "IL_%04x\n", D.16154);
        ptr = ptr + 4;
        goto <D.15996>;
      }
      <D.15997>:
      {
        guint32 token;
        char * s;

        token = MEM[(const guint32 *)ptr];
        s = get_field (m, token, container);
        output.0 = output;
        fprintf (output.0, "%s", s);
        monoeg_g_free (s);
        ptr = ptr + 4;
        goto <D.15996>;
      }
      <D.16000>:
      {
        int value;

        D.16152 = MEM[(const guint32 *)ptr];
        value = (int) D.16152;
        output.0 = output;
        fprintf (output.0, "%d", value);
        ptr = ptr + 4;
        goto <D.15996>;
      }
      <D.16002>:
      {
        gint64 top;

        D.16155 = MEM[(const guint64 *)ptr];
        top = (gint64) D.16155;
        output.0 = output;
        fprintf (output.0, "0x%llx", top);
        ptr = ptr + 8;
        goto <D.15996>;
      }
      <D.16004>:
      {
        guint32 token;
        char * s;

        token = MEM[(const guint32 *)ptr];
        s = get_method (m, token, container);
        output.0 = output;
        fprintf (output.0, "%s", s);
        monoeg_g_free (s);
        ptr = ptr + 4;
        goto <D.15996>;
      }
      <D.16007>:
      goto <D.15996>;
      <D.16008>:
      {
        double r;
        int inf;

        try
          {
            {
              union mono_rdouble mf;

              try
                {
                  D.16155 = MEM[(const guint64 *)ptr];
                  mf.ival = D.16155;
                  r.4 = mf.fval;
                  r = r.4;
                }
              finally
                {
                  mf = {CLOBBER};
                }
            }
            r.5 = r;
            inf = dis_isinf (r.5);
            if (inf == -1) goto <D.16158>; else goto <D.16159>;
            <D.16158>:
            output.0 = output;
            fprintf (output.0, "(00 00 00 00 00 00 f0 ff)");
            goto <D.16160>;
            <D.16159>:
            if (inf == 1) goto <D.16161>; else goto <D.16162>;
            <D.16161>:
            output.0 = output;
            fprintf (output.0, "(00 00 00 00 00 00 f0 7f)");
            goto <D.16163>;
            <D.16162>:
            r.5 = r;
            D.16164 = dis_isnan (r.5);
            if (D.16164 != 0) goto <D.16165>; else goto <D.16166>;
            <D.16165>:
            output.0 = output;
            fprintf (output.0, "(00 00 00 00 00 00 f8 ff)");
            goto <D.16167>;
            <D.16166>:
            {
              char * str;

              r.5 = r;
              str = stringify_double (r.5);
              output.0 = output;
              fprintf (output.0, "%s", str);
              monoeg_g_free (str);
            }
            <D.16167>:
            <D.16163>:
            <D.16160>:
            ptr = ptr + 8;
            goto <D.15996>;
          }
        finally
          {
            r = {CLOBBER};
          }
      }
      <D.16013>:
      {
        guint32 token;

        token = MEM[(const guint32 *)ptr];
        output.0 = output;
        fprintf (output.0, "signature-0x%08x", token);
        ptr = ptr + 4;
        goto <D.15996>;
      }
      <D.16015>:
      {
        guint32 token;
        const char * us_ptr;
        int len;
        char * s;

        try
          {
            token = MEM[(const guint32 *)ptr];
            D.16168 = token & 16777215;
            us_ptr.6 = mono_metadata_user_string (m, D.16168);
            us_ptr = us_ptr.6;
            us_ptr.7 = us_ptr;
            D.16171 = mono_metadata_decode_blob_size (us_ptr.7, &us_ptr);
            len = (int) D.16171;
            us_ptr.7 = us_ptr;
            s = get_encoded_user_string_or_bytearray (us_ptr.7, len);
            output.0 = output;
            fprintf (output.0, "%s", s);
            monoeg_g_free (s);
            ptr = ptr + 4;
            goto <D.15996>;
          }
        finally
          {
            us_ptr = {CLOBBER};
          }
      }
      <D.16020>:
      {
        guint32 count;
        const unsigned char * endswitch;
        guint32 n;

        count = MEM[(const guint32 *)ptr];
        ptr = ptr + 4;
        D.16172 = (long unsigned int) count;
        D.16173 = D.16172 * 4;
        endswitch = ptr + D.16173;
        output.0 = output;
        if (count != 0) goto <D.16175>; else goto <D.16176>;
        <D.16175>:
        iftmp.8 = "(\n";
        goto <D.16177>;
        <D.16176>:
        iftmp.8 = "( )";
        <D.16177>:
        fprintf (output.0, iftmp.8);
        D.16095 = indent_level > 511;
        D.16096 = (long int) D.16095;
        D.16097 = __builtin_expect (D.16096, 0);
        if (D.16097 != 0) goto <D.16178>; else goto <D.16179>;
        <D.16178>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "dis-cil.c", 217, "indent_level < 512");
        <D.16179>:
        D.16100 = indent_level * 2;
        indent[D.16100] = 32;
        D.16100 = indent_level * 2;
        D.16101 = D.16100 + 1;
        indent[D.16101] = 32;
        indent_level = indent_level + 1;
        D.16100 = indent_level * 2;
        indent[D.16100] = 0;
        n = 0;
        goto <D.16025>;
        <D.16024>:
        output.0 = output;
        endswitch.9 = (long int) endswitch;
        start.3 = (long int) start;
        D.16181 = endswitch.9 - start.3;
        D.16182 = (unsigned int) D.16181;
        D.16152 = MEM[(const guint32 *)ptr];
        D.16183 = D.16182 + D.16152;
        D.16184 = (int) D.16183;
        D.16186 = count + 4294967295;
        if (D.16186 == n) goto <D.16187>; else goto <D.16188>;
        <D.16187>:
        iftmp.10 = ")";
        goto <D.16189>;
        <D.16188>:
        iftmp.10 = ",\n";
        <D.16189>:
        fprintf (output.0, "\t%sIL_%04x%s", &indent, D.16184, iftmp.10);
        ptr = ptr + 4;
        n = n + 1;
        <D.16025>:
        if (n < count) goto <D.16024>; else goto <D.16026>;
        <D.16026>:
        D.16110 = indent_level == 0;
        D.16111 = (long int) D.16110;
        D.16112 = __builtin_expect (D.16111, 0);
        if (D.16112 != 0) goto <D.16190>; else goto <D.16191>;
        <D.16190>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "dis-cil.c", 224, "indent_level");
        <D.16191>:
        indent_level = indent_level + -1;
        D.16100 = indent_level * 2;
        indent[D.16100] = 0;
        goto <D.15996>;
      }
      <D.16027>:
      {
        guint32 token;
        char * s;

        token = MEM[(const guint32 *)ptr];
        s = get_token (m, token, container);
        output.0 = output;
        fprintf (output.0, "%s", s);
        monoeg_g_free (s);
        ptr = ptr + 4;
        goto <D.15996>;
      }
      <D.16030>:
      {
        guint32 token;
        char * s;

        token = MEM[(const guint32 *)ptr];
        s = get_token_type (m, token, container);
        output.0 = output;
        fprintf (output.0, "%s", s);
        monoeg_g_free (s);
        ptr = ptr + 4;
        goto <D.15996>;
      }
      <D.16033>:
      {
        guint16 var_idx;

        var_idx = MEM[(const guint16 *)ptr];
        output.0 = output;
        D.16192 = (int) var_idx;
        fprintf (output.0, "%d\n", D.16192);
        ptr = ptr + 2;
        goto <D.15996>;
      }
      <D.16035>:
      {
        signed char x;

        D.16140 = *ptr;
        x = (signed char) D.16140;
        output.0 = output;
        ptr.2 = (long int) ptr;
        start.3 = (long int) start;
        D.16138 = ptr.2 - start.3;
        D.16193 = (unsigned int) D.16138;
        D.16194 = (unsigned int) x;
        D.16195 = D.16193 + D.16194;
        D.16196 = D.16195 + 1;
        D.16197 = (int) D.16196;
        fprintf (output.0, "IL_%04x\n", D.16197);
        ptr = ptr + 1;
        goto <D.15996>;
      }
      <D.16037>:
      {
        char x;

        x = *ptr;
        output.0 = output;
        D.16198 = (int) x;
        fprintf (output.0, "0x%02x", D.16198);
        ptr = ptr + 1;
        goto <D.15996>;
      }
      <D.16039>:
      {
        float f;
        int inf;

        try
          {
            {
              union mono_rfloat mf;

              try
                {
                  D.16152 = MEM[(const guint32 *)ptr];
                  mf.ival = D.16152;
                  f.11 = mf.fval;
                  f = f.11;
                }
              finally
                {
                  mf = {CLOBBER};
                }
            }
            f.12 = f;
            D.16201 = (double) f.12;
            inf = dis_isinf (D.16201);
            if (inf == -1) goto <D.16202>; else goto <D.16203>;
            <D.16202>:
            output.0 = output;
            fprintf (output.0, "(00 00 80 ff)");
            goto <D.16204>;
            <D.16203>:
            if (inf == 1) goto <D.16205>; else goto <D.16206>;
            <D.16205>:
            output.0 = output;
            fprintf (output.0, "(00 00 80 7f)");
            goto <D.16207>;
            <D.16206>:
            f.12 = f;
            D.16201 = (double) f.12;
            D.16208 = dis_isnan (D.16201);
            if (D.16208 != 0) goto <D.16209>; else goto <D.16210>;
            <D.16209>:
            output.0 = output;
            fprintf (output.0, "(00 00 c0 ff)");
            goto <D.16211>;
            <D.16210>:
            {
              char * str;

              f.12 = f;
              D.16201 = (double) f.12;
              str = stringify_double (D.16201);
              output.0 = output;
              fprintf (output.0, "%s", str);
              monoeg_g_free (str);
            }
            <D.16211>:
            <D.16207>:
            <D.16204>:
            ptr = ptr + 4;
            goto <D.15996>;
          }
        finally
          {
            f = {CLOBBER};
          }
      }
      <D.16044>:
      {
        unsigned char x;

        x = *ptr;
        output.0 = output;
        D.16212 = (int) x;
        fprintf (output.0, "%d", D.16212);
        ptr = ptr + 1;
        goto <D.15996>;
      }
      <D.16046>:
      goto <D.15996>;
      <D.15996>:
      output.0 = output;
      fprintf (output.0, "\n");
      i = 0;
      goto <D.16048>;
      <D.16047>:
      D.16072 = mh->clauses;
      D.16069 = (long unsigned int) i;
      D.16073 = D.16069 * 32;
      D.16074 = D.16072 + D.16073;
      D.16075 = D.16074->try_offset;
      D.16087 = (sizetype) D.16075;
      D.16072 = mh->clauses;
      D.16069 = (long unsigned int) i;
      D.16073 = D.16069 * 32;
      D.16074 = D.16072 + D.16073;
      D.16082 = D.16074->try_len;
      D.16213 = (sizetype) D.16082;
      D.16214 = D.16087 + D.16213;
      D.16215 = start + D.16214;
      if (D.16215 == ptr) goto <D.16216>; else goto <D.16217>;
      <D.16216>:
      D.16069 = (long unsigned int) i;
      D.16070 = D.16069 * 4;
      D.16071 = trys + D.16070;
      D.16091 = *D.16071;
      if (D.16091 != 0) goto <D.16218>; else goto <D.16219>;
      <D.16218>:
      D.16110 = indent_level == 0;
      D.16111 = (long int) D.16110;
      D.16112 = __builtin_expect (D.16111, 0);
      if (D.16112 != 0) goto <D.16220>; else goto <D.16221>;
      <D.16220>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "dis-cil.c", 309, "indent_level");
      <D.16221>:
      indent_level = indent_level + -1;
      D.16100 = indent_level * 2;
      indent[D.16100] = 0;
      output.0 = output;
      fprintf (output.0, "\t%s} // end .try %d\n", &indent, i);
      <D.16219>:
      <D.16217>:
      D.16072 = mh->clauses;
      D.16069 = (long unsigned int) i;
      D.16073 = D.16069 * 32;
      D.16074 = D.16072 + D.16073;
      D.16102 = D.16074->handler_offset;
      D.16103 = (sizetype) D.16102;
      D.16072 = mh->clauses;
      D.16069 = (long unsigned int) i;
      D.16073 = D.16069 * 32;
      D.16074 = D.16072 + D.16073;
      D.16222 = D.16074->handler_len;
      D.16223 = (sizetype) D.16222;
      D.16224 = D.16103 + D.16223;
      D.16225 = start + D.16224;
      if (D.16225 == ptr) goto <D.16226>; else goto <D.16227>;
      <D.16226>:
      D.16110 = indent_level == 0;
      D.16111 = (long int) D.16110;
      D.16112 = __builtin_expect (D.16111, 0);
      if (D.16112 != 0) goto <D.16228>; else goto <D.16229>;
      <D.16228>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "dis-cil.c", 313, "indent_level");
      <D.16229>:
      indent_level = indent_level + -1;
      D.16100 = indent_level * 2;
      indent[D.16100] = 0;
      output.0 = output;
      fprintf (output.0, "\t%s} // end handler %d\n", &indent, i);
      D.16072 = mh->clauses;
      D.16069 = (long unsigned int) i;
      D.16073 = D.16069 * 32;
      D.16074 = D.16072 + D.16073;
      D.16107 = D.16074->flags;
      if (D.16107 == 4) goto <D.16230>; else goto <D.16231>;
      <D.16230>:
      in_fault = 0;
      <D.16231>:
      <D.16227>:
      i = i + 1;
      <D.16048>:
      D.16066 = mh->num_clauses;
      D.16086 = (int) D.16066;
      if (D.16086 > i) goto <D.16047>; else goto <D.16049>;
      <D.16049>:
      <D.16051>:
      if (ptr < end) goto <D.16050>; else goto <D.16052>;
      <D.16052>:
      if (trys != 0B) goto <D.16232>; else goto <D.16233>;
      <D.16232>:
      monoeg_g_free (trys);
      <D.16233>:
    }
  finally
    {
      indent = {CLOBBER};
      clause_names = {CLOBBER};
    }
}


monoeg_strdup (const gchar * str)
{
  gchar * D.16240;

  if (str != 0B) goto <D.16238>; else goto <D.16239>;
  <D.16238>:
  D.16240 = __strdup (str);
  return D.16240;
  <D.16239>:
  D.16240 = 0B;
  return D.16240;
}


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

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


