mono_arch_get_unbox_trampoline (struct MonoMethod * m, void * addr)
{
  unsigned int addr.0;
  unsigned int D.21580;
  unsigned int D.21583;
  unsigned int D.21584;
  unsigned int D.21585;
  unsigned int D.21586;
  unsigned int D.21588;
  unsigned int D.21589;
  unsigned int D.21590;
  int code.1;
  int start.2;
  int D.21593;
  _Bool D.21594;
  long int D.21595;
  long int D.21596;
  void * D.21599;
  guint8 * code;
  guint8 * start;
  struct MonoDomain * domain;

  domain = mono_domain_get ();
  code = mono_domain_code_reserve (domain, 20);
  start = code;
  addr.0 = (unsigned int) addr;
  D.21580 = addr.0 & 32768;
  if (D.21580 != 0) goto <D.21581>; else goto <D.21582>;
  <D.21581>:
  addr.0 = (unsigned int) addr;
  D.21583 = addr.0 >> 16;
  D.21584 = D.21583 + 1;
  D.21585 = D.21584 & 65535;
  D.21586 = D.21585 | 1008271360;
  MEM[(guint32 *)code] = D.21586;
  code = code + 4;
  goto <D.21587>;
  <D.21582>:
  addr.0 = (unsigned int) addr;
  D.21583 = addr.0 >> 16;
  D.21588 = D.21583 | 1008271360;
  MEM[(guint32 *)code] = D.21588;
  code = code + 4;
  <D.21587>:
  addr.0 = (unsigned int) addr;
  D.21589 = addr.0 & 65535;
  D.21590 = D.21589 | 658046976;
  MEM[(guint32 *)code] = D.21590;
  code = code + 4;
  MEM[(guint32 *)code] = 612630536;
  code = code + 4;
  MEM[(guint32 *)code] = 52428808;
  code = code + 4;
  MEM[(guint32 *)code] = 2099237;
  code = code + 4;
  code.1 = (int) code;
  start.2 = (int) start;
  D.21593 = code.1 - start.2;
  mono_arch_flush_icache (start, D.21593);
  code.1 = (int) code;
  start.2 = (int) start;
  D.21593 = code.1 - start.2;
  D.21594 = D.21593 > 20;
  D.21595 = (long int) D.21594;
  D.21596 = __builtin_expect (D.21595, 0);
  if (D.21596 != 0) goto <D.21597>; else goto <D.21598>;
  <D.21597>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "tramp-mips.c", 51, "(code - start) <= 20");
  <D.21598>:
  D.21599 = start;
  return D.21599;
}


mono_arch_patch_callsite (guint8 * method_start, guint8 * orig_code, guint8 * addr)
{
  guint32 * D.21601;
  unsigned int D.21602;
  unsigned int D.21603;
  unsigned int addr.3;
  unsigned int D.21607;
  guint32 * D.21610;
  unsigned int D.21611;
  unsigned int D.21612;
  guint32 * D.21615;
  unsigned int D.21616;
  unsigned int D.21617;
  guint32 * code;

  code = orig_code;
  D.21601 = code + 4294967288;
  D.21602 = *D.21601;
  D.21603 = D.21602 >> 26;
  if (D.21603 == 3) goto <D.21604>; else goto <D.21605>;
  <D.21604>:
  D.21601 = code + 4294967288;
  addr.3 = (unsigned int) addr;
  mips_patch (D.21601, addr.3);
  return;
  <D.21605>:
  D.21601 = code + 4294967288;
  D.21602 = *D.21601;
  D.21607 = D.21602 & 4229890111;
  if (D.21607 == 9) goto <D.21608>; else goto <D.21609>;
  <D.21608>:
  D.21610 = code + 4294967280;
  D.21611 = *D.21610;
  D.21612 = D.21611 >> 26;
  if (D.21612 == 15) goto <D.21613>; else goto <D.21614>;
  <D.21613>:
  D.21615 = code + 4294967284;
  D.21616 = *D.21615;
  D.21617 = D.21616 >> 26;
  if (D.21617 == 9) goto <D.21618>; else goto <D.21619>;
  <D.21618>:
  D.21601 = code + 4294967288;
  D.21602 = *D.21601;
  D.21603 = D.21602 >> 26;
  if (D.21603 == 0) goto <D.21620>; else goto <D.21621>;
  <D.21620>:
  D.21610 = code + 4294967280;
  addr.3 = (unsigned int) addr;
  mips_patch (D.21610, addr.3);
  return;
  <D.21621>:
  <D.21619>:
  <D.21614>:
  <D.21609>:
  monoeg_g_print ("error: bad patch at 0x%08x\n", code);
  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "tramp-mips.c", 94);
}


mono_arch_patch_plt_entry (guint8 * code, void * * got, mgreg_t * regs, guint8 * addr)
{
  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "tramp-mips.c", 100);
}


mono_arch_nullify_plt_entry (guint8 * code, mgreg_t * regs)
{
  void * D.21623;

  D.21623 = mini_get_nullified_class_init_trampoline ();
  mono_arch_patch_plt_entry (code, 0B, regs, D.21623);
}


mono_arch_nullify_class_init_trampoline (guint8 * code, mgreg_t * regs)
{
  unsigned int D.21626;
  unsigned int D.21627;
  unsigned int D.21629;
  guint8 * D.21630;
  guint32 * code32;

  code32 = code;
  code32 = code32 + 4294967288;
  D.21626 = *code32;
  D.21627 = D.21626 & 4227858432;
  if (D.21627 == 201326592) goto <D.21624>; else goto <D.21628>;
  <D.21628>:
  D.21626 = *code32;
  D.21629 = D.21626 & 4229890111;
  if (D.21629 == 9) goto <D.21624>; else goto <D.21625>;
  <D.21624>:
  *code32 = 2099237;
  code32 = code32 + 4;
  D.21630 = code32 + 4294967292;
  mono_arch_flush_icache (D.21630, 4);
  return;
  <D.21625>:
  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "tramp-mips.c", 135);
}


