mono_ppc_create_pre_code_ftnptr (guint8 * code)
{
  guint8 * D.22629;
  struct MonoPPCFunctionDescriptor * ftnptr;

  ftnptr = code;
  code = code + 24;
  ftnptr->code = code;
  ftnptr->toc = 0B;
  ftnptr->env = 0B;
  D.22629 = code;
  return D.22629;
}


mono_arch_get_restore_context (struct MonoTrampInfo * * info, gboolean aot)
{
  int D.22633;
  unsigned int D.22634;
  unsigned int __o.0;
  unsigned int D.22636;
  unsigned int D.22637;
  unsigned int D.22638;
  unsigned int D.22639;
  unsigned int D.22640;
  unsigned int D.22641;
  unsigned int D.22642;
  unsigned int D.22643;
  unsigned int D.22644;
  unsigned int D.22645;
  unsigned int D.22646;
  unsigned int D.22647;
  unsigned int D.22648;
  unsigned int __o.1;
  unsigned int D.22650;
  int D.22651;
  int D.22652;
  int D.22653;
  long unsigned int D.22654;
  short unsigned int D.22655;
  short unsigned int D.22656;
  short unsigned int D.22657;
  int D.22658;
  int D.22659;
  unsigned int D.22660;
  unsigned int D.22661;
  unsigned int D.22662;
  unsigned int D.22663;
  unsigned int D.22664;
  unsigned int D.22665;
  unsigned int D.22666;
  unsigned int D.22667;
  unsigned int D.22668;
  unsigned int D.22669;
  long int code.2;
  long int start.3;
  long int D.22672;
  long int D.22673;
  _Bool D.22674;
  long int D.22675;
  long int D.22676;
  int D.22679;
  unsigned int D.22682;
  struct MonoTrampInfo * D.22683;
  void * D.22684;
  guint8 * start;
  guint8 * code;
  int size;
  struct MonoJumpInfo * ji;
  struct GSList * unwind_ops;

  size = 196;
  ji = 0B;
  unwind_ops = 0B;
  start = mono_global_codeman_reserve (size);
  code = start;
  if (aot == 0) goto <D.22631>; else goto <D.22632>;
  <D.22631>:
  code = mono_ppc_create_pre_code_ftnptr (code);
  <D.22632>:
  {
    int reg;

    MEM[(guint32 *)code] = 33768;
    code = code + 4;
    {
      int __i;
      int __o;

      __o = 16;
      __i = 13;
      goto <D.22464>;
      <D.22463>:
      D.22633 = __i << 21;
      D.22634 = (unsigned int) D.22633;
      __o.0 = (unsigned int) __o;
      D.22636 = __o.0 & 65532;
      D.22637 = D.22634 | D.22636;
      D.22638 = D.22637 | 3892510720;
      D.22639 = D.22638 << 24;
      D.22633 = __i << 21;
      D.22634 = (unsigned int) D.22633;
      __o.0 = (unsigned int) __o;
      D.22636 = __o.0 & 65532;
      D.22637 = D.22634 | D.22636;
      D.22640 = D.22637 & 16515072;
      D.22641 = D.22640 | 196608;
      D.22642 = D.22641 >> 8;
      D.22643 = D.22639 | D.22642;
      D.22633 = __i << 21;
      D.22634 = (unsigned int) D.22633;
      __o.0 = (unsigned int) __o;
      D.22636 = __o.0 & 65532;
      D.22637 = D.22634 | D.22636;
      D.22644 = D.22637 & 65280;
      D.22645 = D.22644 << 8;
      D.22646 = D.22643 | D.22645;
      D.22633 = __i << 21;
      D.22634 = (unsigned int) D.22633;
      __o.0 = (unsigned int) __o;
      D.22636 = __o.0 & 65532;
      D.22637 = D.22634 | D.22636;
      D.22638 = D.22637 | 3892510720;
      D.22647 = D.22638 >> 24;
      D.22648 = D.22646 | D.22647;
      MEM[(guint32 *)code] = D.22648;
      code = code + 4;
      __o.1 = (unsigned int) __o;
      D.22650 = __o.1 + 8;
      __o = (int) D.22650;
      __i = __i + 1;
      <D.22464>:
      if (__i <= 31) goto <D.22463>; else goto <D.22465>;
      <D.22465>:
    }
    reg = 0;
    goto <D.22467>;
    <D.22466>:
    D.22651 = reg + 14;
    D.22652 = D.22651 << 21;
    D.22653 = D.22652 | -939327488;
    D.22654 = (long unsigned int) reg;
    D.22655 = (short unsigned int) D.22654;
    D.22656 = D.22655 + 21;
    D.22657 = D.22656 * 8;
    D.22658 = (int) D.22657;
    D.22659 = D.22653 | D.22658;
    D.22660 = (unsigned int) D.22659;
    D.22661 = D.22660 << 24;
    D.22651 = reg + 14;
    D.22652 = D.22651 << 21;
    D.22653 = D.22652 | -939327488;
    D.22654 = (long unsigned int) reg;
    D.22655 = (short unsigned int) D.22654;
    D.22656 = D.22655 + 21;
    D.22657 = D.22656 * 8;
    D.22658 = (int) D.22657;
    D.22659 = D.22653 | D.22658;
    D.22660 = (unsigned int) D.22659;
    D.22662 = D.22660 & 16711680;
    D.22663 = D.22662 >> 8;
    D.22664 = D.22661 | D.22663;
    D.22651 = reg + 14;
    D.22652 = D.22651 << 21;
    D.22653 = D.22652 | -939327488;
    D.22654 = (long unsigned int) reg;
    D.22655 = (short unsigned int) D.22654;
    D.22656 = D.22655 + 21;
    D.22657 = D.22656 * 8;
    D.22658 = (int) D.22657;
    D.22659 = D.22653 | D.22658;
    D.22660 = (unsigned int) D.22659;
    D.22665 = D.22660 & 65280;
    D.22666 = D.22665 << 8;
    D.22667 = D.22664 | D.22666;
    D.22651 = reg + 14;
    D.22652 = D.22651 << 21;
    D.22653 = D.22652 | -939327488;
    D.22654 = (long unsigned int) reg;
    D.22655 = (short unsigned int) D.22654;
    D.22656 = D.22655 + 21;
    D.22657 = D.22656 * 8;
    D.22658 = (int) D.22657;
    D.22659 = D.22653 | D.22658;
    D.22660 = (unsigned int) D.22659;
    D.22668 = D.22660 >> 24;
    D.22669 = D.22667 | D.22668;
    MEM[(guint32 *)code] = D.22669;
    code = code + 4;
    reg = reg + 1;
    <D.22467>:
    if (reg <= 17) goto <D.22466>; else goto <D.22468>;
    <D.22468>:
  }
  MEM[(guint32 *)code] = 134226920;
  code = code + 4;
  MEM[(guint32 *)code] = 2785249660;
  code = code + 4;
  MEM[(guint32 *)code] = 537165902;
  code = code + 4;
  MEM[(guint32 *)code] = 134275199;
  code = code + 4;
  code.2 = (long int) code;
  start.3 = (long int) start;
  D.22672 = code.2 - start.3;
  D.22673 = (long int) size;
  D.22674 = D.22672 > D.22673;
  D.22675 = (long int) D.22674;
  D.22676 = __builtin_expect (D.22675, 0);
  if (D.22676 != 0) goto <D.22677>; else goto <D.22678>;
  <D.22677>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "exceptions-ppc.c", 219, "(code - start) <= size");
  <D.22678>:
  code.2 = (long int) code;
  start.3 = (long int) start;
  D.22672 = code.2 - start.3;
  D.22679 = (int) D.22672;
  mono_arch_flush_icache (start, D.22679);
  if (info != 0B) goto <D.22680>; else goto <D.22681>;
  <D.22680>:
  code.2 = (long int) code;
  start.3 = (long int) start;
  D.22672 = code.2 - start.3;
  D.22682 = (unsigned int) D.22672;
  D.22683 = mono_tramp_info_create ("restore_context", start, D.22682, ji, unwind_ops);
  *info = D.22683;
  <D.22681>:
  D.22684 = start;
  return D.22684;
}


