mono_arch_get_unbox_trampoline (struct MonoMethod * m, void * addr)
{
  union mono_mutex_t * D.22479;
  _Bool D.22482;
  long int D.22483;
  long int D.22484;
  guint8 * D.22487;
  _Bool D.22492;
  long int D.22493;
  long int D.22494;
  int D.22499;
  int D.22500;
  int D.22501;
  int D.22502;
  int D.22503;
  unsigned int D.22504;
  unsigned int D.22505;
  unsigned int D.22506;
  unsigned int D.22507;
  unsigned int D.22508;
  unsigned int D.22509;
  unsigned int D.22510;
  unsigned int D.22511;
  unsigned int D.22512;
  unsigned int D.22513;
  unsigned int D.22514;
  unsigned int D.22515;
  unsigned int D.22516;
  unsigned int D.22517;
  unsigned int D.22518;
  unsigned int D.22519;
  unsigned int D.22520;
  unsigned int D.22521;
  unsigned int D.22522;
  unsigned int D.22523;
  long unsigned int addr.0;
  long unsigned int D.22526;
  long unsigned int D.22527;
  long int addr.1;
  short unsigned int D.22531;
  int D.22532;
  int D.22533;
  unsigned int D.22534;
  unsigned int D.22535;
  unsigned int D.22536;
  unsigned int D.22537;
  unsigned int D.22538;
  unsigned int D.22539;
  unsigned int D.22540;
  unsigned int D.22541;
  long int addr.2;
  long int D.22544;
  unsigned long D.22545;
  unsigned long D.22546;
  unsigned int D.22549;
  unsigned int D.22550;
  short unsigned int D.22551;
  int D.22552;
  int D.22553;
  unsigned int D.22554;
  unsigned int D.22555;
  unsigned int D.22556;
  unsigned int D.22557;
  unsigned int D.22558;
  unsigned int D.22559;
  unsigned int D.22560;
  unsigned int D.22561;
  short unsigned int D.22562;
  int D.22563;
  int D.22564;
  unsigned int D.22565;
  unsigned int D.22566;
  unsigned int D.22567;
  unsigned int D.22568;
  unsigned int D.22569;
  unsigned int D.22570;
  unsigned int D.22571;
  unsigned int D.22572;
  long int D.22574;
  unsigned long D.22575;
  unsigned long D.22576;
  long int D.22579;
  short unsigned int D.22580;
  int D.22581;
  int D.22582;
  unsigned int D.22583;
  unsigned int D.22584;
  unsigned int D.22585;
  unsigned int D.22586;
  unsigned int D.22587;
  unsigned int D.22588;
  unsigned int D.22589;
  unsigned int D.22590;
  long unsigned int D.22591;
  short unsigned int D.22592;
  int D.22593;
  int D.22594;
  unsigned int D.22595;
  unsigned int D.22596;
  unsigned int D.22597;
  unsigned int D.22598;
  unsigned int D.22599;
  unsigned int D.22600;
  unsigned int D.22601;
  unsigned int D.22602;
  int D.22603;
  unsigned int D.22604;
  unsigned int D.22605;
  unsigned int D.22606;
  unsigned int D.22607;
  unsigned int D.22608;
  long unsigned int D.22610;
  short unsigned int D.22611;
  int D.22612;
  int D.22613;
  unsigned int D.22614;
  unsigned int D.22615;
  unsigned int D.22616;
  unsigned int D.22617;
  unsigned int D.22618;
  unsigned int D.22619;
  unsigned int D.22620;
  unsigned int D.22621;
  long unsigned int D.22622;
  short unsigned int D.22623;
  int D.22624;
  int D.22625;
  unsigned int D.22626;
  unsigned int D.22627;
  unsigned int D.22628;
  unsigned int D.22629;
  unsigned int D.22630;
  unsigned int D.22631;
  unsigned int D.22632;
  unsigned int D.22633;
  long int code.3;
  long int start.4;
  long int D.22636;
  int D.22637;
  long int D.22638;
  _Bool D.22639;
  long int D.22640;
  long int D.22641;
  void * D.22644;
  guint8 * code;
  guint8 * start;
  int this_pos;
  guint32 short_branch;
  struct MonoDomain * domain;
  int size;

  this_pos = 3;
  domain = mono_domain_get ();
  size = 56;
  addr = mono_get_addr_from_ftnptr (addr);
  {
    int ret;

    D.22479 = &domain->lock.mutex;
    ret = pthread_mutex_lock (D.22479);
    if (ret != 0) goto <D.22480>; else goto <D.22481>;
    <D.22480>:
    monoeg_g_log (0B, 16, "Bad call to mono_mutex_lock result %d", ret);
    <D.22481>:
    D.22482 = ret != 0;
    D.22483 = (long int) D.22482;
    D.22484 = __builtin_expect (D.22483, 0);
    if (D.22484 != 0) goto <D.22485>; else goto <D.22486>;
    <D.22485>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "tramp-ppc.c", 84, "ret == 0");
    <D.22486>:
  }
  code = mono_domain_code_reserve (domain, size);
  start = code;
  code = mono_ppc_create_pre_code_ftnptr (code);
  D.22487 = code + 4;
  short_branch = branch_for_target_reachable (D.22487, addr);
  if (short_branch != 0) goto <D.22488>; else goto <D.22489>;
  <D.22488>:
  mono_domain_code_commit (domain, code, size, 8);
  <D.22489>:
  {
    int ret;

    D.22479 = &domain->lock.mutex;
    ret = pthread_mutex_unlock (D.22479);
    if (ret != 0) goto <D.22490>; else goto <D.22491>;
    <D.22490>:
    monoeg_g_log (0B, 16, "Bad call to mono_mutex_unlock result %d", ret);
    <D.22491>:
    D.22492 = ret != 0;
    D.22493 = (long int) D.22492;
    D.22494 = __builtin_expect (D.22493, 0);
    if (D.22494 != 0) goto <D.22495>; else goto <D.22496>;
    <D.22495>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "tramp-ppc.c", 90, "ret == 0");
    <D.22496>:
  }
  if (short_branch != 0) goto <D.22497>; else goto <D.22498>;
  <D.22497>:
  D.22499 = this_pos << 21;
  D.22500 = D.22499 | 939524096;
  D.22501 = this_pos << 16;
  D.22502 = D.22500 | D.22501;
  D.22503 = D.22502 | 16;
  D.22504 = (unsigned int) D.22503;
  D.22505 = D.22504 << 24;
  D.22499 = this_pos << 21;
  D.22500 = D.22499 | 939524096;
  D.22501 = this_pos << 16;
  D.22502 = D.22500 | D.22501;
  D.22506 = (unsigned int) D.22502;
  D.22507 = D.22506 & 16711680;
  D.22508 = D.22507 >> 8;
  D.22509 = D.22505 | D.22508;
  D.22499 = this_pos << 21;
  D.22500 = D.22499 | 939524096;
  D.22501 = this_pos << 16;
  D.22502 = D.22500 | D.22501;
  D.22506 = (unsigned int) D.22502;
  D.22510 = D.22506 & 65280;
  D.22511 = D.22510 << 8;
  D.22512 = D.22509 | D.22511;
  D.22499 = this_pos << 21;
  D.22500 = D.22499 | 939524096;
  D.22501 = this_pos << 16;
  D.22502 = D.22500 | D.22501;
  D.22503 = D.22502 | 16;
  D.22504 = (unsigned int) D.22503;
  D.22513 = D.22504 >> 24;
  D.22514 = D.22512 | D.22513;
  MEM[(guint32 *)code] = D.22514;
  code = code + 4;
  D.22515 = short_branch << 24;
  D.22516 = short_branch & 16711680;
  D.22517 = D.22516 >> 8;
  D.22518 = D.22515 | D.22517;
  D.22519 = short_branch & 65280;
  D.22520 = D.22519 << 8;
  D.22521 = D.22518 | D.22520;
  D.22522 = short_branch >> 24;
  D.22523 = D.22521 | D.22522;
  MEM[(guint32 *)code] = D.22523;
  code = code + 4;
  goto <D.22524>;
  <D.22498>:
  addr.0 = (long unsigned int) addr;
  D.22526 = addr.0 >> 15;
  D.22527 = D.22526 + 18446744073709551615;
  if (D.22527 > 18446744073709551613) goto <D.22528>; else goto <D.22529>;
  <D.22528>:
  addr.1 = (long int) addr;
  D.22531 = (short unsigned int) addr.1;
  D.22532 = (int) D.22531;
  D.22533 = D.22532 | 939524096;
  D.22534 = (unsigned int) D.22533;
  D.22535 = D.22534 << 24;
  addr.1 = (long int) addr;
  D.22531 = (short unsigned int) addr.1;
  D.22536 = (unsigned int) D.22531;
  D.22537 = D.22536 & 65280;
  D.22538 = D.22537 << 8;
  D.22539 = D.22535 | D.22538;
  addr.1 = (long int) addr;
  D.22531 = (short unsigned int) addr.1;
  D.22532 = (int) D.22531;
  D.22533 = D.22532 | 939524096;
  D.22534 = (unsigned int) D.22533;
  D.22540 = D.22534 >> 24;
  D.22541 = D.22539 | D.22540;
  MEM[(guint32 *)code] = D.22541;
  code = code + 4;
  goto <D.22542>;
  <D.22529>:
  addr.2 = (long int) addr;
  D.22544 = addr.2 >> 31;
  D.22545 = (unsigned long) D.22544;
  D.22546 = D.22545 + 1;
  if (D.22546 <= 1) goto <D.22547>; else goto <D.22548>;
  <D.22547>:
  addr.1 = (long int) addr;
  D.22549 = (unsigned int) addr.1;
  D.22550 = D.22549 >> 16;
  D.22551 = (short unsigned int) D.22550;
  D.22552 = (int) D.22551;
  D.22553 = D.22552 | 1006632960;
  D.22554 = (unsigned int) D.22553;
  D.22555 = D.22554 << 24;
  addr.1 = (long int) addr;
  D.22549 = (unsigned int) addr.1;
  D.22550 = D.22549 >> 16;
  D.22551 = (short unsigned int) D.22550;
  D.22556 = (unsigned int) D.22551;
  D.22557 = D.22556 & 65280;
  D.22558 = D.22557 << 8;
  D.22559 = D.22555 | D.22558;
  addr.1 = (long int) addr;
  D.22549 = (unsigned int) addr.1;
  D.22550 = D.22549 >> 16;
  D.22551 = (short unsigned int) D.22550;
  D.22552 = (int) D.22551;
  D.22553 = D.22552 | 1006632960;
  D.22554 = (unsigned int) D.22553;
  D.22560 = D.22554 >> 24;
  D.22561 = D.22559 | D.22560;
  MEM[(guint32 *)code] = D.22561;
  code = code + 4;
  addr.1 = (long int) addr;
  D.22562 = (short unsigned int) addr.1;
  D.22563 = (int) D.22562;
  D.22564 = D.22563 | 1610612736;
  D.22565 = (unsigned int) D.22564;
  D.22566 = D.22565 << 24;
  addr.1 = (long int) addr;
  D.22562 = (short unsigned int) addr.1;
  D.22567 = (unsigned int) D.22562;
  D.22568 = D.22567 & 65280;
  D.22569 = D.22568 << 8;
  D.22570 = D.22566 | D.22569;
  addr.1 = (long int) addr;
  D.22562 = (short unsigned int) addr.1;
  D.22563 = (int) D.22562;
  D.22564 = D.22563 | 1610612736;
  D.22565 = (unsigned int) D.22564;
  D.22571 = D.22565 >> 24;
  D.22572 = D.22570 | D.22571;
  MEM[(guint32 *)code] = D.22572;
  code = code + 4;
  goto <D.22573>;
  <D.22548>:
  addr.2 = (long int) addr;
  D.22574 = addr.2 >> 47;
  D.22575 = (unsigned long) D.22574;
  D.22576 = D.22575 + 1;
  if (D.22576 <= 1) goto <D.22577>; else goto <D.22578>;
  <D.22577>:
  addr.2 = (long int) addr;
  D.22579 = addr.2 >> 32;
  D.22580 = (short unsigned int) D.22579;
  D.22581 = (int) D.22580;
  D.22582 = D.22581 | 939524096;
  D.22583 = (unsigned int) D.22582;
  D.22584 = D.22583 << 24;
  addr.2 = (long int) addr;
  D.22579 = addr.2 >> 32;
  D.22580 = (short unsigned int) D.22579;
  D.22585 = (unsigned int) D.22580;
  D.22586 = D.22585 & 65280;
  D.22587 = D.22586 << 8;
  D.22588 = D.22584 | D.22587;
  addr.2 = (long int) addr;
  D.22579 = addr.2 >> 32;
  D.22580 = (short unsigned int) D.22579;
  D.22581 = (int) D.22580;
  D.22582 = D.22581 | 939524096;
  D.22583 = (unsigned int) D.22582;
  D.22589 = D.22583 >> 24;
  D.22590 = D.22588 | D.22589;
  MEM[(guint32 *)code] = D.22590;
  code = code + 4;
  MEM[(guint32 *)code] = 3322347640;
  code = code + 4;
  addr.0 = (long unsigned int) addr;
  D.22591 = addr.0 >> 16;
  D.22592 = (short unsigned int) D.22591;
  D.22593 = (int) D.22592;
  D.22594 = D.22593 | 1677721600;
  D.22595 = (unsigned int) D.22594;
  D.22596 = D.22595 << 24;
  addr.0 = (long unsigned int) addr;
  D.22591 = addr.0 >> 16;
  D.22592 = (short unsigned int) D.22591;
  D.22597 = (unsigned int) D.22592;
  D.22598 = D.22597 & 65280;
  D.22599 = D.22598 << 8;
  D.22600 = D.22596 | D.22599;
  addr.0 = (long unsigned int) addr;
  D.22591 = addr.0 >> 16;
  D.22592 = (short unsigned int) D.22591;
  D.22593 = (int) D.22592;
  D.22594 = D.22593 | 1677721600;
  D.22595 = (unsigned int) D.22594;
  D.22601 = D.22595 >> 24;
  D.22602 = D.22600 | D.22601;
  MEM[(guint32 *)code] = D.22602;
  code = code + 4;
  addr.1 = (long int) addr;
  D.22531 = (short unsigned int) addr.1;
  D.22532 = (int) D.22531;
  D.22603 = D.22532 | 1610612736;
  D.22604 = (unsigned int) D.22603;
  D.22605 = D.22604 << 24;
  addr.1 = (long int) addr;
  D.22531 = (short unsigned int) addr.1;
  D.22536 = (unsigned int) D.22531;
  D.22537 = D.22536 & 65280;
  D.22538 = D.22537 << 8;
  D.22606 = D.22605 | D.22538;
  addr.1 = (long int) addr;
  D.22531 = (short unsigned int) addr.1;
  D.22532 = (int) D.22531;
  D.22603 = D.22532 | 1610612736;
  D.22604 = (unsigned int) D.22603;
  D.22607 = D.22604 >> 24;
  D.22608 = D.22606 | D.22607;
  MEM[(guint32 *)code] = D.22608;
  code = code + 4;
  goto <D.22609>;
  <D.22578>:
  addr.0 = (long unsigned int) addr;
  D.22610 = addr.0 >> 48;
  D.22611 = (short unsigned int) D.22610;
  D.22612 = (int) D.22611;
  D.22613 = D.22612 | 1006632960;
  D.22614 = (unsigned int) D.22613;
  D.22615 = D.22614 << 24;
  addr.0 = (long unsigned int) addr;
  D.22610 = addr.0 >> 48;
  D.22611 = (short unsigned int) D.22610;
  D.22616 = (unsigned int) D.22611;
  D.22617 = D.22616 & 65280;
  D.22618 = D.22617 << 8;
  D.22619 = D.22615 | D.22618;
  addr.0 = (long unsigned int) addr;
  D.22610 = addr.0 >> 48;
  D.22611 = (short unsigned int) D.22610;
  D.22612 = (int) D.22611;
  D.22613 = D.22612 | 1006632960;
  D.22614 = (unsigned int) D.22613;
  D.22620 = D.22614 >> 24;
  D.22621 = D.22619 | D.22620;
  MEM[(guint32 *)code] = D.22621;
  code = code + 4;
  addr.0 = (long unsigned int) addr;
  D.22622 = addr.0 >> 32;
  D.22623 = (short unsigned int) D.22622;
  D.22624 = (int) D.22623;
  D.22625 = D.22624 | 1610612736;
  D.22626 = (unsigned int) D.22625;
  D.22627 = D.22626 << 24;
  addr.0 = (long unsigned int) addr;
  D.22622 = addr.0 >> 32;
  D.22623 = (short unsigned int) D.22622;
  D.22628 = (unsigned int) D.22623;
  D.22629 = D.22628 & 65280;
  D.22630 = D.22629 << 8;
  D.22631 = D.22627 | D.22630;
  addr.0 = (long unsigned int) addr;
  D.22622 = addr.0 >> 32;
  D.22623 = (short unsigned int) D.22622;
  D.22624 = (int) D.22623;
  D.22625 = D.22624 | 1610612736;
  D.22626 = (unsigned int) D.22625;
  D.22632 = D.22626 >> 24;
  D.22633 = D.22631 | D.22632;
  MEM[(guint32 *)code] = D.22633;
  code = code + 4;
  MEM[(guint32 *)code] = 3322347640;
  code = code + 4;
  addr.0 = (long unsigned int) addr;
  D.22591 = addr.0 >> 16;
  D.22592 = (short unsigned int) D.22591;
  D.22593 = (int) D.22592;
  D.22594 = D.22593 | 1677721600;
  D.22595 = (unsigned int) D.22594;
  D.22596 = D.22595 << 24;
  addr.0 = (long unsigned int) addr;
  D.22591 = addr.0 >> 16;
  D.22592 = (short unsigned int) D.22591;
  D.22597 = (unsigned int) D.22592;
  D.22598 = D.22597 & 65280;
  D.22599 = D.22598 << 8;
  D.22600 = D.22596 | D.22599;
  addr.0 = (long unsigned int) addr;
  D.22591 = addr.0 >> 16;
  D.22592 = (short unsigned int) D.22591;
  D.22593 = (int) D.22592;
  D.22594 = D.22593 | 1677721600;
  D.22595 = (unsigned int) D.22594;
  D.22601 = D.22595 >> 24;
  D.22602 = D.22600 | D.22601;
  MEM[(guint32 *)code] = D.22602;
  code = code + 4;
  addr.1 = (long int) addr;
  D.22531 = (short unsigned int) addr.1;
  D.22532 = (int) D.22531;
  D.22603 = D.22532 | 1610612736;
  D.22604 = (unsigned int) D.22603;
  D.22605 = D.22604 << 24;
  addr.1 = (long int) addr;
  D.22531 = (short unsigned int) addr.1;
  D.22536 = (unsigned int) D.22531;
  D.22537 = D.22536 & 65280;
  D.22538 = D.22537 << 8;
  D.22606 = D.22605 | D.22538;
  addr.1 = (long int) addr;
  D.22531 = (short unsigned int) addr.1;
  D.22532 = (int) D.22531;
  D.22603 = D.22532 | 1610612736;
  D.22604 = (unsigned int) D.22603;
  D.22607 = D.22604 >> 24;
  D.22608 = D.22606 | D.22607;
  MEM[(guint32 *)code] = D.22608;
  code = code + 4;
  <D.22609>:
  <D.22573>:
  <D.22542>:
  MEM[(guint32 *)code] = 2785216892;
  code = code + 4;
  D.22499 = this_pos << 21;
  D.22500 = D.22499 | 939524096;
  D.22501 = this_pos << 16;
  D.22502 = D.22500 | D.22501;
  D.22503 = D.22502 | 16;
  D.22504 = (unsigned int) D.22503;
  D.22505 = D.22504 << 24;
  D.22499 = this_pos << 21;
  D.22500 = D.22499 | 939524096;
  D.22501 = this_pos << 16;
  D.22502 = D.22500 | D.22501;
  D.22506 = (unsigned int) D.22502;
  D.22507 = D.22506 & 16711680;
  D.22508 = D.22507 >> 8;
  D.22509 = D.22505 | D.22508;
  D.22499 = this_pos << 21;
  D.22500 = D.22499 | 939524096;
  D.22501 = this_pos << 16;
  D.22502 = D.22500 | D.22501;
  D.22506 = (unsigned int) D.22502;
  D.22510 = D.22506 & 65280;
  D.22511 = D.22510 << 8;
  D.22512 = D.22509 | D.22511;
  D.22499 = this_pos << 21;
  D.22500 = D.22499 | 939524096;
  D.22501 = this_pos << 16;
  D.22502 = D.22500 | D.22501;
  D.22503 = D.22502 | 16;
  D.22504 = (unsigned int) D.22503;
  D.22513 = D.22504 >> 24;
  D.22514 = D.22512 | D.22513;
  MEM[(guint32 *)code] = D.22514;
  code = code + 4;
  MEM[(guint32 *)code] = 537165902;
  code = code + 4;
  <D.22524>:
  code.3 = (long int) code;
  start.4 = (long int) start;
  D.22636 = code.3 - start.4;
  D.22637 = (int) D.22636;
  mono_arch_flush_icache (start, D.22637);
  code.3 = (long int) code;
  start.4 = (long int) start;
  D.22636 = code.3 - start.4;
  D.22638 = (long int) size;
  D.22639 = D.22636 > D.22638;
  D.22640 = (long int) D.22639;
  D.22641 = __builtin_expect (D.22640, 0);
  if (D.22641 != 0) goto <D.22642>; else goto <D.22643>;
  <D.22642>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "tramp-ppc.c", 102, "(code - start) <= size");
  <D.22643>:
  D.22644 = start;
  return D.22644;
}


branch_for_target_reachable (guint8 * branch, guint8 * target)
{
  long int target.5;
  long int branch.6;
  long int D.22648;
  int D.22649;
  _Bool D.22650;
  long int D.22651;
  long int D.22652;
  guint32 D.22659;
  int D.22660;
  unsigned int diff.7;
  unsigned int D.22665;
  gint diff;

  target.5 = (long int) target;
  branch.6 = (long int) branch;
  D.22648 = target.5 - branch.6;
  diff = (gint) D.22648;
  D.22649 = diff & 3;
  D.22650 = D.22649 != 0;
  D.22651 = (long int) D.22650;
  D.22652 = __builtin_expect (D.22651, 0);
  if (D.22652 != 0) goto <D.22653>; else goto <D.22654>;
  <D.22653>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "tramp-ppc.c", 52, "(diff & 3) == 0");
  <D.22654>:
  if (diff >= 0) goto <D.22655>; else goto <D.22656>;
  <D.22655>:
  if (diff <= 33554431) goto <D.22657>; else goto <D.22658>;
  <D.22657>:
  D.22660 = diff | 1207959552;
  D.22659 = (guint32) D.22660;
  return D.22659;
  <D.22658>:
  goto <D.22661>;
  <D.22656>:
  if (diff >= -33554432) goto <D.22662>; else goto <D.22663>;
  <D.22662>:
  diff.7 = (unsigned int) diff;
  D.22665 = diff.7 & 67108863;
  D.22659 = D.22665 | 1207959552;
  return D.22659;
  <D.22663>:
  <D.22661>:
  D.22659 = 0;
  return D.22659;
}