mono_arch_get_nullified_class_init_trampoline (struct MonoTrampInfo * * info)
{
  int code.4;
  int buf.5;
  int D.21634;
  unsigned int D.21637;
  struct MonoTrampInfo * D.21638;
  void * D.21639;
  guint8 * buf;
  guint8 * code;

  buf = mono_global_codeman_reserve (16);
  code = buf;
  MEM[(guint32 *)code] = 65011720;
  code = code + 4;
  MEM[(guint32 *)code] = 2099237;
  code = code + 4;
  code.4 = (int) code;
  buf.5 = (int) buf;
  D.21634 = code.4 - buf.5;
  mono_arch_flush_icache (buf, D.21634);
  if (info != 0B) goto <D.21635>; else goto <D.21636>;
  <D.21635>:
  code.4 = (int) code;
  buf.5 = (int) buf;
  D.21634 = code.4 - buf.5;
  D.21637 = (unsigned int) D.21634;
  D.21638 = mono_tramp_info_create ("nullified_class_init_trampoline", buf, D.21637, 0B, 0B);
  *info = D.21638;
  <D.21636>:
  D.21639 = buf;
  return D.21639;
}


mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, struct MonoTrampInfo * * info, gboolean aot)
{
  _Bool D.21641;
  long int D.21642;
  long int D.21643;
  int D.21646;
  unsigned int D.21647;
  sizetype i.6;
  sizetype D.21649;
  void * D.21650;
  unsigned int D.21651;
  unsigned int lmf.7;
  unsigned int D.21653;
  unsigned int D.21654;
  unsigned int D.21655;
  unsigned int D.21656;
  void * D.21657;
  unsigned int D.21658;
  unsigned int D.21659;
  unsigned int D.21660;
  unsigned int D.21661;
  unsigned int D.21662;
  unsigned int D.21671;
  unsigned int D.21672;
  unsigned int D.21673;
  unsigned int D.21674;
  unsigned int D.21675;
  unsigned int D.21676;
  unsigned int D.21677;
  unsigned int D.21678;
  unsigned int D.21679;
  unsigned int D.21682;
  unsigned int D.21683;
  unsigned int D.21684;
  unsigned int D.21686;
  unsigned int mono_get_lmf_addr.8;
  unsigned int D.21688;
  unsigned int D.21691;
  unsigned int D.21692;
  unsigned int D.21693;
  unsigned int D.21694;
  unsigned int D.21696;
  unsigned int D.21697;
  unsigned int D.21698;
  unsigned int D.21699;
  unsigned int D.21700;
  unsigned int D.21701;
  unsigned int D.21702;
  unsigned int D.21703;
  int D.21704;
  int D.21705;
  unsigned int D.21706;
  unsigned int D.21707;
  unsigned int D.21708;
  unsigned int D.21709;
  unsigned int D.21715;
  unsigned int D.21716;
  unsigned int D.21717;
  unsigned int D.21719;
  unsigned int tramp.9;
  unsigned int D.21721;
  unsigned int D.21724;
  unsigned int D.21725;
  unsigned int D.21726;
  unsigned int D.21727;
  unsigned int D.21729;
  unsigned int D.21730;
  unsigned int D.21731;
  unsigned int D.21732;
  unsigned int D.21733;
  int D.21734;
  int D.21735;
  unsigned int D.21738;
  unsigned int D.21739;
  unsigned int D.21745;
  int code.10;
  int buf.11;
  int D.21752;
  _Bool D.21753;
  long int D.21754;
  long int D.21755;
  unsigned int D.21760;
  struct MonoTrampInfo * D.21761;
  guchar * D.21762;
  char * tramp_name;
  guint8 * buf;
  guint8 * tramp;
  guint8 * code;
  int i;
  int lmf;
  struct GSList * unwind_ops;
  struct MonoJumpInfo * ji;
  int max_code_len;

  code = 0B;
  unwind_ops = 0B;
  ji = 0B;
  max_code_len = 768;
  D.21641 = aot != 0;
  D.21642 = (long int) D.21641;
  D.21643 = __builtin_expect (D.21642, 0);
  if (D.21643 != 0) goto <D.21644>; else goto <D.21645>;
  <D.21644>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "tramp-mips.c", 182, "!aot");
  <D.21645>:
  buf = mono_global_codeman_reserve (max_code_len);
  code = buf;
  MEM[(guint32 *)code] = 666762928;
  code = code + 4;
  MEM[(guint32 *)code] = 2948530508;
  code = code + 4;
  lmf = 52;
  i = 0;
  goto <D.21506>;
  <D.21505>:
  D.21646 = i << 16;
  D.21647 = (unsigned int) D.21646;
  i.6 = (sizetype) i;
  D.21649 = i.6 * 4;
  D.21650 = 16B + D.21649;
  D.21651 = (unsigned int) D.21650;
  lmf.7 = (unsigned int) lmf;
  D.21653 = D.21651 + lmf.7;
  D.21654 = D.21653 & 65535;
  D.21655 = D.21647 | D.21654;
  D.21656 = D.21655 | 2946498560;
  MEM[(guint32 *)code] = D.21656;
  code = code + 4;
  i = i + 1;
  <D.21506>:
  if (i <= 31) goto <D.21505>; else goto <D.21507>;
  <D.21507>:
  i = 0;
  goto <D.21509>;
  <D.21508>:
  D.21646 = i << 16;
  D.21647 = (unsigned int) D.21646;
  i.6 = (sizetype) i;
  D.21649 = i.6 * 4;
  D.21657 = 144B + D.21649;
  D.21658 = (unsigned int) D.21657;
  lmf.7 = (unsigned int) lmf;
  D.21659 = D.21658 + lmf.7;
  D.21660 = D.21659 & 65535;
  D.21661 = D.21647 | D.21660;
  D.21662 = D.21661 | 3886022656;
  MEM[(guint32 *)code] = D.21662;
  code = code + 4;
  i = i + 1;
  <D.21509>:
  if (i <= 31) goto <D.21508>; else goto <D.21510>;
  <D.21510>:
  if (1 != 0) goto <D.21663>; else goto <D.21664>;
  <D.21663>:
  if (1 != 0) goto <D.21665>; else goto <D.21666>;
  <D.21665>:
  MEM[(guint32 *)code] = 1006748612;
  code = code + 4;
  goto <D.21667>;
  <D.21666>:
  MEM[(guint32 *)code] = 1006748611;
  code = code + 4;
  <D.21667>:
  if (1 != 0) goto <D.21668>; else goto <D.21669>;
  <D.21668>:
  MEM[(guint32 *)code] = 606192579;
  code = code + 4;
  <D.21669>:
  goto <D.21670>;
  <D.21664>:
  MEM[(guint32 *)code] = 604095427;
  code = code + 4;
  <D.21670>:
  lmf.7 = (unsigned int) lmf;
  D.21671 = lmf.7 + 272;
  D.21672 = D.21671 & 65535;
  D.21673 = D.21672 | 2946564096;
  MEM[(guint32 *)code] = D.21673;
  code = code + 4;
  MEM[(guint32 *)code] = 664863056;
  code = code + 4;
  lmf.7 = (unsigned int) lmf;
  D.21674 = lmf.7 + 132;
  D.21675 = D.21674 & 65535;
  D.21676 = D.21675 | 2946564096;
  MEM[(guint32 *)code] = D.21676;
  code = code + 4;
  lmf.7 = (unsigned int) lmf;
  D.21677 = lmf.7 + 8;
  D.21678 = D.21677 & 65535;
  D.21679 = D.21678 | 2948071424;
  MEM[(guint32 *)code] = D.21679;
  code = code + 4;
  if (tramp_type == 1) goto <D.21680>; else goto <D.21681>;
  <D.21680>:
  lmf.7 = (unsigned int) lmf;
  D.21682 = lmf.7 + 12;
  D.21683 = D.21682 & 65535;
  D.21684 = D.21683 | 2946498560;
  MEM[(guint32 *)code] = D.21684;
  code = code + 4;
  goto <D.21685>;
  <D.21681>:
  lmf.7 = (unsigned int) lmf;
  D.21682 = lmf.7 + 12;
  D.21683 = D.21682 & 65535;
  D.21686 = D.21683 | 2948530176;
  MEM[(guint32 *)code] = D.21686;
  code = code + 4;
  <D.21685>:
  mono_get_lmf_addr.8 = (unsigned int) mono_get_lmf_addr;
  D.21688 = mono_get_lmf_addr.8 & 32768;
  if (D.21688 != 0) goto <D.21689>; else goto <D.21690>;
  <D.21689>:
  mono_get_lmf_addr.8 = (unsigned int) mono_get_lmf_addr;
  D.21691 = mono_get_lmf_addr.8 >> 16;
  D.21692 = D.21691 + 1;
  D.21693 = D.21692 & 65535;
  D.21694 = D.21693 | 1008271360;
  MEM[(guint32 *)code] = D.21694;
  code = code + 4;
  goto <D.21695>;
  <D.21690>:
  mono_get_lmf_addr.8 = (unsigned int) mono_get_lmf_addr;
  D.21691 = mono_get_lmf_addr.8 >> 16;
  D.21696 = D.21691 | 1008271360;
  MEM[(guint32 *)code] = D.21696;
  code = code + 4;
  <D.21695>:
  mono_get_lmf_addr.8 = (unsigned int) mono_get_lmf_addr;
  D.21697 = mono_get_lmf_addr.8 & 65535;
  D.21698 = D.21697 | 658046976;
  MEM[(guint32 *)code] = D.21698;
  code = code + 4;
  MEM[(guint32 *)code] = 52492297;
  code = code + 4;
  MEM[(guint32 *)code] = 2099237;
  code = code + 4;
  lmf.7 = (unsigned int) lmf;
  D.21699 = lmf.7 + 4;
  D.21700 = D.21699 & 65535;
  D.21701 = D.21700 | 2946629632;
  MEM[(guint32 *)code] = D.21701;
  code = code + 4;
  MEM[(guint32 *)code] = 2353070080;
  code = code + 4;
  lmf.7 = (unsigned int) lmf;
  D.21702 = lmf.7 & 65535;
  D.21703 = D.21702 | 2946564096;
  MEM[(guint32 *)code] = D.21703;
  code = code + 4;
  D.21704 = lmf & 65535;
  D.21705 = D.21704 | 664862720;
  D.21706 = (unsigned int) D.21705;
  MEM[(guint32 *)code] = D.21706;
  code = code + 4;
  MEM[(guint32 *)code] = 2889940992;
  code = code + 4;
  lmf.7 = (unsigned int) lmf;
  D.21707 = lmf.7 + 16;
  D.21708 = D.21707 & 65535;
  D.21709 = D.21708 | 665059328;
  MEM[(guint32 *)code] = D.21709;
  code = code + 4;
  if (tramp_type == 1) goto <D.21710>; else goto <D.21711>;
  <D.21710>:
  MEM[(guint32 *)code] = 10273;
  code = code + 4;
  goto <D.21712>;
  <D.21711>:
  MEM[(guint32 *)code] = 2409955660;
  code = code + 4;
  <D.21712>:
  if (tramp_type == 3) goto <D.21713>; else goto <D.21714>;
  <D.21713>:
  lmf.7 = (unsigned int) lmf;
  D.21715 = lmf.7 + 32;
  D.21716 = D.21715 & 65535;
  D.21717 = D.21716 | 2410020864;
  MEM[(guint32 *)code] = D.21717;
  code = code + 4;
  goto <D.21718>;
  <D.21714>:
  lmf.7 = (unsigned int) lmf;
  D.21677 = lmf.7 + 8;
  D.21678 = D.21677 & 65535;
  D.21719 = D.21678 | 2410020864;
  MEM[(guint32 *)code] = D.21719;
  code = code + 4;
  <D.21718>:
  MEM[(guint32 *)code] = 14369;
  code = code + 4;
  tramp = mono_get_trampoline_func (tramp_type);
  tramp.9 = (unsigned int) tramp;
  D.21721 = tramp.9 & 32768;
  if (D.21721 != 0) goto <D.21722>; else goto <D.21723>;
  <D.21722>:
  tramp.9 = (unsigned int) tramp;
  D.21724 = tramp.9 >> 16;
  D.21725 = D.21724 + 1;
  D.21726 = D.21725 & 65535;
  D.21727 = D.21726 | 1008271360;
  MEM[(guint32 *)code] = D.21727;
  code = code + 4;
  goto <D.21728>;
  <D.21723>:
  tramp.9 = (unsigned int) tramp;
  D.21724 = tramp.9 >> 16;
  D.21729 = D.21724 | 1008271360;
  MEM[(guint32 *)code] = D.21729;
  code = code + 4;
  <D.21728>:
  tramp.9 = (unsigned int) tramp;
  D.21730 = tramp.9 & 65535;
  D.21731 = D.21730 | 658046976;
  MEM[(guint32 *)code] = D.21731;
  code = code + 4;
  MEM[(guint32 *)code] = 52492297;
  code = code + 4;
  MEM[(guint32 *)code] = 2099237;
  code = code + 4;
  MEM[(guint32 *)code] = 4196385;
  code = code + 4;
  lmf.7 = (unsigned int) lmf;
  D.21702 = lmf.7 & 65535;
  D.21732 = D.21702 | 2410151936;
  MEM[(guint32 *)code] = D.21732;
  code = code + 4;
  lmf.7 = (unsigned int) lmf;
  D.21699 = lmf.7 + 4;
  D.21700 = D.21699 & 65535;
  D.21733 = D.21700 | 2410217472;
  MEM[(guint32 *)code] = D.21733;
  code = code + 4;
  MEM[(guint32 *)code] = 2905079808;
  code = code + 4;
  i = 0;
  goto <D.21512>;
  <D.21511>:
  D.21734 = 1090519036 >> i;
  D.21735 = D.21734 & 1;
  if (D.21735 != 0) goto <D.21736>; else goto <D.21737>;
  <D.21736>:
  D.21646 = i << 16;
  D.21647 = (unsigned int) D.21646;
  i.6 = (sizetype) i;
  D.21649 = i.6 * 4;
  D.21650 = 16B + D.21649;
  D.21651 = (unsigned int) D.21650;
  lmf.7 = (unsigned int) lmf;
  D.21653 = D.21651 + lmf.7;
  D.21654 = D.21653 & 65535;
  D.21655 = D.21647 | D.21654;
  D.21738 = D.21655 | 2409627648;
  MEM[(guint32 *)code] = D.21738;
  code = code + 4;
  <D.21737>:
  i = i + 1;
  <D.21512>:
  if (i <= 31) goto <D.21511>; else goto <D.21513>;
  <D.21513>:
  i = 0;
  goto <D.21515>;
  <D.21514>:
  D.21646 = i << 16;
  D.21647 = (unsigned int) D.21646;
  i.6 = (sizetype) i;
  D.21649 = i.6 * 4;
  D.21657 = 144B + D.21649;
  D.21658 = (unsigned int) D.21657;
  lmf.7 = (unsigned int) lmf;
  D.21659 = D.21658 + lmf.7;
  D.21660 = D.21659 & 65535;
  D.21661 = D.21647 | D.21660;
  D.21739 = D.21661 | 3349151744;
  MEM[(guint32 *)code] = D.21739;
  code = code + 4;
  i = i + 1;
  <D.21515>:
  if (i <= 31) goto <D.21514>; else goto <D.21516>;
  <D.21516>:
  if (tramp_type == 4) goto <D.21740>; else goto <D.21741>;
  <D.21740>:
  MEM[(guint32 *)code] = 2101281;
  code = code + 4;
  <D.21741>:
  MEM[(guint32 *)code] = 2411659596;
  code = code + 4;
  MEM[(guint32 *)code] = 666698064;
  code = code + 4;
  D.21745 = tramp_type + 4294967294;
  if (D.21745 <= 1) goto <D.21742>; else goto <D.21746>;
  <D.21746>:
  if (tramp_type == 8) goto <D.21742>; else goto <D.21747>;
  <D.21747>:
  if (tramp_type == 4) goto <D.21742>; else goto <D.21748>;
  <D.21748>:
  if (tramp_type == 10) goto <D.21742>; else goto <D.21749>;
  <D.21749>:
  if (tramp_type == 11) goto <D.21742>; else goto <D.21743>;
  <D.21742>:
  MEM[(guint32 *)code] = 65011720;
  code = code + 4;
  goto <D.21744>;
  <D.21743>:
  MEM[(guint32 *)code] = 2097160;
  code = code + 4;
  <D.21744>:
  MEM[(guint32 *)code] = 2099237;
  code = code + 4;
  code.10 = (int) code;
  buf.11 = (int) buf;
  D.21752 = code.10 - buf.11;
  mono_arch_flush_icache (buf, D.21752);
  code.10 = (int) code;
  buf.11 = (int) buf;
  D.21752 = code.10 - buf.11;
  D.21753 = D.21752 > max_code_len;
  D.21754 = (long int) D.21753;
  D.21755 = __builtin_expect (D.21754, 0);
  if (D.21755 != 0) goto <D.21756>; else goto <D.21757>;
  <D.21756>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "tramp-mips.c", 310, "(code - buf) <= max_code_len");
  <D.21757>:
  if (info != 0B) goto <D.21758>; else goto <D.21759>;
  <D.21758>:
  tramp_name = mono_get_generic_trampoline_name (tramp_type);
  code.10 = (int) code;
  buf.11 = (int) buf;
  D.21752 = code.10 - buf.11;
  D.21760 = (unsigned int) D.21752;
  D.21761 = mono_tramp_info_create (tramp_name, buf, D.21760, ji, unwind_ops);
  *info = D.21761;
  monoeg_g_free (tramp_name);
  <D.21759>:
  D.21762 = buf;
  return D.21762;
}