mono_arch_get_call_filter (struct MonoTrampInfo * * info, gboolean aot)
{
  int D.22688;
  _Bool D.22689;
  long int D.22690;
  long int D.22691;
  int D.22694;
  unsigned int D.22695;
  unsigned int D.22696;
  unsigned int D.22697;
  unsigned int D.22698;
  unsigned int D.22699;
  unsigned int D.22700;
  unsigned int D.22701;
  unsigned int D.22702;
  unsigned int D.22703;
  unsigned int D.22704;
  int D.22705;
  unsigned int D.22706;
  unsigned int __o.4;
  unsigned int D.22708;
  unsigned int D.22709;
  unsigned int D.22710;
  unsigned int D.22711;
  unsigned int D.22712;
  unsigned int D.22713;
  unsigned int D.22714;
  unsigned int D.22715;
  unsigned int D.22716;
  unsigned int D.22717;
  unsigned int D.22718;
  unsigned int D.22719;
  unsigned int D.22720;
  unsigned int __o.5;
  unsigned int D.22722;
  int D.22723;
  int D.22724;
  int D.22725;
  long unsigned int D.22726;
  short unsigned int D.22727;
  short unsigned int D.22728;
  short unsigned int D.22729;
  int D.22730;
  int D.22731;
  unsigned int D.22732;
  unsigned int D.22733;
  unsigned int D.22734;
  unsigned int D.22735;
  unsigned int D.22736;
  unsigned int D.22737;
  unsigned int D.22738;
  unsigned int D.22739;
  unsigned int D.22740;
  unsigned int D.22741;
  int D.22742;
  unsigned int D.22743;
  unsigned int D.22744;
  unsigned int D.22745;
  unsigned int D.22746;
  unsigned int D.22747;
  unsigned int D.22748;
  unsigned int D.22749;
  unsigned int D.22750;
  unsigned int D.22751;
  unsigned int D.22752;
  unsigned int pos.6;
  unsigned int D.22754;
  int D.22755;
  int D.22756;
  short unsigned int D.22757;
  int D.22758;
  int D.22759;
  unsigned int D.22760;
  unsigned int D.22761;
  unsigned int D.22762;
  unsigned int D.22763;
  unsigned int D.22764;
  unsigned int D.22765;
  unsigned int D.22766;
  unsigned int D.22767;
  unsigned int D.22768;
  unsigned int D.22769;
  unsigned int D.22770;
  int D.22771;
  unsigned int D.22772;
  unsigned int __o.7;
  unsigned int D.22774;
  unsigned int D.22775;
  unsigned int D.22776;
  unsigned int D.22777;
  unsigned int D.22778;
  unsigned int D.22779;
  unsigned int D.22780;
  unsigned int D.22781;
  unsigned int D.22782;
  unsigned int D.22783;
  unsigned int D.22784;
  unsigned int D.22785;
  unsigned int D.22786;
  unsigned int __o.8;
  unsigned int D.22788;
  short unsigned int D.22789;
  int D.22790;
  int D.22791;
  unsigned int D.22792;
  unsigned int D.22793;
  unsigned int D.22794;
  unsigned int D.22795;
  unsigned int D.22796;
  unsigned int D.22797;
  unsigned int D.22798;
  unsigned int D.22799;
  unsigned int D.22800;
  unsigned int D.22801;
  unsigned int D.22802;
  unsigned int D.22803;
  long int code.9;
  long int start.10;
  long int D.22806;
  long int D.22807;
  _Bool D.22808;
  long int D.22809;
  long int D.22810;
  int D.22813;
  unsigned int D.22816;
  struct MonoTrampInfo * D.22817;
  void * D.22818;
  guint8 * start;
  guint8 * code;
  int alloc_size;
  int pos;
  int i;
  int size;
  struct MonoJumpInfo * ji;
  struct GSList * unwind_ops;

  size = 524;
  ji = 0B;
  unwind_ops = 0B;
  start = mono_global_codeman_reserve (size);
  code = start;
  if (aot == 0) goto <D.22686>; else goto <D.22687>;
  <D.22686>:
  code = mono_ppc_create_pre_code_ftnptr (code);
  <D.22687>:
  MEM[(guint32 *)code] = 2785151100;
  code = code + 4;
  MEM[(guint32 *)code] = 268435960;
  code = code + 4;
  alloc_size = 416;
  D.22688 = alloc_size & 15;
  D.22689 = D.22688 != 0;
  D.22690 = (long int) D.22689;
  D.22691 = __builtin_expect (D.22690, 0);
  if (D.22691 != 0) goto <D.22692>; else goto <D.22693>;
  <D.22692>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "exceptions-ppc.c", 277, "(alloc_size & (MONO_ARCH_FRAME_ALIGNMENT-1)) == 0");
  <D.22693>:
  MEM[(guint32 *)code] = 134218728;
  code = code + 4;
  MEM[(guint32 *)code] = 704643196;
  code = code + 4;
  D.22694 = -alloc_size;
  D.22695 = (unsigned int) D.22694;
  D.22696 = D.22695 & 65532;
  D.22697 = D.22696 | 4160815105;
  D.22698 = D.22697 << 24;
  D.22694 = -alloc_size;
  D.22695 = (unsigned int) D.22694;
  D.22699 = D.22695 & 65280;
  D.22700 = D.22699 << 8;
  D.22701 = D.22698 | D.22700;
  D.22694 = -alloc_size;
  D.22695 = (unsigned int) D.22694;
  D.22696 = D.22695 & 65532;
  D.22697 = D.22696 | 4160815105;
  D.22702 = D.22697 >> 24;
  D.22703 = D.22701 | D.22702;
  D.22704 = D.22703 | 256;
  MEM[(guint32 *)code] = D.22704;
  code = code + 4;
  code = emit_save_saved_regs (code, alloc_size);
  {
    int reg;

    MEM[(guint32 *)code] = 50152;
    code = code + 4;
    {
      int __i;
      int __o;

      __o = 16;
      __i = 13;
      goto <D.22498>;
      <D.22497>:
      D.22705 = __i << 21;
      D.22706 = (unsigned int) D.22705;
      __o.4 = (unsigned int) __o;
      D.22708 = __o.4 & 65532;
      D.22709 = D.22706 | D.22708;
      D.22710 = D.22709 | 3892510720;
      D.22711 = D.22710 << 24;
      D.22705 = __i << 21;
      D.22706 = (unsigned int) D.22705;
      __o.4 = (unsigned int) __o;
      D.22708 = __o.4 & 65532;
      D.22709 = D.22706 | D.22708;
      D.22712 = D.22709 & 16515072;
      D.22713 = D.22712 | 196608;
      D.22714 = D.22713 >> 8;
      D.22715 = D.22711 | D.22714;
      D.22705 = __i << 21;
      D.22706 = (unsigned int) D.22705;
      __o.4 = (unsigned int) __o;
      D.22708 = __o.4 & 65532;
      D.22709 = D.22706 | D.22708;
      D.22716 = D.22709 & 65280;
      D.22717 = D.22716 << 8;
      D.22718 = D.22715 | D.22717;
      D.22705 = __i << 21;
      D.22706 = (unsigned int) D.22705;
      __o.4 = (unsigned int) __o;
      D.22708 = __o.4 & 65532;
      D.22709 = D.22706 | D.22708;
      D.22710 = D.22709 | 3892510720;
      D.22719 = D.22710 >> 24;
      D.22720 = D.22718 | D.22719;
      MEM[(guint32 *)code] = D.22720;
      code = code + 4;
      __o.5 = (unsigned int) __o;
      D.22722 = __o.5 + 8;
      __o = (int) D.22722;
      __i = __i + 1;
      <D.22498>:
      if (__i <= 31) goto <D.22497>; else goto <D.22499>;
      <D.22499>:
    }
    reg = 0;
    goto <D.22501>;
    <D.22500>:
    D.22723 = reg + 14;
    D.22724 = D.22723 << 21;
    D.22725 = D.22724 | -939327488;
    D.22726 = (long unsigned int) reg;
    D.22727 = (short unsigned int) D.22726;
    D.22728 = D.22727 + 21;
    D.22729 = D.22728 * 8;
    D.22730 = (int) D.22729;
    D.22731 = D.22725 | D.22730;
    D.22732 = (unsigned int) D.22731;
    D.22733 = D.22732 << 24;
    D.22723 = reg + 14;
    D.22724 = D.22723 << 21;
    D.22725 = D.22724 | -939327488;
    D.22726 = (long unsigned int) reg;
    D.22727 = (short unsigned int) D.22726;
    D.22728 = D.22727 + 21;
    D.22729 = D.22728 * 8;
    D.22730 = (int) D.22729;
    D.22731 = D.22725 | D.22730;
    D.22732 = (unsigned int) D.22731;
    D.22734 = D.22732 & 16711680;
    D.22735 = D.22734 >> 8;
    D.22736 = D.22733 | D.22735;
    D.22723 = reg + 14;
    D.22724 = D.22723 << 21;
    D.22725 = D.22724 | -939327488;
    D.22726 = (long unsigned int) reg;
    D.22727 = (short unsigned int) D.22726;
    D.22728 = D.22727 + 21;
    D.22729 = D.22728 * 8;
    D.22730 = (int) D.22729;
    D.22731 = D.22725 | D.22730;
    D.22732 = (unsigned int) D.22731;
    D.22737 = D.22732 & 65280;
    D.22738 = D.22737 << 8;
    D.22739 = D.22736 | D.22738;
    D.22723 = reg + 14;
    D.22724 = D.22723 << 21;
    D.22725 = D.22724 | -939327488;
    D.22726 = (long unsigned int) reg;
    D.22727 = (short unsigned int) D.22726;
    D.22728 = D.22727 + 21;
    D.22729 = D.22728 * 8;
    D.22730 = (int) D.22729;
    D.22731 = D.22725 | D.22730;
    D.22732 = (unsigned int) D.22731;
    D.22740 = D.22732 >> 24;
    D.22741 = D.22739 | D.22740;
    MEM[(guint32 *)code] = D.22741;
    code = code + 4;
    reg = reg + 1;
    <D.22501>:
    if (reg <= 17) goto <D.22500>; else goto <D.22502>;
    <D.22502>:
  }
  MEM[(guint32 *)code] = 2785249660;
  code = code + 4;
  MEM[(guint32 *)code] = 2016125820;
  code = code + 4;
  MEM[(guint32 *)code] = 553943118;
  code = code + 4;
  D.22742 = alloc_size + 16;
  D.22743 = (unsigned int) D.22742;
  D.22744 = D.22743 & 65532;
  D.22745 = D.22744 | 3892379648;
  D.22746 = D.22745 << 24;
  D.22742 = alloc_size + 16;
  D.22743 = (unsigned int) D.22742;
  D.22747 = D.22743 & 65280;
  D.22748 = D.22747 << 8;
  D.22749 = D.22746 | D.22748;
  D.22742 = alloc_size + 16;
  D.22743 = (unsigned int) D.22742;
  D.22744 = D.22743 & 65532;
  D.22745 = D.22744 | 3892379648;
  D.22750 = D.22745 >> 24;
  D.22751 = D.22749 | D.22750;
  D.22752 = D.22751 | 256;
  MEM[(guint32 *)code] = D.22752;
  code = code + 4;
  MEM[(guint32 *)code] = 2785216636;
  code = code + 4;
  pos = alloc_size;
  i = 31;
  goto <D.22504>;
  <D.22503>:
  pos.6 = (unsigned int) pos;
  D.22754 = pos.6 + 4294967288;
  pos = (int) D.22754;
  D.22755 = i << 21;
  D.22756 = D.22755 | -939458560;
  D.22757 = (short unsigned int) pos;
  D.22758 = (int) D.22757;
  D.22759 = D.22756 | D.22758;
  D.22760 = (unsigned int) D.22759;
  D.22761 = D.22760 << 24;
  D.22755 = i << 21;
  D.22756 = D.22755 | -939458560;
  D.22757 = (short unsigned int) pos;
  D.22758 = (int) D.22757;
  D.22759 = D.22756 | D.22758;
  D.22760 = (unsigned int) D.22759;
  D.22762 = D.22760 & 16711680;
  D.22763 = D.22762 >> 8;
  D.22764 = D.22761 | D.22763;
  D.22755 = i << 21;
  D.22756 = D.22755 | -939458560;
  D.22757 = (short unsigned int) pos;
  D.22758 = (int) D.22757;
  D.22759 = D.22756 | D.22758;
  D.22760 = (unsigned int) D.22759;
  D.22765 = D.22760 & 65280;
  D.22766 = D.22765 << 8;
  D.22767 = D.22764 | D.22766;
  D.22755 = i << 21;
  D.22756 = D.22755 | -939458560;
  D.22757 = (short unsigned int) pos;
  D.22758 = (int) D.22757;
  D.22759 = D.22756 | D.22758;
  D.22760 = (unsigned int) D.22759;
  D.22768 = D.22760 >> 24;
  D.22769 = D.22767 | D.22768;
  MEM[(guint32 *)code] = D.22769;
  code = code + 4;
  i = i + -1;
  <D.22504>:
  if (i > 13) goto <D.22503>; else goto <D.22505>;
  <D.22505>:
  pos.6 = (unsigned int) pos;
  D.22770 = pos.6 + 4294967144;
  pos = (int) D.22770;
  {
    int __i;
    int __o;

    __o = pos;
    __i = 13;
    goto <D.22509>;
    <D.22508>:
    D.22771 = __i << 21;
    D.22772 = (unsigned int) D.22771;
    __o.7 = (unsigned int) __o;
    D.22774 = __o.7 & 65532;
    D.22775 = D.22772 | D.22774;
    D.22776 = D.22775 | 3892379648;
    D.22777 = D.22776 << 24;
    D.22771 = __i << 21;
    D.22772 = (unsigned int) D.22771;
    __o.7 = (unsigned int) __o;
    D.22774 = __o.7 & 65532;
    D.22775 = D.22772 | D.22774;
    D.22778 = D.22775 & 16646144;
    D.22779 = D.22778 | 65536;
    D.22780 = D.22779 >> 8;
    D.22781 = D.22777 | D.22780;
    D.22771 = __i << 21;
    D.22772 = (unsigned int) D.22771;
    __o.7 = (unsigned int) __o;
    D.22774 = __o.7 & 65532;
    D.22775 = D.22772 | D.22774;
    D.22782 = D.22775 & 65280;
    D.22783 = D.22782 << 8;
    D.22784 = D.22781 | D.22783;
    D.22771 = __i << 21;
    D.22772 = (unsigned int) D.22771;
    __o.7 = (unsigned int) __o;
    D.22774 = __o.7 & 65532;
    D.22775 = D.22772 | D.22774;
    D.22776 = D.22775 | 3892379648;
    D.22785 = D.22776 >> 24;
    D.22786 = D.22784 | D.22785;
    MEM[(guint32 *)code] = D.22786;
    code = code + 4;
    __o.8 = (unsigned int) __o;
    D.22788 = __o.8 + 8;
    __o = (int) D.22788;
    __i = __i + 1;
    <D.22509>:
    if (__i <= 31) goto <D.22508>; else goto <D.22510>;
    <D.22510>:
  }
  D.22789 = (short unsigned int) alloc_size;
  D.22790 = (int) D.22789;
  D.22791 = D.22790 | 807469056;
  D.22792 = (unsigned int) D.22791;
  D.22793 = D.22792 << 24;
  D.22789 = (short unsigned int) alloc_size;
  D.22794 = (unsigned int) D.22789;
  D.22795 = D.22794 & 14548992;
  D.22796 = D.22795 | 2162688;
  D.22797 = D.22796 >> 8;
  D.22798 = D.22793 | D.22797;
  D.22789 = (short unsigned int) alloc_size;
  D.22794 = (unsigned int) D.22789;
  D.22799 = D.22794 & 65280;
  D.22800 = D.22799 << 8;
  D.22801 = D.22798 | D.22800;
  D.22789 = (short unsigned int) alloc_size;
  D.22790 = (int) D.22789;
  D.22791 = D.22790 | 807469056;
  D.22792 = (unsigned int) D.22791;
  D.22802 = D.22792 >> 24;
  D.22803 = D.22801 | D.22802;
  MEM[(guint32 *)code] = D.22803;
  code = code + 4;
  MEM[(guint32 *)code] = 536903758;
  code = code + 4;
  code.9 = (long int) code;
  start.10 = (long int) start;
  D.22806 = code.9 - start.10;
  D.22807 = (long int) size;
  D.22808 = D.22806 >= D.22807;
  D.22809 = (long int) D.22808;
  D.22810 = __builtin_expect (D.22809, 0);
  if (D.22810 != 0) goto <D.22811>; else goto <D.22812>;
  <D.22811>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "exceptions-ppc.c", 307, "(code - start) < size");
  <D.22812>:
  code.9 = (long int) code;
  start.10 = (long int) start;
  D.22806 = code.9 - start.10;
  D.22813 = (int) D.22806;
  mono_arch_flush_icache (start, D.22813);
  if (info != 0B) goto <D.22814>; else goto <D.22815>;
  <D.22814>:
  code.9 = (long int) code;
  start.10 = (long int) start;
  D.22806 = code.9 - start.10;
  D.22816 = (unsigned int) D.22806;
  D.22817 = mono_tramp_info_create ("call_filter", start, D.22816, ji, unwind_ops);
  *info = D.22817;
  <D.22815>:
  D.22818 = start;
  return D.22818;
}


