disassemble_cil (struct MonoImage * m, struct MonoMethodHeader * mh, struct MonoGenericContainer * container)
{
  unsigned int D.15286;
  sizetype size.0;
  short unsigned int D.15288;
  short unsigned int D.15289;
  <unnamed-unsigned:15> D.15292;
  unsigned int D.15293;
  unsigned int D.15294;
  unsigned int i.1;
  unsigned int D.15296;
  gboolean * D.15297;
  struct MonoExceptionClause * D.15298;
  unsigned int D.15299;
  struct MonoExceptionClause * D.15300;
  unsigned int D.15301;
  unsigned int j.2;
  unsigned int D.15303;
  struct MonoExceptionClause * D.15304;
  unsigned int D.15305;
  unsigned int D.15308;
  unsigned int D.15309;
  int D.15312;
  const unsigned char * D.15313;
  int D.15316;
  struct FILE * output.3;
  _Bool D.15320;
  long int D.15321;
  long int D.15322;
  int D.15325;
  int D.15326;
  unsigned int D.15327;
  const unsigned char * D.15328;
  unsigned int D.15331;
  _Bool D.15334;
  long int D.15335;
  long int D.15336;
  char * iftmp.4;
  struct MonoClass * D.15344;
  const char * D.15345;
  unsigned int D.15352;
  const unsigned char * D.15353;
  const char * D.15356;
  int ptr.5;
  int start.6;
  int D.15361;
  unsigned char D.15362;
  int D.15365;
  short unsigned int D.15369;
  const char * D.15371;
  unsigned char D.15372;
  int D.15373;
  unsigned int D.15374;
  int D.15375;
  int D.15376;
  long long unsigned int D.15377;
  double r.7;
  double r.8;
  int D.15386;
  unsigned int D.15390;
  const char * us_ptr.9;
  const char * us_ptr.10;
  unsigned int D.15393;
  unsigned int D.15394;
  const char * iftmp.11;
  const char * iftmp.12;
  unsigned int D.15402;
  int endswitch.13;
  int D.15407;
  unsigned int D.15408;
  unsigned int D.15409;
  int D.15410;
  int D.15413;
  int D.15414;
  int D.15415;
  int D.15416;
  int D.15417;
  float f.14;
  float f.15;
  double D.15420;
  int D.15427;
  int D.15431;
  sizetype D.15432;
  const unsigned char * D.15433;
  unsigned int D.15440;
  sizetype D.15441;
  const unsigned char * D.15442;
  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.15286 = mh->code_size;
      size = (int) D.15286;
      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.15288 = BIT_FIELD_REF <*mh, 16, 80>;
      D.15289 = D.15288 & 32767;
      if (D.15289 != 0) goto <D.15290>; else goto <D.15291>;
      <D.15290>:
      D.15292 = mh->num_clauses;
      D.15293 = (unsigned int) D.15292;
      D.15294 = D.15293 * 4;
      trys = monoeg_malloc0 (D.15294);
      *trys = 1;
      i = 1;
      goto <D.15220>;
      <D.15219>:
      i.1 = (unsigned int) i;
      D.15296 = i.1 * 4;
      D.15297 = trys + D.15296;
      *D.15297 = 1;
      j = 0;
      goto <D.15218>;
      <D.15217>:
      D.15298 = mh->clauses;
      i.1 = (unsigned int) i;
      D.15299 = i.1 * 24;
      D.15300 = D.15298 + D.15299;
      D.15301 = D.15300->try_offset;
      D.15298 = mh->clauses;
      j.2 = (unsigned int) j;
      D.15303 = j.2 * 24;
      D.15304 = D.15298 + D.15303;
      D.15305 = D.15304->try_offset;
      if (D.15301 == D.15305) goto <D.15306>; else goto <D.15307>;
      <D.15306>:
      D.15298 = mh->clauses;
      i.1 = (unsigned int) i;
      D.15299 = i.1 * 24;
      D.15300 = D.15298 + D.15299;
      D.15308 = D.15300->try_len;
      D.15298 = mh->clauses;
      j.2 = (unsigned int) j;
      D.15303 = j.2 * 24;
      D.15304 = D.15298 + D.15303;
      D.15309 = D.15304->try_len;
      if (D.15308 == D.15309) goto <D.15310>; else goto <D.15311>;
      <D.15310>:
      i.1 = (unsigned int) i;
      D.15296 = i.1 * 4;
      D.15297 = trys + D.15296;
      *D.15297 = 0;
      goto <D.15216>;
      <D.15311>:
      <D.15307>:
      j = j + 1;
      <D.15218>:
      if (j < i) goto <D.15217>; else goto <D.15216>;
      <D.15216>:
      i = i + 1;
      <D.15220>:
      D.15292 = mh->num_clauses;
      D.15312 = (int) D.15292;
      if (D.15312 > i) goto <D.15219>; else goto <D.15221>;
      <D.15221>:
      <D.15291>:
      goto <D.15283>;
      <D.15282>:
      D.15292 = mh->num_clauses;
      D.15312 = (int) D.15292;
      i = D.15312 + -1;
      goto <D.15224>;
      <D.15223>:
      D.15298 = mh->clauses;
      i.1 = (unsigned int) i;
      D.15299 = i.1 * 24;
      D.15300 = D.15298 + D.15299;
      D.15301 = D.15300->try_offset;
      D.15313 = start + D.15301;
      if (D.15313 == ptr) goto <D.15314>; else goto <D.15315>;
      <D.15314>:
      i.1 = (unsigned int) i;
      D.15296 = i.1 * 4;
      D.15297 = trys + D.15296;
      D.15316 = *D.15297;
      if (D.15316 != 0) goto <D.15317>; else goto <D.15318>;
      <D.15317>:
      output.3 = output;
      fprintf (output.3, "\t%s.try { // %d\n", &indent, i);
      D.15320 = indent_level > 511;
      D.15321 = (long int) D.15320;
      D.15322 = __builtin_expect (D.15321, 0);
      if (D.15322 != 0) goto <D.15323>; else goto <D.15324>;
      <D.15323>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "dis-cil.c", 80, "indent_level < 512");
      <D.15324>:
      D.15325 = indent_level * 2;
      indent[D.15325] = 32;
      D.15325 = indent_level * 2;
      D.15326 = D.15325 + 1;
      indent[D.15326] = 32;
      indent_level = indent_level + 1;
      D.15325 = indent_level * 2;
      indent[D.15325] = 0;
      <D.15318>:
      <D.15315>:
      D.15298 = mh->clauses;
      i.1 = (unsigned int) i;
      D.15299 = i.1 * 24;
      D.15300 = D.15298 + D.15299;
      D.15327 = D.15300->handler_offset;
      D.15328 = start + D.15327;
      if (D.15328 == ptr) goto <D.15329>; else goto <D.15330>;
      <D.15329>:
      D.15298 = mh->clauses;
      i.1 = (unsigned int) i;
      D.15299 = i.1 * 24;
      D.15300 = D.15298 + D.15299;
      D.15331 = D.15300->flags;
      if (D.15331 == 1) goto <D.15332>; else goto <D.15333>;
      <D.15332>:
      D.15334 = indent_level == 0;
      D.15335 = (long int) D.15334;
      D.15336 = __builtin_expect (D.15335, 0);
      if (D.15336 != 0) goto <D.15337>; else goto <D.15338>;
      <D.15337>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "dis-cil.c", 85, "indent_level");
      <D.15338>:
      indent_level = indent_level + -1;
      D.15325 = indent_level * 2;
      indent[D.15325] = 0;
      output.3 = output;
      fprintf (output.3, "\t%s} { // %d\n", &indent, i);
      goto <D.15339>;
      <D.15333>:
      {
        char * klass;

        D.15298 = mh->clauses;
        i.1 = (unsigned int) i;
        D.15299 = i.1 * 24;
        D.15300 = D.15298 + D.15299;
        D.15331 = D.15300->flags;
        if (D.15331 != 0) goto <D.15341>; else goto <D.15342>;
        <D.15341>:
        iftmp.4 = monoeg_strdup ("");
        goto <D.15343>;
        <D.15342>:
        D.15298 = mh->clauses;
        i.1 = (unsigned int) i;
        D.15299 = i.1 * 24;
        D.15300 = D.15298 + D.15299;
        D.15344 = D.15300->data.catch_class;
        iftmp.4 = dis_stringify_object_with_class (m, D.15344, 1, 0);
        <D.15343>:
        klass = iftmp.4;
        D.15298 = mh->clauses;
        i.1 = (unsigned int) i;
        D.15299 = i.1 * 24;
        D.15300 = D.15298 + D.15299;
        D.15331 = D.15300->flags;
        D.15345 = clause_names[D.15331];
        output.3 = output;
        fprintf (output.3, "\t%s%s %s { // %d\n", &indent, D.15345, klass, i);
        monoeg_g_free (klass);
      }
      <D.15339>:
      D.15320 = indent_level > 511;
      D.15321 = (long int) D.15320;
      D.15322 = __builtin_expect (D.15321, 0);
      if (D.15322 != 0) goto <D.15346>; else goto <D.15347>;
      <D.15346>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "dis-cil.c", 95, "indent_level < 512");
      <D.15347>:
      D.15325 = indent_level * 2;
      indent[D.15325] = 32;
      D.15325 = indent_level * 2;
      D.15326 = D.15325 + 1;
      indent[D.15326] = 32;
      indent_level = indent_level + 1;
      D.15325 = indent_level * 2;
      indent[D.15325] = 0;
      D.15298 = mh->clauses;
      i.1 = (unsigned int) i;
      D.15299 = i.1 * 24;
      D.15300 = D.15298 + D.15299;
      D.15331 = D.15300->flags;
      if (D.15331 == 4) goto <D.15348>; else goto <D.15349>;
      <D.15348>:
      in_fault = 1;
      <D.15349>:
      <D.15330>:
      D.15298 = mh->clauses;
      i.1 = (unsigned int) i;
      D.15299 = i.1 * 24;
      D.15300 = D.15298 + D.15299;
      D.15331 = D.15300->flags;
      if (D.15331 == 1) goto <D.15350>; else goto <D.15351>;
      <D.15350>:
      D.15298 = mh->clauses;
      i.1 = (unsigned int) i;
      D.15299 = i.1 * 24;
      D.15300 = D.15298 + D.15299;
      D.15352 = D.15300->data.filter_offset;
      D.15353 = start + D.15352;
      if (D.15353 == ptr) goto <D.15354>; else goto <D.15355>;
      <D.15354>:
      D.15356 = clause_names[1];
      output.3 = output;
      fprintf (output.3, "\t%s%s {\n", &indent, D.15356);
      D.15320 = indent_level > 511;
      D.15321 = (long int) D.15320;
      D.15322 = __builtin_expect (D.15321, 0);
      if (D.15322 != 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", 101, "indent_level < 512");
      <D.15358>:
      D.15325 = indent_level * 2;
      indent[D.15325] = 32;
      D.15325 = indent_level * 2;
      D.15326 = D.15325 + 1;
      indent[D.15326] = 32;
      indent_level = indent_level + 1;
      D.15325 = indent_level * 2;
      indent[D.15325] = 0;
      <D.15355>:
      <D.15351>:
      i = i + -1;
      <D.15224>:
      if (i >= 0) goto <D.15223>; else goto <D.15225>;
      <D.15225>:
      ptr.5 = (int) ptr;
      start.6 = (int) start;
      D.15361 = ptr.5 - start.6;
      output.3 = output;
      fprintf (output.3, "\t%sIL_%04x: ", &indent, D.15361);
      D.15362 = *ptr;
      i = (int) D.15362;
      D.15362 = *ptr;
      if (D.15362 == 254) goto <D.15363>; else goto <D.15364>;
      <D.15363>:
      ptr = ptr + 1;
      D.15362 = *ptr;
      D.15365 = (int) D.15362;
      i = D.15365 + 256;
      <D.15364>:
      entry = &mono_opcodes[i];
      if (in_fault != 0) goto <D.15368>; else goto <D.15366>;
      <D.15368>:
      D.15369 = entry->opval;
      if (D.15369 == 220) goto <D.15370>; else goto <D.15366>;
      <D.15370>:
      output.3 = output;
      fprintf (output.3, " %s", "endfault");
      goto <D.15367>;
      <D.15366>:
      D.15371 = mono_opcode_name (i);
      output.3 = output;
      fprintf (output.3, " %s ", D.15371);
      <D.15367>:
      ptr = ptr + 1;
      D.15372 = entry->argument;
      D.15373 = (int) D.15372;
      switch (D.15373) <default: <D.15278>, case 0: <D.15239>, case 1: <D.15262>, case 2: <D.15229>, case 3: <D.15236>, case 4: <D.15259>, case 5: <D.15247>, case 6: <D.15245>, case 7: <D.15265>, case 8: <D.15276>, case 9: <D.15226>, case 10: <D.15267>, case 11: <D.15252>, case 12: <D.15240>, case 13: <D.15271>, case 14: <D.15232>, case 15: <D.15269>, case 16: <D.15234>>
      <D.15226>:
      {
        gint target;

        D.15374 = MEM[(const guint32 *)ptr];
        target = (gint) D.15374;
        ptr.5 = (int) ptr;
        start.6 = (int) start;
        D.15361 = ptr.5 - start.6;
        D.15375 = D.15361 + 4;
        D.15376 = D.15375 + target;
        output.3 = output;
        fprintf (output.3, "IL_%04x\n", D.15376);
        ptr = ptr + 4;
        goto <D.15228>;
      }
      <D.15229>:
      {
        guint32 token;
        char * s;

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

        D.15374 = MEM[(const guint32 *)ptr];
        value = (int) D.15374;
        output.3 = output;
        fprintf (output.3, "%d", value);
        ptr = ptr + 4;
        goto <D.15228>;
      }
      <D.15234>:
      {
        gint64 top;

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

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

        try
          {
            {
              union mono_rdouble mf;

              try
                {
                  D.15377 = MEM[(const guint64 *)ptr];
                  mf.ival = D.15377;
                  r.7 = mf.fval;
                  r = r.7;
                }
              finally
                {
                  mf = {CLOBBER};
                }
            }
            r.8 = r;
            inf = dis_isinf (r.8);
            if (inf == -1) goto <D.15380>; else goto <D.15381>;
            <D.15380>:
            output.3 = output;
            fprintf (output.3, "(00 00 00 00 00 00 f0 ff)");
            goto <D.15382>;
            <D.15381>:
            if (inf == 1) goto <D.15383>; else goto <D.15384>;
            <D.15383>:
            output.3 = output;
            fprintf (output.3, "(00 00 00 00 00 00 f0 7f)");
            goto <D.15385>;
            <D.15384>:
            r.8 = r;
            D.15386 = dis_isnan (r.8);
            if (D.15386 != 0) goto <D.15387>; else goto <D.15388>;
            <D.15387>:
            output.3 = output;
            fprintf (output.3, "(00 00 00 00 00 00 f8 ff)");
            goto <D.15389>;
            <D.15388>:
            {
              char * str;

              r.8 = r;
              str = stringify_double (r.8);
              output.3 = output;
              fprintf (output.3, "%s", str);
              monoeg_g_free (str);
            }
            <D.15389>:
            <D.15385>:
            <D.15382>:
            ptr = ptr + 8;
            goto <D.15228>;
          }
        finally
          {
            r = {CLOBBER};
          }
      }
      <D.15245>:
      {
        guint32 token;

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

        try
          {
            token = MEM[(const guint32 *)ptr];
            D.15390 = token & 16777215;
            us_ptr.9 = mono_metadata_user_string (m, D.15390);
            us_ptr = us_ptr.9;
            us_ptr.10 = us_ptr;
            D.15393 = mono_metadata_decode_blob_size (us_ptr.10, &us_ptr);
            len = (int) D.15393;
            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.15228>;
          }
        finally
          {
            us_ptr = {CLOBBER};
          }
      }
      <D.15252>:
      {
        guint32 count;
        const unsigned char * endswitch;
        guint32 n;

        count = MEM[(const guint32 *)ptr];
        ptr = ptr + 4;
        D.15394 = count * 4;
        endswitch = ptr + D.15394;
        if (count != 0) goto <D.15396>; else goto <D.15397>;
        <D.15396>:
        iftmp.11 = "(\n";
        goto <D.15398>;
        <D.15397>:
        iftmp.11 = "( )";
        <D.15398>:
        output.3 = output;
        fprintf (output.3, iftmp.11);
        D.15320 = indent_level > 511;
        D.15321 = (long int) D.15320;
        D.15322 = __builtin_expect (D.15321, 0);
        if (D.15322 != 0) goto <D.15399>; else goto <D.15400>;
        <D.15399>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "dis-cil.c", 217, "indent_level < 512");
        <D.15400>:
        D.15325 = indent_level * 2;
        indent[D.15325] = 32;
        D.15325 = indent_level * 2;
        D.15326 = D.15325 + 1;
        indent[D.15326] = 32;
        indent_level = indent_level + 1;
        D.15325 = indent_level * 2;
        indent[D.15325] = 0;
        n = 0;
        goto <D.15257>;
        <D.15256>:
        D.15402 = count + 4294967295;
        if (D.15402 == n) goto <D.15403>; else goto <D.15404>;
        <D.15403>:
        iftmp.12 = ")";
        goto <D.15405>;
        <D.15404>:
        iftmp.12 = ",\n";
        <D.15405>:
        endswitch.13 = (int) endswitch;
        start.6 = (int) start;
        D.15407 = endswitch.13 - start.6;
        D.15408 = (unsigned int) D.15407;
        D.15374 = MEM[(const guint32 *)ptr];
        D.15409 = D.15408 + D.15374;
        D.15410 = (int) D.15409;
        output.3 = output;
        fprintf (output.3, "\t%sIL_%04x%s", &indent, D.15410, iftmp.12);
        ptr = ptr + 4;
        n = n + 1;
        <D.15257>:
        if (n < count) goto <D.15256>; else goto <D.15258>;
        <D.15258>:
        D.15334 = indent_level == 0;
        D.15335 = (long int) D.15334;
        D.15336 = __builtin_expect (D.15335, 0);
        if (D.15336 != 0) goto <D.15411>; else goto <D.15412>;
        <D.15411>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "dis-cil.c", 224, "indent_level");
        <D.15412>:
        indent_level = indent_level + -1;
        D.15325 = indent_level * 2;
        indent[D.15325] = 0;
        goto <D.15228>;
      }
      <D.15259>:
      {
        guint32 token;
        char * s;

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

        token = MEM[(const guint32 *)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.15228>;
      }
      <D.15265>:
      {
        guint16 var_idx;

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

        D.15362 = *ptr;
        x = (signed char) D.15362;
        ptr.5 = (int) ptr;
        start.6 = (int) start;
        D.15361 = ptr.5 - start.6;
        D.15414 = D.15361 + 1;
        D.15415 = (int) x;
        D.15416 = D.15414 + D.15415;
        output.3 = output;
        fprintf (output.3, "IL_%04x\n", D.15416);
        ptr = ptr + 1;
        goto <D.15228>;
      }
      <D.15269>:
      {
        char x;

        D.15362 = *ptr;
        x = (char) D.15362;
        D.15417 = (int) x;
        output.3 = output;
        fprintf (output.3, "0x%02x", D.15417);
        ptr = ptr + 1;
        goto <D.15228>;
      }
      <D.15271>:
      {
        float f;
        int inf;

        try
          {
            {
              union mono_rfloat mf;

              try
                {
                  D.15374 = MEM[(const guint32 *)ptr];
                  mf.ival = D.15374;
                  f.14 = mf.fval;
                  f = f.14;
                }
              finally
                {
                  mf = {CLOBBER};
                }
            }
            f.15 = f;
            D.15420 = (double) f.15;
            inf = dis_isinf (D.15420);
            if (inf == -1) goto <D.15421>; else goto <D.15422>;
            <D.15421>:
            output.3 = output;
            fprintf (output.3, "(00 00 80 ff)");
            goto <D.15423>;
            <D.15422>:
            if (inf == 1) goto <D.15424>; else goto <D.15425>;
            <D.15424>:
            output.3 = output;
            fprintf (output.3, "(00 00 80 7f)");
            goto <D.15426>;
            <D.15425>:
            f.15 = f;
            D.15420 = (double) f.15;
            D.15427 = dis_isnan (D.15420);
            if (D.15427 != 0) goto <D.15428>; else goto <D.15429>;
            <D.15428>:
            output.3 = output;
            fprintf (output.3, "(00 00 c0 ff)");
            goto <D.15430>;
            <D.15429>:
            {
              char * str;

              f.15 = f;
              D.15420 = (double) f.15;
              str = stringify_double (D.15420);
              output.3 = output;
              fprintf (output.3, "%s", str);
              monoeg_g_free (str);
            }
            <D.15430>:
            <D.15426>:
            <D.15423>:
            ptr = ptr + 4;
            goto <D.15228>;
          }
        finally
          {
            f = {CLOBBER};
          }
      }
      <D.15276>:
      {
        unsigned char x;

        x = *ptr;
        D.15431 = (int) x;
        output.3 = output;
        fprintf (output.3, "%d", D.15431);
        ptr = ptr + 1;
        goto <D.15228>;
      }
      <D.15278>:
      goto <D.15228>;
      <D.15228>:
      output.3 = output;
      fprintf (output.3, "\n");
      i = 0;
      goto <D.15280>;
      <D.15279>:
      D.15298 = mh->clauses;
      i.1 = (unsigned int) i;
      D.15299 = i.1 * 24;
      D.15300 = D.15298 + D.15299;
      D.15301 = D.15300->try_offset;
      D.15298 = mh->clauses;
      i.1 = (unsigned int) i;
      D.15299 = i.1 * 24;
      D.15300 = D.15298 + D.15299;
      D.15308 = D.15300->try_len;
      D.15432 = D.15301 + D.15308;
      D.15433 = start + D.15432;
      if (D.15433 == ptr) goto <D.15434>; else goto <D.15435>;
      <D.15434>:
      i.1 = (unsigned int) i;
      D.15296 = i.1 * 4;
      D.15297 = trys + D.15296;
      D.15316 = *D.15297;
      if (D.15316 != 0) goto <D.15436>; else goto <D.15437>;
      <D.15436>:
      D.15334 = indent_level == 0;
      D.15335 = (long int) D.15334;
      D.15336 = __builtin_expect (D.15335, 0);
      if (D.15336 != 0) goto <D.15438>; else goto <D.15439>;
      <D.15438>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "dis-cil.c", 309, "indent_level");
      <D.15439>:
      indent_level = indent_level + -1;
      D.15325 = indent_level * 2;
      indent[D.15325] = 0;
      output.3 = output;
      fprintf (output.3, "\t%s} // end .try %d\n", &indent, i);
      <D.15437>:
      <D.15435>:
      D.15298 = mh->clauses;
      i.1 = (unsigned int) i;
      D.15299 = i.1 * 24;
      D.15300 = D.15298 + D.15299;
      D.15327 = D.15300->handler_offset;
      D.15298 = mh->clauses;
      i.1 = (unsigned int) i;
      D.15299 = i.1 * 24;
      D.15300 = D.15298 + D.15299;
      D.15440 = D.15300->handler_len;
      D.15441 = D.15327 + D.15440;
      D.15442 = start + D.15441;
      if (D.15442 == ptr) goto <D.15443>; else goto <D.15444>;
      <D.15443>:
      D.15334 = indent_level == 0;
      D.15335 = (long int) D.15334;
      D.15336 = __builtin_expect (D.15335, 0);
      if (D.15336 != 0) goto <D.15445>; else goto <D.15446>;
      <D.15445>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "dis-cil.c", 313, "indent_level");
      <D.15446>:
      indent_level = indent_level + -1;
      D.15325 = indent_level * 2;
      indent[D.15325] = 0;
      output.3 = output;
      fprintf (output.3, "\t%s} // end handler %d\n", &indent, i);
      D.15298 = mh->clauses;
      i.1 = (unsigned int) i;
      D.15299 = i.1 * 24;
      D.15300 = D.15298 + D.15299;
      D.15331 = D.15300->flags;
      if (D.15331 == 4) goto <D.15447>; else goto <D.15448>;
      <D.15447>:
      in_fault = 0;
      <D.15448>:
      <D.15444>:
      i = i + 1;
      <D.15280>:
      D.15292 = mh->num_clauses;
      D.15312 = (int) D.15292;
      if (D.15312 > i) goto <D.15279>; else goto <D.15281>;
      <D.15281>:
      <D.15283>:
      if (ptr < end) goto <D.15282>; else goto <D.15284>;
      <D.15284>:
      if (trys != 0B) goto <D.15449>; else goto <D.15450>;
      <D.15449>:
      monoeg_g_free (trys);
      <D.15450>:
    }
  finally
    {
      indent = {CLOBBER};
      clause_names = {CLOBBER};
    }
}


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

  if (str != 0B) goto <D.15455>; else goto <D.15456>;
  <D.15455>:
  D.15457 = __strdup (str);
  return D.15457;
  <D.15456>:
  D.15457 = 0B;
  return D.15457;
}


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

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