mono_arch_get_static_rgctx_trampoline (struct MonoMethod * m, struct MonoMethodRuntimeGenericContext * mrgctx, void * addr)
{
  long unsigned int mrgctx.8;
  long unsigned int D.22668;
  long unsigned int D.22669;
  long int mrgctx.9;
  short unsigned int D.22673;
  int D.22674;
  int D.22675;
  unsigned int D.22676;
  unsigned int D.22677;
  unsigned int D.22678;
  unsigned int D.22679;
  unsigned int D.22680;
  unsigned int D.22681;
  unsigned int D.22682;
  unsigned int D.22683;
  unsigned int D.22684;
  unsigned int D.22685;
  unsigned int D.22686;
  unsigned int D.22687;
  long int mrgctx.10;
  long int D.22690;
  unsigned long D.22691;
  unsigned long D.22692;
  unsigned int D.22695;
  unsigned int D.22696;
  short unsigned int D.22697;
  int D.22698;
  int D.22699;
  unsigned int D.22700;
  unsigned int D.22701;
  unsigned int D.22702;
  unsigned int D.22703;
  unsigned int D.22704;
  unsigned int D.22705;
  unsigned int D.22706;
  unsigned int D.22707;
  unsigned int D.22708;
  unsigned int D.22709;
  unsigned int D.22710;
  unsigned int D.22711;
  short unsigned int D.22712;
  int D.22713;
  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 D.22721;
  unsigned int D.22722;
  unsigned int D.22723;
  unsigned int D.22724;
  unsigned int D.22725;
  unsigned int D.22726;
  long int D.22728;
  unsigned long D.22729;
  unsigned long D.22730;
  long int D.22733;
  short unsigned int D.22734;
  int D.22735;
  int D.22736;
  unsigned int D.22737;
  unsigned int D.22738;
  unsigned int D.22739;
  unsigned int D.22740;
  unsigned int D.22741;
  unsigned 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;
  long unsigned int D.22749;
  short unsigned int D.22750;
  int D.22751;
  int D.22752;
  unsigned int D.22753;
  unsigned int D.22754;
  unsigned int D.22755;
  unsigned int D.22756;
  unsigned int D.22757;
  unsigned int D.22758;
  unsigned int D.22759;
  unsigned int D.22760;
  unsigned int D.22761;
  unsigned int D.22762;
  unsigned int D.22763;
  unsigned int D.22764;
  int D.22765;
  unsigned int D.22766;
  unsigned int D.22767;
  unsigned int D.22768;
  unsigned int D.22769;
  unsigned int D.22770;
  unsigned int D.22771;
  unsigned int D.22772;
  unsigned int D.22773;
  unsigned int D.22774;
  long unsigned int D.22776;
  short unsigned int D.22777;
  int D.22778;
  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 D.22787;
  unsigned int D.22788;
  unsigned int D.22789;
  unsigned int D.22790;
  unsigned int D.22791;
  long unsigned int D.22792;
  short unsigned int D.22793;
  int D.22794;
  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;
  unsigned int D.22804;
  unsigned int D.22805;
  unsigned int D.22806;
  unsigned int D.22807;
  long int p.11;
  long int imm_buf.12;
  long int D.22810;
  union mono_mutex_t * D.22811;
  _Bool D.22814;
  long int D.22815;
  long int D.22816;
  sizetype D.22819;
  guint8 * D.22820;
  int D.22823;
  _Bool D.22826;
  long int D.22827;
  long int D.22828;
  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;
  long unsigned int addr.13;
  long unsigned int D.22853;
  long unsigned int D.22854;
  long int addr.14;
  short unsigned int D.22858;
  int D.22859;
  int D.22860;
  unsigned int D.22861;
  unsigned int D.22862;
  unsigned int D.22863;
  unsigned int D.22864;
  unsigned int D.22865;
  unsigned int D.22866;
  unsigned int D.22867;
  unsigned int D.22868;
  long int addr.15;
  long int D.22871;
  unsigned long D.22872;
  unsigned long D.22873;
  unsigned int D.22876;
  unsigned int D.22877;
  short unsigned int D.22878;
  int D.22879;
  int D.22880;
  unsigned int D.22881;
  unsigned 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;
  short unsigned int D.22889;
  int D.22890;
  int D.22891;
  unsigned int D.22892;
  unsigned int D.22893;
  unsigned int D.22894;
  unsigned int D.22895;
  unsigned int D.22896;
  unsigned int D.22897;
  unsigned int D.22898;
  unsigned int D.22899;
  long int D.22901;
  unsigned long D.22902;
  unsigned long D.22903;
  long int D.22906;
  short unsigned int D.22907;
  int D.22908;
  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;
  long unsigned int D.22918;
  short unsigned int D.22919;
  int D.22920;
  int D.22921;
  unsigned int D.22922;
  unsigned int D.22923;
  unsigned int D.22924;
  unsigned int D.22925;
  unsigned int D.22926;
  unsigned int D.22927;
  unsigned int D.22928;
  unsigned int D.22929;
  int D.22930;
  unsigned int D.22931;
  unsigned int D.22932;
  unsigned int D.22933;
  unsigned int D.22934;
  unsigned int D.22935;
  long unsigned int D.22937;
  short unsigned int D.22938;
  int D.22939;
  int D.22940;
  unsigned int D.22941;
  unsigned int D.22942;
  unsigned int D.22943;
  unsigned int D.22944;
  unsigned int D.22945;
  unsigned int D.22946;
  unsigned int D.22947;
  unsigned int D.22948;
  long unsigned int D.22949;
  short unsigned int D.22950;
  int D.22951;
  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;
  unsigned int D.22959;
  unsigned int D.22960;
  long int code.16;
  long int start.17;
  long int D.22972;
  int D.22973;
  long int D.22974;
  _Bool D.22975;
  long int D.22976;
  long int D.22977;
  void * D.22980;
  guint8 * code;
  guint8 * start;
  guint8 * p;
  guint8 imm_buf[128];
  guint32 short_branch;
  struct MonoDomain * domain;
  int imm_size;
  int size;

  try
    {
      domain = mono_domain_get ();
      size = 72;
      addr = mono_get_addr_from_ftnptr (addr);
      p = &imm_buf;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22668 = mrgctx.8 >> 15;
      D.22669 = D.22668 + 18446744073709551615;
      if (D.22669 > 18446744073709551613) goto <D.22670>; else goto <D.22671>;
      <D.22670>:
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22674 = (int) D.22673;
      D.22675 = D.22674 | 964689920;
      D.22676 = (unsigned int) D.22675;
      D.22677 = D.22676 << 24;
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22678 = (unsigned int) D.22673;
      D.22679 = D.22678 & 8323072;
      D.22680 = D.22679 | 8388608;
      D.22681 = D.22680 >> 8;
      D.22682 = D.22677 | D.22681;
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22678 = (unsigned int) D.22673;
      D.22683 = D.22678 & 65280;
      D.22684 = D.22683 << 8;
      D.22685 = D.22682 | D.22684;
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22674 = (int) D.22673;
      D.22675 = D.22674 | 964689920;
      D.22676 = (unsigned int) D.22675;
      D.22686 = D.22676 >> 24;
      D.22687 = D.22685 | D.22686;
      MEM[(guint32 *)p] = D.22687;
      p = p + 4;
      goto <D.22688>;
      <D.22671>:
      mrgctx.10 = (long int) mrgctx;
      D.22690 = mrgctx.10 >> 31;
      D.22691 = (unsigned long) D.22690;
      D.22692 = D.22691 + 1;
      if (D.22692 <= 1) goto <D.22693>; else goto <D.22694>;
      <D.22693>:
      mrgctx.9 = (long int) mrgctx;
      D.22695 = (unsigned int) mrgctx.9;
      D.22696 = D.22695 >> 16;
      D.22697 = (short unsigned int) D.22696;
      D.22698 = (int) D.22697;
      D.22699 = D.22698 | 1031798784;
      D.22700 = (unsigned int) D.22699;
      D.22701 = D.22700 << 24;
      mrgctx.9 = (long int) mrgctx;
      D.22695 = (unsigned int) mrgctx.9;
      D.22696 = D.22695 >> 16;
      D.22697 = (short unsigned int) D.22696;
      D.22702 = (unsigned int) D.22697;
      D.22703 = D.22702 & 8323072;
      D.22704 = D.22703 | 8388608;
      D.22705 = D.22704 >> 8;
      D.22706 = D.22701 | D.22705;
      mrgctx.9 = (long int) mrgctx;
      D.22695 = (unsigned int) mrgctx.9;
      D.22696 = D.22695 >> 16;
      D.22697 = (short unsigned int) D.22696;
      D.22702 = (unsigned int) D.22697;
      D.22707 = D.22702 & 65280;
      D.22708 = D.22707 << 8;
      D.22709 = D.22706 | D.22708;
      mrgctx.9 = (long int) mrgctx;
      D.22695 = (unsigned int) mrgctx.9;
      D.22696 = D.22695 >> 16;
      D.22697 = (short unsigned int) D.22696;
      D.22698 = (int) D.22697;
      D.22699 = D.22698 | 1031798784;
      D.22700 = (unsigned int) D.22699;
      D.22710 = D.22700 >> 24;
      D.22711 = D.22709 | D.22710;
      MEM[(guint32 *)p] = D.22711;
      p = p + 4;
      mrgctx.9 = (long int) mrgctx;
      D.22712 = (short unsigned int) mrgctx.9;
      D.22713 = (int) D.22712;
      D.22714 = D.22713 | 1636564992;
      D.22715 = (unsigned int) D.22714;
      D.22716 = D.22715 << 24;
      mrgctx.9 = (long int) mrgctx;
      D.22712 = (short unsigned int) mrgctx.9;
      D.22717 = (unsigned int) D.22712;
      D.22718 = D.22717 & 7536640;
      D.22719 = D.22718 | 9175040;
      D.22720 = D.22719 >> 8;
      D.22721 = D.22716 | D.22720;
      mrgctx.9 = (long int) mrgctx;
      D.22712 = (short unsigned int) mrgctx.9;
      D.22717 = (unsigned int) D.22712;
      D.22722 = D.22717 & 65280;
      D.22723 = D.22722 << 8;
      D.22724 = D.22721 | D.22723;
      mrgctx.9 = (long int) mrgctx;
      D.22712 = (short unsigned int) mrgctx.9;
      D.22713 = (int) D.22712;
      D.22714 = D.22713 | 1636564992;
      D.22715 = (unsigned int) D.22714;
      D.22725 = D.22715 >> 24;
      D.22726 = D.22724 | D.22725;
      MEM[(guint32 *)p] = D.22726;
      p = p + 4;
      goto <D.22727>;
      <D.22694>:
      mrgctx.10 = (long int) mrgctx;
      D.22728 = mrgctx.10 >> 47;
      D.22729 = (unsigned long) D.22728;
      D.22730 = D.22729 + 1;
      if (D.22730 <= 1) goto <D.22731>; else goto <D.22732>;
      <D.22731>:
      mrgctx.10 = (long int) mrgctx;
      D.22733 = mrgctx.10 >> 32;
      D.22734 = (short unsigned int) D.22733;
      D.22735 = (int) D.22734;
      D.22736 = D.22735 | 964689920;
      D.22737 = (unsigned int) D.22736;
      D.22738 = D.22737 << 24;
      mrgctx.10 = (long int) mrgctx;
      D.22733 = mrgctx.10 >> 32;
      D.22734 = (short unsigned int) D.22733;
      D.22739 = (unsigned int) D.22734;
      D.22740 = D.22739 & 8323072;
      D.22741 = D.22740 | 8388608;
      D.22742 = D.22741 >> 8;
      D.22743 = D.22738 | D.22742;
      mrgctx.10 = (long int) mrgctx;
      D.22733 = mrgctx.10 >> 32;
      D.22734 = (short unsigned int) D.22733;
      D.22739 = (unsigned int) D.22734;
      D.22744 = D.22739 & 65280;
      D.22745 = D.22744 << 8;
      D.22746 = D.22743 | D.22745;
      mrgctx.10 = (long int) mrgctx;
      D.22733 = mrgctx.10 >> 32;
      D.22734 = (short unsigned int) D.22733;
      D.22735 = (int) D.22734;
      D.22736 = D.22735 | 964689920;
      D.22737 = (unsigned int) D.22736;
      D.22747 = D.22737 >> 24;
      D.22748 = D.22746 | D.22747;
      MEM[(guint32 *)p] = D.22748;
      p = p + 4;
      MEM[(guint32 *)p] = 3322383481;
      p = p + 4;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22749 = mrgctx.8 >> 16;
      D.22750 = (short unsigned int) D.22749;
      D.22751 = (int) D.22750;
      D.22752 = D.22751 | 1703673856;
      D.22753 = (unsigned int) D.22752;
      D.22754 = D.22753 << 24;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22749 = mrgctx.8 >> 16;
      D.22750 = (short unsigned int) D.22749;
      D.22755 = (unsigned int) D.22750;
      D.22756 = D.22755 & 7536640;
      D.22757 = D.22756 | 9175040;
      D.22758 = D.22757 >> 8;
      D.22759 = D.22754 | D.22758;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22749 = mrgctx.8 >> 16;
      D.22750 = (short unsigned int) D.22749;
      D.22755 = (unsigned int) D.22750;
      D.22760 = D.22755 & 65280;
      D.22761 = D.22760 << 8;
      D.22762 = D.22759 | D.22761;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22749 = mrgctx.8 >> 16;
      D.22750 = (short unsigned int) D.22749;
      D.22751 = (int) D.22750;
      D.22752 = D.22751 | 1703673856;
      D.22753 = (unsigned int) D.22752;
      D.22763 = D.22753 >> 24;
      D.22764 = D.22762 | D.22763;
      MEM[(guint32 *)p] = D.22764;
      p = p + 4;
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22674 = (int) D.22673;
      D.22765 = D.22674 | 1636564992;
      D.22766 = (unsigned int) D.22765;
      D.22767 = D.22766 << 24;
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22678 = (unsigned int) D.22673;
      D.22768 = D.22678 & 7536640;
      D.22769 = D.22768 | 9175040;
      D.22770 = D.22769 >> 8;
      D.22771 = D.22767 | D.22770;
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22678 = (unsigned int) D.22673;
      D.22683 = D.22678 & 65280;
      D.22684 = D.22683 << 8;
      D.22772 = D.22771 | D.22684;
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22674 = (int) D.22673;
      D.22765 = D.22674 | 1636564992;
      D.22766 = (unsigned int) D.22765;
      D.22773 = D.22766 >> 24;
      D.22774 = D.22772 | D.22773;
      MEM[(guint32 *)p] = D.22774;
      p = p + 4;
      goto <D.22775>;
      <D.22732>:
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22776 = mrgctx.8 >> 48;
      D.22777 = (short unsigned int) D.22776;
      D.22778 = (int) D.22777;
      D.22779 = D.22778 | 1031798784;
      D.22780 = (unsigned int) D.22779;
      D.22781 = D.22780 << 24;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22776 = mrgctx.8 >> 48;
      D.22777 = (short unsigned int) D.22776;
      D.22782 = (unsigned int) D.22777;
      D.22783 = D.22782 & 8323072;
      D.22784 = D.22783 | 8388608;
      D.22785 = D.22784 >> 8;
      D.22786 = D.22781 | D.22785;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22776 = mrgctx.8 >> 48;
      D.22777 = (short unsigned int) D.22776;
      D.22782 = (unsigned int) D.22777;
      D.22787 = D.22782 & 65280;
      D.22788 = D.22787 << 8;
      D.22789 = D.22786 | D.22788;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22776 = mrgctx.8 >> 48;
      D.22777 = (short unsigned int) D.22776;
      D.22778 = (int) D.22777;
      D.22779 = D.22778 | 1031798784;
      D.22780 = (unsigned int) D.22779;
      D.22790 = D.22780 >> 24;
      D.22791 = D.22789 | D.22790;
      MEM[(guint32 *)p] = D.22791;
      p = p + 4;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22792 = mrgctx.8 >> 32;
      D.22793 = (short unsigned int) D.22792;
      D.22794 = (int) D.22793;
      D.22795 = D.22794 | 1636564992;
      D.22796 = (unsigned int) D.22795;
      D.22797 = D.22796 << 24;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22792 = mrgctx.8 >> 32;
      D.22793 = (short unsigned int) D.22792;
      D.22798 = (unsigned int) D.22793;
      D.22799 = D.22798 & 7536640;
      D.22800 = D.22799 | 9175040;
      D.22801 = D.22800 >> 8;
      D.22802 = D.22797 | D.22801;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22792 = mrgctx.8 >> 32;
      D.22793 = (short unsigned int) D.22792;
      D.22798 = (unsigned int) D.22793;
      D.22803 = D.22798 & 65280;
      D.22804 = D.22803 << 8;
      D.22805 = D.22802 | D.22804;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22792 = mrgctx.8 >> 32;
      D.22793 = (short unsigned int) D.22792;
      D.22794 = (int) D.22793;
      D.22795 = D.22794 | 1636564992;
      D.22796 = (unsigned int) D.22795;
      D.22806 = D.22796 >> 24;
      D.22807 = D.22805 | D.22806;
      MEM[(guint32 *)p] = D.22807;
      p = p + 4;
      MEM[(guint32 *)p] = 3322383481;
      p = p + 4;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22749 = mrgctx.8 >> 16;
      D.22750 = (short unsigned int) D.22749;
      D.22751 = (int) D.22750;
      D.22752 = D.22751 | 1703673856;
      D.22753 = (unsigned int) D.22752;
      D.22754 = D.22753 << 24;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22749 = mrgctx.8 >> 16;
      D.22750 = (short unsigned int) D.22749;
      D.22755 = (unsigned int) D.22750;
      D.22756 = D.22755 & 7536640;
      D.22757 = D.22756 | 9175040;
      D.22758 = D.22757 >> 8;
      D.22759 = D.22754 | D.22758;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22749 = mrgctx.8 >> 16;
      D.22750 = (short unsigned int) D.22749;
      D.22755 = (unsigned int) D.22750;
      D.22760 = D.22755 & 65280;
      D.22761 = D.22760 << 8;
      D.22762 = D.22759 | D.22761;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22749 = mrgctx.8 >> 16;
      D.22750 = (short unsigned int) D.22749;
      D.22751 = (int) D.22750;
      D.22752 = D.22751 | 1703673856;
      D.22753 = (unsigned int) D.22752;
      D.22763 = D.22753 >> 24;
      D.22764 = D.22762 | D.22763;
      MEM[(guint32 *)p] = D.22764;
      p = p + 4;
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22674 = (int) D.22673;
      D.22765 = D.22674 | 1636564992;
      D.22766 = (unsigned int) D.22765;
      D.22767 = D.22766 << 24;
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22678 = (unsigned int) D.22673;
      D.22768 = D.22678 & 7536640;
      D.22769 = D.22768 | 9175040;
      D.22770 = D.22769 >> 8;
      D.22771 = D.22767 | D.22770;
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22678 = (unsigned int) D.22673;
      D.22683 = D.22678 & 65280;
      D.22684 = D.22683 << 8;
      D.22772 = D.22771 | D.22684;
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22674 = (int) D.22673;
      D.22765 = D.22674 | 1636564992;
      D.22766 = (unsigned int) D.22765;
      D.22773 = D.22766 >> 24;
      D.22774 = D.22772 | D.22773;
      MEM[(guint32 *)p] = D.22774;
      p = p + 4;
      <D.22775>:
      <D.22727>:
      <D.22688>:
      p.11 = (long int) p;
      imm_buf.12 = (long int) &imm_buf;
      D.22810 = p.11 - imm_buf.12;
      imm_size = (int) D.22810;
      {
        int ret;

        D.22811 = &domain->lock.mutex;
        ret = pthread_mutex_lock (D.22811);
        if (ret != 0) goto <D.22812>; else goto <D.22813>;
        <D.22812>:
        monoeg_g_log (0B, 16, "Bad call to mono_mutex_lock result %d", ret);
        <D.22813>:
        D.22814 = ret != 0;
        D.22815 = (long int) D.22814;
        D.22816 = __builtin_expect (D.22815, 0);
        if (D.22816 != 0) goto <D.22817>; else goto <D.22818>;
        <D.22817>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "tramp-ppc.c", 131, "ret == 0");
        <D.22818>:
      }
      code = mono_domain_code_reserve (domain, size);
      start = code;
      code = mono_ppc_create_pre_code_ftnptr (code);
      D.22819 = (sizetype) imm_size;
      D.22820 = code + D.22819;
      short_branch = branch_for_target_reachable (D.22820, addr);
      if (short_branch != 0) goto <D.22821>; else goto <D.22822>;
      <D.22821>:
      D.22823 = imm_size + 4;
      mono_domain_code_commit (domain, code, size, D.22823);
      <D.22822>:
      {
        int ret;

        D.22811 = &domain->lock.mutex;
        ret = pthread_mutex_unlock (D.22811);
        if (ret != 0) goto <D.22824>; else goto <D.22825>;
        <D.22824>:
        monoeg_g_log (0B, 16, "Bad call to mono_mutex_unlock result %d", ret);
        <D.22825>:
        D.22826 = ret != 0;
        D.22827 = (long int) D.22826;
        D.22828 = __builtin_expect (D.22827, 0);
        if (D.22828 != 0) goto <D.22829>; else goto <D.22830>;
        <D.22829>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "tramp-ppc.c", 137, "ret == 0");
        <D.22830>:
      }
      if (short_branch != 0) goto <D.22831>; else goto <D.22832>;
      <D.22831>:
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22668 = mrgctx.8 >> 15;
      D.22669 = D.22668 + 18446744073709551615;
      if (D.22669 > 18446744073709551613) goto <D.22833>; else goto <D.22834>;
      <D.22833>:
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22674 = (int) D.22673;
      D.22675 = D.22674 | 964689920;
      D.22676 = (unsigned int) D.22675;
      D.22677 = D.22676 << 24;
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22678 = (unsigned int) D.22673;
      D.22679 = D.22678 & 8323072;
      D.22680 = D.22679 | 8388608;
      D.22681 = D.22680 >> 8;
      D.22682 = D.22677 | D.22681;
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22678 = (unsigned int) D.22673;
      D.22683 = D.22678 & 65280;
      D.22684 = D.22683 << 8;
      D.22685 = D.22682 | D.22684;
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22674 = (int) D.22673;
      D.22675 = D.22674 | 964689920;
      D.22676 = (unsigned int) D.22675;
      D.22686 = D.22676 >> 24;
      D.22687 = D.22685 | D.22686;
      MEM[(guint32 *)code] = D.22687;
      code = code + 4;
      goto <D.22835>;
      <D.22834>:
      mrgctx.10 = (long int) mrgctx;
      D.22690 = mrgctx.10 >> 31;
      D.22691 = (unsigned long) D.22690;
      D.22692 = D.22691 + 1;
      if (D.22692 <= 1) goto <D.22836>; else goto <D.22837>;
      <D.22836>:
      mrgctx.9 = (long int) mrgctx;
      D.22695 = (unsigned int) mrgctx.9;
      D.22696 = D.22695 >> 16;
      D.22697 = (short unsigned int) D.22696;
      D.22698 = (int) D.22697;
      D.22699 = D.22698 | 1031798784;
      D.22700 = (unsigned int) D.22699;
      D.22701 = D.22700 << 24;
      mrgctx.9 = (long int) mrgctx;
      D.22695 = (unsigned int) mrgctx.9;
      D.22696 = D.22695 >> 16;
      D.22697 = (short unsigned int) D.22696;
      D.22702 = (unsigned int) D.22697;
      D.22703 = D.22702 & 8323072;
      D.22704 = D.22703 | 8388608;
      D.22705 = D.22704 >> 8;
      D.22706 = D.22701 | D.22705;
      mrgctx.9 = (long int) mrgctx;
      D.22695 = (unsigned int) mrgctx.9;
      D.22696 = D.22695 >> 16;
      D.22697 = (short unsigned int) D.22696;
      D.22702 = (unsigned int) D.22697;
      D.22707 = D.22702 & 65280;
      D.22708 = D.22707 << 8;
      D.22709 = D.22706 | D.22708;
      mrgctx.9 = (long int) mrgctx;
      D.22695 = (unsigned int) mrgctx.9;
      D.22696 = D.22695 >> 16;
      D.22697 = (short unsigned int) D.22696;
      D.22698 = (int) D.22697;
      D.22699 = D.22698 | 1031798784;
      D.22700 = (unsigned int) D.22699;
      D.22710 = D.22700 >> 24;
      D.22711 = D.22709 | D.22710;
      MEM[(guint32 *)code] = D.22711;
      code = code + 4;
      mrgctx.9 = (long int) mrgctx;
      D.22712 = (short unsigned int) mrgctx.9;
      D.22713 = (int) D.22712;
      D.22714 = D.22713 | 1636564992;
      D.22715 = (unsigned int) D.22714;
      D.22716 = D.22715 << 24;
      mrgctx.9 = (long int) mrgctx;
      D.22712 = (short unsigned int) mrgctx.9;
      D.22717 = (unsigned int) D.22712;
      D.22718 = D.22717 & 7536640;
      D.22719 = D.22718 | 9175040;
      D.22720 = D.22719 >> 8;
      D.22721 = D.22716 | D.22720;
      mrgctx.9 = (long int) mrgctx;
      D.22712 = (short unsigned int) mrgctx.9;
      D.22717 = (unsigned int) D.22712;
      D.22722 = D.22717 & 65280;
      D.22723 = D.22722 << 8;
      D.22724 = D.22721 | D.22723;
      mrgctx.9 = (long int) mrgctx;
      D.22712 = (short unsigned int) mrgctx.9;
      D.22713 = (int) D.22712;
      D.22714 = D.22713 | 1636564992;
      D.22715 = (unsigned int) D.22714;
      D.22725 = D.22715 >> 24;
      D.22726 = D.22724 | D.22725;
      MEM[(guint32 *)code] = D.22726;
      code = code + 4;
      goto <D.22838>;
      <D.22837>:
      mrgctx.10 = (long int) mrgctx;
      D.22728 = mrgctx.10 >> 47;
      D.22729 = (unsigned long) D.22728;
      D.22730 = D.22729 + 1;
      if (D.22730 <= 1) goto <D.22839>; else goto <D.22840>;
      <D.22839>:
      mrgctx.10 = (long int) mrgctx;
      D.22733 = mrgctx.10 >> 32;
      D.22734 = (short unsigned int) D.22733;
      D.22735 = (int) D.22734;
      D.22736 = D.22735 | 964689920;
      D.22737 = (unsigned int) D.22736;
      D.22738 = D.22737 << 24;
      mrgctx.10 = (long int) mrgctx;
      D.22733 = mrgctx.10 >> 32;
      D.22734 = (short unsigned int) D.22733;
      D.22739 = (unsigned int) D.22734;
      D.22740 = D.22739 & 8323072;
      D.22741 = D.22740 | 8388608;
      D.22742 = D.22741 >> 8;
      D.22743 = D.22738 | D.22742;
      mrgctx.10 = (long int) mrgctx;
      D.22733 = mrgctx.10 >> 32;
      D.22734 = (short unsigned int) D.22733;
      D.22739 = (unsigned int) D.22734;
      D.22744 = D.22739 & 65280;
      D.22745 = D.22744 << 8;
      D.22746 = D.22743 | D.22745;
      mrgctx.10 = (long int) mrgctx;
      D.22733 = mrgctx.10 >> 32;
      D.22734 = (short unsigned int) D.22733;
      D.22735 = (int) D.22734;
      D.22736 = D.22735 | 964689920;
      D.22737 = (unsigned int) D.22736;
      D.22747 = D.22737 >> 24;
      D.22748 = D.22746 | D.22747;
      MEM[(guint32 *)code] = D.22748;
      code = code + 4;
      MEM[(guint32 *)code] = 3322383481;
      code = code + 4;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22749 = mrgctx.8 >> 16;
      D.22750 = (short unsigned int) D.22749;
      D.22751 = (int) D.22750;
      D.22752 = D.22751 | 1703673856;
      D.22753 = (unsigned int) D.22752;
      D.22754 = D.22753 << 24;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22749 = mrgctx.8 >> 16;
      D.22750 = (short unsigned int) D.22749;
      D.22755 = (unsigned int) D.22750;
      D.22756 = D.22755 & 7536640;
      D.22757 = D.22756 | 9175040;
      D.22758 = D.22757 >> 8;
      D.22759 = D.22754 | D.22758;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22749 = mrgctx.8 >> 16;
      D.22750 = (short unsigned int) D.22749;
      D.22755 = (unsigned int) D.22750;
      D.22760 = D.22755 & 65280;
      D.22761 = D.22760 << 8;
      D.22762 = D.22759 | D.22761;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22749 = mrgctx.8 >> 16;
      D.22750 = (short unsigned int) D.22749;
      D.22751 = (int) D.22750;
      D.22752 = D.22751 | 1703673856;
      D.22753 = (unsigned int) D.22752;
      D.22763 = D.22753 >> 24;
      D.22764 = D.22762 | D.22763;
      MEM[(guint32 *)code] = D.22764;
      code = code + 4;
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22674 = (int) D.22673;
      D.22765 = D.22674 | 1636564992;
      D.22766 = (unsigned int) D.22765;
      D.22767 = D.22766 << 24;
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22678 = (unsigned int) D.22673;
      D.22768 = D.22678 & 7536640;
      D.22769 = D.22768 | 9175040;
      D.22770 = D.22769 >> 8;
      D.22771 = D.22767 | D.22770;
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22678 = (unsigned int) D.22673;
      D.22683 = D.22678 & 65280;
      D.22684 = D.22683 << 8;
      D.22772 = D.22771 | D.22684;
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22674 = (int) D.22673;
      D.22765 = D.22674 | 1636564992;
      D.22766 = (unsigned int) D.22765;
      D.22773 = D.22766 >> 24;
      D.22774 = D.22772 | D.22773;
      MEM[(guint32 *)code] = D.22774;
      code = code + 4;
      goto <D.22841>;
      <D.22840>:
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22776 = mrgctx.8 >> 48;
      D.22777 = (short unsigned int) D.22776;
      D.22778 = (int) D.22777;
      D.22779 = D.22778 | 1031798784;
      D.22780 = (unsigned int) D.22779;
      D.22781 = D.22780 << 24;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22776 = mrgctx.8 >> 48;
      D.22777 = (short unsigned int) D.22776;
      D.22782 = (unsigned int) D.22777;
      D.22783 = D.22782 & 8323072;
      D.22784 = D.22783 | 8388608;
      D.22785 = D.22784 >> 8;
      D.22786 = D.22781 | D.22785;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22776 = mrgctx.8 >> 48;
      D.22777 = (short unsigned int) D.22776;
      D.22782 = (unsigned int) D.22777;
      D.22787 = D.22782 & 65280;
      D.22788 = D.22787 << 8;
      D.22789 = D.22786 | D.22788;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22776 = mrgctx.8 >> 48;
      D.22777 = (short unsigned int) D.22776;
      D.22778 = (int) D.22777;
      D.22779 = D.22778 | 1031798784;
      D.22780 = (unsigned int) D.22779;
      D.22790 = D.22780 >> 24;
      D.22791 = D.22789 | D.22790;
      MEM[(guint32 *)code] = D.22791;
      code = code + 4;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22792 = mrgctx.8 >> 32;
      D.22793 = (short unsigned int) D.22792;
      D.22794 = (int) D.22793;
      D.22795 = D.22794 | 1636564992;
      D.22796 = (unsigned int) D.22795;
      D.22797 = D.22796 << 24;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22792 = mrgctx.8 >> 32;
      D.22793 = (short unsigned int) D.22792;
      D.22798 = (unsigned int) D.22793;
      D.22799 = D.22798 & 7536640;
      D.22800 = D.22799 | 9175040;
      D.22801 = D.22800 >> 8;
      D.22802 = D.22797 | D.22801;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22792 = mrgctx.8 >> 32;
      D.22793 = (short unsigned int) D.22792;
      D.22798 = (unsigned int) D.22793;
      D.22803 = D.22798 & 65280;
      D.22804 = D.22803 << 8;
      D.22805 = D.22802 | D.22804;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22792 = mrgctx.8 >> 32;
      D.22793 = (short unsigned int) D.22792;
      D.22794 = (int) D.22793;
      D.22795 = D.22794 | 1636564992;
      D.22796 = (unsigned int) D.22795;
      D.22806 = D.22796 >> 24;
      D.22807 = D.22805 | D.22806;
      MEM[(guint32 *)code] = D.22807;
      code = code + 4;
      MEM[(guint32 *)code] = 3322383481;
      code = code + 4;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22749 = mrgctx.8 >> 16;
      D.22750 = (short unsigned int) D.22749;
      D.22751 = (int) D.22750;
      D.22752 = D.22751 | 1703673856;
      D.22753 = (unsigned int) D.22752;
      D.22754 = D.22753 << 24;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22749 = mrgctx.8 >> 16;
      D.22750 = (short unsigned int) D.22749;
      D.22755 = (unsigned int) D.22750;
      D.22756 = D.22755 & 7536640;
      D.22757 = D.22756 | 9175040;
      D.22758 = D.22757 >> 8;
      D.22759 = D.22754 | D.22758;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22749 = mrgctx.8 >> 16;
      D.22750 = (short unsigned int) D.22749;
      D.22755 = (unsigned int) D.22750;
      D.22760 = D.22755 & 65280;
      D.22761 = D.22760 << 8;
      D.22762 = D.22759 | D.22761;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22749 = mrgctx.8 >> 16;
      D.22750 = (short unsigned int) D.22749;
      D.22751 = (int) D.22750;
      D.22752 = D.22751 | 1703673856;
      D.22753 = (unsigned int) D.22752;
      D.22763 = D.22753 >> 24;
      D.22764 = D.22762 | D.22763;
      MEM[(guint32 *)code] = D.22764;
      code = code + 4;
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22674 = (int) D.22673;
      D.22765 = D.22674 | 1636564992;
      D.22766 = (unsigned int) D.22765;
      D.22767 = D.22766 << 24;
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22678 = (unsigned int) D.22673;
      D.22768 = D.22678 & 7536640;
      D.22769 = D.22768 | 9175040;
      D.22770 = D.22769 >> 8;
      D.22771 = D.22767 | D.22770;
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22678 = (unsigned int) D.22673;
      D.22683 = D.22678 & 65280;
      D.22684 = D.22683 << 8;
      D.22772 = D.22771 | D.22684;
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22674 = (int) D.22673;
      D.22765 = D.22674 | 1636564992;
      D.22766 = (unsigned int) D.22765;
      D.22773 = D.22766 >> 24;
      D.22774 = D.22772 | D.22773;
      MEM[(guint32 *)code] = D.22774;
      code = code + 4;
      <D.22841>:
      <D.22838>:
      <D.22835>:
      D.22842 = short_branch << 24;
      D.22843 = short_branch & 16711680;
      D.22844 = D.22843 >> 8;
      D.22845 = D.22842 | D.22844;
      D.22846 = short_branch & 65280;
      D.22847 = D.22846 << 8;
      D.22848 = D.22845 | D.22847;
      D.22849 = short_branch >> 24;
      D.22850 = D.22848 | D.22849;
      MEM[(guint32 *)code] = D.22850;
      code = code + 4;
      goto <D.22851>;
      <D.22832>:
      addr.13 = (long unsigned int) addr;
      D.22853 = addr.13 >> 15;
      D.22854 = D.22853 + 18446744073709551615;
      if (D.22854 > 18446744073709551613) goto <D.22855>; else goto <D.22856>;
      <D.22855>:
      addr.14 = (long int) addr;
      D.22858 = (short unsigned int) addr.14;
      D.22859 = (int) D.22858;
      D.22860 = D.22859 | 939524096;
      D.22861 = (unsigned int) D.22860;
      D.22862 = D.22861 << 24;
      addr.14 = (long int) addr;
      D.22858 = (short unsigned int) addr.14;
      D.22863 = (unsigned int) D.22858;
      D.22864 = D.22863 & 65280;
      D.22865 = D.22864 << 8;
      D.22866 = D.22862 | D.22865;
      addr.14 = (long int) addr;
      D.22858 = (short unsigned int) addr.14;
      D.22859 = (int) D.22858;
      D.22860 = D.22859 | 939524096;
      D.22861 = (unsigned int) D.22860;
      D.22867 = D.22861 >> 24;
      D.22868 = D.22866 | D.22867;
      MEM[(guint32 *)code] = D.22868;
      code = code + 4;
      goto <D.22869>;
      <D.22856>:
      addr.15 = (long int) addr;
      D.22871 = addr.15 >> 31;
      D.22872 = (unsigned long) D.22871;
      D.22873 = D.22872 + 1;
      if (D.22873 <= 1) goto <D.22874>; else goto <D.22875>;
      <D.22874>:
      addr.14 = (long int) addr;
      D.22876 = (unsigned int) addr.14;
      D.22877 = D.22876 >> 16;
      D.22878 = (short unsigned int) D.22877;
      D.22879 = (int) D.22878;
      D.22880 = D.22879 | 1006632960;
      D.22881 = (unsigned int) D.22880;
      D.22882 = D.22881 << 24;
      addr.14 = (long int) addr;
      D.22876 = (unsigned int) addr.14;
      D.22877 = D.22876 >> 16;
      D.22878 = (short unsigned int) D.22877;
      D.22883 = (unsigned int) D.22878;
      D.22884 = D.22883 & 65280;
      D.22885 = D.22884 << 8;
      D.22886 = D.22882 | D.22885;
      addr.14 = (long int) addr;
      D.22876 = (unsigned int) addr.14;
      D.22877 = D.22876 >> 16;
      D.22878 = (short unsigned int) D.22877;
      D.22879 = (int) D.22878;
      D.22880 = D.22879 | 1006632960;
      D.22881 = (unsigned int) D.22880;
      D.22887 = D.22881 >> 24;
      D.22888 = D.22886 | D.22887;
      MEM[(guint32 *)code] = D.22888;
      code = code + 4;
      addr.14 = (long int) addr;
      D.22889 = (short unsigned int) addr.14;
      D.22890 = (int) D.22889;
      D.22891 = D.22890 | 1610612736;
      D.22892 = (unsigned int) D.22891;
      D.22893 = D.22892 << 24;
      addr.14 = (long int) addr;
      D.22889 = (short unsigned int) addr.14;
      D.22894 = (unsigned int) D.22889;
      D.22895 = D.22894 & 65280;
      D.22896 = D.22895 << 8;
      D.22897 = D.22893 | D.22896;
      addr.14 = (long int) addr;
      D.22889 = (short unsigned int) addr.14;
      D.22890 = (int) D.22889;
      D.22891 = D.22890 | 1610612736;
      D.22892 = (unsigned int) D.22891;
      D.22898 = D.22892 >> 24;
      D.22899 = D.22897 | D.22898;
      MEM[(guint32 *)code] = D.22899;
      code = code + 4;
      goto <D.22900>;
      <D.22875>:
      addr.15 = (long int) addr;
      D.22901 = addr.15 >> 47;
      D.22902 = (unsigned long) D.22901;
      D.22903 = D.22902 + 1;
      if (D.22903 <= 1) goto <D.22904>; else goto <D.22905>;
      <D.22904>:
      addr.15 = (long int) addr;
      D.22906 = addr.15 >> 32;
      D.22907 = (short unsigned int) D.22906;
      D.22908 = (int) D.22907;
      D.22909 = D.22908 | 939524096;
      D.22910 = (unsigned int) D.22909;
      D.22911 = D.22910 << 24;
      addr.15 = (long int) addr;
      D.22906 = addr.15 >> 32;
      D.22907 = (short unsigned int) D.22906;
      D.22912 = (unsigned int) D.22907;
      D.22913 = D.22912 & 65280;
      D.22914 = D.22913 << 8;
      D.22915 = D.22911 | D.22914;
      addr.15 = (long int) addr;
      D.22906 = addr.15 >> 32;
      D.22907 = (short unsigned int) D.22906;
      D.22908 = (int) D.22907;
      D.22909 = D.22908 | 939524096;
      D.22910 = (unsigned int) D.22909;
      D.22916 = D.22910 >> 24;
      D.22917 = D.22915 | D.22916;
      MEM[(guint32 *)code] = D.22917;
      code = code + 4;
      MEM[(guint32 *)code] = 3322347640;
      code = code + 4;
      addr.13 = (long unsigned int) addr;
      D.22918 = addr.13 >> 16;
      D.22919 = (short unsigned int) D.22918;
      D.22920 = (int) D.22919;
      D.22921 = D.22920 | 1677721600;
      D.22922 = (unsigned int) D.22921;
      D.22923 = D.22922 << 24;
      addr.13 = (long unsigned int) addr;
      D.22918 = addr.13 >> 16;
      D.22919 = (short unsigned int) D.22918;
      D.22924 = (unsigned int) D.22919;
      D.22925 = D.22924 & 65280;
      D.22926 = D.22925 << 8;
      D.22927 = D.22923 | D.22926;
      addr.13 = (long unsigned int) addr;
      D.22918 = addr.13 >> 16;
      D.22919 = (short unsigned int) D.22918;
      D.22920 = (int) D.22919;
      D.22921 = D.22920 | 1677721600;
      D.22922 = (unsigned int) D.22921;
      D.22928 = D.22922 >> 24;
      D.22929 = D.22927 | D.22928;
      MEM[(guint32 *)code] = D.22929;
      code = code + 4;
      addr.14 = (long int) addr;
      D.22858 = (short unsigned int) addr.14;
      D.22859 = (int) D.22858;
      D.22930 = D.22859 | 1610612736;
      D.22931 = (unsigned int) D.22930;
      D.22932 = D.22931 << 24;
      addr.14 = (long int) addr;
      D.22858 = (short unsigned int) addr.14;
      D.22863 = (unsigned int) D.22858;
      D.22864 = D.22863 & 65280;
      D.22865 = D.22864 << 8;
      D.22933 = D.22932 | D.22865;
      addr.14 = (long int) addr;
      D.22858 = (short unsigned int) addr.14;
      D.22859 = (int) D.22858;
      D.22930 = D.22859 | 1610612736;
      D.22931 = (unsigned int) D.22930;
      D.22934 = D.22931 >> 24;
      D.22935 = D.22933 | D.22934;
      MEM[(guint32 *)code] = D.22935;
      code = code + 4;
      goto <D.22936>;
      <D.22905>:
      addr.13 = (long unsigned int) addr;
      D.22937 = addr.13 >> 48;
      D.22938 = (short unsigned int) D.22937;
      D.22939 = (int) D.22938;
      D.22940 = D.22939 | 1006632960;
      D.22941 = (unsigned int) D.22940;
      D.22942 = D.22941 << 24;
      addr.13 = (long unsigned int) addr;
      D.22937 = addr.13 >> 48;
      D.22938 = (short unsigned int) D.22937;
      D.22943 = (unsigned int) D.22938;
      D.22944 = D.22943 & 65280;
      D.22945 = D.22944 << 8;
      D.22946 = D.22942 | D.22945;
      addr.13 = (long unsigned int) addr;
      D.22937 = addr.13 >> 48;
      D.22938 = (short unsigned int) D.22937;
      D.22939 = (int) D.22938;
      D.22940 = D.22939 | 1006632960;
      D.22941 = (unsigned int) D.22940;
      D.22947 = D.22941 >> 24;
      D.22948 = D.22946 | D.22947;
      MEM[(guint32 *)code] = D.22948;
      code = code + 4;
      addr.13 = (long unsigned int) addr;
      D.22949 = addr.13 >> 32;
      D.22950 = (short unsigned int) D.22949;
      D.22951 = (int) D.22950;
      D.22952 = D.22951 | 1610612736;
      D.22953 = (unsigned int) D.22952;
      D.22954 = D.22953 << 24;
      addr.13 = (long unsigned int) addr;
      D.22949 = addr.13 >> 32;
      D.22950 = (short unsigned int) D.22949;
      D.22955 = (unsigned int) D.22950;
      D.22956 = D.22955 & 65280;
      D.22957 = D.22956 << 8;
      D.22958 = D.22954 | D.22957;
      addr.13 = (long unsigned int) addr;
      D.22949 = addr.13 >> 32;
      D.22950 = (short unsigned int) D.22949;
      D.22951 = (int) D.22950;
      D.22952 = D.22951 | 1610612736;
      D.22953 = (unsigned int) D.22952;
      D.22959 = D.22953 >> 24;
      D.22960 = D.22958 | D.22959;
      MEM[(guint32 *)code] = D.22960;
      code = code + 4;
      MEM[(guint32 *)code] = 3322347640;
      code = code + 4;
      addr.13 = (long unsigned int) addr;
      D.22918 = addr.13 >> 16;
      D.22919 = (short unsigned int) D.22918;
      D.22920 = (int) D.22919;
      D.22921 = D.22920 | 1677721600;
      D.22922 = (unsigned int) D.22921;
      D.22923 = D.22922 << 24;
      addr.13 = (long unsigned int) addr;
      D.22918 = addr.13 >> 16;
      D.22919 = (short unsigned int) D.22918;
      D.22924 = (unsigned int) D.22919;
      D.22925 = D.22924 & 65280;
      D.22926 = D.22925 << 8;
      D.22927 = D.22923 | D.22926;
      addr.13 = (long unsigned int) addr;
      D.22918 = addr.13 >> 16;
      D.22919 = (short unsigned int) D.22918;
      D.22920 = (int) D.22919;
      D.22921 = D.22920 | 1677721600;
      D.22922 = (unsigned int) D.22921;
      D.22928 = D.22922 >> 24;
      D.22929 = D.22927 | D.22928;
      MEM[(guint32 *)code] = D.22929;
      code = code + 4;
      addr.14 = (long int) addr;
      D.22858 = (short unsigned int) addr.14;
      D.22859 = (int) D.22858;
      D.22930 = D.22859 | 1610612736;
      D.22931 = (unsigned int) D.22930;
      D.22932 = D.22931 << 24;
      addr.14 = (long int) addr;
      D.22858 = (short unsigned int) addr.14;
      D.22863 = (unsigned int) D.22858;
      D.22864 = D.22863 & 65280;
      D.22865 = D.22864 << 8;
      D.22933 = D.22932 | D.22865;
      addr.14 = (long int) addr;
      D.22858 = (short unsigned int) addr.14;
      D.22859 = (int) D.22858;
      D.22930 = D.22859 | 1610612736;
      D.22931 = (unsigned int) D.22930;
      D.22934 = D.22931 >> 24;
      D.22935 = D.22933 | D.22934;
      MEM[(guint32 *)code] = D.22935;
      code = code + 4;
      <D.22936>:
      <D.22900>:
      <D.22869>:
      MEM[(guint32 *)code] = 2785216892;
      code = code + 4;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22668 = mrgctx.8 >> 15;
      D.22669 = D.22668 + 18446744073709551615;
      if (D.22669 > 18446744073709551613) goto <D.22961>; else goto <D.22962>;
      <D.22961>:
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22674 = (int) D.22673;
      D.22675 = D.22674 | 964689920;
      D.22676 = (unsigned int) D.22675;
      D.22677 = D.22676 << 24;
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22678 = (unsigned int) D.22673;
      D.22679 = D.22678 & 8323072;
      D.22680 = D.22679 | 8388608;
      D.22681 = D.22680 >> 8;
      D.22682 = D.22677 | D.22681;
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22678 = (unsigned int) D.22673;
      D.22683 = D.22678 & 65280;
      D.22684 = D.22683 << 8;
      D.22685 = D.22682 | D.22684;
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22674 = (int) D.22673;
      D.22675 = D.22674 | 964689920;
      D.22676 = (unsigned int) D.22675;
      D.22686 = D.22676 >> 24;
      D.22687 = D.22685 | D.22686;
      MEM[(guint32 *)code] = D.22687;
      code = code + 4;
      goto <D.22963>;
      <D.22962>:
      mrgctx.10 = (long int) mrgctx;
      D.22690 = mrgctx.10 >> 31;
      D.22691 = (unsigned long) D.22690;
      D.22692 = D.22691 + 1;
      if (D.22692 <= 1) goto <D.22964>; else goto <D.22965>;
      <D.22964>:
      mrgctx.9 = (long int) mrgctx;
      D.22695 = (unsigned int) mrgctx.9;
      D.22696 = D.22695 >> 16;
      D.22697 = (short unsigned int) D.22696;
      D.22698 = (int) D.22697;
      D.22699 = D.22698 | 1031798784;
      D.22700 = (unsigned int) D.22699;
      D.22701 = D.22700 << 24;
      mrgctx.9 = (long int) mrgctx;
      D.22695 = (unsigned int) mrgctx.9;
      D.22696 = D.22695 >> 16;
      D.22697 = (short unsigned int) D.22696;
      D.22702 = (unsigned int) D.22697;
      D.22703 = D.22702 & 8323072;
      D.22704 = D.22703 | 8388608;
      D.22705 = D.22704 >> 8;
      D.22706 = D.22701 | D.22705;
      mrgctx.9 = (long int) mrgctx;
      D.22695 = (unsigned int) mrgctx.9;
      D.22696 = D.22695 >> 16;
      D.22697 = (short unsigned int) D.22696;
      D.22702 = (unsigned int) D.22697;
      D.22707 = D.22702 & 65280;
      D.22708 = D.22707 << 8;
      D.22709 = D.22706 | D.22708;
      mrgctx.9 = (long int) mrgctx;
      D.22695 = (unsigned int) mrgctx.9;
      D.22696 = D.22695 >> 16;
      D.22697 = (short unsigned int) D.22696;
      D.22698 = (int) D.22697;
      D.22699 = D.22698 | 1031798784;
      D.22700 = (unsigned int) D.22699;
      D.22710 = D.22700 >> 24;
      D.22711 = D.22709 | D.22710;
      MEM[(guint32 *)code] = D.22711;
      code = code + 4;
      mrgctx.9 = (long int) mrgctx;
      D.22712 = (short unsigned int) mrgctx.9;
      D.22713 = (int) D.22712;
      D.22714 = D.22713 | 1636564992;
      D.22715 = (unsigned int) D.22714;
      D.22716 = D.22715 << 24;
      mrgctx.9 = (long int) mrgctx;
      D.22712 = (short unsigned int) mrgctx.9;
      D.22717 = (unsigned int) D.22712;
      D.22718 = D.22717 & 7536640;
      D.22719 = D.22718 | 9175040;
      D.22720 = D.22719 >> 8;
      D.22721 = D.22716 | D.22720;
      mrgctx.9 = (long int) mrgctx;
      D.22712 = (short unsigned int) mrgctx.9;
      D.22717 = (unsigned int) D.22712;
      D.22722 = D.22717 & 65280;
      D.22723 = D.22722 << 8;
      D.22724 = D.22721 | D.22723;
      mrgctx.9 = (long int) mrgctx;
      D.22712 = (short unsigned int) mrgctx.9;
      D.22713 = (int) D.22712;
      D.22714 = D.22713 | 1636564992;
      D.22715 = (unsigned int) D.22714;
      D.22725 = D.22715 >> 24;
      D.22726 = D.22724 | D.22725;
      MEM[(guint32 *)code] = D.22726;
      code = code + 4;
      goto <D.22966>;
      <D.22965>:
      mrgctx.10 = (long int) mrgctx;
      D.22728 = mrgctx.10 >> 47;
      D.22729 = (unsigned long) D.22728;
      D.22730 = D.22729 + 1;
      if (D.22730 <= 1) goto <D.22967>; else goto <D.22968>;
      <D.22967>:
      mrgctx.10 = (long int) mrgctx;
      D.22733 = mrgctx.10 >> 32;
      D.22734 = (short unsigned int) D.22733;
      D.22735 = (int) D.22734;
      D.22736 = D.22735 | 964689920;
      D.22737 = (unsigned int) D.22736;
      D.22738 = D.22737 << 24;
      mrgctx.10 = (long int) mrgctx;
      D.22733 = mrgctx.10 >> 32;
      D.22734 = (short unsigned int) D.22733;
      D.22739 = (unsigned int) D.22734;
      D.22740 = D.22739 & 8323072;
      D.22741 = D.22740 | 8388608;
      D.22742 = D.22741 >> 8;
      D.22743 = D.22738 | D.22742;
      mrgctx.10 = (long int) mrgctx;
      D.22733 = mrgctx.10 >> 32;
      D.22734 = (short unsigned int) D.22733;
      D.22739 = (unsigned int) D.22734;
      D.22744 = D.22739 & 65280;
      D.22745 = D.22744 << 8;
      D.22746 = D.22743 | D.22745;
      mrgctx.10 = (long int) mrgctx;
      D.22733 = mrgctx.10 >> 32;
      D.22734 = (short unsigned int) D.22733;
      D.22735 = (int) D.22734;
      D.22736 = D.22735 | 964689920;
      D.22737 = (unsigned int) D.22736;
      D.22747 = D.22737 >> 24;
      D.22748 = D.22746 | D.22747;
      MEM[(guint32 *)code] = D.22748;
      code = code + 4;
      MEM[(guint32 *)code] = 3322383481;
      code = code + 4;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22749 = mrgctx.8 >> 16;
      D.22750 = (short unsigned int) D.22749;
      D.22751 = (int) D.22750;
      D.22752 = D.22751 | 1703673856;
      D.22753 = (unsigned int) D.22752;
      D.22754 = D.22753 << 24;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22749 = mrgctx.8 >> 16;
      D.22750 = (short unsigned int) D.22749;
      D.22755 = (unsigned int) D.22750;
      D.22756 = D.22755 & 7536640;
      D.22757 = D.22756 | 9175040;
      D.22758 = D.22757 >> 8;
      D.22759 = D.22754 | D.22758;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22749 = mrgctx.8 >> 16;
      D.22750 = (short unsigned int) D.22749;
      D.22755 = (unsigned int) D.22750;
      D.22760 = D.22755 & 65280;
      D.22761 = D.22760 << 8;
      D.22762 = D.22759 | D.22761;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22749 = mrgctx.8 >> 16;
      D.22750 = (short unsigned int) D.22749;
      D.22751 = (int) D.22750;
      D.22752 = D.22751 | 1703673856;
      D.22753 = (unsigned int) D.22752;
      D.22763 = D.22753 >> 24;
      D.22764 = D.22762 | D.22763;
      MEM[(guint32 *)code] = D.22764;
      code = code + 4;
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22674 = (int) D.22673;
      D.22765 = D.22674 | 1636564992;
      D.22766 = (unsigned int) D.22765;
      D.22767 = D.22766 << 24;
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22678 = (unsigned int) D.22673;
      D.22768 = D.22678 & 7536640;
      D.22769 = D.22768 | 9175040;
      D.22770 = D.22769 >> 8;
      D.22771 = D.22767 | D.22770;
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22678 = (unsigned int) D.22673;
      D.22683 = D.22678 & 65280;
      D.22684 = D.22683 << 8;
      D.22772 = D.22771 | D.22684;
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22674 = (int) D.22673;
      D.22765 = D.22674 | 1636564992;
      D.22766 = (unsigned int) D.22765;
      D.22773 = D.22766 >> 24;
      D.22774 = D.22772 | D.22773;
      MEM[(guint32 *)code] = D.22774;
      code = code + 4;
      goto <D.22969>;
      <D.22968>:
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22776 = mrgctx.8 >> 48;
      D.22777 = (short unsigned int) D.22776;
      D.22778 = (int) D.22777;
      D.22779 = D.22778 | 1031798784;
      D.22780 = (unsigned int) D.22779;
      D.22781 = D.22780 << 24;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22776 = mrgctx.8 >> 48;
      D.22777 = (short unsigned int) D.22776;
      D.22782 = (unsigned int) D.22777;
      D.22783 = D.22782 & 8323072;
      D.22784 = D.22783 | 8388608;
      D.22785 = D.22784 >> 8;
      D.22786 = D.22781 | D.22785;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22776 = mrgctx.8 >> 48;
      D.22777 = (short unsigned int) D.22776;
      D.22782 = (unsigned int) D.22777;
      D.22787 = D.22782 & 65280;
      D.22788 = D.22787 << 8;
      D.22789 = D.22786 | D.22788;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22776 = mrgctx.8 >> 48;
      D.22777 = (short unsigned int) D.22776;
      D.22778 = (int) D.22777;
      D.22779 = D.22778 | 1031798784;
      D.22780 = (unsigned int) D.22779;
      D.22790 = D.22780 >> 24;
      D.22791 = D.22789 | D.22790;
      MEM[(guint32 *)code] = D.22791;
      code = code + 4;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22792 = mrgctx.8 >> 32;
      D.22793 = (short unsigned int) D.22792;
      D.22794 = (int) D.22793;
      D.22795 = D.22794 | 1636564992;
      D.22796 = (unsigned int) D.22795;
      D.22797 = D.22796 << 24;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22792 = mrgctx.8 >> 32;
      D.22793 = (short unsigned int) D.22792;
      D.22798 = (unsigned int) D.22793;
      D.22799 = D.22798 & 7536640;
      D.22800 = D.22799 | 9175040;
      D.22801 = D.22800 >> 8;
      D.22802 = D.22797 | D.22801;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22792 = mrgctx.8 >> 32;
      D.22793 = (short unsigned int) D.22792;
      D.22798 = (unsigned int) D.22793;
      D.22803 = D.22798 & 65280;
      D.22804 = D.22803 << 8;
      D.22805 = D.22802 | D.22804;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22792 = mrgctx.8 >> 32;
      D.22793 = (short unsigned int) D.22792;
      D.22794 = (int) D.22793;
      D.22795 = D.22794 | 1636564992;
      D.22796 = (unsigned int) D.22795;
      D.22806 = D.22796 >> 24;
      D.22807 = D.22805 | D.22806;
      MEM[(guint32 *)code] = D.22807;
      code = code + 4;
      MEM[(guint32 *)code] = 3322383481;
      code = code + 4;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22749 = mrgctx.8 >> 16;
      D.22750 = (short unsigned int) D.22749;
      D.22751 = (int) D.22750;
      D.22752 = D.22751 | 1703673856;
      D.22753 = (unsigned int) D.22752;
      D.22754 = D.22753 << 24;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22749 = mrgctx.8 >> 16;
      D.22750 = (short unsigned int) D.22749;
      D.22755 = (unsigned int) D.22750;
      D.22756 = D.22755 & 7536640;
      D.22757 = D.22756 | 9175040;
      D.22758 = D.22757 >> 8;
      D.22759 = D.22754 | D.22758;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22749 = mrgctx.8 >> 16;
      D.22750 = (short unsigned int) D.22749;
      D.22755 = (unsigned int) D.22750;
      D.22760 = D.22755 & 65280;
      D.22761 = D.22760 << 8;
      D.22762 = D.22759 | D.22761;
      mrgctx.8 = (long unsigned int) mrgctx;
      D.22749 = mrgctx.8 >> 16;
      D.22750 = (short unsigned int) D.22749;
      D.22751 = (int) D.22750;
      D.22752 = D.22751 | 1703673856;
      D.22753 = (unsigned int) D.22752;
      D.22763 = D.22753 >> 24;
      D.22764 = D.22762 | D.22763;
      MEM[(guint32 *)code] = D.22764;
      code = code + 4;
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22674 = (int) D.22673;
      D.22765 = D.22674 | 1636564992;
      D.22766 = (unsigned int) D.22765;
      D.22767 = D.22766 << 24;
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22678 = (unsigned int) D.22673;
      D.22768 = D.22678 & 7536640;
      D.22769 = D.22768 | 9175040;
      D.22770 = D.22769 >> 8;
      D.22771 = D.22767 | D.22770;
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22678 = (unsigned int) D.22673;
      D.22683 = D.22678 & 65280;
      D.22684 = D.22683 << 8;
      D.22772 = D.22771 | D.22684;
      mrgctx.9 = (long int) mrgctx;
      D.22673 = (short unsigned int) mrgctx.9;
      D.22674 = (int) D.22673;
      D.22765 = D.22674 | 1636564992;
      D.22766 = (unsigned int) D.22765;
      D.22773 = D.22766 >> 24;
      D.22774 = D.22772 | D.22773;
      MEM[(guint32 *)code] = D.22774;
      code = code + 4;
      <D.22969>:
      <D.22966>:
      <D.22963>:
      MEM[(guint32 *)code] = 537165902;
      code = code + 4;
      <D.22851>:
      code.16 = (long int) code;
      start.17 = (long int) start;
      D.22972 = code.16 - start.17;
      D.22973 = (int) D.22972;
      mono_arch_flush_icache (start, D.22973);
      code.16 = (long int) code;
      start.17 = (long int) start;
      D.22972 = code.16 - start.17;
      D.22974 = (long int) size;
      D.22975 = D.22972 > D.22974;
      D.22976 = (long int) D.22975;
      D.22977 = __builtin_expect (D.22976, 0);
      if (D.22977 != 0) goto <D.22978>; else goto <D.22979>;
      <D.22978>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "tramp-ppc.c", 149, "(code - start) <= size");
      <D.22979>:
      D.22980 = start;
      return D.22980;
    }
  finally
    {
      imm_buf = {CLOBBER};
    }
}