emit_save_saved_regs (guint8 * code, int pos)
{
  unsigned int pos.11;
  unsigned int D.22821;
  int D.22822;
  int D.22823;
  short unsigned int D.22824;
  int D.22825;
  int D.22826;
  unsigned int D.22827;
  unsigned int D.22828;
  unsigned int D.22829;
  unsigned int D.22830;
  unsigned int D.22831;
  unsigned int D.22832;
  unsigned int D.22833;
  unsigned int D.22834;
  unsigned int D.22835;
  unsigned int D.22836;
  unsigned int D.22837;
  int D.22838;
  unsigned int D.22839;
  unsigned int __o.12;
  unsigned int D.22841;
  unsigned int D.22842;
  unsigned int D.22843;
  unsigned int D.22844;
  unsigned int D.22845;
  unsigned int D.22846;
  unsigned int D.22847;
  unsigned int D.22848;
  unsigned int D.22849;
  unsigned int D.22850;
  unsigned int D.22851;
  unsigned int D.22852;
  unsigned int D.22853;
  unsigned int __o.13;
  unsigned int D.22855;
  guint8 * D.22856;
  int i;

  i = 31;
  goto <D.22475>;
  <D.22474>:
  pos.11 = (unsigned int) pos;
  D.22821 = pos.11 + 4294967288;
  pos = (int) D.22821;
  D.22822 = i << 21;
  D.22823 = D.22822 | -671023104;
  D.22824 = (short unsigned int) pos;
  D.22825 = (int) D.22824;
  D.22826 = D.22823 | D.22825;
  D.22827 = (unsigned int) D.22826;
  D.22828 = D.22827 << 24;
  D.22822 = i << 21;
  D.22823 = D.22822 | -671023104;
  D.22824 = (short unsigned int) pos;
  D.22825 = (int) D.22824;
  D.22826 = D.22823 | D.22825;
  D.22827 = (unsigned int) D.22826;
  D.22829 = D.22827 & 16711680;
  D.22830 = D.22829 >> 8;
  D.22831 = D.22828 | D.22830;
  D.22822 = i << 21;
  D.22823 = D.22822 | -671023104;
  D.22824 = (short unsigned int) pos;
  D.22825 = (int) D.22824;
  D.22826 = D.22823 | D.22825;
  D.22827 = (unsigned int) D.22826;
  D.22832 = D.22827 & 65280;
  D.22833 = D.22832 << 8;
  D.22834 = D.22831 | D.22833;
  D.22822 = i << 21;
  D.22823 = D.22822 | -671023104;
  D.22824 = (short unsigned int) pos;
  D.22825 = (int) D.22824;
  D.22826 = D.22823 | D.22825;
  D.22827 = (unsigned int) D.22826;
  D.22835 = D.22827 >> 24;
  D.22836 = D.22834 | D.22835;
  MEM[(guint32 *)code] = D.22836;
  code = code + 4;
  i = i + -1;
  <D.22475>:
  if (i > 13) goto <D.22474>; else goto <D.22476>;
  <D.22476>:
  pos.11 = (unsigned int) pos;
  D.22837 = pos.11 + 4294967144;
  pos = (int) D.22837;
  {
    int __i;
    int __o;

    __o = pos;
    __i = 13;
    goto <D.22480>;
    <D.22479>:
    D.22838 = __i << 21;
    D.22839 = (unsigned int) D.22838;
    __o.12 = (unsigned int) __o;
    D.22841 = __o.12 & 65532;
    D.22842 = D.22839 | D.22841;
    D.22843 = D.22842 | 4160815104;
    D.22844 = D.22843 << 24;
    D.22838 = __i << 21;
    D.22839 = (unsigned int) D.22838;
    __o.12 = (unsigned int) __o;
    D.22841 = __o.12 & 65532;
    D.22842 = D.22839 | D.22841;
    D.22845 = D.22842 & 16646144;
    D.22846 = D.22845 | 65536;
    D.22847 = D.22846 >> 8;
    D.22848 = D.22844 | D.22847;
    D.22838 = __i << 21;
    D.22839 = (unsigned int) D.22838;
    __o.12 = (unsigned int) __o;
    D.22841 = __o.12 & 65532;
    D.22842 = D.22839 | D.22841;
    D.22849 = D.22842 & 65280;
    D.22850 = D.22849 << 8;
    D.22851 = D.22848 | D.22850;
    D.22838 = __i << 21;
    D.22839 = (unsigned int) D.22838;
    __o.12 = (unsigned int) __o;
    D.22841 = __o.12 & 65532;
    D.22842 = D.22839 | D.22841;
    D.22843 = D.22842 | 4160815104;
    D.22852 = D.22843 >> 24;
    D.22853 = D.22851 | D.22852;
    MEM[(guint32 *)code] = D.22853;
    code = code + 4;
    __o.13 = (unsigned int) __o;
    D.22855 = __o.13 + 8;
    __o = (int) D.22855;
    __i = __i + 1;
    <D.22480>:
    if (__i <= 31) goto <D.22479>; else goto <D.22481>;
    <D.22481>:
  }
  D.22856 = code;
  return D.22856;
}


mono_ppc_throw_exception (struct MonoObject * exc, long unsigned int eip, long unsigned int esp, mgreg_t * int_regs, gdouble * fp_regs, gboolean rethrow)
{
  struct MonoClass * D.22858;
  struct MonoObject * D.22859;
  struct MonoContext ctx;

  try
    {
      eip = eip + 18446744073709551612;
      ctx.sc_sp = esp;
      ctx.sc_ir = eip;
      memcpy (&ctx.regs, int_regs, 152);
      memcpy (&ctx.fregs, fp_regs, 144);
      D.22858 = mono_defaults.exception_class;
      D.22859 = mono_object_isinst (exc, D.22858);
      if (D.22859 != 0B) goto <D.22860>; else goto <D.22861>;
      <D.22860>:
      {
        struct MonoException * mono_ex;

        mono_ex = exc;
        if (rethrow == 0) goto <D.22862>; else goto <D.22863>;
        <D.22862>:
        mono_ex->stack_trace = 0B;
        <D.22863>:
      }
      <D.22861>:
      mono_handle_exception (&ctx, exc);
      mono_restore_context (&ctx);
      monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "exceptions-ppc.c", 340);
    }
  finally
    {
      ctx = {CLOBBER};
    }
}


memcpy (void * restrict __dest, const void * restrict __src, size_t __len)
{
  void * D.22864;
  long unsigned int D.22865;

  D.22865 = __builtin_object_size (__dest, 0);
  D.22864 = __builtin___memcpy_chk (__dest, __src, __len, D.22865);
  return D.22864;
}


mono_arch_get_rethrow_exception (struct MonoTrampInfo * * info, gboolean aot)
{
  void * D.22869;
  int size;

  size = 248;
  if (aot != 0) goto <D.22867>; else goto <D.22868>;
  <D.22867>:
  size = size + 64;
  <D.22868>:
  D.22869 = mono_arch_get_throw_exception_generic (size, info, 0, 1, aot);
  return D.22869;
}


