disassemble_cil (struct MonoImage * m, struct MonoMethodHeader * mh, struct MonoGenericContainer * container)
{
  unsigned int D.15201;
  sizetype size.0;
  unsigned int D.15203;
  unsigned int D.15204;
  <unnamed-unsigned:15> D.15207;
  unsigned int D.15208;
  unsigned int D.15209;
  unsigned int i.1;
  unsigned int D.15211;
  gboolean * D.15212;
  struct MonoExceptionClause * D.15213;
  unsigned int D.15214;
  struct MonoExceptionClause * D.15215;
  unsigned int D.15216;
  unsigned int j.2;
  unsigned int D.15218;
  struct MonoExceptionClause * D.15219;
  unsigned int D.15220;
  unsigned int D.15223;
  unsigned int D.15224;
  int D.15227;
  const unsigned char * D.15228;
  int D.15231;
  struct FILE * output.3;
  _Bool D.15235;
  long int D.15236;
  long int D.15237;
  int D.15240;
  int D.15241;
  unsigned int D.15242;
  const unsigned char * D.15243;
  unsigned int D.15246;
  _Bool D.15249;
  long int D.15250;
  long int D.15251;
  char * iftmp.4;
  struct MonoClass * D.15259;
  const char * D.15260;
  unsigned int D.15267;
  const unsigned char * D.15268;
  const char * D.15271;
  int ptr.5;
  int start.6;
  int D.15276;
  unsigned char D.15277;
  int D.15280;
  short unsigned int D.15284;
  const char * D.15286;
  unsigned char D.15287;
  int D.15288;
  unsigned int D.15289;
  int D.15290;
  int D.15291;
  unsigned int D.15292;
  long long unsigned int D.15293;
  long long unsigned int D.15294;
  double r.7;
  double r.8;
  int D.15303;
  unsigned int D.15307;
  const char * us_ptr.9;
  const char * us_ptr.10;
  unsigned int D.15310;
  unsigned int D.15311;
  const char * iftmp.11;
  int endswitch.12;
  int D.15319;
  unsigned int D.15320;
  unsigned int D.15321;
  unsigned int D.15322;
  int D.15323;
  const char * iftmp.13;
  unsigned int D.15325;
  int D.15331;
  int D.15332;
  int D.15333;
  int D.15334;
  int D.15335;
  unsigned int D.15336;
  float f.14;
  float f.15;
  double D.15339;
  int D.15346;
  int D.15350;
  sizetype D.15351;
  const unsigned char * D.15352;
  unsigned int D.15359;
  sizetype D.15360;
  const unsigned char * D.15361;
  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.15201 = mh->code_size;
      size = (int) D.15201;
      size.0 = (sizetype) size;
      end = start + size.0;
      ptr = start;
      indent_level = 0;
      in_fault = 0;
      clause_names[0] = "catch";
      clause_names[1] = "filter";
      clause_names[2] = "finally";
      clause_names[3] = "";
      clause_names[4] = "fault";
      trys = 0B;
      indent[0] = 0;
      D.15203 = BIT_FIELD_REF <*mh, 32, 64>;
      D.15204 = D.15203 & 2147418112;
      if (D.15204 != 0) goto <D.15205>; else goto <D.15206>;
      <D.15205>:
      D.15207 = mh->num_clauses;
      D.15208 = (unsigned int) D.15207;
      D.15209 = D.15208 * 4;
      trys = monoeg_malloc0 (D.15209);
      *trys = 1;
      i = 1;
      goto <D.15135>;
      <D.15134>:
      i.1 = (unsigned int) i;
      D.15211 = i.1 * 4;
      D.15212 = trys + D.15211;
      *D.15212 = 1;
      j = 0;
      goto <D.15133>;
      <D.15132>:
      D.15213 = mh->clauses;
      i.1 = (unsigned int) i;
      D.15214 = i.1 * 24;
      D.15215 = D.15213 + D.15214;
      D.15216 = D.15215->try_offset;
      D.15213 = mh->clauses;
      j.2 = (unsigned int) j;
      D.15218 = j.2 * 24;
      D.15219 = D.15213 + D.15218;
      D.15220 = D.15219->try_offset;
      if (D.15216 == D.15220) goto <D.15221>; else goto <D.15222>;
      <D.15221>:
      D.15213 = mh->clauses;
      i.1 = (unsigned int) i;
      D.15214 = i.1 * 24;
      D.15215 = D.15213 + D.15214;
      D.15223 = D.15215->try_len;
      D.15213 = mh->clauses;
      j.2 = (unsigned int) j;
      D.15218 = j.2 * 24;
      D.15219 = D.15213 + D.15218;
      D.15224 = D.15219->try_len;
      if (D.15223 == D.15224) goto <D.15225>; else goto <D.15226>;
      <D.15225>:
      i.1 = (unsigned int) i;
      D.15211 = i.1 * 4;
      D.15212 = trys + D.15211;
      *D.15212 = 0;
      goto <D.15131>;
      <D.15226>:
      <D.15222>:
      j = j + 1;
      <D.15133>:
      if (j < i) goto <D.15132>; else goto <D.15131>;
      <D.15131>:
      i = i + 1;
      <D.15135>:
      D.15207 = mh->num_clauses;
      D.15227 = (int) D.15207;
      if (D.15227 > i) goto <D.15134>; else goto <D.15136>;
      <D.15136>:
      <D.15206>:
      goto <D.15198>;
      <D.15197>:
      D.15207 = mh->num_clauses;
      D.15227 = (int) D.15207;
      i = D.15227 + -1;
      goto <D.15139>;
      <D.15138>:
      D.15213 = mh->clauses;
      i.1 = (unsigned int) i;
      D.15214 = i.1 * 24;
      D.15215 = D.15213 + D.15214;
      D.15216 = D.15215->try_offset;
      D.15228 = start + D.15216;
      if (D.15228 == ptr) goto <D.15229>; else goto <D.15230>;
      <D.15229>:
      i.1 = (unsigned int) i;
      D.15211 = i.1 * 4;
      D.15212 = trys + D.15211;
      D.15231 = *D.15212;
      if (D.15231 != 0) goto <D.15232>; else goto <D.15233>;
      <D.15232>:
      output.3 = output;
      fprintf (output.3, "\t%s.try { // %d\n", &indent, i);
      D.15235 = indent_level > 511;
      D.15236 = (long int) D.15235;
      D.15237 = __builtin_expect (D.15236, 0);
      if (D.15237 != 0) goto <D.15238>; else goto <D.15239>;
      <D.15238>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "dis-cil.c", 80, "indent_level < 512");
      <D.15239>:
      D.15240 = indent_level * 2;
      indent[D.15240] = 32;
      D.15240 = indent_level * 2;
      D.15241 = D.15240 + 1;
      indent[D.15241] = 32;
      indent_level = indent_level + 1;
      D.15240 = indent_level * 2;
      indent[D.15240] = 0;
      <D.15233>:
      <D.15230>:
      D.15213 = mh->clauses;
      i.1 = (unsigned int) i;
      D.15214 = i.1 * 24;
      D.15215 = D.15213 + D.15214;
      D.15242 = D.15215->handler_offset;
      D.15243 = start + D.15242;
      if (D.15243 == ptr) goto <D.15244>; else goto <D.15245>;
      <D.15244>:
      D.15213 = mh->clauses;
      i.1 = (unsigned int) i;
      D.15214 = i.1 * 24;
      D.15215 = D.15213 + D.15214;
      D.15246 = D.15215->flags;
      if (D.15246 == 1) goto <D.15247>; else goto <D.15248>;
      <D.15247>:
      D.15249 = indent_level == 0;
      D.15250 = (long int) D.15249;
      D.15251 = __builtin_expect (D.15250, 0);
      if (D.15251 != 0) goto <D.15252>; else goto <D.15253>;
      <D.15252>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "dis-cil.c", 85, "indent_level");
      <D.15253>:
      indent_level = indent_level + -1;
      D.15240 = indent_level * 2;
      indent[D.15240] = 0;
      output.3 = output;
      fprintf (output.3, "\t%s} { // %d\n", &indent, i);
      goto <D.15254>;
      <D.15248>:
      {
        char * klass;

        D.15213 = mh->clauses;
        i.1 = (unsigned int) i;
        D.15214 = i.1 * 24;
        D.15215 = D.15213 + D.15214;
        D.15246 = D.15215->flags;
        if (D.15246 != 0) goto <D.15256>; else goto <D.15257>;
        <D.15256>:
        iftmp.4 = monoeg_strdup ("");
        goto <D.15258>;
        <D.15257>:
        D.15213 = mh->clauses;
        i.1 = (unsigned int) i;
        D.15214 = i.1 * 24;
        D.15215 = D.15213 + D.15214;
        D.15259 = D.15215->data.catch_class;
        iftmp.4 = dis_stringify_object_with_class (m, D.15259, 1, 0);
        <D.15258>:
        klass = iftmp.4;
        output.3 = output;
        D.15213 = mh->clauses;
        i.1 = (unsigned int) i;
        D.15214 = i.1 * 24;
        D.15215 = D.15213 + D.15214;
        D.15246 = D.15215->flags;
        D.15260 = clause_names[D.15246];
        fprintf (output.3, "\t%s%s %s { // %d\n", &indent, D.15260, klass, i);
        monoeg_g_free (klass);
      }
      <D.15254>:
      D.15235 = indent_level > 511;
      D.15236 = (long int) D.15235;
      D.15237 = __builtin_expect (D.15236, 0);
      if (D.15237 != 0) goto <D.15261>; else goto <D.15262>;
      <D.15261>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "dis-cil.c", 95, "indent_level < 512");
      <D.15262>:
      D.15240 = indent_level * 2;
      indent[D.15240] = 32;
      D.15240 = indent_level * 2;
      D.15241 = D.15240 + 1;
      indent[D.15241] = 32;
      indent_level = indent_level + 1;
      D.15240 = indent_level * 2;
      indent[D.15240] = 0;
      D.15213 = mh->clauses;
      i.1 = (unsigned int) i;
      D.15214 = i.1 * 24;
      D.15215 = D.15213 + D.15214;
      D.15246 = D.15215->flags;
      if (D.15246 == 4) goto <D.15263>; else goto <D.15264>;
      <D.15263>:
      in_fault = 1;
      <D.15264>:
      <D.15245>:
      D.15213 = mh->clauses;
      i.1 = (unsigned int) i;
      D.15214 = i.1 * 24;
      D.15215 = D.15213 + D.15214;
      D.15246 = D.15215->flags;
      if (D.15246 == 1) goto <D.15265>; else goto <D.15266>;
      <D.15265>:
      D.15213 = mh->clauses;
      i.1 = (unsigned int) i;
      D.15214 = i.1 * 24;
      D.15215 = D.15213 + D.15214;
      D.15267 = D.15215->data.filter_offset;
      D.15268 = start + D.15267;
      if (D.15268 == ptr) goto <D.15269>; else goto <D.15270>;
      <D.15269>:
      output.3 = output;
      D.15271 = clause_names[1];
      fprintf (output.3, "\t%s%s {\n", &indent, D.15271);
      D.15235 = indent_level > 511;
      D.15236 = (long int) D.15235;
      D.15237 = __builtin_expect (D.15236, 0);
      if (D.15237 != 0) goto <D.15272>; else goto <D.15273>;
      <D.15272>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "dis-cil.c", 101, "indent_level < 512");
      <D.15273>:
      D.15240 = indent_level * 2;
      indent[D.15240] = 32;
      D.15240 = indent_level * 2;
      D.15241 = D.15240 + 1;
      indent[D.15241] = 32;
      indent_level = indent_level + 1;
      D.15240 = indent_level * 2;
      indent[D.15240] = 0;
      <D.15270>:
      <D.15266>:
      i = i + -1;
      <D.15139>:
      if (i >= 0) goto <D.15138>; else goto <D.15140>;
      <D.15140>:
      output.3 = output;
      ptr.5 = (int) ptr;
      start.6 = (int) start;
      D.15276 = ptr.5 - start.6;
      fprintf (output.3, "\t%sIL_%04x: ", &indent, D.15276);
      D.15277 = *ptr;
      i = (int) D.15277;
      D.15277 = *ptr;
      if (D.15277 == 254) goto <D.15278>; else goto <D.15279>;
      <D.15278>:
      ptr = ptr + 1;
      D.15277 = *ptr;
      D.15280 = (int) D.15277;
      i = D.15280 + 256;
      <D.15279>:
      entry = &mono_opcodes[i];
      if (in_fault != 0) goto <D.15283>; else goto <D.15281>;
      <D.15283>:
      D.15284 = entry->opval;
      if (D.15284 == 220) goto <D.15285>; else goto <D.15281>;
      <D.15285>:
      output.3 = output;
      fprintf (output.3, " %s", "endfault");
      goto <D.15282>;
      <D.15281>:
      output.3 = output;
      D.15286 = mono_opcode_name (i);
      fprintf (output.3, " %s ", D.15286);
      <D.15282>:
      ptr = ptr + 1;
      D.15287 = entry->argument;
      D.15288 = (int) D.15287;
      switch (D.15288) <default: <D.15193>, case 0: <D.15154>, case 1: <D.15177>, case 2: <D.15144>, case 3: <D.15151>, case 4: <D.15174>, case 5: <D.15162>, case 6: <D.15160>, case 7: <D.15180>, case 8: <D.15191>, case 9: <D.15141>, case 10: <D.15182>, case 11: <D.15167>, case 12: <D.15155>, case 13: <D.15186>, case 14: <D.15147>, case 15: <D.15184>, case 16: <D.15149>>
      <D.15141>:
      {
        gint target;

        D.15289 = mono_read32 (ptr);
        target = (gint) D.15289;
        output.3 = output;
        ptr.5 = (int) ptr;
        start.6 = (int) start;
        D.15276 = ptr.5 - start.6;
        D.15290 = D.15276 + 4;
        D.15291 = D.15290 + target;
        fprintf (output.3, "IL_%04x\n", D.15291);
        ptr = ptr + 4;
        goto <D.15143>;
      }
      <D.15144>:
      {
        guint32 token;
        char * s;

        token = mono_read32 (ptr);
        s = get_field (m, token, container);
        output.3 = output;
        fprintf (output.3, "%s", s);
        monoeg_g_free (s);
        ptr = ptr + 4;
        goto <D.15143>;
      }
      <D.15147>:
      {
        int value;

        D.15292 = mono_read32 (ptr);
        value = (int) D.15292;
        output.3 = output;
        fprintf (output.3, "%d", value);
        ptr = ptr + 4;
        goto <D.15143>;
      }
      <D.15149>:
      {
        gint64 top;

        D.15293 = mono_read64 (ptr);
        top = (gint64) D.15293;
        output.3 = output;
        fprintf (output.3, "0x%llx", top);
        ptr = ptr + 8;
        goto <D.15143>;
      }
      <D.15151>:
      {
        guint32 token;
        char * s;

        token = mono_read32 (ptr);
        s = get_method (m, token, container);
        output.3 = output;
        fprintf (output.3, "%s", s);
        monoeg_g_free (s);
        ptr = ptr + 4;
        goto <D.15143>;
      }
      <D.15154>:
      goto <D.15143>;
      <D.15155>:
      {
        double r;
        int inf;

        try
          {
            {
              union mono_rdouble mf;

              try
                {
                  D.15294 = mono_read64 (ptr);
                  mf.ival = D.15294;
                  r.7 = mf.fval;
                  r = r.7;
                }
              finally
                {
                  mf = {CLOBBER};
                }
            }
            r.8 = r;
            inf = dis_isinf (r.8);
            if (inf == -1) goto <D.15297>; else goto <D.15298>;
            <D.15297>:
            output.3 = output;
            fprintf (output.3, "(00 00 00 00 00 00 f0 ff)");
            goto <D.15299>;
            <D.15298>:
            if (inf == 1) goto <D.15300>; else goto <D.15301>;
            <D.15300>:
            output.3 = output;
            fprintf (output.3, "(00 00 00 00 00 00 f0 7f)");
            goto <D.15302>;
            <D.15301>:
            r.8 = r;
            D.15303 = dis_isnan (r.8);
            if (D.15303 != 0) goto <D.15304>; else goto <D.15305>;
            <D.15304>:
            output.3 = output;
            fprintf (output.3, "(00 00 00 00 00 00 f8 ff)");
            goto <D.15306>;
            <D.15305>:
            {
              char * str;

              r.8 = r;
              str = stringify_double (r.8);
              output.3 = output;
              fprintf (output.3, "%s", str);
              monoeg_g_free (str);
            }
            <D.15306>:
            <D.15302>:
            <D.15299>:
            ptr = ptr + 8;
            goto <D.15143>;
          }
        finally
          {
            r = {CLOBBER};
          }
      }
      <D.15160>:
      {
        guint32 token;

        token = mono_read32 (ptr);
        output.3 = output;
        fprintf (output.3, "signature-0x%08x", token);
        ptr = ptr + 4;
        goto <D.15143>;
      }
      <D.15162>:
      {
        guint32 token;
        const char * us_ptr;
        int len;
        char * s;

        try
          {
            token = mono_read32 (ptr);
            D.15307 = token & 16777215;
            us_ptr.9 = mono_metadata_user_string (m, D.15307);
            us_ptr = us_ptr.9;
            us_ptr.10 = us_ptr;
            D.15310 = mono_metadata_decode_blob_size (us_ptr.10, &us_ptr);
            len = (int) D.15310;
            us_ptr.10 = us_ptr;
            s = get_encoded_user_string_or_bytearray (us_ptr.10, len);
            output.3 = output;
            fprintf (output.3, "%s", s);
            monoeg_g_free (s);
            ptr = ptr + 4;
            goto <D.15143>;
          }
        finally
          {
            us_ptr = {CLOBBER};
          }
      }
      <D.15167>:
      {
        guint32 count;
        const unsigned char * endswitch;
        guint32 n;

        count = mono_read32 (ptr);
        ptr = ptr + 4;
        D.15311 = count * 4;
        endswitch = ptr + D.15311;
        output.3 = output;
        if (count != 0) goto <D.15313>; else goto <D.15314>;
        <D.15313>:
        iftmp.11 = "(\n";
        goto <D.15315>;
        <D.15314>:
        iftmp.11 = "( )";
        <D.15315>:
        fprintf (output.3, iftmp.11);
        D.15235 = indent_level > 511;
        D.15236 = (long int) D.15235;
        D.15237 = __builtin_expect (D.15236, 0);
        if (D.15237 != 0) goto <D.15316>; else goto <D.15317>;
        <D.15316>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "dis-cil.c", 217, "indent_level < 512");
        <D.15317>:
        D.15240 = indent_level * 2;
        indent[D.15240] = 32;
        D.15240 = indent_level * 2;
        D.15241 = D.15240 + 1;
        indent[D.15241] = 32;
        indent_level = indent_level + 1;
        D.15240 = indent_level * 2;
        indent[D.15240] = 0;
        n = 0;
        goto <D.15172>;
        <D.15171>:
        output.3 = output;
        endswitch.12 = (int) endswitch;
        start.6 = (int) start;
        D.15319 = endswitch.12 - start.6;
        D.15320 = (unsigned int) D.15319;
        D.15321 = mono_read32 (ptr);
        D.15322 = D.15320 + D.15321;
        D.15323 = (int) D.15322;
        D.15325 = count + 4294967295;
        if (D.15325 == n) goto <D.15326>; else goto <D.15327>;
        <D.15326>:
        iftmp.13 = ")";
        goto <D.15328>;
        <D.15327>:
        iftmp.13 = ",\n";
        <D.15328>:
        fprintf (output.3, "\t%sIL_%04x%s", &indent, D.15323, iftmp.13);
        ptr = ptr + 4;
        n = n + 1;
        <D.15172>:
        if (n < count) goto <D.15171>; else goto <D.15173>;
        <D.15173>:
        D.15249 = indent_level == 0;
        D.15250 = (long int) D.15249;
        D.15251 = __builtin_expect (D.15250, 0);
        if (D.15251 != 0) goto <D.15329>; else goto <D.15330>;
        <D.15329>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "dis-cil.c", 224, "indent_level");
        <D.15330>:
        indent_level = indent_level + -1;
        D.15240 = indent_level * 2;
        indent[D.15240] = 0;
        goto <D.15143>;
      }
      <D.15174>:
      {
        guint32 token;
        char * s;

        token = mono_read32 (ptr);
        s = get_token (m, token, container);
        output.3 = output;
        fprintf (output.3, "%s", s);
        monoeg_g_free (s);
        ptr = ptr + 4;
        goto <D.15143>;
      }
      <D.15177>:
      {
        guint32 token;
        char * s;

        token = mono_read32 (ptr);
        s = get_token_type (m, token, container);
        output.3 = output;
        fprintf (output.3, "%s", s);
        monoeg_g_free (s);
        ptr = ptr + 4;
        goto <D.15143>;
      }
      <D.15180>:
      {
        guint16 var_idx;

        var_idx = mono_read16 (ptr);
        output.3 = output;
        D.15331 = (int) var_idx;
        fprintf (output.3, "%d\n", D.15331);
        ptr = ptr + 2;
        goto <D.15143>;
      }
      <D.15182>:
      {
        signed char x;

        D.15277 = *ptr;
        x = (signed char) D.15277;
        output.3 = output;
        ptr.5 = (int) ptr;
        start.6 = (int) start;
        D.15276 = ptr.5 - start.6;
        D.15332 = D.15276 + 1;
        D.15333 = (int) x;
        D.15334 = D.15332 + D.15333;
        fprintf (output.3, "IL_%04x\n", D.15334);
        ptr = ptr + 1;
        goto <D.15143>;
      }
      <D.15184>:
      {
        char x;

        D.15277 = *ptr;
        x = (char) D.15277;
        output.3 = output;
        D.15335 = (int) x;
        fprintf (output.3, "0x%02x", D.15335);
        ptr = ptr + 1;
        goto <D.15143>;
      }
      <D.15186>:
      {
        float f;
        int inf;

        try
          {
            {
              union mono_rfloat mf;

              try
                {
                  D.15336 = mono_read32 (ptr);
                  mf.ival = D.15336;
                  f.14 = mf.fval;
                  f = f.14;
                }
              finally
                {
                  mf = {CLOBBER};
                }
            }
            f.15 = f;
            D.15339 = (double) f.15;
            inf = dis_isinf (D.15339);
            if (inf == -1) goto <D.15340>; else goto <D.15341>;
            <D.15340>:
            output.3 = output;
            fprintf (output.3, "(00 00 80 ff)");
            goto <D.15342>;
            <D.15341>:
            if (inf == 1) goto <D.15343>; else goto <D.15344>;
            <D.15343>:
            output.3 = output;
            fprintf (output.3, "(00 00 80 7f)");
            goto <D.15345>;
            <D.15344>:
            f.15 = f;
            D.15339 = (double) f.15;
            D.15346 = dis_isnan (D.15339);
            if (D.15346 != 0) goto <D.15347>; else goto <D.15348>;
            <D.15347>:
            output.3 = output;
            fprintf (output.3, "(00 00 c0 ff)");
            goto <D.15349>;
            <D.15348>:
            {
              char * str;

              f.15 = f;
              D.15339 = (double) f.15;
              str = stringify_double (D.15339);
              output.3 = output;
              fprintf (output.3, "%s", str);
              monoeg_g_free (str);
            }
            <D.15349>:
            <D.15345>:
            <D.15342>:
            ptr = ptr + 4;
            goto <D.15143>;
          }
        finally
          {
            f = {CLOBBER};
          }
      }
      <D.15191>:
      {
        unsigned char x;

        x = *ptr;
        output.3 = output;
        D.15350 = (int) x;
        fprintf (output.3, "%d", D.15350);
        ptr = ptr + 1;
        goto <D.15143>;
      }
      <D.15193>:
      goto <D.15143>;
      <D.15143>:
      output.3 = output;
      fprintf (output.3, "\n");
      i = 0;
      goto <D.15195>;
      <D.15194>:
      D.15213 = mh->clauses;
      i.1 = (unsigned int) i;
      D.15214 = i.1 * 24;
      D.15215 = D.15213 + D.15214;
      D.15216 = D.15215->try_offset;
      D.15213 = mh->clauses;
      i.1 = (unsigned int) i;
      D.15214 = i.1 * 24;
      D.15215 = D.15213 + D.15214;
      D.15223 = D.15215->try_len;
      D.15351 = D.15216 + D.15223;
      D.15352 = start + D.15351;
      if (D.15352 == ptr) goto <D.15353>; else goto <D.15354>;
      <D.15353>:
      i.1 = (unsigned int) i;
      D.15211 = i.1 * 4;
      D.15212 = trys + D.15211;
      D.15231 = *D.15212;
      if (D.15231 != 0) goto <D.15355>; else goto <D.15356>;
      <D.15355>:
      D.15249 = indent_level == 0;
      D.15250 = (long int) D.15249;
      D.15251 = __builtin_expect (D.15250, 0);
      if (D.15251 != 0) goto <D.15357>; else goto <D.15358>;
      <D.15357>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "dis-cil.c", 309, "indent_level");
      <D.15358>:
      indent_level = indent_level + -1;
      D.15240 = indent_level * 2;
      indent[D.15240] = 0;
      output.3 = output;
      fprintf (output.3, "\t%s} // end .try %d\n", &indent, i);
      <D.15356>:
      <D.15354>:
      D.15213 = mh->clauses;
      i.1 = (unsigned int) i;
      D.15214 = i.1 * 24;
      D.15215 = D.15213 + D.15214;
      D.15242 = D.15215->handler_offset;
      D.15213 = mh->clauses;
      i.1 = (unsigned int) i;
      D.15214 = i.1 * 24;
      D.15215 = D.15213 + D.15214;
      D.15359 = D.15215->handler_len;
      D.15360 = D.15242 + D.15359;
      D.15361 = start + D.15360;
      if (D.15361 == ptr) goto <D.15362>; else goto <D.15363>;
      <D.15362>:
      D.15249 = indent_level == 0;
      D.15250 = (long int) D.15249;
      D.15251 = __builtin_expect (D.15250, 0);
      if (D.15251 != 0) goto <D.15364>; else goto <D.15365>;
      <D.15364>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "dis-cil.c", 313, "indent_level");
      <D.15365>:
      indent_level = indent_level + -1;
      D.15240 = indent_level * 2;
      indent[D.15240] = 0;
      output.3 = output;
      fprintf (output.3, "\t%s} // end handler %d\n", &indent, i);
      D.15213 = mh->clauses;
      i.1 = (unsigned int) i;
      D.15214 = i.1 * 24;
      D.15215 = D.15213 + D.15214;
      D.15246 = D.15215->flags;
      if (D.15246 == 4) goto <D.15366>; else goto <D.15367>;
      <D.15366>:
      in_fault = 0;
      <D.15367>:
      <D.15363>:
      i = i + 1;
      <D.15195>:
      D.15207 = mh->num_clauses;
      D.15227 = (int) D.15207;
      if (D.15227 > i) goto <D.15194>; else goto <D.15196>;
      <D.15196>:
      <D.15198>:
      if (ptr < end) goto <D.15197>; else goto <D.15199>;
      <D.15199>:
      if (trys != 0B) goto <D.15368>; else goto <D.15369>;
      <D.15368>:
      monoeg_g_free (trys);
      <D.15369>:
    }
  finally
    {
      indent = {CLOBBER};
      clause_names = {CLOBBER};
    }
}


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

  if (str != 0B) goto <D.15374>; else goto <D.15375>;
  <D.15374>:
  D.15376 = __strdup (str);
  return D.15376;
  <D.15375>:
  D.15376 = 0B;
  return D.15376;
}


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

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