mono_arch_patch_callsite (guint8 * method_start, guint8 * code_ptr, guint8 * addr)
{
  unsigned int D.22983;
  unsigned int D.22984;
  int D.22987;
  _Bool D.22988;
  long int D.22989;
  long int D.22990;
  guint32 * code;

  code = code_ptr;
  addr = mono_get_addr_from_ftnptr (addr);
  code = code + 18446744073709551612;
  D.22983 = *code;
  D.22984 = D.22983 >> 26;
  if (D.22984 == 18) goto <D.22985>; else goto <D.22986>;
  <D.22985>:
  ppc_patch (code, addr);
  mono_arch_flush_icache (code, 4);
  return;
  <D.22986>:
  D.22987 = mono_ppc_is_direct_call_sequence (code);
  D.22988 = D.22987 == 0;
  D.22989 = (long int) D.22988;
  D.22990 = __builtin_expect (D.22989, 0);
  if (D.22990 != 0) goto <D.22991>; else goto <D.22992>;
  <D.22991>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "tramp-ppc.c", 175, "mono_ppc_is_direct_call_sequence (code)");
  <D.22992>:
  ppc_patch (code, addr);
}


mono_arch_patch_plt_entry (guint8 * code, void * * got, mgreg_t * regs, guint8 * addr)
{
  unsigned int D.22994;
  _Bool D.22995;
  long int D.22996;
  long int D.22997;
  unsigned int D.23000;
  _Bool D.23001;
  long int D.23002;
  long int D.23003;
  unsigned int D.23006;
  unsigned int D.23007;
  mgreg_t * D.23010;
  long int D.23011;
  sizetype D.23012;
  guint8 * * D.23013;
  guint32 ins1;
  guint32 ins2;
  guint32 offset;

  ins1 = MEM[(guint32 *)code];
  D.22994 = ins1 >> 26;
  D.22995 = D.22994 != 15;
  D.22996 = (long int) D.22995;
  D.22997 = __builtin_expect (D.22996, 0);
  if (D.22997 != 0) goto <D.22998>; else goto <D.22999>;
  <D.22998>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "tramp-ppc.c", 189, "ins1 >> 26 == 15");
  <D.22999>:
  ins2 = MEM[(guint32 *)code + 4B];
  D.23000 = ins2 >> 26;
  D.23001 = D.23000 != 24;
  D.23002 = (long int) D.23001;
  D.23003 = __builtin_expect (D.23002, 0);
  if (D.23003 != 0) goto <D.23004>; else goto <D.23005>;
  <D.23004>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "tramp-ppc.c", 191, "ins2 >> 26 == 24");
  <D.23005>:
  D.23006 = ins1 << 16;
  D.23007 = ins2 & 65535;
  offset = D.23006 | D.23007;
  if (got == 0B) goto <D.23008>; else goto <D.23009>;
  <D.23008>:
  D.23010 = regs + 240;
  D.23011 = *D.23010;
  got = (void * *) D.23011;
  <D.23009>:
  D.23012 = (sizetype) offset;
  D.23013 = got + D.23012;
  *D.23013 = addr;
}