mono_arch_get_throw_exception_generic (int size, struct MonoTrampInfo * * info, int corlib, gboolean rethrow, gboolean aot)
{
  int D.22876;
  _Bool D.22877;
  long int D.22878;
  long int D.22879;
  int D.22882;
  unsigned int D.22883;
  unsigned int D.22884;
  unsigned int D.22885;
  unsigned int D.22886;
  unsigned int D.22887;
  unsigned int D.22888;
  unsigned int D.22889;
  unsigned int D.22890;
  unsigned int D.22891;
  unsigned int D.22892;
  struct MonoImage * D.22897;
  long unsigned int D.22899;
  long unsigned int D.22900;
  long unsigned int D.22901;
  long int D.22904;
  short unsigned int D.22905;
  int D.22906;
  int D.22907;
  unsigned int D.22908;
  unsigned int D.22909;
  unsigned int D.22910;
  unsigned int D.22911;
  unsigned int D.22912;
  unsigned int D.22913;
  unsigned int D.22914;
  unsigned int D.22915;
  unsigned int D.22916;
  unsigned int D.22917;
  unsigned int D.22918;
  unsigned int D.22919;
  long int D.22921;
  long int D.22922;
  unsigned long D.22923;
  unsigned long D.22924;
  unsigned int D.22927;
  unsigned int D.22928;
  short unsigned int D.22929;
  int D.22930;
  int D.22931;
  unsigned int D.22932;
  unsigned int D.22933;
  unsigned int D.22934;
  unsigned int D.22935;
  unsigned int D.22936;
  unsigned int D.22937;
  unsigned int D.22938;
  unsigned int D.22939;
  unsigned int D.22940;
  unsigned int D.22941;
  unsigned int D.22942;
  unsigned int D.22943;
  short unsigned int D.22944;
  int D.22945;
  int D.22946;
  unsigned int D.22947;
  unsigned int D.22948;
  unsigned int D.22949;
  unsigned int D.22950;
  unsigned int D.22951;
  unsigned int D.22952;
  unsigned int D.22953;
  unsigned int D.22954;
  unsigned int D.22955;
  unsigned int D.22956;
  unsigned int D.22957;
  unsigned int D.22958;
  long int D.22960;
  unsigned long D.22961;
  unsigned long D.22962;
  long int D.22965;
  short unsigned int D.22966;
  int D.22967;
  int D.22968;
  unsigned int D.22969;
  unsigned int D.22970;
  unsigned int D.22971;
  unsigned int D.22972;
  unsigned int D.22973;
  unsigned int D.22974;
  unsigned int D.22975;
  unsigned int D.22976;
  unsigned int D.22977;
  unsigned int D.22978;
  unsigned int D.22979;
  unsigned int D.22980;
  long unsigned int D.22981;
  short unsigned int D.22982;
  int D.22983;
  int D.22984;
  unsigned int D.22985;
  unsigned int D.22986;
  unsigned int D.22987;
  unsigned int D.22988;
  unsigned int D.22989;
  unsigned int D.22990;
  unsigned int D.22991;
  unsigned int D.22992;
  unsigned int D.22993;
  unsigned int D.22994;
  unsigned int D.22995;
  unsigned int D.22996;
  int D.22997;
  unsigned int D.22998;
  unsigned int D.22999;
  unsigned int D.23000;
  unsigned int D.23001;
  unsigned int D.23002;
  unsigned int D.23003;
  unsigned int D.23004;
  unsigned int D.23005;
  unsigned int D.23006;
  long unsigned int D.23008;
  short unsigned int D.23009;
  int D.23010;
  int D.23011;
  unsigned int D.23012;
  unsigned int D.23013;
  unsigned int D.23014;
  unsigned int D.23015;
  unsigned int D.23016;
  unsigned int D.23017;
  unsigned int D.23018;
  unsigned int D.23019;
  unsigned int D.23020;
  unsigned int D.23021;
  unsigned int D.23022;
  unsigned int D.23023;
  long unsigned int D.23024;
  short unsigned int D.23025;
  int D.23026;
  int D.23027;
  unsigned int D.23028;
  unsigned int D.23029;
  unsigned int D.23030;
  unsigned int D.23031;
  unsigned int D.23032;
  unsigned int D.23033;
  unsigned int D.23034;
  unsigned int D.23035;
  unsigned int D.23036;
  unsigned int D.23037;
  unsigned int D.23038;
  unsigned int D.23039;
  long unsigned int mono_exception_from_token.14;
  long unsigned int D.23041;
  short unsigned int D.23042;
  int D.23043;
  int D.23044;
  unsigned int D.23045;
  unsigned int D.23046;
  unsigned int D.23047;
  unsigned int D.23048;
  unsigned int D.23049;
  unsigned int D.23050;
  unsigned int D.23051;
  unsigned int D.23052;
  unsigned int D.23053;
  unsigned int D.23054;
  unsigned int D.23055;
  unsigned int D.23056;
  long unsigned int D.23057;
  short unsigned int D.23058;
  int D.23059;
  int D.23060;
  unsigned int D.23061;
  unsigned int D.23062;
  unsigned int D.23063;
  unsigned int D.23064;
  unsigned int D.23065;
  unsigned int D.23066;
  unsigned int D.23067;
  unsigned int D.23068;
  unsigned int D.23069;
  unsigned int D.23070;
  unsigned int D.23071;
  unsigned int D.23072;
  long unsigned int D.23073;
  short unsigned int D.23074;
  int D.23075;
  int D.23076;
  unsigned int D.23077;
  unsigned int D.23078;
  unsigned int D.23079;
  unsigned int D.23080;
  unsigned int D.23081;
  unsigned int D.23082;
  unsigned int D.23083;
  unsigned int D.23084;
  unsigned int D.23085;
  unsigned int D.23086;
  unsigned int D.23087;
  unsigned int D.23088;
  long int mono_exception_from_token.15;
  short unsigned int D.23090;
  int D.23091;
  int D.23092;
  unsigned int D.23093;
  unsigned int D.23094;
  unsigned int D.23095;
  unsigned int D.23096;
  unsigned int D.23097;
  unsigned int D.23098;
  unsigned int D.23099;
  unsigned int D.23100;
  unsigned int D.23101;
  unsigned int D.23102;
  unsigned int D.23103;
  unsigned int D.23104;
  unsigned int alloc_size.16;
  unsigned int D.23109;
  short unsigned int D.23110;
  int D.23111;
  int D.23112;
  unsigned int D.23113;
  unsigned int D.23114;
  unsigned int D.23115;
  unsigned int D.23116;
  unsigned int D.23117;
  unsigned int D.23118;
  unsigned int D.23119;
  unsigned int D.23120;
  unsigned int D.23121;
  unsigned int D.23122;
  unsigned int D.23123;
  unsigned int D.23124;
  unsigned int pos.17;
  unsigned int D.23126;
  int D.23127;
  unsigned int D.23128;
  unsigned int D.23129;
  unsigned int D.23130;
  unsigned int D.23131;
  unsigned int D.23132;
  unsigned int D.23133;
  unsigned int D.23134;
  unsigned int D.23135;
  unsigned int D.23136;
  short unsigned int D.23137;
  int D.23138;
  int D.23139;
  unsigned int D.23140;
  unsigned int D.23141;
  unsigned int D.23142;
  unsigned int D.23143;
  unsigned int D.23144;
  unsigned int D.23145;
  unsigned int D.23146;
  unsigned int D.23147;
  long unsigned int mono_ppc_throw_exception.18;
  long unsigned int D.23152;
  short unsigned int D.23153;
  int D.23154;
  int D.23155;
  unsigned int D.23156;
  unsigned int D.23157;
  unsigned int D.23158;
  unsigned int D.23159;
  unsigned int D.23160;
  unsigned int D.23161;
  unsigned int D.23162;
  unsigned int D.23163;
  unsigned int D.23164;
  unsigned int D.23165;
  unsigned int D.23166;
  unsigned int D.23167;
  long unsigned int D.23168;
  short unsigned int D.23169;
  int D.23170;
  int D.23171;
  unsigned int D.23172;
  unsigned int D.23173;
  unsigned int D.23174;
  unsigned int D.23175;
  unsigned int D.23176;
  unsigned int D.23177;
  unsigned int D.23178;
  unsigned int D.23179;
  unsigned int D.23180;
  unsigned int D.23181;
  unsigned int D.23182;
  unsigned int D.23183;
  long unsigned int D.23184;
  short unsigned int D.23185;
  int D.23186;
  int D.23187;
  unsigned int D.23188;
  unsigned int D.23189;
  unsigned int D.23190;
  unsigned int D.23191;
  unsigned int D.23192;
  unsigned int D.23193;
  unsigned int D.23194;
  unsigned int D.23195;
  unsigned int D.23196;
  unsigned int D.23197;
  unsigned int D.23198;
  unsigned int D.23199;
  long int mono_ppc_throw_exception.19;
  short unsigned int D.23201;
  int D.23202;
  int D.23203;
  unsigned int D.23204;
  unsigned int D.23205;
  unsigned int D.23206;
  unsigned int D.23207;
  unsigned int D.23208;
  unsigned int D.23209;
  unsigned int D.23210;
  unsigned int D.23211;
  unsigned int D.23212;
  unsigned int D.23213;
  unsigned int D.23214;
  unsigned int D.23215;
  long int code.20;
  long int start.21;
  long int D.23218;
  long int D.23219;
  _Bool D.23220;
  long int D.23221;
  long int D.23222;
  int D.23225;
  const char * iftmp.22;
  const char * iftmp.23;
  unsigned int D.23236;
  struct MonoJumpInfo * ji.24;
  struct MonoTrampInfo * D.23238;
  void * D.23239;
  guint8 * start;
  guint8 * code;
  int alloc_size;
  int pos;
  struct MonoJumpInfo * ji;
  struct GSList * unwind_ops;

  try
    {
      ji = 0B;
      unwind_ops = 0B;
      start = mono_global_codeman_reserve (size);
      code = start;
      if (aot == 0) goto <D.22871>; else goto <D.22872>;
      <D.22871>:
      code = mono_ppc_create_pre_code_ftnptr (code);
      <D.22872>:
      if (corlib != 0) goto <D.22873>; else goto <D.22874>;
      <D.22873>:
      MEM[(guint32 *)code] = 2015592572;
      code = code + 4;
      goto <D.22875>;
      <D.22874>:
      MEM[(guint32 *)code] = 2785151100;
      code = code + 4;
      <D.22875>:
      MEM[(guint32 *)code] = 268435960;
      code = code + 4;
      alloc_size = 416;
      D.22876 = alloc_size & 15;
      D.22877 = D.22876 != 0;
      D.22878 = (long int) D.22877;
      D.22879 = __builtin_expect (D.22878, 0);
      if (D.22879 != 0) goto <D.22880>; else goto <D.22881>;
      <D.22880>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "exceptions-ppc.c", 373, "(alloc_size & (MONO_ARCH_FRAME_ALIGNMENT-1)) == 0");
      <D.22881>:
      D.22882 = -alloc_size;
      D.22883 = (unsigned int) D.22882;
      D.22884 = D.22883 & 65532;
      D.22885 = D.22884 | 4162912257;
      D.22886 = D.22885 << 24;
      D.22882 = -alloc_size;
      D.22883 = (unsigned int) D.22882;
      D.22887 = D.22883 & 65280;
      D.22888 = D.22887 << 8;
      D.22889 = D.22886 | D.22888;
      D.22882 = -alloc_size;
      D.22883 = (unsigned int) D.22882;
      D.22884 = D.22883 & 65532;
      D.22885 = D.22884 | 4162912257;
      D.22890 = D.22885 >> 24;
      D.22891 = D.22889 | D.22890;
      D.22892 = D.22891 | 8448;
      MEM[(guint32 *)code] = D.22892;
      code = code + 4;
      code = emit_save_saved_regs (code, alloc_size);
      if (corlib != 0) goto <D.22893>; else goto <D.22894>;
      <D.22893>:
      MEM[(guint32 *)code] = 2015061116;
      code = code + 4;
      if (aot != 0) goto <D.22895>; else goto <D.22896>;
      <D.22895>:
      D.22897 = mono_defaults.corlib;
      code = mono_arch_emit_load_aotconst (start, code, &ji, 12, D.22897);
      MEM[(guint32 *)code] = 2019255165;
      code = code + 4;
      code = mono_arch_emit_load_aotconst (start, code, &ji, 32, "mono_exception_from_token");
      MEM[(guint32 *)code] = 134237160;
      code = code + 4;
      MEM[(guint32 *)code] = 27625;
      code = code + 4;
      MEM[(guint32 *)code] = 2785241469;
      code = code + 4;
      MEM[(guint32 *)code] = 553943118;
      code = code + 4;
      goto <D.22898>;
      <D.22896>:
      D.22897 = mono_defaults.corlib;
      D.22899 = (long unsigned int) D.22897;
      D.22900 = D.22899 >> 15;
      D.22901 = D.22900 + 18446744073709551615;
      if (D.22901 > 18446744073709551613) goto <D.22902>; else goto <D.22903>;
      <D.22902>:
      D.22897 = mono_defaults.corlib;
      D.22904 = (long int) D.22897;
      D.22905 = (short unsigned int) D.22904;
      D.22906 = (int) D.22905;
      D.22907 = D.22906 | 945815552;
      D.22908 = (unsigned int) D.22907;
      D.22909 = D.22908 << 24;
      D.22897 = mono_defaults.corlib;
      D.22904 = (long int) D.22897;
      D.22905 = (short unsigned int) D.22904;
      D.22910 = (unsigned int) D.22905;
      D.22911 = D.22910 & 10420224;
      D.22912 = D.22911 | 6291456;
      D.22913 = D.22912 >> 8;
      D.22914 = D.22909 | D.22913;
      D.22897 = mono_defaults.corlib;
      D.22904 = (long int) D.22897;
      D.22905 = (short unsigned int) D.22904;
      D.22910 = (unsigned int) D.22905;
      D.22915 = D.22910 & 65280;
      D.22916 = D.22915 << 8;
      D.22917 = D.22914 | D.22916;
      D.22897 = mono_defaults.corlib;
      D.22904 = (long int) D.22897;
      D.22905 = (short unsigned int) D.22904;
      D.22906 = (int) D.22905;
      D.22907 = D.22906 | 945815552;
      D.22908 = (unsigned int) D.22907;
      D.22918 = D.22908 >> 24;
      D.22919 = D.22917 | D.22918;
      MEM[(guint32 *)code] = D.22919;
      code = code + 4;
      goto <D.22920>;
      <D.22903>:
      D.22897 = mono_defaults.corlib;
      D.22921 = (long int) D.22897;
      D.22922 = D.22921 >> 31;
      D.22923 = (unsigned long) D.22922;
      D.22924 = D.22923 + 1;
      if (D.22924 <= 1) goto <D.22925>; else goto <D.22926>;
      <D.22925>:
      D.22897 = mono_defaults.corlib;
      D.22904 = (long int) D.22897;
      D.22927 = (unsigned int) D.22904;
      D.22928 = D.22927 >> 16;
      D.22929 = (short unsigned int) D.22928;
      D.22930 = (int) D.22929;
      D.22931 = D.22930 | 1012924416;
      D.22932 = (unsigned int) D.22931;
      D.22933 = D.22932 << 24;
      D.22897 = mono_defaults.corlib;
      D.22904 = (long int) D.22897;
      D.22927 = (unsigned int) D.22904;
      D.22928 = D.22927 >> 16;
      D.22929 = (short unsigned int) D.22928;
      D.22934 = (unsigned int) D.22929;
      D.22935 = D.22934 & 10420224;
      D.22936 = D.22935 | 6291456;
      D.22937 = D.22936 >> 8;
      D.22938 = D.22933 | D.22937;
      D.22897 = mono_defaults.corlib;
      D.22904 = (long int) D.22897;
      D.22927 = (unsigned int) D.22904;
      D.22928 = D.22927 >> 16;
      D.22929 = (short unsigned int) D.22928;
      D.22934 = (unsigned int) D.22929;
      D.22939 = D.22934 & 65280;
      D.22940 = D.22939 << 8;
      D.22941 = D.22938 | D.22940;
      D.22897 = mono_defaults.corlib;
      D.22904 = (long int) D.22897;
      D.22927 = (unsigned int) D.22904;
      D.22928 = D.22927 >> 16;
      D.22929 = (short unsigned int) D.22928;
      D.22930 = (int) D.22929;
      D.22931 = D.22930 | 1012924416;
      D.22932 = (unsigned int) D.22931;
      D.22942 = D.22932 >> 24;
      D.22943 = D.22941 | D.22942;
      MEM[(guint32 *)code] = D.22943;
      code = code + 4;
      D.22897 = mono_defaults.corlib;
      D.22904 = (long int) D.22897;
      D.22944 = (short unsigned int) D.22904;
      D.22945 = (int) D.22944;
      D.22946 = D.22945 | 1617100800;
      D.22947 = (unsigned int) D.22946;
      D.22948 = D.22947 << 24;
      D.22897 = mono_defaults.corlib;
      D.22904 = (long int) D.22897;
      D.22944 = (short unsigned int) D.22904;
      D.22949 = (unsigned int) D.22944;
      D.22950 = D.22949 & 10223616;
      D.22951 = D.22950 | 6488064;
      D.22952 = D.22951 >> 8;
      D.22953 = D.22948 | D.22952;
      D.22897 = mono_defaults.corlib;
      D.22904 = (long int) D.22897;
      D.22944 = (short unsigned int) D.22904;
      D.22949 = (unsigned int) D.22944;
      D.22954 = D.22949 & 65280;
      D.22955 = D.22954 << 8;
      D.22956 = D.22953 | D.22955;
      D.22897 = mono_defaults.corlib;
      D.22904 = (long int) D.22897;
      D.22944 = (short unsigned int) D.22904;
      D.22945 = (int) D.22944;
      D.22946 = D.22945 | 1617100800;
      D.22947 = (unsigned int) D.22946;
      D.22957 = D.22947 >> 24;
      D.22958 = D.22956 | D.22957;
      MEM[(guint32 *)code] = D.22958;
      code = code + 4;
      goto <D.22959>;
      <D.22926>:
      D.22897 = mono_defaults.corlib;
      D.22921 = (long int) D.22897;
      D.22960 = D.22921 >> 47;
      D.22961 = (unsigned long) D.22960;
      D.22962 = D.22961 + 1;
      if (D.22962 <= 1) goto <D.22963>; else goto <D.22964>;
      <D.22963>:
      D.22897 = mono_defaults.corlib;
      D.22921 = (long int) D.22897;
      D.22965 = D.22921 >> 32;
      D.22966 = (short unsigned int) D.22965;
      D.22967 = (int) D.22966;
      D.22968 = D.22967 | 945815552;
      D.22969 = (unsigned int) D.22968;
      D.22970 = D.22969 << 24;
      D.22897 = mono_defaults.corlib;
      D.22921 = (long int) D.22897;
      D.22965 = D.22921 >> 32;
      D.22966 = (short unsigned int) D.22965;
      D.22971 = (unsigned int) D.22966;
      D.22972 = D.22971 & 10420224;
      D.22973 = D.22972 | 6291456;
      D.22974 = D.22973 >> 8;
      D.22975 = D.22970 | D.22974;
      D.22897 = mono_defaults.corlib;
      D.22921 = (long int) D.22897;
      D.22965 = D.22921 >> 32;
      D.22966 = (short unsigned int) D.22965;
      D.22971 = (unsigned int) D.22966;
      D.22976 = D.22971 & 65280;
      D.22977 = D.22976 << 8;
      D.22978 = D.22975 | D.22977;
      D.22897 = mono_defaults.corlib;
      D.22921 = (long int) D.22897;
      D.22965 = D.22921 >> 32;
      D.22966 = (short unsigned int) D.22965;
      D.22967 = (int) D.22966;
      D.22968 = D.22967 | 945815552;
      D.22969 = (unsigned int) D.22968;
      D.22979 = D.22969 >> 24;
      D.22980 = D.22978 | D.22979;
      MEM[(guint32 *)code] = D.22980;
      code = code + 4;
      MEM[(guint32 *)code] = 3322372984;
      code = code + 4;
      D.22897 = mono_defaults.corlib;
      D.22899 = (long unsigned int) D.22897;
      D.22981 = D.22899 >> 16;
      D.22982 = (short unsigned int) D.22981;
      D.22983 = (int) D.22982;
      D.22984 = D.22983 | 1684209664;
      D.22985 = (unsigned int) D.22984;
      D.22986 = D.22985 << 24;
      D.22897 = mono_defaults.corlib;
      D.22899 = (long unsigned int) D.22897;
      D.22981 = D.22899 >> 16;
      D.22982 = (short unsigned int) D.22981;
      D.22987 = (unsigned int) D.22982;
      D.22988 = D.22987 & 10223616;
      D.22989 = D.22988 | 6488064;
      D.22990 = D.22989 >> 8;
      D.22991 = D.22986 | D.22990;
      D.22897 = mono_defaults.corlib;
      D.22899 = (long unsigned int) D.22897;
      D.22981 = D.22899 >> 16;
      D.22982 = (short unsigned int) D.22981;
      D.22987 = (unsigned int) D.22982;
      D.22992 = D.22987 & 65280;
      D.22993 = D.22992 << 8;
      D.22994 = D.22991 | D.22993;
      D.22897 = mono_defaults.corlib;
      D.22899 = (long unsigned int) D.22897;
      D.22981 = D.22899 >> 16;
      D.22982 = (short unsigned int) D.22981;
      D.22983 = (int) D.22982;
      D.22984 = D.22983 | 1684209664;
      D.22985 = (unsigned int) D.22984;
      D.22995 = D.22985 >> 24;
      D.22996 = D.22994 | D.22995;
      MEM[(guint32 *)code] = D.22996;
      code = code + 4;
      D.22897 = mono_defaults.corlib;
      D.22904 = (long int) D.22897;
      D.22905 = (short unsigned int) D.22904;
      D.22906 = (int) D.22905;
      D.22997 = D.22906 | 1617100800;
      D.22998 = (unsigned int) D.22997;
      D.22999 = D.22998 << 24;
      D.22897 = mono_defaults.corlib;
      D.22904 = (long int) D.22897;
      D.22905 = (short unsigned int) D.22904;
      D.22910 = (unsigned int) D.22905;
      D.23000 = D.22910 & 10223616;
      D.23001 = D.23000 | 6488064;
      D.23002 = D.23001 >> 8;
      D.23003 = D.22999 | D.23002;
      D.22897 = mono_defaults.corlib;
      D.22904 = (long int) D.22897;
      D.22905 = (short unsigned int) D.22904;
      D.22910 = (unsigned int) D.22905;
      D.22915 = D.22910 & 65280;
      D.22916 = D.22915 << 8;
      D.23004 = D.23003 | D.22916;
      D.22897 = mono_defaults.corlib;
      D.22904 = (long int) D.22897;
      D.22905 = (short unsigned int) D.22904;
      D.22906 = (int) D.22905;
      D.22997 = D.22906 | 1617100800;
      D.22998 = (unsigned int) D.22997;
      D.23005 = D.22998 >> 24;
      D.23006 = D.23004 | D.23005;
      MEM[(guint32 *)code] = D.23006;
      code = code + 4;
      goto <D.23007>;
      <D.22964>:
      D.22897 = mono_defaults.corlib;
      D.22899 = (long unsigned int) D.22897;
      D.23008 = D.22899 >> 48;
      D.23009 = (short unsigned int) D.23008;
      D.23010 = (int) D.23009;
      D.23011 = D.23010 | 1012924416;
      D.23012 = (unsigned int) D.23011;
      D.23013 = D.23012 << 24;
      D.22897 = mono_defaults.corlib;
      D.22899 = (long unsigned int) D.22897;
      D.23008 = D.22899 >> 48;
      D.23009 = (short unsigned int) D.23008;
      D.23014 = (unsigned int) D.23009;
      D.23015 = D.23014 & 10420224;
      D.23016 = D.23015 | 6291456;
      D.23017 = D.23016 >> 8;
      D.23018 = D.23013 | D.23017;
      D.22897 = mono_defaults.corlib;
      D.22899 = (long unsigned int) D.22897;
      D.23008 = D.22899 >> 48;
      D.23009 = (short unsigned int) D.23008;
      D.23014 = (unsigned int) D.23009;
      D.23019 = D.23014 & 65280;
      D.23020 = D.23019 << 8;
      D.23021 = D.23018 | D.23020;
      D.22897 = mono_defaults.corlib;
      D.22899 = (long unsigned int) D.22897;
      D.23008 = D.22899 >> 48;
      D.23009 = (short unsigned int) D.23008;
      D.23010 = (int) D.23009;
      D.23011 = D.23010 | 1012924416;
      D.23012 = (unsigned int) D.23011;
      D.23022 = D.23012 >> 24;
      D.23023 = D.23021 | D.23022;
      MEM[(guint32 *)code] = D.23023;
      code = code + 4;
      D.22897 = mono_defaults.corlib;
      D.22899 = (long unsigned int) D.22897;
      D.23024 = D.22899 >> 32;
      D.23025 = (short unsigned int) D.23024;
      D.23026 = (int) D.23025;
      D.23027 = D.23026 | 1617100800;
      D.23028 = (unsigned int) D.23027;
      D.23029 = D.23028 << 24;
      D.22897 = mono_defaults.corlib;
      D.22899 = (long unsigned int) D.22897;
      D.23024 = D.22899 >> 32;
      D.23025 = (short unsigned int) D.23024;
      D.23030 = (unsigned int) D.23025;
      D.23031 = D.23030 & 10223616;
      D.23032 = D.23031 | 6488064;
      D.23033 = D.23032 >> 8;
      D.23034 = D.23029 | D.23033;
      D.22897 = mono_defaults.corlib;
      D.22899 = (long unsigned int) D.22897;
      D.23024 = D.22899 >> 32;
      D.23025 = (short unsigned int) D.23024;
      D.23030 = (unsigned int) D.23025;
      D.23035 = D.23030 & 65280;
      D.23036 = D.23035 << 8;
      D.23037 = D.23034 | D.23036;
      D.22897 = mono_defaults.corlib;
      D.22899 = (long unsigned int) D.22897;
      D.23024 = D.22899 >> 32;
      D.23025 = (short unsigned int) D.23024;
      D.23026 = (int) D.23025;
      D.23027 = D.23026 | 1617100800;
      D.23028 = (unsigned int) D.23027;
      D.23038 = D.23028 >> 24;
      D.23039 = D.23037 | D.23038;
      MEM[(guint32 *)code] = D.23039;
      code = code + 4;
      MEM[(guint32 *)code] = 3322372984;
      code = code + 4;
      D.22897 = mono_defaults.corlib;
      D.22899 = (long unsigned int) D.22897;
      D.22981 = D.22899 >> 16;
      D.22982 = (short unsigned int) D.22981;
      D.22983 = (int) D.22982;
      D.22984 = D.22983 | 1684209664;
      D.22985 = (unsigned int) D.22984;
      D.22986 = D.22985 << 24;
      D.22897 = mono_defaults.corlib;
      D.22899 = (long unsigned int) D.22897;
      D.22981 = D.22899 >> 16;
      D.22982 = (short unsigned int) D.22981;
      D.22987 = (unsigned int) D.22982;
      D.22988 = D.22987 & 10223616;
      D.22989 = D.22988 | 6488064;
      D.22990 = D.22989 >> 8;
      D.22991 = D.22986 | D.22990;
      D.22897 = mono_defaults.corlib;
      D.22899 = (long unsigned int) D.22897;
      D.22981 = D.22899 >> 16;
      D.22982 = (short unsigned int) D.22981;
      D.22987 = (unsigned int) D.22982;
      D.22992 = D.22987 & 65280;
      D.22993 = D.22992 << 8;
      D.22994 = D.22991 | D.22993;
      D.22897 = mono_defaults.corlib;
      D.22899 = (long unsigned int) D.22897;
      D.22981 = D.22899 >> 16;
      D.22982 = (short unsigned int) D.22981;
      D.22983 = (int) D.22982;
      D.22984 = D.22983 | 1684209664;
      D.22985 = (unsigned int) D.22984;
      D.22995 = D.22985 >> 24;
      D.22996 = D.22994 | D.22995;
      MEM[(guint32 *)code] = D.22996;
      code = code + 4;
      D.22897 = mono_defaults.corlib;
      D.22904 = (long int) D.22897;
      D.22905 = (short unsigned int) D.22904;
      D.22906 = (int) D.22905;
      D.22997 = D.22906 | 1617100800;
      D.22998 = (unsigned int) D.22997;
      D.22999 = D.22998 << 24;
      D.22897 = mono_defaults.corlib;
      D.22904 = (long int) D.22897;
      D.22905 = (short unsigned int) D.22904;
      D.22910 = (unsigned int) D.22905;
      D.23000 = D.22910 & 10223616;
      D.23001 = D.23000 | 6488064;
      D.23002 = D.23001 >> 8;
      D.23003 = D.22999 | D.23002;
      D.22897 = mono_defaults.corlib;
      D.22904 = (long int) D.22897;
      D.22905 = (short unsigned int) D.22904;
      D.22910 = (unsigned int) D.22905;
      D.22915 = D.22910 & 65280;
      D.22916 = D.22915 << 8;
      D.23004 = D.23003 | D.22916;
      D.22897 = mono_defaults.corlib;
      D.22904 = (long int) D.22897;
      D.22905 = (short unsigned int) D.22904;
      D.22906 = (int) D.22905;
      D.22997 = D.22906 | 1617100800;
      D.22998 = (unsigned int) D.22997;
      D.23005 = D.22998 >> 24;
      D.23006 = D.23004 | D.23005;
      MEM[(guint32 *)code] = D.23006;
      code = code + 4;
      <D.23007>:
      <D.22959>:
      <D.22920>:
      mono_exception_from_token.14 = (long unsigned int) mono_exception_from_token;
      D.23041 = mono_exception_from_token.14 >> 48;
      D.23042 = (short unsigned int) D.23041;
      D.23043 = (int) D.23042;
      D.23044 = D.23043 | 1029701632;
      D.23045 = (unsigned int) D.23044;
      D.23046 = D.23045 << 24;
      mono_exception_from_token.14 = (long unsigned int) mono_exception_from_token;
      D.23041 = mono_exception_from_token.14 >> 48;
      D.23042 = (short unsigned int) D.23041;
      D.23047 = (unsigned int) D.23042;
      D.23048 = D.23047 & 65280;
      D.23049 = D.23048 << 8;
      D.23050 = D.23046 | D.23049;
      mono_exception_from_token.14 = (long unsigned int) mono_exception_from_token;
      D.23041 = mono_exception_from_token.14 >> 48;
      D.23042 = (short unsigned int) D.23041;
      D.23047 = (unsigned int) D.23042;
      D.23051 = D.23047 & 10420224;
      D.23052 = D.23051 | 6291456;
      D.23053 = D.23052 >> 8;
      mono_exception_from_token.14 = (long unsigned int) mono_exception_from_token;
      D.23041 = mono_exception_from_token.14 >> 48;
      D.23042 = (short unsigned int) D.23041;
      D.23043 = (int) D.23042;
      D.23044 = D.23043 | 1029701632;
      D.23045 = (unsigned int) D.23044;
      D.23054 = D.23045 >> 24;
      D.23055 = D.23053 | D.23054;
      D.23056 = D.23050 | D.23055;
      MEM[(guint32 *)code] = D.23056;
      code = code + 4;
      mono_exception_from_token.14 = (long unsigned int) mono_exception_from_token;
      D.23057 = mono_exception_from_token.14 >> 32;
      D.23058 = (short unsigned int) D.23057;
      D.23059 = (int) D.23058;
      D.23060 = D.23059 | 1634402304;
      D.23061 = (unsigned int) D.23060;
      D.23062 = D.23061 << 24;
      mono_exception_from_token.14 = (long unsigned int) mono_exception_from_token;
      D.23057 = mono_exception_from_token.14 >> 32;
      D.23058 = (short unsigned int) D.23057;
      D.23063 = (unsigned int) D.23058;
      D.23064 = D.23063 & 65280;
      D.23065 = D.23064 << 8;
      D.23066 = D.23062 | D.23065;
      mono_exception_from_token.14 = (long unsigned int) mono_exception_from_token;
      D.23057 = mono_exception_from_token.14 >> 32;
      D.23058 = (short unsigned int) D.23057;
      D.23063 = (unsigned int) D.23058;
      D.23067 = D.23063 & 9699328;
      D.23068 = D.23067 | 7012352;
      D.23069 = D.23068 >> 8;
      mono_exception_from_token.14 = (long unsigned int) mono_exception_from_token;
      D.23057 = mono_exception_from_token.14 >> 32;
      D.23058 = (short unsigned int) D.23057;
      D.23059 = (int) D.23058;
      D.23060 = D.23059 | 1634402304;
      D.23061 = (unsigned int) D.23060;
      D.23070 = D.23061 >> 24;
      D.23071 = D.23069 | D.23070;
      D.23072 = D.23066 | D.23071;
      MEM[(guint32 *)code] = D.23072;
      code = code + 4;
      MEM[(guint32 *)code] = 3322375033;
      code = code + 4;
      mono_exception_from_token.14 = (long unsigned int) mono_exception_from_token;
      D.23073 = mono_exception_from_token.14 >> 16;
      D.23074 = (short unsigned int) D.23073;
      D.23075 = (int) D.23074;
      D.23076 = D.23075 | 1701511168;
      D.23077 = (unsigned int) D.23076;
      D.23078 = D.23077 << 24;
      mono_exception_from_token.14 = (long unsigned int) mono_exception_from_token;
      D.23073 = mono_exception_from_token.14 >> 16;
      D.23074 = (short unsigned int) D.23073;
      D.23079 = (unsigned int) D.23074;
      D.23080 = D.23079 & 65280;
      D.23081 = D.23080 << 8;
      D.23082 = D.23078 | D.23081;
      mono_exception_from_token.14 = (long unsigned int) mono_exception_from_token;
      D.23073 = mono_exception_from_token.14 >> 16;
      D.23074 = (short unsigned int) D.23073;
      D.23079 = (unsigned int) D.23074;
      D.23083 = D.23079 & 9699328;
      D.23084 = D.23083 | 7012352;
      D.23085 = D.23084 >> 8;
      mono_exception_from_token.14 = (long unsigned int) mono_exception_from_token;
      D.23073 = mono_exception_from_token.14 >> 16;
      D.23074 = (short unsigned int) D.23073;
      D.23075 = (int) D.23074;
      D.23076 = D.23075 | 1701511168;
      D.23077 = (unsigned int) D.23076;
      D.23086 = D.23077 >> 24;
      D.23087 = D.23085 | D.23086;
      D.23088 = D.23082 | D.23087;
      MEM[(guint32 *)code] = D.23088;
      code = code + 4;
      mono_exception_from_token.15 = (long int) mono_exception_from_token;
      D.23090 = (short unsigned int) mono_exception_from_token.15;
      D.23091 = (int) D.23090;
      D.23092 = D.23091 | 1634402304;
      D.23093 = (unsigned int) D.23092;
      D.23094 = D.23093 << 24;
      mono_exception_from_token.15 = (long int) mono_exception_from_token;
      D.23090 = (short unsigned int) mono_exception_from_token.15;
      D.23095 = (unsigned int) D.23090;
      D.23096 = D.23095 & 65280;
      D.23097 = D.23096 << 8;
      D.23098 = D.23094 | D.23097;
      mono_exception_from_token.15 = (long int) mono_exception_from_token;
      D.23090 = (short unsigned int) mono_exception_from_token.15;
      D.23095 = (unsigned int) D.23090;
      D.23099 = D.23095 & 9699328;
      D.23100 = D.23099 | 7012352;
      D.23101 = D.23100 >> 8;
      mono_exception_from_token.15 = (long int) mono_exception_from_token;
      D.23090 = (short unsigned int) mono_exception_from_token.15;
      D.23091 = (int) D.23090;
      D.23092 = D.23091 | 1634402304;
      D.23093 = (unsigned int) D.23092;
      D.23102 = D.23093 >> 24;
      D.23103 = D.23101 | D.23102;
      D.23104 = D.23098 | D.23103;
      MEM[(guint32 *)code] = D.23104;
      code = code + 4;
      MEM[(guint32 *)code] = 134237160;
      code = code + 4;
      MEM[(guint32 *)code] = 3048;
      code = code + 4;
      MEM[(guint32 *)code] = 2785216892;
      code = code + 4;
      MEM[(guint32 *)code] = 553943118;
      code = code + 4;
      <D.22898>:
      <D.22894>:
      MEM[(guint32 *)code] = 41448;
      code = code + 4;
      if (corlib != 0) goto <D.23105>; else goto <D.23106>;
      <D.23105>:
      MEM[(guint32 *)code] = 268469736;
      code = code + 4;
      goto <D.23107>;
      <D.23106>:
      MEM[(guint32 *)code] = 2013463676;
      code = code + 4;
      <D.23107>:
      alloc_size.16 = (unsigned int) alloc_size;
      D.23109 = alloc_size.16 + 4294967152;
      pos = (int) D.23109;
      D.23110 = (short unsigned int) pos;
      D.23111 = (int) D.23110;
      D.23112 = D.23111 | 954269696;
      D.23113 = (unsigned int) D.23112;
      D.23114 = D.23113 << 24;
      D.23110 = (short unsigned int) pos;
      D.23115 = (unsigned int) D.23110;
      D.23116 = D.23115 & 1966080;
      D.23117 = D.23116 | 14745600;
      D.23118 = D.23117 >> 8;
      D.23119 = D.23114 | D.23118;
      D.23110 = (short unsigned int) pos;
      D.23115 = (unsigned int) D.23110;
      D.23120 = D.23115 & 65280;
      D.23121 = D.23120 << 8;
      D.23122 = D.23119 | D.23121;
      D.23110 = (short unsigned int) pos;
      D.23111 = (int) D.23110;
      D.23112 = D.23111 | 954269696;
      D.23113 = (unsigned int) D.23112;
      D.23123 = D.23113 >> 24;
      D.23124 = D.23122 | D.23123;
      MEM[(guint32 *)code] = D.23124;
      code = code + 4;
      pos.17 = (unsigned int) pos;
      D.23126 = pos.17 + 4294967144;
      pos = (int) D.23126;
      D.23110 = (short unsigned int) pos;
      D.23111 = (int) D.23110;
      D.23127 = D.23111 | 952172544;
      D.23128 = (unsigned int) D.23127;
      D.23129 = D.23128 << 24;
      D.23110 = (short unsigned int) pos;
      D.23115 = (unsigned int) D.23110;
      D.23130 = D.23115 & 4063232;
      D.23131 = D.23130 | 12648448;
      D.23132 = D.23131 >> 8;
      D.23133 = D.23129 | D.23132;
      D.23110 = (short unsigned int) pos;
      D.23115 = (unsigned int) D.23110;
      D.23120 = D.23115 & 65280;
      D.23121 = D.23120 << 8;
      D.23134 = D.23133 | D.23121;
      D.23110 = (short unsigned int) pos;
      D.23111 = (int) D.23110;
      D.23127 = D.23111 | 952172544;
      D.23128 = (unsigned int) D.23127;
      D.23135 = D.23128 >> 24;
      D.23136 = D.23134 | D.23135;
      MEM[(guint32 *)code] = D.23136;
      code = code + 4;
      D.23137 = (short unsigned int) rethrow;
      D.23138 = (int) D.23137;
      D.23139 = D.23138 | 956301312;
      D.23140 = (unsigned int) D.23139;
      D.23141 = D.23140 << 24;
      D.23137 = (short unsigned int) rethrow;
      D.23142 = (unsigned int) D.23137;
      D.23143 = D.23142 & 65280;
      D.23144 = D.23143 << 8;
      D.23145 = D.23141 | D.23144;
      D.23137 = (short unsigned int) rethrow;
      D.23138 = (int) D.23137;
      D.23139 = D.23138 | 956301312;
      D.23140 = (unsigned int) D.23139;
      D.23146 = D.23140 >> 24;
      D.23147 = D.23145 | D.23146;
      MEM[(guint32 *)code] = D.23147;
      code = code + 4;
      if (aot != 0) goto <D.23148>; else goto <D.23149>;
      <D.23148>:
      code = mono_arch_emit_load_got_addr (start, code, 0B, &ji);
      code = mono_arch_emit_load_aotconst (start, code, &ji, 32, "mono_ppc_throw_exception");
      MEM[(guint32 *)code] = 134237160;
      code = code + 4;
      MEM[(guint32 *)code] = 27625;
      code = code + 4;
      MEM[(guint32 *)code] = 2785241469;
      code = code + 4;
      MEM[(guint32 *)code] = 553943118;
      code = code + 4;
      goto <D.23150>;
      <D.23149>:
      mono_ppc_throw_exception.18 = (long unsigned int) mono_ppc_throw_exception;
      D.23152 = mono_ppc_throw_exception.18 >> 48;
      D.23153 = (short unsigned int) D.23152;
      D.23154 = (int) D.23153;
      D.23155 = D.23154 | 1029701632;
      D.23156 = (unsigned int) D.23155;
      D.23157 = D.23156 << 24;
      mono_ppc_throw_exception.18 = (long unsigned int) mono_ppc_throw_exception;
      D.23152 = mono_ppc_throw_exception.18 >> 48;
      D.23153 = (short unsigned int) D.23152;
      D.23158 = (unsigned int) D.23153;
      D.23159 = D.23158 & 65280;
      D.23160 = D.23159 << 8;
      D.23161 = D.23157 | D.23160;
      mono_ppc_throw_exception.18 = (long unsigned int) mono_ppc_throw_exception;
      D.23152 = mono_ppc_throw_exception.18 >> 48;
      D.23153 = (short unsigned int) D.23152;
      D.23158 = (unsigned int) D.23153;
      D.23162 = D.23158 & 10420224;
      D.23163 = D.23162 | 6291456;
      D.23164 = D.23163 >> 8;
      mono_ppc_throw_exception.18 = (long unsigned int) mono_ppc_throw_exception;
      D.23152 = mono_ppc_throw_exception.18 >> 48;
      D.23153 = (short unsigned int) D.23152;
      D.23154 = (int) D.23153;
      D.23155 = D.23154 | 1029701632;
      D.23156 = (unsigned int) D.23155;
      D.23165 = D.23156 >> 24;
      D.23166 = D.23164 | D.23165;
      D.23167 = D.23161 | D.23166;
      MEM[(guint32 *)code] = D.23167;
      code = code + 4;
      mono_ppc_throw_exception.18 = (long unsigned int) mono_ppc_throw_exception;
      D.23168 = mono_ppc_throw_exception.18 >> 32;
      D.23169 = (short unsigned int) D.23168;
      D.23170 = (int) D.23169;
      D.23171 = D.23170 | 1634402304;
      D.23172 = (unsigned int) D.23171;
      D.23173 = D.23172 << 24;
      mono_ppc_throw_exception.18 = (long unsigned int) mono_ppc_throw_exception;
      D.23168 = mono_ppc_throw_exception.18 >> 32;
      D.23169 = (short unsigned int) D.23168;
      D.23174 = (unsigned int) D.23169;
      D.23175 = D.23174 & 65280;
      D.23176 = D.23175 << 8;
      D.23177 = D.23173 | D.23176;
      mono_ppc_throw_exception.18 = (long unsigned int) mono_ppc_throw_exception;
      D.23168 = mono_ppc_throw_exception.18 >> 32;
      D.23169 = (short unsigned int) D.23168;
      D.23174 = (unsigned int) D.23169;
      D.23178 = D.23174 & 9699328;
      D.23179 = D.23178 | 7012352;
      D.23180 = D.23179 >> 8;
      mono_ppc_throw_exception.18 = (long unsigned int) mono_ppc_throw_exception;
      D.23168 = mono_ppc_throw_exception.18 >> 32;
      D.23169 = (short unsigned int) D.23168;
      D.23170 = (int) D.23169;
      D.23171 = D.23170 | 1634402304;
      D.23172 = (unsigned int) D.23171;
      D.23181 = D.23172 >> 24;
      D.23182 = D.23180 | D.23181;
      D.23183 = D.23177 | D.23182;
      MEM[(guint32 *)code] = D.23183;
      code = code + 4;
      MEM[(guint32 *)code] = 3322375033;
      code = code + 4;
      mono_ppc_throw_exception.18 = (long unsigned int) mono_ppc_throw_exception;
      D.23184 = mono_ppc_throw_exception.18 >> 16;
      D.23185 = (short unsigned int) D.23184;
      D.23186 = (int) D.23185;
      D.23187 = D.23186 | 1701511168;
      D.23188 = (unsigned int) D.23187;
      D.23189 = D.23188 << 24;
      mono_ppc_throw_exception.18 = (long unsigned int) mono_ppc_throw_exception;
      D.23184 = mono_ppc_throw_exception.18 >> 16;
      D.23185 = (short unsigned int) D.23184;
      D.23190 = (unsigned int) D.23185;
      D.23191 = D.23190 & 65280;
      D.23192 = D.23191 << 8;
      D.23193 = D.23189 | D.23192;
      mono_ppc_throw_exception.18 = (long unsigned int) mono_ppc_throw_exception;
      D.23184 = mono_ppc_throw_exception.18 >> 16;
      D.23185 = (short unsigned int) D.23184;
      D.23190 = (unsigned int) D.23185;
      D.23194 = D.23190 & 9699328;
      D.23195 = D.23194 | 7012352;
      D.23196 = D.23195 >> 8;
      mono_ppc_throw_exception.18 = (long unsigned int) mono_ppc_throw_exception;
      D.23184 = mono_ppc_throw_exception.18 >> 16;
      D.23185 = (short unsigned int) D.23184;
      D.23186 = (int) D.23185;
      D.23187 = D.23186 | 1701511168;
      D.23188 = (unsigned int) D.23187;
      D.23197 = D.23188 >> 24;
      D.23198 = D.23196 | D.23197;
      D.23199 = D.23193 | D.23198;
      MEM[(guint32 *)code] = D.23199;
      code = code + 4;
      mono_ppc_throw_exception.19 = (long int) mono_ppc_throw_exception;
      D.23201 = (short unsigned int) mono_ppc_throw_exception.19;
      D.23202 = (int) D.23201;
      D.23203 = D.23202 | 1634402304;
      D.23204 = (unsigned int) D.23203;
      D.23205 = D.23204 << 24;
      mono_ppc_throw_exception.19 = (long int) mono_ppc_throw_exception;
      D.23201 = (short unsigned int) mono_ppc_throw_exception.19;
      D.23206 = (unsigned int) D.23201;
      D.23207 = D.23206 & 65280;
      D.23208 = D.23207 << 8;
      D.23209 = D.23205 | D.23208;
      mono_ppc_throw_exception.19 = (long int) mono_ppc_throw_exception;
      D.23201 = (short unsigned int) mono_ppc_throw_exception.19;
      D.23206 = (unsigned int) D.23201;
      D.23210 = D.23206 & 9699328;
      D.23211 = D.23210 | 7012352;
      D.23212 = D.23211 >> 8;
      mono_ppc_throw_exception.19 = (long int) mono_ppc_throw_exception;
      D.23201 = (short unsigned int) mono_ppc_throw_exception.19;
      D.23202 = (int) D.23201;
      D.23203 = D.23202 | 1634402304;
      D.23204 = (unsigned int) D.23203;
      D.23213 = D.23204 >> 24;
      D.23214 = D.23212 | D.23213;
      D.23215 = D.23209 | D.23214;
      MEM[(guint32 *)code] = D.23215;
      code = code + 4;
      MEM[(guint32 *)code] = 134237160;
      code = code + 4;
      MEM[(guint32 *)code] = 3048;
      code = code + 4;
      MEM[(guint32 *)code] = 2785216892;
      code = code + 4;
      MEM[(guint32 *)code] = 553943118;
      code = code + 4;
      <D.23150>:
      MEM[(guint32 *)code] = 134275199;
      code = code + 4;
      code.20 = (long int) code;
      start.21 = (long int) start;
      D.23218 = code.20 - start.21;
      D.23219 = (long int) size;
      D.23220 = D.23218 > D.23219;
      D.23221 = (long int) D.23220;
      D.23222 = __builtin_expect (D.23221, 0);
      if (D.23222 != 0) goto <D.23223>; else goto <D.23224>;
      <D.23223>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "exceptions-ppc.c", 435, "(code - start) <= size");
      <D.23224>:
      code.20 = (long int) code;
      start.21 = (long int) start;
      D.23218 = code.20 - start.21;
      D.23225 = (int) D.23218;
      mono_arch_flush_icache (start, D.23225);
      if (info != 0B) goto <D.23226>; else goto <D.23227>;
      <D.23226>:
      if (corlib == 0) goto <D.23229>; else goto <D.23230>;
      <D.23229>:
      if (rethrow != 0) goto <D.23232>; else goto <D.23233>;
      <D.23232>:
      iftmp.23 = "rethrow_exception";
      goto <D.23234>;
      <D.23233>:
      iftmp.23 = "throw_exception";
      <D.23234>:
      iftmp.22 = iftmp.23;
      goto <D.23235>;
      <D.23230>:
      iftmp.22 = "throw_corlib_exception";
      <D.23235>:
      code.20 = (long int) code;
      start.21 = (long int) start;
      D.23218 = code.20 - start.21;
      D.23236 = (unsigned int) D.23218;
      ji.24 = ji;
      D.23238 = mono_tramp_info_create (iftmp.22, start, D.23236, ji.24, unwind_ops);
      *info = D.23238;
      <D.23227>:
      D.23239 = start;
      return D.23239;
    }
  finally
    {
      ji = {CLOBBER};
    }
}