mono_arch_create_specific_trampoline (void * arg1, MonoTrampolineType tramp_type, struct MonoDomain * domain, guint32 * code_len)
{
  unsigned int arg1.12;
  unsigned int D.21765;
  unsigned int D.21768;
  unsigned int D.21769;
  unsigned int D.21770;
  unsigned int D.21771;
  unsigned int D.21773;
  unsigned int D.21774;
  unsigned int D.21775;
  unsigned int tramp.13;
  unsigned int D.21777;
  unsigned int D.21780;
  unsigned int D.21781;
  unsigned int D.21782;
  unsigned int D.21783;
  unsigned int D.21785;
  unsigned int D.21786;
  unsigned int D.21787;
  int code.14;
  int buf.15;
  int D.21790;
  _Bool D.21791;
  long int D.21792;
  long int D.21793;
  unsigned int D.21798;
  void * D.21799;
  guint8 * code;
  guint8 * buf;
  guint8 * tramp;

  tramp = mono_get_trampoline_code (tramp_type);
  buf = mono_domain_code_reserve (domain, 32);
  code = buf;
  arg1.12 = (unsigned int) arg1;
  D.21765 = arg1.12 & 32768;
  if (D.21765 != 0) goto <D.21766>; else goto <D.21767>;
  <D.21766>:
  arg1.12 = (unsigned int) arg1;
  D.21768 = arg1.12 >> 16;
  D.21769 = D.21768 + 1;
  D.21770 = D.21769 & 65535;
  D.21771 = D.21770 | 1008205824;
  MEM[(guint32 *)code] = D.21771;
  code = code + 4;
  goto <D.21772>;
  <D.21767>:
  arg1.12 = (unsigned int) arg1;
  D.21768 = arg1.12 >> 16;
  D.21773 = D.21768 | 1008205824;
  MEM[(guint32 *)code] = D.21773;
  code = code + 4;
  <D.21772>:
  arg1.12 = (unsigned int) arg1;
  D.21774 = arg1.12 & 65535;
  D.21775 = D.21774 | 655884288;
  MEM[(guint32 *)code] = D.21775;
  code = code + 4;
  tramp.13 = (unsigned int) tramp;
  D.21777 = tramp.13 & 32768;
  if (D.21777 != 0) goto <D.21778>; else goto <D.21779>;
  <D.21778>:
  tramp.13 = (unsigned int) tramp;
  D.21780 = tramp.13 >> 16;
  D.21781 = D.21780 + 1;
  D.21782 = D.21781 & 65535;
  D.21783 = D.21782 | 1006698496;
  MEM[(guint32 *)code] = D.21783;
  code = code + 4;
  goto <D.21784>;
  <D.21779>:
  tramp.13 = (unsigned int) tramp;
  D.21780 = tramp.13 >> 16;
  D.21785 = D.21780 | 1006698496;
  MEM[(guint32 *)code] = D.21785;
  code = code + 4;
  <D.21784>:
  tramp.13 = (unsigned int) tramp;
  D.21786 = tramp.13 & 65535;
  D.21787 = D.21786 | 606142464;
  MEM[(guint32 *)code] = D.21787;
  code = code + 4;
  MEM[(guint32 *)code] = 2097160;
  code = code + 4;
  MEM[(guint32 *)code] = 2099237;
  code = code + 4;
  code.14 = (int) code;
  buf.15 = (int) buf;
  D.21790 = code.14 - buf.15;
  mono_arch_flush_icache (buf, D.21790);
  code.14 = (int) code;
  buf.15 = (int) buf;
  D.21790 = code.14 - buf.15;
  D.21791 = D.21790 > 32;
  D.21792 = (long int) D.21791;
  D.21793 = __builtin_expect (D.21792, 0);
  if (D.21793 != 0) goto <D.21794>; else goto <D.21795>;
  <D.21794>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "tramp-mips.c", 343, "(code - buf) <= 32");
  <D.21795>:
  if (code_len != 0B) goto <D.21796>; else goto <D.21797>;
  <D.21796>:
  code.14 = (int) code;
  buf.15 = (int) buf;
  D.21790 = code.14 - buf.15;
  D.21798 = (unsigned int) D.21790;
  *code_len = D.21798;
  <D.21797>:
  D.21799 = buf;
  return D.21799;
}