mono_arch_nullify_class_init_trampoline (guint8 * code, mgreg_t * regs)
{
  void * D.23014;

  D.23014 = mini_get_nullified_class_init_trampoline ();
  mono_arch_patch_callsite (0B, code, D.23014);
}


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

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


mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, struct MonoTrampInfo * * info, gboolean aot)
{
  int D.23016;
  int D.23017;
  short unsigned int D.23018;
  int D.23019;
  int D.23020;
  unsigned int D.23021;
  unsigned int D.23022;
  unsigned int D.23023;
  unsigned int D.23024;
  unsigned int D.23025;
  unsigned int D.23026;
  unsigned int D.23027;
  unsigned int D.23028;
  unsigned int D.23029;
  unsigned int D.23030;
  unsigned int offset.18;
  unsigned int D.23032;
  int D.23033;
  unsigned int D.23034;
  unsigned int __o.19;
  unsigned int D.23036;
  unsigned int D.23037;
  unsigned int D.23038;
  unsigned int D.23039;
  unsigned int D.23040;
  unsigned int D.23041;
  unsigned int D.23042;
  unsigned int D.23043;
  unsigned int D.23044;
  unsigned int D.23045;
  unsigned int D.23046;
  unsigned int D.23047;
  unsigned int D.23048;
  unsigned int __o.20;
  unsigned int D.23050;
  unsigned int D.23051;
  unsigned int offset.21;
  unsigned int D.23053;
  unsigned int D.23054;
  unsigned int D.23055;
  unsigned int D.23056;
  unsigned int D.23057;
  unsigned int D.23058;
  unsigned int D.23059;
  unsigned int D.23060;
  unsigned int D.23061;
  unsigned int D.23062;
  unsigned int D.23063;
  unsigned int D.23064;
  unsigned int D.23065;
  long unsigned int mono_get_lmf_addr.22;
  long unsigned int D.23070;
  short unsigned int D.23071;
  int D.23072;
  int D.23073;
  unsigned int D.23074;
  unsigned int D.23075;
  unsigned 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;
  long unsigned int D.23086;
  short unsigned int D.23087;
  int D.23088;
  int D.23089;
  unsigned int D.23090;
  unsigned int D.23091;
  unsigned 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;
  long unsigned int D.23102;
  short unsigned int D.23103;
  int D.23104;
  int D.23105;
  unsigned int D.23106;
  unsigned int D.23107;
  unsigned int D.23108;
  unsigned int D.23109;
  unsigned int D.23110;
  unsigned int D.23111;
  unsigned int D.23112;
  unsigned int D.23113;
  unsigned int D.23114;
  unsigned int D.23115;
  unsigned int D.23116;
  unsigned int D.23117;
  long int mono_get_lmf_addr.23;
  short unsigned int D.23119;
  int D.23120;
  int D.23121;
  unsigned int D.23122;
  unsigned int D.23123;
  unsigned int D.23124;
  unsigned int D.23125;
  unsigned int D.23126;
  unsigned 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;
  gchar * D.23157;
  long unsigned int tramp_handler.24;
  long unsigned int D.23160;
  short unsigned int D.23161;
  int D.23162;
  int D.23163;
  unsigned int D.23164;
  unsigned int D.23165;
  unsigned int D.23166;
  unsigned int D.23167;
  unsigned int D.23168;
  unsigned int D.23169;
  unsigned int D.23170;
  unsigned int D.23171;
  unsigned int D.23172;
  unsigned int D.23173;
  unsigned int D.23174;
  unsigned int D.23175;
  long unsigned int D.23176;
  short unsigned int D.23177;
  int D.23178;
  int D.23179;
  unsigned int D.23180;
  unsigned int D.23181;
  unsigned int D.23182;
  unsigned int D.23183;
  unsigned int D.23184;
  unsigned int D.23185;
  unsigned int D.23186;
  unsigned int D.23187;
  unsigned int D.23188;
  unsigned int D.23189;
  unsigned int D.23190;
  unsigned int D.23191;
  long unsigned int D.23192;
  short unsigned int D.23193;
  int D.23194;
  int D.23195;
  unsigned int D.23196;
  unsigned int D.23197;
  unsigned int D.23198;
  unsigned int D.23199;
  unsigned int D.23200;
  unsigned int D.23201;
  unsigned int D.23202;
  unsigned int D.23203;
  unsigned int D.23204;
  unsigned int D.23205;
  unsigned int D.23206;
  unsigned int D.23207;
  long int tramp_handler.25;
  short unsigned int D.23209;
  int D.23210;
  int D.23211;
  unsigned int D.23212;
  unsigned int D.23213;
  unsigned int D.23214;
  unsigned int D.23215;
  unsigned int D.23216;
  unsigned int D.23217;
  unsigned int D.23218;
  unsigned int D.23219;
  unsigned int D.23220;
  unsigned int D.23221;
  unsigned int D.23222;
  unsigned int D.23223;
  unsigned int D.23224;
  int D.23235;
  unsigned int D.23236;
  unsigned int __o.26;
  unsigned int D.23238;
  unsigned int D.23239;
  unsigned int D.23240;
  unsigned int D.23241;
  unsigned int D.23242;
  unsigned int D.23243;
  unsigned int D.23244;
  unsigned int D.23245;
  unsigned int D.23246;
  unsigned int D.23247;
  unsigned int D.23248;
  unsigned int D.23249;
  unsigned int D.23250;
  unsigned int __o.27;
  unsigned int D.23252;
  int D.23253;
  int D.23254;
  long unsigned int D.23255;
  short unsigned int D.23256;
  short unsigned int D.23257;
  short unsigned int D.23258;
  int D.23259;
  int D.23260;
  unsigned int D.23261;
  unsigned int D.23262;
  unsigned int D.23263;
  unsigned int D.23264;
  unsigned int D.23265;
  unsigned int D.23266;
  unsigned int D.23267;
  unsigned int D.23268;
  unsigned int D.23269;
  unsigned int D.23270;
  int D.23271;
  int D.23272;
  unsigned int D.23273;
  unsigned int D.23274;
  unsigned int D.23275;
  unsigned int D.23276;
  unsigned int D.23277;
  unsigned int D.23278;
  unsigned int D.23279;
  unsigned int D.23280;
  unsigned int D.23281;
  unsigned int D.23282;
  unsigned int D.23283;
  unsigned int D.23284;
  unsigned int D.23285;
  unsigned int D.23286;
  unsigned int D.23287;
  unsigned int D.23288;
  unsigned int D.23289;
  unsigned int D.23290;
  unsigned int D.23291;
  unsigned int D.23297;
  unsigned int D.23298;
  unsigned int D.23299;
  unsigned int D.23300;
  unsigned int D.23301;
  unsigned int D.23302;
  long int code.28;
  long int buf.29;
  long int D.23312;
  int D.23313;
  long int D.23314;
  _Bool D.23315;
  long int D.23316;
  long int D.23317;
  unsigned int D.23322;
  struct MonoJumpInfo * ji.30;
  struct MonoTrampInfo * D.23324;
  guchar * D.23325;
  char * tramp_name;
  guint8 * buf;
  guint8 * code;
  int i;
  int offset;
  const void * tramp_handler;
  int size;
  struct GSList * unwind_ops;
  struct MonoJumpInfo * ji;

  try
    {
      code = 0B;
      size = 800;
      unwind_ops = 0B;
      ji = 0B;
      buf = mono_global_codeman_reserve (size);
      code = buf;
      MEM[(guint32 *)code] = 4059832824;
      code = code + 4;
      offset = 640;
      i = 14;
      goto <D.22377>;
      <D.22376>:
      D.23016 = i << 21;
      D.23017 = D.23016 | -671023104;
      D.23018 = (short unsigned int) offset;
      D.23019 = (int) D.23018;
      D.23020 = D.23017 | D.23019;
      D.23021 = (unsigned int) D.23020;
      D.23022 = D.23021 << 24;
      D.23016 = i << 21;
      D.23017 = D.23016 | -671023104;
      D.23018 = (short unsigned int) offset;
      D.23019 = (int) D.23018;
      D.23020 = D.23017 | D.23019;
      D.23021 = (unsigned int) D.23020;
      D.23023 = D.23021 & 16711680;
      D.23024 = D.23023 >> 8;
      D.23025 = D.23022 | D.23024;
      D.23016 = i << 21;
      D.23017 = D.23016 | -671023104;
      D.23018 = (short unsigned int) offset;
      D.23019 = (int) D.23018;
      D.23020 = D.23017 | D.23019;
      D.23021 = (unsigned int) D.23020;
      D.23026 = D.23021 & 65280;
      D.23027 = D.23026 << 8;
      D.23028 = D.23025 | D.23027;
      D.23016 = i << 21;
      D.23017 = D.23016 | -671023104;
      D.23018 = (short unsigned int) offset;
      D.23019 = (int) D.23018;
      D.23020 = D.23017 | D.23019;
      D.23021 = (unsigned int) D.23020;
      D.23029 = D.23021 >> 24;
      D.23030 = D.23028 | D.23029;
      MEM[(guint32 *)code] = D.23030;
      code = code + 4;
      offset.18 = (unsigned int) offset;
      D.23032 = offset.18 + 8;
      offset = (int) D.23032;
      i = i + 1;
      <D.22377>:
      if (i <= 31) goto <D.22376>; else goto <D.22378>;
      <D.22378>:
      offset = 488;
      {
        int __i;
        int __o;

        __o = offset;
        __i = 13;
        goto <D.22382>;
        <D.22381>:
        D.23033 = __i << 21;
        D.23034 = (unsigned int) D.23033;
        __o.19 = (unsigned int) __o;
        D.23036 = __o.19 & 65532;
        D.23037 = D.23034 | D.23036;
        D.23038 = D.23037 | 4160815104;
        D.23039 = D.23038 << 24;
        D.23033 = __i << 21;
        D.23034 = (unsigned int) D.23033;
        __o.19 = (unsigned int) __o;
        D.23036 = __o.19 & 65532;
        D.23037 = D.23034 | D.23036;
        D.23040 = D.23037 & 16646144;
        D.23041 = D.23040 | 65536;
        D.23042 = D.23041 >> 8;
        D.23043 = D.23039 | D.23042;
        D.23033 = __i << 21;
        D.23034 = (unsigned int) D.23033;
        __o.19 = (unsigned int) __o;
        D.23036 = __o.19 & 65532;
        D.23037 = D.23034 | D.23036;
        D.23044 = D.23037 & 65280;
        D.23045 = D.23044 << 8;
        D.23046 = D.23043 | D.23045;
        D.23033 = __i << 21;
        D.23034 = (unsigned int) D.23033;
        __o.19 = (unsigned int) __o;
        D.23036 = __o.19 & 65532;
        D.23037 = D.23034 | D.23036;
        D.23038 = D.23037 | 4160815104;
        D.23047 = D.23038 >> 24;
        D.23048 = D.23046 | D.23047;
        MEM[(guint32 *)code] = D.23048;
        code = code + 4;
        __o.20 = (unsigned int) __o;
        D.23050 = __o.20 + 8;
        __o = (int) D.23050;
        __i = __i + 1;
        <D.22382>:
        if (__i <= 31) goto <D.22381>; else goto <D.22383>;
        <D.22383>:
      }
      offset = 328;
      i = 0;
      goto <D.22385>;
      <D.22384>:
      D.23016 = i << 21;
      D.23017 = D.23016 | -671023104;
      D.23018 = (short unsigned int) offset;
      D.23019 = (int) D.23018;
      D.23020 = D.23017 | D.23019;
      D.23021 = (unsigned int) D.23020;
      D.23022 = D.23021 << 24;
      D.23016 = i << 21;
      D.23017 = D.23016 | -671023104;
      D.23018 = (short unsigned int) offset;
      D.23019 = (int) D.23018;
      D.23020 = D.23017 | D.23019;
      D.23021 = (unsigned int) D.23020;
      D.23023 = D.23021 & 16711680;
      D.23024 = D.23023 >> 8;
      D.23025 = D.23022 | D.23024;
      D.23016 = i << 21;
      D.23017 = D.23016 | -671023104;
      D.23018 = (short unsigned int) offset;
      D.23019 = (int) D.23018;
      D.23020 = D.23017 | D.23019;
      D.23021 = (unsigned int) D.23020;
      D.23026 = D.23021 & 65280;
      D.23027 = D.23026 << 8;
      D.23028 = D.23025 | D.23027;
      D.23016 = i << 21;
      D.23017 = D.23016 | -671023104;
      D.23018 = (short unsigned int) offset;
      D.23019 = (int) D.23018;
      D.23020 = D.23017 | D.23019;
      D.23021 = (unsigned int) D.23020;
      D.23029 = D.23021 >> 24;
      D.23030 = D.23028 | D.23029;
      MEM[(guint32 *)code] = D.23030;
      code = code + 4;
      offset.18 = (unsigned int) offset;
      D.23032 = offset.18 + 8;
      offset = (int) D.23032;
      i = i + 1;
      <D.22385>:
      if (i <= 13) goto <D.22384>; else goto <D.22386>;
      <D.22386>:
      offset = 80;
      i = 0;
      goto <D.22388>;
      <D.22387>:
      D.23016 = i << 21;
      D.23051 = (unsigned int) D.23016;
      offset.21 = (unsigned int) offset;
      D.23053 = offset.21 & 65532;
      D.23054 = D.23051 | D.23053;
      D.23055 = D.23054 | 4160815104;
      D.23056 = D.23055 << 24;
      D.23016 = i << 21;
      D.23051 = (unsigned int) D.23016;
      offset.21 = (unsigned int) offset;
      D.23053 = offset.21 & 65532;
      D.23054 = D.23051 | D.23053;
      D.23057 = D.23054 & 16646144;
      D.23058 = D.23057 | 65536;
      D.23059 = D.23058 >> 8;
      D.23060 = D.23056 | D.23059;
      D.23016 = i << 21;
      D.23051 = (unsigned int) D.23016;
      offset.21 = (unsigned int) offset;
      D.23053 = offset.21 & 65532;
      D.23054 = D.23051 | D.23053;
      D.23061 = D.23054 & 65280;
      D.23062 = D.23061 << 8;
      D.23063 = D.23060 | D.23062;
      D.23016 = i << 21;
      D.23051 = (unsigned int) D.23016;
      offset.21 = (unsigned int) offset;
      D.23053 = offset.21 & 65532;
      D.23054 = D.23051 | D.23053;
      D.23055 = D.23054 | 4160815104;
      D.23064 = D.23055 >> 24;
      D.23065 = D.23063 | D.23064;
      MEM[(guint32 *)code] = D.23065;
      code = code + 4;
      offset.18 = (unsigned int) offset;
      D.23032 = offset.18 + 8;
      offset = (int) D.23032;
      i = i + 1;
      <D.22388>:
      if (i <= 30) goto <D.22387>; else goto <D.22389>;
      <D.22389>:
      MEM[(guint32 *)code] = 2785151100;
      code = code + 4;
      MEM[(guint32 *)code] = 537068024;
      code = code + 4;
      if (aot != 0) goto <D.23066>; else goto <D.23067>;
      <D.23066>:
      code = mono_arch_emit_load_aotconst (buf, code, &ji, 32, "mono_get_lmf_addr");
      MEM[(guint32 *)code] = 134237160;
      code = code + 4;
      MEM[(guint32 *)code] = 27625;
      code = code + 4;
      MEM[(guint32 *)code] = 2785241213;
      code = code + 4;
      MEM[(guint32 *)code] = 553680974;
      code = code + 4;
      goto <D.23068>;
      <D.23067>:
      mono_get_lmf_addr.22 = (long unsigned int) mono_get_lmf_addr;
      D.23070 = mono_get_lmf_addr.22 >> 48;
      D.23071 = (short unsigned int) D.23070;
      D.23072 = (int) D.23071;
      D.23073 = D.23072 | 1029701632;
      D.23074 = (unsigned int) D.23073;
      D.23075 = D.23074 << 24;
      mono_get_lmf_addr.22 = (long unsigned int) mono_get_lmf_addr;
      D.23070 = mono_get_lmf_addr.22 >> 48;
      D.23071 = (short unsigned int) D.23070;
      D.23076 = (unsigned int) D.23071;
      D.23077 = D.23076 & 65280;
      D.23078 = D.23077 << 8;
      D.23079 = D.23075 | D.23078;
      mono_get_lmf_addr.22 = (long unsigned int) mono_get_lmf_addr;
      D.23070 = mono_get_lmf_addr.22 >> 48;
      D.23071 = (short unsigned int) D.23070;
      D.23076 = (unsigned int) D.23071;
      D.23080 = D.23076 & 10420224;
      D.23081 = D.23080 | 6291456;
      D.23082 = D.23081 >> 8;
      mono_get_lmf_addr.22 = (long unsigned int) mono_get_lmf_addr;
      D.23070 = mono_get_lmf_addr.22 >> 48;
      D.23071 = (short unsigned int) D.23070;
      D.23072 = (int) D.23071;
      D.23073 = D.23072 | 1029701632;
      D.23074 = (unsigned int) D.23073;
      D.23083 = D.23074 >> 24;
      D.23084 = D.23082 | D.23083;
      D.23085 = D.23079 | D.23084;
      MEM[(guint32 *)code] = D.23085;
      code = code + 4;
      mono_get_lmf_addr.22 = (long unsigned int) mono_get_lmf_addr;
      D.23086 = mono_get_lmf_addr.22 >> 32;
      D.23087 = (short unsigned int) D.23086;
      D.23088 = (int) D.23087;
      D.23089 = D.23088 | 1634402304;
      D.23090 = (unsigned int) D.23089;
      D.23091 = D.23090 << 24;
      mono_get_lmf_addr.22 = (long unsigned int) mono_get_lmf_addr;
      D.23086 = mono_get_lmf_addr.22 >> 32;
      D.23087 = (short unsigned int) D.23086;
      D.23092 = (unsigned int) D.23087;
      D.23093 = D.23092 & 65280;
      D.23094 = D.23093 << 8;
      D.23095 = D.23091 | D.23094;
      mono_get_lmf_addr.22 = (long unsigned int) mono_get_lmf_addr;
      D.23086 = mono_get_lmf_addr.22 >> 32;
      D.23087 = (short unsigned int) D.23086;
      D.23092 = (unsigned int) D.23087;
      D.23096 = D.23092 & 9699328;
      D.23097 = D.23096 | 7012352;
      D.23098 = D.23097 >> 8;
      mono_get_lmf_addr.22 = (long unsigned int) mono_get_lmf_addr;
      D.23086 = mono_get_lmf_addr.22 >> 32;
      D.23087 = (short unsigned int) D.23086;
      D.23088 = (int) D.23087;
      D.23089 = D.23088 | 1634402304;
      D.23090 = (unsigned int) D.23089;
      D.23099 = D.23090 >> 24;
      D.23100 = D.23098 | D.23099;
      D.23101 = D.23095 | D.23100;
      MEM[(guint32 *)code] = D.23101;
      code = code + 4;
      MEM[(guint32 *)code] = 3322375033;
      code = code + 4;
      mono_get_lmf_addr.22 = (long unsigned int) mono_get_lmf_addr;
      D.23102 = mono_get_lmf_addr.22 >> 16;
      D.23103 = (short unsigned int) D.23102;
      D.23104 = (int) D.23103;
      D.23105 = D.23104 | 1701511168;
      D.23106 = (unsigned int) D.23105;
      D.23107 = D.23106 << 24;
      mono_get_lmf_addr.22 = (long unsigned int) mono_get_lmf_addr;
      D.23102 = mono_get_lmf_addr.22 >> 16;
      D.23103 = (short unsigned int) D.23102;
      D.23108 = (unsigned int) D.23103;
      D.23109 = D.23108 & 65280;
      D.23110 = D.23109 << 8;
      D.23111 = D.23107 | D.23110;
      mono_get_lmf_addr.22 = (long unsigned int) mono_get_lmf_addr;
      D.23102 = mono_get_lmf_addr.22 >> 16;
      D.23103 = (short unsigned int) D.23102;
      D.23108 = (unsigned int) D.23103;
      D.23112 = D.23108 & 9699328;
      D.23113 = D.23112 | 7012352;
      D.23114 = D.23113 >> 8;
      mono_get_lmf_addr.22 = (long unsigned int) mono_get_lmf_addr;
      D.23102 = mono_get_lmf_addr.22 >> 16;
      D.23103 = (short unsigned int) D.23102;
      D.23104 = (int) D.23103;
      D.23105 = D.23104 | 1701511168;
      D.23106 = (unsigned int) D.23105;
      D.23115 = D.23106 >> 24;
      D.23116 = D.23114 | D.23115;
      D.23117 = D.23111 | D.23116;
      MEM[(guint32 *)code] = D.23117;
      code = code + 4;
      mono_get_lmf_addr.23 = (long int) mono_get_lmf_addr;
      D.23119 = (short unsigned int) mono_get_lmf_addr.23;
      D.23120 = (int) D.23119;
      D.23121 = D.23120 | 1634402304;
      D.23122 = (unsigned int) D.23121;
      D.23123 = D.23122 << 24;
      mono_get_lmf_addr.23 = (long int) mono_get_lmf_addr;
      D.23119 = (short unsigned int) mono_get_lmf_addr.23;
      D.23124 = (unsigned int) D.23119;
      D.23125 = D.23124 & 65280;
      D.23126 = D.23125 << 8;
      D.23127 = D.23123 | D.23126;
      mono_get_lmf_addr.23 = (long int) mono_get_lmf_addr;
      D.23119 = (short unsigned int) mono_get_lmf_addr.23;
      D.23124 = (unsigned int) D.23119;
      D.23128 = D.23124 & 9699328;
      D.23129 = D.23128 | 7012352;
      D.23130 = D.23129 >> 8;
      mono_get_lmf_addr.23 = (long int) mono_get_lmf_addr;
      D.23119 = (short unsigned int) mono_get_lmf_addr.23;
      D.23120 = (int) D.23119;
      D.23121 = D.23120 | 1634402304;
      D.23122 = (unsigned int) D.23121;
      D.23131 = D.23122 >> 24;
      D.23132 = D.23130 | D.23131;
      D.23133 = D.23127 | D.23132;
      MEM[(guint32 *)code] = D.23133;
      code = code + 4;
      MEM[(guint32 *)code] = 134237160;
      code = code + 4;
      MEM[(guint32 *)code] = 3048;
      code = code + 4;
      MEM[(guint32 *)code] = 2785216636;
      code = code + 4;
      MEM[(guint32 *)code] = 553680974;
      code = code + 4;
      <D.23068>:
      MEM[(guint32 *)code] = 3087098169;
      code = code + 4;
      MEM[(guint32 *)code] = 134245368;
      code = code + 4;
      MEM[(guint32 *)code] = 1000;
      code = code + 4;
      MEM[(guint32 *)code] = 3064;
      code = code + 4;
      MEM[(guint32 *)code] = 25593;
      code = code + 4;
      if (tramp_type <= 1) goto <D.23134>; else goto <D.23135>;
      <D.23134>:
      MEM[(guint32 *)code] = 1342177768;
      code = code + 4;
      MEM[(guint32 *)code] = 268438520;
      code = code + 4;
      goto <D.23136>;
      <D.23135>:
      if (1 != 0) goto <D.23137>; else goto <D.23138>;
      <D.23137>:
      MEM[(guint32 *)code] = 56;
      code = code + 4;
      goto <D.23139>;
      <D.23138>:
      if (1 != 0) goto <D.23140>; else goto <D.23141>;
      <D.23140>:
      MEM[(guint32 *)code] = 60;
      code = code + 4;
      MEM[(guint32 *)code] = 96;
      code = code + 4;
      goto <D.23142>;
      <D.23141>:
      if (1 != 0) goto <D.23143>; else goto <D.23144>;
      <D.23143>:
      MEM[(guint32 *)code] = 56;
      code = code + 4;
      MEM[(guint32 *)code] = 3322347640;
      code = code + 4;
      MEM[(guint32 *)code] = 100;
      code = code + 4;
      MEM[(guint32 *)code] = 96;
      code = code + 4;
      goto <D.23145>;
      <D.23144>:
      MEM[(guint32 *)code] = 60;
      code = code + 4;
      MEM[(guint32 *)code] = 96;
      code = code + 4;
      MEM[(guint32 *)code] = 3322347640;
      code = code + 4;
      MEM[(guint32 *)code] = 100;
      code = code + 4;
      MEM[(guint32 *)code] = 96;
      code = code + 4;
      <D.23145>:
      <D.23142>:
      <D.23139>:
      MEM[(guint32 *)code] = 268438520;
      code = code + 4;
      <D.23136>:
      MEM[(guint32 *)code] = 268632376;
      code = code + 4;
      MEM[(guint32 *)code] = 402656248;
      code = code + 4;
      if (tramp_type == 1) goto <D.23146>; else goto <D.23147>;
      <D.23146>:
      MEM[(guint32 *)code] = 56;
      code = code + 4;
      goto <D.23148>;
      <D.23147>:
      MEM[(guint32 *)code] = 537068008;
      code = code + 4;
      <D.23148>:
      MEM[(guint32 *)code] = 536873976;
      code = code + 4;
      MEM[(guint32 *)code] = 1342202168;
      code = code + 4;
      if (tramp_type == 1) goto <D.23149>; else goto <D.23150>;
      <D.23149>:
      MEM[(guint32 *)code] = 32824;
      code = code + 4;
      goto <D.23151>;
      <D.23150>:
      MEM[(guint32 *)code] = 537100776;
      code = code + 4;
      <D.23151>:
      if (tramp_type == 3) goto <D.23152>; else goto <D.23153>;
      <D.23152>:
      MEM[(guint32 *)code] = 2952831464;
      code = code + 4;
      goto <D.23154>;
      <D.23153>:
      MEM[(guint32 *)code] = 1342218728;
      code = code + 4;
      <D.23154>:
      if (aot != 0) goto <D.23155>; else goto <D.23156>;
      <D.23155>:
      D.23157 = monoeg_g_strdup_printf ("trampoline_func_%d", tramp_type);
      code = mono_arch_emit_load_aotconst (buf, code, &ji, 32, D.23157);
      MEM[(guint32 *)code] = 134237160;
      code = code + 4;
      MEM[(guint32 *)code] = 27625;
      code = code + 4;
      MEM[(guint32 *)code] = 2785241213;
      code = code + 4;
      MEM[(guint32 *)code] = 553680974;
      code = code + 4;
      goto <D.23158>;
      <D.23156>:
      tramp_handler = mono_get_trampoline_func (tramp_type);
      tramp_handler.24 = (long unsigned int) tramp_handler;
      D.23160 = tramp_handler.24 >> 48;
      D.23161 = (short unsigned int) D.23160;
      D.23162 = (int) D.23161;
      D.23163 = D.23162 | 1029701632;
      D.23164 = (unsigned int) D.23163;
      D.23165 = D.23164 << 24;
      tramp_handler.24 = (long unsigned int) tramp_handler;
      D.23160 = tramp_handler.24 >> 48;
      D.23161 = (short unsigned int) D.23160;
      D.23166 = (unsigned int) D.23161;
      D.23167 = D.23166 & 10420224;
      D.23168 = D.23167 | 6291456;
      D.23169 = D.23168 >> 8;
      D.23170 = D.23165 | D.23169;
      tramp_handler.24 = (long unsigned int) tramp_handler;
      D.23160 = tramp_handler.24 >> 48;
      D.23161 = (short unsigned int) D.23160;
      D.23166 = (unsigned int) D.23161;
      D.23171 = D.23166 & 65280;
      D.23172 = D.23171 << 8;
      D.23173 = D.23170 | D.23172;
      tramp_handler.24 = (long unsigned int) tramp_handler;
      D.23160 = tramp_handler.24 >> 48;
      D.23161 = (short unsigned int) D.23160;
      D.23162 = (int) D.23161;
      D.23163 = D.23162 | 1029701632;
      D.23164 = (unsigned int) D.23163;
      D.23174 = D.23164 >> 24;
      D.23175 = D.23173 | D.23174;
      MEM[(guint32 *)code] = D.23175;
      code = code + 4;
      tramp_handler.24 = (long unsigned int) tramp_handler;
      D.23176 = tramp_handler.24 >> 32;
      D.23177 = (short unsigned int) D.23176;
      D.23178 = (int) D.23177;
      D.23179 = D.23178 | 1634402304;
      D.23180 = (unsigned int) D.23179;
      D.23181 = D.23180 << 24;
      tramp_handler.24 = (long unsigned int) tramp_handler;
      D.23176 = tramp_handler.24 >> 32;
      D.23177 = (short unsigned int) D.23176;
      D.23182 = (unsigned int) D.23177;
      D.23183 = D.23182 & 9699328;
      D.23184 = D.23183 | 7012352;
      D.23185 = D.23184 >> 8;
      D.23186 = D.23181 | D.23185;
      tramp_handler.24 = (long unsigned int) tramp_handler;
      D.23176 = tramp_handler.24 >> 32;
      D.23177 = (short unsigned int) D.23176;
      D.23182 = (unsigned int) D.23177;
      D.23187 = D.23182 & 65280;
      D.23188 = D.23187 << 8;
      D.23189 = D.23186 | D.23188;
      tramp_handler.24 = (long unsigned int) tramp_handler;
      D.23176 = tramp_handler.24 >> 32;
      D.23177 = (short unsigned int) D.23176;
      D.23178 = (int) D.23177;
      D.23179 = D.23178 | 1634402304;
      D.23180 = (unsigned int) D.23179;
      D.23190 = D.23180 >> 24;
      D.23191 = D.23189 | D.23190;
      MEM[(guint32 *)code] = D.23191;
      code = code + 4;
      MEM[(guint32 *)code] = 3322375033;
      code = code + 4;
      tramp_handler.24 = (long unsigned int) tramp_handler;
      D.23192 = tramp_handler.24 >> 16;
      D.23193 = (short unsigned int) D.23192;
      D.23194 = (int) D.23193;
      D.23195 = D.23194 | 1701511168;
      D.23196 = (unsigned int) D.23195;
      D.23197 = D.23196 << 24;
      tramp_handler.24 = (long unsigned int) tramp_handler;
      D.23192 = tramp_handler.24 >> 16;
      D.23193 = (short unsigned int) D.23192;
      D.23198 = (unsigned int) D.23193;
      D.23199 = D.23198 & 9699328;
      D.23200 = D.23199 | 7012352;
      D.23201 = D.23200 >> 8;
      D.23202 = D.23197 | D.23201;
      tramp_handler.24 = (long unsigned int) tramp_handler;
      D.23192 = tramp_handler.24 >> 16;
      D.23193 = (short unsigned int) D.23192;
      D.23198 = (unsigned int) D.23193;
      D.23203 = D.23198 & 65280;
      D.23204 = D.23203 << 8;
      D.23205 = D.23202 | D.23204;
      tramp_handler.24 = (long unsigned int) tramp_handler;
      D.23192 = tramp_handler.24 >> 16;
      D.23193 = (short unsigned int) D.23192;
      D.23194 = (int) D.23193;
      D.23195 = D.23194 | 1701511168;
      D.23196 = (unsigned int) D.23195;
      D.23206 = D.23196 >> 24;
      D.23207 = D.23205 | D.23206;
      MEM[(guint32 *)code] = D.23207;
      code = code + 4;
      tramp_handler.25 = (long int) tramp_handler;
      D.23209 = (short unsigned int) tramp_handler.25;
      D.23210 = (int) D.23209;
      D.23211 = D.23210 | 1634402304;
      D.23212 = (unsigned int) D.23211;
      D.23213 = D.23212 << 24;
      tramp_handler.25 = (long int) tramp_handler;
      D.23209 = (short unsigned int) tramp_handler.25;
      D.23214 = (unsigned int) D.23209;
      D.23215 = D.23214 & 9699328;
      D.23216 = D.23215 | 7012352;
      D.23217 = D.23216 >> 8;
      D.23218 = D.23213 | D.23217;
      tramp_handler.25 = (long int) tramp_handler;
      D.23209 = (short unsigned int) tramp_handler.25;
      D.23214 = (unsigned int) D.23209;
      D.23219 = D.23214 & 65280;
      D.23220 = D.23219 << 8;
      D.23221 = D.23218 | D.23220;
      tramp_handler.25 = (long int) tramp_handler;
      D.23209 = (short unsigned int) tramp_handler.25;
      D.23210 = (int) D.23209;
      D.23211 = D.23210 | 1634402304;
      D.23212 = (unsigned int) D.23211;
      D.23222 = D.23212 >> 24;
      D.23223 = D.23221 | D.23222;
      MEM[(guint32 *)code] = D.23223;
      code = code + 4;
      MEM[(guint32 *)code] = 134237160;
      code = code + 4;
      MEM[(guint32 *)code] = 3048;
      code = code + 4;
      MEM[(guint32 *)code] = 2785216636;
      code = code + 4;
      MEM[(guint32 *)code] = 553680974;
      code = code + 4;
      <D.23158>:
      D.23224 = tramp_type + 4294967294;
      if (D.23224 > 1) goto <D.23225>; else goto <D.23226>;
      <D.23225>:
      if (tramp_type != 8) goto <D.23227>; else goto <D.23228>;
      <D.23227>:
      if (tramp_type != 4) goto <D.23229>; else goto <D.23230>;
      <D.23229>:
      if (tramp_type != 10) goto <D.23231>; else goto <D.23232>;
      <D.23231>:
      if (tramp_type != 11) goto <D.23233>; else goto <D.23234>;
      <D.23233>:
      MEM[(guint32 *)code] = 134235112;
      code = code + 4;
      MEM[(guint32 *)code] = 25576;
      code = code + 4;
      MEM[(guint32 *)code] = 2785241468;
      code = code + 4;
      <D.23234>:
      <D.23232>:
      <D.23230>:
      <D.23228>:
      <D.23226>:
      MEM[(guint32 *)code] = 3087098169;
      code = code + 4;
      MEM[(guint32 *)code] = 44008;
      code = code + 4;
      MEM[(guint32 *)code] = 134269928;
      code = code + 4;
      MEM[(guint32 *)code] = 42744;
      code = code + 4;
      {
        int __i;
        int __o;

        __o = 48;
        __i = 13;
        goto <D.22393>;
        <D.22392>:
        D.23235 = __i << 21;
        D.23236 = (unsigned int) D.23235;
        __o.26 = (unsigned int) __o;
        D.23238 = __o.26 & 65532;
        D.23239 = D.23236 | D.23238;
        D.23240 = D.23239 | 3893035008;
        D.23241 = D.23240 << 24;
        D.23235 = __i << 21;
        D.23236 = (unsigned int) D.23235;
        __o.26 = (unsigned int) __o;
        D.23238 = __o.26 & 65532;
        D.23239 = D.23236 | D.23238;
        D.23242 = D.23239 & 15990784;
        D.23243 = D.23242 | 720896;
        D.23244 = D.23243 >> 8;
        D.23245 = D.23241 | D.23244;
        D.23235 = __i << 21;
        D.23236 = (unsigned int) D.23235;
        __o.26 = (unsigned int) __o;
        D.23238 = __o.26 & 65532;
        D.23239 = D.23236 | D.23238;
        D.23246 = D.23239 & 65280;
        D.23247 = D.23246 << 8;
        D.23248 = D.23245 | D.23247;
        D.23235 = __i << 21;
        D.23236 = (unsigned int) D.23235;
        __o.26 = (unsigned int) __o;
        D.23238 = __o.26 & 65532;
        D.23239 = D.23236 | D.23238;
        D.23240 = D.23239 | 3893035008;
        D.23249 = D.23240 >> 24;
        D.23250 = D.23248 | D.23249;
        MEM[(guint32 *)code] = D.23250;
        code = code + 4;
        __o.27 = (unsigned int) __o;
        D.23252 = __o.27 + 8;
        __o = (int) D.23252;
        __i = __i + 1;
        <D.22393>:
        if (__i <= 31) goto <D.22392>; else goto <D.22394>;
        <D.22394>:
      }
      i = 14;
      goto <D.22396>;
      <D.22395>:
      D.23016 = i << 21;
      D.23253 = D.23016 | -938803200;
      D.23254 = i + -14;
      D.23255 = (long unsigned int) D.23254;
      D.23256 = (short unsigned int) D.23255;
      D.23257 = D.23256 + 25;
      D.23258 = D.23257 * 8;
      D.23259 = (int) D.23258;
      D.23260 = D.23253 | D.23259;
      D.23261 = (unsigned int) D.23260;
      D.23262 = D.23261 << 24;
      D.23016 = i << 21;
      D.23253 = D.23016 | -938803200;
      D.23254 = i + -14;
      D.23255 = (long unsigned int) D.23254;
      D.23256 = (short unsigned int) D.23255;
      D.23257 = D.23256 + 25;
      D.23258 = D.23257 * 8;
      D.23259 = (int) D.23258;
      D.23260 = D.23253 | D.23259;
      D.23261 = (unsigned int) D.23260;
      D.23263 = D.23261 & 16711680;
      D.23264 = D.23263 >> 8;
      D.23265 = D.23262 | D.23264;
      D.23016 = i << 21;
      D.23253 = D.23016 | -938803200;
      D.23254 = i + -14;
      D.23255 = (long unsigned int) D.23254;
      D.23256 = (short unsigned int) D.23255;
      D.23257 = D.23256 + 25;
      D.23258 = D.23257 * 8;
      D.23259 = (int) D.23258;
      D.23260 = D.23253 | D.23259;
      D.23261 = (unsigned int) D.23260;
      D.23266 = D.23261 & 65280;
      D.23267 = D.23266 << 8;
      D.23268 = D.23265 | D.23267;
      D.23016 = i << 21;
      D.23253 = D.23016 | -938803200;
      D.23254 = i + -14;
      D.23255 = (long unsigned int) D.23254;
      D.23256 = (short unsigned int) D.23255;
      D.23257 = D.23256 + 25;
      D.23258 = D.23257 * 8;
      D.23259 = (int) D.23258;
      D.23260 = D.23253 | D.23259;
      D.23261 = (unsigned int) D.23260;
      D.23269 = D.23261 >> 24;
      D.23270 = D.23268 | D.23269;
      MEM[(guint32 *)code] = D.23270;
      code = code + 4;
      i = i + 1;
      <D.22396>:
      if (i <= 31) goto <D.22395>; else goto <D.22397>;
      <D.22397>:
      offset = 328;
      i = 0;
      goto <D.22399>;
      <D.22398>:
      D.23016 = i << 21;
      D.23271 = D.23016 | -939458560;
      D.23018 = (short unsigned int) offset;
      D.23019 = (int) D.23018;
      D.23272 = D.23271 | D.23019;
      D.23273 = (unsigned int) D.23272;
      D.23274 = D.23273 << 24;
      D.23016 = i << 21;
      D.23271 = D.23016 | -939458560;
      D.23018 = (short unsigned int) offset;
      D.23019 = (int) D.23018;
      D.23272 = D.23271 | D.23019;
      D.23273 = (unsigned int) D.23272;
      D.23275 = D.23273 & 16711680;
      D.23276 = D.23275 >> 8;
      D.23277 = D.23274 | D.23276;
      D.23016 = i << 21;
      D.23271 = D.23016 | -939458560;
      D.23018 = (short unsigned int) offset;
      D.23019 = (int) D.23018;
      D.23272 = D.23271 | D.23019;
      D.23273 = (unsigned int) D.23272;
      D.23278 = D.23273 & 65280;
      D.23279 = D.23278 << 8;
      D.23280 = D.23277 | D.23279;
      D.23016 = i << 21;
      D.23271 = D.23016 | -939458560;
      D.23018 = (short unsigned int) offset;
      D.23019 = (int) D.23018;
      D.23272 = D.23271 | D.23019;
      D.23273 = (unsigned int) D.23272;
      D.23281 = D.23273 >> 24;
      D.23282 = D.23280 | D.23281;
      MEM[(guint32 *)code] = D.23282;
      code = code + 4;
      offset.18 = (unsigned int) offset;
      D.23032 = offset.18 + 8;
      offset = (int) D.23032;
      i = i + 1;
      <D.22399>:
      if (i <= 13) goto <D.22398>; else goto <D.22400>;
      <D.22400>:
      offset = 80;
      offset.21 = (unsigned int) offset;
      D.23053 = offset.21 & 65532;
      D.23283 = D.23053 | 3892379648;
      D.23284 = D.23283 << 24;
      offset.21 = (unsigned int) offset;
      D.23285 = offset.21 & 65280;
      D.23286 = D.23285 << 8;
      D.23287 = D.23284 | D.23286;
      offset.21 = (unsigned int) offset;
      D.23053 = offset.21 & 65532;
      D.23283 = D.23053 | 3892379648;
      D.23288 = D.23283 >> 24;
      D.23289 = D.23287 | D.23288;
      D.23290 = D.23289 | 256;
      MEM[(guint32 *)code] = D.23290;
      code = code + 4;
      offset.18 = (unsigned int) offset;
      D.23291 = offset.18 + 16;
      offset = (int) D.23291;
      i = 2;
      goto <D.22402>;
      <D.22401>:
      if (i != 2) goto <D.23294>; else goto <D.23295>;
      <D.23294>:
      if (i != 3) goto <D.23292>; else goto <D.23296>;
      <D.23296>:
      if (tramp_type != 4) goto <D.23292>; else goto <D.23293>;
      <D.23292>:
      D.23016 = i << 21;
      D.23051 = (unsigned int) D.23016;
      offset.21 = (unsigned int) offset;
      D.23053 = offset.21 & 65532;
      D.23054 = D.23051 | D.23053;
      D.23297 = D.23054 | 3892379648;
      D.23298 = D.23297 << 24;
      D.23016 = i << 21;
      D.23051 = (unsigned int) D.23016;
      offset.21 = (unsigned int) offset;
      D.23053 = offset.21 & 65532;
      D.23054 = D.23051 | D.23053;
      D.23057 = D.23054 & 16646144;
      D.23058 = D.23057 | 65536;
      D.23059 = D.23058 >> 8;
      D.23299 = D.23298 | D.23059;
      D.23016 = i << 21;
      D.23051 = (unsigned int) D.23016;
      offset.21 = (unsigned int) offset;
      D.23053 = offset.21 & 65532;
      D.23054 = D.23051 | D.23053;
      D.23061 = D.23054 & 65280;
      D.23062 = D.23061 << 8;
      D.23300 = D.23299 | D.23062;
      D.23016 = i << 21;
      D.23051 = (unsigned int) D.23016;
      offset.21 = (unsigned int) offset;
      D.23053 = offset.21 & 65532;
      D.23054 = D.23051 | D.23053;
      D.23297 = D.23054 | 3892379648;
      D.23301 = D.23297 >> 24;
      D.23302 = D.23300 | D.23301;
      MEM[(guint32 *)code] = D.23302;
      code = code + 4;
      <D.23293>:
      <D.23295>:
      offset.18 = (unsigned int) offset;
      D.23032 = offset.18 + 8;
      offset = (int) D.23032;
      i = i + 1;
      <D.22402>:
      if (i <= 12) goto <D.22401>; else goto <D.22403>;
      <D.22403>:
      MEM[(guint32 *)code] = 8680;
      code = code + 4;
      MEM[(guint32 *)code] = 268460521;
      code = code + 4;
      MEM[(guint32 *)code] = 2785241213;
      code = code + 4;
      D.23224 = tramp_type + 4294967294;
      if (D.23224 <= 1) goto <D.23303>; else goto <D.23306>;
      <D.23306>:
      if (tramp_type == 8) goto <D.23303>; else goto <D.23307>;
      <D.23307>:
      if (tramp_type == 4) goto <D.23303>; else goto <D.23308>;
      <D.23308>:
      if (tramp_type == 10) goto <D.23303>; else goto <D.23309>;
      <D.23309>:
      if (tramp_type == 11) goto <D.23303>; else goto <D.23304>;
      <D.23303>:
      MEM[(guint32 *)code] = 536903758;
      code = code + 4;
      goto <D.23305>;
      <D.23304>:
      MEM[(guint32 *)code] = 537165902;
      code = code + 4;
      <D.23305>:
      code.28 = (long int) code;
      buf.29 = (long int) buf;
      D.23312 = code.28 - buf.29;
      D.23313 = (int) D.23312;
      mono_arch_flush_icache (buf, D.23313);
      code.28 = (long int) code;
      buf.29 = (long int) buf;
      D.23312 = code.28 - buf.29;
      D.23314 = (long int) size;
      D.23315 = D.23312 > D.23314;
      D.23316 = (long int) D.23315;
      D.23317 = __builtin_expect (D.23316, 0);
      if (D.23317 != 0) goto <D.23318>; else goto <D.23319>;
      <D.23318>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "tramp-ppc.c", 438, "(code - buf) <= size");
      <D.23319>:
      if (info != 0B) goto <D.23320>; else goto <D.23321>;
      <D.23320>:
      tramp_name = mono_get_generic_trampoline_name (tramp_type);
      code.28 = (long int) code;
      buf.29 = (long int) buf;
      D.23312 = code.28 - buf.29;
      D.23322 = (unsigned int) D.23312;
      ji.30 = ji;
      D.23324 = mono_tramp_info_create (tramp_name, buf, D.23322, ji.30, unwind_ops);
      *info = D.23324;
      monoeg_g_free (tramp_name);
      <D.23321>:
      D.23325 = buf;
      return D.23325;
    }
  finally
    {
      ji = {CLOBBER};
    }
}