mono_arch_get_throw_exception (struct MonoTrampInfo * * info, gboolean aot)
{
  void * D.23244;
  int size;

  size = 248;
  if (aot != 0) goto <D.23242>; else goto <D.23243>;
  <D.23242>:
  size = size + 64;
  <D.23243>:
  D.23244 = mono_arch_get_throw_exception_generic (size, info, 0, 0, aot);
  return D.23244;
}


mono_arch_get_throw_corlib_exception (struct MonoTrampInfo * * info, gboolean aot)
{
  void * D.23248;
  int size;

  size = 328;
  if (aot != 0) goto <D.23246>; else goto <D.23247>;
  <D.23246>:
  size = size + 64;
  <D.23247>:
  D.23248 = mono_arch_get_throw_exception_generic (size, info, 1, 0, aot);
  return D.23248;
}


mono_arch_find_jit_info (struct MonoDomain * domain, struct MonoJitTlsData * jit_tls, struct MonoJitInfo * ji, struct MonoContext * ctx, struct MonoContext * new_ctx, struct MonoLMF * * lmf, mgreg_t * * save_locations, struct StackFrameInfo * frame)
{
  long unsigned int D.23250;
  long unsigned int D.23253;
  long unsigned int D.23254;
  unsigned int D.23258;
  long unsigned int D.23259;
  long int D.23260;
  long unsigned int D.23261;
  struct MonoMethod * D.23262;
  long unsigned int D.23263;
  long unsigned int D.23264;
  sizetype D.23267;
  sizetype D.23268;
  double[18] * D.23269;
  guint8 * D.23270;
  mgreg_t[19] * D.23271;
  guint8 * D.23272;
  long int D.23273;
  long unsigned int D.23274;
  long unsigned int D.23275;
  long int D.23277;
  long int D.23278;
  int D.23279;
  long int D.23280;
  unsigned int unwind_info_len.25;
  void * D.23282;
  int D.23283;
  sizetype D.23284;
  guint8 * D.23285;
  long int D.23286;
  long unsigned int D.23287;
  long unsigned int D.23288;
  guint8 * cfa.26;
  long unsigned int cfa.27;
  long int D.23291;
  struct MonoLMF * D.23292;
  void * D.23295;
  long unsigned int D.23296;
  void * D.23297;
  void * D.23300;
  gboolean D.23301;
  long unsigned int D.23304;
  char * D.23305;
  struct MonoMethod * D.23309;
  mgreg_t[19] * D.23312;
  gdouble[18] * D.23313;
  void * ip;
  struct MonoPPCStackFrame * sframe;

  D.23250 = ctx->sc_ir;
  ip = (void *) D.23250;
  memset (frame, 0, 88);
  frame->ji = ji;
  *new_ctx = *ctx;
  if (ji != 0B) goto <D.23251>; else goto <D.23252>;
  <D.23251>:
  {
    int i;
    mgreg_t regs[257];
    guint8 * cfa;
    guint32 unwind_info_len;
    guint8 * unwind_info;

    try
      {
        frame->type = 0;
        D.23253 = BIT_FIELD_REF <*ji, 64, 256>;
        D.23254 = D.23253 & 1048576;
        if (D.23254 != 0) goto <D.23255>; else goto <D.23256>;
        <D.23255>:
        unwind_info = mono_aot_get_unwind_info (ji, &unwind_info_len);
        goto <D.23257>;
        <D.23256>:
        D.23258 = ji->used_regs;
        unwind_info = mono_get_cached_unwind_info (D.23258, &unwind_info_len);
        <D.23257>:
        D.23259 = ctx->sc_sp;
        sframe = (struct MonoPPCStackFrame *) D.23259;
        D.23260 = sframe->sp;
        D.23261 = (long unsigned int) D.23260;
        new_ctx->sc_sp = D.23261;
        D.23262 = jinfo_get_method (ji);
        D.23263 = BIT_FIELD_REF <*D.23262, 64, 256>;
        D.23264 = D.23263 & 256;
        if (D.23264 != 0) goto <D.23265>; else goto <D.23266>;
        <D.23265>:
        {
          guint8 * lmf_addr;

          D.23260 = sframe->sp;
          D.23267 = (sizetype) D.23260;
          D.23268 = D.23267 + 18446744073709551272;
          lmf_addr = (guint8 *) D.23268;
          D.23269 = &new_ctx->fregs;
          D.23270 = lmf_addr + 200;
          memcpy (D.23269, D.23270, 144);
          D.23271 = &new_ctx->regs;
          D.23272 = lmf_addr + 48;
          memcpy (D.23271, D.23272, 152);
          D.23260 = sframe->sp;
          sframe = (struct MonoPPCStackFrame *) D.23260;
          D.23273 = sframe->lr;
          D.23274 = (long unsigned int) D.23273;
          D.23275 = D.23274 + 18446744073709551612;
          new_ctx->sc_ir = D.23275;
        }
        goto <D.23276>;
        <D.23266>:
        D.23250 = ctx->sc_ir;
        D.23277 = (long int) D.23250;
        regs[256] = D.23277;
        D.23259 = ctx->sc_sp;
        D.23278 = (long int) D.23259;
        regs[1] = D.23278;
        i = 0;
        goto <D.22568>;
        <D.22567>:
        D.23279 = i + 13;
        D.23280 = ctx->regs[i];
        regs[D.23279] = D.23280;
        i = i + 1;
        <D.22568>:
        if (i <= 18) goto <D.22567>; else goto <D.22569>;
        <D.22569>:
        unwind_info_len.25 = unwind_info_len;
        D.23282 = ji->code_start;
        D.23282 = ji->code_start;
        D.23283 = ji->code_size;
        D.23284 = (sizetype) D.23283;
        D.23285 = D.23282 + D.23284;
        mono_unwind_frame (unwind_info, unwind_info_len.25, D.23282, D.23285, ip, &regs, 257, save_locations, 32, &cfa);
        D.23286 = regs[256];
        D.23287 = (long unsigned int) D.23286;
        D.23288 = D.23287 + 18446744073709551612;
        new_ctx->sc_ir = D.23288;
        cfa.26 = cfa;
        cfa.27 = (long unsigned int) cfa.26;
        new_ctx->sc_sp = cfa.27;
        i = 0;
        goto <D.22571>;
        <D.22570>:
        D.23279 = i + 13;
        D.23291 = regs[D.23279];
        new_ctx->regs[i] = D.23291;
        i = i + 1;
        <D.22571>:
        if (i <= 18) goto <D.22570>; else goto <D.22572>;
        <D.22572>:
        <D.23276>:
        D.23292 = *lmf;
        if (D.23292 != 0B) goto <D.23293>; else goto <D.23294>;
        <D.23293>:
        D.23259 = ctx->sc_sp;
        D.23295 = (void *) D.23259;
        D.23292 = *lmf;
        D.23296 = D.23292->ebp;
        D.23297 = (void *) D.23296;
        if (D.23295 >= D.23297) goto <D.23298>; else goto <D.23299>;
        <D.23298>:
        D.23292 = *lmf;
        D.23300 = D.23292->previous_lmf;
        *lmf = D.23300;
        <D.23299>:
        <D.23294>:
        D.23301 = 1;
        return D.23301;
      }
    finally
      {
        regs = {CLOBBER};
        cfa = {CLOBBER};
        unwind_info_len = {CLOBBER};
      }
  }
  <D.23252>:
  D.23292 = *lmf;
  if (D.23292 != 0B) goto <D.23302>; else goto <D.23303>;
  <D.23302>:
  D.23292 = *lmf;
  D.23304 = D.23292->eip;
  D.23305 = (char *) D.23304;
  ji = mini_jit_info_table_find (domain, D.23305, 0B);
  if (ji != 0B) goto <D.23306>; else goto <D.23307>;
  <D.23306>:
  goto <D.23308>;
  <D.23307>:
  D.23292 = *lmf;
  D.23309 = D.23292->method;
  if (D.23309 == 0B) goto <D.23310>; else goto <D.23311>;
  <D.23310>:
  D.23301 = 0;
  return D.23301;
  <D.23311>:
  D.23292 = *lmf;
  D.23309 = D.23292->method;
  frame->method = D.23309;
  <D.23308>:
  D.23292 = *lmf;
  D.23296 = D.23292->ebp;
  new_ctx->sc_sp = D.23296;
  D.23292 = *lmf;
  D.23304 = D.23292->eip;
  new_ctx->sc_ir = D.23304;
  D.23271 = &new_ctx->regs;
  D.23292 = *lmf;
  D.23312 = &D.23292->iregs;
  memcpy (D.23271, D.23312, 152);
  D.23269 = &new_ctx->fregs;
  D.23292 = *lmf;
  D.23313 = &D.23292->fregs;
  memcpy (D.23269, D.23313, 144);
  frame->ji = ji;
  frame->type = 2;
  D.23292 = *lmf;
  D.23300 = D.23292->previous_lmf;
  *lmf = D.23300;
  D.23301 = 1;
  return D.23301;
  <D.23303>:
  D.23301 = 0;
  return D.23301;
}