mono_arch_get_static_rgctx_trampoline (struct MonoMethod * m, struct MonoMethodRuntimeGenericContext * mrgctx, void * addr)
{
  unsigned int mrgctx.16;
  unsigned int D.21802;
  unsigned int D.21805;
  unsigned int D.21806;
  unsigned int D.21807;
  unsigned int D.21808;
  unsigned int D.21810;
  unsigned int D.21811;
  unsigned int D.21812;
  unsigned int addr.17;
  unsigned int D.21814;
  unsigned int D.21817;
  unsigned int D.21818;
  unsigned int D.21819;
  unsigned int D.21820;
  unsigned int D.21822;
  unsigned int D.21823;
  unsigned int D.21824;
  int code.18;
  int start.19;
  int D.21827;
  _Bool D.21828;
  long int D.21829;
  long int D.21830;
  void * D.21833;
  guint8 * code;
  guint8 * start;
  int buf_len;
  struct MonoDomain * domain;

  domain = mono_domain_get ();
  buf_len = 24;
  code = mono_domain_code_reserve (domain, buf_len);
  start = code;
  mrgctx.16 = (unsigned int) mrgctx;
  D.21802 = mrgctx.16 & 32768;
  if (D.21802 != 0) goto <D.21803>; else goto <D.21804>;
  <D.21803>:
  mrgctx.16 = (unsigned int) mrgctx;
  D.21805 = mrgctx.16 >> 16;
  D.21806 = D.21805 + 1;
  D.21807 = D.21806 & 65535;
  D.21808 = D.21807 | 1007157248;
  MEM[(guint32 *)code] = D.21808;
  code = code + 4;
  goto <D.21809>;
  <D.21804>:
  mrgctx.16 = (unsigned int) mrgctx;
  D.21805 = mrgctx.16 >> 16;
  D.21810 = D.21805 | 1007157248;
  MEM[(guint32 *)code] = D.21810;
  code = code + 4;
  <D.21809>:
  mrgctx.16 = (unsigned int) mrgctx;
  D.21811 = mrgctx.16 & 65535;
  D.21812 = D.21811 | 621281280;
  MEM[(guint32 *)code] = D.21812;
  code = code + 4;
  addr.17 = (unsigned int) addr;
  D.21814 = addr.17 & 32768;
  if (D.21814 != 0) goto <D.21815>; else goto <D.21816>;
  <D.21815>:
  addr.17 = (unsigned int) addr;
  D.21817 = addr.17 >> 16;
  D.21818 = D.21817 + 1;
  D.21819 = D.21818 & 65535;
  D.21820 = D.21819 | 1006698496;
  MEM[(guint32 *)code] = D.21820;
  code = code + 4;
  goto <D.21821>;
  <D.21816>:
  addr.17 = (unsigned int) addr;
  D.21817 = addr.17 >> 16;
  D.21822 = D.21817 | 1006698496;
  MEM[(guint32 *)code] = D.21822;
  code = code + 4;
  <D.21821>:
  addr.17 = (unsigned int) addr;
  D.21823 = addr.17 & 65535;
  D.21824 = D.21823 | 606142464;
  MEM[(guint32 *)code] = D.21824;
  code = code + 4;
  MEM[(guint32 *)code] = 2097160;
  code = code + 4;
  MEM[(guint32 *)code] = 2099237;
  code = code + 4;
  code.18 = (int) code;
  start.19 = (int) start;
  D.21827 = code.18 - start.19;
  D.21828 = D.21827 > buf_len;
  D.21829 = (long int) D.21828;
  D.21830 = __builtin_expect (D.21829, 0);
  if (D.21830 != 0) goto <D.21831>; else goto <D.21832>;
  <D.21831>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "tramp-mips.c", 368, "(code - start) <= buf_len");
  <D.21832>:
  code.18 = (int) code;
  start.19 = (int) start;
  D.21827 = code.18 - start.19;
  mono_arch_flush_icache (start, D.21827);
  D.21833 = start;
  return D.21833;
}


mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, struct MonoTrampInfo * * info, gboolean aot)
{
  signed int slot.20;
  _Bool D.21836;
  int slot.21;
  unsigned int index.22;
  unsigned int D.21841;
  int D.21842;
  int D.21844;
  int D.21845;
  int code.23;
  int buf.24;
  int D.21848;
  struct MonoUnwindOp * D.21849;
  int D.21850;
  unsigned int D.21851;
  unsigned int D.21852;
  int njumps.25;
  unsigned int njumps.26;
  unsigned int D.21862;
  guint8 * * D.21863;
  int njumps.27;
  unsigned int njumps.28;
  unsigned int D.21872;
  guint8 * * D.21873;
  int D.21874;
  unsigned short D.21875;
  unsigned short D.21876;
  short int D.21877;
  int D.21878;
  unsigned int D.21879;
  unsigned int D.21880;
  int D.21881;
  _Bool D.21882;
  long int D.21883;
  long int D.21884;
  unsigned int D.21887;
  unsigned int D.21888;
  int njumps.29;
  unsigned int njumps.30;
  unsigned int D.21891;
  guint8 * * D.21892;
  _Bool D.21893;
  long int D.21894;
  long int D.21895;
  unsigned int i.31;
  unsigned int D.21899;
  guint8 * * D.21900;
  guint8 * D.21901;
  unsigned int code.32;
  gchar * D.21905;
  void * slot.33;
  struct MonoDomain * D.21911;
  unsigned int tramp.34;
  unsigned int D.21913;
  unsigned int D.21916;
  unsigned int D.21917;
  unsigned int D.21918;
  unsigned int D.21919;
  unsigned int D.21921;
  unsigned int D.21922;
  unsigned int D.21923;
  _Bool D.21924;
  long int D.21925;
  long int D.21926;
  unsigned int D.21931;
  struct MonoTrampInfo * D.21932;
  void * D.21933;
  guint8 * tramp;
  guint8 * code;
  guint8 * buf;
  int tramp_size;
  guint32 code_len;
  guint8 * * rgctx_null_jumps;
  int depth;
  int index;
  int i;
  int njumps;
  gboolean mrgctx;
  struct MonoJumpInfo * ji;
  struct GSList * unwind_ops;

  try
    {
      ji = 0B;
      unwind_ops = 0B;
      slot.20 = (signed int) slot;
      D.21836 = slot.20 < 0;
      mrgctx = (gboolean) D.21836;
      slot.21 = (int) slot;
      index = slot.21 & 2147483647;
      if (mrgctx != 0) goto <D.21838>; else goto <D.21839>;
      <D.21838>:
      index.22 = (unsigned int) index;
      D.21841 = index.22 + 2;
      index = (int) D.21841;
      <D.21839>:
      depth = 0;
      <D.21555>:
      {
        int size;

        size = mono_class_rgctx_get_array_size (depth, mrgctx);
        D.21842 = size + -1;
        if (D.21842 > index) goto <D.21554>; else goto <D.21843>;
        <D.21843>:
        D.21844 = 1 - size;
        index = D.21844 + index;
      }
      depth = depth + 1;
      goto <D.21555>;
      <D.21554>:
      D.21845 = depth + 4;
      tramp_size = D.21845 * 16;
      buf = mono_global_codeman_reserve (tramp_size);
      code = buf;
      code.23 = (int) code;
      buf.24 = (int) buf;
      D.21848 = code.23 - buf.24;
      D.21849 = mono_create_unwind_op (D.21848, 12, 29, 0);
      unwind_ops = monoeg_g_slist_append (unwind_ops, D.21849);
      D.21850 = depth + 2;
      D.21851 = (unsigned int) D.21850;
      D.21852 = D.21851 * 4;
      rgctx_null_jumps = monoeg_malloc (D.21852);
      njumps = 0;
      if (0 != 0) goto <D.21853>; else goto <D.21854>;
      <D.21853>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "tramp-mips.c", 411, "MONO_ARCH_VTABLE_REG == mips_a0");
      <D.21854>:
      if (mrgctx != 0) goto <D.21855>; else goto <D.21856>;
      <D.21855>:
      MEM[(guint32 *)code] = 8398881;
      code = code + 4;
      goto <D.21857>;
      <D.21856>:
      if (0 != 0) goto <D.21858>; else goto <D.21859>;
      <D.21858>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "tramp-mips.c", 417, "mips_is_imm16 (G_STRUCT_OFFSET (MonoVTable, runtime_generic_context))");
      <D.21859>:
      MEM[(guint32 *)code] = 2357526556;
      code = code + 4;
      njumps.25 = njumps;
      njumps = njumps.25 + 1;
      njumps.26 = (unsigned int) njumps.25;
      D.21862 = njumps.26 * 4;
      D.21863 = rgctx_null_jumps + D.21862;
      *D.21863 = code;
      MEM[(guint32 *)code] = 278921216;
      code = code + 4;
      MEM[(guint32 *)code] = 2099237;
      code = code + 4;
      <D.21857>:
      i = 0;
      goto <D.21557>;
      <D.21556>:
      if (mrgctx != 0) goto <D.21866>; else goto <D.21864>;
      <D.21866>:
      if (i == 0) goto <D.21867>; else goto <D.21864>;
      <D.21867>:
      if (0 != 0) goto <D.21868>; else goto <D.21869>;
      <D.21868>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "tramp-mips.c", 429, "mips_is_imm16 (MONO_SIZEOF_METHOD_RUNTIME_GENERIC_CONTEXT)");
      <D.21869>:
      MEM[(guint32 *)code] = 2359623688;
      code = code + 4;
      goto <D.21865>;
      <D.21864>:
      MEM[(guint32 *)code] = 2359623680;
      code = code + 4;
      <D.21865>:
      njumps.27 = njumps;
      njumps = njumps.27 + 1;
      njumps.28 = (unsigned int) njumps.27;
      D.21872 = njumps.28 * 4;
      D.21873 = rgctx_null_jumps + D.21872;
      *D.21873 = code;
      MEM[(guint32 *)code] = 278921216;
      code = code + 4;
      MEM[(guint32 *)code] = 2099237;
      code = code + 4;
      i = i + 1;
      <D.21557>:
      if (i < depth) goto <D.21556>; else goto <D.21558>;
      <D.21558>:
      D.21874 = index + 1;
      D.21875 = (unsigned short) D.21874;
      D.21876 = D.21875 * 4;
      D.21877 = (short int) D.21876;
      D.21878 = (int) D.21877;
      D.21874 = index + 1;
      D.21879 = (unsigned int) D.21874;
      D.21880 = D.21879 * 4;
      D.21881 = (int) D.21880;
      D.21882 = D.21878 != D.21881;
      D.21883 = (long int) D.21882;
      D.21884 = __builtin_expect (D.21883, 0);
      if (D.21884 != 0) goto <D.21885>; else goto <D.21886>;
      <D.21885>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "tramp-mips.c", 442, "mips_is_imm16 (sizeof (gpointer) * (index + 1))");
      <D.21886>:
      D.21874 = index + 1;
      D.21879 = (unsigned int) D.21874;
      D.21880 = D.21879 * 4;
      D.21887 = D.21880 & 65535;
      D.21888 = D.21887 | 2359623680;
      MEM[(guint32 *)code] = D.21888;
      code = code + 4;
      njumps.29 = njumps;
      njumps = njumps.29 + 1;
      njumps.30 = (unsigned int) njumps.29;
      D.21891 = njumps.30 * 4;
      D.21892 = rgctx_null_jumps + D.21891;
      *D.21892 = code;
      MEM[(guint32 *)code] = 278921216;
      code = code + 4;
      MEM[(guint32 *)code] = 2099237;
      code = code + 4;
      MEM[(guint32 *)code] = 10489889;
      code = code + 4;
      MEM[(guint32 *)code] = 65011720;
      code = code + 4;
      MEM[(guint32 *)code] = 2099237;
      code = code + 4;
      D.21850 = depth + 2;
      D.21893 = D.21850 < njumps;
      D.21894 = (long int) D.21893;
      D.21895 = __builtin_expect (D.21894, 0);
      if (D.21895 != 0) goto <D.21896>; else goto <D.21897>;
      <D.21896>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "tramp-mips.c", 454, "njumps <= depth + 2");
      <D.21897>:
      i = 0;
      goto <D.21560>;
      <D.21559>:
      i.31 = (unsigned int) i;
      D.21899 = i.31 * 4;
      D.21900 = rgctx_null_jumps + D.21899;
      D.21901 = *D.21900;
      code.32 = (unsigned int) code;
      mips_patch (D.21901, code.32);
      i = i + 1;
      <D.21560>:
      if (i < njumps) goto <D.21559>; else goto <D.21561>;
      <D.21561>:
      monoeg_g_free (rgctx_null_jumps);
      if (aot != 0) goto <D.21903>; else goto <D.21904>;
      <D.21903>:
      code.23 = (int) code;
      buf.24 = (int) buf;
      D.21848 = code.23 - buf.24;
      D.21905 = monoeg_g_strdup_printf ("specific_trampoline_lazy_fetch_%u", slot);
      ji = mono_patch_info_list_prepend (ji, D.21848, 32, D.21905);
      if (0 != 0) goto <D.21906>; else goto <D.21907>;
      <D.21906>:
      MEM[(guint32 *)code] = 1006698497;
      code = code + 4;
      goto <D.21908>;
      <D.21907>:
      MEM[(guint32 *)code] = 1006698496;
      code = code + 4;
      <D.21908>:
      MEM[(guint32 *)code] = 606142464;
      code = code + 4;
      MEM[(guint32 *)code] = 2097160;
      code = code + 4;
      MEM[(guint32 *)code] = 2099237;
      code = code + 4;
      goto <D.21909>;
      <D.21904>:
      slot.33 = (void *) slot;
      D.21911 = mono_get_root_domain ();
      tramp = mono_arch_create_specific_trampoline (slot.33, 4, D.21911, &code_len);
      tramp.34 = (unsigned int) tramp;
      D.21913 = tramp.34 & 32768;
      if (D.21913 != 0) goto <D.21914>; else goto <D.21915>;
      <D.21914>:
      tramp.34 = (unsigned int) tramp;
      D.21916 = tramp.34 >> 16;
      D.21917 = D.21916 + 1;
      D.21918 = D.21917 & 65535;
      D.21919 = D.21918 | 1006698496;
      MEM[(guint32 *)code] = D.21919;
      code = code + 4;
      goto <D.21920>;
      <D.21915>:
      tramp.34 = (unsigned int) tramp;
      D.21916 = tramp.34 >> 16;
      D.21921 = D.21916 | 1006698496;
      MEM[(guint32 *)code] = D.21921;
      code = code + 4;
      <D.21920>:
      tramp.34 = (unsigned int) tramp;
      D.21922 = tramp.34 & 65535;
      D.21923 = D.21922 | 606142464;
      MEM[(guint32 *)code] = D.21923;
      code = code + 4;
      MEM[(guint32 *)code] = 2097160;
      code = code + 4;
      MEM[(guint32 *)code] = 2099237;
      code = code + 4;
      <D.21909>:
      code.23 = (int) code;
      buf.24 = (int) buf;
      D.21848 = code.23 - buf.24;
      mono_arch_flush_icache (buf, D.21848);
      code.23 = (int) code;
      buf.24 = (int) buf;
      D.21848 = code.23 - buf.24;
      D.21924 = D.21848 > tramp_size;
      D.21925 = (long int) D.21924;
      D.21926 = __builtin_expect (D.21925, 0);
      if (D.21926 != 0) goto <D.21927>; else goto <D.21928>;
      <D.21927>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "tramp-mips.c", 478, "code - buf <= tramp_size");
      <D.21928>:
      if (info != 0B) goto <D.21929>; else goto <D.21930>;
      <D.21929>:
      {
        char * name;

        slot.21 = (int) slot;
        name = mono_get_rgctx_fetch_trampoline_name (slot.21);
        code.23 = (int) code;
        buf.24 = (int) buf;
        D.21848 = code.23 - buf.24;
        D.21931 = (unsigned int) D.21848;
        D.21932 = mono_tramp_info_create (name, buf, D.21931, ji, unwind_ops);
        *info = D.21932;
        monoeg_g_free (name);
      }
      <D.21930>:
      D.21933 = buf;
      return D.21933;
    }
  finally
    {
      code_len = {CLOBBER};
    }
}


