disassemble_cil (struct MonoImage * m, struct MonoMethodHeader * mh, struct MonoGenericContainer * container)
{
  unsigned int D.15532;
  sizetype D.15533;
  short unsigned int D.15534;
  short unsigned int D.15535;
  <unnamed-unsigned:15> D.15538;
  long unsigned int D.15539;
  long unsigned int D.15540;
  long unsigned int D.15541;
  long unsigned int D.15542;
  gboolean * D.15543;
  struct MonoExceptionClause * D.15544;
  long unsigned int D.15545;
  struct MonoExceptionClause * D.15546;
  unsigned int D.15547;
  long unsigned int D.15548;
  long unsigned int D.15549;
  struct MonoExceptionClause * D.15550;
  unsigned int D.15551;
  unsigned int D.15554;
  unsigned int D.15555;
  int D.15558;
  sizetype D.15559;
  const unsigned char * D.15560;
  int D.15563;
  struct FILE * output.0;
  _Bool D.15567;
  long int D.15568;
  long int D.15569;
  int D.15572;
  int D.15573;
  unsigned int D.15574;
  sizetype D.15575;
  const unsigned char * D.15576;
  unsigned int D.15579;
  _Bool D.15582;
  long int D.15583;
  long int D.15584;
  char * iftmp.1;
  struct MonoClass * D.15592;
  const char * D.15593;
  unsigned int D.15600;
  sizetype D.15601;
  const unsigned char * D.15602;
  const char * D.15605;
  long int ptr.2;
  long int start.3;
  long int D.15610;
  int D.15611;
  unsigned char D.15612;
  int D.15615;
  short unsigned int D.15619;
  const char * D.15621;
  unsigned char D.15622;
  int D.15623;
  unsigned int D.15624;
  int D.15625;
  int D.15626;
  long unsigned int D.15627;
  double r.4;
  double r.5;
  int D.15636;
  unsigned int D.15640;
  const char * us_ptr.6;
  const char * us_ptr.7;
  unsigned int D.15643;
  long unsigned int D.15644;
  long unsigned int D.15645;
  const char * iftmp.8;
  const char * iftmp.9;
  unsigned int D.15653;
  long int endswitch.10;
  long int D.15658;
  unsigned int D.15659;
  unsigned int D.15660;
  int D.15661;
  int D.15664;
  unsigned int D.15665;
  unsigned int D.15666;
  unsigned int D.15667;
  unsigned int D.15668;
  int D.15669;
  int D.15670;
  float f.11;
  float f.12;
  double D.15673;
  int D.15680;
  int D.15684;
  sizetype D.15685;
  sizetype D.15686;
  const unsigned char * D.15687;
  unsigned int D.15694;
  sizetype D.15695;
  sizetype D.15696;
  const unsigned char * D.15697;
  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.15532 = mh->code_size;
      size = (int) D.15532;
      D.15533 = (sizetype) size;
      end = start + D.15533;
      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.15534 = BIT_FIELD_REF <*mh, 16, 112>;
      D.15535 = D.15534 & 32767;
      if (D.15535 != 0) goto <D.15536>; else goto <D.15537>;
      <D.15536>:
      D.15538 = mh->num_clauses;
      D.15539 = (long unsigned int) D.15538;
      D.15540 = D.15539 * 4;
      trys = monoeg_malloc0 (D.15540);
      *trys = 1;
      i = 1;
      goto <D.15466>;
      <D.15465>:
      D.15541 = (long unsigned int) i;
      D.15542 = D.15541 * 4;
      D.15543 = trys + D.15542;
      *D.15543 = 1;
      j = 0;
      goto <D.15464>;
      <D.15463>:
      D.15544 = mh->clauses;
      D.15541 = (long unsigned int) i;
      D.15545 = D.15541 * 32;
      D.15546 = D.15544 + D.15545;
      D.15547 = D.15546->try_offset;
      D.15544 = mh->clauses;
      D.15548 = (long unsigned int) j;
      D.15549 = D.15548 * 32;
      D.15550 = D.15544 + D.15549;
      D.15551 = D.15550->try_offset;
      if (D.15547 == D.15551) goto <D.15552>; else goto <D.15553>;
      <D.15552>:
      D.15544 = mh->clauses;
      D.15541 = (long unsigned int) i;
      D.15545 = D.15541 * 32;
      D.15546 = D.15544 + D.15545;
      D.15554 = D.15546->try_len;
      D.15544 = mh->clauses;
      D.15548 = (long unsigned int) j;
      D.15549 = D.15548 * 32;
      D.15550 = D.15544 + D.15549;
      D.15555 = D.15550->try_len;
      if (D.15554 == D.15555) goto <D.15556>; else goto <D.15557>;
      <D.15556>:
      D.15541 = (long unsigned int) i;
      D.15542 = D.15541 * 4;
      D.15543 = trys + D.15542;
      *D.15543 = 0;
      goto <D.15462>;
      <D.15557>:
      <D.15553>:
      j = j + 1;
      <D.15464>:
      if (j < i) goto <D.15463>; else goto <D.15462>;
      <D.15462>:
      i = i + 1;
      <D.15466>:
      D.15538 = mh->num_clauses;
      D.15558 = (int) D.15538;
      if (D.15558 > i) goto <D.15465>; else goto <D.15467>;
      <D.15467>:
      <D.15537>:
      goto <D.15529>;
      <D.15528>:
      D.15538 = mh->num_clauses;
      D.15558 = (int) D.15538;
      i = D.15558 + -1;
      goto <D.15470>;
      <D.15469>:
      D.15544 = mh->clauses;
      D.15541 = (long unsigned int) i;
      D.15545 = D.15541 * 32;
      D.15546 = D.15544 + D.15545;
      D.15547 = D.15546->try_offset;
      D.15559 = (sizetype) D.15547;
      D.15560 = start + D.15559;
      if (D.15560 == ptr) goto <D.15561>; else goto <D.15562>;
      <D.15561>:
      D.15541 = (long unsigned int) i;
      D.15542 = D.15541 * 4;
      D.15543 = trys + D.15542;
      D.15563 = *D.15543;
      if (D.15563 != 0) goto <D.15564>; else goto <D.15565>;
      <D.15564>:
      output.0 = output;
      fprintf (output.0, "\t%s.try { // %d\n", &indent, i);
      D.15567 = indent_level > 511;
      D.15568 = (long int) D.15567;
      D.15569 = __builtin_expect (D.15568, 0);
      if (D.15569 != 0) goto <D.15570>; else goto <D.15571>;
      <D.15570>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "dis-cil.c", 80, "indent_level < 512");
      <D.15571>:
      D.15572 = indent_level * 2;
      indent[D.15572] = 32;
      D.15572 = indent_level * 2;
      D.15573 = D.15572 + 1;
      indent[D.15573] = 32;
      indent_level = indent_level + 1;
      D.15572 = indent_level * 2;
      indent[D.15572] = 0;
      <D.15565>:
      <D.15562>:
      D.15544 = mh->clauses;
      D.15541 = (long unsigned int) i;
      D.15545 = D.15541 * 32;
      D.15546 = D.15544 + D.15545;
      D.15574 = D.15546->handler_offset;
      D.15575 = (sizetype) D.15574;
      D.15576 = start + D.15575;
      if (D.15576 == ptr) goto <D.15577>; else goto <D.15578>;
      <D.15577>:
      D.15544 = mh->clauses;
      D.15541 = (long unsigned int) i;
      D.15545 = D.15541 * 32;
      D.15546 = D.15544 + D.15545;
      D.15579 = D.15546->flags;
      if (D.15579 == 1) goto <D.15580>; else goto <D.15581>;
      <D.15580>:
      D.15582 = indent_level == 0;
      D.15583 = (long int) D.15582;
      D.15584 = __builtin_expect (D.15583, 0);
      if (D.15584 != 0) goto <D.15585>; else goto <D.15586>;
      <D.15585>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "dis-cil.c", 85, "indent_level");
      <D.15586>:
      indent_level = indent_level + -1;
      D.15572 = indent_level * 2;
      indent[D.15572] = 0;
      output.0 = output;
      fprintf (output.0, "\t%s} { // %d\n", &indent, i);
      goto <D.15587>;
      <D.15581>:
      {
        char * klass;

        D.15544 = mh->clauses;
        D.15541 = (long unsigned int) i;
        D.15545 = D.15541 * 32;
        D.15546 = D.15544 + D.15545;
        D.15579 = D.15546->flags;
        if (D.15579 != 0) goto <D.15589>; else goto <D.15590>;
        <D.15589>:
        iftmp.1 = monoeg_strdup ("");
        goto <D.15591>;
        <D.15590>:
        D.15544 = mh->clauses;
        D.15541 = (long unsigned int) i;
        D.15545 = D.15541 * 32;
        D.15546 = D.15544 + D.15545;
        D.15592 = D.15546->data.catch_class;
        iftmp.1 = dis_stringify_object_with_class (m, D.15592, 1, 0);
        <D.15591>:
        klass = iftmp.1;
        D.15544 = mh->clauses;
        D.15541 = (long unsigned int) i;
        D.15545 = D.15541 * 32;
        D.15546 = D.15544 + D.15545;
        D.15579 = D.15546->flags;
        D.15593 = clause_names[D.15579];
        output.0 = output;
        fprintf (output.0, "\t%s%s %s { // %d\n", &indent, D.15593, klass, i);
        monoeg_g_free (klass);
      }
      <D.15587>:
      D.15567 = indent_level > 511;
      D.15568 = (long int) D.15567;
      D.15569 = __builtin_expect (D.15568, 0);
      if (D.15569 != 0) goto <D.15594>; else goto <D.15595>;
      <D.15594>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "dis-cil.c", 95, "indent_level < 512");
      <D.15595>:
      D.15572 = indent_level * 2;
      indent[D.15572] = 32;
      D.15572 = indent_level * 2;
      D.15573 = D.15572 + 1;
      indent[D.15573] = 32;
      indent_level = indent_level + 1;
      D.15572 = indent_level * 2;
      indent[D.15572] = 0;
      D.15544 = mh->clauses;
      D.15541 = (long unsigned int) i;
      D.15545 = D.15541 * 32;
      D.15546 = D.15544 + D.15545;
      D.15579 = D.15546->flags;
      if (D.15579 == 4) goto <D.15596>; else goto <D.15597>;
      <D.15596>:
      in_fault = 1;
      <D.15597>:
      <D.15578>:
      D.15544 = mh->clauses;
      D.15541 = (long unsigned int) i;
      D.15545 = D.15541 * 32;
      D.15546 = D.15544 + D.15545;
      D.15579 = D.15546->flags;
      if (D.15579 == 1) goto <D.15598>; else goto <D.15599>;
      <D.15598>:
      D.15544 = mh->clauses;
      D.15541 = (long unsigned int) i;
      D.15545 = D.15541 * 32;
      D.15546 = D.15544 + D.15545;
      D.15600 = D.15546->data.filter_offset;
      D.15601 = (sizetype) D.15600;
      D.15602 = start + D.15601;
      if (D.15602 == ptr) goto <D.15603>; else goto <D.15604>;
      <D.15603>:
      D.15605 = clause_names[1];
      output.0 = output;
      fprintf (output.0, "\t%s%s {\n", &indent, D.15605);
      D.15567 = indent_level > 511;
      D.15568 = (long int) D.15567;
      D.15569 = __builtin_expect (D.15568, 0);
      if (D.15569 != 0) goto <D.15606>; else goto <D.15607>;
      <D.15606>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "dis-cil.c", 101, "indent_level < 512");
      <D.15607>:
      D.15572 = indent_level * 2;
      indent[D.15572] = 32;
      D.15572 = indent_level * 2;
      D.15573 = D.15572 + 1;
      indent[D.15573] = 32;
      indent_level = indent_level + 1;
      D.15572 = indent_level * 2;
      indent[D.15572] = 0;
      <D.15604>:
      <D.15599>:
      i = i + -1;
      <D.15470>:
      if (i >= 0) goto <D.15469>; else goto <D.15471>;
      <D.15471>:
      ptr.2 = (long int) ptr;
      start.3 = (long int) start;
      D.15610 = ptr.2 - start.3;
      D.15611 = (int) D.15610;
      output.0 = output;
      fprintf (output.0, "\t%sIL_%04x: ", &indent, D.15611);
      D.15612 = *ptr;
      i = (int) D.15612;
      D.15612 = *ptr;
      if (D.15612 == 254) goto <D.15613>; else goto <D.15614>;
      <D.15613>:
      ptr = ptr + 1;
      D.15612 = *ptr;
      D.15615 = (int) D.15612;
      i = D.15615 + 256;
      <D.15614>:
      entry = &mono_opcodes[i];
      if (in_fault != 0) goto <D.15618>; else goto <D.15616>;
      <D.15618>:
      D.15619 = entry->opval;
      if (D.15619 == 220) goto <D.15620>; else goto <D.15616>;
      <D.15620>:
      output.0 = output;
      fprintf (output.0, " %s", "endfault");
      goto <D.15617>;
      <D.15616>:
      D.15621 = mono_opcode_name (i);
      output.0 = output;
      fprintf (output.0, " %s ", D.15621);
      <D.15617>:
      ptr = ptr + 1;
      D.15622 = entry->argument;
      D.15623 = (int) D.15622;
      switch (D.15623) <default: <D.15524>, case 0: <D.15485>, case 1: <D.15508>, case 2: <D.15475>, case 3: <D.15482>, case 4: <D.15505>, case 5: <D.15493>, case 6: <D.15491>, case 7: <D.15511>, case 8: <D.15522>, case 9: <D.15472>, case 10: <D.15513>, case 11: <D.15498>, case 12: <D.15486>, case 13: <D.15517>, case 14: <D.15478>, case 15: <D.15515>, case 16: <D.15480>>
      <D.15472>:
      {
        gint target;

        D.15624 = MEM[(const guint32 *)ptr];
        target = (gint) D.15624;
        ptr.2 = (long int) ptr;
        start.3 = (long int) start;
        D.15610 = ptr.2 - start.3;
        D.15611 = (int) D.15610;
        D.15625 = D.15611 + 4;
        D.15626 = D.15625 + target;
        output.0 = output;
        fprintf (output.0, "IL_%04x\n", D.15626);
        ptr = ptr + 4;
        goto <D.15474>;
      }
      <D.15475>:
      {
        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.15474>;
      }
      <D.15478>:
      {
        int value;

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

        D.15627 = MEM[(const guint64 *)ptr];
        top = (gint64) D.15627;
        output.0 = output;
        fprintf (output.0, "0x%llx", top);
        ptr = ptr + 8;
        goto <D.15474>;
      }
      <D.15482>:
      {
        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.15474>;
      }
      <D.15485>:
      goto <D.15474>;
      <D.15486>:
      {
        double r;
        int inf;

        try
          {
            {
              union mono_rdouble mf;

              try
                {
                  D.15627 = MEM[(const guint64 *)ptr];
                  mf.ival = D.15627;
                  r.4 = mf.fval;
                  r = r.4;
                }
              finally
                {
                  mf = {CLOBBER};
                }
            }
            r.5 = r;
            inf = dis_isinf (r.5);
            if (inf == -1) goto <D.15630>; else goto <D.15631>;
            <D.15630>:
            output.0 = output;
            fprintf (output.0, "(00 00 00 00 00 00 f0 ff)");
            goto <D.15632>;
            <D.15631>:
            if (inf == 1) goto <D.15633>; else goto <D.15634>;
            <D.15633>:
            output.0 = output;
            fprintf (output.0, "(00 00 00 00 00 00 f0 7f)");
            goto <D.15635>;
            <D.15634>:
            r.5 = r;
            D.15636 = dis_isnan (r.5);
            if (D.15636 != 0) goto <D.15637>; else goto <D.15638>;
            <D.15637>:
            output.0 = output;
            fprintf (output.0, "(00 00 00 00 00 00 f8 ff)");
            goto <D.15639>;
            <D.15638>:
            {
              char * str;

              r.5 = r;
              str = stringify_double (r.5);
              output.0 = output;
              fprintf (output.0, "%s", str);
              monoeg_g_free (str);
            }
            <D.15639>:
            <D.15635>:
            <D.15632>:
            ptr = ptr + 8;
            goto <D.15474>;
          }
        finally
          {
            r = {CLOBBER};
          }
      }
      <D.15491>:
      {
        guint32 token;

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

        try
          {
            token = MEM[(const guint32 *)ptr];
            D.15640 = token & 16777215;
            us_ptr.6 = mono_metadata_user_string (m, D.15640);
            us_ptr = us_ptr.6;
            us_ptr.7 = us_ptr;
            D.15643 = mono_metadata_decode_blob_size (us_ptr.7, &us_ptr);
            len = (int) D.15643;
            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.15474>;
          }
        finally
          {
            us_ptr = {CLOBBER};
          }
      }
      <D.15498>:
      {
        guint32 count;
        const unsigned char * endswitch;
        guint32 n;

        count = MEM[(const guint32 *)ptr];
        ptr = ptr + 4;
        D.15644 = (long unsigned int) count;
        D.15645 = D.15644 * 4;
        endswitch = ptr + D.15645;
        if (count != 0) goto <D.15647>; else goto <D.15648>;
        <D.15647>:
        iftmp.8 = "(\n";
        goto <D.15649>;
        <D.15648>:
        iftmp.8 = "( )";
        <D.15649>:
        output.0 = output;
        fprintf (output.0, iftmp.8);
        D.15567 = indent_level > 511;
        D.15568 = (long int) D.15567;
        D.15569 = __builtin_expect (D.15568, 0);
        if (D.15569 != 0) goto <D.15650>; else goto <D.15651>;
        <D.15650>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "dis-cil.c", 217, "indent_level < 512");
        <D.15651>:
        D.15572 = indent_level * 2;
        indent[D.15572] = 32;
        D.15572 = indent_level * 2;
        D.15573 = D.15572 + 1;
        indent[D.15573] = 32;
        indent_level = indent_level + 1;
        D.15572 = indent_level * 2;
        indent[D.15572] = 0;
        n = 0;
        goto <D.15503>;
        <D.15502>:
        D.15653 = count + 4294967295;
        if (D.15653 == n) goto <D.15654>; else goto <D.15655>;
        <D.15654>:
        iftmp.9 = ")";
        goto <D.15656>;
        <D.15655>:
        iftmp.9 = ",\n";
        <D.15656>:
        endswitch.10 = (long int) endswitch;
        start.3 = (long int) start;
        D.15658 = endswitch.10 - start.3;
        D.15659 = (unsigned int) D.15658;
        D.15624 = MEM[(const guint32 *)ptr];
        D.15660 = D.15659 + D.15624;
        D.15661 = (int) D.15660;
        output.0 = output;
        fprintf (output.0, "\t%sIL_%04x%s", &indent, D.15661, iftmp.9);
        ptr = ptr + 4;
        n = n + 1;
        <D.15503>:
        if (n < count) goto <D.15502>; else goto <D.15504>;
        <D.15504>:
        D.15582 = indent_level == 0;
        D.15583 = (long int) D.15582;
        D.15584 = __builtin_expect (D.15583, 0);
        if (D.15584 != 0) goto <D.15662>; else goto <D.15663>;
        <D.15662>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "dis-cil.c", 224, "indent_level");
        <D.15663>:
        indent_level = indent_level + -1;
        D.15572 = indent_level * 2;
        indent[D.15572] = 0;
        goto <D.15474>;
      }
      <D.15505>:
      {
        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.15474>;
      }
      <D.15508>:
      {
        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.15474>;
      }
      <D.15511>:
      {
        guint16 var_idx;

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

        D.15612 = *ptr;
        x = (signed char) D.15612;
        ptr.2 = (long int) ptr;
        start.3 = (long int) start;
        D.15610 = ptr.2 - start.3;
        D.15665 = (unsigned int) D.15610;
        D.15666 = (unsigned int) x;
        D.15667 = D.15665 + D.15666;
        D.15668 = D.15667 + 1;
        D.15669 = (int) D.15668;
        output.0 = output;
        fprintf (output.0, "IL_%04x\n", D.15669);
        ptr = ptr + 1;
        goto <D.15474>;
      }
      <D.15515>:
      {
        char x;

        D.15612 = *ptr;
        x = (char) D.15612;
        D.15670 = (int) x;
        output.0 = output;
        fprintf (output.0, "0x%02x", D.15670);
        ptr = ptr + 1;
        goto <D.15474>;
      }
      <D.15517>:
      {
        float f;
        int inf;

        try
          {
            {
              union mono_rfloat mf;

              try
                {
                  D.15624 = MEM[(const guint32 *)ptr];
                  mf.ival = D.15624;
                  f.11 = mf.fval;
                  f = f.11;
                }
              finally
                {
                  mf = {CLOBBER};
                }
            }
            f.12 = f;
            D.15673 = (double) f.12;
            inf = dis_isinf (D.15673);
            if (inf == -1) goto <D.15674>; else goto <D.15675>;
            <D.15674>:
            output.0 = output;
            fprintf (output.0, "(00 00 80 ff)");
            goto <D.15676>;
            <D.15675>:
            if (inf == 1) goto <D.15677>; else goto <D.15678>;
            <D.15677>:
            output.0 = output;
            fprintf (output.0, "(00 00 80 7f)");
            goto <D.15679>;
            <D.15678>:
            f.12 = f;
            D.15673 = (double) f.12;
            D.15680 = dis_isnan (D.15673);
            if (D.15680 != 0) goto <D.15681>; else goto <D.15682>;
            <D.15681>:
            output.0 = output;
            fprintf (output.0, "(00 00 c0 ff)");
            goto <D.15683>;
            <D.15682>:
            {
              char * str;

              f.12 = f;
              D.15673 = (double) f.12;
              str = stringify_double (D.15673);
              output.0 = output;
              fprintf (output.0, "%s", str);
              monoeg_g_free (str);
            }
            <D.15683>:
            <D.15679>:
            <D.15676>:
            ptr = ptr + 4;
            goto <D.15474>;
          }
        finally
          {
            f = {CLOBBER};
          }
      }
      <D.15522>:
      {
        unsigned char x;

        x = *ptr;
        D.15684 = (int) x;
        output.0 = output;
        fprintf (output.0, "%d", D.15684);
        ptr = ptr + 1;
        goto <D.15474>;
      }
      <D.15524>:
      goto <D.15474>;
      <D.15474>:
      output.0 = output;
      fprintf (output.0, "\n");
      i = 0;
      goto <D.15526>;
      <D.15525>:
      D.15544 = mh->clauses;
      D.15541 = (long unsigned int) i;
      D.15545 = D.15541 * 32;
      D.15546 = D.15544 + D.15545;
      D.15547 = D.15546->try_offset;
      D.15559 = (sizetype) D.15547;
      D.15544 = mh->clauses;
      D.15541 = (long unsigned int) i;
      D.15545 = D.15541 * 32;
      D.15546 = D.15544 + D.15545;
      D.15554 = D.15546->try_len;
      D.15685 = (sizetype) D.15554;
      D.15686 = D.15559 + D.15685;
      D.15687 = start + D.15686;
      if (D.15687 == ptr) goto <D.15688>; else goto <D.15689>;
      <D.15688>:
      D.15541 = (long unsigned int) i;
      D.15542 = D.15541 * 4;
      D.15543 = trys + D.15542;
      D.15563 = *D.15543;
      if (D.15563 != 0) goto <D.15690>; else goto <D.15691>;
      <D.15690>:
      D.15582 = indent_level == 0;
      D.15583 = (long int) D.15582;
      D.15584 = __builtin_expect (D.15583, 0);
      if (D.15584 != 0) goto <D.15692>; else goto <D.15693>;
      <D.15692>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "dis-cil.c", 309, "indent_level");
      <D.15693>:
      indent_level = indent_level + -1;
      D.15572 = indent_level * 2;
      indent[D.15572] = 0;
      output.0 = output;
      fprintf (output.0, "\t%s} // end .try %d\n", &indent, i);
      <D.15691>:
      <D.15689>:
      D.15544 = mh->clauses;
      D.15541 = (long unsigned int) i;
      D.15545 = D.15541 * 32;
      D.15546 = D.15544 + D.15545;
      D.15574 = D.15546->handler_offset;
      D.15575 = (sizetype) D.15574;
      D.15544 = mh->clauses;
      D.15541 = (long unsigned int) i;
      D.15545 = D.15541 * 32;
      D.15546 = D.15544 + D.15545;
      D.15694 = D.15546->handler_len;
      D.15695 = (sizetype) D.15694;
      D.15696 = D.15575 + D.15695;
      D.15697 = start + D.15696;
      if (D.15697 == ptr) goto <D.15698>; else goto <D.15699>;
      <D.15698>:
      D.15582 = indent_level == 0;
      D.15583 = (long int) D.15582;
      D.15584 = __builtin_expect (D.15583, 0);
      if (D.15584 != 0) goto <D.15700>; else goto <D.15701>;
      <D.15700>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "dis-cil.c", 313, "indent_level");
      <D.15701>:
      indent_level = indent_level + -1;
      D.15572 = indent_level * 2;
      indent[D.15572] = 0;
      output.0 = output;
      fprintf (output.0, "\t%s} // end handler %d\n", &indent, i);
      D.15544 = mh->clauses;
      D.15541 = (long unsigned int) i;
      D.15545 = D.15541 * 32;
      D.15546 = D.15544 + D.15545;
      D.15579 = D.15546->flags;
      if (D.15579 == 4) goto <D.15702>; else goto <D.15703>;
      <D.15702>:
      in_fault = 0;
      <D.15703>:
      <D.15699>:
      i = i + 1;
      <D.15526>:
      D.15538 = mh->num_clauses;
      D.15558 = (int) D.15538;
      if (D.15558 > i) goto <D.15525>; else goto <D.15527>;
      <D.15527>:
      <D.15529>:
      if (ptr < end) goto <D.15528>; else goto <D.15530>;
      <D.15530>:
      if (trys != 0B) goto <D.15704>; else goto <D.15705>;
      <D.15704>:
      monoeg_g_free (trys);
      <D.15705>:
    }
  finally
    {
      indent = {CLOBBER};
      clause_names = {CLOBBER};
    }
}


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

  if (str != 0B) goto <D.15710>; else goto <D.15711>;
  <D.15710>:
  D.15712 = __strdup (str);
  return D.15712;
  <D.15711>:
  D.15712 = 0B;
  return D.15712;
}


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

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