memset (void * __dest, int __ch, size_t __len)
{
  int D.23318;
  int D.23323;
  void * D.23325;
  long unsigned int D.23326;

  D.23318 = __builtin_constant_p (__len);
  if (D.23318 != 0) goto <D.23319>; else goto <D.23320>;
  <D.23319>:
  if (__len == 0) goto <D.23321>; else goto <D.23322>;
  <D.23321>:
  D.23323 = __builtin_constant_p (__ch);
  if (D.23323 == 0) goto <D.23316>; else goto <D.23324>;
  <D.23324>:
  if (__ch != 0) goto <D.23316>; else goto <D.23317>;
  <D.23316>:
  __warn_memset_zero_len ();
  D.23325 = __dest;
  return D.23325;
  <D.23317>:
  <D.23322>:
  <D.23320>:
  D.23326 = __builtin_object_size (__dest, 0);
  D.23325 = __builtin___memset_chk (__dest, __ch, __len, D.23326);
  return D.23325;
}


jinfo_get_method (struct MonoJitInfo * ji)
{
  struct MonoMethod * D.23328;

  D.23328 = mono_jit_info_get_method (ji);
  return D.23328;
}


mono_arch_sigctx_to_monoctx (void * ctx, struct MonoContext * mctx)
{
  long unsigned int D.23330;
  long unsigned int D.23331;
  mgreg_t[19] * D.23332;
  long unsigned int * D.23333;
  double[18] * D.23334;
  double * D.23335;
  struct os_ucontext * uc;

  uc = ctx;
  D.23330 = uc->uc_mcontext.gp_regs[32];
  mctx->sc_ir = D.23330;
  D.23331 = uc->uc_mcontext.gp_regs[1];
  mctx->sc_sp = D.23331;
  D.23332 = &mctx->regs;
  D.23333 = &uc->uc_mcontext.gp_regs[13];
  memcpy (D.23332, D.23333, 152);
  D.23334 = &mctx->fregs;
  D.23335 = &uc->uc_mcontext.fp_regs[14];
  memcpy (D.23334, D.23335, 144);
}