mono_arch_create_specific_trampoline (void * arg1, MonoTrampolineType tramp_type, struct MonoDomain * domain, guint32 * code_len)
{
  union mono_mutex_t * D.23328;
  _Bool D.23331;
  long int D.23332;
  long int D.23333;
  guint8 * D.23336;
  _Bool D.23339;
  long int D.23340;
  long int D.23341;
  long unsigned int arg1.31;
  long unsigned int D.23347;
  short unsigned int D.23348;
  int D.23349;
  int D.23350;
  unsigned int D.23351;
  unsigned int D.23352;
  unsigned int D.23353;
  unsigned int D.23354;
  unsigned int D.23355;
  unsigned int D.23356;
  unsigned int D.23357;
  unsigned int D.23358;
  long unsigned int D.23359;
  short unsigned int D.23360;
  int D.23361;
  int D.23362;
  unsigned int D.23363;
  unsigned int D.23364;
  unsigned int D.23365;
  unsigned int D.23366;
  unsigned int D.23367;
  unsigned int D.23368;
  unsigned int D.23369;
  unsigned int D.23370;
  long unsigned int D.23371;
  short unsigned int D.23372;
  int D.23373;
  int D.23374;
  unsigned int D.23375;
  unsigned int D.23376;
  unsigned int D.23377;
  unsigned int D.23378;
  unsigned int D.23379;
  unsigned int D.23380;
  unsigned int D.23381;
  unsigned int D.23382;
  long int arg1.32;
  short unsigned int D.23384;
  int D.23385;
  int D.23386;
  unsigned int D.23387;
  unsigned int D.23388;
  unsigned int D.23389;
  unsigned int D.23390;
  unsigned int D.23391;
  unsigned int D.23392;
  unsigned int D.23393;
  unsigned int D.23394;
  unsigned int D.23395;
  unsigned int D.23396;
  unsigned int D.23397;
  unsigned int D.23398;
  unsigned int D.23399;
  unsigned int D.23400;
  unsigned int D.23401;
  unsigned int D.23402;
  unsigned int D.23403;
  long unsigned int tramp.33;
  long unsigned int D.23406;
  long unsigned int D.23407;
  long int tramp.34;
  short unsigned int D.23411;
  int D.23412;
  int D.23413;
  unsigned int D.23414;
  unsigned int D.23415;
  unsigned int D.23416;
  unsigned int D.23417;
  unsigned int D.23418;
  unsigned int D.23419;
  unsigned int D.23420;
  unsigned int D.23421;
  long int tramp.35;
  long int D.23424;
  unsigned long D.23425;
  unsigned long D.23426;
  unsigned int D.23429;
  unsigned int D.23430;
  short unsigned int D.23431;
  int D.23432;
  int D.23433;
  unsigned int D.23434;
  unsigned int D.23435;
  unsigned int D.23436;
  unsigned int D.23437;
  unsigned int D.23438;
  unsigned int D.23439;
  unsigned int D.23440;
  unsigned int D.23441;
  short unsigned int D.23442;
  int D.23443;
  int D.23444;
  unsigned int D.23445;
  unsigned int D.23446;
  unsigned int D.23447;
  unsigned int D.23448;
  unsigned int D.23449;
  unsigned int D.23450;
  unsigned int D.23451;
  unsigned int D.23452;
  long int D.23454;
  unsigned long D.23455;
  unsigned long D.23456;
  long int D.23459;
  short unsigned int D.23460;
  int D.23461;
  int D.23462;
  unsigned int D.23463;
  unsigned int D.23464;
  unsigned int D.23465;
  unsigned int D.23466;
  unsigned int D.23467;
  unsigned int D.23468;
  unsigned int D.23469;
  unsigned int D.23470;
  long unsigned int D.23471;
  short unsigned int D.23472;
  int D.23473;
  int D.23474;
  unsigned int D.23475;
  unsigned int D.23476;
  unsigned int D.23477;
  unsigned int D.23478;
  unsigned int D.23479;
  unsigned int D.23480;
  unsigned int D.23481;
  unsigned int D.23482;
  int D.23483;
  unsigned int D.23484;
  unsigned int D.23485;
  unsigned int D.23486;
  unsigned int D.23487;
  unsigned int D.23488;
  long unsigned int D.23490;
  short unsigned int D.23491;
  int D.23492;
  int D.23493;
  unsigned int D.23494;
  unsigned int D.23495;
  unsigned int D.23496;
  unsigned int D.23497;
  unsigned int D.23498;
  unsigned int D.23499;
  unsigned int D.23500;
  unsigned int D.23501;
  long unsigned int D.23502;
  short unsigned int D.23503;
  int D.23504;
  int D.23505;
  unsigned int D.23506;
  unsigned int D.23507;
  unsigned int D.23508;
  unsigned int D.23509;
  unsigned int D.23510;
  unsigned int D.23511;
  unsigned int D.23512;
  unsigned int D.23513;
  long unsigned int D.23514;
  long unsigned int D.23515;
  int D.23518;
  unsigned int D.23519;
  unsigned int D.23520;
  unsigned int D.23521;
  unsigned int D.23522;
  unsigned int D.23523;
  long int arg1.36;
  long int D.23526;
  unsigned long D.23527;
  unsigned long D.23528;
  unsigned int D.23531;
  unsigned int D.23532;
  short unsigned int D.23533;
  int D.23534;
  int D.23535;
  unsigned int D.23536;
  unsigned int D.23537;
  unsigned int D.23538;
  unsigned int D.23539;
  unsigned int D.23540;
  unsigned int D.23541;
  unsigned int D.23542;
  unsigned int D.23543;
  short unsigned int D.23544;
  int D.23545;
  int D.23546;
  unsigned int D.23547;
  unsigned int D.23548;
  unsigned int D.23549;
  unsigned int D.23550;
  unsigned int D.23551;
  unsigned int D.23552;
  unsigned int D.23553;
  unsigned int D.23554;
  long int D.23556;
  unsigned long D.23557;
  unsigned long D.23558;
  long int D.23561;
  short unsigned int D.23562;
  int D.23563;
  int D.23564;
  unsigned int D.23565;
  unsigned int D.23566;
  unsigned int D.23567;
  unsigned int D.23568;
  unsigned int D.23569;
  unsigned int D.23570;
  unsigned int D.23571;
  unsigned int D.23572;
  long int code.37;
  long int buf.38;
  long int D.23576;
  int D.23577;
  _Bool D.23578;
  long int D.23579;
  long int D.23580;
  unsigned int D.23585;
  void * D.23586;
  guint8 * code;
  guint8 * buf;
  guint8 * tramp;
  guint32 short_branch;

  tramp = mono_get_trampoline_code (tramp_type);
  {
    int ret;

    D.23328 = &domain->lock.mutex;
    ret = pthread_mutex_lock (D.23328);
    if (ret != 0) goto <D.23329>; else goto <D.23330>;
    <D.23329>:
    monoeg_g_log (0B, 16, "Bad call to mono_mutex_lock result %d", ret);
    <D.23330>:
    D.23331 = ret != 0;
    D.23332 = (long int) D.23331;
    D.23333 = __builtin_expect (D.23332, 0);
    if (D.23333 != 0) goto <D.23334>; else goto <D.23335>;
    <D.23334>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "tramp-ppc.c", 458, "ret == 0");
    <D.23335>:
  }
  buf = mono_domain_code_reserve_align (domain, 48, 4);
  code = buf;
  D.23336 = code + 20;
  short_branch = branch_for_target_reachable (D.23336, tramp);
  {
    int ret;

    D.23328 = &domain->lock.mutex;
    ret = pthread_mutex_unlock (D.23328);
    if (ret != 0) goto <D.23337>; else goto <D.23338>;
    <D.23337>:
    monoeg_g_log (0B, 16, "Bad call to mono_mutex_unlock result %d", ret);
    <D.23338>:
    D.23339 = ret != 0;
    D.23340 = (long int) D.23339;
    D.23341 = __builtin_expect (D.23340, 0);
    if (D.23341 != 0) goto <D.23342>; else goto <D.23343>;
    <D.23342>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "tramp-ppc.c", 467, "ret == 0");
    <D.23343>:
  }
  if (short_branch != 0) goto <D.23344>; else goto <D.23345>;
  <D.23344>:
  arg1.31 = (long unsigned int) arg1;
  D.23347 = arg1.31 >> 48;
  D.23348 = (short unsigned int) D.23347;
  D.23349 = (int) D.23348;
  D.23350 = D.23349 | 1006632960;
  D.23351 = (unsigned int) D.23350;
  D.23352 = D.23351 << 24;
  arg1.31 = (long unsigned int) arg1;
  D.23347 = arg1.31 >> 48;
  D.23348 = (short unsigned int) D.23347;
  D.23353 = (unsigned int) D.23348;
  D.23354 = D.23353 & 65280;
  D.23355 = D.23354 << 8;
  D.23356 = D.23352 | D.23355;
  arg1.31 = (long unsigned int) arg1;
  D.23347 = arg1.31 >> 48;
  D.23348 = (short unsigned int) D.23347;
  D.23349 = (int) D.23348;
  D.23350 = D.23349 | 1006632960;
  D.23351 = (unsigned int) D.23350;
  D.23357 = D.23351 >> 24;
  D.23358 = D.23356 | D.23357;
  MEM[(guint32 *)code] = D.23358;
  code = code + 4;
  arg1.31 = (long unsigned int) arg1;
  D.23359 = arg1.31 >> 32;
  D.23360 = (short unsigned int) D.23359;
  D.23361 = (int) D.23360;
  D.23362 = D.23361 | 1610612736;
  D.23363 = (unsigned int) D.23362;
  D.23364 = D.23363 << 24;
  arg1.31 = (long unsigned int) arg1;
  D.23359 = arg1.31 >> 32;
  D.23360 = (short unsigned int) D.23359;
  D.23365 = (unsigned int) D.23360;
  D.23366 = D.23365 & 65280;
  D.23367 = D.23366 << 8;
  D.23368 = D.23364 | D.23367;
  arg1.31 = (long unsigned int) arg1;
  D.23359 = arg1.31 >> 32;
  D.23360 = (short unsigned int) D.23359;
  D.23361 = (int) D.23360;
  D.23362 = D.23361 | 1610612736;
  D.23363 = (unsigned int) D.23362;
  D.23369 = D.23363 >> 24;
  D.23370 = D.23368 | D.23369;
  MEM[(guint32 *)code] = D.23370;
  code = code + 4;
  MEM[(guint32 *)code] = 3322347640;
  code = code + 4;
  arg1.31 = (long unsigned int) arg1;
  D.23371 = arg1.31 >> 16;
  D.23372 = (short unsigned int) D.23371;
  D.23373 = (int) D.23372;
  D.23374 = D.23373 | 1677721600;
  D.23375 = (unsigned int) D.23374;
  D.23376 = D.23375 << 24;
  arg1.31 = (long unsigned int) arg1;
  D.23371 = arg1.31 >> 16;
  D.23372 = (short unsigned int) D.23371;
  D.23377 = (unsigned int) D.23372;
  D.23378 = D.23377 & 65280;
  D.23379 = D.23378 << 8;
  D.23380 = D.23376 | D.23379;
  arg1.31 = (long unsigned int) arg1;
  D.23371 = arg1.31 >> 16;
  D.23372 = (short unsigned int) D.23371;
  D.23373 = (int) D.23372;
  D.23374 = D.23373 | 1677721600;
  D.23375 = (unsigned int) D.23374;
  D.23381 = D.23375 >> 24;
  D.23382 = D.23380 | D.23381;
  MEM[(guint32 *)code] = D.23382;
  code = code + 4;
  arg1.32 = (long int) arg1;
  D.23384 = (short unsigned int) arg1.32;
  D.23385 = (int) D.23384;
  D.23386 = D.23385 | 1610612736;
  D.23387 = (unsigned int) D.23386;
  D.23388 = D.23387 << 24;
  arg1.32 = (long int) arg1;
  D.23384 = (short unsigned int) arg1.32;
  D.23389 = (unsigned int) D.23384;
  D.23390 = D.23389 & 65280;
  D.23391 = D.23390 << 8;
  D.23392 = D.23388 | D.23391;
  arg1.32 = (long int) arg1;
  D.23384 = (short unsigned int) arg1.32;
  D.23385 = (int) D.23384;
  D.23386 = D.23385 | 1610612736;
  D.23387 = (unsigned int) D.23386;
  D.23393 = D.23387 >> 24;
  D.23394 = D.23392 | D.23393;
  MEM[(guint32 *)code] = D.23394;
  code = code + 4;
  D.23395 = short_branch << 24;
  D.23396 = short_branch & 16711680;
  D.23397 = D.23396 >> 8;
  D.23398 = D.23395 | D.23397;
  D.23399 = short_branch & 65280;
  D.23400 = D.23399 << 8;
  D.23401 = D.23398 | D.23400;
  D.23402 = short_branch >> 24;
  D.23403 = D.23401 | D.23402;
  MEM[(guint32 *)code] = D.23403;
  code = code + 4;
  goto <D.23404>;
  <D.23345>:
  tramp.33 = (long unsigned int) tramp;
  D.23406 = tramp.33 >> 15;
  D.23407 = D.23406 + 18446744073709551615;
  if (D.23407 > 18446744073709551613) goto <D.23408>; else goto <D.23409>;
  <D.23408>:
  tramp.34 = (long int) tramp;
  D.23411 = (short unsigned int) tramp.34;
  D.23412 = (int) D.23411;
  D.23413 = D.23412 | 939524096;
  D.23414 = (unsigned int) D.23413;
  D.23415 = D.23414 << 24;
  tramp.34 = (long int) tramp;
  D.23411 = (short unsigned int) tramp.34;
  D.23416 = (unsigned int) D.23411;
  D.23417 = D.23416 & 65280;
  D.23418 = D.23417 << 8;
  D.23419 = D.23415 | D.23418;
  tramp.34 = (long int) tramp;
  D.23411 = (short unsigned int) tramp.34;
  D.23412 = (int) D.23411;
  D.23413 = D.23412 | 939524096;
  D.23414 = (unsigned int) D.23413;
  D.23420 = D.23414 >> 24;
  D.23421 = D.23419 | D.23420;
  MEM[(guint32 *)code] = D.23421;
  code = code + 4;
  goto <D.23422>;
  <D.23409>:
  tramp.35 = (long int) tramp;
  D.23424 = tramp.35 >> 31;
  D.23425 = (unsigned long) D.23424;
  D.23426 = D.23425 + 1;
  if (D.23426 <= 1) goto <D.23427>; else goto <D.23428>;
  <D.23427>:
  tramp.34 = (long int) tramp;
  D.23429 = (unsigned int) tramp.34;
  D.23430 = D.23429 >> 16;
  D.23431 = (short unsigned int) D.23430;
  D.23432 = (int) D.23431;
  D.23433 = D.23432 | 1006632960;
  D.23434 = (unsigned int) D.23433;
  D.23435 = D.23434 << 24;
  tramp.34 = (long int) tramp;
  D.23429 = (unsigned int) tramp.34;
  D.23430 = D.23429 >> 16;
  D.23431 = (short unsigned int) D.23430;
  D.23436 = (unsigned int) D.23431;
  D.23437 = D.23436 & 65280;
  D.23438 = D.23437 << 8;
  D.23439 = D.23435 | D.23438;
  tramp.34 = (long int) tramp;
  D.23429 = (unsigned int) tramp.34;
  D.23430 = D.23429 >> 16;
  D.23431 = (short unsigned int) D.23430;
  D.23432 = (int) D.23431;
  D.23433 = D.23432 | 1006632960;
  D.23434 = (unsigned int) D.23433;
  D.23440 = D.23434 >> 24;
  D.23441 = D.23439 | D.23440;
  MEM[(guint32 *)code] = D.23441;
  code = code + 4;
  tramp.34 = (long int) tramp;
  D.23442 = (short unsigned int) tramp.34;
  D.23443 = (int) D.23442;
  D.23444 = D.23443 | 1610612736;
  D.23445 = (unsigned int) D.23444;
  D.23446 = D.23445 << 24;
  tramp.34 = (long int) tramp;
  D.23442 = (short unsigned int) tramp.34;
  D.23447 = (unsigned int) D.23442;
  D.23448 = D.23447 & 65280;
  D.23449 = D.23448 << 8;
  D.23450 = D.23446 | D.23449;
  tramp.34 = (long int) tramp;
  D.23442 = (short unsigned int) tramp.34;
  D.23443 = (int) D.23442;
  D.23444 = D.23443 | 1610612736;
  D.23445 = (unsigned int) D.23444;
  D.23451 = D.23445 >> 24;
  D.23452 = D.23450 | D.23451;
  MEM[(guint32 *)code] = D.23452;
  code = code + 4;
  goto <D.23453>;
  <D.23428>:
  tramp.35 = (long int) tramp;
  D.23454 = tramp.35 >> 47;
  D.23455 = (unsigned long) D.23454;
  D.23456 = D.23455 + 1;
  if (D.23456 <= 1) goto <D.23457>; else goto <D.23458>;
  <D.23457>:
  tramp.35 = (long int) tramp;
  D.23459 = tramp.35 >> 32;
  D.23460 = (short unsigned int) D.23459;
  D.23461 = (int) D.23460;
  D.23462 = D.23461 | 939524096;
  D.23463 = (unsigned int) D.23462;
  D.23464 = D.23463 << 24;
  tramp.35 = (long int) tramp;
  D.23459 = tramp.35 >> 32;
  D.23460 = (short unsigned int) D.23459;
  D.23465 = (unsigned int) D.23460;
  D.23466 = D.23465 & 65280;
  D.23467 = D.23466 << 8;
  D.23468 = D.23464 | D.23467;
  tramp.35 = (long int) tramp;
  D.23459 = tramp.35 >> 32;
  D.23460 = (short unsigned int) D.23459;
  D.23461 = (int) D.23460;
  D.23462 = D.23461 | 939524096;
  D.23463 = (unsigned int) D.23462;
  D.23469 = D.23463 >> 24;
  D.23470 = D.23468 | D.23469;
  MEM[(guint32 *)code] = D.23470;
  code = code + 4;
  MEM[(guint32 *)code] = 3322347640;
  code = code + 4;
  tramp.33 = (long unsigned int) tramp;
  D.23471 = tramp.33 >> 16;
  D.23472 = (short unsigned int) D.23471;
  D.23473 = (int) D.23472;
  D.23474 = D.23473 | 1677721600;
  D.23475 = (unsigned int) D.23474;
  D.23476 = D.23475 << 24;
  tramp.33 = (long unsigned int) tramp;
  D.23471 = tramp.33 >> 16;
  D.23472 = (short unsigned int) D.23471;
  D.23477 = (unsigned int) D.23472;
  D.23478 = D.23477 & 65280;
  D.23479 = D.23478 << 8;
  D.23480 = D.23476 | D.23479;
  tramp.33 = (long unsigned int) tramp;
  D.23471 = tramp.33 >> 16;
  D.23472 = (short unsigned int) D.23471;
  D.23473 = (int) D.23472;
  D.23474 = D.23473 | 1677721600;
  D.23475 = (unsigned int) D.23474;
  D.23481 = D.23475 >> 24;
  D.23482 = D.23480 | D.23481;
  MEM[(guint32 *)code] = D.23482;
  code = code + 4;
  tramp.34 = (long int) tramp;
  D.23411 = (short unsigned int) tramp.34;
  D.23412 = (int) D.23411;
  D.23483 = D.23412 | 1610612736;
  D.23484 = (unsigned int) D.23483;
  D.23485 = D.23484 << 24;
  tramp.34 = (long int) tramp;
  D.23411 = (short unsigned int) tramp.34;
  D.23416 = (unsigned int) D.23411;
  D.23417 = D.23416 & 65280;
  D.23418 = D.23417 << 8;
  D.23486 = D.23485 | D.23418;
  tramp.34 = (long int) tramp;
  D.23411 = (short unsigned int) tramp.34;
  D.23412 = (int) D.23411;
  D.23483 = D.23412 | 1610612736;
  D.23484 = (unsigned int) D.23483;
  D.23487 = D.23484 >> 24;
  D.23488 = D.23486 | D.23487;
  MEM[(guint32 *)code] = D.23488;
  code = code + 4;
  goto <D.23489>;
  <D.23458>:
  tramp.33 = (long unsigned int) tramp;
  D.23490 = tramp.33 >> 48;
  D.23491 = (short unsigned int) D.23490;
  D.23492 = (int) D.23491;
  D.23493 = D.23492 | 1006632960;
  D.23494 = (unsigned int) D.23493;
  D.23495 = D.23494 << 24;
  tramp.33 = (long unsigned int) tramp;
  D.23490 = tramp.33 >> 48;
  D.23491 = (short unsigned int) D.23490;
  D.23496 = (unsigned int) D.23491;
  D.23497 = D.23496 & 65280;
  D.23498 = D.23497 << 8;
  D.23499 = D.23495 | D.23498;
  tramp.33 = (long unsigned int) tramp;
  D.23490 = tramp.33 >> 48;
  D.23491 = (short unsigned int) D.23490;
  D.23492 = (int) D.23491;
  D.23493 = D.23492 | 1006632960;
  D.23494 = (unsigned int) D.23493;
  D.23500 = D.23494 >> 24;
  D.23501 = D.23499 | D.23500;
  MEM[(guint32 *)code] = D.23501;
  code = code + 4;
  tramp.33 = (long unsigned int) tramp;
  D.23502 = tramp.33 >> 32;
  D.23503 = (short unsigned int) D.23502;
  D.23504 = (int) D.23503;
  D.23505 = D.23504 | 1610612736;
  D.23506 = (unsigned int) D.23505;
  D.23507 = D.23506 << 24;
  tramp.33 = (long unsigned int) tramp;
  D.23502 = tramp.33 >> 32;
  D.23503 = (short unsigned int) D.23502;
  D.23508 = (unsigned int) D.23503;
  D.23509 = D.23508 & 65280;
  D.23510 = D.23509 << 8;
  D.23511 = D.23507 | D.23510;
  tramp.33 = (long unsigned int) tramp;
  D.23502 = tramp.33 >> 32;
  D.23503 = (short unsigned int) D.23502;
  D.23504 = (int) D.23503;
  D.23505 = D.23504 | 1610612736;
  D.23506 = (unsigned int) D.23505;
  D.23512 = D.23506 >> 24;
  D.23513 = D.23511 | D.23512;
  MEM[(guint32 *)code] = D.23513;
  code = code + 4;
  MEM[(guint32 *)code] = 3322347640;
  code = code + 4;
  tramp.33 = (long unsigned int) tramp;
  D.23471 = tramp.33 >> 16;
  D.23472 = (short unsigned int) D.23471;
  D.23473 = (int) D.23472;
  D.23474 = D.23473 | 1677721600;
  D.23475 = (unsigned int) D.23474;
  D.23476 = D.23475 << 24;
  tramp.33 = (long unsigned int) tramp;
  D.23471 = tramp.33 >> 16;
  D.23472 = (short unsigned int) D.23471;
  D.23477 = (unsigned int) D.23472;
  D.23478 = D.23477 & 65280;
  D.23479 = D.23478 << 8;
  D.23480 = D.23476 | D.23479;
  tramp.33 = (long unsigned int) tramp;
  D.23471 = tramp.33 >> 16;
  D.23472 = (short unsigned int) D.23471;
  D.23473 = (int) D.23472;
  D.23474 = D.23473 | 1677721600;
  D.23475 = (unsigned int) D.23474;
  D.23481 = D.23475 >> 24;
  D.23482 = D.23480 | D.23481;
  MEM[(guint32 *)code] = D.23482;
  code = code + 4;
  tramp.34 = (long int) tramp;
  D.23411 = (short unsigned int) tramp.34;
  D.23412 = (int) D.23411;
  D.23483 = D.23412 | 1610612736;
  D.23484 = (unsigned int) D.23483;
  D.23485 = D.23484 << 24;
  tramp.34 = (long int) tramp;
  D.23411 = (short unsigned int) tramp.34;
  D.23416 = (unsigned int) D.23411;
  D.23417 = D.23416 & 65280;
  D.23418 = D.23417 << 8;
  D.23486 = D.23485 | D.23418;
  tramp.34 = (long int) tramp;
  D.23411 = (short unsigned int) tramp.34;
  D.23412 = (int) D.23411;
  D.23483 = D.23412 | 1610612736;
  D.23484 = (unsigned int) D.23483;
  D.23487 = D.23484 >> 24;
  D.23488 = D.23486 | D.23487;
  MEM[(guint32 *)code] = D.23488;
  code = code + 4;
  <D.23489>:
  <D.23453>:
  <D.23422>:
  MEM[(guint32 *)code] = 2785216892;
  code = code + 4;
  arg1.31 = (long unsigned int) arg1;
  D.23514 = arg1.31 >> 15;
  D.23515 = D.23514 + 18446744073709551615;
  if (D.23515 > 18446744073709551613) goto <D.23516>; else goto <D.23517>;
  <D.23516>:
  arg1.32 = (long int) arg1;
  D.23384 = (short unsigned int) arg1.32;
  D.23385 = (int) D.23384;
  D.23518 = D.23385 | 939524096;
  D.23519 = (unsigned int) D.23518;
  D.23520 = D.23519 << 24;
  arg1.32 = (long int) arg1;
  D.23384 = (short unsigned int) arg1.32;
  D.23389 = (unsigned int) D.23384;
  D.23390 = D.23389 & 65280;
  D.23391 = D.23390 << 8;
  D.23521 = D.23520 | D.23391;
  arg1.32 = (long int) arg1;
  D.23384 = (short unsigned int) arg1.32;
  D.23385 = (int) D.23384;
  D.23518 = D.23385 | 939524096;
  D.23519 = (unsigned int) D.23518;
  D.23522 = D.23519 >> 24;
  D.23523 = D.23521 | D.23522;
  MEM[(guint32 *)code] = D.23523;
  code = code + 4;
  goto <D.23524>;
  <D.23517>:
  arg1.36 = (long int) arg1;
  D.23526 = arg1.36 >> 31;
  D.23527 = (unsigned long) D.23526;
  D.23528 = D.23527 + 1;
  if (D.23528 <= 1) goto <D.23529>; else goto <D.23530>;
  <D.23529>:
  arg1.32 = (long int) arg1;
  D.23531 = (unsigned int) arg1.32;
  D.23532 = D.23531 >> 16;
  D.23533 = (short unsigned int) D.23532;
  D.23534 = (int) D.23533;
  D.23535 = D.23534 | 1006632960;
  D.23536 = (unsigned int) D.23535;
  D.23537 = D.23536 << 24;
  arg1.32 = (long int) arg1;
  D.23531 = (unsigned int) arg1.32;
  D.23532 = D.23531 >> 16;
  D.23533 = (short unsigned int) D.23532;
  D.23538 = (unsigned int) D.23533;
  D.23539 = D.23538 & 65280;
  D.23540 = D.23539 << 8;
  D.23541 = D.23537 | D.23540;
  arg1.32 = (long int) arg1;
  D.23531 = (unsigned int) arg1.32;
  D.23532 = D.23531 >> 16;
  D.23533 = (short unsigned int) D.23532;
  D.23534 = (int) D.23533;
  D.23535 = D.23534 | 1006632960;
  D.23536 = (unsigned int) D.23535;
  D.23542 = D.23536 >> 24;
  D.23543 = D.23541 | D.23542;
  MEM[(guint32 *)code] = D.23543;
  code = code + 4;
  arg1.32 = (long int) arg1;
  D.23544 = (short unsigned int) arg1.32;
  D.23545 = (int) D.23544;
  D.23546 = D.23545 | 1610612736;
  D.23547 = (unsigned int) D.23546;
  D.23548 = D.23547 << 24;
  arg1.32 = (long int) arg1;
  D.23544 = (short unsigned int) arg1.32;
  D.23549 = (unsigned int) D.23544;
  D.23550 = D.23549 & 65280;
  D.23551 = D.23550 << 8;
  D.23552 = D.23548 | D.23551;
  arg1.32 = (long int) arg1;
  D.23544 = (short unsigned int) arg1.32;
  D.23545 = (int) D.23544;
  D.23546 = D.23545 | 1610612736;
  D.23547 = (unsigned int) D.23546;
  D.23553 = D.23547 >> 24;
  D.23554 = D.23552 | D.23553;
  MEM[(guint32 *)code] = D.23554;
  code = code + 4;
  goto <D.23555>;
  <D.23530>:
  arg1.36 = (long int) arg1;
  D.23556 = arg1.36 >> 47;
  D.23557 = (unsigned long) D.23556;
  D.23558 = D.23557 + 1;
  if (D.23558 <= 1) goto <D.23559>; else goto <D.23560>;
  <D.23559>:
  arg1.36 = (long int) arg1;
  D.23561 = arg1.36 >> 32;
  D.23562 = (short unsigned int) D.23561;
  D.23563 = (int) D.23562;
  D.23564 = D.23563 | 939524096;
  D.23565 = (unsigned int) D.23564;
  D.23566 = D.23565 << 24;
  arg1.36 = (long int) arg1;
  D.23561 = arg1.36 >> 32;
  D.23562 = (short unsigned int) D.23561;
  D.23567 = (unsigned int) D.23562;
  D.23568 = D.23567 & 65280;
  D.23569 = D.23568 << 8;
  D.23570 = D.23566 | D.23569;
  arg1.36 = (long int) arg1;
  D.23561 = arg1.36 >> 32;
  D.23562 = (short unsigned int) D.23561;
  D.23563 = (int) D.23562;
  D.23564 = D.23563 | 939524096;
  D.23565 = (unsigned int) D.23564;
  D.23571 = D.23565 >> 24;
  D.23572 = D.23570 | D.23571;
  MEM[(guint32 *)code] = D.23572;
  code = code + 4;
  MEM[(guint32 *)code] = 3322347640;
  code = code + 4;
  arg1.31 = (long unsigned int) arg1;
  D.23371 = arg1.31 >> 16;
  D.23372 = (short unsigned int) D.23371;
  D.23373 = (int) D.23372;
  D.23374 = D.23373 | 1677721600;
  D.23375 = (unsigned int) D.23374;
  D.23376 = D.23375 << 24;
  arg1.31 = (long unsigned int) arg1;
  D.23371 = arg1.31 >> 16;
  D.23372 = (short unsigned int) D.23371;
  D.23377 = (unsigned int) D.23372;
  D.23378 = D.23377 & 65280;
  D.23379 = D.23378 << 8;
  D.23380 = D.23376 | D.23379;
  arg1.31 = (long unsigned int) arg1;
  D.23371 = arg1.31 >> 16;
  D.23372 = (short unsigned int) D.23371;
  D.23373 = (int) D.23372;
  D.23374 = D.23373 | 1677721600;
  D.23375 = (unsigned int) D.23374;
  D.23381 = D.23375 >> 24;
  D.23382 = D.23380 | D.23381;
  MEM[(guint32 *)code] = D.23382;
  code = code + 4;
  arg1.32 = (long int) arg1;
  D.23384 = (short unsigned int) arg1.32;
  D.23385 = (int) D.23384;
  D.23386 = D.23385 | 1610612736;
  D.23387 = (unsigned int) D.23386;
  D.23388 = D.23387 << 24;
  arg1.32 = (long int) arg1;
  D.23384 = (short unsigned int) arg1.32;
  D.23389 = (unsigned int) D.23384;
  D.23390 = D.23389 & 65280;
  D.23391 = D.23390 << 8;
  D.23392 = D.23388 | D.23391;
  arg1.32 = (long int) arg1;
  D.23384 = (short unsigned int) arg1.32;
  D.23385 = (int) D.23384;
  D.23386 = D.23385 | 1610612736;
  D.23387 = (unsigned int) D.23386;
  D.23393 = D.23387 >> 24;
  D.23394 = D.23392 | D.23393;
  MEM[(guint32 *)code] = D.23394;
  code = code + 4;
  goto <D.23573>;
  <D.23560>:
  arg1.31 = (long unsigned int) arg1;
  D.23347 = arg1.31 >> 48;
  D.23348 = (short unsigned int) D.23347;
  D.23349 = (int) D.23348;
  D.23350 = D.23349 | 1006632960;
  D.23351 = (unsigned int) D.23350;
  D.23352 = D.23351 << 24;
  arg1.31 = (long unsigned int) arg1;
  D.23347 = arg1.31 >> 48;
  D.23348 = (short unsigned int) D.23347;
  D.23353 = (unsigned int) D.23348;
  D.23354 = D.23353 & 65280;
  D.23355 = D.23354 << 8;
  D.23356 = D.23352 | D.23355;
  arg1.31 = (long unsigned int) arg1;
  D.23347 = arg1.31 >> 48;
  D.23348 = (short unsigned int) D.23347;
  D.23349 = (int) D.23348;
  D.23350 = D.23349 | 1006632960;
  D.23351 = (unsigned int) D.23350;
  D.23357 = D.23351 >> 24;
  D.23358 = D.23356 | D.23357;
  MEM[(guint32 *)code] = D.23358;
  code = code + 4;
  arg1.31 = (long unsigned int) arg1;
  D.23359 = arg1.31 >> 32;
  D.23360 = (short unsigned int) D.23359;
  D.23361 = (int) D.23360;
  D.23362 = D.23361 | 1610612736;
  D.23363 = (unsigned int) D.23362;
  D.23364 = D.23363 << 24;
  arg1.31 = (long unsigned int) arg1;
  D.23359 = arg1.31 >> 32;
  D.23360 = (short unsigned int) D.23359;
  D.23365 = (unsigned int) D.23360;
  D.23366 = D.23365 & 65280;
  D.23367 = D.23366 << 8;
  D.23368 = D.23364 | D.23367;
  arg1.31 = (long unsigned int) arg1;
  D.23359 = arg1.31 >> 32;
  D.23360 = (short unsigned int) D.23359;
  D.23361 = (int) D.23360;
  D.23362 = D.23361 | 1610612736;
  D.23363 = (unsigned int) D.23362;
  D.23369 = D.23363 >> 24;
  D.23370 = D.23368 | D.23369;
  MEM[(guint32 *)code] = D.23370;
  code = code + 4;
  MEM[(guint32 *)code] = 3322347640;
  code = code + 4;
  arg1.31 = (long unsigned int) arg1;
  D.23371 = arg1.31 >> 16;
  D.23372 = (short unsigned int) D.23371;
  D.23373 = (int) D.23372;
  D.23374 = D.23373 | 1677721600;
  D.23375 = (unsigned int) D.23374;
  D.23376 = D.23375 << 24;
  arg1.31 = (long unsigned int) arg1;
  D.23371 = arg1.31 >> 16;
  D.23372 = (short unsigned int) D.23371;
  D.23377 = (unsigned int) D.23372;
  D.23378 = D.23377 & 65280;
  D.23379 = D.23378 << 8;
  D.23380 = D.23376 | D.23379;
  arg1.31 = (long unsigned int) arg1;
  D.23371 = arg1.31 >> 16;
  D.23372 = (short unsigned int) D.23371;
  D.23373 = (int) D.23372;
  D.23374 = D.23373 | 1677721600;
  D.23375 = (unsigned int) D.23374;
  D.23381 = D.23375 >> 24;
  D.23382 = D.23380 | D.23381;
  MEM[(guint32 *)code] = D.23382;
  code = code + 4;
  arg1.32 = (long int) arg1;
  D.23384 = (short unsigned int) arg1.32;
  D.23385 = (int) D.23384;
  D.23386 = D.23385 | 1610612736;
  D.23387 = (unsigned int) D.23386;
  D.23388 = D.23387 << 24;
  arg1.32 = (long int) arg1;
  D.23384 = (short unsigned int) arg1.32;
  D.23389 = (unsigned int) D.23384;
  D.23390 = D.23389 & 65280;
  D.23391 = D.23390 << 8;
  D.23392 = D.23388 | D.23391;
  arg1.32 = (long int) arg1;
  D.23384 = (short unsigned int) arg1.32;
  D.23385 = (int) D.23384;
  D.23386 = D.23385 | 1610612736;
  D.23387 = (unsigned int) D.23386;
  D.23393 = D.23387 >> 24;
  D.23394 = D.23392 | D.23393;
  MEM[(guint32 *)code] = D.23394;
  code = code + 4;
  <D.23573>:
  <D.23555>:
  <D.23524>:
  MEM[(guint32 *)code] = 537165902;
  code = code + 4;
  <D.23404>:
  code.37 = (long int) code;
  buf.38 = (long int) buf;
  D.23576 = code.37 - buf.38;
  D.23577 = (int) D.23576;
  mono_arch_flush_icache (buf, D.23577);
  code.37 = (long int) code;
  buf.38 = (long int) buf;
  D.23576 = code.37 - buf.38;
  D.23578 = D.23576 > 48;
  D.23579 = (long int) D.23578;
  D.23580 = __builtin_expect (D.23579, 0);
  if (D.23580 != 0) goto <D.23581>; else goto <D.23582>;
  <D.23581>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "tramp-ppc.c", 485, "(code - buf) <= TRAMPOLINE_SIZE");
  <D.23582>:
  if (code_len != 0B) goto <D.23583>; else goto <D.23584>;
  <D.23583>:
  code.37 = (long int) code;
  buf.38 = (long int) buf;
  D.23576 = code.37 - buf.38;
  D.23585 = (unsigned int) D.23576;
  *code_len = D.23585;
  <D.23584>:
  D.23586 = buf;
  return D.23586;
}


mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, struct MonoTrampInfo * * info, gboolean aot)
{
  signed int slot.39;
  _Bool D.23589;
  int slot.40;
  unsigned int index.41;
  unsigned int D.23594;
  int D.23595;
  int D.23597;
  int D.23598;
  int D.23604;
  long unsigned int D.23605;
  long unsigned int D.23606;
  sizetype D.23614;
  sizetype D.23615;
  sizetype D.23616;
  guint8 * * D.23617;
  int D.23618;
  long unsigned int D.23619;
  unsigned int D.23620;
  unsigned int D.23621;
  unsigned int D.23622;
  unsigned int D.23623;
  unsigned int D.23624;
  unsigned int D.23625;
  unsigned int D.23626;
  unsigned int D.23627;
  unsigned int D.23628;
  unsigned int D.23629;
  unsigned int D.23630;
  sizetype D.23631;
  sizetype D.23632;
  sizetype D.23633;
  guint8 * * D.23634;
  _Bool D.23635;
  long unsigned int D.23636;
  long unsigned int D.23637;
  guint8 * * D.23638;
  guint8 * D.23639;
  int D.23640;
  gchar * D.23643;
  long unsigned int D.23645;
  void * D.23646;
  struct MonoDomain * D.23647;
  long int code.42;
  long int buf.43;
  long int D.23650;
  int D.23651;
  long int D.23652;
  _Bool D.23653;
  long int D.23654;
  long int D.23655;
  unsigned int D.23660;
  struct MonoJumpInfo * ji.44;
  struct MonoTrampInfo * D.23662;
  void * D.23663;
  guint8 * tramp;
  guint8 * code;
  guint8 * buf;
  guint8 * * rgctx_null_jumps;
  int tramp_size;
  int depth;
  int index;
  int i;
  gboolean mrgctx;
  struct MonoJumpInfo * ji;
  struct GSList * unwind_ops;

  try
    {
      ji = 0B;
      unwind_ops = 0B;
      slot.39 = (signed int) slot;
      D.23589 = slot.39 < 0;
      mrgctx = (gboolean) D.23589;
      slot.40 = (int) slot;
      index = slot.40 & 2147483647;
      if (mrgctx != 0) goto <D.23591>; else goto <D.23592>;
      <D.23591>:
      index.41 = (unsigned int) index;
      D.23594 = index.41 + 2;
      index = (int) D.23594;
      <D.23592>:
      depth = 0;
      <D.22439>:
      {
        int size;

        size = mono_class_rgctx_get_array_size (depth, mrgctx);
        D.23595 = size + -1;
        if (D.23595 > index) goto <D.22438>; else goto <D.23596>;
        <D.23596>:
        D.23597 = 1 - size;
        index = D.23597 + index;
      }
      depth = depth + 1;
      goto <D.22439>;
      <D.22438>:
      D.23598 = depth * 12;
      tramp_size = D.23598 + 52;
      if (mrgctx != 0) goto <D.23599>; else goto <D.23600>;
      <D.23599>:
      tramp_size = tramp_size + 4;
      goto <D.23601>;
      <D.23600>:
      tramp_size = tramp_size + 12;
      <D.23601>:
      if (aot != 0) goto <D.23602>; else goto <D.23603>;
      <D.23602>:
      tramp_size = tramp_size + 32;
      <D.23603>:
      buf = mono_global_codeman_reserve (tramp_size);
      code = buf;
      D.23604 = depth + 2;
      D.23605 = (long unsigned int) D.23604;
      D.23606 = D.23605 * 8;
      rgctx_null_jumps = monoeg_malloc (D.23606);
      if (mrgctx != 0) goto <D.23607>; else goto <D.23608>;
      <D.23607>:
      MEM[(guint32 *)code] = 2015061116;
      code = code + 4;
      goto <D.23609>;
      <D.23608>:
      MEM[(guint32 *)code] = 805340136;
      code = code + 4;
      MEM[(guint32 *)code] = 9260;
      code = code + 4;
      *rgctx_null_jumps = code;
      MEM[(guint32 *)code] = 33345;
      code = code + 4;
      <D.23609>:
      i = 0;
      goto <D.22441>;
      <D.22440>:
      if (mrgctx != 0) goto <D.23612>; else goto <D.23610>;
      <D.23612>:
      if (i == 0) goto <D.23613>; else goto <D.23610>;
      <D.23613>:
      MEM[(guint32 *)code] = 268469480;
      code = code + 4;
      goto <D.23611>;
      <D.23610>:
      MEM[(guint32 *)code] = 34024;
      code = code + 4;
      <D.23611>:
      MEM[(guint32 *)code] = 9260;
      code = code + 4;
      D.23614 = (sizetype) i;
      D.23615 = D.23614 + 1;
      D.23616 = D.23615 * 8;
      D.23617 = rgctx_null_jumps + D.23616;
      *D.23617 = code;
      MEM[(guint32 *)code] = 33345;
      code = code + 4;
      i = i + 1;
      <D.22441>:
      if (i < depth) goto <D.22440>; else goto <D.22442>;
      <D.22442>:
      D.23618 = index + 1;
      D.23619 = (long unsigned int) D.23618;
      D.23620 = (unsigned int) D.23619;
      D.23621 = D.23620 * 8;
      D.23622 = D.23621 & 65528;
      D.23623 = D.23622 | 3900964864;
      D.23624 = D.23623 << 24;
      D.23618 = index + 1;
      D.23619 = (long unsigned int) D.23618;
      D.23620 = (unsigned int) D.23619;
      D.23621 = D.23620 * 8;
      D.23625 = D.23621 & 65280;
      D.23626 = D.23625 << 8;
      D.23627 = D.23624 | D.23626;
      D.23618 = index + 1;
      D.23619 = (long unsigned int) D.23618;
      D.23620 = (unsigned int) D.23619;
      D.23621 = D.23620 * 8;
      D.23622 = D.23621 & 65528;
      D.23623 = D.23622 | 3900964864;
      D.23628 = D.23623 >> 24;
      D.23629 = D.23627 | D.23628;
      D.23630 = D.23629 | 33792;
      MEM[(guint32 *)code] = D.23630;
      code = code + 4;
      MEM[(guint32 *)code] = 9260;
      code = code + 4;
      D.23631 = (sizetype) depth;
      D.23632 = D.23631 + 1;
      D.23633 = D.23632 * 8;
      D.23634 = rgctx_null_jumps + D.23633;
      *D.23634 = code;
      MEM[(guint32 *)code] = 33345;
      code = code + 4;
      MEM[(guint32 *)code] = 2015593340;
      code = code + 4;
      MEM[(guint32 *)code] = 536903758;
      code = code + 4;
      D.23635 = mrgctx != 0;
      i = (int) D.23635;
      goto <D.22444>;
      <D.22443>:
      D.23636 = (long unsigned int) i;
      D.23637 = D.23636 * 8;
      D.23638 = rgctx_null_jumps + D.23637;
      D.23639 = *D.23638;
      ppc_patch (D.23639, code);
      i = i + 1;
      <D.22444>:
      D.23640 = depth + 1;
      if (D.23640 >= i) goto <D.22443>; else goto <D.22445>;
      <D.22445>:
      monoeg_g_free (rgctx_null_jumps);
      MEM[(guint32 *)code] = 2015063164;
      code = code + 4;
      if (aot != 0) goto <D.23641>; else goto <D.23642>;
      <D.23641>:
      D.23643 = monoeg_g_strdup_printf ("specific_trampoline_lazy_fetch_%u", slot);
      code = mono_arch_emit_load_aotconst (buf, code, &ji, 32, D.23643);
      MEM[(guint32 *)code] = 27625;
      code = code + 4;
      MEM[(guint32 *)code] = 2785241469;
      code = code + 4;
      MEM[(guint32 *)code] = 537165902;
      code = code + 4;
      goto <D.23644>;
      <D.23642>:
      D.23645 = (long unsigned int) slot;
      D.23646 = (void *) D.23645;
      D.23647 = mono_get_root_domain ();
      tramp = mono_arch_create_specific_trampoline (D.23646, 4, D.23647, 0B);
      code = emit_trampoline_jump (code, tramp);
      <D.23644>:
      code.42 = (long int) code;
      buf.43 = (long int) buf;
      D.23650 = code.42 - buf.43;
      D.23651 = (int) D.23650;
      mono_arch_flush_icache (buf, D.23651);
      code.42 = (long int) code;
      buf.43 = (long int) buf;
      D.23650 = code.42 - buf.43;
      D.23652 = (long int) tramp_size;
      D.23653 = D.23650 > D.23652;
      D.23654 = (long int) D.23653;
      D.23655 = __builtin_expect (D.23654, 0);
      if (D.23655 != 0) goto <D.23656>; else goto <D.23657>;
      <D.23656>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "tramp-ppc.c", 613, "code - buf <= tramp_size");
      <D.23657>:
      if (info != 0B) goto <D.23658>; else goto <D.23659>;
      <D.23658>:
      {
        char * name;

        slot.40 = (int) slot;
        name = mono_get_rgctx_fetch_trampoline_name (slot.40);
        code.42 = (long int) code;
        buf.43 = (long int) buf;
        D.23650 = code.42 - buf.43;
        D.23660 = (unsigned int) D.23650;
        ji.44 = ji;
        D.23662 = mono_tramp_info_create (name, buf, D.23660, ji.44, unwind_ops);
        *info = D.23662;
        monoeg_g_free (name);
      }
      <D.23659>:
      D.23663 = buf;
      return D.23663;
    }
  finally
    {
      ji = {CLOBBER};
    }
}