mono_arch_create_generic_class_init_trampoline (struct MonoTrampInfo * * info, gboolean aot)
{
  int byte_offset.35;
  int D.21939;
  int D.21940;
  unsigned int D.21941;
  unsigned char bitmask.36;
  unsigned int D.21943;
  unsigned int D.21944;
  _Bool D.21945;
  long int D.21946;
  long int D.21947;
  int D.21950;
  int D.21951;
  unsigned int D.21952;
  unsigned int code.37;
  int code.38;
  int buf.39;
  int D.21958;
  struct MonoDomain * D.21963;
  unsigned int tramp.40;
  unsigned int D.21965;
  unsigned int D.21968;
  unsigned int D.21969;
  unsigned int D.21970;
  unsigned int D.21971;
  unsigned int D.21973;
  unsigned int D.21974;
  unsigned int D.21975;
  _Bool D.21976;
  long int D.21977;
  long int D.21978;
  unsigned int D.21983;
  struct MonoTrampInfo * D.21984;
  void * D.21985;
  guint8 * tramp;
  guint8 * code;
  guint8 * buf;
  static int byte_offset = -1;
  static guint8 bitmask;
  guint8 * jump;
  int tramp_size;
  guint32 code_len;
  struct GSList * unwind_ops;
  struct MonoJumpInfo * ji;

  try
    {
      unwind_ops = 0B;
      ji = 0B;
      tramp_size = 64;
      buf = mono_global_codeman_reserve (tramp_size);
      code = buf;
      byte_offset.35 = byte_offset;
      if (byte_offset.35 < 0) goto <D.21937>; else goto <D.21938>;
      <D.21937>:
      {
        struct MonoVTable tmp;

        try
          {
            memset (&tmp, 0, 32);
            tmp.initialized = 1;
            mono_marshal_find_nonzero_bit_offset (&tmp, 32, &byte_offset, &bitmask);
          }
        finally
          {
            tmp = {CLOBBER};
          }
      }
      <D.21938>:
      byte_offset.35 = byte_offset;
      D.21939 = byte_offset.35 & 65535;
      D.21940 = D.21939 | -1870594048;
      D.21941 = (unsigned int) D.21940;
      MEM[(guint32 *)code] = D.21941;
      code = code + 4;
      bitmask.36 = bitmask;
      D.21943 = (unsigned int) bitmask.36;
      D.21944 = D.21943 & 4294901760;
      D.21945 = D.21944 != 0;
      D.21946 = (long int) D.21945;
      D.21947 = __builtin_expect (D.21946, 0);
      if (D.21947 != 0) goto <D.21948>; else goto <D.21949>;
      <D.21948>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "tramp-mips.c", 511, "!(bitmask & 0xffff0000)");
      <D.21949>:
      bitmask.36 = bitmask;
      D.21950 = (int) bitmask.36;
      D.21951 = D.21950 | 807469056;
      D.21952 = (unsigned int) D.21951;
      MEM[(guint32 *)code] = D.21952;
      code = code + 4;
      jump = code;
      MEM[(guint32 *)code] = 270532608;
      code = code + 4;
      MEM[(guint32 *)code] = 2099237;
      code = code + 4;
      MEM[(guint32 *)code] = 65011720;
      code = code + 4;
      MEM[(guint32 *)code] = 2099237;
      code = code + 4;
      code.37 = (unsigned int) code;
      mips_patch (jump, code.37);
      if (aot != 0) goto <D.21954>; else goto <D.21955>;
      <D.21954>:
      code.38 = (int) code;
      buf.39 = (int) buf;
      D.21958 = code.38 - buf.39;
      ji = mono_patch_info_list_prepend (ji, D.21958, 32, "specific_trampoline_generic_class_init");
      if (0 != 0) goto <D.21959>; else goto <D.21960>;
      <D.21959>:
      MEM[(guint32 *)code] = 1006698497;
      code = code + 4;
      goto <D.21961>;
      <D.21960>:
      MEM[(guint32 *)code] = 1006698496;
      code = code + 4;
      <D.21961>:
      MEM[(guint32 *)code] = 606142464;
      code = code + 4;
      MEM[(guint32 *)code] = 2097160;
      code = code + 4;
      MEM[(guint32 *)code] = 2099237;
      code = code + 4;
      goto <D.21962>;
      <D.21955>:
      D.21963 = mono_get_root_domain ();
      tramp = mono_arch_create_specific_trampoline (0B, 3, D.21963, &code_len);
      tramp.40 = (unsigned int) tramp;
      D.21965 = tramp.40 & 32768;
      if (D.21965 != 0) goto <D.21966>; else goto <D.21967>;
      <D.21966>:
      tramp.40 = (unsigned int) tramp;
      D.21968 = tramp.40 >> 16;
      D.21969 = D.21968 + 1;
      D.21970 = D.21969 & 65535;
      D.21971 = D.21970 | 1006698496;
      MEM[(guint32 *)code] = D.21971;
      code = code + 4;
      goto <D.21972>;
      <D.21967>:
      tramp.40 = (unsigned int) tramp;
      D.21968 = tramp.40 >> 16;
      D.21973 = D.21968 | 1006698496;
      MEM[(guint32 *)code] = D.21973;
      code = code + 4;
      <D.21972>:
      tramp.40 = (unsigned int) tramp;
      D.21974 = tramp.40 & 65535;
      D.21975 = D.21974 | 606142464;
      MEM[(guint32 *)code] = D.21975;
      code = code + 4;
      MEM[(guint32 *)code] = 2097160;
      code = code + 4;
      MEM[(guint32 *)code] = 2099237;
      code = code + 4;
      <D.21962>:
      code.38 = (int) code;
      buf.39 = (int) buf;
      D.21958 = code.38 - buf.39;
      mono_arch_flush_icache (buf, D.21958);
      code.38 = (int) code;
      buf.39 = (int) buf;
      D.21958 = code.38 - buf.39;
      D.21976 = D.21958 > tramp_size;
      D.21977 = (long int) D.21976;
      D.21978 = __builtin_expect (D.21977, 0);
      if (D.21978 != 0) goto <D.21979>; else goto <D.21980>;
      <D.21979>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "tramp-mips.c", 537, "code - buf <= tramp_size");
      <D.21980>:
      if (info != 0B) goto <D.21981>; else goto <D.21982>;
      <D.21981>:
      code.38 = (int) code;
      buf.39 = (int) buf;
      D.21958 = code.38 - buf.39;
      D.21983 = (unsigned int) D.21958;
      D.21984 = mono_tramp_info_create ("generic_class_init_trampoline", buf, D.21983, ji, unwind_ops);
      *info = D.21984;
      <D.21982>:
      D.21985 = buf;
      return D.21985;
    }
  finally
    {
      code_len = {CLOBBER};
    }
}


memset (void * __dest, int __ch, size_t __len)
{
  int D.21990;
  int D.21995;
  void * D.21997;
  unsigned int D.21998;

  D.21990 = __builtin_constant_p (__len);
  if (D.21990 != 0) goto <D.21991>; else goto <D.21992>;
  <D.21991>:
  if (__len == 0) goto <D.21993>; else goto <D.21994>;
  <D.21993>:
  D.21995 = __builtin_constant_p (__ch);
  if (D.21995 == 0) goto <D.21988>; else goto <D.21996>;
  <D.21996>:
  if (__ch != 0) goto <D.21988>; else goto <D.21989>;
  <D.21988>:
  __warn_memset_zero_len ();
  D.21997 = __dest;
  return D.21997;
  <D.21989>:
  <D.21994>:
  <D.21992>:
  D.21998 = __builtin_object_size (__dest, 0);
  D.21997 = __builtin___memset_chk (__dest, __ch, __len, D.21998);
  return D.21997;
}