mono_arch_monoctx_to_sigctx (struct MonoContext * mctx, void * ctx)
{
  long unsigned int D.23336;
  long unsigned int D.23337;
  long unsigned int * D.23338;
  mgreg_t[19] * D.23339;
  double * D.23340;
  double[18] * D.23341;
  struct os_ucontext * uc;

  uc = ctx;
  D.23336 = mctx->sc_ir;
  uc->uc_mcontext.gp_regs[32] = D.23336;
  D.23337 = mctx->sc_sp;
  uc->uc_mcontext.gp_regs[1] = D.23337;
  D.23338 = &uc->uc_mcontext.gp_regs[13];
  D.23339 = &mctx->regs;
  memcpy (D.23338, D.23339, 152);
  D.23340 = &uc->uc_mcontext.fp_regs[14];
  D.23341 = &mctx->fregs;
  memcpy (D.23340, D.23341, 144);
}


mono_arch_ip_from_context (void * sigctx)
{
  void * D.23342;
  long unsigned int D.23343;
  struct os_ucontext * uc;

  uc = sigctx;
  D.23343 = uc->uc_mcontext.gp_regs[32];
  D.23342 = (void *) D.23343;
  return D.23342;
}


mono_ppc_set_func_into_sigctx (void * sigctx, void * func)
{
  long unsigned int D.23345;
  long unsigned int D.23346;
  struct os_ucontext * uc;

  uc = sigctx;
  D.23345 = MEM[(gsize *)func];
  uc->uc_mcontext.gp_regs[32] = D.23345;
  D.23346 = MEM[(gsize *)func + 8B];
  uc->uc_mcontext.gp_regs[2] = D.23346;
}