emit_trampoline_jump (guint8 * code, guint8 * tramp)
{
  unsigned int D.23668;
  unsigned int D.23669;
  unsigned int D.23670;
  unsigned int D.23671;
  unsigned int D.23672;
  unsigned int D.23673;
  unsigned int D.23674;
  unsigned int D.23675;
  unsigned int D.23676;
  long unsigned int tramp.45;
  long unsigned int D.23679;
  long unsigned int D.23680;
  long int tramp.46;
  short unsigned int D.23684;
  int D.23685;
  int D.23686;
  unsigned int D.23687;
  unsigned int D.23688;
  unsigned int D.23689;
  unsigned int D.23690;
  unsigned int D.23691;
  unsigned int D.23692;
  unsigned int D.23693;
  unsigned int D.23694;
  long int tramp.47;
  long int D.23697;
  unsigned long D.23698;
  unsigned long D.23699;
  unsigned int D.23702;
  unsigned int D.23703;
  short unsigned int D.23704;
  int D.23705;
  int D.23706;
  unsigned int D.23707;
  unsigned int D.23708;
  unsigned int D.23709;
  unsigned int D.23710;
  unsigned int D.23711;
  unsigned int D.23712;
  unsigned int D.23713;
  unsigned int D.23714;
  short unsigned int D.23715;
  int D.23716;
  int D.23717;
  unsigned int D.23718;
  unsigned int D.23719;
  unsigned int D.23720;
  unsigned int D.23721;
  unsigned int D.23722;
  unsigned int D.23723;
  unsigned int D.23724;
  unsigned int D.23725;
  long int D.23727;
  unsigned long D.23728;
  unsigned long D.23729;
  long int D.23732;
  short unsigned int D.23733;
  int D.23734;
  int D.23735;
  unsigned int D.23736;
  unsigned int D.23737;
  unsigned int D.23738;
  unsigned int D.23739;
  unsigned int D.23740;
  unsigned int D.23741;
  unsigned int D.23742;
  unsigned int D.23743;
  long unsigned int D.23744;
  short unsigned int D.23745;
  int D.23746;
  int D.23747;
  unsigned int D.23748;
  unsigned int D.23749;
  unsigned int D.23750;
  unsigned int D.23751;
  unsigned int D.23752;
  unsigned int D.23753;
  unsigned int D.23754;
  unsigned int D.23755;
  int D.23756;
  unsigned int D.23757;
  unsigned int D.23758;
  unsigned int D.23759;
  unsigned int D.23760;
  unsigned int D.23761;
  long unsigned int D.23763;
  short unsigned int D.23764;
  int D.23765;
  int D.23766;
  unsigned int D.23767;
  unsigned int D.23768;
  unsigned int D.23769;
  unsigned int D.23770;
  unsigned int D.23771;
  unsigned int D.23772;
  unsigned int D.23773;
  unsigned int D.23774;
  long unsigned int D.23775;
  short unsigned int D.23776;
  int D.23777;
  int D.23778;
  unsigned int D.23779;
  unsigned int D.23780;
  unsigned int D.23781;
  unsigned int D.23782;
  unsigned int D.23783;
  unsigned int D.23784;
  unsigned int D.23785;
  unsigned int D.23786;
  guint8 * D.23787;
  guint32 short_branch;

  short_branch = branch_for_target_reachable (code, tramp);
  if (short_branch != 0) goto <D.23666>; else goto <D.23667>;
  <D.23666>:
  D.23668 = short_branch << 24;
  D.23669 = short_branch & 16711680;
  D.23670 = D.23669 >> 8;
  D.23671 = D.23668 | D.23670;
  D.23672 = short_branch & 65280;
  D.23673 = D.23672 << 8;
  D.23674 = D.23671 | D.23673;
  D.23675 = short_branch >> 24;
  D.23676 = D.23674 | D.23675;
  MEM[(guint32 *)code] = D.23676;
  code = code + 4;
  goto <D.23677>;
  <D.23667>:
  tramp.45 = (long unsigned int) tramp;
  D.23679 = tramp.45 >> 15;
  D.23680 = D.23679 + 18446744073709551615;
  if (D.23680 > 18446744073709551613) goto <D.23681>; else goto <D.23682>;
  <D.23681>:
  tramp.46 = (long int) tramp;
  D.23684 = (short unsigned int) tramp.46;
  D.23685 = (int) D.23684;
  D.23686 = D.23685 | 939524096;
  D.23687 = (unsigned int) D.23686;
  D.23688 = D.23687 << 24;
  tramp.46 = (long int) tramp;
  D.23684 = (short unsigned int) tramp.46;
  D.23689 = (unsigned int) D.23684;
  D.23690 = D.23689 & 65280;
  D.23691 = D.23690 << 8;
  D.23692 = D.23688 | D.23691;
  tramp.46 = (long int) tramp;
  D.23684 = (short unsigned int) tramp.46;
  D.23685 = (int) D.23684;
  D.23686 = D.23685 | 939524096;
  D.23687 = (unsigned int) D.23686;
  D.23693 = D.23687 >> 24;
  D.23694 = D.23692 | D.23693;
  MEM[(guint32 *)code] = D.23694;
  code = code + 4;
  goto <D.23695>;
  <D.23682>:
  tramp.47 = (long int) tramp;
  D.23697 = tramp.47 >> 31;
  D.23698 = (unsigned long) D.23697;
  D.23699 = D.23698 + 1;
  if (D.23699 <= 1) goto <D.23700>; else goto <D.23701>;
  <D.23700>:
  tramp.46 = (long int) tramp;
  D.23702 = (unsigned int) tramp.46;
  D.23703 = D.23702 >> 16;
  D.23704 = (short unsigned int) D.23703;
  D.23705 = (int) D.23704;
  D.23706 = D.23705 | 1006632960;
  D.23707 = (unsigned int) D.23706;
  D.23708 = D.23707 << 24;
  tramp.46 = (long int) tramp;
  D.23702 = (unsigned int) tramp.46;
  D.23703 = D.23702 >> 16;
  D.23704 = (short unsigned int) D.23703;
  D.23709 = (unsigned int) D.23704;
  D.23710 = D.23709 & 65280;
  D.23711 = D.23710 << 8;
  D.23712 = D.23708 | D.23711;
  tramp.46 = (long int) tramp;
  D.23702 = (unsigned int) tramp.46;
  D.23703 = D.23702 >> 16;
  D.23704 = (short unsigned int) D.23703;
  D.23705 = (int) D.23704;
  D.23706 = D.23705 | 1006632960;
  D.23707 = (unsigned int) D.23706;
  D.23713 = D.23707 >> 24;
  D.23714 = D.23712 | D.23713;
  MEM[(guint32 *)code] = D.23714;
  code = code + 4;
  tramp.46 = (long int) tramp;
  D.23715 = (short unsigned int) tramp.46;
  D.23716 = (int) D.23715;
  D.23717 = D.23716 | 1610612736;
  D.23718 = (unsigned int) D.23717;
  D.23719 = D.23718 << 24;
  tramp.46 = (long int) tramp;
  D.23715 = (short unsigned int) tramp.46;
  D.23720 = (unsigned int) D.23715;
  D.23721 = D.23720 & 65280;
  D.23722 = D.23721 << 8;
  D.23723 = D.23719 | D.23722;
  tramp.46 = (long int) tramp;
  D.23715 = (short unsigned int) tramp.46;
  D.23716 = (int) D.23715;
  D.23717 = D.23716 | 1610612736;
  D.23718 = (unsigned int) D.23717;
  D.23724 = D.23718 >> 24;
  D.23725 = D.23723 | D.23724;
  MEM[(guint32 *)code] = D.23725;
  code = code + 4;
  goto <D.23726>;
  <D.23701>:
  tramp.47 = (long int) tramp;
  D.23727 = tramp.47 >> 47;
  D.23728 = (unsigned long) D.23727;
  D.23729 = D.23728 + 1;
  if (D.23729 <= 1) goto <D.23730>; else goto <D.23731>;
  <D.23730>:
  tramp.47 = (long int) tramp;
  D.23732 = tramp.47 >> 32;
  D.23733 = (short unsigned int) D.23732;
  D.23734 = (int) D.23733;
  D.23735 = D.23734 | 939524096;
  D.23736 = (unsigned int) D.23735;
  D.23737 = D.23736 << 24;
  tramp.47 = (long int) tramp;
  D.23732 = tramp.47 >> 32;
  D.23733 = (short unsigned int) D.23732;
  D.23738 = (unsigned int) D.23733;
  D.23739 = D.23738 & 65280;
  D.23740 = D.23739 << 8;
  D.23741 = D.23737 | D.23740;
  tramp.47 = (long int) tramp;
  D.23732 = tramp.47 >> 32;
  D.23733 = (short unsigned int) D.23732;
  D.23734 = (int) D.23733;
  D.23735 = D.23734 | 939524096;
  D.23736 = (unsigned int) D.23735;
  D.23742 = D.23736 >> 24;
  D.23743 = D.23741 | D.23742;
  MEM[(guint32 *)code] = D.23743;
  code = code + 4;
  MEM[(guint32 *)code] = 3322347640;
  code = code + 4;
  tramp.45 = (long unsigned int) tramp;
  D.23744 = tramp.45 >> 16;
  D.23745 = (short unsigned int) D.23744;
  D.23746 = (int) D.23745;
  D.23747 = D.23746 | 1677721600;
  D.23748 = (unsigned int) D.23747;
  D.23749 = D.23748 << 24;
  tramp.45 = (long unsigned int) tramp;
  D.23744 = tramp.45 >> 16;
  D.23745 = (short unsigned int) D.23744;
  D.23750 = (unsigned int) D.23745;
  D.23751 = D.23750 & 65280;
  D.23752 = D.23751 << 8;
  D.23753 = D.23749 | D.23752;
  tramp.45 = (long unsigned int) tramp;
  D.23744 = tramp.45 >> 16;
  D.23745 = (short unsigned int) D.23744;
  D.23746 = (int) D.23745;
  D.23747 = D.23746 | 1677721600;
  D.23748 = (unsigned int) D.23747;
  D.23754 = D.23748 >> 24;
  D.23755 = D.23753 | D.23754;
  MEM[(guint32 *)code] = D.23755;
  code = code + 4;
  tramp.46 = (long int) tramp;
  D.23684 = (short unsigned int) tramp.46;
  D.23685 = (int) D.23684;
  D.23756 = D.23685 | 1610612736;
  D.23757 = (unsigned int) D.23756;
  D.23758 = D.23757 << 24;
  tramp.46 = (long int) tramp;
  D.23684 = (short unsigned int) tramp.46;
  D.23689 = (unsigned int) D.23684;
  D.23690 = D.23689 & 65280;
  D.23691 = D.23690 << 8;
  D.23759 = D.23758 | D.23691;
  tramp.46 = (long int) tramp;
  D.23684 = (short unsigned int) tramp.46;
  D.23685 = (int) D.23684;
  D.23756 = D.23685 | 1610612736;
  D.23757 = (unsigned int) D.23756;
  D.23760 = D.23757 >> 24;
  D.23761 = D.23759 | D.23760;
  MEM[(guint32 *)code] = D.23761;
  code = code + 4;
  goto <D.23762>;
  <D.23731>:
  tramp.45 = (long unsigned int) tramp;
  D.23763 = tramp.45 >> 48;
  D.23764 = (short unsigned int) D.23763;
  D.23765 = (int) D.23764;
  D.23766 = D.23765 | 1006632960;
  D.23767 = (unsigned int) D.23766;
  D.23768 = D.23767 << 24;
  tramp.45 = (long unsigned int) tramp;
  D.23763 = tramp.45 >> 48;
  D.23764 = (short unsigned int) D.23763;
  D.23769 = (unsigned int) D.23764;
  D.23770 = D.23769 & 65280;
  D.23771 = D.23770 << 8;
  D.23772 = D.23768 | D.23771;
  tramp.45 = (long unsigned int) tramp;
  D.23763 = tramp.45 >> 48;
  D.23764 = (short unsigned int) D.23763;
  D.23765 = (int) D.23764;
  D.23766 = D.23765 | 1006632960;
  D.23767 = (unsigned int) D.23766;
  D.23773 = D.23767 >> 24;
  D.23774 = D.23772 | D.23773;
  MEM[(guint32 *)code] = D.23774;
  code = code + 4;
  tramp.45 = (long unsigned int) tramp;
  D.23775 = tramp.45 >> 32;
  D.23776 = (short unsigned int) D.23775;
  D.23777 = (int) D.23776;
  D.23778 = D.23777 | 1610612736;
  D.23779 = (unsigned int) D.23778;
  D.23780 = D.23779 << 24;
  tramp.45 = (long unsigned int) tramp;
  D.23775 = tramp.45 >> 32;
  D.23776 = (short unsigned int) D.23775;
  D.23781 = (unsigned int) D.23776;
  D.23782 = D.23781 & 65280;
  D.23783 = D.23782 << 8;
  D.23784 = D.23780 | D.23783;
  tramp.45 = (long unsigned int) tramp;
  D.23775 = tramp.45 >> 32;
  D.23776 = (short unsigned int) D.23775;
  D.23777 = (int) D.23776;
  D.23778 = D.23777 | 1610612736;
  D.23779 = (unsigned int) D.23778;
  D.23785 = D.23779 >> 24;
  D.23786 = D.23784 | D.23785;
  MEM[(guint32 *)code] = D.23786;
  code = code + 4;
  MEM[(guint32 *)code] = 3322347640;
  code = code + 4;
  tramp.45 = (long unsigned int) tramp;
  D.23744 = tramp.45 >> 16;
  D.23745 = (short unsigned int) D.23744;
  D.23746 = (int) D.23745;
  D.23747 = D.23746 | 1677721600;
  D.23748 = (unsigned int) D.23747;
  D.23749 = D.23748 << 24;
  tramp.45 = (long unsigned int) tramp;
  D.23744 = tramp.45 >> 16;
  D.23745 = (short unsigned int) D.23744;
  D.23750 = (unsigned int) D.23745;
  D.23751 = D.23750 & 65280;
  D.23752 = D.23751 << 8;
  D.23753 = D.23749 | D.23752;
  tramp.45 = (long unsigned int) tramp;
  D.23744 = tramp.45 >> 16;
  D.23745 = (short unsigned int) D.23744;
  D.23746 = (int) D.23745;
  D.23747 = D.23746 | 1677721600;
  D.23748 = (unsigned int) D.23747;
  D.23754 = D.23748 >> 24;
  D.23755 = D.23753 | D.23754;
  MEM[(guint32 *)code] = D.23755;
  code = code + 4;
  tramp.46 = (long int) tramp;
  D.23684 = (short unsigned int) tramp.46;
  D.23685 = (int) D.23684;
  D.23756 = D.23685 | 1610612736;
  D.23757 = (unsigned int) D.23756;
  D.23758 = D.23757 << 24;
  tramp.46 = (long int) tramp;
  D.23684 = (short unsigned int) tramp.46;
  D.23689 = (unsigned int) D.23684;
  D.23690 = D.23689 & 65280;
  D.23691 = D.23690 << 8;
  D.23759 = D.23758 | D.23691;
  tramp.46 = (long int) tramp;
  D.23684 = (short unsigned int) tramp.46;
  D.23685 = (int) D.23684;
  D.23756 = D.23685 | 1610612736;
  D.23757 = (unsigned int) D.23756;
  D.23760 = D.23757 >> 24;
  D.23761 = D.23759 | D.23760;
  MEM[(guint32 *)code] = D.23761;
  code = code + 4;
  <D.23762>:
  <D.23726>:
  <D.23695>:
  MEM[(guint32 *)code] = 2785216892;
  code = code + 4;
  MEM[(guint32 *)code] = 537165902;
  code = code + 4;
  <D.23677>:
  D.23787 = code;
  return D.23787;
}


mono_arch_create_generic_class_init_trampoline (struct MonoTrampInfo * * info, gboolean aot)
{
  int byte_offset.48;
  short unsigned int D.23794;
  int D.23795;
  int D.23796;
  unsigned int D.23797;
  unsigned int D.23798;
  unsigned int D.23799;
  unsigned int D.23800;
  unsigned int D.23801;
  unsigned int D.23802;
  unsigned int D.23803;
  unsigned int D.23804;
  unsigned int D.23805;
  unsigned int D.23806;
  unsigned int D.23807;
  unsigned int D.23808;
  unsigned char bitmask.49;
  int D.23810;
  int D.23811;
  unsigned int D.23812;
  unsigned int D.23813;
  unsigned int D.23814;
  unsigned int D.23815;
  unsigned int D.23816;
  unsigned int D.23817;
  unsigned int D.23818;
  unsigned int D.23819;
  unsigned int D.23820;
  unsigned int D.23821;
  unsigned int D.23822;
  unsigned int D.23823;
  struct MonoDomain * D.23827;
  long int code.50;
  long int buf.51;
  long int D.23830;
  int D.23831;
  long int D.23832;
  _Bool D.23833;
  long int D.23834;
  long int D.23835;
  unsigned int D.23840;
  struct MonoJumpInfo * ji.52;
  struct MonoTrampInfo * D.23842;
  void * D.23843;
  guint8 * tramp;
  guint8 * code;
  guint8 * buf;
  static int byte_offset = -1;
  static guint8 bitmask;
  guint8 * jump;
  int tramp_size;
  struct GSList * unwind_ops;
  struct MonoJumpInfo * ji;

  try
    {
      unwind_ops = 0B;
      ji = 0B;
      tramp_size = 44;
      if (aot != 0) goto <D.23789>; else goto <D.23790>;
      <D.23789>:
      tramp_size = tramp_size + 32;
      <D.23790>:
      buf = mono_global_codeman_reserve (tramp_size);
      code = buf;
      byte_offset.48 = byte_offset;
      if (byte_offset.48 < 0) goto <D.23792>; else goto <D.23793>;
      <D.23792>:
      {
        struct MonoVTable tmp;

        try
          {
            memset (&tmp, 0, 56);
            tmp.initialized = 1;
            mono_marshal_find_nonzero_bit_offset (&tmp, 56, &byte_offset, &bitmask);
          }
        finally
          {
            tmp = {CLOBBER};
          }
      }
      <D.23793>:
      byte_offset.48 = byte_offset;
      D.23794 = (short unsigned int) byte_offset.48;
      D.23795 = (int) D.23794;
      D.23796 = D.23795 | -2004090880;
      D.23797 = (unsigned int) D.23796;
      D.23798 = D.23797 << 24;
      byte_offset.48 = byte_offset;
      D.23794 = (short unsigned int) byte_offset.48;
      D.23799 = (unsigned int) D.23794;
      D.23800 = D.23799 & 7536640;
      D.23801 = D.23800 | 9175040;
      D.23802 = D.23801 >> 8;
      D.23803 = D.23798 | D.23802;
      byte_offset.48 = byte_offset;
      D.23794 = (short unsigned int) byte_offset.48;
      D.23799 = (unsigned int) D.23794;
      D.23804 = D.23799 & 65280;
      D.23805 = D.23804 << 8;
      D.23806 = D.23803 | D.23805;
      byte_offset.48 = byte_offset;
      D.23794 = (short unsigned int) byte_offset.48;
      D.23795 = (int) D.23794;
      D.23796 = D.23795 | -2004090880;
      D.23797 = (unsigned int) D.23796;
      D.23807 = D.23797 >> 24;
      D.23808 = D.23806 | D.23807;
      MEM[(guint32 *)code] = D.23808;
      code = code + 4;
      bitmask.49 = bitmask;
      D.23810 = (int) bitmask.49;
      D.23811 = D.23810 | 1887698944;
      D.23812 = (unsigned int) D.23811;
      D.23813 = D.23812 << 24;
      bitmask.49 = bitmask;
      D.23814 = (unsigned int) bitmask.49;
      D.23815 = D.23814 & 8060928;
      D.23816 = D.23815 | 8650752;
      D.23817 = D.23816 >> 8;
      D.23818 = D.23813 | D.23817;
      bitmask.49 = bitmask;
      D.23814 = (unsigned int) bitmask.49;
      D.23819 = D.23814 & 65280;
      D.23820 = D.23819 << 8;
      D.23821 = D.23818 | D.23820;
      bitmask.49 = bitmask;
      D.23810 = (int) bitmask.49;
      D.23811 = D.23810 | 1887698944;
      D.23812 = (unsigned int) D.23811;
      D.23822 = D.23812 >> 24;
      D.23823 = D.23821 | D.23822;
      MEM[(guint32 *)code] = D.23823;
      code = code + 4;
      jump = code;
      MEM[(guint32 *)code] = 33345;
      code = code + 4;
      MEM[(guint32 *)code] = 536903758;
      code = code + 4;
      ppc_patch (jump, code);
      if (aot != 0) goto <D.23824>; else goto <D.23825>;
      <D.23824>:
      code = mono_arch_emit_load_aotconst (buf, code, &ji, 32, "specific_trampoline_generic_class_init");
      MEM[(guint32 *)code] = 27625;
      code = code + 4;
      MEM[(guint32 *)code] = 2785241469;
      code = code + 4;
      MEM[(guint32 *)code] = 537165902;
      code = code + 4;
      goto <D.23826>;
      <D.23825>:
      D.23827 = mono_get_root_domain ();
      tramp = mono_arch_create_specific_trampoline (0B, 3, D.23827, 0B);
      code = emit_trampoline_jump (code, tramp);
      <D.23826>:
      code.50 = (long int) code;
      buf.51 = (long int) buf;
      D.23830 = code.50 - buf.51;
      D.23831 = (int) D.23830;
      mono_arch_flush_icache (buf, D.23831);
      code.50 = (long int) code;
      buf.51 = (long int) buf;
      D.23830 = code.50 - buf.51;
      D.23832 = (long int) tramp_size;
      D.23833 = D.23830 > D.23832;
      D.23834 = (long int) D.23833;
      D.23835 = __builtin_expect (D.23834, 0);
      if (D.23835 != 0) goto <D.23836>; else goto <D.23837>;
      <D.23836>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "tramp-ppc.c", 675, "code - buf <= tramp_size");
      <D.23837>:
      if (info != 0B) goto <D.23838>; else goto <D.23839>;
      <D.23838>:
      code.50 = (long int) code;
      buf.51 = (long int) buf;
      D.23830 = code.50 - buf.51;
      D.23840 = (unsigned int) D.23830;
      ji.52 = ji;
      D.23842 = mono_tramp_info_create ("generic_class_init_trampoline", buf, D.23840, ji.52, unwind_ops);
      *info = D.23842;
      <D.23839>:
      D.23843 = buf;
      return D.23843;
    }
  finally
    {
      ji = {CLOBBER};
    }
}


memset (void * __dest, int __ch, size_t __len)
{
  int D.23848;
  int D.23853;
  void * D.23855;
  long unsigned int D.23856;

  D.23848 = __builtin_constant_p (__len);
  if (D.23848 != 0) goto <D.23849>; else goto <D.23850>;
  <D.23849>:
  if (__len == 0) goto <D.23851>; else goto <D.23852>;
  <D.23851>:
  D.23853 = __builtin_constant_p (__ch);
  if (D.23853 == 0) goto <D.23846>; else goto <D.23854>;
  <D.23854>:
  if (__ch != 0) goto <D.23846>; else goto <D.23847>;
  <D.23846>:
  __warn_memset_zero_len ();
  D.23855 = __dest;
  return D.23855;
  <D.23847>:
  <D.23852>:
  <D.23850>:
  D.23856 = __builtin_object_size (__dest, 0);
  D.23855 = __builtin___memset_chk (__dest, __ch, __len, D.23856);
  return D.23855;
}


mono_arch_get_nullified_class_init_trampoline (struct MonoTrampInfo * * info)
{
  int tramp_size.53;
  long int code.54;
  long int buf.55;
  long int D.23861;
  int D.23862;
  long int D.23863;
  _Bool D.23864;
  long int D.23865;
  long int D.23866;
  unsigned int D.23871;
  struct MonoTrampInfo * D.23872;
  void * D.23873;
  guint8 * code;
  guint8 * buf;
  guint32 tramp_size;

  tramp_size = 64;
  tramp_size.53 = (int) tramp_size;
  buf = mono_global_codeman_reserve (tramp_size.53);
  code = buf;
  MEM[(guint32 *)code] = 536903758;
  code = code + 4;
  code.54 = (long int) code;
  buf.55 = (long int) buf;
  D.23861 = code.54 - buf.55;
  D.23862 = (int) D.23861;
  mono_arch_flush_icache (buf, D.23862);
  code.54 = (long int) code;
  buf.55 = (long int) buf;
  D.23861 = code.54 - buf.55;
  D.23863 = (long int) tramp_size;
  D.23864 = D.23861 > D.23863;
  D.23865 = (long int) D.23864;
  D.23866 = __builtin_expect (D.23865, 0);
  if (D.23866 != 0) goto <D.23867>; else goto <D.23868>;
  <D.23867>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "tramp-ppc.c", 694, "code - buf <= tramp_size");
  <D.23868>:
  if (info != 0B) goto <D.23869>; else goto <D.23870>;
  <D.23869>:
  code.54 = (long int) code;
  buf.55 = (long int) buf;
  D.23861 = code.54 - buf.55;
  D.23871 = (unsigned int) D.23861;
  D.23872 = mono_tramp_info_create ("nullified_class_init_trampoline", buf, D.23871, 0B, 0B);
  *info = D.23872;
  <D.23870>:
  D.23873 = buf;
  return D.23873;
}


mono_arch_get_call_target (guint8 * code)
{
  unsigned int D.23876;
  unsigned int D.23878;
  int ins.56;
  int D.23881;
  int D.23882;
  sizetype D.23883;
  sizetype D.23884;
  guint8 * D.23885;
  guint32 ins;

  ins = MEM[(guint32 *)code + -4B];
  D.23876 = ins >> 26;
  if (D.23876 == 18) goto <D.23877>; else goto <D.23875>;
  <D.23877>:
  D.23878 = ins & 3;
  if (D.23878 == 1) goto <D.23879>; else goto <D.23875>;
  <D.23879>:
  {
    gint32 disp;
    guint8 * target;

    ins.56 = (int) ins;
    D.23881 = ins.56 >> 2;
    disp = D.23881 & 16777215;
    D.23882 = disp * 4;
    D.23883 = (sizetype) D.23882;
    D.23884 = D.23883 + 18446744073709551612;
    target = code + D.23884;
    D.23885 = target;
    return D.23885;
  }
  <D.23875>:
  D.23885 = 0B;
  return D.23885;
}


mono_arch_get_plt_info_offset (guint8 * plt_entry, mgreg_t * regs, guint8 * code)
{
  guint32 D.23887;

  D.23887 = MEM[(guint32 *)plt_entry + 32B];
  return D.23887;
}