mono_arch_handle_altstack_exception (void * sigctx, void * fault_addr, gboolean stack_ovf)
{
  struct MonoDomain * D.23347;
  void * D.23348;
  struct _IO_FILE * stderr.28;
  void * D.23352;
  long unsigned int D.23353;
  void * D.23354;
  struct MonoMethod * D.23358;
  struct MonoMethod * D.23360;
  long unsigned int D.23363;
  sizetype D.23364;
  sizetype D.23365;
  void * D.23366;
  void * D.23367;
  _Bool D.23368;
  long int D.23369;
  long int D.23370;
  long unsigned int D.23373;
  void * D.23374;
  long unsigned int D.23375;
  void * D.23376;
  long unsigned int D.23377;
  long unsigned int sp.29;
  void * * D.23379;
  long unsigned int D.23380;
  struct os_ucontext * uc;
  struct os_ucontext * uc_copy;
  struct MonoJitInfo * ji;
  void * * sp;
  int frame_size;

  uc = sigctx;
  D.23347 = mono_domain_get ();
  D.23348 = mono_arch_ip_from_context (sigctx);
  ji = mini_jit_info_table_find (D.23347, D.23348, 0B);
  if (stack_ovf != 0) goto <D.23349>; else goto <D.23350>;
  <D.23349>:
  {
    const char * method;

    stderr.28 = stderr;
    D.23352 = mono_arch_ip_from_context (sigctx);
    D.23353 = uc->uc_mcontext.gp_regs[1];
    D.23354 = (void *) D.23353;
    fprintf (stderr.28, "Stack overflow: IP: %p, SP: %p\n", D.23352, D.23354);
    if (ji != 0B) goto <D.23357>; else goto <D.23355>;
    <D.23357>:
    D.23358 = jinfo_get_method (ji);
    if (D.23358 != 0B) goto <D.23359>; else goto <D.23355>;
    <D.23359>:
    D.23360 = jinfo_get_method (ji);
    method = mono_method_full_name (D.23360, 1);
    goto <D.23356>;
    <D.23355>:
    method = "Unmanaged";
    <D.23356>:
    stderr.28 = stderr;
    fprintf (stderr.28, "At %s\n", method);
    abort ();
  }
  <D.23350>:
  if (ji == 0B) goto <D.23361>; else goto <D.23362>;
  <D.23361>:
  mono_handle_native_sigsegv (11, sigctx);
  <D.23362>:
  frame_size = 1792;
  frame_size = frame_size + 15;
  frame_size = frame_size & -16;
  D.23353 = uc->uc_mcontext.gp_regs[1];
  D.23363 = D.23353 & 18446744073709551600;
  sp = (void * *) D.23363;
  D.23364 = (sizetype) frame_size;
  D.23365 = -D.23364;
  sp = sp + D.23365;
  uc_copy = sp + 128;
  memcpy (uc_copy, uc, 1440);
  D.23366 = mono_arch_ip_from_context (uc);
  D.23367 = mono_arch_ip_from_context (uc_copy);
  D.23368 = D.23366 != D.23367;
  D.23369 = (long int) D.23368;
  D.23370 = __builtin_expect (D.23369, 0);
  if (D.23370 != 0) goto <D.23371>; else goto <D.23372>;
  <D.23371>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "exceptions-ppc.c", 719, "mono_arch_ip_from_context (uc) == mono_arch_ip_from_context (uc_copy)");
  <D.23372>:
  D.23373 = uc->uc_mcontext.gp_regs[32];
  uc->uc_mcontext.gp_regs[36] = D.23373;
  {
    struct MonoPPCFunctionDescriptor * handler_ftnptr;

    handler_ftnptr = altstack_handle_and_restore;
    D.23374 = handler_ftnptr->code;
    D.23375 = (long unsigned int) D.23374;
    uc->uc_mcontext.gp_regs[32] = D.23375;
    D.23376 = handler_ftnptr->toc;
    D.23377 = (long unsigned int) D.23376;
    uc->uc_mcontext.gp_regs[2] = D.23377;
  }
  sp.29 = (long unsigned int) sp;
  uc->uc_mcontext.gp_regs[1] = sp.29;
  D.23379 = sp + 128;
  D.23380 = (long unsigned int) D.23379;
  uc->uc_mcontext.gp_regs[3] = D.23380;
  uc->uc_mcontext.gp_regs[4] = 0;
  uc->uc_mcontext.gp_regs[5] = 0;
}


altstack_handle_and_restore (void * sigctx, void * obj)
{
  struct MonoContext mctx;

  try
    {
      mono_arch_sigctx_to_monoctx (sigctx, &mctx);
      mono_handle_exception (&mctx, obj);
      mono_restore_context (&mctx);
    }
  finally
    {
      mctx = {CLOBBER};
    }
}


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

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


mono_arch_handle_exception (void * ctx, void * obj)
{
  unsigned int mono_jit_tls_id.30;
  struct MonoContext * D.23384;
  long unsigned int obj.31;
  long unsigned int D.23386;
  long int D.23387;
  long int D.23388;
  long unsigned int sp.32;
  gboolean D.23390;
  struct MonoJitTlsData * jit_tls;
  mgreg_t sp;
  void * sigctx;
  int frame_size;
  void * uc;

  mono_jit_tls_id.30 = mono_jit_tls_id;
  jit_tls = pthread_getspecific (mono_jit_tls_id.30);
  sigctx = ctx;
  uc = sigctx;
  D.23384 = &jit_tls->ex_ctx;
  mono_arch_sigctx_to_monoctx (sigctx, D.23384);
  obj.31 = (long unsigned int) obj;
  MEM[(struct os_ucontext *)sigctx].uc_mcontext.gp_regs[3] = obj.31;
  frame_size = 224;
  frame_size = frame_size + 15;
  frame_size = frame_size & -16;
  D.23386 = MEM[(struct os_ucontext *)uc].uc_mcontext.gp_regs[1];
  D.23387 = (long int) D.23386;
  sp = D.23387 & -16;
  D.23388 = (long int) frame_size;
  sp = sp - D.23388;
  sp.32 = (long unsigned int) sp;
  MEM[(struct os_ucontext *)uc].uc_mcontext.gp_regs[1] = sp.32;
  setup_ucontext_return (uc, handle_signal_exception);
  D.23390 = 1;
  return D.23390;
}


handle_signal_exception (void * obj)
{
  unsigned int mono_jit_tls_id.33;
  struct MonoContext * D.23393;
  struct MonoJitTlsData * jit_tls;
  struct MonoContext ctx;

  try
    {
      mono_jit_tls_id.33 = mono_jit_tls_id;
      jit_tls = pthread_getspecific (mono_jit_tls_id.33);
      D.23393 = &jit_tls->ex_ctx;
      memcpy (&ctx, D.23393, 312);
      mono_handle_exception (&ctx, obj);
      mono_restore_context (&ctx);
    }
  finally
    {
      ctx = {CLOBBER};
    }
}


setup_ucontext_return (void * uc, void * func)
{
  long unsigned int D.23394;
  void * D.23395;
  long unsigned int D.23396;
  void * D.23397;
  long unsigned int D.23398;

  D.23394 = MEM[(struct os_ucontext *)uc].uc_mcontext.gp_regs[32];
  MEM[(struct os_ucontext *)uc].uc_mcontext.gp_regs[36] = D.23394;
  {
    struct MonoPPCFunctionDescriptor * handler_ftnptr;

    handler_ftnptr = func;
    D.23395 = handler_ftnptr->code;
    D.23396 = (long unsigned int) D.23395;
    MEM[(struct os_ucontext *)uc].uc_mcontext.gp_regs[32] = D.23396;
    D.23397 = handler_ftnptr->toc;
    D.23398 = (long unsigned int) D.23397;
    MEM[(struct os_ucontext *)uc].uc_mcontext.gp_regs[2] = D.23398;
  }
}


