mono_inst_set_src_registers (struct MonoInst * ins, int * regs)
{
  int D.28585;
  int D.28586;
  int D.28587;

  D.28585 = *regs;
  ins->sreg1 = D.28585;
  D.28586 = MEM[(int *)regs + 4B];
  ins->sreg2 = D.28586;
  D.28587 = MEM[(int *)regs + 8B];
  ins->sreg3 = D.28587;
}


mono_alloc_ireg (struct MonoCompile * cfg)
{
  guint32 D.28588;

  D.28588 = alloc_ireg (cfg);
  return D.28588;
}


alloc_ireg (struct MonoCompile * cfg)
{
  guint32 D.28590;
  unsigned int D.28591;
  unsigned int D.28592;
  unsigned int D.28593;

  D.28591 = cfg->next_vreg;
  D.28592 = D.28591;
  D.28593 = D.28592 + 1;
  cfg->next_vreg = D.28593;
  D.28590 = D.28592;
  return D.28590;
}


mono_alloc_freg (struct MonoCompile * cfg)
{
  guint32 D.28595;

  D.28595 = alloc_freg (cfg);
  return D.28595;
}


alloc_freg (struct MonoCompile * cfg)
{
  int D.28597;
  guint32 D.28600;
  unsigned int D.28601;
  unsigned int D.28602;
  unsigned int D.28603;

  D.28597 = mono_arch_is_soft_float ();
  if (D.28597 != 0) goto <D.28598>; else goto <D.28599>;
  <D.28598>:
  D.28600 = alloc_lreg (cfg);
  return D.28600;
  <D.28599>:
  D.28601 = cfg->next_vreg;
  D.28602 = D.28601;
  D.28603 = D.28602 + 1;
  cfg->next_vreg = D.28603;
  D.28600 = D.28602;
  return D.28600;
}


mono_arch_is_soft_float ()
{
  gboolean D.28605;

  D.28605 = 0;
  return D.28605;
}


alloc_lreg (struct MonoCompile * cfg)
{
  unsigned int D.28607;
  unsigned int D.28608;
  guint32 D.28609;
  guint32 res;

  res = cfg->next_vreg;
  D.28607 = cfg->next_vreg;
  D.28608 = D.28607 + 3;
  cfg->next_vreg = D.28608;
  D.28609 = res;
  return D.28609;
}


mono_alloc_preg (struct MonoCompile * cfg)
{
  guint32 D.28611;

  D.28611 = alloc_preg (cfg);
  return D.28611;
}


alloc_preg (struct MonoCompile * cfg)
{
  guint32 D.28613;

  D.28613 = alloc_ireg (cfg);
  return D.28613;
}


mono_alloc_dreg (struct MonoCompile * cfg, MonoStackType stack_type)
{
  guint32 D.28615;

  D.28615 = alloc_dreg (cfg, stack_type);
  return D.28615;
}


alloc_dreg (struct MonoCompile * cfg, MonoStackType stack_type)
{
  guint32 D.28617;

  switch (stack_type) <default: <D.24157>, case 1: <D.24150>, case 2: <D.24155>, case 3: <D.24151>, case 4: <D.24154>, case 5: <D.24152>, case 6: <D.24153>, case 7: <D.24156>>
  <D.24150>:
  <D.24151>:
  D.28617 = alloc_ireg (cfg);
  return D.28617;
  <D.24152>:
  D.28617 = alloc_ireg_mp (cfg);
  return D.28617;
  <D.24153>:
  D.28617 = alloc_ireg_ref (cfg);
  return D.28617;
  <D.24154>:
  D.28617 = alloc_freg (cfg);
  return D.28617;
  <D.24155>:
  D.28617 = alloc_lreg (cfg);
  return D.28617;
  <D.24156>:
  D.28617 = alloc_ireg (cfg);
  return D.28617;
  <D.24157>:
  monoeg_g_log (0B, 16, "Unknown stack type %x\n", stack_type);
  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "ir-emit.h", 97);
  D.28617 = 4294967295;
  return D.28617;
}


alloc_ireg_mp (struct MonoCompile * cfg)
{
  unsigned int D.28619;
  unsigned char D.28620;
  unsigned char D.28621;
  guint32 D.28624;
  int vreg;

  D.28619 = alloc_ireg (cfg);
  vreg = (int) D.28619;
  D.28620 = BIT_FIELD_REF <*cfg, 8, 3424>;
  D.28621 = D.28620 & 128;
  if (D.28621 != 0) goto <D.28622>; else goto <D.28623>;
  <D.28622>:
  mono_mark_vreg_as_mp (cfg, vreg);
  <D.28623>:
  D.28624 = (guint32) vreg;
  return D.28624;
}


alloc_ireg_ref (struct MonoCompile * cfg)
{
  unsigned int D.28626;
  unsigned char D.28627;
  unsigned char D.28628;
  guint32 D.28631;
  int vreg;

  D.28626 = alloc_ireg (cfg);
  vreg = (int) D.28626;
  D.28627 = BIT_FIELD_REF <*cfg, 8, 3424>;
  D.28628 = D.28627 & 128;
  if (D.28628 != 0) goto <D.28629>; else goto <D.28630>;
  <D.28629>:
  mono_mark_vreg_as_ref (cfg, vreg);
  <D.28630>:
  D.28631 = (guint32) vreg;
  return D.28631;
}


mono_alloc_ireg_ref (struct MonoCompile * cfg)
{
  guint32 D.28633;

  D.28633 = alloc_ireg_ref (cfg);
  return D.28633;
}


mono_alloc_ireg_mp (struct MonoCompile * cfg)
{
  guint32 D.28635;

  D.28635 = alloc_ireg_mp (cfg);
  return D.28635;
}


mono_alloc_ireg_copy (struct MonoCompile * cfg, guint32 vreg)
{
  unsigned int D.28638;
  gboolean * D.28640;
  unsigned int D.28641;
  gboolean * D.28642;
  int D.28643;
  guint32 D.28645;
  unsigned int D.28647;
  gboolean * D.28649;
  gboolean * D.28650;
  int D.28651;

  D.28638 = cfg->vreg_is_ref_len;
  if (D.28638 > vreg) goto <D.28639>; else goto <D.28637>;
  <D.28639>:
  D.28640 = cfg->vreg_is_ref;
  D.28641 = vreg * 4;
  D.28642 = D.28640 + D.28641;
  D.28643 = *D.28642;
  if (D.28643 != 0) goto <D.28644>; else goto <D.28637>;
  <D.28644>:
  D.28645 = alloc_ireg_ref (cfg);
  return D.28645;
  <D.28637>:
  D.28647 = cfg->vreg_is_mp_len;
  if (D.28647 > vreg) goto <D.28648>; else goto <D.28646>;
  <D.28648>:
  D.28649 = cfg->vreg_is_mp;
  D.28641 = vreg * 4;
  D.28650 = D.28649 + D.28641;
  D.28651 = *D.28650;
  if (D.28651 != 0) goto <D.28652>; else goto <D.28646>;
  <D.28652>:
  D.28645 = alloc_ireg_mp (cfg);
  return D.28645;
  <D.28646>:
  D.28645 = alloc_ireg (cfg);
  return D.28645;
}


mono_type_to_regmove (struct MonoCompile * cfg, struct MonoType * type)
{
  unsigned char D.28654;
  unsigned char D.28655;
  guint D.28658;
  unsigned char D.28659;
  int D.28660;
  struct MonoClass * D.28661;
  unsigned char D.28662;
  unsigned char D.28663;
  unsigned int D.28666;
  unsigned int D.28667;
  struct MonoClass * D.28670;
  unsigned char D.28671;
  unsigned char D.28672;
  struct MonoGenericClass * D.28675;
  struct MonoClass * D.28676;
  struct MonoGenericSharingContext * D.28677;
  _Bool D.28678;
  long int D.28679;
  long int D.28680;
  int D.28683;
  void handle_enum = <<< error >>>;

  D.28654 = BIT_FIELD_REF <*type, 8, 56>;
  D.28655 = D.28654 & 64;
  if (D.28655 != 0) goto <D.28656>; else goto <D.28657>;
  <D.28656>:
  D.28658 = 428;
  return D.28658;
  <D.28657>:
  type = mini_replace_type (type);
  handle_enum:
  D.28659 = type->type;
  D.28660 = (int) D.28659;
  switch (D.28660) <default: <D.24523>, case 2: <D.24499>, case 3: <D.24502>, case 4: <D.24497>, case 5: <D.24498>, case 6: <D.24500>, case 7: <D.24501>, case 8: <D.24503>, case 9: <D.24504>, case 10: <D.24514>, case 11: <D.24515>, case 12: <D.24516>, case 13: <D.24517>, case 14: <D.24510>, case 15: <D.24507>, case 17: <D.24518>, case 18: <D.24509>, case 19: <D.24521>, case 20: <D.24513>, case 21: <D.24520>, case 22: <D.24519>, case 24: <D.24505>, case 25: <D.24506>, case 27: <D.24508>, case 28: <D.24511>, case 29: <D.24512>, case 30: <D.24522>>
  <D.24497>:
  <D.24498>:
  <D.24499>:
  D.28658 = 428;
  return D.28658;
  <D.24500>:
  <D.24501>:
  <D.24502>:
  D.28658 = 428;
  return D.28658;
  <D.24503>:
  <D.24504>:
  D.28658 = 428;
  return D.28658;
  <D.24505>:
  <D.24506>:
  <D.24507>:
  <D.24508>:
  D.28658 = 428;
  return D.28658;
  <D.24509>:
  <D.24510>:
  <D.24511>:
  <D.24512>:
  <D.24513>:
  D.28658 = 428;
  return D.28658;
  <D.24514>:
  <D.24515>:
  D.28658 = 429;
  return D.28658;
  <D.24516>:
  D.28658 = 430;
  return D.28658;
  <D.24517>:
  D.28658 = 430;
  return D.28658;
  <D.24518>:
  D.28661 = type->data.klass;
  D.28662 = BIT_FIELD_REF <*D.28661, 8, 160>;
  D.28663 = D.28662 & 16;
  if (D.28663 != 0) goto <D.28664>; else goto <D.28665>;
  <D.28664>:
  D.28661 = type->data.klass;
  type = mono_class_enum_basetype (D.28661);
  goto handle_enum;
  <D.28665>:
  D.28666 = cfg->opt;
  D.28667 = D.28666 & 67108864;
  if (D.28667 != 0) goto <D.28668>; else goto <D.28669>;
  <D.28668>:
  D.28670 = mono_class_from_mono_type (type);
  D.28671 = BIT_FIELD_REF <*D.28670, 8, 192>;
  D.28672 = D.28671 & 2;
  if (D.28672 != 0) goto <D.28673>; else goto <D.28674>;
  <D.28673>:
  D.28658 = 962;
  return D.28658;
  <D.28674>:
  <D.28669>:
  D.28658 = 431;
  return D.28658;
  <D.24519>:
  D.28658 = 431;
  return D.28658;
  <D.24520>:
  D.28675 = type->data.generic_class;
  D.28676 = D.28675->container_class;
  type = &D.28676->byval_arg;
  goto handle_enum;
  <D.24521>:
  <D.24522>:
  D.28677 = cfg->generic_sharing_context;
  D.28678 = D.28677 == 0B;
  D.28679 = (long int) D.28678;
  D.28680 = __builtin_expect (D.28679, 0);
  if (D.28680 != 0) goto <D.28681>; else goto <D.28682>;
  <D.28681>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 324, "cfg->generic_sharing_context");
  <D.28682>:
  D.28683 = mini_type_var_is_vt (cfg, type);
  if (D.28683 != 0) goto <D.28684>; else goto <D.28685>;
  <D.28684>:
  D.28658 = 431;
  return D.28658;
  <D.28685>:
  D.28658 = 428;
  return D.28658;
  <D.24523>:
  D.28659 = type->type;
  D.28660 = (int) D.28659;
  monoeg_g_log (0B, 4, "unknown type 0x%02x in type_to_regstore", D.28660);
  <D.24524>:
  goto <D.24524>;
  D.28658 = 4294967295;
  return D.28658;
}


mono_print_bb (struct MonoBasicBlock * bb, const char * msg)
{
  int D.28687;
  struct MonoBasicBlock * * D.28688;
  unsigned int i.0;
  unsigned int D.28690;
  struct MonoBasicBlock * * D.28691;
  struct MonoBasicBlock * D.28692;
  int D.28693;
  int D.28694;
  short int D.28695;
  int D.28696;
  struct MonoBasicBlock * * D.28697;
  struct MonoBasicBlock * * D.28698;
  struct MonoBasicBlock * D.28699;
  int D.28700;
  int D.28701;
  short int D.28702;
  int D.28703;
  int i;
  struct MonoInst * tree;

  D.28687 = bb->block_num;
  printf ("\n%s %d: [IN: ", msg, D.28687);
  i = 0;
  goto <D.24532>;
  <D.24531>:
  D.28688 = bb->in_bb;
  i.0 = (unsigned int) i;
  D.28690 = i.0 * 4;
  D.28691 = D.28688 + D.28690;
  D.28692 = *D.28691;
  D.28693 = D.28692->dfn;
  D.28688 = bb->in_bb;
  i.0 = (unsigned int) i;
  D.28690 = i.0 * 4;
  D.28691 = D.28688 + D.28690;
  D.28692 = *D.28691;
  D.28694 = D.28692->block_num;
  printf (" BB%d(%d)", D.28694, D.28693);
  i = i + 1;
  <D.24532>:
  D.28695 = bb->in_count;
  D.28696 = (int) D.28695;
  if (D.28696 > i) goto <D.24531>; else goto <D.24533>;
  <D.24533>:
  printf (", OUT: ");
  i = 0;
  goto <D.24535>;
  <D.24534>:
  D.28697 = bb->out_bb;
  i.0 = (unsigned int) i;
  D.28690 = i.0 * 4;
  D.28698 = D.28697 + D.28690;
  D.28699 = *D.28698;
  D.28700 = D.28699->dfn;
  D.28697 = bb->out_bb;
  i.0 = (unsigned int) i;
  D.28690 = i.0 * 4;
  D.28698 = D.28697 + D.28690;
  D.28699 = *D.28698;
  D.28701 = D.28699->block_num;
  printf (" BB%d(%d)", D.28701, D.28700);
  i = i + 1;
  <D.24535>:
  D.28702 = bb->out_count;
  D.28703 = (int) D.28702;
  if (D.28703 > i) goto <D.24534>; else goto <D.24536>;
  <D.24536>:
  printf (" ]\n");
  tree = bb->code;
  goto <D.24538>;
  <D.24537>:
  mono_print_ins_index (-1, tree);
  tree = tree->next;
  <D.24538>:
  if (tree != 0B) goto <D.24537>; else goto <D.24539>;
  <D.24539>:
}


printf (const char * restrict __fmt)
{
  int D.28704;

  D.28704 = __printf_chk (1, __fmt, __builtin_va_arg_pack ());
  return D.28704;
}


mono_create_helper_signatures ()
{
  struct MonoMethodSignature * helper_sig_domain_get.1;
  struct MonoMethodSignature * helper_sig_class_init_trampoline.2;
  struct MonoMethodSignature * helper_sig_generic_class_init_trampoline.3;
  struct MonoMethodSignature * helper_sig_generic_class_init_trampoline_llvm.4;
  struct MonoMethodSignature * helper_sig_rgctx_lazy_fetch_trampoline.5;
  struct MonoMethodSignature * helper_sig_monitor_enter_exit_trampoline.6;
  struct MonoMethodSignature * helper_sig_monitor_enter_exit_trampoline_llvm.7;

  helper_sig_domain_get.1 = mono_create_icall_signature ("ptr");
  helper_sig_domain_get = helper_sig_domain_get.1;
  helper_sig_class_init_trampoline.2 = mono_create_icall_signature ("void");
  helper_sig_class_init_trampoline = helper_sig_class_init_trampoline.2;
  helper_sig_generic_class_init_trampoline.3 = mono_create_icall_signature ("void");
  helper_sig_generic_class_init_trampoline = helper_sig_generic_class_init_trampoline.3;
  helper_sig_generic_class_init_trampoline_llvm.4 = mono_create_icall_signature ("void ptr");
  helper_sig_generic_class_init_trampoline_llvm = helper_sig_generic_class_init_trampoline_llvm.4;
  helper_sig_rgctx_lazy_fetch_trampoline.5 = mono_create_icall_signature ("ptr ptr");
  helper_sig_rgctx_lazy_fetch_trampoline = helper_sig_rgctx_lazy_fetch_trampoline.5;
  helper_sig_monitor_enter_exit_trampoline.6 = mono_create_icall_signature ("void");
  helper_sig_monitor_enter_exit_trampoline = helper_sig_monitor_enter_exit_trampoline.6;
  helper_sig_monitor_enter_exit_trampoline_llvm.7 = mono_create_icall_signature ("void object");
  helper_sig_monitor_enter_exit_trampoline_llvm = helper_sig_monitor_enter_exit_trampoline_llvm.7;
}


mono_link_bblock (struct MonoCompile * cfg, struct MonoBasicBlock * from, struct MonoBasicBlock * to)
{
  link_bblock (cfg, from, to);
}


link_bblock (struct MonoCompile * cfg, struct MonoBasicBlock * from, struct MonoBasicBlock * to)
{
  struct MonoBasicBlock * * D.28713;
  unsigned int i.8;
  unsigned int D.28715;
  struct MonoBasicBlock * * D.28716;
  struct MonoBasicBlock * D.28717;
  short int D.28720;
  int D.28721;
  int D.28724;
  unsigned int D.28725;
  unsigned int D.28726;
  struct MonoMemPool * D.28727;
  struct MonoBasicBlock * * D.28728;
  short int D.28729;
  unsigned short D.28730;
  unsigned short D.28731;
  short int D.28732;
  struct MonoBasicBlock * * D.28733;
  struct MonoBasicBlock * * D.28734;
  struct MonoBasicBlock * D.28735;
  short int D.28738;
  int D.28739;
  int D.28742;
  unsigned int D.28743;
  unsigned int D.28744;
  short int D.28745;
  unsigned short D.28746;
  unsigned short D.28747;
  short int D.28748;
  struct MonoBasicBlock * * newa;
  int i;
  int found;

  found = 0;
  i = 0;
  goto <D.24553>;
  <D.24552>:
  D.28713 = from->out_bb;
  i.8 = (unsigned int) i;
  D.28715 = i.8 * 4;
  D.28716 = D.28713 + D.28715;
  D.28717 = *D.28716;
  if (D.28717 == to) goto <D.28718>; else goto <D.28719>;
  <D.28718>:
  found = 1;
  goto <D.24551>;
  <D.28719>:
  i = i + 1;
  <D.24553>:
  D.28720 = from->out_count;
  D.28721 = (int) D.28720;
  if (D.28721 > i) goto <D.24552>; else goto <D.24551>;
  <D.24551>:
  if (found == 0) goto <D.28722>; else goto <D.28723>;
  <D.28722>:
  D.28720 = from->out_count;
  D.28721 = (int) D.28720;
  D.28724 = D.28721 + 1;
  D.28725 = (unsigned int) D.28724;
  D.28726 = D.28725 * 4;
  D.28727 = cfg->mempool;
  newa = mono_mempool_alloc (D.28727, D.28726);
  i = 0;
  goto <D.24555>;
  <D.24554>:
  i.8 = (unsigned int) i;
  D.28715 = i.8 * 4;
  D.28728 = newa + D.28715;
  D.28713 = from->out_bb;
  i.8 = (unsigned int) i;
  D.28715 = i.8 * 4;
  D.28716 = D.28713 + D.28715;
  D.28717 = *D.28716;
  *D.28728 = D.28717;
  i = i + 1;
  <D.24555>:
  D.28720 = from->out_count;
  D.28721 = (int) D.28720;
  if (D.28721 > i) goto <D.24554>; else goto <D.24556>;
  <D.24556>:
  i.8 = (unsigned int) i;
  D.28715 = i.8 * 4;
  D.28728 = newa + D.28715;
  *D.28728 = to;
  D.28720 = from->out_count;
  D.28729 = D.28720;
  D.28730 = (unsigned short) D.28729;
  D.28731 = D.28730 + 1;
  D.28732 = (short int) D.28731;
  from->out_count = D.28732;
  from->out_bb = newa;
  <D.28723>:
  found = 0;
  i = 0;
  goto <D.24559>;
  <D.24558>:
  D.28733 = to->in_bb;
  i.8 = (unsigned int) i;
  D.28715 = i.8 * 4;
  D.28734 = D.28733 + D.28715;
  D.28735 = *D.28734;
  if (D.28735 == from) goto <D.28736>; else goto <D.28737>;
  <D.28736>:
  found = 1;
  goto <D.24557>;
  <D.28737>:
  i = i + 1;
  <D.24559>:
  D.28738 = to->in_count;
  D.28739 = (int) D.28738;
  if (D.28739 > i) goto <D.24558>; else goto <D.24557>;
  <D.24557>:
  if (found == 0) goto <D.28740>; else goto <D.28741>;
  <D.28740>:
  D.28738 = to->in_count;
  D.28739 = (int) D.28738;
  D.28742 = D.28739 + 1;
  D.28743 = (unsigned int) D.28742;
  D.28744 = D.28743 * 4;
  D.28727 = cfg->mempool;
  newa = mono_mempool_alloc (D.28727, D.28744);
  i = 0;
  goto <D.24561>;
  <D.24560>:
  i.8 = (unsigned int) i;
  D.28715 = i.8 * 4;
  D.28728 = newa + D.28715;
  D.28733 = to->in_bb;
  i.8 = (unsigned int) i;
  D.28715 = i.8 * 4;
  D.28734 = D.28733 + D.28715;
  D.28735 = *D.28734;
  *D.28728 = D.28735;
  i = i + 1;
  <D.24561>:
  D.28738 = to->in_count;
  D.28739 = (int) D.28738;
  if (D.28739 > i) goto <D.24560>; else goto <D.24562>;
  <D.24562>:
  i.8 = (unsigned int) i;
  D.28715 = i.8 * 4;
  D.28728 = newa + D.28715;
  *D.28728 = from;
  D.28738 = to->in_count;
  D.28745 = D.28738;
  D.28746 = (unsigned short) D.28745;
  D.28747 = D.28746 + 1;
  D.28748 = (short int) D.28747;
  to->in_count = D.28748;
  to->in_bb = newa;
  <D.28741>:
}


mono_find_exvar_for_offset (struct MonoCompile * cfg, int offset)
{
  struct MonoInst * D.28749;
  const void * offset.9;
  struct GHashTable * D.28751;

  offset.9 = (const void *) offset;
  D.28751 = cfg->exvars;
  D.28749 = monoeg_g_hash_table_lookup (D.28751, offset.9);
  return D.28749;
}


type_to_eval_stack_type (struct MonoCompile * cfg, struct MonoType * type, struct MonoInst * inst)
{
  unsigned char D.28753;
  unsigned char D.28754;
  unsigned char D.28757;
  int D.28758;
  struct MonoClass * D.28759;
  unsigned char D.28760;
  unsigned char D.28761;
  struct MonoClass * D.28764;
  struct MonoGenericClass * D.28765;
  struct MonoClass * D.28766;
  struct MonoGenericSharingContext * D.28767;
  _Bool D.28768;
  long int D.28769;
  long int D.28770;
  int D.28773;
  int D.28776;
  _Bool D.28777;
  long int D.28778;
  long int D.28779;
  struct MonoClass * klass;
  void handle_enum = <<< error >>>;

  type = mini_replace_type (type);
  klass = mono_class_from_mono_type (type);
  inst->klass = klass;
  D.28753 = BIT_FIELD_REF <*type, 8, 56>;
  D.28754 = D.28753 & 64;
  if (D.28754 != 0) goto <D.28755>; else goto <D.28756>;
  <D.28755>:
  inst->type = 5;
  return;
  <D.28756>:
  handle_enum:
  D.28757 = type->type;
  D.28758 = (int) D.28757;
  switch (D.28758) <default: <D.24639>, case 1: <D.24612>, case 2: <D.24615>, case 3: <D.24618>, case 4: <D.24613>, case 5: <D.24614>, case 6: <D.24616>, case 7: <D.24617>, case 8: <D.24619>, case 9: <D.24620>, case 10: <D.24630>, case 11: <D.24631>, case 12: <D.24632>, case 13: <D.24633>, case 14: <D.24626>, case 15: <D.24623>, case 17: <D.24634>, case 18: <D.24625>, case 19: <D.24637>, case 20: <D.24629>, case 21: <D.24636>, case 22: <D.24635>, case 24: <D.24621>, case 25: <D.24622>, case 27: <D.24624>, case 28: <D.24627>, case 29: <D.24628>, case 30: <D.24638>>
  <D.24612>:
  inst->type = 0;
  return;
  <D.24613>:
  <D.24614>:
  <D.24615>:
  <D.24616>:
  <D.24617>:
  <D.24618>:
  <D.24619>:
  <D.24620>:
  inst->type = 1;
  return;
  <D.24621>:
  <D.24622>:
  <D.24623>:
  <D.24624>:
  inst->type = 3;
  return;
  <D.24625>:
  <D.24626>:
  <D.24627>:
  <D.24628>:
  <D.24629>:
  inst->type = 6;
  return;
  <D.24630>:
  <D.24631>:
  inst->type = 2;
  return;
  <D.24632>:
  <D.24633>:
  inst->type = 4;
  return;
  <D.24634>:
  D.28759 = type->data.klass;
  D.28760 = BIT_FIELD_REF <*D.28759, 8, 160>;
  D.28761 = D.28760 & 16;
  if (D.28761 != 0) goto <D.28762>; else goto <D.28763>;
  <D.28762>:
  D.28759 = type->data.klass;
  type = mono_class_enum_basetype (D.28759);
  goto handle_enum;
  <D.28763>:
  inst->klass = klass;
  inst->type = 7;
  return;
  <D.24635>:
  D.28764 = mono_defaults.typed_reference_class;
  inst->klass = D.28764;
  inst->type = 7;
  return;
  <D.24636>:
  D.28765 = type->data.generic_class;
  D.28766 = D.28765->container_class;
  type = &D.28766->byval_arg;
  goto handle_enum;
  <D.24637>:
  <D.24638>:
  D.28767 = cfg->generic_sharing_context;
  D.28768 = D.28767 == 0B;
  D.28769 = (long int) D.28768;
  D.28770 = __builtin_expect (D.28769, 0);
  if (D.28770 != 0) goto <D.28771>; else goto <D.28772>;
  <D.28771>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 717, "cfg->generic_sharing_context");
  <D.28772>:
  D.28773 = mini_is_gsharedvt_type (cfg, type);
  if (D.28773 != 0) goto <D.28774>; else goto <D.28775>;
  <D.28774>:
  D.28776 = cfg->gsharedvt;
  D.28777 = D.28776 == 0;
  D.28778 = (long int) D.28777;
  D.28779 = __builtin_expect (D.28778, 0);
  if (D.28779 != 0) goto <D.28780>; else goto <D.28781>;
  <D.28780>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 719, "cfg->gsharedvt");
  <D.28781>:
  inst->type = 7;
  goto <D.28782>;
  <D.28775>:
  inst->type = 6;
  <D.28782>:
  return;
  <D.24639>:
  D.28757 = type->type;
  D.28758 = (int) D.28757;
  monoeg_g_log (0B, 4, "unknown type 0x%02x in eval stack type", D.28758);
  <D.24640>:
  goto <D.24640>;
}


mono_get_got_var (struct MonoCompile * cfg)
{
  unsigned char D.28784;
  unsigned char D.28785;
  struct MonoInst * D.28788;
  struct MonoInst * D.28789;
  struct MonoClass * D.28792;
  struct MonoType * D.28793;
  struct MonoInst * D.28794;

  D.28784 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.28785 = D.28784 & 64;
  if (D.28785 == 0) goto <D.28786>; else goto <D.28787>;
  <D.28786>:
  D.28788 = 0B;
  return D.28788;
  <D.28787>:
  D.28789 = cfg->got_var;
  if (D.28789 == 0B) goto <D.28790>; else goto <D.28791>;
  <D.28790>:
  D.28792 = mono_defaults.int_class;
  D.28793 = &D.28792->byval_arg;
  D.28794 = mono_compile_create_var (cfg, D.28793, 329);
  cfg->got_var = D.28794;
  <D.28791>:
  D.28788 = cfg->got_var;
  return D.28788;
}


mini_emit_memcpy (struct MonoCompile * cfg, int destreg, int doffset, int srcreg, int soffset, int size, int align)
{
  _Bool D.28798;
  long int D.28799;
  long int D.28800;
  unsigned int D.28805;
  struct MonoMemPool * D.28806;
  int D.28807;
  struct MonoInst * D.28808;
  int D.28809;
  int D.28810;
  const unsigned char * D.28811;
  struct MonoBasicBlock * D.28812;
  struct MonoInst * D.28813;
  int D.28817;
  struct MonoInst * D.28818;
  int D.28819;
  int D.28820;
  unsigned int D.28826;
  int D.28827;
  struct MonoInst * D.28828;
  int D.28829;
  int D.28830;
  int D.28834;
  struct MonoInst * D.28835;
  int D.28836;
  int D.28837;
  unsigned int D.28841;
  int D.28842;
  struct MonoInst * D.28843;
  int D.28844;
  int D.28845;
  int D.28849;
  struct MonoInst * D.28850;
  int D.28851;
  int D.28852;
  unsigned int D.28856;
  int D.28857;
  struct MonoInst * D.28858;
  int D.28859;
  int D.28860;
  int D.28864;
  struct MonoInst * D.28865;
  int D.28866;
  int D.28867;
  unsigned int D.28871;
  int D.28872;
  struct MonoInst * D.28873;
  int D.28874;
  int D.28875;
  int D.28879;
  struct MonoInst * D.28880;
  int D.28881;
  int D.28882;
  int cur_reg;

  if (align == 0) goto <D.28796>; else goto <D.28797>;
  <D.28796>:
  align = 4;
  <D.28797>:
  D.28798 = size > 9999;
  D.28799 = (long int) D.28798;
  D.28800 = __builtin_expect (D.28799, 0);
  if (D.28800 != 0) goto <D.28801>; else goto <D.28802>;
  <D.28801>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1826, "size < 10000");
  <D.28802>:
  if (align <= 3) goto <D.28803>; else goto <D.28804>;
  <D.28803>:
  goto <D.25154>;
  <D.25153>:
  D.28805 = alloc_preg (cfg);
  cur_reg = (int) D.28805;
  {
    struct MonoInst * inst;

    D.28806 = cfg->mempool;
    inst = mono_mempool_alloc (D.28806, 48);
    inst->data.op[1].const_val = 0;
    D.28807 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.28807;
    inst->prev = 0B;
    D.28808 = inst->prev;
    inst->next = D.28808;
    inst->opcode = 392;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.28809 = inst->sreg3;
    inst->sreg2 = D.28809;
    D.28810 = inst->sreg2;
    inst->sreg1 = D.28810;
    D.28811 = cfg->ip;
    inst->cil_code = D.28811;
    inst->dreg = cur_reg;
    inst->sreg1 = srcreg;
    inst->data.op[0].const_val = soffset;
    D.28812 = cfg->cbb;
    D.28813 = D.28812->last_ins;
    if (D.28813 != 0B) goto <D.28814>; else goto <D.28815>;
    <D.28814>:
    D.28812 = cfg->cbb;
    D.28813 = D.28812->last_ins;
    D.28813->next = inst;
    D.28812 = cfg->cbb;
    D.28813 = D.28812->last_ins;
    inst->prev = D.28813;
    D.28812 = cfg->cbb;
    D.28812->last_ins = inst;
    goto <D.28816>;
    <D.28815>:
    D.28812 = cfg->cbb;
    D.28812 = cfg->cbb;
    D.28812->last_ins = inst;
    D.28813 = D.28812->last_ins;
    D.28812->code = D.28813;
    <D.28816>:
  }
  {
    struct MonoInst * inst;

    D.28806 = cfg->mempool;
    inst = mono_mempool_alloc (D.28806, 48);
    inst->data.op[1].const_val = 0;
    D.28817 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.28817;
    inst->prev = 0B;
    D.28818 = inst->prev;
    inst->next = D.28818;
    inst->opcode = 375;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.28819 = inst->sreg3;
    inst->sreg2 = D.28819;
    D.28820 = inst->sreg2;
    inst->sreg1 = D.28820;
    D.28811 = cfg->ip;
    inst->cil_code = D.28811;
    inst->sreg1 = cur_reg;
    inst->dreg = destreg;
    inst->data.op[0].const_val = doffset;
    D.28812 = cfg->cbb;
    D.28813 = D.28812->last_ins;
    if (D.28813 != 0B) goto <D.28821>; else goto <D.28822>;
    <D.28821>:
    D.28812 = cfg->cbb;
    D.28813 = D.28812->last_ins;
    D.28813->next = inst;
    D.28812 = cfg->cbb;
    D.28813 = D.28812->last_ins;
    inst->prev = D.28813;
    D.28812 = cfg->cbb;
    D.28812->last_ins = inst;
    goto <D.28823>;
    <D.28822>:
    D.28812 = cfg->cbb;
    D.28812 = cfg->cbb;
    D.28812->last_ins = inst;
    D.28813 = D.28812->last_ins;
    D.28812->code = D.28813;
    <D.28823>:
  }
  doffset = doffset + 1;
  soffset = soffset + 1;
  size = size + -1;
  <D.25154>:
  if (size > 0) goto <D.25153>; else goto <D.25155>;
  <D.25155>:
  <D.28804>:
  if (0 != 0) goto <D.28824>; else goto <D.28825>;
  <D.28824>:
  goto <D.25159>;
  <D.25158>:
  D.28826 = alloc_preg (cfg);
  cur_reg = (int) D.28826;
  {
    struct MonoInst * inst;

    D.28806 = cfg->mempool;
    inst = mono_mempool_alloc (D.28806, 48);
    inst->data.op[1].const_val = 0;
    D.28827 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.28827;
    inst->prev = 0B;
    D.28828 = inst->prev;
    inst->next = D.28828;
    inst->opcode = 398;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.28829 = inst->sreg3;
    inst->sreg2 = D.28829;
    D.28830 = inst->sreg2;
    inst->sreg1 = D.28830;
    D.28811 = cfg->ip;
    inst->cil_code = D.28811;
    inst->dreg = cur_reg;
    inst->sreg1 = srcreg;
    inst->data.op[0].const_val = soffset;
    D.28812 = cfg->cbb;
    D.28813 = D.28812->last_ins;
    if (D.28813 != 0B) goto <D.28831>; else goto <D.28832>;
    <D.28831>:
    D.28812 = cfg->cbb;
    D.28813 = D.28812->last_ins;
    D.28813->next = inst;
    D.28812 = cfg->cbb;
    D.28813 = D.28812->last_ins;
    inst->prev = D.28813;
    D.28812 = cfg->cbb;
    D.28812->last_ins = inst;
    goto <D.28833>;
    <D.28832>:
    D.28812 = cfg->cbb;
    D.28812 = cfg->cbb;
    D.28812->last_ins = inst;
    D.28813 = D.28812->last_ins;
    D.28812->code = D.28813;
    <D.28833>:
  }
  {
    struct MonoInst * inst;

    D.28806 = cfg->mempool;
    inst = mono_mempool_alloc (D.28806, 48);
    inst->data.op[1].const_val = 0;
    D.28834 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.28834;
    inst->prev = 0B;
    D.28835 = inst->prev;
    inst->next = D.28835;
    inst->opcode = 378;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.28836 = inst->sreg3;
    inst->sreg2 = D.28836;
    D.28837 = inst->sreg2;
    inst->sreg1 = D.28837;
    D.28811 = cfg->ip;
    inst->cil_code = D.28811;
    inst->sreg1 = cur_reg;
    inst->dreg = destreg;
    inst->data.op[0].const_val = doffset;
    D.28812 = cfg->cbb;
    D.28813 = D.28812->last_ins;
    if (D.28813 != 0B) goto <D.28838>; else goto <D.28839>;
    <D.28838>:
    D.28812 = cfg->cbb;
    D.28813 = D.28812->last_ins;
    D.28813->next = inst;
    D.28812 = cfg->cbb;
    D.28813 = D.28812->last_ins;
    inst->prev = D.28813;
    D.28812 = cfg->cbb;
    D.28812->last_ins = inst;
    goto <D.28840>;
    <D.28839>:
    D.28812 = cfg->cbb;
    D.28812 = cfg->cbb;
    D.28812->last_ins = inst;
    D.28813 = D.28812->last_ins;
    D.28812->code = D.28813;
    <D.28840>:
  }
  doffset = doffset + 8;
  soffset = soffset + 8;
  size = size + -8;
  <D.25159>:
  if (size > 7) goto <D.25158>; else goto <D.25160>;
  <D.25160>:
  <D.28825>:
  goto <D.25164>;
  <D.25163>:
  D.28841 = alloc_preg (cfg);
  cur_reg = (int) D.28841;
  {
    struct MonoInst * inst;

    D.28806 = cfg->mempool;
    inst = mono_mempool_alloc (D.28806, 48);
    inst->data.op[1].const_val = 0;
    D.28842 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.28842;
    inst->prev = 0B;
    D.28843 = inst->prev;
    inst->next = D.28843;
    inst->opcode = 396;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.28844 = inst->sreg3;
    inst->sreg2 = D.28844;
    D.28845 = inst->sreg2;
    inst->sreg1 = D.28845;
    D.28811 = cfg->ip;
    inst->cil_code = D.28811;
    inst->dreg = cur_reg;
    inst->sreg1 = srcreg;
    inst->data.op[0].const_val = soffset;
    D.28812 = cfg->cbb;
    D.28813 = D.28812->last_ins;
    if (D.28813 != 0B) goto <D.28846>; else goto <D.28847>;
    <D.28846>:
    D.28812 = cfg->cbb;
    D.28813 = D.28812->last_ins;
    D.28813->next = inst;
    D.28812 = cfg->cbb;
    D.28813 = D.28812->last_ins;
    inst->prev = D.28813;
    D.28812 = cfg->cbb;
    D.28812->last_ins = inst;
    goto <D.28848>;
    <D.28847>:
    D.28812 = cfg->cbb;
    D.28812 = cfg->cbb;
    D.28812->last_ins = inst;
    D.28813 = D.28812->last_ins;
    D.28812->code = D.28813;
    <D.28848>:
  }
  {
    struct MonoInst * inst;

    D.28806 = cfg->mempool;
    inst = mono_mempool_alloc (D.28806, 48);
    inst->data.op[1].const_val = 0;
    D.28849 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.28849;
    inst->prev = 0B;
    D.28850 = inst->prev;
    inst->next = D.28850;
    inst->opcode = 377;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.28851 = inst->sreg3;
    inst->sreg2 = D.28851;
    D.28852 = inst->sreg2;
    inst->sreg1 = D.28852;
    D.28811 = cfg->ip;
    inst->cil_code = D.28811;
    inst->sreg1 = cur_reg;
    inst->dreg = destreg;
    inst->data.op[0].const_val = doffset;
    D.28812 = cfg->cbb;
    D.28813 = D.28812->last_ins;
    if (D.28813 != 0B) goto <D.28853>; else goto <D.28854>;
    <D.28853>:
    D.28812 = cfg->cbb;
    D.28813 = D.28812->last_ins;
    D.28813->next = inst;
    D.28812 = cfg->cbb;
    D.28813 = D.28812->last_ins;
    inst->prev = D.28813;
    D.28812 = cfg->cbb;
    D.28812->last_ins = inst;
    goto <D.28855>;
    <D.28854>:
    D.28812 = cfg->cbb;
    D.28812 = cfg->cbb;
    D.28812->last_ins = inst;
    D.28813 = D.28812->last_ins;
    D.28812->code = D.28813;
    <D.28855>:
  }
  doffset = doffset + 4;
  soffset = soffset + 4;
  size = size + -4;
  <D.25164>:
  if (size > 3) goto <D.25163>; else goto <D.25165>;
  <D.25165>:
  goto <D.25169>;
  <D.25168>:
  D.28856 = alloc_preg (cfg);
  cur_reg = (int) D.28856;
  {
    struct MonoInst * inst;

    D.28806 = cfg->mempool;
    inst = mono_mempool_alloc (D.28806, 48);
    inst->data.op[1].const_val = 0;
    D.28857 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.28857;
    inst->prev = 0B;
    D.28858 = inst->prev;
    inst->next = D.28858;
    inst->opcode = 394;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.28859 = inst->sreg3;
    inst->sreg2 = D.28859;
    D.28860 = inst->sreg2;
    inst->sreg1 = D.28860;
    D.28811 = cfg->ip;
    inst->cil_code = D.28811;
    inst->dreg = cur_reg;
    inst->sreg1 = srcreg;
    inst->data.op[0].const_val = soffset;
    D.28812 = cfg->cbb;
    D.28813 = D.28812->last_ins;
    if (D.28813 != 0B) goto <D.28861>; else goto <D.28862>;
    <D.28861>:
    D.28812 = cfg->cbb;
    D.28813 = D.28812->last_ins;
    D.28813->next = inst;
    D.28812 = cfg->cbb;
    D.28813 = D.28812->last_ins;
    inst->prev = D.28813;
    D.28812 = cfg->cbb;
    D.28812->last_ins = inst;
    goto <D.28863>;
    <D.28862>:
    D.28812 = cfg->cbb;
    D.28812 = cfg->cbb;
    D.28812->last_ins = inst;
    D.28813 = D.28812->last_ins;
    D.28812->code = D.28813;
    <D.28863>:
  }
  {
    struct MonoInst * inst;

    D.28806 = cfg->mempool;
    inst = mono_mempool_alloc (D.28806, 48);
    inst->data.op[1].const_val = 0;
    D.28864 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.28864;
    inst->prev = 0B;
    D.28865 = inst->prev;
    inst->next = D.28865;
    inst->opcode = 376;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.28866 = inst->sreg3;
    inst->sreg2 = D.28866;
    D.28867 = inst->sreg2;
    inst->sreg1 = D.28867;
    D.28811 = cfg->ip;
    inst->cil_code = D.28811;
    inst->sreg1 = cur_reg;
    inst->dreg = destreg;
    inst->data.op[0].const_val = doffset;
    D.28812 = cfg->cbb;
    D.28813 = D.28812->last_ins;
    if (D.28813 != 0B) goto <D.28868>; else goto <D.28869>;
    <D.28868>:
    D.28812 = cfg->cbb;
    D.28813 = D.28812->last_ins;
    D.28813->next = inst;
    D.28812 = cfg->cbb;
    D.28813 = D.28812->last_ins;
    inst->prev = D.28813;
    D.28812 = cfg->cbb;
    D.28812->last_ins = inst;
    goto <D.28870>;
    <D.28869>:
    D.28812 = cfg->cbb;
    D.28812 = cfg->cbb;
    D.28812->last_ins = inst;
    D.28813 = D.28812->last_ins;
    D.28812->code = D.28813;
    <D.28870>:
  }
  doffset = doffset + 2;
  soffset = soffset + 2;
  size = size + -2;
  <D.25169>:
  if (size > 1) goto <D.25168>; else goto <D.25170>;
  <D.25170>:
  goto <D.25174>;
  <D.25173>:
  D.28871 = alloc_preg (cfg);
  cur_reg = (int) D.28871;
  {
    struct MonoInst * inst;

    D.28806 = cfg->mempool;
    inst = mono_mempool_alloc (D.28806, 48);
    inst->data.op[1].const_val = 0;
    D.28872 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.28872;
    inst->prev = 0B;
    D.28873 = inst->prev;
    inst->next = D.28873;
    inst->opcode = 392;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.28874 = inst->sreg3;
    inst->sreg2 = D.28874;
    D.28875 = inst->sreg2;
    inst->sreg1 = D.28875;
    D.28811 = cfg->ip;
    inst->cil_code = D.28811;
    inst->dreg = cur_reg;
    inst->sreg1 = srcreg;
    inst->data.op[0].const_val = soffset;
    D.28812 = cfg->cbb;
    D.28813 = D.28812->last_ins;
    if (D.28813 != 0B) goto <D.28876>; else goto <D.28877>;
    <D.28876>:
    D.28812 = cfg->cbb;
    D.28813 = D.28812->last_ins;
    D.28813->next = inst;
    D.28812 = cfg->cbb;
    D.28813 = D.28812->last_ins;
    inst->prev = D.28813;
    D.28812 = cfg->cbb;
    D.28812->last_ins = inst;
    goto <D.28878>;
    <D.28877>:
    D.28812 = cfg->cbb;
    D.28812 = cfg->cbb;
    D.28812->last_ins = inst;
    D.28813 = D.28812->last_ins;
    D.28812->code = D.28813;
    <D.28878>:
  }
  {
    struct MonoInst * inst;

    D.28806 = cfg->mempool;
    inst = mono_mempool_alloc (D.28806, 48);
    inst->data.op[1].const_val = 0;
    D.28879 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.28879;
    inst->prev = 0B;
    D.28880 = inst->prev;
    inst->next = D.28880;
    inst->opcode = 375;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.28881 = inst->sreg3;
    inst->sreg2 = D.28881;
    D.28882 = inst->sreg2;
    inst->sreg1 = D.28882;
    D.28811 = cfg->ip;
    inst->cil_code = D.28811;
    inst->sreg1 = cur_reg;
    inst->dreg = destreg;
    inst->data.op[0].const_val = doffset;
    D.28812 = cfg->cbb;
    D.28813 = D.28812->last_ins;
    if (D.28813 != 0B) goto <D.28883>; else goto <D.28884>;
    <D.28883>:
    D.28812 = cfg->cbb;
    D.28813 = D.28812->last_ins;
    D.28813->next = inst;
    D.28812 = cfg->cbb;
    D.28813 = D.28812->last_ins;
    inst->prev = D.28813;
    D.28812 = cfg->cbb;
    D.28812->last_ins = inst;
    goto <D.28885>;
    <D.28884>:
    D.28812 = cfg->cbb;
    D.28812 = cfg->cbb;
    D.28812->last_ins = inst;
    D.28813 = D.28812->last_ins;
    D.28812->code = D.28813;
    <D.28885>:
  }
  doffset = doffset + 1;
  soffset = soffset + 1;
  size = size + -1;
  <D.25174>:
  if (size > 0) goto <D.25173>; else goto <D.25175>;
  <D.25175>:
}


mono_emit_method_call (struct MonoCompile * cfg, struct MonoMethod * method, struct MonoInst * * args, struct MonoInst * this)
{
  struct MonoInst * D.28886;
  struct MonoMethodSignature * D.28887;

  D.28887 = mono_method_signature (method);
  D.28886 = mono_emit_method_call_full (cfg, method, D.28887, 0, args, this, 0B, 0B);
  return D.28886;
}


mono_emit_method_call_full (struct MonoCompile * cfg, struct MonoMethod * method, struct MonoMethodSignature * sig, gboolean tail, struct MonoInst * * args, struct MonoInst * this, struct MonoInst * imt_arg, struct MonoInst * rgctx_arg)
{
  _Bool D.28889;
  unsigned int D.28894;
  struct MonoMemPool * D.28895;
  int D.28896;
  struct MonoInst * D.28897;
  int D.28898;
  int D.28899;
  const unsigned char * D.28900;
  int D.28901;
  struct MonoBasicBlock * D.28902;
  struct MonoInst * D.28903;
  unsigned char D.28907;
  unsigned char D.28908;
  struct MonoClass * D.28911;
  struct MonoType * D.28912;
  int iftmp.10;
  unsigned char D.28919;
  unsigned char D.28920;
  struct MonoClass * D.28922;
  unsigned char D.28923;
  unsigned char D.28924;
  struct MonoClass * D.28926;
  short unsigned int D.28927;
  int D.28928;
  int D.28929;
  struct MonoMethod * D.28931;
  struct MonoMethodSignature * D.28932;
  unsigned char D.28933;
  unsigned char D.28934;
  short unsigned int D.28936;
  int D.28938;
  struct MonoInst * * D.28939;
  struct MonoInst * D.28940;
  int D.28941;
  _Bool D.28943;
  _Bool D.28944;
  _Bool D.28945;
  struct MonoGenericSharingContext * D.28948;
  _Bool D.28949;
  long int D.28950;
  long int D.28951;
  struct MonoInst * D.28954;
  int iftmp.11;
  unsigned int D.28960;
  unsigned int D.28961;
  _Bool D.28962;
  int D.28963;
  struct MonoMethod * D.28966;
  unsigned char D.28968;
  unsigned char D.28969;
  unsigned char D.28970;
  <unnamed-unsigned:1> D.28971;
  struct MonoClass * D.28974;
  struct MonoClass * D.28975;
  int D.25452;
  int iftmp.12;
  int D.25451;
  const char[7] * D.28981;
  unsigned char D.28982;
  int D.28983;
  unsigned char D.28984;
  int D.28985;
  _Bool D.28986;
  _Bool D.28987;
  _Bool D.28988;
  const unsigned char * D.28991;
  unsigned char D.28992;
  int D.28993;
  const unsigned char * D.28994;
  unsigned char D.28995;
  int D.28996;
  _Bool D.28997;
  _Bool D.28998;
  const unsigned char * D.29001;
  unsigned char D.29002;
  int D.29003;
  const unsigned char * D.29004;
  unsigned char D.29005;
  int D.29006;
  _Bool D.29007;
  _Bool D.29008;
  const unsigned char * D.29011;
  unsigned char D.29012;
  int D.29013;
  const unsigned char * D.29014;
  unsigned char D.29015;
  int D.29016;
  const char * D.29018;
  unsigned char D.29021;
  unsigned char D.29022;
  int D.29025;
  struct MonoInst * D.29026;
  int D.29027;
  int D.29028;
  int D.29032;
  struct MonoInst * D.29033;
  int D.29034;
  int D.29035;
  int D.29043;
  struct MonoInst * D.29044;
  int D.29045;
  int D.29046;
  struct MonoInst * D.29047;
  int D.29048;
  unsigned char D.29058;
  unsigned char D.29059;
  int D.29062;
  unsigned int D.29065;
  unsigned char D.29066;
  struct MonoMethod * D.29071;
  unsigned int D.29074;
  unsigned int D.29075;
  int D.29080;
  struct MonoInst * D.29081;
  int D.29082;
  int D.29083;
  int D.29087;
  struct MonoInst * D.29088;
  int D.29089;
  int D.29090;
  int D.29096;
  struct MonoInst * D.29097;
  int D.29098;
  int D.29099;
  int D.29103;
  struct MonoInst * D.29104;
  int D.29105;
  int D.29106;
  short unsigned int D.29110;
  int D.29111;
  int D.29112;
  short unsigned int D.29113;
  int D.29124;
  struct MonoInst * D.29125;
  int D.29126;
  int D.29127;
  int D.29131;
  struct MonoInst * D.29132;
  int D.29133;
  int D.29134;
  int D.29140;
  struct MonoInst * D.29141;
  int D.29142;
  int D.29143;
  int D.29147;
  struct MonoInst * D.29148;
  int D.29149;
  int D.29150;
  int D.29154;
  short unsigned int D.29155;
  unsigned int D.29156;
  int D.29157;
  int D.29162;
  struct MonoInst * D.29163;
  int D.29164;
  int D.29165;
  int D.29169;
  struct MonoInst * D.29170;
  int D.29171;
  int D.29172;
  int D.29177;
  struct MonoInst * D.29178;
  int D.29179;
  int D.29180;
  unsigned char D.29181;
  int mono_use_imt.13;
  struct MonoMethod * D.29190;
  int imt_slot.14;
  int D.29192;
  unsigned int D.29195;
  int D.29196;
  int D.29198;
  int D.29199;
  unsigned int D.29200;
  unsigned int D.29201;
  struct MonoMethodSignature * D.29204;
  short unsigned int D.29205;
  _Bool D.29206;
  long int D.29207;
  long int D.29208;
  gboolean might_be_remote;
  gboolean virtual;
  gboolean enable_for_aot;
  int context_used;
  struct MonoCallInst * call;
  int rgctx_reg;
  gboolean need_unbox_trampoline;

  might_be_remote = 0;
  D.28889 = this != 0B;
  virtual = (gboolean) D.28889;
  enable_for_aot = 1;
  rgctx_reg = 0;
  if (sig == 0B) goto <D.28890>; else goto <D.28891>;
  <D.28890>:
  sig = mono_method_signature (method);
  <D.28891>:
  if (rgctx_arg != 0B) goto <D.28892>; else goto <D.28893>;
  <D.28892>:
  D.28894 = mono_alloc_preg (cfg);
  rgctx_reg = (int) D.28894;
  {
    struct MonoInst * inst;

    D.28895 = cfg->mempool;
    inst = mono_mempool_alloc (D.28895, 48);
    inst->data.op[1].const_val = 0;
    D.28896 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.28896;
    inst->prev = 0B;
    D.28897 = inst->prev;
    inst->next = D.28897;
    inst->opcode = 428;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.28898 = inst->sreg3;
    inst->sreg2 = D.28898;
    D.28899 = inst->sreg2;
    inst->sreg1 = D.28899;
    D.28900 = cfg->ip;
    inst->cil_code = D.28900;
    inst->dreg = rgctx_reg;
    D.28901 = rgctx_arg->dreg;
    inst->sreg1 = D.28901;
    D.28902 = cfg->cbb;
    D.28903 = D.28902->last_ins;
    if (D.28903 != 0B) goto <D.28904>; else goto <D.28905>;
    <D.28904>:
    D.28902 = cfg->cbb;
    D.28903 = D.28902->last_ins;
    D.28903->next = inst;
    D.28902 = cfg->cbb;
    D.28903 = D.28902->last_ins;
    inst->prev = D.28903;
    D.28902 = cfg->cbb;
    D.28902->last_ins = inst;
    goto <D.28906>;
    <D.28905>:
    D.28902 = cfg->cbb;
    D.28902 = cfg->cbb;
    D.28902->last_ins = inst;
    D.28903 = D.28902->last_ins;
    D.28902->code = D.28903;
    <D.28906>:
  }
  <D.28893>:
  D.28907 = BIT_FIELD_REF <*method, 8, 160>;
  D.28908 = D.28907 & 128;
  if (D.28908 != 0) goto <D.28909>; else goto <D.28910>;
  <D.28909>:
  {
    struct MonoMethodSignature * ctor_sig;

    D.28895 = cfg->mempool;
    ctor_sig = mono_metadata_signature_dup_mempool (D.28895, sig);
    D.28911 = mono_defaults.string_class;
    D.28912 = &D.28911->byval_arg;
    ctor_sig->ret = D.28912;
    sig = ctor_sig;
  }
  <D.28910>:
  context_used = mini_method_check_context_used (cfg, method);
  if (this != 0B) goto <D.28918>; else goto <D.28914>;
  <D.28918>:
  D.28919 = BIT_FIELD_REF <*sig, 8, 80>;
  D.28920 = D.28919 & 64;
  if (D.28920 != 0) goto <D.28921>; else goto <D.28914>;
  <D.28921>:
  D.28922 = method->klass;
  D.28923 = BIT_FIELD_REF <*D.28922, 8, 176>;
  D.28924 = D.28923 & 64;
  if (D.28924 != 0) goto <D.28915>; else goto <D.28925>;
  <D.28925>:
  D.28922 = method->klass;
  D.28926 = mono_defaults.object_class;
  if (D.28922 == D.28926) goto <D.28915>; else goto <D.28914>;
  <D.28915>:
  D.28927 = method->flags;
  D.28928 = (int) D.28927;
  D.28929 = D.28928 & 64;
  if (D.28929 == 0) goto <D.28930>; else goto <D.28914>;
  <D.28930>:
  D.28931 = cfg->method;
  D.28932 = mono_method_signature (D.28931);
  D.28933 = BIT_FIELD_REF <*D.28932, 8, 80>;
  D.28934 = D.28933 & 64;
  if (D.28934 == 0) goto <D.28916>; else goto <D.28935>;
  <D.28935>:
  D.28936 = this->opcode;
  if (D.28936 != 428) goto <D.28916>; else goto <D.28937>;
  <D.28937>:
  D.28938 = this->sreg1;
  D.28939 = cfg->args;
  D.28940 = *D.28939;
  D.28941 = D.28940->dreg;
  if (D.28938 != D.28941) goto <D.28916>; else goto <D.28942>;
  <D.28942>:
  if (context_used != 0) goto <D.28916>; else goto <D.28914>;
  <D.28916>:
  iftmp.10 = 1;
  goto <D.28917>;
  <D.28914>:
  iftmp.10 = 0;
  <D.28917>:
  might_be_remote = iftmp.10;
  D.28943 = might_be_remote != 0;
  D.28944 = context_used != 0;
  D.28945 = D.28943 & D.28944;
  if (D.28945 != 0) goto <D.28946>; else goto <D.28947>;
  <D.28946>:
  {
    struct MonoInst * addr;

    D.28948 = cfg->generic_sharing_context;
    D.28949 = D.28948 == 0B;
    D.28950 = (long int) D.28949;
    D.28951 = __builtin_expect (D.28950, 0);
    if (D.28951 != 0) goto <D.28952>; else goto <D.28953>;
    <D.28952>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 2632, "cfg->generic_sharing_context");
    <D.28953>:
    addr = emit_get_rgctx_method (cfg, context_used, method, 10);
    D.28954 = mono_emit_calli (cfg, sig, args, addr, 0B, 0B);
    return D.28954;
  }
  <D.28947>:
  D.28922 = method->klass;
  D.28926 = mono_defaults.object_class;
  if (D.28922 == D.28926) goto <D.28956>; else goto <D.28959>;
  <D.28959>:
  D.28922 = method->klass;
  D.28960 = D.28922->flags;
  D.28961 = D.28960 & 32;
  if (D.28961 != 0) goto <D.28956>; else goto <D.28957>;
  <D.28956>:
  iftmp.11 = 1;
  goto <D.28958>;
  <D.28957>:
  iftmp.11 = 0;
  <D.28958>:
  need_unbox_trampoline = iftmp.11;
  D.28962 = rgctx_arg != 0B;
  D.28963 = (int) D.28962;
  call = mono_emit_call_args (cfg, sig, args, 0, virtual, tail, D.28963, need_unbox_trampoline);
  if (might_be_remote != 0) goto <D.28964>; else goto <D.28965>;
  <D.28964>:
  D.28966 = mono_marshal_get_remoting_invoke_with_check (method);
  call->method = D.28966;
  goto <D.28967>;
  <D.28965>:
  call->method = method;
  <D.28967>:
  D.28968 = call->inst.flags;
  D.28969 = D.28968 | 1;
  call->inst.flags = D.28969;
  call->inst.data.op[0].src = this;
  D.28970 = (unsigned char) tail;
  D.28971 = (<unnamed-unsigned:1>) D.28970;
  call->tail_call = D.28971;
  if (virtual != 0) goto <D.28972>; else goto <D.28973>;
  <D.28972>:
  {
    int vtable_reg;
    int slot_reg;
    int this_reg;
    int offset;

    this_reg = this->dreg;
    D.28922 = method->klass;
    D.28974 = D.28922->parent;
    D.28975 = mono_defaults.multicastdelegate_class;
    if (D.28974 == D.28975) goto <D.28976>; else goto <D.28977>;
    <D.28976>:
    {
      size_t __s1_len;
      size_t __s2_len;

      __s2_len = 6;
      if (__s2_len <= 3) goto <D.28979>; else goto <D.28980>;
      <D.28979>:
      {
        const unsigned char * __s2;
        int __result;

        __s2 = method->name;
        D.28981 = "Invoke";
        D.28982 = MEM[(const unsigned char *)D.28981];
        D.28983 = (int) D.28982;
        D.28984 = *__s2;
        D.28985 = (int) D.28984;
        __result = D.28983 - D.28985;
        {
          D.28986 = __s2_len != 0;
          D.28987 = __result == 0;
          D.28988 = D.28986 & D.28987;
          if (D.28988 != 0) goto <D.28989>; else goto <D.28990>;
          <D.28989>:
          D.28991 = &MEM[(void *)"Invoke" + 1B];
          D.28992 = *D.28991;
          D.28993 = (int) D.28992;
          D.28994 = __s2 + 1;
          D.28995 = *D.28994;
          D.28996 = (int) D.28995;
          __result = D.28993 - D.28996;
          D.28997 = __s2_len > 1;
          D.28987 = __result == 0;
          D.28998 = D.28997 & D.28987;
          if (D.28998 != 0) goto <D.28999>; else goto <D.29000>;
          <D.28999>:
          D.29001 = &MEM[(void *)"Invoke" + 2B];
          D.29002 = *D.29001;
          D.29003 = (int) D.29002;
          D.29004 = __s2 + 2;
          D.29005 = *D.29004;
          D.29006 = (int) D.29005;
          __result = D.29003 - D.29006;
          D.29007 = __s2_len > 2;
          D.28987 = __result == 0;
          D.29008 = D.29007 & D.28987;
          if (D.29008 != 0) goto <D.29009>; else goto <D.29010>;
          <D.29009>:
          D.29011 = &MEM[(void *)"Invoke" + 3B];
          D.29012 = *D.29011;
          D.29013 = (int) D.29012;
          D.29014 = __s2 + 3;
          D.29015 = *D.29014;
          D.29016 = (int) D.29015;
          __result = D.29013 - D.29016;
          <D.29010>:
          <D.29000>:
          <D.28990>:
        }
        D.25451 = __result;
      }
      iftmp.12 = -D.25451;
      goto <D.29017>;
      <D.28980>:
      D.29018 = method->name;
      iftmp.12 = __builtin_strcmp (D.29018, "Invoke");
      <D.29017>:
      D.25452 = iftmp.12;
    }
    if (D.25452 == 0) goto <D.29019>; else goto <D.29020>;
    <D.29019>:
    {
      struct MonoInst * dummy_use;

      D.29021 = BIT_FIELD_REF <*cfg, 8, 3424>;
      D.29022 = D.29021 & 64;
      if (D.29022 != 0) goto <D.29023>; else goto <D.29024>;
      <D.29023>:
      {
        struct MonoInst * inst;

        D.28895 = cfg->mempool;
        inst = mono_mempool_alloc (D.28895, 48);
        inst->data.op[1].const_val = 0;
        D.29025 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.29025;
        inst->prev = 0B;
        D.29026 = inst->prev;
        inst->next = D.29026;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.29027 = inst->sreg3;
        inst->sreg2 = D.29027;
        D.29028 = inst->sreg2;
        inst->sreg1 = D.29028;
        D.28900 = cfg->ip;
        inst->cil_code = D.28900;
        inst->dreg = -1;
        inst->sreg1 = this_reg;
        inst->data.op[1].const_val = 0;
        D.28902 = cfg->cbb;
        D.28903 = D.28902->last_ins;
        if (D.28903 != 0B) goto <D.29029>; else goto <D.29030>;
        <D.29029>:
        D.28902 = cfg->cbb;
        D.28903 = D.28902->last_ins;
        D.28903->next = inst;
        D.28902 = cfg->cbb;
        D.28903 = D.28902->last_ins;
        inst->prev = D.28903;
        D.28902 = cfg->cbb;
        D.28902->last_ins = inst;
        goto <D.29031>;
        <D.29030>:
        D.28902 = cfg->cbb;
        D.28902 = cfg->cbb;
        D.28902->last_ins = inst;
        D.28903 = D.28902->last_ins;
        D.28902->code = D.28903;
        <D.29031>:
      }
      {
        struct MonoInst * inst;

        D.28895 = cfg->mempool;
        inst = mono_mempool_alloc (D.28895, 48);
        inst->data.op[1].const_val = 0;
        D.29032 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.29032;
        inst->prev = 0B;
        D.29033 = inst->prev;
        inst->next = D.29033;
        inst->opcode = 455;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.29034 = inst->sreg3;
        inst->sreg2 = D.29034;
        D.29035 = inst->sreg2;
        inst->sreg1 = D.29035;
        D.28900 = cfg->ip;
        inst->cil_code = D.28900;
        inst->data.op[1].p = "NullReferenceException";
        D.28902 = cfg->cbb;
        D.28903 = D.28902->last_ins;
        if (D.28903 != 0B) goto <D.29036>; else goto <D.29037>;
        <D.29036>:
        D.28902 = cfg->cbb;
        D.28903 = D.28902->last_ins;
        D.28903->next = inst;
        D.28902 = cfg->cbb;
        D.28903 = D.28902->last_ins;
        inst->prev = D.28903;
        D.28902 = cfg->cbb;
        D.28902->last_ins = inst;
        goto <D.29038>;
        <D.29037>:
        D.28902 = cfg->cbb;
        D.28902 = cfg->cbb;
        D.28902->last_ins = inst;
        D.28903 = D.28902->last_ins;
        D.28902->code = D.28903;
        <D.29038>:
      }
      goto <D.29039>;
      <D.29024>:
      <D.29039>:
      call->inst.sreg1 = this_reg;
      call->inst.data.op[0].const_val = 12;
      D.28902 = cfg->cbb;
      D.28903 = D.28902->last_ins;
      if (D.28903 != 0B) goto <D.29040>; else goto <D.29041>;
      <D.29040>:
      D.28902 = cfg->cbb;
      D.28903 = D.28902->last_ins;
      D.28903->next = call;
      D.28902 = cfg->cbb;
      D.28903 = D.28902->last_ins;
      MEM[(struct MonoInst *)call].prev = D.28903;
      D.28902 = cfg->cbb;
      D.28902->last_ins = call;
      goto <D.29042>;
      <D.29041>:
      D.28902 = cfg->cbb;
      D.28902 = cfg->cbb;
      D.28902->last_ins = call;
      D.28903 = D.28902->last_ins;
      D.28902->code = D.28903;
      <D.29042>:
      D.28895 = cfg->mempool;
      dummy_use = mono_mempool_alloc (D.28895, 48);
      dummy_use->data.op[1].const_val = 0;
      D.29043 = dummy_use->data.op[1].const_val;
      dummy_use->data.op[0].const_val = D.29043;
      dummy_use->prev = 0B;
      D.29044 = dummy_use->prev;
      dummy_use->next = D.29044;
      dummy_use->opcode = 800;
      dummy_use->flags = 0;
      dummy_use->type = 0;
      dummy_use->dreg = -1;
      dummy_use->sreg3 = -1;
      D.29045 = dummy_use->sreg3;
      dummy_use->sreg2 = D.29045;
      D.29046 = dummy_use->sreg2;
      dummy_use->sreg1 = D.29046;
      D.28900 = cfg->ip;
      dummy_use->cil_code = D.28900;
      D.29047 = *args;
      D.29048 = D.29047->dreg;
      dummy_use->sreg1 = D.29048;
      D.28902 = cfg->cbb;
      D.28903 = D.28902->last_ins;
      if (D.28903 != 0B) goto <D.29049>; else goto <D.29050>;
      <D.29049>:
      D.28902 = cfg->cbb;
      D.28903 = D.28902->last_ins;
      D.28903->next = dummy_use;
      D.28902 = cfg->cbb;
      D.28903 = D.28902->last_ins;
      dummy_use->prev = D.28903;
      D.28902 = cfg->cbb;
      D.28902->last_ins = dummy_use;
      goto <D.29051>;
      <D.29050>:
      D.28902 = cfg->cbb;
      D.28902 = cfg->cbb;
      D.28902->last_ins = dummy_use;
      D.28903 = D.28902->last_ins;
      D.28902->code = D.28903;
      <D.29051>:
      D.28954 = call;
      return D.28954;
    }
    <D.29020>:
    <D.28977>:
    D.29058 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.29059 = D.29058 & 64;
    if (D.29059 == 0) goto <D.29052>; else goto <D.29060>;
    <D.29060>:
    if (enable_for_aot != 0) goto <D.29052>; else goto <D.29053>;
    <D.29052>:
    D.28927 = method->flags;
    D.28928 = (int) D.28927;
    D.28929 = D.28928 & 64;
    if (D.28929 == 0) goto <D.29054>; else goto <D.29061>;
    <D.29061>:
    D.28927 = method->flags;
    D.28928 = (int) D.28927;
    D.29062 = D.28928 & 32;
    if (D.29062 != 0) goto <D.29055>; else goto <D.29063>;
    <D.29063>:
    D.28922 = method->klass;
    if (D.28922 != 0B) goto <D.29064>; else goto <D.29053>;
    <D.29064>:
    D.28922 = method->klass;
    D.28960 = D.28922->flags;
    D.29065 = D.28960 & 256;
    if (D.29065 != 0) goto <D.29055>; else goto <D.29053>;
    <D.29055>:
    D.28907 = BIT_FIELD_REF <*method, 8, 160>;
    D.29066 = D.28907 & 124;
    if (D.29066 != 36) goto <D.29054>; else goto <D.29053>;
    <D.29054>:
    D.28922 = method->klass;
    D.28923 = BIT_FIELD_REF <*D.28922, 8, 176>;
    D.28924 = D.28923 & 64;
    if (D.28924 == 0) goto <D.29056>; else goto <D.29067>;
    <D.29067>:
    if (context_used == 0) goto <D.29056>; else goto <D.29053>;
    <D.29056>:
    D.28922 = method->klass;
    D.28923 = BIT_FIELD_REF <*D.28922, 8, 176>;
    D.28924 = D.28923 & 64;
    if (D.28924 != 0) goto <D.29068>; else goto <D.29070>;
    <D.29070>:
    D.28922 = method->klass;
    D.28926 = mono_defaults.object_class;
    if (D.28922 == D.28926) goto <D.29068>; else goto <D.29069>;
    <D.29068>:
    D.29071 = mono_marshal_get_remoting_invoke_with_check (method);
    call->method = D.29071;
    method = call->method;
    <D.29069>:
    D.28907 = BIT_FIELD_REF <*method, 8, 160>;
    D.28908 = D.28907 & 128;
    if (D.28908 == 0) goto <D.29072>; else goto <D.29073>;
    <D.29072>:
    D.29074 = cfg->flags;
    D.29075 = D.29074 | 128;
    cfg->flags = D.29075;
    D.29021 = BIT_FIELD_REF <*cfg, 8, 3424>;
    D.29022 = D.29021 & 64;
    if (D.29022 != 0) goto <D.29076>; else goto <D.29077>;
    <D.29076>:
    D.29021 = BIT_FIELD_REF <*cfg, 8, 3424>;
    D.29022 = D.29021 & 64;
    if (D.29022 != 0) goto <D.29078>; else goto <D.29079>;
    <D.29078>:
    {
      struct MonoInst * inst;

      D.28895 = cfg->mempool;
      inst = mono_mempool_alloc (D.28895, 48);
      inst->data.op[1].const_val = 0;
      D.29080 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.29080;
      inst->prev = 0B;
      D.29081 = inst->prev;
      inst->next = D.29081;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.29082 = inst->sreg3;
      inst->sreg2 = D.29082;
      D.29083 = inst->sreg2;
      inst->sreg1 = D.29083;
      D.28900 = cfg->ip;
      inst->cil_code = D.28900;
      inst->dreg = -1;
      inst->sreg1 = this_reg;
      inst->data.op[1].const_val = 0;
      D.28902 = cfg->cbb;
      D.28903 = D.28902->last_ins;
      if (D.28903 != 0B) goto <D.29084>; else goto <D.29085>;
      <D.29084>:
      D.28902 = cfg->cbb;
      D.28903 = D.28902->last_ins;
      D.28903->next = inst;
      D.28902 = cfg->cbb;
      D.28903 = D.28902->last_ins;
      inst->prev = D.28903;
      D.28902 = cfg->cbb;
      D.28902->last_ins = inst;
      goto <D.29086>;
      <D.29085>:
      D.28902 = cfg->cbb;
      D.28902 = cfg->cbb;
      D.28902->last_ins = inst;
      D.28903 = D.28902->last_ins;
      D.28902->code = D.28903;
      <D.29086>:
    }
    {
      struct MonoInst * inst;

      D.28895 = cfg->mempool;
      inst = mono_mempool_alloc (D.28895, 48);
      inst->data.op[1].const_val = 0;
      D.29087 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.29087;
      inst->prev = 0B;
      D.29088 = inst->prev;
      inst->next = D.29088;
      inst->opcode = 455;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.29089 = inst->sreg3;
      inst->sreg2 = D.29089;
      D.29090 = inst->sreg2;
      inst->sreg1 = D.29090;
      D.28900 = cfg->ip;
      inst->cil_code = D.28900;
      inst->data.op[1].p = "NullReferenceException";
      D.28902 = cfg->cbb;
      D.28903 = D.28902->last_ins;
      if (D.28903 != 0B) goto <D.29091>; else goto <D.29092>;
      <D.29091>:
      D.28902 = cfg->cbb;
      D.28903 = D.28902->last_ins;
      D.28903->next = inst;
      D.28902 = cfg->cbb;
      D.28903 = D.28902->last_ins;
      inst->prev = D.28903;
      D.28902 = cfg->cbb;
      D.28902->last_ins = inst;
      goto <D.29093>;
      <D.29092>:
      D.28902 = cfg->cbb;
      D.28902 = cfg->cbb;
      D.28902->last_ins = inst;
      D.28903 = D.28902->last_ins;
      D.28902->code = D.28903;
      <D.29093>:
    }
    goto <D.29094>;
    <D.29079>:
    <D.29094>:
    goto <D.29095>;
    <D.29077>:
    {
      struct MonoInst * inst;

      D.28895 = cfg->mempool;
      inst = mono_mempool_alloc (D.28895, 48);
      inst->data.op[1].const_val = 0;
      D.29096 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.29096;
      inst->prev = 0B;
      D.29097 = inst->prev;
      inst->next = D.29097;
      inst->opcode = 340;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.29098 = inst->sreg3;
      inst->sreg2 = D.29098;
      D.29099 = inst->sreg2;
      inst->sreg1 = D.29099;
      D.28900 = cfg->ip;
      inst->cil_code = D.28900;
      inst->dreg = -1;
      inst->sreg1 = this_reg;
      D.28902 = cfg->cbb;
      D.28903 = D.28902->last_ins;
      if (D.28903 != 0B) goto <D.29100>; else goto <D.29101>;
      <D.29100>:
      D.28902 = cfg->cbb;
      D.28903 = D.28902->last_ins;
      D.28903->next = inst;
      D.28902 = cfg->cbb;
      D.28903 = D.28902->last_ins;
      inst->prev = D.28903;
      D.28902 = cfg->cbb;
      D.28902->last_ins = inst;
      goto <D.29102>;
      <D.29101>:
      D.28902 = cfg->cbb;
      D.28902 = cfg->cbb;
      D.28902->last_ins = inst;
      D.28903 = D.28902->last_ins;
      D.28902->code = D.28903;
      <D.29102>:
    }
    <D.29095>:
    {
      struct MonoInst * inst;

      D.28895 = cfg->mempool;
      inst = mono_mempool_alloc (D.28895, 48);
      inst->data.op[1].const_val = 0;
      D.29103 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.29103;
      inst->prev = 0B;
      D.29104 = inst->prev;
      inst->next = D.29104;
      inst->opcode = 803;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.29105 = inst->sreg3;
      inst->sreg2 = D.29105;
      D.29106 = inst->sreg2;
      inst->sreg1 = D.29106;
      D.28900 = cfg->ip;
      inst->cil_code = D.28900;
      inst->dreg = -1;
      inst->sreg1 = this_reg;
      D.28902 = cfg->cbb;
      D.28903 = D.28902->last_ins;
      if (D.28903 != 0B) goto <D.29107>; else goto <D.29108>;
      <D.29107>:
      D.28902 = cfg->cbb;
      D.28903 = D.28902->last_ins;
      D.28903->next = inst;
      D.28902 = cfg->cbb;
      D.28903 = D.28902->last_ins;
      inst->prev = D.28903;
      D.28902 = cfg->cbb;
      D.28902->last_ins = inst;
      goto <D.29109>;
      <D.29108>:
      D.28902 = cfg->cbb;
      D.28902 = cfg->cbb;
      D.28902->last_ins = inst;
      D.28903 = D.28902->last_ins;
      D.28902->code = D.28903;
      <D.29109>:
    }
    <D.29073>:
    D.29110 = call->inst.opcode;
    D.29111 = (int) D.29110;
    D.29112 = callvirt_to_call (D.29111);
    D.29113 = (short unsigned int) D.29112;
    call->inst.opcode = D.29113;
    goto <D.29057>;
    <D.29053>:
    D.28927 = method->flags;
    D.28928 = (int) D.28927;
    D.28929 = D.28928 & 64;
    if (D.28929 != 0) goto <D.29117>; else goto <D.29114>;
    <D.29117>:
    D.28927 = method->flags;
    D.28928 = (int) D.28927;
    D.29062 = D.28928 & 32;
    if (D.29062 != 0) goto <D.29115>; else goto <D.29118>;
    <D.29118>:
    D.28922 = method->klass;
    if (D.28922 != 0B) goto <D.29119>; else goto <D.29114>;
    <D.29119>:
    D.28922 = method->klass;
    D.28960 = D.28922->flags;
    D.29065 = D.28960 & 256;
    if (D.29065 != 0) goto <D.29115>; else goto <D.29114>;
    <D.29115>:
    D.29074 = cfg->flags;
    D.29075 = D.29074 | 128;
    cfg->flags = D.29075;
    D.29021 = BIT_FIELD_REF <*cfg, 8, 3424>;
    D.29022 = D.29021 & 64;
    if (D.29022 != 0) goto <D.29120>; else goto <D.29121>;
    <D.29120>:
    D.29021 = BIT_FIELD_REF <*cfg, 8, 3424>;
    D.29022 = D.29021 & 64;
    if (D.29022 != 0) goto <D.29122>; else goto <D.29123>;
    <D.29122>:
    {
      struct MonoInst * inst;

      D.28895 = cfg->mempool;
      inst = mono_mempool_alloc (D.28895, 48);
      inst->data.op[1].const_val = 0;
      D.29124 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.29124;
      inst->prev = 0B;
      D.29125 = inst->prev;
      inst->next = D.29125;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.29126 = inst->sreg3;
      inst->sreg2 = D.29126;
      D.29127 = inst->sreg2;
      inst->sreg1 = D.29127;
      D.28900 = cfg->ip;
      inst->cil_code = D.28900;
      inst->dreg = -1;
      inst->sreg1 = this_reg;
      inst->data.op[1].const_val = 0;
      D.28902 = cfg->cbb;
      D.28903 = D.28902->last_ins;
      if (D.28903 != 0B) goto <D.29128>; else goto <D.29129>;
      <D.29128>:
      D.28902 = cfg->cbb;
      D.28903 = D.28902->last_ins;
      D.28903->next = inst;
      D.28902 = cfg->cbb;
      D.28903 = D.28902->last_ins;
      inst->prev = D.28903;
      D.28902 = cfg->cbb;
      D.28902->last_ins = inst;
      goto <D.29130>;
      <D.29129>:
      D.28902 = cfg->cbb;
      D.28902 = cfg->cbb;
      D.28902->last_ins = inst;
      D.28903 = D.28902->last_ins;
      D.28902->code = D.28903;
      <D.29130>:
    }
    {
      struct MonoInst * inst;

      D.28895 = cfg->mempool;
      inst = mono_mempool_alloc (D.28895, 48);
      inst->data.op[1].const_val = 0;
      D.29131 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.29131;
      inst->prev = 0B;
      D.29132 = inst->prev;
      inst->next = D.29132;
      inst->opcode = 455;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.29133 = inst->sreg3;
      inst->sreg2 = D.29133;
      D.29134 = inst->sreg2;
      inst->sreg1 = D.29134;
      D.28900 = cfg->ip;
      inst->cil_code = D.28900;
      inst->data.op[1].p = "NullReferenceException";
      D.28902 = cfg->cbb;
      D.28903 = D.28902->last_ins;
      if (D.28903 != 0B) goto <D.29135>; else goto <D.29136>;
      <D.29135>:
      D.28902 = cfg->cbb;
      D.28903 = D.28902->last_ins;
      D.28903->next = inst;
      D.28902 = cfg->cbb;
      D.28903 = D.28902->last_ins;
      inst->prev = D.28903;
      D.28902 = cfg->cbb;
      D.28902->last_ins = inst;
      goto <D.29137>;
      <D.29136>:
      D.28902 = cfg->cbb;
      D.28902 = cfg->cbb;
      D.28902->last_ins = inst;
      D.28903 = D.28902->last_ins;
      D.28902->code = D.28903;
      <D.29137>:
    }
    goto <D.29138>;
    <D.29123>:
    <D.29138>:
    goto <D.29139>;
    <D.29121>:
    {
      struct MonoInst * inst;

      D.28895 = cfg->mempool;
      inst = mono_mempool_alloc (D.28895, 48);
      inst->data.op[1].const_val = 0;
      D.29140 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.29140;
      inst->prev = 0B;
      D.29141 = inst->prev;
      inst->next = D.29141;
      inst->opcode = 340;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.29142 = inst->sreg3;
      inst->sreg2 = D.29142;
      D.29143 = inst->sreg2;
      inst->sreg1 = D.29143;
      D.28900 = cfg->ip;
      inst->cil_code = D.28900;
      inst->dreg = -1;
      inst->sreg1 = this_reg;
      D.28902 = cfg->cbb;
      D.28903 = D.28902->last_ins;
      if (D.28903 != 0B) goto <D.29144>; else goto <D.29145>;
      <D.29144>:
      D.28902 = cfg->cbb;
      D.28903 = D.28902->last_ins;
      D.28903->next = inst;
      D.28902 = cfg->cbb;
      D.28903 = D.28902->last_ins;
      inst->prev = D.28903;
      D.28902 = cfg->cbb;
      D.28902->last_ins = inst;
      goto <D.29146>;
      <D.29145>:
      D.28902 = cfg->cbb;
      D.28902 = cfg->cbb;
      D.28902->last_ins = inst;
      D.28903 = D.28902->last_ins;
      D.28902->code = D.28903;
      <D.29146>:
    }
    <D.29139>:
    {
      struct MonoInst * inst;

      D.28895 = cfg->mempool;
      inst = mono_mempool_alloc (D.28895, 48);
      inst->data.op[1].const_val = 0;
      D.29147 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.29147;
      inst->prev = 0B;
      D.29148 = inst->prev;
      inst->next = D.29148;
      inst->opcode = 803;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.29149 = inst->sreg3;
      inst->sreg2 = D.29149;
      D.29150 = inst->sreg2;
      inst->sreg1 = D.29150;
      D.28900 = cfg->ip;
      inst->cil_code = D.28900;
      inst->dreg = -1;
      inst->sreg1 = this_reg;
      D.28902 = cfg->cbb;
      D.28903 = D.28902->last_ins;
      if (D.28903 != 0B) goto <D.29151>; else goto <D.29152>;
      <D.29151>:
      D.28902 = cfg->cbb;
      D.28903 = D.28902->last_ins;
      D.28903->next = inst;
      D.28902 = cfg->cbb;
      D.28903 = D.28902->last_ins;
      inst->prev = D.28903;
      D.28902 = cfg->cbb;
      D.28902->last_ins = inst;
      goto <D.29153>;
      <D.29152>:
      D.28902 = cfg->cbb;
      D.28902 = cfg->cbb;
      D.28902->last_ins = inst;
      D.28903 = D.28902->last_ins;
      D.28902->code = D.28903;
      <D.29153>:
    }
    D.29110 = call->inst.opcode;
    D.29111 = (int) D.29110;
    D.29154 = callvirt_to_call (D.29111);
    D.29155 = (short unsigned int) D.29154;
    call->inst.opcode = D.29155;
    goto <D.29116>;
    <D.29114>:
    D.29156 = alloc_preg (cfg);
    vtable_reg = (int) D.29156;
    {
      struct MonoInst * inst;
      int __ins_flags;

      __ins_flags = 32;
      D.29157 = __ins_flags & 32;
      if (D.29157 != 0) goto <D.29158>; else goto <D.29159>;
      <D.29158>:
      D.29021 = BIT_FIELD_REF <*cfg, 8, 3424>;
      D.29022 = D.29021 & 64;
      if (D.29022 != 0) goto <D.29160>; else goto <D.29161>;
      <D.29160>:
      {
        struct MonoInst * inst;

        D.28895 = cfg->mempool;
        inst = mono_mempool_alloc (D.28895, 48);
        inst->data.op[1].const_val = 0;
        D.29162 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.29162;
        inst->prev = 0B;
        D.29163 = inst->prev;
        inst->next = D.29163;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.29164 = inst->sreg3;
        inst->sreg2 = D.29164;
        D.29165 = inst->sreg2;
        inst->sreg1 = D.29165;
        D.28900 = cfg->ip;
        inst->cil_code = D.28900;
        inst->dreg = -1;
        inst->sreg1 = this_reg;
        inst->data.op[1].const_val = 0;
        D.28902 = cfg->cbb;
        D.28903 = D.28902->last_ins;
        if (D.28903 != 0B) goto <D.29166>; else goto <D.29167>;
        <D.29166>:
        D.28902 = cfg->cbb;
        D.28903 = D.28902->last_ins;
        D.28903->next = inst;
        D.28902 = cfg->cbb;
        D.28903 = D.28902->last_ins;
        inst->prev = D.28903;
        D.28902 = cfg->cbb;
        D.28902->last_ins = inst;
        goto <D.29168>;
        <D.29167>:
        D.28902 = cfg->cbb;
        D.28902 = cfg->cbb;
        D.28902->last_ins = inst;
        D.28903 = D.28902->last_ins;
        D.28902->code = D.28903;
        <D.29168>:
      }
      {
        struct MonoInst * inst;

        D.28895 = cfg->mempool;
        inst = mono_mempool_alloc (D.28895, 48);
        inst->data.op[1].const_val = 0;
        D.29169 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.29169;
        inst->prev = 0B;
        D.29170 = inst->prev;
        inst->next = D.29170;
        inst->opcode = 455;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.29171 = inst->sreg3;
        inst->sreg2 = D.29171;
        D.29172 = inst->sreg2;
        inst->sreg1 = D.29172;
        D.28900 = cfg->ip;
        inst->cil_code = D.28900;
        inst->data.op[1].p = "NullReferenceException";
        D.28902 = cfg->cbb;
        D.28903 = D.28902->last_ins;
        if (D.28903 != 0B) goto <D.29173>; else goto <D.29174>;
        <D.29173>:
        D.28902 = cfg->cbb;
        D.28903 = D.28902->last_ins;
        D.28903->next = inst;
        D.28902 = cfg->cbb;
        D.28903 = D.28902->last_ins;
        inst->prev = D.28903;
        D.28902 = cfg->cbb;
        D.28902->last_ins = inst;
        goto <D.29175>;
        <D.29174>:
        D.28902 = cfg->cbb;
        D.28902 = cfg->cbb;
        D.28902->last_ins = inst;
        D.28903 = D.28902->last_ins;
        D.28902->code = D.28903;
        <D.29175>:
      }
      goto <D.29176>;
      <D.29161>:
      <D.29176>:
      <D.29159>:
      D.28895 = cfg->mempool;
      inst = mono_mempool_alloc (D.28895, 48);
      inst->data.op[1].const_val = 0;
      D.29177 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.29177;
      inst->prev = 0B;
      D.29178 = inst->prev;
      inst->next = D.29178;
      inst->opcode = 391;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.29179 = inst->sreg3;
      inst->sreg2 = D.29179;
      D.29180 = inst->sreg2;
      inst->sreg1 = D.29180;
      D.28900 = cfg->ip;
      inst->cil_code = D.28900;
      inst->dreg = vtable_reg;
      inst->sreg1 = this_reg;
      inst->data.op[0].const_val = 0;
      inst->type = 1;
      D.29181 = (unsigned char) __ins_flags;
      inst->flags = D.29181;
      D.28902 = cfg->cbb;
      D.28903 = D.28902->last_ins;
      if (D.28903 != 0B) goto <D.29182>; else goto <D.29183>;
      <D.29182>:
      D.28902 = cfg->cbb;
      D.28903 = D.28902->last_ins;
      D.28903->next = inst;
      D.28902 = cfg->cbb;
      D.28903 = D.28902->last_ins;
      inst->prev = D.28903;
      D.28902 = cfg->cbb;
      D.28902->last_ins = inst;
      goto <D.29184>;
      <D.29183>:
      D.28902 = cfg->cbb;
      D.28902 = cfg->cbb;
      D.28902->last_ins = inst;
      D.28903 = D.28902->last_ins;
      D.28902->code = D.28903;
      <D.29184>:
    }
    D.28922 = method->klass;
    D.28960 = D.28922->flags;
    D.28961 = D.28960 & 32;
    if (D.28961 != 0) goto <D.29185>; else goto <D.29186>;
    <D.29185>:
    slot_reg = -1;
    mono_use_imt.13 = mono_use_imt;
    if (mono_use_imt.13 != 0) goto <D.29188>; else goto <D.29189>;
    <D.29188>:
    {
      guint32 imt_slot;

      imt_slot = mono_method_get_imt_slot (method);
      D.29190 = call->method;
      emit_imt_argument (cfg, call, D.29190, imt_arg);
      slot_reg = vtable_reg;
      imt_slot.14 = (int) imt_slot;
      D.29192 = imt_slot.14 + -19;
      offset = D.29192 * 4;
    }
    <D.29189>:
    if (slot_reg == -1) goto <D.29193>; else goto <D.29194>;
    <D.29193>:
    D.29195 = alloc_preg (cfg);
    slot_reg = (int) D.29195;
    D.28922 = method->klass;
    mini_emit_load_intf_reg_vtable (cfg, slot_reg, vtable_reg, D.28922);
    D.29196 = mono_method_get_vtable_index (method);
    offset = D.29196 * 4;
    <D.29194>:
    goto <D.29197>;
    <D.29186>:
    slot_reg = vtable_reg;
    D.29198 = mono_method_get_vtable_index (method);
    D.29199 = D.29198 * 4;
    D.29200 = (unsigned int) D.29199;
    D.29201 = D.29200 + 32;
    offset = (int) D.29201;
    if (imt_arg != 0B) goto <D.29202>; else goto <D.29203>;
    <D.29202>:
    D.29204 = mono_method_signature (method);
    D.29205 = D.29204->generic_param_count;
    D.29206 = D.29205 == 0;
    D.29207 = (long int) D.29206;
    D.29208 = __builtin_expect (D.29207, 0);
    if (D.29208 != 0) goto <D.29209>; else goto <D.29210>;
    <D.29209>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 2743, "mono_method_signature (method)->generic_param_count");
    <D.29210>:
    D.29190 = call->method;
    emit_imt_argument (cfg, call, D.29190, imt_arg);
    <D.29203>:
    <D.29197>:
    call->inst.sreg1 = slot_reg;
    call->inst.data.op[0].const_val = offset;
    call->virtual = 1;
    <D.29116>:
    <D.29057>:
  }
  <D.28973>:
  D.28902 = cfg->cbb;
  D.28903 = D.28902->last_ins;
  if (D.28903 != 0B) goto <D.29211>; else goto <D.29212>;
  <D.29211>:
  D.28902 = cfg->cbb;
  D.28903 = D.28902->last_ins;
  D.28903->next = call;
  D.28902 = cfg->cbb;
  D.28903 = D.28902->last_ins;
  MEM[(struct MonoInst *)call].prev = D.28903;
  D.28902 = cfg->cbb;
  D.28902->last_ins = call;
  goto <D.29213>;
  <D.29212>:
  D.28902 = cfg->cbb;
  D.28902 = cfg->cbb;
  D.28902->last_ins = call;
  D.28903 = D.28902->last_ins;
  D.28902->code = D.28903;
  <D.29213>:
  if (rgctx_arg != 0B) goto <D.29214>; else goto <D.29215>;
  <D.29214>:
  set_rgctx_arg (cfg, call, rgctx_reg, rgctx_arg);
  <D.29215>:
  D.28954 = call;
  return D.28954;
}


mini_method_check_context_used (struct MonoCompile * cfg, struct MonoMethod * method)
{
  struct MonoGenericSharingContext * D.29217;
  int D.29220;

  D.29217 = cfg->generic_sharing_context;
  if (D.29217 != 0B) goto <D.29218>; else goto <D.29219>;
  <D.29218>:
  D.29220 = mono_method_check_context_used (method);
  return D.29220;
  <D.29219>:
  D.29220 = 0;
  return D.29220;
}


emit_get_rgctx_method (struct MonoCompile * cfg, int context_used, struct MonoMethod * cmethod, MonoRgctxInfoType rgctx_type)
{
  struct MonoMemPool * D.29224;
  int D.29225;
  struct MonoInst * D.29226;
  guint16 iftmp.15;
  unsigned char D.29228;
  unsigned char D.29229;
  int D.29233;
  int D.29234;
  const unsigned char * D.29235;
  int D.29238;
  struct MonoInst * D.29239;
  int D.29240;
  int D.29241;
  int D.29242;
  unsigned int D.29244;
  int D.29245;
  struct MonoBasicBlock * D.29246;
  struct MonoInst * D.29247;
  struct MonoInst * D.29251;
  guint16 iftmp.16;
  int D.29260;
  struct MonoInst * D.29261;
  int D.29262;
  int D.29263;
  int D.29264;
  unsigned int D.29266;
  int D.29267;
  struct MonoGenericContext * D.29269;
  struct MonoGenericInst * D.29270;
  struct MonoClass * D.29271;
  struct MonoDomain * D.29272;
  struct MonoVTable * D.29273;
  unsigned int D.29274;
  int D.29275;
  int D.29279;
  struct MonoMethod * D.29280;

  if (context_used == 0) goto <D.29222>; else goto <D.29223>;
  <D.29222>:
  {
    struct MonoInst * ins;

    switch (rgctx_type) <default: <D.25698>, case 5: <D.25691>, case 8: <D.25694>>
    <D.25691>:
    D.29224 = cfg->mempool;
    ins = mono_mempool_alloc (D.29224, 48);
    ins->data.op[1].const_val = 0;
    D.29225 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.29225;
    ins->prev = 0B;
    D.29226 = ins->prev;
    ins->next = D.29226;
    D.29228 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.29229 = D.29228 & 64;
    if (D.29229 != 0) goto <D.29230>; else goto <D.29231>;
    <D.29230>:
    iftmp.15 = 738;
    goto <D.29232>;
    <D.29231>:
    iftmp.15 = 362;
    <D.29232>:
    ins->opcode = iftmp.15;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.29233 = ins->sreg3;
    ins->sreg2 = D.29233;
    D.29234 = ins->sreg2;
    ins->sreg1 = D.29234;
    D.29235 = cfg->ip;
    ins->cil_code = D.29235;
    D.29228 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.29229 = D.29228 & 64;
    if (D.29229 != 0) goto <D.29236>; else goto <D.29237>;
    <D.29236>:
    {
      struct MonoInst * group;
      struct MonoInst * got_loc;

      got_loc = mono_get_got_var (cfg);
      D.29224 = cfg->mempool;
      group = mono_mempool_alloc (D.29224, 48);
      group->data.op[1].const_val = 0;
      D.29238 = group->data.op[1].const_val;
      group->data.op[0].const_val = D.29238;
      group->prev = 0B;
      D.29239 = group->prev;
      group->next = D.29239;
      group->opcode = 737;
      group->flags = 0;
      group->type = 0;
      group->dreg = -1;
      group->sreg3 = -1;
      D.29240 = group->sreg3;
      group->sreg2 = D.29240;
      D.29241 = group->sreg2;
      group->sreg1 = D.29241;
      D.29235 = cfg->ip;
      group->cil_code = D.29235;
      group->data.op[0].src = cmethod;
      group->data.op[1].src = 6B;
      D.29242 = got_loc->dreg;
      ins->sreg1 = D.29242;
      ins->data.op[1].p = group;
    }
    goto <D.29243>;
    <D.29237>:
    ins->data.op[0].p = cmethod;
    ins->data.op[1].src = 6B;
    <D.29243>:
    ins->type = 3;
    D.29244 = alloc_dreg (cfg, 3);
    D.29245 = (int) D.29244;
    ins->dreg = D.29245;
    D.29246 = cfg->cbb;
    D.29247 = D.29246->last_ins;
    if (D.29247 != 0B) goto <D.29248>; else goto <D.29249>;
    <D.29248>:
    D.29246 = cfg->cbb;
    D.29247 = D.29246->last_ins;
    D.29247->next = ins;
    D.29246 = cfg->cbb;
    D.29247 = D.29246->last_ins;
    ins->prev = D.29247;
    D.29246 = cfg->cbb;
    D.29246->last_ins = ins;
    goto <D.29250>;
    <D.29249>:
    D.29246 = cfg->cbb;
    D.29246 = cfg->cbb;
    D.29246->last_ins = ins;
    D.29247 = D.29246->last_ins;
    D.29246->code = D.29247;
    <D.29250>:
    D.29251 = ins;
    return D.29251;
    <D.25694>:
    D.29228 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.29229 = D.29228 & 64;
    if (D.29229 != 0) goto <D.29252>; else goto <D.29253>;
    <D.29252>:
    D.29224 = cfg->mempool;
    ins = mono_mempool_alloc (D.29224, 48);
    ins->data.op[1].const_val = 0;
    D.29225 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.29225;
    ins->prev = 0B;
    D.29226 = ins->prev;
    ins->next = D.29226;
    D.29228 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.29229 = D.29228 & 64;
    if (D.29229 != 0) goto <D.29255>; else goto <D.29256>;
    <D.29255>:
    iftmp.16 = 738;
    goto <D.29257>;
    <D.29256>:
    iftmp.16 = 362;
    <D.29257>:
    ins->opcode = iftmp.16;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.29233 = ins->sreg3;
    ins->sreg2 = D.29233;
    D.29234 = ins->sreg2;
    ins->sreg1 = D.29234;
    D.29235 = cfg->ip;
    ins->cil_code = D.29235;
    D.29228 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.29229 = D.29228 & 64;
    if (D.29229 != 0) goto <D.29258>; else goto <D.29259>;
    <D.29258>:
    {
      struct MonoInst * group;
      struct MonoInst * got_loc;

      got_loc = mono_get_got_var (cfg);
      D.29224 = cfg->mempool;
      group = mono_mempool_alloc (D.29224, 48);
      group->data.op[1].const_val = 0;
      D.29260 = group->data.op[1].const_val;
      group->data.op[0].const_val = D.29260;
      group->prev = 0B;
      D.29261 = group->prev;
      group->next = D.29261;
      group->opcode = 737;
      group->flags = 0;
      group->type = 0;
      group->dreg = -1;
      group->sreg3 = -1;
      D.29262 = group->sreg3;
      group->sreg2 = D.29262;
      D.29263 = group->sreg2;
      group->sreg1 = D.29263;
      D.29235 = cfg->ip;
      group->cil_code = D.29235;
      group->data.op[0].src = cmethod;
      group->data.op[1].src = 34B;
      D.29264 = got_loc->dreg;
      ins->sreg1 = D.29264;
      ins->data.op[1].p = group;
    }
    goto <D.29265>;
    <D.29259>:
    ins->data.op[0].p = cmethod;
    ins->data.op[1].src = 34B;
    <D.29265>:
    ins->type = 3;
    D.29266 = alloc_dreg (cfg, 3);
    D.29267 = (int) D.29266;
    ins->dreg = D.29267;
    goto <D.29268>;
    <D.29253>:
    {
      struct MonoMethodRuntimeGenericContext * mrgctx;

      D.29269 = mini_method_get_context (cmethod);
      D.29270 = D.29269->method_inst;
      D.29271 = cmethod->klass;
      D.29272 = cfg->domain;
      D.29273 = mono_class_vtable (D.29272, D.29271);
      mrgctx = mono_method_lookup_rgctx (D.29273, D.29270);
      D.29224 = cfg->mempool;
      ins = mono_mempool_alloc (D.29224, 48);
      ins->data.op[1].const_val = 0;
      D.29225 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29225;
      ins->prev = 0B;
      D.29226 = ins->prev;
      ins->next = D.29226;
      ins->opcode = 362;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29233 = ins->sreg3;
      ins->sreg2 = D.29233;
      D.29234 = ins->sreg2;
      ins->sreg1 = D.29234;
      D.29235 = cfg->ip;
      ins->cil_code = D.29235;
      ins->data.op[0].p = mrgctx;
      ins->type = 3;
      D.29274 = alloc_dreg (cfg, 3);
      D.29275 = (int) D.29274;
      ins->dreg = D.29275;
    }
    <D.29268>:
    D.29246 = cfg->cbb;
    D.29247 = D.29246->last_ins;
    if (D.29247 != 0B) goto <D.29276>; else goto <D.29277>;
    <D.29276>:
    D.29246 = cfg->cbb;
    D.29247 = D.29246->last_ins;
    D.29247->next = ins;
    D.29246 = cfg->cbb;
    D.29247 = D.29246->last_ins;
    ins->prev = D.29247;
    D.29246 = cfg->cbb;
    D.29246->last_ins = ins;
    goto <D.29278>;
    <D.29277>:
    D.29246 = cfg->cbb;
    D.29246 = cfg->cbb;
    D.29246->last_ins = ins;
    D.29247 = D.29246->last_ins;
    D.29246->code = D.29247;
    <D.29278>:
    D.29251 = ins;
    return D.29251;
    <D.25698>:
    monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 3327);
  }
  <D.29223>:
  {
    struct MonoJumpInfoRgctxEntry * entry;
    struct MonoInst * rgctx;

    D.29279 = context_used & 2;
    D.29280 = cfg->current_method;
    D.29224 = cfg->mempool;
    entry = mono_patch_info_rgctx_entry_new (D.29224, D.29280, D.29279, 6, cmethod, rgctx_type);
    D.29280 = cfg->current_method;
    rgctx = emit_get_rgctx (cfg, D.29280, context_used);
    D.29251 = emit_rgctx_fetch (cfg, rgctx, entry);
    return D.29251;
  }
}


mono_patch_info_rgctx_entry_new (struct MonoMemPool * mp, struct MonoMethod * method, gboolean in_mrgctx, MonoJumpInfoType patch_type, const void * patch_data, MonoRgctxInfoType info_type)
{
  void * D.29282;
  struct MonoJumpInfo * D.29283;
  struct MonoJumpInfoRgctxEntry * D.29284;
  struct MonoJumpInfoRgctxEntry * res;

  res = mono_mempool_alloc0 (mp, 16);
  res->method = method;
  res->in_mrgctx = in_mrgctx;
  D.29282 = mono_mempool_alloc0 (mp, 20);
  res->data = D.29282;
  D.29283 = res->data;
  D.29283->type = patch_type;
  D.29283 = res->data;
  D.29283->data.target = patch_data;
  res->info_type = info_type;
  D.29284 = res;
  return D.29284;
}


emit_get_rgctx (struct MonoCompile * cfg, struct MonoMethod * method, int context_used)
{
  struct MonoGenericSharingContext * D.29286;
  _Bool D.29287;
  long int D.29288;
  long int D.29289;
  short unsigned int D.29292;
  int D.29293;
  int D.29294;
  int D.29297;
  struct MonoClass * D.29300;
  unsigned char D.29301;
  unsigned char D.29302;
  struct MonoMemPool * D.29305;
  int D.29306;
  struct MonoInst * D.29307;
  int D.29308;
  int D.29309;
  const unsigned char * D.29310;
  struct MonoType * * D.29311;
  struct MonoType * D.29312;
  unsigned int D.29313;
  short unsigned int D.29314;
  struct MonoInst * * D.29315;
  struct MonoInst * D.29316;
  struct MonoClass * D.29317;
  int D.29318;
  unsigned char D.29319;
  <unnamed type> D.29320;
  unsigned int D.29321;
  int D.29322;
  short unsigned int D.29323;
  struct MonoClass * D.29326;
  struct MonoBasicBlock * D.29327;
  struct MonoInst * D.29328;
  _Bool D.29334;
  long int D.29335;
  long int D.29336;
  int iftmp.17;
  unsigned char D.29343;
  unsigned char D.29344;
  struct MonoGenericContext * D.29346;
  struct MonoGenericInst * D.29347;
  _Bool D.29348;
  long int D.29349;
  long int D.29350;
  int D.29353;
  struct MonoInst * D.29354;
  int D.29355;
  int D.29356;
  struct MonoInst * * D.29357;
  int D.29358;
  unsigned int D.29359;
  unsigned int D.29360;
  struct MonoInst * * D.29361;
  struct MonoInst * D.29362;
  struct MonoType * D.29363;
  unsigned int D.29364;
  short unsigned int D.29365;
  struct MonoClass * D.29366;
  int D.29367;
  unsigned char D.29368;
  <unnamed type> D.29369;
  unsigned int D.29370;
  int D.29371;
  short unsigned int D.29372;
  struct MonoClass * D.29375;
  struct MonoInst * D.29379;
  int D.29385;
  struct MonoInst * D.29386;
  int D.29387;
  int D.29388;
  int D.29389;
  unsigned int D.29390;
  unsigned int D.29391;
  struct MonoInst * * D.29392;
  struct MonoInst * D.29393;
  struct MonoType * D.29394;
  unsigned int D.29395;
  short unsigned int D.29396;
  struct MonoClass * D.29397;
  int D.29398;
  unsigned char D.29399;
  <unnamed type> D.29400;
  unsigned int D.29401;
  int D.29402;
  short unsigned int D.29403;
  struct MonoClass * D.29406;
  struct MonoGenericContext * D.29412;
  struct MonoGenericInst * D.29413;
  unsigned int D.29416;
  int D.29417;
  unsigned int D.29421;
  int D.29422;
  struct MonoInst * D.29423;
  int D.29424;
  int D.29425;
  int D.29426;
  struct MonoInst * this;

  this = 0B;
  D.29286 = cfg->generic_sharing_context;
  D.29287 = D.29286 == 0B;
  D.29288 = (long int) D.29287;
  D.29289 = __builtin_expect (D.29288, 0);
  if (D.29289 != 0) goto <D.29290>; else goto <D.29291>;
  <D.29290>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3189, "cfg->generic_sharing_context");
  <D.29291>:
  D.29292 = method->flags;
  D.29293 = (int) D.29292;
  D.29294 = D.29293 & 16;
  if (D.29294 == 0) goto <D.29295>; else goto <D.29296>;
  <D.29295>:
  D.29297 = context_used & 2;
  if (D.29297 == 0) goto <D.29298>; else goto <D.29299>;
  <D.29298>:
  D.29300 = method->klass;
  D.29301 = BIT_FIELD_REF <*D.29300, 8, 160>;
  D.29302 = D.29301 & 8;
  if (D.29302 == 0) goto <D.29303>; else goto <D.29304>;
  <D.29303>:
  D.29305 = cfg->mempool;
  this = mono_mempool_alloc (D.29305, 48);
  this->data.op[1].const_val = 0;
  D.29306 = this->data.op[1].const_val;
  this->data.op[0].const_val = D.29306;
  this->prev = 0B;
  D.29307 = this->prev;
  this->next = D.29307;
  this->opcode = 428;
  this->flags = 0;
  this->type = 0;
  this->dreg = -1;
  this->sreg3 = -1;
  D.29308 = this->sreg3;
  this->sreg2 = D.29308;
  D.29309 = this->sreg2;
  this->sreg1 = D.29309;
  D.29310 = cfg->ip;
  this->cil_code = D.29310;
  D.29311 = cfg->arg_types;
  D.29312 = *D.29311;
  D.29313 = mono_type_to_regmove (cfg, D.29312);
  D.29314 = (short unsigned int) D.29313;
  this->opcode = D.29314;
  D.29311 = cfg->arg_types;
  D.29312 = *D.29311;
  type_to_eval_stack_type (cfg, D.29312, this);
  D.29315 = cfg->args;
  D.29316 = *D.29315;
  D.29317 = D.29316->klass;
  this->klass = D.29317;
  D.29315 = cfg->args;
  D.29316 = *D.29315;
  D.29318 = D.29316->dreg;
  this->sreg1 = D.29318;
  D.29319 = this->type;
  D.29320 = (<unnamed type>) D.29319;
  D.29321 = alloc_dreg (cfg, D.29320);
  D.29322 = (int) D.29321;
  this->dreg = D.29322;
  D.29323 = this->opcode;
  if (D.29323 == 431) goto <D.29324>; else goto <D.29325>;
  <D.29324>:
  D.29311 = cfg->arg_types;
  D.29312 = *D.29311;
  D.29326 = mono_class_from_mono_type (D.29312);
  this->klass = D.29326;
  <D.29325>:
  D.29327 = cfg->cbb;
  D.29328 = D.29327->last_ins;
  if (D.29328 != 0B) goto <D.29329>; else goto <D.29330>;
  <D.29329>:
  D.29327 = cfg->cbb;
  D.29328 = D.29327->last_ins;
  D.29328->next = this;
  D.29327 = cfg->cbb;
  D.29328 = D.29327->last_ins;
  this->prev = D.29328;
  D.29327 = cfg->cbb;
  D.29327->last_ins = this;
  goto <D.29331>;
  <D.29330>:
  D.29327 = cfg->cbb;
  D.29327 = cfg->cbb;
  D.29327->last_ins = this;
  D.29328 = D.29327->last_ins;
  D.29327->code = D.29328;
  <D.29331>:
  <D.29304>:
  <D.29299>:
  <D.29296>:
  D.29297 = context_used & 2;
  if (D.29297 != 0) goto <D.29332>; else goto <D.29333>;
  <D.29332>:
  {
    struct MonoInst * mrgctx_loc;
    struct MonoInst * mrgctx_var;

    D.29334 = this != 0B;
    D.29335 = (long int) D.29334;
    D.29336 = __builtin_expect (D.29335, 0);
    if (D.29336 != 0) goto <D.29337>; else goto <D.29338>;
    <D.29337>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3199, "!this");
    <D.29338>:
    D.29343 = BIT_FIELD_REF <*method, 8, 168>;
    D.29344 = D.29343 & 16;
    if (D.29344 == 0) goto <D.29340>; else goto <D.29345>;
    <D.29345>:
    D.29346 = mono_method_get_context (method);
    D.29347 = D.29346->method_inst;
    if (D.29347 == 0B) goto <D.29340>; else goto <D.29341>;
    <D.29340>:
    iftmp.17 = 1;
    goto <D.29342>;
    <D.29341>:
    iftmp.17 = 0;
    <D.29342>:
    D.29348 = iftmp.17 != 0;
    D.29349 = (long int) D.29348;
    D.29350 = __builtin_expect (D.29349, 0);
    if (D.29350 != 0) goto <D.29351>; else goto <D.29352>;
    <D.29351>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3200, "method->is_inflated && mono_method_get_context (method)->method_inst");
    <D.29352>:
    mrgctx_loc = mono_get_vtable_var (cfg);
    D.29305 = cfg->mempool;
    mrgctx_var = mono_mempool_alloc (D.29305, 48);
    mrgctx_var->data.op[1].const_val = 0;
    D.29353 = mrgctx_var->data.op[1].const_val;
    mrgctx_var->data.op[0].const_val = D.29353;
    mrgctx_var->prev = 0B;
    D.29354 = mrgctx_var->prev;
    mrgctx_var->next = D.29354;
    mrgctx_var->opcode = 428;
    mrgctx_var->flags = 0;
    mrgctx_var->type = 0;
    mrgctx_var->dreg = -1;
    mrgctx_var->sreg3 = -1;
    D.29355 = mrgctx_var->sreg3;
    mrgctx_var->sreg2 = D.29355;
    D.29356 = mrgctx_var->sreg2;
    mrgctx_var->sreg1 = D.29356;
    D.29310 = cfg->ip;
    mrgctx_var->cil_code = D.29310;
    D.29357 = cfg->varinfo;
    D.29358 = mrgctx_loc->data.op[0].const_val;
    D.29359 = (unsigned int) D.29358;
    D.29360 = D.29359 * 4;
    D.29361 = D.29357 + D.29360;
    D.29362 = *D.29361;
    D.29363 = D.29362->data.op[1].vtype;
    D.29364 = mono_type_to_regmove (cfg, D.29363);
    D.29365 = (short unsigned int) D.29364;
    mrgctx_var->opcode = D.29365;
    D.29357 = cfg->varinfo;
    D.29358 = mrgctx_loc->data.op[0].const_val;
    D.29359 = (unsigned int) D.29358;
    D.29360 = D.29359 * 4;
    D.29361 = D.29357 + D.29360;
    D.29362 = *D.29361;
    D.29363 = D.29362->data.op[1].vtype;
    type_to_eval_stack_type (cfg, D.29363, mrgctx_var);
    D.29357 = cfg->varinfo;
    D.29358 = mrgctx_loc->data.op[0].const_val;
    D.29359 = (unsigned int) D.29358;
    D.29360 = D.29359 * 4;
    D.29361 = D.29357 + D.29360;
    D.29362 = *D.29361;
    D.29366 = D.29362->klass;
    mrgctx_var->klass = D.29366;
    D.29357 = cfg->varinfo;
    D.29358 = mrgctx_loc->data.op[0].const_val;
    D.29359 = (unsigned int) D.29358;
    D.29360 = D.29359 * 4;
    D.29361 = D.29357 + D.29360;
    D.29362 = *D.29361;
    D.29367 = D.29362->dreg;
    mrgctx_var->sreg1 = D.29367;
    D.29368 = mrgctx_var->type;
    D.29369 = (<unnamed type>) D.29368;
    D.29370 = alloc_dreg (cfg, D.29369);
    D.29371 = (int) D.29370;
    mrgctx_var->dreg = D.29371;
    D.29372 = mrgctx_var->opcode;
    if (D.29372 == 431) goto <D.29373>; else goto <D.29374>;
    <D.29373>:
    D.29357 = cfg->varinfo;
    D.29358 = mrgctx_loc->data.op[0].const_val;
    D.29359 = (unsigned int) D.29358;
    D.29360 = D.29359 * 4;
    D.29361 = D.29357 + D.29360;
    D.29362 = *D.29361;
    D.29363 = D.29362->data.op[1].vtype;
    D.29375 = mono_class_from_mono_type (D.29363);
    mrgctx_var->klass = D.29375;
    <D.29374>:
    D.29327 = cfg->cbb;
    D.29328 = D.29327->last_ins;
    if (D.29328 != 0B) goto <D.29376>; else goto <D.29377>;
    <D.29376>:
    D.29327 = cfg->cbb;
    D.29328 = D.29327->last_ins;
    D.29328->next = mrgctx_var;
    D.29327 = cfg->cbb;
    D.29328 = D.29327->last_ins;
    mrgctx_var->prev = D.29328;
    D.29327 = cfg->cbb;
    D.29327->last_ins = mrgctx_var;
    goto <D.29378>;
    <D.29377>:
    D.29327 = cfg->cbb;
    D.29327 = cfg->cbb;
    D.29327->last_ins = mrgctx_var;
    D.29328 = D.29327->last_ins;
    D.29327->code = D.29328;
    <D.29378>:
    D.29379 = mrgctx_var;
    return D.29379;
  }
  <D.29333>:
  D.29292 = method->flags;
  D.29293 = (int) D.29292;
  D.29294 = D.29293 & 16;
  if (D.29294 != 0) goto <D.29380>; else goto <D.29382>;
  <D.29382>:
  D.29300 = method->klass;
  D.29301 = BIT_FIELD_REF <*D.29300, 8, 160>;
  D.29302 = D.29301 & 8;
  if (D.29302 != 0) goto <D.29380>; else goto <D.29381>;
  <D.29380>:
  {
    struct MonoInst * vtable_loc;
    struct MonoInst * vtable_var;

    D.29334 = this != 0B;
    D.29335 = (long int) D.29334;
    D.29336 = __builtin_expect (D.29335, 0);
    if (D.29336 != 0) goto <D.29383>; else goto <D.29384>;
    <D.29383>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3209, "!this");
    <D.29384>:
    vtable_loc = mono_get_vtable_var (cfg);
    D.29305 = cfg->mempool;
    vtable_var = mono_mempool_alloc (D.29305, 48);
    vtable_var->data.op[1].const_val = 0;
    D.29385 = vtable_var->data.op[1].const_val;
    vtable_var->data.op[0].const_val = D.29385;
    vtable_var->prev = 0B;
    D.29386 = vtable_var->prev;
    vtable_var->next = D.29386;
    vtable_var->opcode = 428;
    vtable_var->flags = 0;
    vtable_var->type = 0;
    vtable_var->dreg = -1;
    vtable_var->sreg3 = -1;
    D.29387 = vtable_var->sreg3;
    vtable_var->sreg2 = D.29387;
    D.29388 = vtable_var->sreg2;
    vtable_var->sreg1 = D.29388;
    D.29310 = cfg->ip;
    vtable_var->cil_code = D.29310;
    D.29357 = cfg->varinfo;
    D.29389 = vtable_loc->data.op[0].const_val;
    D.29390 = (unsigned int) D.29389;
    D.29391 = D.29390 * 4;
    D.29392 = D.29357 + D.29391;
    D.29393 = *D.29392;
    D.29394 = D.29393->data.op[1].vtype;
    D.29395 = mono_type_to_regmove (cfg, D.29394);
    D.29396 = (short unsigned int) D.29395;
    vtable_var->opcode = D.29396;
    D.29357 = cfg->varinfo;
    D.29389 = vtable_loc->data.op[0].const_val;
    D.29390 = (unsigned int) D.29389;
    D.29391 = D.29390 * 4;
    D.29392 = D.29357 + D.29391;
    D.29393 = *D.29392;
    D.29394 = D.29393->data.op[1].vtype;
    type_to_eval_stack_type (cfg, D.29394, vtable_var);
    D.29357 = cfg->varinfo;
    D.29389 = vtable_loc->data.op[0].const_val;
    D.29390 = (unsigned int) D.29389;
    D.29391 = D.29390 * 4;
    D.29392 = D.29357 + D.29391;
    D.29393 = *D.29392;
    D.29397 = D.29393->klass;
    vtable_var->klass = D.29397;
    D.29357 = cfg->varinfo;
    D.29389 = vtable_loc->data.op[0].const_val;
    D.29390 = (unsigned int) D.29389;
    D.29391 = D.29390 * 4;
    D.29392 = D.29357 + D.29391;
    D.29393 = *D.29392;
    D.29398 = D.29393->dreg;
    vtable_var->sreg1 = D.29398;
    D.29399 = vtable_var->type;
    D.29400 = (<unnamed type>) D.29399;
    D.29401 = alloc_dreg (cfg, D.29400);
    D.29402 = (int) D.29401;
    vtable_var->dreg = D.29402;
    D.29403 = vtable_var->opcode;
    if (D.29403 == 431) goto <D.29404>; else goto <D.29405>;
    <D.29404>:
    D.29357 = cfg->varinfo;
    D.29389 = vtable_loc->data.op[0].const_val;
    D.29390 = (unsigned int) D.29389;
    D.29391 = D.29390 * 4;
    D.29392 = D.29357 + D.29391;
    D.29393 = *D.29392;
    D.29394 = D.29393->data.op[1].vtype;
    D.29406 = mono_class_from_mono_type (D.29394);
    vtable_var->klass = D.29406;
    <D.29405>:
    D.29327 = cfg->cbb;
    D.29328 = D.29327->last_ins;
    if (D.29328 != 0B) goto <D.29407>; else goto <D.29408>;
    <D.29407>:
    D.29327 = cfg->cbb;
    D.29328 = D.29327->last_ins;
    D.29328->next = vtable_var;
    D.29327 = cfg->cbb;
    D.29328 = D.29327->last_ins;
    vtable_var->prev = D.29328;
    D.29327 = cfg->cbb;
    D.29327->last_ins = vtable_var;
    goto <D.29409>;
    <D.29408>:
    D.29327 = cfg->cbb;
    D.29327 = cfg->cbb;
    D.29327->last_ins = vtable_var;
    D.29328 = D.29327->last_ins;
    D.29327->code = D.29328;
    <D.29409>:
    D.29343 = BIT_FIELD_REF <*method, 8, 168>;
    D.29344 = D.29343 & 16;
    if (D.29344 != 0) goto <D.29410>; else goto <D.29411>;
    <D.29410>:
    D.29412 = mono_method_get_context (method);
    D.29413 = D.29412->method_inst;
    if (D.29413 != 0B) goto <D.29414>; else goto <D.29415>;
    <D.29414>:
    {
      struct MonoInst * mrgctx_var;
      int vtable_reg;

      mrgctx_var = vtable_var;
      D.29416 = alloc_preg (cfg);
      vtable_reg = (int) D.29416;
      D.29305 = cfg->mempool;
      vtable_var = mono_mempool_alloc (D.29305, 48);
      vtable_var->data.op[1].const_val = 0;
      D.29385 = vtable_var->data.op[1].const_val;
      vtable_var->data.op[0].const_val = D.29385;
      vtable_var->prev = 0B;
      D.29386 = vtable_var->prev;
      vtable_var->next = D.29386;
      vtable_var->opcode = 391;
      vtable_var->flags = 0;
      vtable_var->type = 0;
      vtable_var->dreg = -1;
      vtable_var->sreg3 = -1;
      D.29387 = vtable_var->sreg3;
      vtable_var->sreg2 = D.29387;
      D.29388 = vtable_var->sreg2;
      vtable_var->sreg1 = D.29388;
      D.29310 = cfg->ip;
      vtable_var->cil_code = D.29310;
      vtable_var->dreg = vtable_reg;
      D.29417 = mrgctx_var->dreg;
      vtable_var->sreg1 = D.29417;
      vtable_var->data.op[0].const_val = 0;
      vtable_var->type = 1;
      D.29327 = cfg->cbb;
      D.29328 = D.29327->last_ins;
      if (D.29328 != 0B) goto <D.29418>; else goto <D.29419>;
      <D.29418>:
      D.29327 = cfg->cbb;
      D.29328 = D.29327->last_ins;
      D.29328->next = vtable_var;
      D.29327 = cfg->cbb;
      D.29328 = D.29327->last_ins;
      vtable_var->prev = D.29328;
      D.29327 = cfg->cbb;
      D.29327->last_ins = vtable_var;
      goto <D.29420>;
      <D.29419>:
      D.29327 = cfg->cbb;
      D.29327 = cfg->cbb;
      D.29327->last_ins = vtable_var;
      D.29328 = D.29327->last_ins;
      D.29327->code = D.29328;
      <D.29420>:
      vtable_var->type = 3;
    }
    <D.29415>:
    <D.29411>:
    D.29379 = vtable_var;
    return D.29379;
  }
  <D.29381>:
  {
    struct MonoInst * ins;
    int vtable_reg;

    D.29421 = alloc_preg (cfg);
    vtable_reg = (int) D.29421;
    D.29305 = cfg->mempool;
    ins = mono_mempool_alloc (D.29305, 48);
    ins->data.op[1].const_val = 0;
    D.29422 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.29422;
    ins->prev = 0B;
    D.29423 = ins->prev;
    ins->next = D.29423;
    ins->opcode = 391;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.29424 = ins->sreg3;
    ins->sreg2 = D.29424;
    D.29425 = ins->sreg2;
    ins->sreg1 = D.29425;
    D.29310 = cfg->ip;
    ins->cil_code = D.29310;
    ins->dreg = vtable_reg;
    D.29426 = this->dreg;
    ins->sreg1 = D.29426;
    ins->data.op[0].const_val = 0;
    ins->type = 1;
    D.29327 = cfg->cbb;
    D.29328 = D.29327->last_ins;
    if (D.29328 != 0B) goto <D.29427>; else goto <D.29428>;
    <D.29427>:
    D.29327 = cfg->cbb;
    D.29328 = D.29327->last_ins;
    D.29328->next = ins;
    D.29327 = cfg->cbb;
    D.29328 = D.29327->last_ins;
    ins->prev = D.29328;
    D.29327 = cfg->cbb;
    D.29327->last_ins = ins;
    goto <D.29429>;
    <D.29428>:
    D.29327 = cfg->cbb;
    D.29327 = cfg->cbb;
    D.29327->last_ins = ins;
    D.29328 = D.29327->last_ins;
    D.29327->code = D.29328;
    <D.29429>:
    D.29379 = ins;
    return D.29379;
  }
}


mono_get_vtable_var (struct MonoCompile * cfg)
{
  struct MonoGenericSharingContext * D.29431;
  _Bool D.29432;
  long int D.29433;
  long int D.29434;
  struct MonoInst * D.29437;
  struct MonoClass * D.29440;
  struct MonoType * D.29441;
  struct MonoInst * D.29442;
  unsigned char D.29443;
  unsigned char D.29444;
  struct MonoInst * D.29445;

  D.29431 = cfg->generic_sharing_context;
  D.29432 = D.29431 == 0B;
  D.29433 = (long int) D.29432;
  D.29434 = __builtin_expect (D.29433, 0);
  if (D.29434 != 0) goto <D.29435>; else goto <D.29436>;
  <D.29435>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1161, "cfg->generic_sharing_context");
  <D.29436>:
  D.29437 = cfg->rgctx_var;
  if (D.29437 == 0B) goto <D.29438>; else goto <D.29439>;
  <D.29438>:
  D.29440 = mono_defaults.int_class;
  D.29441 = &D.29440->byval_arg;
  D.29442 = mono_compile_create_var (cfg, D.29441, 329);
  cfg->rgctx_var = D.29442;
  D.29437 = cfg->rgctx_var;
  D.29437 = cfg->rgctx_var;
  D.29443 = D.29437->flags;
  D.29444 = D.29443 | 4;
  D.29437->flags = D.29444;
  <D.29439>:
  D.29445 = cfg->rgctx_var;
  return D.29445;
}


emit_rgctx_fetch (struct MonoCompile * cfg, struct MonoInst * rgctx, struct MonoJumpInfoRgctxEntry * entry)
{
  struct MonoInst * D.29447;
  struct MonoMethodSignature * helper_sig_rgctx_lazy_fetch_trampoline.18;

  helper_sig_rgctx_lazy_fetch_trampoline.18 = helper_sig_rgctx_lazy_fetch_trampoline;
  D.29447 = mono_emit_abs_call (cfg, 35, entry, helper_sig_rgctx_lazy_fetch_trampoline.18, &rgctx);
  return D.29447;
}


mono_emit_abs_call (struct MonoCompile * cfg, MonoJumpInfoType patch_type, const void * data, struct MonoMethodSignature * sig, struct MonoInst * * args)
{
  struct MonoMemPool * D.29450;
  struct GHashTable * D.29451;
  struct GHashTable * D.29454;
  struct MonoInst * D.29455;
  struct MonoJumpInfo * ji;
  struct MonoInst * ins;

  D.29450 = cfg->mempool;
  ji = mono_patch_info_new (D.29450, 0, patch_type, data);
  D.29451 = cfg->abs_patches;
  if (D.29451 == 0B) goto <D.29452>; else goto <D.29453>;
  <D.29452>:
  D.29454 = monoeg_g_hash_table_new (0B, 0B);
  cfg->abs_patches = D.29454;
  <D.29453>:
  D.29451 = cfg->abs_patches;
  monoeg_g_hash_table_insert_replace (D.29451, ji, ji, 0);
  ins = mono_emit_native_call (cfg, ji, sig, args);
  MEM[(struct MonoCallInst *)ins].fptr_is_patch = 1;
  D.29455 = ins;
  return D.29455;
}


mono_patch_info_new (struct MonoMemPool * mp, int ip, MonoJumpInfoType type, const void * target)
{
  struct MonoJumpInfo * D.29457;
  struct MonoJumpInfo * ji;

  ji = mono_mempool_alloc (mp, 20);
  ji->ip.i = ip;
  ji->type = type;
  ji->data.target = target;
  D.29457 = ji;
  return D.29457;
}


mono_emit_calli (struct MonoCompile * cfg, struct MonoMethodSignature * sig, struct MonoInst * * args, struct MonoInst * addr, struct MonoInst * imt_arg, struct MonoInst * rgctx_arg)
{
  unsigned int D.29461;
  struct MonoMemPool * D.29462;
  int D.29463;
  struct MonoInst * D.29464;
  int D.29465;
  int D.29466;
  const unsigned char * D.29467;
  int D.29468;
  struct MonoBasicBlock * D.29469;
  struct MonoInst * D.29470;
  _Bool D.29474;
  int D.29475;
  int D.29476;
  struct MonoInst * D.29484;
  struct MonoCallInst * call;
  int rgctx_reg;

  rgctx_reg = -1;
  if (rgctx_arg != 0B) goto <D.29459>; else goto <D.29460>;
  <D.29459>:
  D.29461 = mono_alloc_preg (cfg);
  rgctx_reg = (int) D.29461;
  {
    struct MonoInst * inst;

    D.29462 = cfg->mempool;
    inst = mono_mempool_alloc (D.29462, 48);
    inst->data.op[1].const_val = 0;
    D.29463 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.29463;
    inst->prev = 0B;
    D.29464 = inst->prev;
    inst->next = D.29464;
    inst->opcode = 428;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.29465 = inst->sreg3;
    inst->sreg2 = D.29465;
    D.29466 = inst->sreg2;
    inst->sreg1 = D.29466;
    D.29467 = cfg->ip;
    inst->cil_code = D.29467;
    inst->dreg = rgctx_reg;
    D.29468 = rgctx_arg->dreg;
    inst->sreg1 = D.29468;
    D.29469 = cfg->cbb;
    D.29470 = D.29469->last_ins;
    if (D.29470 != 0B) goto <D.29471>; else goto <D.29472>;
    <D.29471>:
    D.29469 = cfg->cbb;
    D.29470 = D.29469->last_ins;
    D.29470->next = inst;
    D.29469 = cfg->cbb;
    D.29470 = D.29469->last_ins;
    inst->prev = D.29470;
    D.29469 = cfg->cbb;
    D.29469->last_ins = inst;
    goto <D.29473>;
    <D.29472>:
    D.29469 = cfg->cbb;
    D.29469 = cfg->cbb;
    D.29469->last_ins = inst;
    D.29470 = D.29469->last_ins;
    D.29469->code = D.29470;
    <D.29473>:
  }
  <D.29460>:
  D.29474 = rgctx_arg != 0B;
  D.29475 = (int) D.29474;
  call = mono_emit_call_args (cfg, sig, args, 1, 0, 0, D.29475, 0);
  D.29476 = addr->dreg;
  call->inst.sreg1 = D.29476;
  if (imt_arg != 0B) goto <D.29477>; else goto <D.29478>;
  <D.29477>:
  emit_imt_argument (cfg, call, 0B, imt_arg);
  <D.29478>:
  D.29469 = cfg->cbb;
  D.29470 = D.29469->last_ins;
  if (D.29470 != 0B) goto <D.29479>; else goto <D.29480>;
  <D.29479>:
  D.29469 = cfg->cbb;
  D.29470 = D.29469->last_ins;
  D.29470->next = call;
  D.29469 = cfg->cbb;
  D.29470 = D.29469->last_ins;
  MEM[(struct MonoInst *)call].prev = D.29470;
  D.29469 = cfg->cbb;
  D.29469->last_ins = call;
  goto <D.29481>;
  <D.29480>:
  D.29469 = cfg->cbb;
  D.29469 = cfg->cbb;
  D.29469->last_ins = call;
  D.29470 = D.29469->last_ins;
  D.29469->code = D.29470;
  <D.29481>:
  if (rgctx_arg != 0B) goto <D.29482>; else goto <D.29483>;
  <D.29482>:
  set_rgctx_arg (cfg, call, rgctx_reg, rgctx_arg);
  <D.29483>:
  D.29484 = call;
  return D.29484;
}


mono_emit_call_args (struct MonoCompile * cfg, struct MonoMethodSignature * sig, struct MonoInst * * args, int calli, int virtual, int tail, int rgctx, int unbox_trampoline)
{
  struct MonoMemPool * D.29488;
  int D.29489;
  int D.29490;
  const unsigned char * D.29491;
  struct MonoGenericSharingContext * D.29493;
  struct MonoType * D.29494;
  int D.29495;
  short unsigned int D.29496;
  unsigned char D.29497;
  <unnamed-unsigned:1> D.29498;
  struct MonoInst * D.29499;
  int D.29502;
  struct MonoInst * D.29505;
  int D.29507;
  <unnamed-unsigned:1> D.29510;
  int D.29511;
  int D.29512;
  struct MonoInst * D.29513;
  int D.29514;
  int D.29515;
  unsigned int D.29516;
  int D.29517;
  struct MonoBasicBlock * D.29518;
  struct MonoInst * D.29519;
  int D.29523;
  int D.29525;
  unsigned char D.29528;
  <unnamed type> D.29529;
  unsigned int D.29530;
  int D.29531;
  unsigned char D.29532;
  <unnamed-unsigned:1> D.29533;
  unsigned int D.29534;
  unsigned int D.29535;
  unsigned int D.29536;
  unsigned int D.29537;
  unsigned int D.29538;
  struct MonoCallInst * D.29539;
  struct MonoType * sig_ret;
  struct MonoCallInst * call;

  if (tail != 0) goto <D.29486>; else goto <D.29487>;
  <D.29486>:
  D.29488 = cfg->mempool;
  call = mono_mempool_alloc0 (D.29488, 108);
  call->inst.opcode = 448;
  call->inst.dreg = -1;
  call->inst.sreg3 = -1;
  D.29489 = call->inst.sreg3;
  call->inst.sreg2 = D.29489;
  D.29490 = call->inst.sreg2;
  call->inst.sreg1 = D.29490;
  D.29491 = cfg->ip;
  call->inst.cil_code = D.29491;
  goto <D.29492>;
  <D.29487>:
  D.29488 = cfg->mempool;
  call = mono_mempool_alloc0 (D.29488, 108);
  D.29493 = cfg->generic_sharing_context;
  D.29494 = sig->ret;
  D.29495 = ret_type_to_call_opcode (D.29494, calli, virtual, D.29493);
  D.29496 = (short unsigned int) D.29495;
  call->inst.opcode = D.29496;
  call->inst.dreg = -1;
  call->inst.sreg3 = -1;
  D.29489 = call->inst.sreg3;
  call->inst.sreg2 = D.29489;
  D.29490 = call->inst.sreg2;
  call->inst.sreg1 = D.29490;
  D.29491 = cfg->ip;
  call->inst.cil_code = D.29491;
  <D.29492>:
  call->args = args;
  call->signature = sig;
  D.29497 = (unsigned char) rgctx;
  D.29498 = (<unnamed-unsigned:1>) D.29497;
  call->rgctx_reg = D.29498;
  D.29494 = sig->ret;
  sig_ret = mini_replace_type (D.29494);
  D.29499 = &call->inst;
  type_to_eval_stack_type (cfg, sig_ret, D.29499);
  if (tail != 0) goto <D.29500>; else goto <D.29501>;
  <D.29500>:
  D.29502 = mini_type_is_vtype (cfg, sig_ret);
  if (D.29502 != 0) goto <D.29503>; else goto <D.29504>;
  <D.29503>:
  D.29505 = cfg->vret_addr;
  call->vret_var = D.29505;
  <D.29504>:
  goto <D.29506>;
  <D.29501>:
  D.29507 = mini_type_is_vtype (cfg, sig_ret);
  if (D.29507 != 0) goto <D.29508>; else goto <D.29509>;
  <D.29508>:
  {
    struct MonoInst * temp;
    struct MonoInst * loada;

    temp = mono_compile_create_var (cfg, sig_ret, 329);
    D.29510 = sig->pinvoke;
    D.29511 = (int) D.29510;
    temp->backend.is_pinvoke = D.29511;
    D.29488 = cfg->mempool;
    loada = mono_mempool_alloc (D.29488, 48);
    loada->data.op[1].const_val = 0;
    D.29512 = loada->data.op[1].const_val;
    loada->data.op[0].const_val = D.29512;
    loada->prev = 0B;
    D.29513 = loada->prev;
    loada->next = D.29513;
    loada->opcode = 334;
    loada->flags = 0;
    loada->type = 0;
    loada->dreg = -1;
    loada->sreg3 = -1;
    D.29514 = loada->sreg3;
    loada->sreg2 = D.29514;
    D.29515 = loada->sreg2;
    loada->sreg1 = D.29515;
    D.29491 = cfg->ip;
    loada->cil_code = D.29491;
    D.29516 = alloc_preg (cfg);
    D.29517 = (int) D.29516;
    loada->dreg = D.29517;
    loada->data.op[0].p = temp;
    loada->data.op[1].p = call;
    D.29518 = cfg->cbb;
    D.29519 = D.29518->last_ins;
    if (D.29519 != 0B) goto <D.29520>; else goto <D.29521>;
    <D.29520>:
    D.29518 = cfg->cbb;
    D.29519 = D.29518->last_ins;
    D.29519->next = loada;
    D.29518 = cfg->cbb;
    D.29519 = D.29518->last_ins;
    loada->prev = D.29519;
    D.29518 = cfg->cbb;
    D.29518->last_ins = loada;
    goto <D.29522>;
    <D.29521>:
    D.29518 = cfg->cbb;
    D.29518 = cfg->cbb;
    D.29518->last_ins = loada;
    D.29519 = D.29518->last_ins;
    D.29518->code = D.29519;
    <D.29522>:
    D.29523 = temp->dreg;
    call->inst.dreg = D.29523;
    call->vret_var = loada;
  }
  goto <D.29524>;
  <D.29509>:
  D.29525 = mono_type_is_void (sig_ret);
  if (D.29525 == 0) goto <D.29526>; else goto <D.29527>;
  <D.29526>:
  D.29528 = call->inst.type;
  D.29529 = (<unnamed type>) D.29528;
  D.29530 = alloc_dreg (cfg, D.29529);
  D.29531 = (int) D.29530;
  call->inst.dreg = D.29531;
  <D.29527>:
  <D.29524>:
  <D.29506>:
  D.29532 = (unsigned char) unbox_trampoline;
  D.29533 = (<unnamed-unsigned:1>) D.29532;
  call->need_unbox_trampoline = D.29533;
  mono_arch_emit_call (cfg, call);
  D.29534 = call->stack_usage;
  D.29535 = cfg->param_area;
  D.29536 = MAX_EXPR <D.29534, D.29535>;
  cfg->param_area = D.29536;
  D.29537 = cfg->flags;
  D.29538 = D.29537 | 2;
  cfg->flags = D.29538;
  D.29539 = call;
  return D.29539;
}


ret_type_to_call_opcode (struct MonoType * type, int calli, int virt, struct MonoGenericSharingContext * gsctx)
{
  unsigned char D.29541;
  unsigned char D.29542;
  int D.29545;
  int iftmp.19;
  int iftmp.20;
  unsigned char D.29554;
  int D.29555;
  int iftmp.21;
  int iftmp.22;
  int iftmp.23;
  int iftmp.24;
  int iftmp.25;
  int iftmp.26;
  int iftmp.27;
  int iftmp.28;
  int iftmp.29;
  int iftmp.30;
  int iftmp.31;
  int iftmp.32;
  struct MonoClass * D.29604;
  unsigned char D.29605;
  unsigned char D.29606;
  int iftmp.33;
  int iftmp.34;
  int iftmp.35;
  int iftmp.36;
  struct MonoGenericClass * D.29625;
  struct MonoClass * D.29626;
  int iftmp.37;
  int iftmp.38;
  void handle_enum = <<< error >>>;

  D.29541 = BIT_FIELD_REF <*type, 8, 56>;
  D.29542 = D.29541 & 64;
  if (D.29542 != 0) goto <D.29543>; else goto <D.29544>;
  <D.29543>:
  if (calli == 0) goto <D.29547>; else goto <D.29548>;
  <D.29547>:
  if (virt != 0) goto <D.29550>; else goto <D.29551>;
  <D.29550>:
  iftmp.20 = 348;
  goto <D.29552>;
  <D.29551>:
  iftmp.20 = 346;
  <D.29552>:
  iftmp.19 = iftmp.20;
  goto <D.29553>;
  <D.29548>:
  iftmp.19 = 347;
  <D.29553>:
  D.29545 = iftmp.19;
  return D.29545;
  <D.29544>:
  handle_enum:
  type = mini_get_basic_type_from_generic (gsctx, type);
  type = mini_replace_type (type);
  D.29554 = type->type;
  D.29555 = (int) D.29554;
  switch (D.29555) <default: <D.25240>, case 1: <D.25213>, case 2: <D.25216>, case 3: <D.25219>, case 4: <D.25214>, case 5: <D.25215>, case 6: <D.25217>, case 7: <D.25218>, case 8: <D.25220>, case 9: <D.25221>, case 10: <D.25231>, case 11: <D.25232>, case 12: <D.25233>, case 13: <D.25234>, case 14: <D.25227>, case 15: <D.25224>, case 17: <D.25235>, case 18: <D.25226>, case 19: <D.25238>, case 20: <D.25230>, case 21: <D.25237>, case 22: <D.25236>, case 24: <D.25222>, case 25: <D.25223>, case 27: <D.25225>, case 28: <D.25228>, case 29: <D.25229>, case 30: <D.25239>>
  <D.25213>:
  if (calli == 0) goto <D.29557>; else goto <D.29558>;
  <D.29557>:
  if (virt != 0) goto <D.29560>; else goto <D.29561>;
  <D.29560>:
  iftmp.22 = 345;
  goto <D.29562>;
  <D.29561>:
  iftmp.22 = 343;
  <D.29562>:
  iftmp.21 = iftmp.22;
  goto <D.29563>;
  <D.29558>:
  iftmp.21 = 344;
  <D.29563>:
  D.29545 = iftmp.21;
  return D.29545;
  <D.25214>:
  <D.25215>:
  <D.25216>:
  <D.25217>:
  <D.25218>:
  <D.25219>:
  <D.25220>:
  <D.25221>:
  if (calli == 0) goto <D.29565>; else goto <D.29566>;
  <D.29565>:
  if (virt != 0) goto <D.29568>; else goto <D.29569>;
  <D.29568>:
  iftmp.24 = 348;
  goto <D.29570>;
  <D.29569>:
  iftmp.24 = 346;
  <D.29570>:
  iftmp.23 = iftmp.24;
  goto <D.29571>;
  <D.29566>:
  iftmp.23 = 347;
  <D.29571>:
  D.29545 = iftmp.23;
  return D.29545;
  <D.25222>:
  <D.25223>:
  <D.25224>:
  <D.25225>:
  if (calli == 0) goto <D.29573>; else goto <D.29574>;
  <D.29573>:
  if (virt != 0) goto <D.29576>; else goto <D.29577>;
  <D.29576>:
  iftmp.26 = 348;
  goto <D.29578>;
  <D.29577>:
  iftmp.26 = 346;
  <D.29578>:
  iftmp.25 = iftmp.26;
  goto <D.29579>;
  <D.29574>:
  iftmp.25 = 347;
  <D.29579>:
  D.29545 = iftmp.25;
  return D.29545;
  <D.25226>:
  <D.25227>:
  <D.25228>:
  <D.25229>:
  <D.25230>:
  if (calli == 0) goto <D.29581>; else goto <D.29582>;
  <D.29581>:
  if (virt != 0) goto <D.29584>; else goto <D.29585>;
  <D.29584>:
  iftmp.28 = 348;
  goto <D.29586>;
  <D.29585>:
  iftmp.28 = 346;
  <D.29586>:
  iftmp.27 = iftmp.28;
  goto <D.29587>;
  <D.29582>:
  iftmp.27 = 347;
  <D.29587>:
  D.29545 = iftmp.27;
  return D.29545;
  <D.25231>:
  <D.25232>:
  if (calli == 0) goto <D.29589>; else goto <D.29590>;
  <D.29589>:
  if (virt != 0) goto <D.29592>; else goto <D.29593>;
  <D.29592>:
  iftmp.30 = 354;
  goto <D.29594>;
  <D.29593>:
  iftmp.30 = 352;
  <D.29594>:
  iftmp.29 = iftmp.30;
  goto <D.29595>;
  <D.29590>:
  iftmp.29 = 353;
  <D.29595>:
  D.29545 = iftmp.29;
  return D.29545;
  <D.25233>:
  <D.25234>:
  if (calli == 0) goto <D.29597>; else goto <D.29598>;
  <D.29597>:
  if (virt != 0) goto <D.29600>; else goto <D.29601>;
  <D.29600>:
  iftmp.32 = 351;
  goto <D.29602>;
  <D.29601>:
  iftmp.32 = 349;
  <D.29602>:
  iftmp.31 = iftmp.32;
  goto <D.29603>;
  <D.29598>:
  iftmp.31 = 350;
  <D.29603>:
  D.29545 = iftmp.31;
  return D.29545;
  <D.25235>:
  D.29604 = type->data.klass;
  D.29605 = BIT_FIELD_REF <*D.29604, 8, 160>;
  D.29606 = D.29605 & 16;
  if (D.29606 != 0) goto <D.29607>; else goto <D.29608>;
  <D.29607>:
  D.29604 = type->data.klass;
  type = mono_class_enum_basetype (D.29604);
  goto handle_enum;
  <D.29608>:
  if (calli == 0) goto <D.29610>; else goto <D.29611>;
  <D.29610>:
  if (virt != 0) goto <D.29613>; else goto <D.29614>;
  <D.29613>:
  iftmp.34 = 357;
  goto <D.29615>;
  <D.29614>:
  iftmp.34 = 355;
  <D.29615>:
  iftmp.33 = iftmp.34;
  goto <D.29616>;
  <D.29611>:
  iftmp.33 = 356;
  <D.29616>:
  D.29545 = iftmp.33;
  return D.29545;
  <D.25236>:
  if (calli == 0) goto <D.29618>; else goto <D.29619>;
  <D.29618>:
  if (virt != 0) goto <D.29621>; else goto <D.29622>;
  <D.29621>:
  iftmp.36 = 357;
  goto <D.29623>;
  <D.29622>:
  iftmp.36 = 355;
  <D.29623>:
  iftmp.35 = iftmp.36;
  goto <D.29624>;
  <D.29619>:
  iftmp.35 = 356;
  <D.29624>:
  D.29545 = iftmp.35;
  return D.29545;
  <D.25237>:
  D.29625 = type->data.generic_class;
  D.29626 = D.29625->container_class;
  type = &D.29626->byval_arg;
  goto handle_enum;
  <D.25238>:
  <D.25239>:
  if (calli == 0) goto <D.29628>; else goto <D.29629>;
  <D.29628>:
  if (virt != 0) goto <D.29631>; else goto <D.29632>;
  <D.29631>:
  iftmp.38 = 357;
  goto <D.29633>;
  <D.29632>:
  iftmp.38 = 355;
  <D.29633>:
  iftmp.37 = iftmp.38;
  goto <D.29634>;
  <D.29629>:
  iftmp.37 = 356;
  <D.29634>:
  D.29545 = iftmp.37;
  return D.29545;
  <D.25240>:
  D.29554 = type->type;
  D.29555 = (int) D.29554;
  monoeg_g_log (0B, 4, "unknown type 0x%02x in ret_type_to_call_opcode", D.29555);
  <D.25241>:
  goto <D.25241>;
  D.29545 = -1;
  return D.29545;
}


callvirt_to_call (int opcode)
{
  int D.29636;

  switch (opcode) <default: <D.25327>, case 345: <D.25323>, case 348: <D.25322>, case 351: <D.25324>, case 354: <D.25326>, case 357: <D.25325>>
  <D.25322>:
  D.29636 = 346;
  return D.29636;
  <D.25323>:
  D.29636 = 343;
  return D.29636;
  <D.25324>:
  D.29636 = 349;
  return D.29636;
  <D.25325>:
  D.29636 = 355;
  return D.29636;
  <D.25326>:
  D.29636 = 352;
  return D.29636;
  <D.25327>:
  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 2288);
  D.29636 = -1;
  return D.29636;
}


mini_emit_load_intf_reg_vtable (struct MonoCompile * cfg, int intf_reg, int vtable_reg, struct MonoClass * klass)
{
  unsigned char D.29638;
  unsigned char D.29639;
  unsigned int D.29642;
  unsigned int D.29643;
  struct MonoMemPool * D.29644;
  int D.29645;
  struct MonoInst * D.29646;
  guint16 iftmp.39;
  int D.29651;
  int D.29652;
  const unsigned char * D.29653;
  int D.29656;
  struct MonoInst * D.29657;
  int D.29658;
  int D.29659;
  int D.29660;
  unsigned int D.29662;
  int D.29663;
  struct MonoBasicBlock * D.29664;
  struct MonoInst * D.29665;
  int D.29669;
  struct MonoInst * D.29670;
  int D.29671;
  int D.29672;
  int D.29676;
  struct MonoInst * D.29677;
  int D.29678;
  int D.29679;
  int D.29684;
  struct MonoInst * D.29685;
  int D.29686;
  int D.29687;
  short unsigned int D.29688;
  int D.29689;
  int D.29690;
  int D.29691;

  D.29638 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.29639 = D.29638 & 64;
  if (D.29639 != 0) goto <D.29640>; else goto <D.29641>;
  <D.29640>:
  {
    int ioffset_reg;
    int iid_reg;

    D.29642 = alloc_preg (cfg);
    ioffset_reg = (int) D.29642;
    D.29643 = alloc_preg (cfg);
    iid_reg = (int) D.29643;
    {
      struct MonoInst * inst;

      D.29644 = cfg->mempool;
      inst = mono_mempool_alloc (D.29644, 48);
      inst->data.op[1].const_val = 0;
      D.29645 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.29645;
      inst->prev = 0B;
      D.29646 = inst->prev;
      inst->next = D.29646;
      D.29638 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.29639 = D.29638 & 64;
      if (D.29639 != 0) goto <D.29648>; else goto <D.29649>;
      <D.29648>:
      iftmp.39 = 738;
      goto <D.29650>;
      <D.29649>:
      iftmp.39 = 362;
      <D.29650>:
      inst->opcode = iftmp.39;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.29651 = inst->sreg3;
      inst->sreg2 = D.29651;
      D.29652 = inst->sreg2;
      inst->sreg1 = D.29652;
      D.29653 = cfg->ip;
      inst->cil_code = D.29653;
      D.29638 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.29639 = D.29638 & 64;
      if (D.29639 != 0) goto <D.29654>; else goto <D.29655>;
      <D.29654>:
      {
        struct MonoInst * group;
        struct MonoInst * got_loc;

        got_loc = mono_get_got_var (cfg);
        D.29644 = cfg->mempool;
        group = mono_mempool_alloc (D.29644, 48);
        group->data.op[1].const_val = 0;
        D.29656 = group->data.op[1].const_val;
        group->data.op[0].const_val = D.29656;
        group->prev = 0B;
        D.29657 = group->prev;
        group->next = D.29657;
        group->opcode = 737;
        group->flags = 0;
        group->type = 0;
        group->dreg = -1;
        group->sreg3 = -1;
        D.29658 = group->sreg3;
        group->sreg2 = D.29658;
        D.29659 = group->sreg2;
        group->sreg1 = D.29659;
        D.29653 = cfg->ip;
        group->cil_code = D.29653;
        group->data.op[0].src = klass;
        group->data.op[1].src = 24B;
        D.29660 = got_loc->dreg;
        inst->sreg1 = D.29660;
        inst->data.op[1].p = group;
      }
      goto <D.29661>;
      <D.29655>:
      inst->data.op[0].p = klass;
      inst->data.op[1].src = 24B;
      <D.29661>:
      inst->type = 3;
      D.29662 = alloc_dreg (cfg, 3);
      D.29663 = (int) D.29662;
      inst->dreg = D.29663;
      inst->dreg = iid_reg;
      D.29664 = cfg->cbb;
      D.29665 = D.29664->last_ins;
      if (D.29665 != 0B) goto <D.29666>; else goto <D.29667>;
      <D.29666>:
      D.29664 = cfg->cbb;
      D.29665 = D.29664->last_ins;
      D.29665->next = inst;
      D.29664 = cfg->cbb;
      D.29665 = D.29664->last_ins;
      inst->prev = D.29665;
      D.29664 = cfg->cbb;
      D.29664->last_ins = inst;
      goto <D.29668>;
      <D.29667>:
      D.29664 = cfg->cbb;
      D.29664 = cfg->cbb;
      D.29664->last_ins = inst;
      D.29665 = D.29664->last_ins;
      D.29664->code = D.29665;
      <D.29668>:
    }
    {
      struct MonoInst * inst;

      D.29644 = cfg->mempool;
      inst = mono_mempool_alloc (D.29644, 48);
      inst->data.op[1].const_val = 0;
      D.29669 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.29669;
      inst->prev = 0B;
      D.29670 = inst->prev;
      inst->next = D.29670;
      inst->opcode = 569;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.29671 = inst->sreg3;
      inst->sreg2 = D.29671;
      D.29672 = inst->sreg2;
      inst->sreg1 = D.29672;
      D.29653 = cfg->ip;
      inst->cil_code = D.29653;
      inst->dreg = ioffset_reg;
      inst->sreg1 = iid_reg;
      inst->sreg2 = vtable_reg;
      D.29664 = cfg->cbb;
      D.29665 = D.29664->last_ins;
      if (D.29665 != 0B) goto <D.29673>; else goto <D.29674>;
      <D.29673>:
      D.29664 = cfg->cbb;
      D.29665 = D.29664->last_ins;
      D.29665->next = inst;
      D.29664 = cfg->cbb;
      D.29665 = D.29664->last_ins;
      inst->prev = D.29665;
      D.29664 = cfg->cbb;
      D.29664->last_ins = inst;
      goto <D.29675>;
      <D.29674>:
      D.29664 = cfg->cbb;
      D.29664 = cfg->cbb;
      D.29664->last_ins = inst;
      D.29665 = D.29664->last_ins;
      D.29664->code = D.29665;
      <D.29675>:
    }
    {
      struct MonoInst * inst;

      D.29644 = cfg->mempool;
      inst = mono_mempool_alloc (D.29644, 48);
      inst->data.op[1].const_val = 0;
      D.29676 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.29676;
      inst->prev = 0B;
      D.29677 = inst->prev;
      inst->next = D.29677;
      inst->opcode = 391;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.29678 = inst->sreg3;
      inst->sreg2 = D.29678;
      D.29679 = inst->sreg2;
      inst->sreg1 = D.29679;
      D.29653 = cfg->ip;
      inst->cil_code = D.29653;
      inst->dreg = intf_reg;
      inst->sreg1 = ioffset_reg;
      inst->data.op[0].const_val = 0;
      D.29664 = cfg->cbb;
      D.29665 = D.29664->last_ins;
      if (D.29665 != 0B) goto <D.29680>; else goto <D.29681>;
      <D.29680>:
      D.29664 = cfg->cbb;
      D.29665 = D.29664->last_ins;
      D.29665->next = inst;
      D.29664 = cfg->cbb;
      D.29665 = D.29664->last_ins;
      inst->prev = D.29665;
      D.29664 = cfg->cbb;
      D.29664->last_ins = inst;
      goto <D.29682>;
      <D.29681>:
      D.29664 = cfg->cbb;
      D.29664 = cfg->cbb;
      D.29664->last_ins = inst;
      D.29665 = D.29664->last_ins;
      D.29664->code = D.29665;
      <D.29682>:
    }
  }
  goto <D.29683>;
  <D.29641>:
  {
    struct MonoInst * inst;

    D.29644 = cfg->mempool;
    inst = mono_mempool_alloc (D.29644, 48);
    inst->data.op[1].const_val = 0;
    D.29684 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.29684;
    inst->prev = 0B;
    D.29685 = inst->prev;
    inst->next = D.29685;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.29686 = inst->sreg3;
    inst->sreg2 = D.29686;
    D.29687 = inst->sreg2;
    inst->sreg1 = D.29687;
    D.29653 = cfg->ip;
    inst->cil_code = D.29653;
    inst->dreg = intf_reg;
    inst->sreg1 = vtable_reg;
    D.29688 = klass->interface_id;
    D.29689 = (int) D.29688;
    D.29690 = ~D.29689;
    D.29691 = D.29690 * 4;
    inst->data.op[0].const_val = D.29691;
    D.29664 = cfg->cbb;
    D.29665 = D.29664->last_ins;
    if (D.29665 != 0B) goto <D.29692>; else goto <D.29693>;
    <D.29692>:
    D.29664 = cfg->cbb;
    D.29665 = D.29664->last_ins;
    D.29665->next = inst;
    D.29664 = cfg->cbb;
    D.29665 = D.29664->last_ins;
    inst->prev = D.29665;
    D.29664 = cfg->cbb;
    D.29664->last_ins = inst;
    goto <D.29694>;
    <D.29693>:
    D.29664 = cfg->cbb;
    D.29664 = cfg->cbb;
    D.29664->last_ins = inst;
    D.29665 = D.29664->last_ins;
    D.29664->code = D.29665;
    <D.29694>:
  }
  <D.29683>:
}


emit_imt_argument (struct MonoCompile * cfg, struct MonoCallInst * call, struct MonoMethod * method, struct MonoInst * imt_arg)
{
  unsigned int D.29697;
  struct MonoMemPool * D.29700;
  int D.29701;
  struct MonoInst * D.29702;
  int D.29703;
  int D.29704;
  const unsigned char * D.29705;
  int D.29706;
  struct MonoBasicBlock * D.29707;
  struct MonoInst * D.29708;
  unsigned char D.29713;
  unsigned char D.29714;
  int D.29717;
  struct MonoInst * D.29718;
  guint16 iftmp.40;
  int D.29723;
  int D.29724;
  int D.29727;
  struct MonoInst * D.29728;
  int D.29729;
  int D.29730;
  int D.29731;
  unsigned int D.29733;
  int D.29734;
  int D.29739;
  struct MonoInst * D.29740;
  int D.29741;
  int D.29742;
  unsigned int D.29746;
  int D.29749;
  struct MonoInst * D.29750;
  int D.29751;
  int D.29752;
  int D.29759;
  struct MonoInst * D.29760;
  guint16 iftmp.41;
  int D.29765;
  int D.29766;
  int D.29769;
  struct MonoInst * D.29770;
  int D.29771;
  int D.29772;
  int D.29773;
  unsigned int D.29775;
  int D.29776;
  int D.29781;
  struct MonoInst * D.29782;
  int D.29783;
  int D.29784;
  int method_reg;

  if (0 != 0) goto <D.29695>; else goto <D.29696>;
  <D.29695>:
  D.29697 = alloc_preg (cfg);
  method_reg = (int) D.29697;
  if (imt_arg != 0B) goto <D.29698>; else goto <D.29699>;
  <D.29698>:
  {
    struct MonoInst * inst;

    D.29700 = cfg->mempool;
    inst = mono_mempool_alloc (D.29700, 48);
    inst->data.op[1].const_val = 0;
    D.29701 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.29701;
    inst->prev = 0B;
    D.29702 = inst->prev;
    inst->next = D.29702;
    inst->opcode = 428;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.29703 = inst->sreg3;
    inst->sreg2 = D.29703;
    D.29704 = inst->sreg2;
    inst->sreg1 = D.29704;
    D.29705 = cfg->ip;
    inst->cil_code = D.29705;
    inst->dreg = method_reg;
    D.29706 = imt_arg->dreg;
    inst->sreg1 = D.29706;
    D.29707 = cfg->cbb;
    D.29708 = D.29707->last_ins;
    if (D.29708 != 0B) goto <D.29709>; else goto <D.29710>;
    <D.29709>:
    D.29707 = cfg->cbb;
    D.29708 = D.29707->last_ins;
    D.29708->next = inst;
    D.29707 = cfg->cbb;
    D.29708 = D.29707->last_ins;
    inst->prev = D.29708;
    D.29707 = cfg->cbb;
    D.29707->last_ins = inst;
    goto <D.29711>;
    <D.29710>:
    D.29707 = cfg->cbb;
    D.29707 = cfg->cbb;
    D.29707->last_ins = inst;
    D.29708 = D.29707->last_ins;
    D.29707->code = D.29708;
    <D.29711>:
  }
  goto <D.29712>;
  <D.29699>:
  D.29713 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.29714 = D.29713 & 64;
  if (D.29714 != 0) goto <D.29715>; else goto <D.29716>;
  <D.29715>:
  {
    struct MonoInst * inst;

    D.29700 = cfg->mempool;
    inst = mono_mempool_alloc (D.29700, 48);
    inst->data.op[1].const_val = 0;
    D.29717 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.29717;
    inst->prev = 0B;
    D.29718 = inst->prev;
    inst->next = D.29718;
    D.29713 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.29714 = D.29713 & 64;
    if (D.29714 != 0) goto <D.29720>; else goto <D.29721>;
    <D.29720>:
    iftmp.40 = 738;
    goto <D.29722>;
    <D.29721>:
    iftmp.40 = 362;
    <D.29722>:
    inst->opcode = iftmp.40;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.29723 = inst->sreg3;
    inst->sreg2 = D.29723;
    D.29724 = inst->sreg2;
    inst->sreg1 = D.29724;
    D.29705 = cfg->ip;
    inst->cil_code = D.29705;
    D.29713 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.29714 = D.29713 & 64;
    if (D.29714 != 0) goto <D.29725>; else goto <D.29726>;
    <D.29725>:
    {
      struct MonoInst * group;
      struct MonoInst * got_loc;

      got_loc = mono_get_got_var (cfg);
      D.29700 = cfg->mempool;
      group = mono_mempool_alloc (D.29700, 48);
      group->data.op[1].const_val = 0;
      D.29727 = group->data.op[1].const_val;
      group->data.op[0].const_val = D.29727;
      group->prev = 0B;
      D.29728 = group->prev;
      group->next = D.29728;
      group->opcode = 737;
      group->flags = 0;
      group->type = 0;
      group->dreg = -1;
      group->sreg3 = -1;
      D.29729 = group->sreg3;
      group->sreg2 = D.29729;
      D.29730 = group->sreg2;
      group->sreg1 = D.29730;
      D.29705 = cfg->ip;
      group->cil_code = D.29705;
      group->data.op[0].src = method;
      group->data.op[1].src = 6B;
      D.29731 = got_loc->dreg;
      inst->sreg1 = D.29731;
      inst->data.op[1].p = group;
    }
    goto <D.29732>;
    <D.29726>:
    inst->data.op[0].p = method;
    inst->data.op[1].src = 6B;
    <D.29732>:
    inst->type = 3;
    D.29733 = alloc_dreg (cfg, 3);
    D.29734 = (int) D.29733;
    inst->dreg = D.29734;
    inst->dreg = method_reg;
    D.29707 = cfg->cbb;
    D.29708 = D.29707->last_ins;
    if (D.29708 != 0B) goto <D.29735>; else goto <D.29736>;
    <D.29735>:
    D.29707 = cfg->cbb;
    D.29708 = D.29707->last_ins;
    D.29708->next = inst;
    D.29707 = cfg->cbb;
    D.29708 = D.29707->last_ins;
    inst->prev = D.29708;
    D.29707 = cfg->cbb;
    D.29707->last_ins = inst;
    goto <D.29737>;
    <D.29736>:
    D.29707 = cfg->cbb;
    D.29707 = cfg->cbb;
    D.29707->last_ins = inst;
    D.29708 = D.29707->last_ins;
    D.29707->code = D.29708;
    <D.29737>:
  }
  goto <D.29738>;
  <D.29716>:
  {
    struct MonoInst * ins;

    D.29700 = cfg->mempool;
    ins = mono_mempool_alloc (D.29700, 48);
    ins->data.op[1].const_val = 0;
    D.29739 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.29739;
    ins->prev = 0B;
    D.29740 = ins->prev;
    ins->next = D.29740;
    ins->opcode = 362;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.29741 = ins->sreg3;
    ins->sreg2 = D.29741;
    D.29742 = ins->sreg2;
    ins->sreg1 = D.29742;
    D.29705 = cfg->ip;
    ins->cil_code = D.29705;
    ins->data.op[0].p = method;
    ins->dreg = method_reg;
    D.29707 = cfg->cbb;
    D.29708 = D.29707->last_ins;
    if (D.29708 != 0B) goto <D.29743>; else goto <D.29744>;
    <D.29743>:
    D.29707 = cfg->cbb;
    D.29708 = D.29707->last_ins;
    D.29708->next = ins;
    D.29707 = cfg->cbb;
    D.29708 = D.29707->last_ins;
    ins->prev = D.29708;
    D.29707 = cfg->cbb;
    D.29707->last_ins = ins;
    goto <D.29745>;
    <D.29744>:
    D.29707 = cfg->cbb;
    D.29707 = cfg->cbb;
    D.29707->last_ins = ins;
    D.29708 = D.29707->last_ins;
    D.29707->code = D.29708;
    <D.29745>:
  }
  <D.29738>:
  <D.29712>:
  mono_call_inst_add_outarg_reg (cfg, call, method_reg, 2, 0);
  return;
  <D.29696>:
  D.29746 = alloc_preg (cfg);
  method_reg = (int) D.29746;
  if (imt_arg != 0B) goto <D.29747>; else goto <D.29748>;
  <D.29747>:
  {
    struct MonoInst * inst;

    D.29700 = cfg->mempool;
    inst = mono_mempool_alloc (D.29700, 48);
    inst->data.op[1].const_val = 0;
    D.29749 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.29749;
    inst->prev = 0B;
    D.29750 = inst->prev;
    inst->next = D.29750;
    inst->opcode = 428;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.29751 = inst->sreg3;
    inst->sreg2 = D.29751;
    D.29752 = inst->sreg2;
    inst->sreg1 = D.29752;
    D.29705 = cfg->ip;
    inst->cil_code = D.29705;
    inst->dreg = method_reg;
    D.29706 = imt_arg->dreg;
    inst->sreg1 = D.29706;
    D.29707 = cfg->cbb;
    D.29708 = D.29707->last_ins;
    if (D.29708 != 0B) goto <D.29753>; else goto <D.29754>;
    <D.29753>:
    D.29707 = cfg->cbb;
    D.29708 = D.29707->last_ins;
    D.29708->next = inst;
    D.29707 = cfg->cbb;
    D.29708 = D.29707->last_ins;
    inst->prev = D.29708;
    D.29707 = cfg->cbb;
    D.29707->last_ins = inst;
    goto <D.29755>;
    <D.29754>:
    D.29707 = cfg->cbb;
    D.29707 = cfg->cbb;
    D.29707->last_ins = inst;
    D.29708 = D.29707->last_ins;
    D.29707->code = D.29708;
    <D.29755>:
  }
  goto <D.29756>;
  <D.29748>:
  D.29713 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.29714 = D.29713 & 64;
  if (D.29714 != 0) goto <D.29757>; else goto <D.29758>;
  <D.29757>:
  {
    struct MonoInst * inst;

    D.29700 = cfg->mempool;
    inst = mono_mempool_alloc (D.29700, 48);
    inst->data.op[1].const_val = 0;
    D.29759 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.29759;
    inst->prev = 0B;
    D.29760 = inst->prev;
    inst->next = D.29760;
    D.29713 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.29714 = D.29713 & 64;
    if (D.29714 != 0) goto <D.29762>; else goto <D.29763>;
    <D.29762>:
    iftmp.41 = 738;
    goto <D.29764>;
    <D.29763>:
    iftmp.41 = 362;
    <D.29764>:
    inst->opcode = iftmp.41;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.29765 = inst->sreg3;
    inst->sreg2 = D.29765;
    D.29766 = inst->sreg2;
    inst->sreg1 = D.29766;
    D.29705 = cfg->ip;
    inst->cil_code = D.29705;
    D.29713 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.29714 = D.29713 & 64;
    if (D.29714 != 0) goto <D.29767>; else goto <D.29768>;
    <D.29767>:
    {
      struct MonoInst * group;
      struct MonoInst * got_loc;

      got_loc = mono_get_got_var (cfg);
      D.29700 = cfg->mempool;
      group = mono_mempool_alloc (D.29700, 48);
      group->data.op[1].const_val = 0;
      D.29769 = group->data.op[1].const_val;
      group->data.op[0].const_val = D.29769;
      group->prev = 0B;
      D.29770 = group->prev;
      group->next = D.29770;
      group->opcode = 737;
      group->flags = 0;
      group->type = 0;
      group->dreg = -1;
      group->sreg3 = -1;
      D.29771 = group->sreg3;
      group->sreg2 = D.29771;
      D.29772 = group->sreg2;
      group->sreg1 = D.29772;
      D.29705 = cfg->ip;
      group->cil_code = D.29705;
      group->data.op[0].src = method;
      group->data.op[1].src = 6B;
      D.29773 = got_loc->dreg;
      inst->sreg1 = D.29773;
      inst->data.op[1].p = group;
    }
    goto <D.29774>;
    <D.29768>:
    inst->data.op[0].p = method;
    inst->data.op[1].src = 6B;
    <D.29774>:
    inst->type = 3;
    D.29775 = alloc_dreg (cfg, 3);
    D.29776 = (int) D.29775;
    inst->dreg = D.29776;
    inst->dreg = method_reg;
    D.29707 = cfg->cbb;
    D.29708 = D.29707->last_ins;
    if (D.29708 != 0B) goto <D.29777>; else goto <D.29778>;
    <D.29777>:
    D.29707 = cfg->cbb;
    D.29708 = D.29707->last_ins;
    D.29708->next = inst;
    D.29707 = cfg->cbb;
    D.29708 = D.29707->last_ins;
    inst->prev = D.29708;
    D.29707 = cfg->cbb;
    D.29707->last_ins = inst;
    goto <D.29779>;
    <D.29778>:
    D.29707 = cfg->cbb;
    D.29707 = cfg->cbb;
    D.29707->last_ins = inst;
    D.29708 = D.29707->last_ins;
    D.29707->code = D.29708;
    <D.29779>:
  }
  goto <D.29780>;
  <D.29758>:
  {
    struct MonoInst * ins;

    D.29700 = cfg->mempool;
    ins = mono_mempool_alloc (D.29700, 48);
    ins->data.op[1].const_val = 0;
    D.29781 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.29781;
    ins->prev = 0B;
    D.29782 = ins->prev;
    ins->next = D.29782;
    ins->opcode = 362;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.29783 = ins->sreg3;
    ins->sreg2 = D.29783;
    D.29784 = ins->sreg2;
    ins->sreg1 = D.29784;
    D.29705 = cfg->ip;
    ins->cil_code = D.29705;
    ins->data.op[0].p = method;
    ins->dreg = method_reg;
    D.29707 = cfg->cbb;
    D.29708 = D.29707->last_ins;
    if (D.29708 != 0B) goto <D.29785>; else goto <D.29786>;
    <D.29785>:
    D.29707 = cfg->cbb;
    D.29708 = D.29707->last_ins;
    D.29708->next = ins;
    D.29707 = cfg->cbb;
    D.29708 = D.29707->last_ins;
    ins->prev = D.29708;
    D.29707 = cfg->cbb;
    D.29707->last_ins = ins;
    goto <D.29787>;
    <D.29786>:
    D.29707 = cfg->cbb;
    D.29707 = cfg->cbb;
    D.29707->last_ins = ins;
    D.29708 = D.29707->last_ins;
    D.29707->code = D.29708;
    <D.29787>:
  }
  <D.29780>:
  <D.29756>:
  mono_call_inst_add_outarg_reg (cfg, call, method_reg, 2, 0);
}


set_rgctx_arg (struct MonoCompile * cfg, struct MonoCallInst * call, int rgctx_reg, struct MonoInst * rgctx_arg)
{
  mono_call_inst_add_outarg_reg (cfg, call, rgctx_reg, 2, 0);
  cfg->uses_rgctx_reg = 1;
  call->rgctx_reg = 1;
}


mono_emit_native_call (struct MonoCompile * cfg, const void * func, struct MonoMethodSignature * sig, struct MonoInst * * args)
{
  _Bool D.29789;
  long int D.29790;
  long int D.29791;
  struct MonoBasicBlock * D.29794;
  struct MonoInst * D.29795;
  struct MonoInst * D.29799;
  struct MonoCallInst * call;

  D.29789 = sig == 0B;
  D.29790 = (long int) D.29789;
  D.29791 = __builtin_expect (D.29790, 0);
  if (D.29791 != 0) goto <D.29792>; else goto <D.29793>;
  <D.29792>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 2775, "sig");
  <D.29793>:
  call = mono_emit_call_args (cfg, sig, args, 0, 0, 0, 0, 0);
  call->fptr = func;
  D.29794 = cfg->cbb;
  D.29795 = D.29794->last_ins;
  if (D.29795 != 0B) goto <D.29796>; else goto <D.29797>;
  <D.29796>:
  D.29794 = cfg->cbb;
  D.29795 = D.29794->last_ins;
  D.29795->next = call;
  D.29794 = cfg->cbb;
  D.29795 = D.29794->last_ins;
  MEM[(struct MonoInst *)call].prev = D.29795;
  D.29794 = cfg->cbb;
  D.29794->last_ins = call;
  goto <D.29798>;
  <D.29797>:
  D.29794 = cfg->cbb;
  D.29794 = cfg->cbb;
  D.29794->last_ins = call;
  D.29795 = D.29794->last_ins;
  D.29794->code = D.29795;
  <D.29798>:
  D.29799 = call;
  return D.29799;
}


mono_emit_jit_icall (struct MonoCompile * cfg, const void * func, struct MonoInst * * args)
{
  _Bool D.29801;
  long int D.29802;
  long int D.29803;
  struct MonoInst * D.29806;
  struct MonoMethodSignature * D.29807;
  const void * D.29808;
  struct MonoJitICallInfo * info;

  info = mono_find_jit_icall_by_addr (func);
  D.29801 = info == 0B;
  D.29802 = (long int) D.29801;
  D.29803 = __builtin_expect (D.29802, 0);
  if (D.29803 != 0) goto <D.29804>; else goto <D.29805>;
  <D.29804>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 2790, "info");
  <D.29805>:
  D.29807 = info->sig;
  D.29808 = mono_icall_get_wrapper (info);
  D.29806 = mono_emit_native_call (cfg, D.29808, D.29807, args);
  return D.29806;
}


mini_emit_stobj (struct MonoCompile * cfg, struct MonoInst * dest, struct MonoInst * src, struct MonoClass * klass, gboolean native)
{
  _Bool D.29810;
  long int D.29811;
  long int D.29812;
  int D.29815;
  _Bool D.29818;
  long int D.29819;
  long int D.29820;
  unsigned char D.29828;
  unsigned char D.29829;
  unsigned char D.29832;
  unsigned char D.29833;
  short unsigned int D.29839;
  int D.29841;
  unsigned int D.29842;
  unsigned int D.29843;
  unsigned int D.29848;
  unsigned int D.29849;
  unsigned int align.42;
  int align.43;
  int D.29853;
  struct MonoInst * D.29857;
  unsigned char D.29859;
  unsigned char D.29860;
  struct MonoMemPool * D.29863;
  void * D.29864;
  struct MonoInst * D.29865;
  int D.29866;
  struct MonoInst * D.29867;
  guint16 iftmp.44;
  int D.29872;
  int D.29873;
  const unsigned char * D.29874;
  int D.29877;
  struct MonoInst * D.29878;
  int D.29879;
  int D.29880;
  int D.29881;
  unsigned int D.29883;
  int D.29884;
  struct MonoBasicBlock * D.29885;
  struct MonoInst * D.29886;
  void * D.29891;
  unsigned int D.29892;
  int D.29893;
  unsigned int n.45;
  int D.29906;
  int D.29907;
  void * D.29911;
  unsigned int D.29912;
  int D.29913;
  struct MonoMethodSignature * D.29919;
  struct MonoInst * iargs[4];
  int context_used;
  int n;
  guint32 align;
  struct MonoMethod * memcpy_method;
  struct MonoInst * size_ins;
  struct MonoInst * memcpy_ins;

  try
    {
      align = 0;
      size_ins = 0B;
      memcpy_ins = 0B;
      D.29810 = klass == 0B;
      D.29811 = (long int) D.29810;
      D.29812 = __builtin_expect (D.29811, 0);
      if (D.29812 != 0) goto <D.29813>; else goto <D.29814>;
      <D.29813>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3060, "klass");
      <D.29814>:
      D.29815 = mini_is_gsharedvt_klass (cfg, klass);
      if (D.29815 != 0) goto <D.29816>; else goto <D.29817>;
      <D.29816>:
      D.29818 = native != 0;
      D.29819 = (long int) D.29818;
      D.29820 = __builtin_expect (D.29819, 0);
      if (D.29820 != 0) goto <D.29821>; else goto <D.29822>;
      <D.29821>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3067, "!native");
      <D.29822>:
      context_used = mini_class_check_context_used (cfg, klass);
      size_ins = emit_get_gsharedvt_info_klass (cfg, klass, 14);
      memcpy_ins = emit_get_gsharedvt_info_klass (cfg, klass, 22);
      <D.29817>:
      if (native != 0) goto <D.29823>; else goto <D.29824>;
      <D.29823>:
      n = mono_class_native_size (klass, &align);
      goto <D.29825>;
      <D.29824>:
      n = mono_class_value_size (klass, &align);
      <D.29825>:
      D.29828 = BIT_FIELD_REF <*cfg, 8, 3416>;
      D.29829 = D.29828 & 16;
      if (D.29829 != 0) goto <D.29830>; else goto <D.29831>;
      <D.29830>:
      D.29832 = BIT_FIELD_REF <*klass, 8, 184>;
      D.29833 = D.29832 & 8;
      if (D.29833 != 0) goto <D.29826>; else goto <D.29834>;
      <D.29834>:
      if (size_ins != 0B) goto <D.29826>; else goto <D.29827>;
      <D.29826>:
      if (native == 0) goto <D.29835>; else goto <D.29836>;
      <D.29835>:
      D.29839 = dest->opcode;
      if (D.29839 != 433) goto <D.29837>; else goto <D.29840>;
      <D.29840>:
      D.29841 = dest->sreg1;
      D.29842 = (unsigned int) D.29841;
      D.29843 = cfg->frame_reg;
      if (D.29842 != D.29843) goto <D.29837>; else goto <D.29838>;
      <D.29837>:
      D.29839 = dest->opcode;
      if (D.29839 != 314) goto <D.29844>; else goto <D.29845>;
      <D.29844>:
      {
        int context_used;

        iargs[0] = dest;
        iargs[1] = src;
        context_used = mini_class_check_context_used (cfg, klass);
        if (size_ins == 0B) goto <D.29847>; else goto <D.29846>;
        <D.29847>:
        D.29848 = cfg->opt;
        D.29849 = D.29848 & 2048;
        if (D.29849 != 0) goto <D.29850>; else goto <D.29846>;
        <D.29850>:
        align.42 = align;
        align.43 = (int) align.42;
        D.29853 = mono_emit_wb_aware_memcpy (cfg, klass, &iargs, n, align.43);
        if (D.29853 != 0) goto <D.29854>; else goto <D.29846>;
        <D.29854>:
        return;
        <D.29846>:
        if (context_used != 0) goto <D.29855>; else goto <D.29856>;
        <D.29855>:
        D.29857 = emit_get_rgctx_klass (cfg, context_used, klass, 1);
        iargs[2] = D.29857;
        goto <D.29858>;
        <D.29856>:
        D.29859 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.29860 = D.29859 & 64;
        if (D.29860 != 0) goto <D.29861>; else goto <D.29862>;
        <D.29861>:
        D.29863 = cfg->mempool;
        D.29864 = mono_mempool_alloc (D.29863, 48);
        iargs[2] = D.29864;
        D.29865 = iargs[2];
        D.29865 = iargs[2];
        D.29865->data.op[1].const_val = 0;
        D.29866 = D.29865->data.op[1].const_val;
        D.29865->data.op[0].const_val = D.29866;
        D.29865 = iargs[2];
        D.29865 = iargs[2];
        D.29865->prev = 0B;
        D.29867 = D.29865->prev;
        D.29865->next = D.29867;
        D.29865 = iargs[2];
        D.29859 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.29860 = D.29859 & 64;
        if (D.29860 != 0) goto <D.29869>; else goto <D.29870>;
        <D.29869>:
        iftmp.44 = 738;
        goto <D.29871>;
        <D.29870>:
        iftmp.44 = 362;
        <D.29871>:
        D.29865->opcode = iftmp.44;
        D.29865 = iargs[2];
        D.29865->flags = 0;
        D.29865 = iargs[2];
        D.29865->type = 0;
        D.29865 = iargs[2];
        D.29865->dreg = -1;
        D.29865 = iargs[2];
        D.29865 = iargs[2];
        D.29865 = iargs[2];
        D.29865->sreg3 = -1;
        D.29872 = D.29865->sreg3;
        D.29865->sreg2 = D.29872;
        D.29873 = D.29865->sreg2;
        D.29865->sreg1 = D.29873;
        D.29865 = iargs[2];
        D.29874 = cfg->ip;
        D.29865->cil_code = D.29874;
        D.29859 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.29860 = D.29859 & 64;
        if (D.29860 != 0) goto <D.29875>; else goto <D.29876>;
        <D.29875>:
        {
          struct MonoInst * group;
          struct MonoInst * got_loc;

          got_loc = mono_get_got_var (cfg);
          D.29863 = cfg->mempool;
          group = mono_mempool_alloc (D.29863, 48);
          group->data.op[1].const_val = 0;
          D.29877 = group->data.op[1].const_val;
          group->data.op[0].const_val = D.29877;
          group->prev = 0B;
          D.29878 = group->prev;
          group->next = D.29878;
          group->opcode = 737;
          group->flags = 0;
          group->type = 0;
          group->dreg = -1;
          group->sreg3 = -1;
          D.29879 = group->sreg3;
          group->sreg2 = D.29879;
          D.29880 = group->sreg2;
          group->sreg1 = D.29880;
          D.29874 = cfg->ip;
          group->cil_code = D.29874;
          group->data.op[0].src = klass;
          group->data.op[1].src = 11B;
          D.29865 = iargs[2];
          D.29881 = got_loc->dreg;
          D.29865->sreg1 = D.29881;
          D.29865 = iargs[2];
          D.29865->data.op[1].p = group;
        }
        goto <D.29882>;
        <D.29876>:
        D.29865 = iargs[2];
        D.29865->data.op[0].p = klass;
        D.29865 = iargs[2];
        D.29865->data.op[1].src = 11B;
        <D.29882>:
        D.29865 = iargs[2];
        D.29865->type = 3;
        D.29865 = iargs[2];
        D.29883 = alloc_dreg (cfg, 3);
        D.29884 = (int) D.29883;
        D.29865->dreg = D.29884;
        D.29885 = cfg->cbb;
        D.29886 = D.29885->last_ins;
        if (D.29886 != 0B) goto <D.29887>; else goto <D.29888>;
        <D.29887>:
        D.29885 = cfg->cbb;
        D.29886 = D.29885->last_ins;
        D.29865 = iargs[2];
        D.29886->next = D.29865;
        D.29865 = iargs[2];
        D.29885 = cfg->cbb;
        D.29886 = D.29885->last_ins;
        D.29865->prev = D.29886;
        D.29885 = cfg->cbb;
        D.29865 = iargs[2];
        D.29885->last_ins = D.29865;
        goto <D.29889>;
        <D.29888>:
        D.29885 = cfg->cbb;
        D.29885 = cfg->cbb;
        D.29865 = iargs[2];
        D.29885->last_ins = D.29865;
        D.29886 = D.29885->last_ins;
        D.29885->code = D.29886;
        <D.29889>:
        goto <D.29890>;
        <D.29862>:
        D.29863 = cfg->mempool;
        D.29891 = mono_mempool_alloc (D.29863, 48);
        iargs[2] = D.29891;
        D.29865 = iargs[2];
        D.29865 = iargs[2];
        D.29865->data.op[1].const_val = 0;
        D.29866 = D.29865->data.op[1].const_val;
        D.29865->data.op[0].const_val = D.29866;
        D.29865 = iargs[2];
        D.29865 = iargs[2];
        D.29865->prev = 0B;
        D.29867 = D.29865->prev;
        D.29865->next = D.29867;
        D.29865 = iargs[2];
        D.29865->opcode = 362;
        D.29865 = iargs[2];
        D.29865->flags = 0;
        D.29865 = iargs[2];
        D.29865->type = 0;
        D.29865 = iargs[2];
        D.29865->dreg = -1;
        D.29865 = iargs[2];
        D.29865 = iargs[2];
        D.29865 = iargs[2];
        D.29865->sreg3 = -1;
        D.29872 = D.29865->sreg3;
        D.29865->sreg2 = D.29872;
        D.29873 = D.29865->sreg2;
        D.29865->sreg1 = D.29873;
        D.29865 = iargs[2];
        D.29874 = cfg->ip;
        D.29865->cil_code = D.29874;
        D.29865 = iargs[2];
        D.29865->data.op[0].p = klass;
        D.29865 = iargs[2];
        D.29865->type = 3;
        D.29865 = iargs[2];
        D.29892 = alloc_dreg (cfg, 3);
        D.29893 = (int) D.29892;
        D.29865->dreg = D.29893;
        D.29885 = cfg->cbb;
        D.29886 = D.29885->last_ins;
        if (D.29886 != 0B) goto <D.29894>; else goto <D.29895>;
        <D.29894>:
        D.29885 = cfg->cbb;
        D.29886 = D.29885->last_ins;
        D.29865 = iargs[2];
        D.29886->next = D.29865;
        D.29865 = iargs[2];
        D.29885 = cfg->cbb;
        D.29886 = D.29885->last_ins;
        D.29865->prev = D.29886;
        D.29885 = cfg->cbb;
        D.29865 = iargs[2];
        D.29885->last_ins = D.29865;
        goto <D.29896>;
        <D.29895>:
        D.29885 = cfg->cbb;
        D.29885 = cfg->cbb;
        D.29865 = iargs[2];
        D.29885->last_ins = D.29865;
        D.29886 = D.29885->last_ins;
        D.29885->code = D.29886;
        <D.29896>:
        mono_class_compute_gc_descriptor (klass);
        <D.29890>:
        <D.29858>:
        if (size_ins != 0B) goto <D.29897>; else goto <D.29898>;
        <D.29897>:
        mono_emit_jit_icall (cfg, mono_gsharedvt_value_copy, &iargs);
        goto <D.29899>;
        <D.29898>:
        mono_emit_jit_icall (cfg, mono_value_copy, &iargs);
        <D.29899>:
        return;
      }
      <D.29845>:
      <D.29838>:
      <D.29836>:
      <D.29827>:
      <D.29831>:
      if (size_ins == 0B) goto <D.29902>; else goto <D.29900>;
      <D.29902>:
      D.29848 = cfg->opt;
      D.29849 = D.29848 & 2048;
      if (D.29849 != 0) goto <D.29903>; else goto <D.29900>;
      <D.29903>:
      n.45 = (unsigned int) n;
      if (n.45 <= 20) goto <D.29905>; else goto <D.29900>;
      <D.29905>:
      align.42 = align;
      align.43 = (int) align.42;
      D.29906 = src->dreg;
      D.29907 = dest->dreg;
      mini_emit_memcpy (cfg, D.29907, 0, D.29906, 0, n, align.43);
      goto <D.29901>;
      <D.29900>:
      iargs[0] = dest;
      iargs[1] = src;
      if (size_ins != 0B) goto <D.29908>; else goto <D.29909>;
      <D.29908>:
      iargs[2] = size_ins;
      goto <D.29910>;
      <D.29909>:
      D.29863 = cfg->mempool;
      D.29911 = mono_mempool_alloc (D.29863, 48);
      iargs[2] = D.29911;
      D.29865 = iargs[2];
      D.29865 = iargs[2];
      D.29865->data.op[1].const_val = 0;
      D.29866 = D.29865->data.op[1].const_val;
      D.29865->data.op[0].const_val = D.29866;
      D.29865 = iargs[2];
      D.29865 = iargs[2];
      D.29865->prev = 0B;
      D.29867 = D.29865->prev;
      D.29865->next = D.29867;
      D.29865 = iargs[2];
      D.29865->opcode = 362;
      D.29865 = iargs[2];
      D.29865->flags = 0;
      D.29865 = iargs[2];
      D.29865->type = 0;
      D.29865 = iargs[2];
      D.29865->dreg = -1;
      D.29865 = iargs[2];
      D.29865 = iargs[2];
      D.29865 = iargs[2];
      D.29865->sreg3 = -1;
      D.29872 = D.29865->sreg3;
      D.29865->sreg2 = D.29872;
      D.29873 = D.29865->sreg2;
      D.29865->sreg1 = D.29873;
      D.29865 = iargs[2];
      D.29874 = cfg->ip;
      D.29865->cil_code = D.29874;
      D.29865 = iargs[2];
      D.29865->data.op[0].const_val = n;
      D.29865 = iargs[2];
      D.29865->type = 1;
      D.29865 = iargs[2];
      D.29912 = alloc_dreg (cfg, 1);
      D.29913 = (int) D.29912;
      D.29865->dreg = D.29913;
      D.29885 = cfg->cbb;
      D.29886 = D.29885->last_ins;
      if (D.29886 != 0B) goto <D.29914>; else goto <D.29915>;
      <D.29914>:
      D.29885 = cfg->cbb;
      D.29886 = D.29885->last_ins;
      D.29865 = iargs[2];
      D.29886->next = D.29865;
      D.29865 = iargs[2];
      D.29885 = cfg->cbb;
      D.29886 = D.29885->last_ins;
      D.29865->prev = D.29886;
      D.29885 = cfg->cbb;
      D.29865 = iargs[2];
      D.29885->last_ins = D.29865;
      goto <D.29916>;
      <D.29915>:
      D.29885 = cfg->cbb;
      D.29885 = cfg->cbb;
      D.29865 = iargs[2];
      D.29885->last_ins = D.29865;
      D.29886 = D.29885->last_ins;
      D.29885->code = D.29886;
      <D.29916>:
      <D.29910>:
      memcpy_method = get_memcpy_method ();
      if (memcpy_ins != 0B) goto <D.29917>; else goto <D.29918>;
      <D.29917>:
      D.29919 = mono_method_signature (memcpy_method);
      mono_emit_calli (cfg, D.29919, &iargs, memcpy_ins, 0B, 0B);
      goto <D.29920>;
      <D.29918>:
      mono_emit_method_call (cfg, memcpy_method, &iargs, 0B);
      <D.29920>:
      <D.29901>:
    }
  finally
    {
      iargs = {CLOBBER};
      align = {CLOBBER};
    }
}


emit_get_gsharedvt_info_klass (struct MonoCompile * cfg, struct MonoClass * klass, MonoRgctxInfoType rgctx_type)
{
  struct MonoInst * D.29924;
  struct MonoType * D.29925;

  D.29925 = &klass->byval_arg;
  D.29924 = emit_get_gsharedvt_info (cfg, D.29925, rgctx_type);
  return D.29924;
}


emit_get_gsharedvt_info (struct MonoCompile * cfg, void * data, MonoRgctxInfoType rgctx_type)
{
  unsigned int D.29927;
  struct MonoMemPool * D.29928;
  int D.29929;
  struct MonoInst * D.29930;
  int D.29931;
  int D.29932;
  const unsigned char * D.29933;
  struct MonoInst * D.29934;
  int D.29935;
  unsigned int idx.46;
  unsigned int D.29937;
  unsigned int D.29938;
  int D.29939;
  struct MonoBasicBlock * D.29940;
  struct MonoInst * D.29941;
  struct MonoInst * D.29945;
  struct MonoInst * ins;
  int idx;
  int dreg;

  idx = get_gsharedvt_info_slot (cfg, data, rgctx_type);
  D.29927 = alloc_preg (cfg);
  dreg = (int) D.29927;
  D.29928 = cfg->mempool;
  ins = mono_mempool_alloc (D.29928, 48);
  ins->data.op[1].const_val = 0;
  D.29929 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.29929;
  ins->prev = 0B;
  D.29930 = ins->prev;
  ins->next = D.29930;
  ins->opcode = 391;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.29931 = ins->sreg3;
  ins->sreg2 = D.29931;
  D.29932 = ins->sreg2;
  ins->sreg1 = D.29932;
  D.29933 = cfg->ip;
  ins->cil_code = D.29933;
  ins->dreg = dreg;
  D.29934 = cfg->gsharedvt_info_var;
  D.29935 = D.29934->dreg;
  ins->sreg1 = D.29935;
  idx.46 = (unsigned int) idx;
  D.29937 = idx.46 + 1;
  D.29938 = D.29937 * 4;
  D.29939 = (int) D.29938;
  ins->data.op[0].const_val = D.29939;
  ins->type = 1;
  D.29940 = cfg->cbb;
  D.29941 = D.29940->last_ins;
  if (D.29941 != 0B) goto <D.29942>; else goto <D.29943>;
  <D.29942>:
  D.29940 = cfg->cbb;
  D.29941 = D.29940->last_ins;
  D.29941->next = ins;
  D.29940 = cfg->cbb;
  D.29941 = D.29940->last_ins;
  ins->prev = D.29941;
  D.29940 = cfg->cbb;
  D.29940->last_ins = ins;
  goto <D.29944>;
  <D.29943>:
  D.29940 = cfg->cbb;
  D.29940 = cfg->cbb;
  D.29940->last_ins = ins;
  D.29941 = D.29940->last_ins;
  D.29940->code = D.29941;
  <D.29944>:
  D.29945 = ins;
  return D.29945;
}


get_gsharedvt_info_slot (struct MonoCompile * cfg, void * data, MonoRgctxInfoType rgctx_type)
{
  _Bool D.29947;
  long int D.29948;
  long int D.29949;
  struct GPtrArray * D.29952;
  void * * D.29953;
  unsigned int i.47;
  unsigned int D.29955;
  void * * D.29956;
  <unnamed type> D.29957;
  void * D.29960;
  int D.29965;
  unsigned int i.48;
  unsigned int D.29967;
  struct MonoMemPool * D.29968;
  struct MonoGSharedVtMethodInfo * info;
  struct MonoRuntimeGenericContextInfoTemplate * template;
  int i;
  int idx;

  info = cfg->gsharedvt_info;
  D.29947 = info == 0B;
  D.29948 = (long int) D.29947;
  D.29949 = __builtin_expect (D.29948, 0);
  if (D.29949 != 0) goto <D.29950>; else goto <D.29951>;
  <D.29950>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3354, "info");
  <D.29951>:
  i = 0;
  goto <D.25720>;
  <D.25719>:
  {
    struct MonoRuntimeGenericContextInfoTemplate * otemplate;

    D.29952 = info->entries;
    D.29953 = D.29952->pdata;
    i.47 = (unsigned int) i;
    D.29955 = i.47 * 4;
    D.29956 = D.29953 + D.29955;
    otemplate = *D.29956;
    D.29957 = otemplate->info_type;
    if (D.29957 == rgctx_type) goto <D.29958>; else goto <D.29959>;
    <D.29958>:
    D.29960 = otemplate->data;
    if (D.29960 == data) goto <D.29961>; else goto <D.29962>;
    <D.29961>:
    if (rgctx_type != 21) goto <D.29963>; else goto <D.29964>;
    <D.29963>:
    D.29965 = i;
    return D.29965;
    <D.29964>:
    <D.29962>:
    <D.29959>:
  }
  i = i + 1;
  <D.25720>:
  i.48 = (unsigned int) i;
  D.29952 = info->entries;
  D.29967 = D.29952->len;
  if (i.48 < D.29967) goto <D.25719>; else goto <D.25721>;
  <D.25721>:
  D.29968 = cfg->mempool;
  template = mono_mempool_alloc0 (D.29968, 12);
  template->info_type = rgctx_type;
  template->data = data;
  D.29952 = info->entries;
  D.29967 = D.29952->len;
  idx = (int) D.29967;
  D.29952 = info->entries;
  monoeg_g_ptr_array_add (D.29952, template);
  D.29965 = idx;
  return D.29965;
}


mini_class_check_context_used (struct MonoCompile * cfg, struct MonoClass * klass)
{
  struct MonoGenericSharingContext * D.29970;
  int D.29973;

  D.29970 = cfg->generic_sharing_context;
  if (D.29970 != 0B) goto <D.29971>; else goto <D.29972>;
  <D.29971>:
  D.29973 = mono_class_check_context_used (klass);
  return D.29973;
  <D.29972>:
  D.29973 = 0;
  return D.29973;
}


mono_emit_wb_aware_memcpy (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * * iargs, int size, int align)
{
  gboolean D.29979;
  struct MonoInst * * D.29984;
  struct MonoMemPool * D.29985;
  void * D.29986;
  struct MonoInst * D.29987;
  int D.29988;
  struct MonoInst * D.29989;
  int D.29990;
  int D.29991;
  const unsigned char * D.29992;
  unsigned int D.29993;
  int D.29994;
  struct MonoBasicBlock * D.29995;
  struct MonoInst * D.29996;
  struct MonoInst * D.29999;
  struct MonoInst * * D.30001;
  void * D.30002;
  struct MonoInst * D.30003;
  int D.30004;
  struct MonoInst * D.30005;
  int D.30006;
  int D.30007;
  unsigned int need_wb.49;
  int need_wb.50;
  unsigned int D.30010;
  int D.30011;
  struct MonoInst * D.30014;
  struct MonoInst * D.30016;
  struct MonoInst * * D.30017;
  struct MonoInst * D.30018;
  unsigned int D.30019;
  unsigned int D.30020;
  void * D.30021;
  int D.30022;
  struct MonoInst * D.30023;
  int D.30024;
  int D.30025;
  int D.30029;
  struct MonoInst * D.30030;
  int D.30031;
  int D.30032;
  int D.30036;
  struct MonoInst * D.30037;
  int D.30038;
  int D.30039;
  unsigned int D.30043;
  unsigned int need_wb.51;
  void * D.30049;
  int D.30053;
  struct MonoInst * D.30054;
  int D.30055;
  int D.30056;
  int D.30060;
  struct MonoInst * D.30061;
  int D.30062;
  int D.30063;
  int D.30067;
  struct MonoInst * D.30068;
  int D.30069;
  int D.30070;
  int D.30074;
  struct MonoInst * D.30075;
  int D.30076;
  int D.30077;
  int D.30081;
  struct MonoInst * D.30082;
  int D.30083;
  int D.30084;
  int D.30088;
  struct MonoInst * D.30089;
  int D.30090;
  int D.30091;
  int dest_ptr_reg;
  int tmp_reg;
  int destreg;
  int srcreg;
  int offset;
  unsigned int need_wb;

  try
    {
      need_wb = 0;
      if (align == 0) goto <D.29975>; else goto <D.29976>;
      <D.29975>:
      align = 4;
      <D.29976>:
      if (align <= 3) goto <D.29977>; else goto <D.29978>;
      <D.29977>:
      D.29979 = 0;
      return D.29979;
      <D.29978>:
      if (size > 128) goto <D.29980>; else goto <D.29981>;
      <D.29980>:
      D.29979 = 0;
      return D.29979;
      <D.29981>:
      create_write_barrier_bitmap (cfg, klass, &need_wb, 0);
      if (size > 20) goto <D.29982>; else goto <D.29983>;
      <D.29982>:
      size = size + 3;
      size = size & -4;
      D.29984 = iargs + 8;
      D.29985 = cfg->mempool;
      D.29986 = mono_mempool_alloc (D.29985, 48);
      *D.29984 = D.29986;
      D.29984 = iargs + 8;
      D.29987 = *D.29984;
      D.29984 = iargs + 8;
      D.29987 = *D.29984;
      D.29987->data.op[1].const_val = 0;
      D.29988 = D.29987->data.op[1].const_val;
      D.29987->data.op[0].const_val = D.29988;
      D.29984 = iargs + 8;
      D.29987 = *D.29984;
      D.29984 = iargs + 8;
      D.29987 = *D.29984;
      D.29987->prev = 0B;
      D.29989 = D.29987->prev;
      D.29987->next = D.29989;
      D.29984 = iargs + 8;
      D.29987 = *D.29984;
      D.29987->opcode = 362;
      D.29984 = iargs + 8;
      D.29987 = *D.29984;
      D.29987->flags = 0;
      D.29984 = iargs + 8;
      D.29987 = *D.29984;
      D.29987->type = 0;
      D.29984 = iargs + 8;
      D.29987 = *D.29984;
      D.29987->dreg = -1;
      D.29984 = iargs + 8;
      D.29987 = *D.29984;
      D.29984 = iargs + 8;
      D.29987 = *D.29984;
      D.29984 = iargs + 8;
      D.29987 = *D.29984;
      D.29987->sreg3 = -1;
      D.29990 = D.29987->sreg3;
      D.29987->sreg2 = D.29990;
      D.29991 = D.29987->sreg2;
      D.29987->sreg1 = D.29991;
      D.29984 = iargs + 8;
      D.29987 = *D.29984;
      D.29992 = cfg->ip;
      D.29987->cil_code = D.29992;
      D.29984 = iargs + 8;
      D.29987 = *D.29984;
      D.29987->data.op[0].const_val = size;
      D.29984 = iargs + 8;
      D.29987 = *D.29984;
      D.29987->type = 1;
      D.29984 = iargs + 8;
      D.29987 = *D.29984;
      D.29993 = alloc_dreg (cfg, 1);
      D.29994 = (int) D.29993;
      D.29987->dreg = D.29994;
      D.29995 = cfg->cbb;
      D.29996 = D.29995->last_ins;
      if (D.29996 != 0B) goto <D.29997>; else goto <D.29998>;
      <D.29997>:
      D.29995 = cfg->cbb;
      D.29996 = D.29995->last_ins;
      D.29999 = MEM[(struct MonoInst * *)iargs + 8B];
      D.29996->next = D.29999;
      D.29984 = iargs + 8;
      D.29987 = *D.29984;
      D.29995 = cfg->cbb;
      D.29996 = D.29995->last_ins;
      D.29987->prev = D.29996;
      D.29995 = cfg->cbb;
      D.29999 = MEM[(struct MonoInst * *)iargs + 8B];
      D.29995->last_ins = D.29999;
      goto <D.30000>;
      <D.29998>:
      D.29995 = cfg->cbb;
      D.29995 = cfg->cbb;
      D.29999 = MEM[(struct MonoInst * *)iargs + 8B];
      D.29995->last_ins = D.29999;
      D.29996 = D.29995->last_ins;
      D.29995->code = D.29996;
      <D.30000>:
      D.30001 = iargs + 12;
      D.29985 = cfg->mempool;
      D.30002 = mono_mempool_alloc (D.29985, 48);
      *D.30001 = D.30002;
      D.30001 = iargs + 12;
      D.30003 = *D.30001;
      D.30001 = iargs + 12;
      D.30003 = *D.30001;
      D.30003->data.op[1].const_val = 0;
      D.30004 = D.30003->data.op[1].const_val;
      D.30003->data.op[0].const_val = D.30004;
      D.30001 = iargs + 12;
      D.30003 = *D.30001;
      D.30001 = iargs + 12;
      D.30003 = *D.30001;
      D.30003->prev = 0B;
      D.30005 = D.30003->prev;
      D.30003->next = D.30005;
      D.30001 = iargs + 12;
      D.30003 = *D.30001;
      D.30003->opcode = 362;
      D.30001 = iargs + 12;
      D.30003 = *D.30001;
      D.30003->flags = 0;
      D.30001 = iargs + 12;
      D.30003 = *D.30001;
      D.30003->type = 0;
      D.30001 = iargs + 12;
      D.30003 = *D.30001;
      D.30003->dreg = -1;
      D.30001 = iargs + 12;
      D.30003 = *D.30001;
      D.30001 = iargs + 12;
      D.30003 = *D.30001;
      D.30001 = iargs + 12;
      D.30003 = *D.30001;
      D.30003->sreg3 = -1;
      D.30006 = D.30003->sreg3;
      D.30003->sreg2 = D.30006;
      D.30007 = D.30003->sreg2;
      D.30003->sreg1 = D.30007;
      D.30001 = iargs + 12;
      D.30003 = *D.30001;
      D.29992 = cfg->ip;
      D.30003->cil_code = D.29992;
      D.30001 = iargs + 12;
      D.30003 = *D.30001;
      need_wb.49 = need_wb;
      need_wb.50 = (int) need_wb.49;
      D.30003->data.op[0].const_val = need_wb.50;
      D.30001 = iargs + 12;
      D.30003 = *D.30001;
      D.30003->type = 1;
      D.30001 = iargs + 12;
      D.30003 = *D.30001;
      D.30010 = alloc_dreg (cfg, 1);
      D.30011 = (int) D.30010;
      D.30003->dreg = D.30011;
      D.29995 = cfg->cbb;
      D.29996 = D.29995->last_ins;
      if (D.29996 != 0B) goto <D.30012>; else goto <D.30013>;
      <D.30012>:
      D.29995 = cfg->cbb;
      D.29996 = D.29995->last_ins;
      D.30014 = MEM[(struct MonoInst * *)iargs + 12B];
      D.29996->next = D.30014;
      D.30001 = iargs + 12;
      D.30003 = *D.30001;
      D.29995 = cfg->cbb;
      D.29996 = D.29995->last_ins;
      D.30003->prev = D.29996;
      D.29995 = cfg->cbb;
      D.30014 = MEM[(struct MonoInst * *)iargs + 12B];
      D.29995->last_ins = D.30014;
      goto <D.30015>;
      <D.30013>:
      D.29995 = cfg->cbb;
      D.29995 = cfg->cbb;
      D.30014 = MEM[(struct MonoInst * *)iargs + 12B];
      D.29995->last_ins = D.30014;
      D.29996 = D.29995->last_ins;
      D.29995->code = D.29996;
      <D.30015>:
      mono_emit_jit_icall (cfg, mono_gc_wbarrier_value_copy_bitmap, iargs);
      D.29979 = 1;
      return D.29979;
      <D.29983>:
      D.30016 = *iargs;
      destreg = D.30016->dreg;
      D.30017 = iargs + 4;
      D.30018 = *D.30017;
      srcreg = D.30018->dreg;
      offset = 0;
      D.30019 = alloc_preg (cfg);
      dest_ptr_reg = (int) D.30019;
      D.30020 = alloc_preg (cfg);
      tmp_reg = (int) D.30020;
      D.29985 = cfg->mempool;
      D.30021 = mono_mempool_alloc (D.29985, 48);
      *iargs = D.30021;
      D.30016 = *iargs;
      D.30016 = *iargs;
      D.30016->data.op[1].const_val = 0;
      D.30022 = D.30016->data.op[1].const_val;
      D.30016->data.op[0].const_val = D.30022;
      D.30016 = *iargs;
      D.30016 = *iargs;
      D.30016->prev = 0B;
      D.30023 = D.30016->prev;
      D.30016->next = D.30023;
      D.30016 = *iargs;
      D.30016->opcode = 428;
      D.30016 = *iargs;
      D.30016->flags = 0;
      D.30016 = *iargs;
      D.30016->type = 0;
      D.30016 = *iargs;
      D.30016->dreg = -1;
      D.30016 = *iargs;
      D.30016 = *iargs;
      D.30016 = *iargs;
      D.30016->sreg3 = -1;
      D.30024 = D.30016->sreg3;
      D.30016->sreg2 = D.30024;
      D.30025 = D.30016->sreg2;
      D.30016->sreg1 = D.30025;
      D.30016 = *iargs;
      D.29992 = cfg->ip;
      D.30016->cil_code = D.29992;
      D.30016 = *iargs;
      D.30016->dreg = dest_ptr_reg;
      D.30016 = *iargs;
      D.30016->sreg1 = destreg;
      D.29995 = cfg->cbb;
      D.29996 = D.29995->last_ins;
      if (D.29996 != 0B) goto <D.30026>; else goto <D.30027>;
      <D.30026>:
      D.29995 = cfg->cbb;
      D.29996 = D.29995->last_ins;
      D.30016 = *iargs;
      D.29996->next = D.30016;
      D.30016 = *iargs;
      D.29995 = cfg->cbb;
      D.29996 = D.29995->last_ins;
      D.30016->prev = D.29996;
      D.29995 = cfg->cbb;
      D.30016 = *iargs;
      D.29995->last_ins = D.30016;
      goto <D.30028>;
      <D.30027>:
      D.29995 = cfg->cbb;
      D.29995 = cfg->cbb;
      D.30016 = *iargs;
      D.29995->last_ins = D.30016;
      D.29996 = D.29995->last_ins;
      D.29995->code = D.29996;
      <D.30028>:
      goto <D.25569>;
      <D.25568>:
      {
        struct MonoInst * load_inst;

        D.29985 = cfg->mempool;
        load_inst = mono_mempool_alloc (D.29985, 48);
        load_inst->data.op[1].const_val = 0;
        D.30029 = load_inst->data.op[1].const_val;
        load_inst->data.op[0].const_val = D.30029;
        load_inst->prev = 0B;
        D.30030 = load_inst->prev;
        load_inst->next = D.30030;
        load_inst->opcode = 391;
        load_inst->flags = 0;
        load_inst->type = 0;
        load_inst->dreg = -1;
        load_inst->sreg3 = -1;
        D.30031 = load_inst->sreg3;
        load_inst->sreg2 = D.30031;
        D.30032 = load_inst->sreg2;
        load_inst->sreg1 = D.30032;
        D.29992 = cfg->ip;
        load_inst->cil_code = D.29992;
        load_inst->dreg = tmp_reg;
        load_inst->sreg1 = srcreg;
        load_inst->data.op[0].const_val = offset;
        D.29995 = cfg->cbb;
        D.29996 = D.29995->last_ins;
        if (D.29996 != 0B) goto <D.30033>; else goto <D.30034>;
        <D.30033>:
        D.29995 = cfg->cbb;
        D.29996 = D.29995->last_ins;
        D.29996->next = load_inst;
        D.29995 = cfg->cbb;
        D.29996 = D.29995->last_ins;
        load_inst->prev = D.29996;
        D.29995 = cfg->cbb;
        D.29995->last_ins = load_inst;
        goto <D.30035>;
        <D.30034>:
        D.29995 = cfg->cbb;
        D.29995 = cfg->cbb;
        D.29995->last_ins = load_inst;
        D.29996 = D.29995->last_ins;
        D.29995->code = D.29996;
        <D.30035>:
        {
          struct MonoInst * inst;

          D.29985 = cfg->mempool;
          inst = mono_mempool_alloc (D.29985, 48);
          inst->data.op[1].const_val = 0;
          D.30036 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.30036;
          inst->prev = 0B;
          D.30037 = inst->prev;
          inst->next = D.30037;
          inst->opcode = 377;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.30038 = inst->sreg3;
          inst->sreg2 = D.30038;
          D.30039 = inst->sreg2;
          inst->sreg1 = D.30039;
          D.29992 = cfg->ip;
          inst->cil_code = D.29992;
          inst->sreg1 = tmp_reg;
          inst->dreg = dest_ptr_reg;
          inst->data.op[0].const_val = 0;
          D.29995 = cfg->cbb;
          D.29996 = D.29995->last_ins;
          if (D.29996 != 0B) goto <D.30040>; else goto <D.30041>;
          <D.30040>:
          D.29995 = cfg->cbb;
          D.29996 = D.29995->last_ins;
          D.29996->next = inst;
          D.29995 = cfg->cbb;
          D.29996 = D.29995->last_ins;
          inst->prev = D.29996;
          D.29995 = cfg->cbb;
          D.29995->last_ins = inst;
          goto <D.30042>;
          <D.30041>:
          D.29995 = cfg->cbb;
          D.29995 = cfg->cbb;
          D.29995->last_ins = inst;
          D.29996 = D.29995->last_ins;
          D.29995->code = D.29996;
          <D.30042>:
        }
        need_wb.49 = need_wb;
        D.30043 = need_wb.49 & 1;
        if (D.30043 != 0) goto <D.30044>; else goto <D.30045>;
        <D.30044>:
        D.30016 = *iargs;
        emit_write_barrier (cfg, D.30016, load_inst);
        <D.30045>:
        offset = offset + 4;
        size = size + -4;
        need_wb.49 = need_wb;
        need_wb.51 = need_wb.49 >> 1;
        need_wb = need_wb.51;
        if (size > 3) goto <D.30047>; else goto <D.30048>;
        <D.30047>:
        D.29985 = cfg->mempool;
        D.30049 = mono_mempool_alloc (D.29985, 48);
        *iargs = D.30049;
        D.30016 = *iargs;
        D.30016 = *iargs;
        D.30016->data.op[1].const_val = 0;
        D.30022 = D.30016->data.op[1].const_val;
        D.30016->data.op[0].const_val = D.30022;
        D.30016 = *iargs;
        D.30016 = *iargs;
        D.30016->prev = 0B;
        D.30023 = D.30016->prev;
        D.30016->next = D.30023;
        D.30016 = *iargs;
        D.30016->opcode = 629;
        D.30016 = *iargs;
        D.30016->flags = 0;
        D.30016 = *iargs;
        D.30016->type = 0;
        D.30016 = *iargs;
        D.30016->dreg = -1;
        D.30016 = *iargs;
        D.30016 = *iargs;
        D.30016 = *iargs;
        D.30016->sreg3 = -1;
        D.30024 = D.30016->sreg3;
        D.30016->sreg2 = D.30024;
        D.30025 = D.30016->sreg2;
        D.30016->sreg1 = D.30025;
        D.30016 = *iargs;
        D.29992 = cfg->ip;
        D.30016->cil_code = D.29992;
        D.30016 = *iargs;
        D.30016->dreg = dest_ptr_reg;
        D.30016 = *iargs;
        D.30016->sreg1 = dest_ptr_reg;
        D.30016 = *iargs;
        D.30016->data.op[1].const_val = 4;
        D.29995 = cfg->cbb;
        D.29996 = D.29995->last_ins;
        if (D.29996 != 0B) goto <D.30050>; else goto <D.30051>;
        <D.30050>:
        D.29995 = cfg->cbb;
        D.29996 = D.29995->last_ins;
        D.30016 = *iargs;
        D.29996->next = D.30016;
        D.30016 = *iargs;
        D.29995 = cfg->cbb;
        D.29996 = D.29995->last_ins;
        D.30016->prev = D.29996;
        D.29995 = cfg->cbb;
        D.30016 = *iargs;
        D.29995->last_ins = D.30016;
        goto <D.30052>;
        <D.30051>:
        D.29995 = cfg->cbb;
        D.29995 = cfg->cbb;
        D.30016 = *iargs;
        D.29995->last_ins = D.30016;
        D.29996 = D.29995->last_ins;
        D.29995->code = D.29996;
        <D.30052>:
        <D.30048>:
      }
      <D.25569>:
      if (size > 3) goto <D.25568>; else goto <D.25570>;
      <D.25570>:
      goto <D.25574>;
      <D.25573>:
      {
        struct MonoInst * inst;

        D.29985 = cfg->mempool;
        inst = mono_mempool_alloc (D.29985, 48);
        inst->data.op[1].const_val = 0;
        D.30053 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.30053;
        inst->prev = 0B;
        D.30054 = inst->prev;
        inst->next = D.30054;
        inst->opcode = 396;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.30055 = inst->sreg3;
        inst->sreg2 = D.30055;
        D.30056 = inst->sreg2;
        inst->sreg1 = D.30056;
        D.29992 = cfg->ip;
        inst->cil_code = D.29992;
        inst->dreg = tmp_reg;
        inst->sreg1 = srcreg;
        inst->data.op[0].const_val = offset;
        D.29995 = cfg->cbb;
        D.29996 = D.29995->last_ins;
        if (D.29996 != 0B) goto <D.30057>; else goto <D.30058>;
        <D.30057>:
        D.29995 = cfg->cbb;
        D.29996 = D.29995->last_ins;
        D.29996->next = inst;
        D.29995 = cfg->cbb;
        D.29996 = D.29995->last_ins;
        inst->prev = D.29996;
        D.29995 = cfg->cbb;
        D.29995->last_ins = inst;
        goto <D.30059>;
        <D.30058>:
        D.29995 = cfg->cbb;
        D.29995 = cfg->cbb;
        D.29995->last_ins = inst;
        D.29996 = D.29995->last_ins;
        D.29995->code = D.29996;
        <D.30059>:
      }
      {
        struct MonoInst * inst;

        D.29985 = cfg->mempool;
        inst = mono_mempool_alloc (D.29985, 48);
        inst->data.op[1].const_val = 0;
        D.30060 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.30060;
        inst->prev = 0B;
        D.30061 = inst->prev;
        inst->next = D.30061;
        inst->opcode = 377;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.30062 = inst->sreg3;
        inst->sreg2 = D.30062;
        D.30063 = inst->sreg2;
        inst->sreg1 = D.30063;
        D.29992 = cfg->ip;
        inst->cil_code = D.29992;
        inst->sreg1 = tmp_reg;
        inst->dreg = destreg;
        inst->data.op[0].const_val = offset;
        D.29995 = cfg->cbb;
        D.29996 = D.29995->last_ins;
        if (D.29996 != 0B) goto <D.30064>; else goto <D.30065>;
        <D.30064>:
        D.29995 = cfg->cbb;
        D.29996 = D.29995->last_ins;
        D.29996->next = inst;
        D.29995 = cfg->cbb;
        D.29996 = D.29995->last_ins;
        inst->prev = D.29996;
        D.29995 = cfg->cbb;
        D.29995->last_ins = inst;
        goto <D.30066>;
        <D.30065>:
        D.29995 = cfg->cbb;
        D.29995 = cfg->cbb;
        D.29995->last_ins = inst;
        D.29996 = D.29995->last_ins;
        D.29995->code = D.29996;
        <D.30066>:
      }
      offset = offset + 4;
      size = size + -4;
      <D.25574>:
      if (size > 3) goto <D.25573>; else goto <D.25575>;
      <D.25575>:
      goto <D.25579>;
      <D.25578>:
      {
        struct MonoInst * inst;

        D.29985 = cfg->mempool;
        inst = mono_mempool_alloc (D.29985, 48);
        inst->data.op[1].const_val = 0;
        D.30067 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.30067;
        inst->prev = 0B;
        D.30068 = inst->prev;
        inst->next = D.30068;
        inst->opcode = 394;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.30069 = inst->sreg3;
        inst->sreg2 = D.30069;
        D.30070 = inst->sreg2;
        inst->sreg1 = D.30070;
        D.29992 = cfg->ip;
        inst->cil_code = D.29992;
        inst->dreg = tmp_reg;
        inst->sreg1 = srcreg;
        inst->data.op[0].const_val = offset;
        D.29995 = cfg->cbb;
        D.29996 = D.29995->last_ins;
        if (D.29996 != 0B) goto <D.30071>; else goto <D.30072>;
        <D.30071>:
        D.29995 = cfg->cbb;
        D.29996 = D.29995->last_ins;
        D.29996->next = inst;
        D.29995 = cfg->cbb;
        D.29996 = D.29995->last_ins;
        inst->prev = D.29996;
        D.29995 = cfg->cbb;
        D.29995->last_ins = inst;
        goto <D.30073>;
        <D.30072>:
        D.29995 = cfg->cbb;
        D.29995 = cfg->cbb;
        D.29995->last_ins = inst;
        D.29996 = D.29995->last_ins;
        D.29995->code = D.29996;
        <D.30073>:
      }
      {
        struct MonoInst * inst;

        D.29985 = cfg->mempool;
        inst = mono_mempool_alloc (D.29985, 48);
        inst->data.op[1].const_val = 0;
        D.30074 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.30074;
        inst->prev = 0B;
        D.30075 = inst->prev;
        inst->next = D.30075;
        inst->opcode = 376;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.30076 = inst->sreg3;
        inst->sreg2 = D.30076;
        D.30077 = inst->sreg2;
        inst->sreg1 = D.30077;
        D.29992 = cfg->ip;
        inst->cil_code = D.29992;
        inst->sreg1 = tmp_reg;
        inst->dreg = destreg;
        inst->data.op[0].const_val = offset;
        D.29995 = cfg->cbb;
        D.29996 = D.29995->last_ins;
        if (D.29996 != 0B) goto <D.30078>; else goto <D.30079>;
        <D.30078>:
        D.29995 = cfg->cbb;
        D.29996 = D.29995->last_ins;
        D.29996->next = inst;
        D.29995 = cfg->cbb;
        D.29996 = D.29995->last_ins;
        inst->prev = D.29996;
        D.29995 = cfg->cbb;
        D.29995->last_ins = inst;
        goto <D.30080>;
        <D.30079>:
        D.29995 = cfg->cbb;
        D.29995 = cfg->cbb;
        D.29995->last_ins = inst;
        D.29996 = D.29995->last_ins;
        D.29995->code = D.29996;
        <D.30080>:
      }
      offset = offset + 2;
      size = size + -2;
      <D.25579>:
      if (size > 1) goto <D.25578>; else goto <D.25580>;
      <D.25580>:
      goto <D.25584>;
      <D.25583>:
      {
        struct MonoInst * inst;

        D.29985 = cfg->mempool;
        inst = mono_mempool_alloc (D.29985, 48);
        inst->data.op[1].const_val = 0;
        D.30081 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.30081;
        inst->prev = 0B;
        D.30082 = inst->prev;
        inst->next = D.30082;
        inst->opcode = 392;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.30083 = inst->sreg3;
        inst->sreg2 = D.30083;
        D.30084 = inst->sreg2;
        inst->sreg1 = D.30084;
        D.29992 = cfg->ip;
        inst->cil_code = D.29992;
        inst->dreg = tmp_reg;
        inst->sreg1 = srcreg;
        inst->data.op[0].const_val = offset;
        D.29995 = cfg->cbb;
        D.29996 = D.29995->last_ins;
        if (D.29996 != 0B) goto <D.30085>; else goto <D.30086>;
        <D.30085>:
        D.29995 = cfg->cbb;
        D.29996 = D.29995->last_ins;
        D.29996->next = inst;
        D.29995 = cfg->cbb;
        D.29996 = D.29995->last_ins;
        inst->prev = D.29996;
        D.29995 = cfg->cbb;
        D.29995->last_ins = inst;
        goto <D.30087>;
        <D.30086>:
        D.29995 = cfg->cbb;
        D.29995 = cfg->cbb;
        D.29995->last_ins = inst;
        D.29996 = D.29995->last_ins;
        D.29995->code = D.29996;
        <D.30087>:
      }
      {
        struct MonoInst * inst;

        D.29985 = cfg->mempool;
        inst = mono_mempool_alloc (D.29985, 48);
        inst->data.op[1].const_val = 0;
        D.30088 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.30088;
        inst->prev = 0B;
        D.30089 = inst->prev;
        inst->next = D.30089;
        inst->opcode = 375;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.30090 = inst->sreg3;
        inst->sreg2 = D.30090;
        D.30091 = inst->sreg2;
        inst->sreg1 = D.30091;
        D.29992 = cfg->ip;
        inst->cil_code = D.29992;
        inst->sreg1 = tmp_reg;
        inst->dreg = destreg;
        inst->data.op[0].const_val = offset;
        D.29995 = cfg->cbb;
        D.29996 = D.29995->last_ins;
        if (D.29996 != 0B) goto <D.30092>; else goto <D.30093>;
        <D.30092>:
        D.29995 = cfg->cbb;
        D.29996 = D.29995->last_ins;
        D.29996->next = inst;
        D.29995 = cfg->cbb;
        D.29996 = D.29995->last_ins;
        inst->prev = D.29996;
        D.29995 = cfg->cbb;
        D.29995->last_ins = inst;
        goto <D.30094>;
        <D.30093>:
        D.29995 = cfg->cbb;
        D.29995 = cfg->cbb;
        D.29995->last_ins = inst;
        D.29996 = D.29995->last_ins;
        D.29995->code = D.29996;
        <D.30094>:
      }
      offset = offset + 1;
      size = size + -1;
      <D.25584>:
      if (size > 0) goto <D.25583>; else goto <D.25585>;
      <D.25585>:
      D.29979 = 1;
      return D.29979;
    }
  finally
    {
      need_wb = {CLOBBER};
    }
}


create_write_barrier_bitmap (struct MonoCompile * cfg, struct MonoClass * klass, unsigned int * wb_bitmap, int offset)
{
  struct MonoType * D.30097;
  short unsigned int D.30098;
  int D.30099;
  int D.30100;
  int iftmp.52;
  unsigned char D.30104;
  unsigned char D.30105;
  int D.30108;
  unsigned int D.30109;
  unsigned int D.30110;
  struct MonoType * D.30112;
  int D.30113;
  unsigned int foffset.53;
  unsigned int D.30117;
  _Bool D.30118;
  long int D.30119;
  long int D.30120;
  unsigned int D.30123;
  int D.30124;
  int D.30125;
  int D.30126;
  unsigned int D.30127;
  unsigned int D.30128;
  unsigned char D.30130;
  unsigned char D.30131;
  struct MonoClassField * field;
  void * iter;

  try
    {
      iter = 0B;
      goto <D.25525>;
      <D.25527>:
      {
        int foffset;

        D.30097 = field->type;
        D.30098 = D.30097->attrs;
        D.30099 = (int) D.30098;
        D.30100 = D.30099 & 16;
        if (D.30100 != 0) goto <D.30101>; else goto <D.30102>;
        <D.30101>:
        // predicted unlikely by continue predictor.
        goto <D.25525>;
        <D.30102>:
        D.30104 = BIT_FIELD_REF <*klass, 8, 160>;
        D.30105 = D.30104 & 8;
        if (D.30105 != 0) goto <D.30106>; else goto <D.30107>;
        <D.30106>:
        D.30108 = field->offset;
        D.30109 = (unsigned int) D.30108;
        D.30110 = D.30109 + 4294967288;
        iftmp.52 = (int) D.30110;
        goto <D.30111>;
        <D.30107>:
        iftmp.52 = field->offset;
        <D.30111>:
        foffset = iftmp.52;
        D.30112 = mono_field_get_type (field);
        D.30113 = mini_type_is_reference (cfg, D.30112);
        if (D.30113 != 0) goto <D.30114>; else goto <D.30115>;
        <D.30114>:
        foffset.53 = (unsigned int) foffset;
        D.30117 = foffset.53 & 3;
        D.30118 = D.30117 != 0;
        D.30119 = (long int) D.30118;
        D.30120 = __builtin_expect (D.30119, 0);
        if (D.30120 != 0) goto <D.30121>; else goto <D.30122>;
        <D.30121>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 2886, "(foffset % SIZEOF_VOID_P) == 0");
        <D.30122>:
        D.30123 = *wb_bitmap;
        D.30124 = offset + foffset;
        D.30125 = D.30124 / 4;
        D.30126 = 1 << D.30125;
        D.30127 = (unsigned int) D.30126;
        D.30128 = D.30123 | D.30127;
        *wb_bitmap = D.30128;
        goto <D.30129>;
        <D.30115>:
        {
          struct MonoClass * field_class;

          D.30097 = field->type;
          field_class = mono_class_from_mono_type (D.30097);
          D.30130 = BIT_FIELD_REF <*field_class, 8, 184>;
          D.30131 = D.30130 & 8;
          if (D.30131 != 0) goto <D.30132>; else goto <D.30133>;
          <D.30132>:
          D.30124 = offset + foffset;
          create_write_barrier_bitmap (cfg, field_class, wb_bitmap, D.30124);
          <D.30133>:
        }
        <D.30129>:
      }
      <D.25525>:
      field = mono_class_get_fields (klass, &iter);
      if (field != 0B) goto <D.25527>; else goto <D.25528>;
      <D.25528>:
    }
  finally
    {
      iter = {CLOBBER};
    }
}


emit_write_barrier (struct MonoCompile * cfg, struct MonoInst * ptr, struct MonoInst * value)
{
  unsigned char D.30134;
  unsigned char D.30135;
  unsigned char D.30141;
  unsigned char D.30142;
  int nursery_shift_bits.54;
  struct MonoMemPool * D.30147;
  int D.30148;
  struct MonoInst * D.30149;
  int D.30150;
  int D.30151;
  const unsigned char * D.30152;
  struct MonoInst * ptr.55;
  int D.30154;
  int D.30155;
  struct MonoBasicBlock * D.30156;
  struct MonoInst * D.30157;
  unsigned int D.30163;
  unsigned int D.30164;
  int D.30165;
  struct MonoInst * D.30166;
  int D.30167;
  int D.30168;
  int card_table_shift_bits.56;
  void * card_table_mask.57;
  int D.30176;
  struct MonoInst * D.30177;
  int D.30178;
  int D.30179;
  int card_table_mask.58;
  int D.30186;
  struct MonoInst * D.30187;
  guint16 iftmp.59;
  int D.30192;
  int D.30193;
  int D.30196;
  struct MonoInst * D.30197;
  int D.30198;
  int D.30199;
  int D.30200;
  unsigned int D.30202;
  int D.30203;
  int D.30208;
  struct MonoInst * D.30209;
  int D.30210;
  int D.30211;
  int D.30215;
  struct MonoInst * D.30216;
  int D.30217;
  int D.30218;
  int D.30222;
  struct MonoInst * D.30223;
  int D.30224;
  int D.30225;
  int D.30230;
  struct MonoInst * D.30231;
  int D.30232;
  int D.30233;
  int card_table_shift_bits;
  void * card_table_mask;
  guint8 * card_table;
  struct MonoInst * dummy_use;
  int nursery_shift_bits;
  size_t nursery_size;
  gboolean has_card_table_wb;

  try
    {
      has_card_table_wb = 0;
      D.30134 = BIT_FIELD_REF <*cfg, 8, 3416>;
      D.30135 = D.30134 & 16;
      if (D.30135 == 0) goto <D.30136>; else goto <D.30137>;
      <D.30136>:
      return;
      <D.30137>:
      card_table = mono_gc_get_card_table (&card_table_shift_bits, &card_table_mask);
      mono_gc_get_nursery (&nursery_shift_bits, &nursery_size);
      has_card_table_wb = 1;
      if (has_card_table_wb != 0) goto <D.30140>; else goto <D.30138>;
      <D.30140>:
      D.30141 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.30142 = D.30141 & 64;
      if (D.30142 == 0) goto <D.30143>; else goto <D.30138>;
      <D.30143>:
      if (card_table != 0B) goto <D.30144>; else goto <D.30138>;
      <D.30144>:
      nursery_shift_bits.54 = nursery_shift_bits;
      if (nursery_shift_bits.54 > 0) goto <D.30146>; else goto <D.30138>;
      <D.30146>:
      {
        struct MonoInst * wbarrier;

        D.30147 = cfg->mempool;
        wbarrier = mono_mempool_alloc (D.30147, 48);
        wbarrier->data.op[1].const_val = 0;
        D.30148 = wbarrier->data.op[1].const_val;
        wbarrier->data.op[0].const_val = D.30148;
        wbarrier->prev = 0B;
        D.30149 = wbarrier->prev;
        wbarrier->next = D.30149;
        wbarrier->opcode = 794;
        wbarrier->flags = 0;
        wbarrier->type = 0;
        wbarrier->dreg = -1;
        wbarrier->sreg3 = -1;
        D.30150 = wbarrier->sreg3;
        wbarrier->sreg2 = D.30150;
        D.30151 = wbarrier->sreg2;
        wbarrier->sreg1 = D.30151;
        D.30152 = cfg->ip;
        wbarrier->cil_code = D.30152;
        ptr.55 = ptr;
        D.30154 = ptr.55->dreg;
        wbarrier->sreg1 = D.30154;
        D.30155 = value->dreg;
        wbarrier->sreg2 = D.30155;
        D.30156 = cfg->cbb;
        D.30157 = D.30156->last_ins;
        if (D.30157 != 0B) goto <D.30158>; else goto <D.30159>;
        <D.30158>:
        D.30156 = cfg->cbb;
        D.30157 = D.30156->last_ins;
        D.30157->next = wbarrier;
        D.30156 = cfg->cbb;
        D.30157 = D.30156->last_ins;
        wbarrier->prev = D.30157;
        D.30156 = cfg->cbb;
        D.30156->last_ins = wbarrier;
        goto <D.30160>;
        <D.30159>:
        D.30156 = cfg->cbb;
        D.30156 = cfg->cbb;
        D.30156->last_ins = wbarrier;
        D.30157 = D.30156->last_ins;
        D.30156->code = D.30157;
        <D.30160>:
      }
      goto <D.30139>;
      <D.30138>:
      if (card_table != 0B) goto <D.30161>; else goto <D.30162>;
      <D.30161>:
      {
        int offset_reg;
        int card_reg;
        struct MonoInst * ins;

        D.30163 = alloc_preg (cfg);
        offset_reg = (int) D.30163;
        D.30164 = alloc_preg (cfg);
        card_reg = (int) D.30164;
        {
          struct MonoInst * inst;

          D.30147 = cfg->mempool;
          inst = mono_mempool_alloc (D.30147, 48);
          inst->data.op[1].const_val = 0;
          D.30165 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.30165;
          inst->prev = 0B;
          D.30166 = inst->prev;
          inst->next = D.30166;
          inst->opcode = 445;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.30167 = inst->sreg3;
          inst->sreg2 = D.30167;
          D.30168 = inst->sreg2;
          inst->sreg1 = D.30168;
          D.30152 = cfg->ip;
          inst->cil_code = D.30152;
          inst->dreg = offset_reg;
          ptr.55 = ptr;
          D.30154 = ptr.55->dreg;
          inst->sreg1 = D.30154;
          card_table_shift_bits.56 = card_table_shift_bits;
          inst->data.op[1].const_val = card_table_shift_bits.56;
          D.30156 = cfg->cbb;
          D.30157 = D.30156->last_ins;
          if (D.30157 != 0B) goto <D.30170>; else goto <D.30171>;
          <D.30170>:
          D.30156 = cfg->cbb;
          D.30157 = D.30156->last_ins;
          D.30157->next = inst;
          D.30156 = cfg->cbb;
          D.30157 = D.30156->last_ins;
          inst->prev = D.30157;
          D.30156 = cfg->cbb;
          D.30156->last_ins = inst;
          goto <D.30172>;
          <D.30171>:
          D.30156 = cfg->cbb;
          D.30156 = cfg->cbb;
          D.30156->last_ins = inst;
          D.30157 = D.30156->last_ins;
          D.30156->code = D.30157;
          <D.30172>:
        }
        card_table_mask.57 = card_table_mask;
        if (card_table_mask.57 != 0B) goto <D.30174>; else goto <D.30175>;
        <D.30174>:
        {
          struct MonoInst * inst;

          D.30147 = cfg->mempool;
          inst = mono_mempool_alloc (D.30147, 48);
          inst->data.op[1].const_val = 0;
          D.30176 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.30176;
          inst->prev = 0B;
          D.30177 = inst->prev;
          inst->next = D.30177;
          inst->opcode = 636;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.30178 = inst->sreg3;
          inst->sreg2 = D.30178;
          D.30179 = inst->sreg2;
          inst->sreg1 = D.30179;
          D.30152 = cfg->ip;
          inst->cil_code = D.30152;
          inst->dreg = offset_reg;
          inst->sreg1 = offset_reg;
          card_table_mask.57 = card_table_mask;
          card_table_mask.58 = (int) card_table_mask.57;
          inst->data.op[1].const_val = card_table_mask.58;
          D.30156 = cfg->cbb;
          D.30157 = D.30156->last_ins;
          if (D.30157 != 0B) goto <D.30181>; else goto <D.30182>;
          <D.30181>:
          D.30156 = cfg->cbb;
          D.30157 = D.30156->last_ins;
          D.30157->next = inst;
          D.30156 = cfg->cbb;
          D.30157 = D.30156->last_ins;
          inst->prev = D.30157;
          D.30156 = cfg->cbb;
          D.30156->last_ins = inst;
          goto <D.30183>;
          <D.30182>:
          D.30156 = cfg->cbb;
          D.30156 = cfg->cbb;
          D.30156->last_ins = inst;
          D.30157 = D.30156->last_ins;
          D.30156->code = D.30157;
          <D.30183>:
        }
        <D.30175>:
        D.30141 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.30142 = D.30141 & 64;
        if (D.30142 != 0) goto <D.30184>; else goto <D.30185>;
        <D.30184>:
        {
          struct MonoInst * inst;

          D.30147 = cfg->mempool;
          inst = mono_mempool_alloc (D.30147, 48);
          inst->data.op[1].const_val = 0;
          D.30186 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.30186;
          inst->prev = 0B;
          D.30187 = inst->prev;
          inst->next = D.30187;
          D.30141 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.30142 = D.30141 & 64;
          if (D.30142 != 0) goto <D.30189>; else goto <D.30190>;
          <D.30189>:
          iftmp.59 = 738;
          goto <D.30191>;
          <D.30190>:
          iftmp.59 = 362;
          <D.30191>:
          inst->opcode = iftmp.59;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.30192 = inst->sreg3;
          inst->sreg2 = D.30192;
          D.30193 = inst->sreg2;
          inst->sreg1 = D.30193;
          D.30152 = cfg->ip;
          inst->cil_code = D.30152;
          D.30141 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.30142 = D.30141 & 64;
          if (D.30142 != 0) goto <D.30194>; else goto <D.30195>;
          <D.30194>:
          {
            struct MonoInst * group;
            struct MonoInst * got_loc;

            got_loc = mono_get_got_var (cfg);
            D.30147 = cfg->mempool;
            group = mono_mempool_alloc (D.30147, 48);
            group->data.op[1].const_val = 0;
            D.30196 = group->data.op[1].const_val;
            group->data.op[0].const_val = D.30196;
            group->prev = 0B;
            D.30197 = group->prev;
            group->next = D.30197;
            group->opcode = 737;
            group->flags = 0;
            group->type = 0;
            group->dreg = -1;
            group->sreg3 = -1;
            D.30198 = group->sreg3;
            group->sreg2 = D.30198;
            D.30199 = group->sreg2;
            group->sreg1 = D.30199;
            D.30152 = cfg->ip;
            group->cil_code = D.30152;
            group->data.op[0].src = 0B;
            group->data.op[1].src = 42B;
            D.30200 = got_loc->dreg;
            inst->sreg1 = D.30200;
            inst->data.op[1].p = group;
          }
          goto <D.30201>;
          <D.30195>:
          inst->data.op[0].p = 0B;
          inst->data.op[1].src = 42B;
          <D.30201>:
          inst->type = 3;
          D.30202 = alloc_dreg (cfg, 3);
          D.30203 = (int) D.30202;
          inst->dreg = D.30203;
          inst->dreg = card_reg;
          D.30156 = cfg->cbb;
          D.30157 = D.30156->last_ins;
          if (D.30157 != 0B) goto <D.30204>; else goto <D.30205>;
          <D.30204>:
          D.30156 = cfg->cbb;
          D.30157 = D.30156->last_ins;
          D.30157->next = inst;
          D.30156 = cfg->cbb;
          D.30157 = D.30156->last_ins;
          inst->prev = D.30157;
          D.30156 = cfg->cbb;
          D.30156->last_ins = inst;
          goto <D.30206>;
          <D.30205>:
          D.30156 = cfg->cbb;
          D.30156 = cfg->cbb;
          D.30156->last_ins = inst;
          D.30157 = D.30156->last_ins;
          D.30156->code = D.30157;
          <D.30206>:
        }
        goto <D.30207>;
        <D.30185>:
        D.30147 = cfg->mempool;
        ins = mono_mempool_alloc (D.30147, 48);
        ins->data.op[1].const_val = 0;
        D.30208 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30208;
        ins->prev = 0B;
        D.30209 = ins->prev;
        ins->next = D.30209;
        ins->opcode = 362;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30210 = ins->sreg3;
        ins->sreg2 = D.30210;
        D.30211 = ins->sreg2;
        ins->sreg1 = D.30211;
        D.30152 = cfg->ip;
        ins->cil_code = D.30152;
        ins->data.op[0].p = card_table;
        ins->dreg = card_reg;
        D.30156 = cfg->cbb;
        D.30157 = D.30156->last_ins;
        if (D.30157 != 0B) goto <D.30212>; else goto <D.30213>;
        <D.30212>:
        D.30156 = cfg->cbb;
        D.30157 = D.30156->last_ins;
        D.30157->next = ins;
        D.30156 = cfg->cbb;
        D.30157 = D.30156->last_ins;
        ins->prev = D.30157;
        D.30156 = cfg->cbb;
        D.30156->last_ins = ins;
        goto <D.30214>;
        <D.30213>:
        D.30156 = cfg->cbb;
        D.30156 = cfg->cbb;
        D.30156->last_ins = ins;
        D.30157 = D.30156->last_ins;
        D.30156->code = D.30157;
        <D.30214>:
        <D.30207>:
        {
          struct MonoInst * inst;

          D.30147 = cfg->mempool;
          inst = mono_mempool_alloc (D.30147, 48);
          inst->data.op[1].const_val = 0;
          D.30215 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.30215;
          inst->prev = 0B;
          D.30216 = inst->prev;
          inst->next = D.30216;
          inst->opcode = 569;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.30217 = inst->sreg3;
          inst->sreg2 = D.30217;
          D.30218 = inst->sreg2;
          inst->sreg1 = D.30218;
          D.30152 = cfg->ip;
          inst->cil_code = D.30152;
          inst->dreg = offset_reg;
          inst->sreg1 = offset_reg;
          inst->sreg2 = card_reg;
          D.30156 = cfg->cbb;
          D.30157 = D.30156->last_ins;
          if (D.30157 != 0B) goto <D.30219>; else goto <D.30220>;
          <D.30219>:
          D.30156 = cfg->cbb;
          D.30157 = D.30156->last_ins;
          D.30157->next = inst;
          D.30156 = cfg->cbb;
          D.30157 = D.30156->last_ins;
          inst->prev = D.30157;
          D.30156 = cfg->cbb;
          D.30156->last_ins = inst;
          goto <D.30221>;
          <D.30220>:
          D.30156 = cfg->cbb;
          D.30156 = cfg->cbb;
          D.30156->last_ins = inst;
          D.30157 = D.30156->last_ins;
          D.30156->code = D.30157;
          <D.30221>:
        }
        {
          struct MonoInst * inst;

          D.30147 = cfg->mempool;
          inst = mono_mempool_alloc (D.30147, 48);
          inst->data.op[1].const_val = 0;
          D.30222 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.30222;
          inst->prev = 0B;
          D.30223 = inst->prev;
          inst->next = D.30223;
          inst->opcode = 385;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.30224 = inst->sreg3;
          inst->sreg2 = D.30224;
          D.30225 = inst->sreg2;
          inst->sreg1 = D.30225;
          D.30152 = cfg->ip;
          inst->cil_code = D.30152;
          inst->dreg = offset_reg;
          inst->data.op[0].const_val = 0;
          inst->data.op[1].const_val = 1;
          D.30156 = cfg->cbb;
          D.30157 = D.30156->last_ins;
          if (D.30157 != 0B) goto <D.30226>; else goto <D.30227>;
          <D.30226>:
          D.30156 = cfg->cbb;
          D.30157 = D.30156->last_ins;
          D.30157->next = inst;
          D.30156 = cfg->cbb;
          D.30157 = D.30156->last_ins;
          inst->prev = D.30157;
          D.30156 = cfg->cbb;
          D.30156->last_ins = inst;
          goto <D.30228>;
          <D.30227>:
          D.30156 = cfg->cbb;
          D.30156 = cfg->cbb;
          D.30156->last_ins = inst;
          D.30157 = D.30156->last_ins;
          D.30156->code = D.30157;
          <D.30228>:
        }
      }
      goto <D.30229>;
      <D.30162>:
      {
        struct MonoMethod * write_barrier;

        write_barrier = mono_gc_get_write_barrier ();
        mono_emit_method_call (cfg, write_barrier, &ptr, 0B);
      }
      <D.30229>:
      <D.30139>:
      D.30147 = cfg->mempool;
      dummy_use = mono_mempool_alloc (D.30147, 48);
      dummy_use->data.op[1].const_val = 0;
      D.30230 = dummy_use->data.op[1].const_val;
      dummy_use->data.op[0].const_val = D.30230;
      dummy_use->prev = 0B;
      D.30231 = dummy_use->prev;
      dummy_use->next = D.30231;
      dummy_use->opcode = 800;
      dummy_use->flags = 0;
      dummy_use->type = 0;
      dummy_use->dreg = -1;
      dummy_use->sreg3 = -1;
      D.30232 = dummy_use->sreg3;
      dummy_use->sreg2 = D.30232;
      D.30233 = dummy_use->sreg2;
      dummy_use->sreg1 = D.30233;
      D.30152 = cfg->ip;
      dummy_use->cil_code = D.30152;
      D.30155 = value->dreg;
      dummy_use->sreg1 = D.30155;
      D.30156 = cfg->cbb;
      D.30157 = D.30156->last_ins;
      if (D.30157 != 0B) goto <D.30234>; else goto <D.30235>;
      <D.30234>:
      D.30156 = cfg->cbb;
      D.30157 = D.30156->last_ins;
      D.30157->next = dummy_use;
      D.30156 = cfg->cbb;
      D.30157 = D.30156->last_ins;
      dummy_use->prev = D.30157;
      D.30156 = cfg->cbb;
      D.30156->last_ins = dummy_use;
      goto <D.30236>;
      <D.30235>:
      D.30156 = cfg->cbb;
      D.30156 = cfg->cbb;
      D.30156->last_ins = dummy_use;
      D.30157 = D.30156->last_ins;
      D.30156->code = D.30157;
      <D.30236>:
    }
  finally
    {
      card_table_shift_bits = {CLOBBER};
      card_table_mask = {CLOBBER};
      nursery_shift_bits = {CLOBBER};
      nursery_size = {CLOBBER};
    }
}


emit_get_rgctx_klass (struct MonoCompile * cfg, int context_used, struct MonoClass * klass, MonoRgctxInfoType rgctx_type)
{
  int D.30240;
  struct MonoMethod * D.30241;
  struct MonoMemPool * D.30242;
  struct MonoInst * D.30243;
  struct MonoJumpInfoRgctxEntry * entry;
  struct MonoInst * rgctx;

  D.30240 = context_used & 2;
  D.30241 = cfg->current_method;
  D.30242 = cfg->mempool;
  entry = mono_patch_info_rgctx_entry_new (D.30242, D.30241, D.30240, 11, klass, rgctx_type);
  D.30241 = cfg->current_method;
  rgctx = emit_get_rgctx (cfg, D.30241, context_used);
  D.30243 = emit_rgctx_fetch (cfg, rgctx, entry);
  return D.30243;
}


get_memcpy_method ()
{
  struct MonoMethod * memcpy_method.60;
  struct MonoClass * D.30248;
  struct MonoMethod * memcpy_method.61;
  struct MonoMethod * D.30252;
  static struct MonoMethod * memcpy_method = 0B;

  memcpy_method.60 = memcpy_method;
  if (memcpy_method.60 == 0B) goto <D.30246>; else goto <D.30247>;
  <D.30246>:
  D.30248 = mono_defaults.string_class;
  memcpy_method.61 = mono_class_get_method_from_name (D.30248, "memcpy", 3);
  memcpy_method = memcpy_method.61;
  memcpy_method.60 = memcpy_method;
  if (memcpy_method.60 == 0B) goto <D.30250>; else goto <D.30251>;
  <D.30250>:
  monoeg_g_log (0B, 4, "Old corlib found. Install a new one");
  <D.25515>:
  goto <D.25515>;
  <D.30251>:
  <D.30247>:
  D.30252 = memcpy_method;
  return D.30252;
}


mini_emit_initobj (struct MonoCompile * cfg, struct MonoInst * dest, const guchar * ip, struct MonoClass * klass)
{
  int D.30254;
  struct MonoMethod * bzero_method.62;
  struct MonoClass * D.30260;
  struct MonoMethod * bzero_method.63;
  _Bool D.30262;
  long int D.30263;
  long int D.30264;
  struct MonoMethodSignature * D.30267;
  unsigned int n.64;
  unsigned int align.65;
  int align.66;
  int D.30273;
  struct MonoMemPool * D.30275;
  void * D.30276;
  struct MonoInst * D.30277;
  int D.30278;
  struct MonoInst * D.30279;
  int D.30280;
  int D.30281;
  const unsigned char * D.30282;
  unsigned int D.30283;
  int D.30284;
  struct MonoBasicBlock * D.30285;
  struct MonoInst * D.30286;
  void * D.30290;
  struct MonoInst * D.30291;
  int D.30292;
  struct MonoInst * D.30293;
  int D.30294;
  int D.30295;
  unsigned int D.30296;
  int D.30297;
  struct MonoInst * iargs[3];
  int n;
  int context_used;
  guint32 align;
  struct MonoMethod * memset_method;
  struct MonoInst * size_ins;
  struct MonoInst * bzero_ins;
  static struct MonoMethod * bzero_method;

  try
    {
      size_ins = 0B;
      bzero_ins = 0B;
      mono_class_init (klass);
      D.30254 = mini_is_gsharedvt_klass (cfg, klass);
      if (D.30254 != 0) goto <D.30255>; else goto <D.30256>;
      <D.30255>:
      context_used = mini_class_check_context_used (cfg, klass);
      size_ins = emit_get_gsharedvt_info_klass (cfg, klass, 14);
      bzero_ins = emit_get_gsharedvt_info_klass (cfg, klass, 23);
      bzero_method.62 = bzero_method;
      if (bzero_method.62 == 0B) goto <D.30258>; else goto <D.30259>;
      <D.30258>:
      D.30260 = mono_defaults.string_class;
      bzero_method.63 = mono_class_get_method_from_name (D.30260, "bzero_aligned_1", 2);
      bzero_method = bzero_method.63;
      <D.30259>:
      bzero_method.62 = bzero_method;
      D.30262 = bzero_method.62 == 0B;
      D.30263 = (long int) D.30262;
      D.30264 = __builtin_expect (D.30263, 0);
      if (D.30264 != 0) goto <D.30265>; else goto <D.30266>;
      <D.30265>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3163, "bzero_method");
      <D.30266>:
      iargs[0] = dest;
      iargs[1] = size_ins;
      bzero_method.62 = bzero_method;
      D.30267 = mono_method_signature (bzero_method.62);
      mono_emit_calli (cfg, D.30267, &iargs, bzero_ins, 0B, 0B);
      return;
      <D.30256>:
      n = mono_class_value_size (klass, &align);
      n.64 = (unsigned int) n;
      if (n.64 <= 20) goto <D.30269>; else goto <D.30270>;
      <D.30269>:
      align.65 = align;
      align.66 = (int) align.65;
      D.30273 = dest->dreg;
      mini_emit_memset (cfg, D.30273, 0, n, 0, align.66);
      goto <D.30274>;
      <D.30270>:
      memset_method = get_memset_method ();
      iargs[0] = dest;
      D.30275 = cfg->mempool;
      D.30276 = mono_mempool_alloc (D.30275, 48);
      iargs[1] = D.30276;
      D.30277 = iargs[1];
      D.30277 = iargs[1];
      D.30277->data.op[1].const_val = 0;
      D.30278 = D.30277->data.op[1].const_val;
      D.30277->data.op[0].const_val = D.30278;
      D.30277 = iargs[1];
      D.30277 = iargs[1];
      D.30277->prev = 0B;
      D.30279 = D.30277->prev;
      D.30277->next = D.30279;
      D.30277 = iargs[1];
      D.30277->opcode = 362;
      D.30277 = iargs[1];
      D.30277->flags = 0;
      D.30277 = iargs[1];
      D.30277->type = 0;
      D.30277 = iargs[1];
      D.30277->dreg = -1;
      D.30277 = iargs[1];
      D.30277 = iargs[1];
      D.30277 = iargs[1];
      D.30277->sreg3 = -1;
      D.30280 = D.30277->sreg3;
      D.30277->sreg2 = D.30280;
      D.30281 = D.30277->sreg2;
      D.30277->sreg1 = D.30281;
      D.30277 = iargs[1];
      D.30282 = cfg->ip;
      D.30277->cil_code = D.30282;
      D.30277 = iargs[1];
      D.30277->data.op[0].const_val = 0;
      D.30277 = iargs[1];
      D.30277->type = 1;
      D.30277 = iargs[1];
      D.30283 = alloc_dreg (cfg, 1);
      D.30284 = (int) D.30283;
      D.30277->dreg = D.30284;
      D.30285 = cfg->cbb;
      D.30286 = D.30285->last_ins;
      if (D.30286 != 0B) goto <D.30287>; else goto <D.30288>;
      <D.30287>:
      D.30285 = cfg->cbb;
      D.30286 = D.30285->last_ins;
      D.30277 = iargs[1];
      D.30286->next = D.30277;
      D.30277 = iargs[1];
      D.30285 = cfg->cbb;
      D.30286 = D.30285->last_ins;
      D.30277->prev = D.30286;
      D.30285 = cfg->cbb;
      D.30277 = iargs[1];
      D.30285->last_ins = D.30277;
      goto <D.30289>;
      <D.30288>:
      D.30285 = cfg->cbb;
      D.30285 = cfg->cbb;
      D.30277 = iargs[1];
      D.30285->last_ins = D.30277;
      D.30286 = D.30285->last_ins;
      D.30285->code = D.30286;
      <D.30289>:
      D.30275 = cfg->mempool;
      D.30290 = mono_mempool_alloc (D.30275, 48);
      iargs[2] = D.30290;
      D.30291 = iargs[2];
      D.30291 = iargs[2];
      D.30291->data.op[1].const_val = 0;
      D.30292 = D.30291->data.op[1].const_val;
      D.30291->data.op[0].const_val = D.30292;
      D.30291 = iargs[2];
      D.30291 = iargs[2];
      D.30291->prev = 0B;
      D.30293 = D.30291->prev;
      D.30291->next = D.30293;
      D.30291 = iargs[2];
      D.30291->opcode = 362;
      D.30291 = iargs[2];
      D.30291->flags = 0;
      D.30291 = iargs[2];
      D.30291->type = 0;
      D.30291 = iargs[2];
      D.30291->dreg = -1;
      D.30291 = iargs[2];
      D.30291 = iargs[2];
      D.30291 = iargs[2];
      D.30291->sreg3 = -1;
      D.30294 = D.30291->sreg3;
      D.30291->sreg2 = D.30294;
      D.30295 = D.30291->sreg2;
      D.30291->sreg1 = D.30295;
      D.30291 = iargs[2];
      D.30282 = cfg->ip;
      D.30291->cil_code = D.30282;
      D.30291 = iargs[2];
      D.30291->data.op[0].const_val = n;
      D.30291 = iargs[2];
      D.30291->type = 1;
      D.30291 = iargs[2];
      D.30296 = alloc_dreg (cfg, 1);
      D.30297 = (int) D.30296;
      D.30291->dreg = D.30297;
      D.30285 = cfg->cbb;
      D.30286 = D.30285->last_ins;
      if (D.30286 != 0B) goto <D.30298>; else goto <D.30299>;
      <D.30298>:
      D.30285 = cfg->cbb;
      D.30286 = D.30285->last_ins;
      D.30291 = iargs[2];
      D.30286->next = D.30291;
      D.30291 = iargs[2];
      D.30285 = cfg->cbb;
      D.30286 = D.30285->last_ins;
      D.30291->prev = D.30286;
      D.30285 = cfg->cbb;
      D.30291 = iargs[2];
      D.30285->last_ins = D.30291;
      goto <D.30300>;
      <D.30299>:
      D.30285 = cfg->cbb;
      D.30285 = cfg->cbb;
      D.30291 = iargs[2];
      D.30285->last_ins = D.30291;
      D.30286 = D.30285->last_ins;
      D.30285->code = D.30286;
      <D.30300>:
      mono_emit_method_call (cfg, memset_method, &iargs, 0B);
      <D.30274>:
    }
  finally
    {
      iargs = {CLOBBER};
      align = {CLOBBER};
    }
}


mini_emit_memset (struct MonoCompile * cfg, int destreg, int offset, int size, int val, int align)
{
  _Bool D.30304;
  long int D.30305;
  long int D.30306;
  _Bool D.30311;
  _Bool D.30312;
  _Bool D.30313;
  struct MonoMemPool * D.30316;
  int D.30317;
  struct MonoInst * D.30318;
  int D.30319;
  int D.30320;
  const unsigned char * D.30321;
  struct MonoBasicBlock * D.30322;
  struct MonoInst * D.30323;
  int D.30327;
  struct MonoInst * D.30328;
  int D.30329;
  int D.30330;
  int D.30334;
  struct MonoInst * D.30335;
  int D.30336;
  int D.30337;
  unsigned int D.30342;
  int D.30345;
  struct MonoInst * D.30346;
  int D.30347;
  int D.30348;
  long long int D.30349;
  int D.30354;
  struct MonoInst * D.30355;
  int D.30356;
  int D.30357;
  int D.30363;
  struct MonoInst * D.30364;
  int D.30365;
  int D.30366;
  unsigned int offset.67;
  unsigned int D.30373;
  int D.30376;
  struct MonoInst * D.30377;
  int D.30378;
  int D.30379;
  int D.30383;
  struct MonoInst * D.30384;
  int D.30385;
  int D.30386;
  int D.30390;
  struct MonoInst * D.30391;
  int D.30392;
  int D.30393;
  int D.30397;
  struct MonoInst * D.30398;
  int D.30399;
  int D.30400;
  int D.30404;
  struct MonoInst * D.30405;
  int D.30406;
  int D.30407;
  int val_reg;

  D.30304 = val != 0;
  D.30305 = (long int) D.30304;
  D.30306 = __builtin_expect (D.30305, 0);
  if (D.30306 != 0) goto <D.30307>; else goto <D.30308>;
  <D.30307>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1744, "val == 0");
  <D.30308>:
  if (align == 0) goto <D.30309>; else goto <D.30310>;
  <D.30309>:
  align = 4;
  <D.30310>:
  D.30311 = size <= 4;
  D.30312 = size <= align;
  D.30313 = D.30311 & D.30312;
  if (D.30313 != 0) goto <D.30314>; else goto <D.30315>;
  <D.30314>:
  switch (size) <default: <D.30341>, case 1: <D.25112>, case 2: <D.25114>, case 4: <D.25116>>
  <D.25112>:
  {
    struct MonoInst * inst;

    D.30316 = cfg->mempool;
    inst = mono_mempool_alloc (D.30316, 48);
    inst->data.op[1].const_val = 0;
    D.30317 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.30317;
    inst->prev = 0B;
    D.30318 = inst->prev;
    inst->next = D.30318;
    inst->opcode = 385;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.30319 = inst->sreg3;
    inst->sreg2 = D.30319;
    D.30320 = inst->sreg2;
    inst->sreg1 = D.30320;
    D.30321 = cfg->ip;
    inst->cil_code = D.30321;
    inst->dreg = destreg;
    inst->data.op[0].const_val = offset;
    inst->data.op[1].const_val = val;
    D.30322 = cfg->cbb;
    D.30323 = D.30322->last_ins;
    if (D.30323 != 0B) goto <D.30324>; else goto <D.30325>;
    <D.30324>:
    D.30322 = cfg->cbb;
    D.30323 = D.30322->last_ins;
    D.30323->next = inst;
    D.30322 = cfg->cbb;
    D.30323 = D.30322->last_ins;
    inst->prev = D.30323;
    D.30322 = cfg->cbb;
    D.30322->last_ins = inst;
    goto <D.30326>;
    <D.30325>:
    D.30322 = cfg->cbb;
    D.30322 = cfg->cbb;
    D.30322->last_ins = inst;
    D.30323 = D.30322->last_ins;
    D.30322->code = D.30323;
    <D.30326>:
  }
  return;
  <D.25114>:
  {
    struct MonoInst * inst;

    D.30316 = cfg->mempool;
    inst = mono_mempool_alloc (D.30316, 48);
    inst->data.op[1].const_val = 0;
    D.30327 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.30327;
    inst->prev = 0B;
    D.30328 = inst->prev;
    inst->next = D.30328;
    inst->opcode = 386;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.30329 = inst->sreg3;
    inst->sreg2 = D.30329;
    D.30330 = inst->sreg2;
    inst->sreg1 = D.30330;
    D.30321 = cfg->ip;
    inst->cil_code = D.30321;
    inst->dreg = destreg;
    inst->data.op[0].const_val = offset;
    inst->data.op[1].const_val = val;
    D.30322 = cfg->cbb;
    D.30323 = D.30322->last_ins;
    if (D.30323 != 0B) goto <D.30331>; else goto <D.30332>;
    <D.30331>:
    D.30322 = cfg->cbb;
    D.30323 = D.30322->last_ins;
    D.30323->next = inst;
    D.30322 = cfg->cbb;
    D.30323 = D.30322->last_ins;
    inst->prev = D.30323;
    D.30322 = cfg->cbb;
    D.30322->last_ins = inst;
    goto <D.30333>;
    <D.30332>:
    D.30322 = cfg->cbb;
    D.30322 = cfg->cbb;
    D.30322->last_ins = inst;
    D.30323 = D.30322->last_ins;
    D.30322->code = D.30323;
    <D.30333>:
  }
  return;
  <D.25116>:
  {
    struct MonoInst * inst;

    D.30316 = cfg->mempool;
    inst = mono_mempool_alloc (D.30316, 48);
    inst->data.op[1].const_val = 0;
    D.30334 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.30334;
    inst->prev = 0B;
    D.30335 = inst->prev;
    inst->next = D.30335;
    inst->opcode = 387;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.30336 = inst->sreg3;
    inst->sreg2 = D.30336;
    D.30337 = inst->sreg2;
    inst->sreg1 = D.30337;
    D.30321 = cfg->ip;
    inst->cil_code = D.30321;
    inst->dreg = destreg;
    inst->data.op[0].const_val = offset;
    inst->data.op[1].const_val = val;
    D.30322 = cfg->cbb;
    D.30323 = D.30322->last_ins;
    if (D.30323 != 0B) goto <D.30338>; else goto <D.30339>;
    <D.30338>:
    D.30322 = cfg->cbb;
    D.30323 = D.30322->last_ins;
    D.30323->next = inst;
    D.30322 = cfg->cbb;
    D.30323 = D.30322->last_ins;
    inst->prev = D.30323;
    D.30322 = cfg->cbb;
    D.30322->last_ins = inst;
    goto <D.30340>;
    <D.30339>:
    D.30322 = cfg->cbb;
    D.30322 = cfg->cbb;
    D.30322->last_ins = inst;
    D.30323 = D.30322->last_ins;
    D.30322->code = D.30323;
    <D.30340>:
  }
  return;
  <D.30341>:
  <D.30315>:
  D.30342 = alloc_preg (cfg);
  val_reg = (int) D.30342;
  if (0 != 0) goto <D.30343>; else goto <D.30344>;
  <D.30343>:
  {
    struct MonoInst * inst;

    D.30316 = cfg->mempool;
    inst = mono_mempool_alloc (D.30316, 48);
    inst->data.op[1].const_val = 0;
    D.30345 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.30345;
    inst->prev = 0B;
    D.30346 = inst->prev;
    inst->next = D.30346;
    inst->opcode = 363;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.30347 = inst->sreg3;
    inst->sreg2 = D.30347;
    D.30348 = inst->sreg2;
    inst->sreg1 = D.30348;
    D.30321 = cfg->ip;
    inst->cil_code = D.30321;
    inst->dreg = val_reg;
    D.30349 = (long long int) val;
    inst->data.i8const = D.30349;
    D.30322 = cfg->cbb;
    D.30323 = D.30322->last_ins;
    if (D.30323 != 0B) goto <D.30350>; else goto <D.30351>;
    <D.30350>:
    D.30322 = cfg->cbb;
    D.30323 = D.30322->last_ins;
    D.30323->next = inst;
    D.30322 = cfg->cbb;
    D.30323 = D.30322->last_ins;
    inst->prev = D.30323;
    D.30322 = cfg->cbb;
    D.30322->last_ins = inst;
    goto <D.30352>;
    <D.30351>:
    D.30322 = cfg->cbb;
    D.30322 = cfg->cbb;
    D.30322->last_ins = inst;
    D.30323 = D.30322->last_ins;
    D.30322->code = D.30323;
    <D.30352>:
  }
  goto <D.30353>;
  <D.30344>:
  {
    struct MonoInst * inst;

    D.30316 = cfg->mempool;
    inst = mono_mempool_alloc (D.30316, 48);
    inst->data.op[1].const_val = 0;
    D.30354 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.30354;
    inst->prev = 0B;
    D.30355 = inst->prev;
    inst->next = D.30355;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.30356 = inst->sreg3;
    inst->sreg2 = D.30356;
    D.30357 = inst->sreg2;
    inst->sreg1 = D.30357;
    D.30321 = cfg->ip;
    inst->cil_code = D.30321;
    inst->dreg = val_reg;
    inst->data.op[0].const_val = val;
    D.30322 = cfg->cbb;
    D.30323 = D.30322->last_ins;
    if (D.30323 != 0B) goto <D.30358>; else goto <D.30359>;
    <D.30358>:
    D.30322 = cfg->cbb;
    D.30323 = D.30322->last_ins;
    D.30323->next = inst;
    D.30322 = cfg->cbb;
    D.30323 = D.30322->last_ins;
    inst->prev = D.30323;
    D.30322 = cfg->cbb;
    D.30322->last_ins = inst;
    goto <D.30360>;
    <D.30359>:
    D.30322 = cfg->cbb;
    D.30322 = cfg->cbb;
    D.30322->last_ins = inst;
    D.30323 = D.30322->last_ins;
    D.30322->code = D.30323;
    <D.30360>:
  }
  <D.30353>:
  if (align <= 3) goto <D.30361>; else goto <D.30362>;
  <D.30361>:
  goto <D.25122>;
  <D.25121>:
  {
    struct MonoInst * inst;

    D.30316 = cfg->mempool;
    inst = mono_mempool_alloc (D.30316, 48);
    inst->data.op[1].const_val = 0;
    D.30363 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.30363;
    inst->prev = 0B;
    D.30364 = inst->prev;
    inst->next = D.30364;
    inst->opcode = 375;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.30365 = inst->sreg3;
    inst->sreg2 = D.30365;
    D.30366 = inst->sreg2;
    inst->sreg1 = D.30366;
    D.30321 = cfg->ip;
    inst->cil_code = D.30321;
    inst->sreg1 = val_reg;
    inst->dreg = destreg;
    inst->data.op[0].const_val = offset;
    D.30322 = cfg->cbb;
    D.30323 = D.30322->last_ins;
    if (D.30323 != 0B) goto <D.30367>; else goto <D.30368>;
    <D.30367>:
    D.30322 = cfg->cbb;
    D.30323 = D.30322->last_ins;
    D.30323->next = inst;
    D.30322 = cfg->cbb;
    D.30323 = D.30322->last_ins;
    inst->prev = D.30323;
    D.30322 = cfg->cbb;
    D.30322->last_ins = inst;
    goto <D.30369>;
    <D.30368>:
    D.30322 = cfg->cbb;
    D.30322 = cfg->cbb;
    D.30322->last_ins = inst;
    D.30323 = D.30322->last_ins;
    D.30322->code = D.30323;
    <D.30369>:
  }
  offset = offset + 1;
  size = size + -1;
  <D.25122>:
  if (size > 0) goto <D.25121>; else goto <D.25123>;
  <D.25123>:
  return;
  <D.30362>:
  if (0 != 0) goto <D.30370>; else goto <D.30371>;
  <D.30370>:
  offset.67 = (unsigned int) offset;
  D.30373 = offset.67 & 7;
  if (D.30373 != 0) goto <D.30374>; else goto <D.30375>;
  <D.30374>:
  {
    struct MonoInst * inst;

    D.30316 = cfg->mempool;
    inst = mono_mempool_alloc (D.30316, 48);
    inst->data.op[1].const_val = 0;
    D.30376 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.30376;
    inst->prev = 0B;
    D.30377 = inst->prev;
    inst->next = D.30377;
    inst->opcode = 377;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.30378 = inst->sreg3;
    inst->sreg2 = D.30378;
    D.30379 = inst->sreg2;
    inst->sreg1 = D.30379;
    D.30321 = cfg->ip;
    inst->cil_code = D.30321;
    inst->sreg1 = val_reg;
    inst->dreg = destreg;
    inst->data.op[0].const_val = offset;
    D.30322 = cfg->cbb;
    D.30323 = D.30322->last_ins;
    if (D.30323 != 0B) goto <D.30380>; else goto <D.30381>;
    <D.30380>:
    D.30322 = cfg->cbb;
    D.30323 = D.30322->last_ins;
    D.30323->next = inst;
    D.30322 = cfg->cbb;
    D.30323 = D.30322->last_ins;
    inst->prev = D.30323;
    D.30322 = cfg->cbb;
    D.30322->last_ins = inst;
    goto <D.30382>;
    <D.30381>:
    D.30322 = cfg->cbb;
    D.30322 = cfg->cbb;
    D.30322->last_ins = inst;
    D.30323 = D.30322->last_ins;
    D.30322->code = D.30323;
    <D.30382>:
  }
  offset = offset + 4;
  size = size + -4;
  <D.30375>:
  goto <D.25127>;
  <D.25126>:
  {
    struct MonoInst * inst;

    D.30316 = cfg->mempool;
    inst = mono_mempool_alloc (D.30316, 48);
    inst->data.op[1].const_val = 0;
    D.30383 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.30383;
    inst->prev = 0B;
    D.30384 = inst->prev;
    inst->next = D.30384;
    inst->opcode = 378;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.30385 = inst->sreg3;
    inst->sreg2 = D.30385;
    D.30386 = inst->sreg2;
    inst->sreg1 = D.30386;
    D.30321 = cfg->ip;
    inst->cil_code = D.30321;
    inst->sreg1 = val_reg;
    inst->dreg = destreg;
    inst->data.op[0].const_val = offset;
    D.30322 = cfg->cbb;
    D.30323 = D.30322->last_ins;
    if (D.30323 != 0B) goto <D.30387>; else goto <D.30388>;
    <D.30387>:
    D.30322 = cfg->cbb;
    D.30323 = D.30322->last_ins;
    D.30323->next = inst;
    D.30322 = cfg->cbb;
    D.30323 = D.30322->last_ins;
    inst->prev = D.30323;
    D.30322 = cfg->cbb;
    D.30322->last_ins = inst;
    goto <D.30389>;
    <D.30388>:
    D.30322 = cfg->cbb;
    D.30322 = cfg->cbb;
    D.30322->last_ins = inst;
    D.30323 = D.30322->last_ins;
    D.30322->code = D.30323;
    <D.30389>:
  }
  offset = offset + 8;
  size = size + -8;
  <D.25127>:
  if (size > 7) goto <D.25126>; else goto <D.25128>;
  <D.25128>:
  <D.30371>:
  goto <D.25131>;
  <D.25130>:
  {
    struct MonoInst * inst;

    D.30316 = cfg->mempool;
    inst = mono_mempool_alloc (D.30316, 48);
    inst->data.op[1].const_val = 0;
    D.30390 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.30390;
    inst->prev = 0B;
    D.30391 = inst->prev;
    inst->next = D.30391;
    inst->opcode = 377;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.30392 = inst->sreg3;
    inst->sreg2 = D.30392;
    D.30393 = inst->sreg2;
    inst->sreg1 = D.30393;
    D.30321 = cfg->ip;
    inst->cil_code = D.30321;
    inst->sreg1 = val_reg;
    inst->dreg = destreg;
    inst->data.op[0].const_val = offset;
    D.30322 = cfg->cbb;
    D.30323 = D.30322->last_ins;
    if (D.30323 != 0B) goto <D.30394>; else goto <D.30395>;
    <D.30394>:
    D.30322 = cfg->cbb;
    D.30323 = D.30322->last_ins;
    D.30323->next = inst;
    D.30322 = cfg->cbb;
    D.30323 = D.30322->last_ins;
    inst->prev = D.30323;
    D.30322 = cfg->cbb;
    D.30322->last_ins = inst;
    goto <D.30396>;
    <D.30395>:
    D.30322 = cfg->cbb;
    D.30322 = cfg->cbb;
    D.30322->last_ins = inst;
    D.30323 = D.30322->last_ins;
    D.30322->code = D.30323;
    <D.30396>:
  }
  offset = offset + 4;
  size = size + -4;
  <D.25131>:
  if (size > 3) goto <D.25130>; else goto <D.25132>;
  <D.25132>:
  goto <D.25135>;
  <D.25134>:
  {
    struct MonoInst * inst;

    D.30316 = cfg->mempool;
    inst = mono_mempool_alloc (D.30316, 48);
    inst->data.op[1].const_val = 0;
    D.30397 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.30397;
    inst->prev = 0B;
    D.30398 = inst->prev;
    inst->next = D.30398;
    inst->opcode = 376;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.30399 = inst->sreg3;
    inst->sreg2 = D.30399;
    D.30400 = inst->sreg2;
    inst->sreg1 = D.30400;
    D.30321 = cfg->ip;
    inst->cil_code = D.30321;
    inst->sreg1 = val_reg;
    inst->dreg = destreg;
    inst->data.op[0].const_val = offset;
    D.30322 = cfg->cbb;
    D.30323 = D.30322->last_ins;
    if (D.30323 != 0B) goto <D.30401>; else goto <D.30402>;
    <D.30401>:
    D.30322 = cfg->cbb;
    D.30323 = D.30322->last_ins;
    D.30323->next = inst;
    D.30322 = cfg->cbb;
    D.30323 = D.30322->last_ins;
    inst->prev = D.30323;
    D.30322 = cfg->cbb;
    D.30322->last_ins = inst;
    goto <D.30403>;
    <D.30402>:
    D.30322 = cfg->cbb;
    D.30322 = cfg->cbb;
    D.30322->last_ins = inst;
    D.30323 = D.30322->last_ins;
    D.30322->code = D.30323;
    <D.30403>:
  }
  offset = offset + 2;
  size = size + -2;
  <D.25135>:
  if (size > 1) goto <D.25134>; else goto <D.25136>;
  <D.25136>:
  goto <D.25139>;
  <D.25138>:
  {
    struct MonoInst * inst;

    D.30316 = cfg->mempool;
    inst = mono_mempool_alloc (D.30316, 48);
    inst->data.op[1].const_val = 0;
    D.30404 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.30404;
    inst->prev = 0B;
    D.30405 = inst->prev;
    inst->next = D.30405;
    inst->opcode = 375;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.30406 = inst->sreg3;
    inst->sreg2 = D.30406;
    D.30407 = inst->sreg2;
    inst->sreg1 = D.30407;
    D.30321 = cfg->ip;
    inst->cil_code = D.30321;
    inst->sreg1 = val_reg;
    inst->dreg = destreg;
    inst->data.op[0].const_val = offset;
    D.30322 = cfg->cbb;
    D.30323 = D.30322->last_ins;
    if (D.30323 != 0B) goto <D.30408>; else goto <D.30409>;
    <D.30408>:
    D.30322 = cfg->cbb;
    D.30323 = D.30322->last_ins;
    D.30323->next = inst;
    D.30322 = cfg->cbb;
    D.30323 = D.30322->last_ins;
    inst->prev = D.30323;
    D.30322 = cfg->cbb;
    D.30322->last_ins = inst;
    goto <D.30410>;
    <D.30409>:
    D.30322 = cfg->cbb;
    D.30322 = cfg->cbb;
    D.30322->last_ins = inst;
    D.30323 = D.30322->last_ins;
    D.30322->code = D.30323;
    <D.30410>:
  }
  offset = offset + 1;
  size = size + -1;
  <D.25139>:
  if (size > 0) goto <D.25138>; else goto <D.25140>;
  <D.25140>:
}


get_memset_method ()
{
  struct MonoMethod * memset_method.68;
  struct MonoClass * D.30415;
  struct MonoMethod * memset_method.69;
  struct MonoMethod * D.30419;
  static struct MonoMethod * memset_method = 0B;

  memset_method.68 = memset_method;
  if (memset_method.68 == 0B) goto <D.30413>; else goto <D.30414>;
  <D.30413>:
  D.30415 = mono_defaults.string_class;
  memset_method.69 = mono_class_get_method_from_name (D.30415, "memset", 3);
  memset_method = memset_method.69;
  memset_method.68 = memset_method;
  if (memset_method.68 == 0B) goto <D.30417>; else goto <D.30418>;
  <D.30417>:
  monoeg_g_log (0B, 4, "Old corlib found. Install a new one");
  <D.25607>:
  goto <D.25607>;
  <D.30418>:
  <D.30414>:
  D.30419 = memset_method;
  return D.30419;
}


mono_set_break_policy (MonoBreakPolicy (*MonoBreakPolicyFunc) (struct MonoMethod *) policy_callback)
{
  if (policy_callback != 0B) goto <D.30421>; else goto <D.30422>;
  <D.30421>:
  break_policy_func = policy_callback;
  goto <D.30423>;
  <D.30422>:
  break_policy_func = always_insert_breakpoint;
  <D.30423>:
}


always_insert_breakpoint (struct MonoMethod * method)
{
  MonoBreakPolicy D.30424;

  D.30424 = 0;
  return D.30424;
}


mono_method_to_ir (struct MonoCompile * cfg, struct MonoMethod * method, struct MonoBasicBlock * start_bblock, struct MonoBasicBlock * end_bblock, struct MonoInst * return_var, struct GList * dont_inline, struct MonoInst * * inline_args, guint inline_offset, gboolean is_virtual_call)
{
  struct MonoClass * D.30426;
  struct MonoImage * D.30427;
  struct MonoAssembly * D.30428;
  unsigned char D.30429;
  _Bool D.30430;
  unsigned char D.30431;
  unsigned char D.30432;
  _Bool D.30433;
  int D.30434;
  _Bool D.30435;
  int D.30436;
  _Bool D.30437;
  int D.30438;
  _Bool D.30439;
  int D.30440;
  _Bool D.30441;
  int D.30442;
  <unnamed type> D.30443;
  _Bool D.30444;
  int D.30445;
  _Bool D.30446;
  int D.30447;
  _Bool D.30448;
  int D.30449;
  _Bool D.30450;
  int D.30451;
  unsigned char D.30456;
  int D.30457;
  struct MonoMethod * D.30459;
  const char * D.30460;
  gchar * D.30461;
  <unnamed-unsigned:1> D.30462;
  int D.30463;
  short unsigned int D.30464;
  int D.30465;
  int D.30466;
  unsigned int D.30467;
  int D.30468;
  unsigned int D.30469;
  unsigned int D.30470;
  int D.30471;
  <unnamed-unsigned:1> D.30472;
  int iftmp.70;
  unsigned char D.30476;
  unsigned char D.30477;
  unsigned int D.30488;
  struct MonoMemPool * D.30489;
  void * D.30490;
  unsigned int D.30491;
  void * D.30492;
  int * il_offsets.71;
  unsigned int i.72;
  unsigned int D.30495;
  int * D.30496;
  int D.30497;
  unsigned int D.30498;
  unsigned int D.30501;
  unsigned int D.30502;
  unsigned int D.30503;
  int D.30504;
  unsigned int D.30505;
  unsigned int D.30506;
  int n_il_offsets.73;
  int * line_numbers.74;
  unsigned char D.30509;
  unsigned char D.30510;
  struct MonoDomain * D.30513;
  int D.30514;
  unsigned char D.30517;
  unsigned char D.30518;
  struct MonoGenericSharingContext * D.30524;
  unsigned char D.30527;
  _Bool D.30528;
  long int D.30529;
  long int D.30530;
  short unsigned int D.30533;
  unsigned char D.30538;
  unsigned char D.30539;
  _Bool D.30540;
  long int D.30541;
  long int D.30542;
  struct MonoGenericContext * D.30545;
  struct MonoGenericInst * D.30546;
  _Bool D.30547;
  long int D.30548;
  long int D.30549;
  struct MonoGenericContext * D.30554;
  struct MonoGenericInst * D.30555;
  _Bool D.30558;
  long int D.30559;
  long int D.30560;
  unsigned int D.30566;
  void * D.30567;
  int D.30568;
  unsigned int D.30569;
  char * D.30572;
  unsigned int D.30573;
  unsigned char D.30574;
  unsigned char D.30575;
  struct MonoType * iftmp.75;
  unsigned char D.30579;
  unsigned char D.30580;
  int D.30584;
  unsigned int D.30585;
  unsigned int D.30586;
  struct MonoType * * D.30587;
  struct MonoType * D.30588;
  unsigned int D.30591;
  unsigned int D.30592;
  int D.30595;
  struct MonoProfileCoverageInfo * D.30596;
  unsigned int D.30597;
  unsigned int D.30598;
  unsigned int D.30599;
  int D.30600;
  unsigned int D.30601;
  unsigned int D.30602;
  int D.30603;
  unsigned int D.30604;
  unsigned int D.30605;
  _Bool D.30606;
  long int D.30607;
  long int D.30608;
  short unsigned int D.30611;
  short unsigned int D.30612;
  struct GHashTable * D.30615;
  struct GHashTable * D.30616;
  struct MonoExceptionClause * D.30617;
  unsigned int i.76;
  unsigned int D.30619;
  struct MonoBasicBlock * * D.30620;
  unsigned int D.30621;
  unsigned char * D.30622;
  int D.30623;
  unsigned char * D.30624;
  int D.30625;
  int D.30626;
  unsigned int D.30627;
  unsigned int D.30628;
  struct MonoBasicBlock * * D.30629;
  const unsigned char * D.30635;
  const unsigned char * D.30636;
  int D.30637;
  struct MonoDebugOptions * D.30642;
  int D.30643;
  unsigned int D.30645;
  unsigned int D.30646;
  int D.30647;
  unsigned char * D.30648;
  int D.30651;
  int D.30652;
  unsigned int D.30653;
  unsigned int D.30654;
  struct MonoBasicBlock * * D.30655;
  unsigned int D.30656;
  int D.30657;
  int D.30658;
  unsigned int D.30659;
  unsigned int D.30660;
  unsigned int D.30661;
  unsigned int D.30662;
  unsigned char * D.30663;
  int D.30664;
  int D.30665;
  unsigned int D.30666;
  unsigned int D.30667;
  struct MonoBasicBlock * * D.30668;
  const unsigned char * D.30674;
  struct MonoDebugOptions * D.30679;
  int D.30680;
  unsigned int D.30682;
  unsigned int D.30683;
  int D.30684;
  unsigned char * D.30685;
  int D.30688;
  int D.30689;
  unsigned int D.30690;
  unsigned int D.30691;
  struct MonoBasicBlock * * D.30692;
  unsigned int D.30693;
  unsigned int D.30694;
  unsigned char D.30697;
  unsigned int D.30700;
  unsigned int D.30701;
  unsigned int D.30702;
  _Bool D.30703;
  _Bool D.30704;
  _Bool D.30705;
  int D.30708;
  struct MonoInst * D.30709;
  int D.30710;
  int D.30711;
  const unsigned char * D.30712;
  struct MonoInst * D.30713;
  int D.30721;
  unsigned int D.30727;
  void * D.30730;
  struct MonoInst * * D.30731;
  int D.30732;
  struct MonoInst * D.30733;
  int D.30734;
  struct MonoInst * D.30735;
  int D.30736;
  int D.30737;
  struct MonoInst * D.30738;
  int D.30739;
  struct MonoBasicBlock * bblock.127;
  struct MonoInst * D.30741;
  unsigned int D.30747;
  unsigned char * D.30748;
  int D.30749;
  int D.30750;
  unsigned int D.30751;
  unsigned int D.30752;
  struct MonoBasicBlock * * D.30753;
  const unsigned char * D.30759;
  struct MonoDebugOptions * D.30764;
  int D.30765;
  unsigned int D.30767;
  unsigned int D.30768;
  int D.30769;
  void * D.30772;
  struct MonoInst * D.30773;
  struct MonoClass * D.30779;
  int D.30784;
  short unsigned int D.30790;
  int D.30791;
  int D.30792;
  struct MonoGenericContext * D.30794;
  struct MonoGenericInst * D.30795;
  int D.30797;
  struct MonoInst * D.30798;
  int D.30799;
  int D.30800;
  struct MonoInst * D.30801;
  int D.30802;
  <unnamed-unsigned:15> D.30806;
  int D.30807;
  void * bblock.77;
  struct MonoBasicBlock * bblock.78;
  unsigned int D.30811;
  unsigned int D.30812;
  int D.30813;
  unsigned char * D.30814;
  int D.30817;
  int D.30818;
  unsigned int D.30819;
  unsigned int D.30820;
  struct MonoBasicBlock * * D.30821;
  struct MonoInst * D.30826;
  <unnamed type> D.30830;
  int iftmp.79;
  unsigned char D.30837;
  int iftmp.80;
  short unsigned int D.30853;
  int D.30854;
  int D.30855;
  struct MonoClass * D.30859;
  int D.30860;
  struct MonoClass * D.30867;
  int D.30870;
  unsigned int D.30881;
  unsigned int D.30882;
  unsigned char D.30883;
  unsigned char D.30884;
  unsigned char D.30885;
  unsigned char D.30886;
  unsigned int D.30887;
  unsigned int D.30888;
  int D.30889;
  struct GPtrArray * D.30894;
  struct MonoClass * D.30895;
  struct MonoType * D.30896;
  int D.30897;
  int D.30898;
  struct MonoInst * D.30899;
  int D.30900;
  int D.30901;
  int D.30902;
  int D.30903;
  unsigned int D.30907;
  int D.30908;
  struct MonoInst * D.30909;
  int D.30910;
  int D.30911;
  int D.30915;
  unsigned int D.30919;
  unsigned int D.30920;
  int D.30925;
  int D.30926;
  char * D.30927;
  void * D.30932;
  struct MonoInst * D.30933;
  int D.30934;
  struct MonoInst * D.30935;
  int D.30936;
  int D.30937;
  int D.30938;
  struct MonoInst * D.30939;
  int D.30940;
  int D.30941;
  unsigned int D.30942;
  struct MonoJumpInfoToken * D.30943;
  int D.30944;
  unsigned int D.30945;
  int D.30946;
  void * D.30948;
  unsigned int D.30949;
  int D.30950;
  void * D.30954;
  struct MonoInst * D.30955;
  int D.30956;
  struct MonoInst * D.30957;
  int D.30958;
  int D.30959;
  unsigned int D.30960;
  int D.30961;
  unsigned int D.30962;
  int D.30963;
  struct MonoMethod * D.30967;
  char * D.30968;
  void * D.30973;
  int D.30974;
  struct MonoInst * D.30975;
  int D.30976;
  int D.30977;
  unsigned int D.30978;
  struct MonoJumpInfoToken * D.30979;
  int D.30980;
  unsigned int D.30981;
  int D.30982;
  void * D.30984;
  unsigned int D.30985;
  int D.30986;
  void * D.30990;
  unsigned int D.30991;
  int D.30992;
  unsigned int D.30993;
  int D.30994;
  char * D.30998;
  void * D.31003;
  int D.31004;
  struct MonoInst * D.31005;
  int D.31006;
  int D.31007;
  unsigned int D.31008;
  struct MonoJumpInfoToken * D.31009;
  int D.31010;
  unsigned int D.31011;
  int D.31012;
  void * D.31014;
  unsigned int D.31015;
  int D.31016;
  void * D.31020;
  unsigned int D.31021;
  int D.31022;
  unsigned int D.31023;
  int D.31024;
  struct MonoMethod * D.31028;
  struct MonoMethod * D.31031;
  <unnamed type> D.31032;
  short unsigned int D.31039;
  int D.31040;
  short unsigned int D.31041;
  int D.31042;
  int D.31043;
  int D.31050;
  struct MonoException * iftmp.81;
  unsigned int D.31057;
  struct MonoDebugOptions * D.31065;
  int D.31066;
  int D.31068;
  struct MonoDebugOptions * D.31075;
  int D.31076;
  unsigned int breakpoint_id.82;
  struct MonoType * D.31081;
  short unsigned int D.31082;
  short unsigned int D.31083;
  struct MonoDebugOptions * D.31090;
  int D.31091;
  short unsigned int D.31093;
  int D.31094;
  struct MonoGenericContext * D.31103;
  struct MonoGenericInst * D.31104;
  struct MonoInst * * D.31106;
  struct MonoInst * D.31107;
  unsigned char D.31108;
  unsigned char D.31109;
  int D.31112;
  struct MonoInst * D.31113;
  int D.31114;
  int D.31115;
  struct MonoType * * D.31116;
  struct MonoType * D.31117;
  unsigned int D.31118;
  short unsigned int D.31119;
  struct MonoClass * D.31120;
  int D.31121;
  unsigned char D.31122;
  <unnamed type> D.31123;
  unsigned int D.31124;
  int D.31125;
  short unsigned int D.31126;
  struct MonoClass * D.31129;
  unsigned int D.31133;
  unsigned char D.31134;
  int D.31139;
  struct MonoInst * D.31140;
  int D.31141;
  int D.31142;
  int D.31143;
  int D.31147;
  struct MonoInst * D.31148;
  int D.31149;
  int D.31150;
  int D.31156;
  struct MonoInst * D.31157;
  int D.31158;
  int D.31159;
  int D.31163;
  struct MonoInst * D.31164;
  int D.31165;
  int D.31166;
  _Bool D.31170;
  int D.31173;
  struct MonoDebugOptions * D.31180;
  int D.31181;
  _Bool D.31183;
  long int D.31184;
  long int D.31185;
  <unnamed-unsigned:15> D.31188;
  int D.31189;
  int D.31190;
  unsigned int D.31191;
  unsigned int D.31192;
  int ip.83;
  int D.31196;
  int D.31197;
  unsigned int D.31198;
  int D.31202;
  _Bool D.31205;
  long int D.31206;
  long int D.31207;
  int D.31211;
  unsigned int D.31212;
  unsigned int D.31213;
  struct MonoBasicBlock * * D.31214;
  struct MonoDebugOptions * D.31224;
  int D.31225;
  unsigned int D.31227;
  unsigned int D.31228;
  int D.31229;
  struct MonoInst * * D.31234;
  unsigned int D.31235;
  struct MonoInst * * D.31236;
  struct MonoInst * D.31237;
  int D.31238;
  struct MonoInst * * D.31239;
  unsigned int D.31240;
  unsigned int D.31241;
  struct MonoInst * * D.31242;
  struct MonoInst * D.31243;
  struct MonoType * D.31244;
  unsigned int D.31245;
  short unsigned int D.31246;
  struct MonoClass * D.31247;
  int D.31248;
  unsigned char D.31249;
  <unnamed type> D.31250;
  unsigned int D.31251;
  int D.31252;
  short unsigned int D.31253;
  struct MonoClass * D.31256;
  struct MonoInst * * sp.84;
  short unsigned int D.31261;
  int D.31262;
  int sp.85;
  int stack_start.86;
  int D.31274;
  int D.31275;
  unsigned char D.31276;
  unsigned char D.31277;
  struct MonoDebugOptions * D.31284;
  int D.31285;
  unsigned int D.31289;
  short unsigned int D.31290;
  unsigned int D.31291;
  int D.31292;
  struct MonoClass * D.31295;
  struct MonoInst * * sp.87;
  int D.31302;
  unsigned char D.31305;
  unsigned char D.31306;
  _Bool D.31309;
  long int D.31310;
  long int D.31311;
  int D.31316;
  sizetype op_size.88;
  unsigned int D.31329;
  unsigned int D.31330;
  unsigned int D.31331;
  int D.31332;
  unsigned int D.31333;
  unsigned int D.31334;
  int iftmp.89;
  struct MonoMethodHeader * D.31341;
  short unsigned int D.31342;
  short unsigned int D.31343;
  _Bool D.31344;
  unsigned char D.31345;
  unsigned char D.31348;
  unsigned char D.31349;
  unsigned int D.31355;
  unsigned int D.31356;
  unsigned int D.31357;
  struct MonoProfileCoverageInfo * D.31360;
  int * D.31363;
  char * D.31369;
  int D.31370;
  unsigned char D.31371;
  int D.31372;
  _Bool D.31373;
  _Bool D.31374;
  _Bool D.31375;
  unsigned char D.31383;
  int D.31390;
  struct MonoDebugOptions * D.31403;
  int D.31404;
  unsigned int n.90;
  struct MonoDebugOptions * D.31413;
  int D.31414;
  unsigned int D.31416;
  struct MonoType * * D.31417;
  struct MonoType * D.31418;
  unsigned int D.31419;
  short unsigned int D.31420;
  struct MonoInst * * D.31421;
  struct MonoInst * D.31422;
  struct MonoClass * D.31423;
  int D.31424;
  unsigned int D.31425;
  int D.31426;
  struct MonoClass * D.31429;
  struct MonoInst * * sp.91;
  struct MonoDebugOptions * D.31440;
  int D.31441;
  unsigned int D.31443;
  struct MonoDebugOptions * D.31450;
  int D.31451;
  unsigned int D.31453;
  short unsigned int D.31454;
  struct MonoInst * * D.31455;
  struct MonoInst * * D.31456;
  struct MonoInst * D.31457;
  struct MonoClass * D.31458;
  int D.31459;
  unsigned int D.31460;
  int D.31461;
  struct MonoClass * D.31464;
  struct MonoInst * * sp.92;
  struct MonoDebugOptions * D.31475;
  int D.31476;
  struct MonoDebugOptions * D.31484;
  int D.31485;
  struct MonoInst * D.31489;
  int D.31490;
  struct MonoDebugOptions * D.31497;
  int D.31498;
  unsigned char * D.31500;
  struct MonoDebugOptions * D.31507;
  int D.31508;
  struct MonoDebugOptions * D.31516;
  int D.31517;
  unsigned char * D.31519;
  unsigned char D.31520;
  struct MonoDebugOptions * D.31527;
  int D.31528;
  unsigned int D.31530;
  short unsigned int D.31531;
  unsigned int D.31532;
  int D.31533;
  struct MonoClass * D.31536;
  struct MonoInst * * sp.93;
  struct MonoDebugOptions * D.31547;
  int D.31548;
  struct MonoDebugOptions * D.31556;
  int D.31557;
  struct MonoDebugOptions * D.31565;
  int D.31566;
  struct MonoInst * * D.31568;
  struct MonoInst * D.31569;
  unsigned char D.31570;
  unsigned char D.31571;
  struct MonoClass * D.31572;
  unsigned int D.31573;
  int D.31574;
  _Bool D.31575;
  long int D.31576;
  long int D.31577;
  struct MonoType * D.31580;
  int D.31581;
  _Bool iftmp.94;
  int D.31585;
  unsigned char D.31588;
  _Bool D.31589;
  _Bool D.31590;
  _Bool D.31591;
  int D.31592;
  unsigned char D.31594;
  struct MonoInst * iftmp.95;
  int D.31598;
  int D.31599;
  unsigned int D.31600;
  unsigned int D.31601;
  struct MonoInst * * D.31604;
  sizetype D.31605;
  sizetype D.31606;
  sizetype D.31607;
  struct MonoInst * * D.31608;
  struct MonoInst * iftmp.96;
  int D.31611;
  unsigned int D.31612;
  sizetype D.31615;
  sizetype D.31616;
  struct MonoInst * * D.31617;
  _Bool D.31619;
  long int D.31620;
  long int D.31621;
  _Bool D.31624;
  long int D.31625;
  long int D.31626;
  unsigned char D.31629;
  unsigned char D.31630;
  unsigned char D.31631;
  unsigned char D.31632;
  struct MonoInst * * sp.97;
  struct MonoDebugOptions * D.31643;
  int D.31644;
  struct MonoDebugOptions * D.31652;
  int D.31653;
  struct MonoDebugOptions * D.31661;
  int D.31662;
  unsigned int D.31666;
  unsigned int D.31667;
  struct MonoType * * D.31668;
  struct MonoType * D.31669;
  int D.31670;
  struct MonoDebugOptions * D.31677;
  int D.31678;
  unsigned int D.31680;
  short unsigned int D.31681;
  int D.31682;
  struct MonoClass * D.31685;
  struct MonoDebugOptions * D.31695;
  int D.31696;
  struct MonoDebugOptions * D.31704;
  int D.31705;
  struct MonoDebugOptions * D.31713;
  int D.31714;
  unsigned int D.31716;
  short unsigned int D.31717;
  unsigned int D.31718;
  int D.31719;
  struct MonoClass * D.31722;
  struct MonoInst * * sp.98;
  struct MonoDebugOptions * D.31733;
  int D.31734;
  struct MonoDebugOptions * D.31742;
  int D.31743;
  short unsigned int D.31745;
  struct MonoDebugOptions * D.31752;
  int D.31753;
  struct MonoInst * * D.31757;
  struct MonoInst * D.31758;
  unsigned char D.31759;
  unsigned char D.31760;
  struct MonoClass * D.31761;
  unsigned int D.31762;
  int D.31763;
  struct MonoType * D.31766;
  int D.31767;
  _Bool iftmp.99;
  int D.31771;
  unsigned char D.31774;
  _Bool D.31775;
  _Bool D.31776;
  _Bool D.31777;
  int D.31778;
  unsigned char D.31780;
  struct MonoInst * iftmp.100;
  int D.31784;
  int D.31785;
  unsigned int D.31786;
  sizetype D.31789;
  sizetype D.31790;
  sizetype D.31791;
  struct MonoInst * * D.31792;
  struct MonoInst * iftmp.101;
  int D.31795;
  unsigned int D.31796;
  sizetype D.31799;
  sizetype D.31800;
  struct MonoInst * * D.31801;
  _Bool D.31803;
  long int D.31804;
  long int D.31805;
  _Bool D.31808;
  long int D.31809;
  long int D.31810;
  unsigned char D.31813;
  unsigned char D.31814;
  unsigned char D.31815;
  unsigned char D.31816;
  struct MonoInst * * sp.102;
  struct MonoDebugOptions * D.31827;
  int D.31828;
  struct MonoDebugOptions * D.31836;
  int D.31837;
  struct MonoDebugOptions * D.31845;
  int D.31846;
  int D.31850;
  struct MonoType * D.31851;
  int D.31852;
  struct MonoDebugOptions * D.31859;
  int D.31860;
  struct MonoDebugOptions * D.31868;
  int D.31869;
  unsigned int D.31871;
  int D.31872;
  struct MonoInst * * sp.103;
  struct MonoDebugOptions * D.31883;
  int D.31884;
  unsigned int D.31886;
  int D.31887;
  struct MonoInst * * sp.104;
  struct MonoDebugOptions * D.31898;
  int D.31899;
  int D.31901;
  unsigned int D.31902;
  int D.31903;
  struct MonoInst * * sp.105;
  struct MonoDebugOptions * D.31914;
  int D.31915;
  struct MonoDebugOptions * D.31923;
  int D.31924;
  signed char D.31926;
  int D.31927;
  unsigned int D.31928;
  int D.31929;
  struct MonoInst * * sp.106;
  unsigned char * D.31934;
  struct MonoDebugOptions * D.31941;
  int D.31942;
  struct MonoDebugOptions * D.31950;
  int D.31951;
  const guint32 * D.31953;
  unsigned int D.31954;
  int D.31955;
  unsigned int D.31956;
  int D.31957;
  struct MonoInst * * sp.107;
  unsigned char * D.31962;
  struct MonoDebugOptions * D.31969;
  int D.31970;
  struct MonoDebugOptions * D.31978;
  int D.31979;
  unsigned int D.31981;
  int D.31982;
  long long unsigned int D.31983;
  long long int D.31984;
  struct MonoInst * * sp.108;
  struct MonoDebugOptions * D.31995;
  int D.31996;
  struct MonoDebugOptions * D.32004;
  int D.32005;
  int D.32009;
  struct MonoInst * D.32010;
  guint16 iftmp.109;
  int D.32015;
  int D.32016;
  int D.32019;
  struct MonoInst * D.32020;
  int D.32021;
  int D.32022;
  int D.32023;
  unsigned int D.32025;
  int D.32026;
  unsigned int D.32030;
  int D.32031;
  unsigned int D.32036;
  int D.32037;
  unsigned int D.32041;
  float D.32042;
  struct MonoInst * * sp.110;
  struct MonoDebugOptions * D.32050;
  int D.32051;
  struct MonoDebugOptions * D.32059;
  int D.32060;
  int D.32064;
  struct MonoInst * D.32065;
  guint16 iftmp.111;
  int D.32070;
  int D.32071;
  int D.32074;
  struct MonoInst * D.32075;
  int D.32076;
  int D.32077;
  int D.32078;
  unsigned int D.32080;
  int D.32081;
  unsigned int D.32085;
  int D.32086;
  unsigned int D.32091;
  int D.32092;
  double D.32096;
  struct MonoInst * * sp.112;
  struct MonoDebugOptions * D.32104;
  int D.32105;
  struct MonoDebugOptions * D.32113;
  int D.32114;
  struct MonoType * D.32116;
  int D.32117;
  struct MonoInst * D.32118;
  int D.32119;
  int D.32120;
  int D.32121;
  unsigned int D.32122;
  unsigned int D.32123;
  struct MonoInst * * D.32124;
  struct MonoInst * D.32125;
  struct MonoType * D.32126;
  unsigned int D.32127;
  short unsigned int D.32128;
  struct MonoClass * D.32129;
  int D.32130;
  short unsigned int D.32131;
  struct MonoClass * D.32134;
  unsigned int D.32138;
  short unsigned int D.32139;
  unsigned int D.32140;
  int D.32141;
  struct MonoClass * D.32144;
  struct MonoInst * * sp.113;
  unsigned int D.32149;
  short unsigned int D.32150;
  unsigned int D.32151;
  int D.32152;
  struct MonoClass * D.32155;
  struct MonoInst * * sp.114;
  struct MonoDebugOptions * D.32166;
  int D.32167;
  unsigned char D.32169;
  int D.32172;
  struct MonoInst * D.32173;
  int D.32174;
  int D.32175;
  const char * D.32187;
  struct MonoMethodSignature * D.32188;
  short unsigned int D.32189;
  int D.32190;
  const char * D.32191;
  const char * D.32192;
  const char * D.32193;
  gchar * D.32194;
  char * D.32197;
  struct MonoDebugOptions * D.32204;
  int D.32205;
  struct MonoDebugOptions * D.32213;
  int D.32214;
  struct MonoLoaderError * D.32219;
  struct MonoDebugOptions * D.32220;
  int D.32221;
  int D.32225;
  const char * D.32232;
  <unnamed type> D.32233;
  short unsigned int D.32239;
  int D.32240;
  <unnamed-unsigned:1> D.32241;
  int D.32242;
  int D.32245;
  int D.32246;
  struct MonoMethodSignature * D.32247;
  unsigned int n.115;
  unsigned int D.32249;
  void * D.32250;
  struct MonoInst * * D.32251;
  unsigned int i.116;
  unsigned int D.32253;
  struct MonoInst * * D.32254;
  void * D.32255;
  struct MonoInst * D.32256;
  int D.32257;
  struct MonoInst * D.32258;
  int D.32259;
  int D.32260;
  struct MonoType * * D.32261;
  struct MonoType * D.32262;
  unsigned int D.32263;
  short unsigned int D.32264;
  struct MonoInst * * D.32265;
  struct MonoInst * D.32266;
  struct MonoClass * D.32267;
  int D.32268;
  unsigned char D.32269;
  <unnamed type> D.32270;
  unsigned int D.32271;
  int D.32272;
  short unsigned int D.32273;
  struct MonoClass * D.32276;
  struct MonoInst * * D.32284;
  struct MonoInst * D.32285;
  unsigned char D.32286;
  unsigned char D.32287;
  unsigned int i.117;
  _Bool D.32292;
  _Bool D.32293;
  struct MonoDebugOptions * D.32300;
  int D.32301;
  struct MonoDebugOptions * D.32311;
  int D.32312;
  short unsigned int D.32314;
  int D.32315;
  <unnamed-unsigned:1> D.32316;
  int D.32317;
  unsigned char D.32318;
  unsigned char D.32321;
  unsigned char D.32322;
  void * D.32325;
  struct MonoInst * D.32326;
  int D.32327;
  struct MonoInst * D.32328;
  guint16 iftmp.118;
  int D.32333;
  int D.32334;
  int D.32337;
  struct MonoInst * D.32338;
  int D.32339;
  int D.32340;
  int D.32341;
  unsigned int D.32343;
  int D.32344;
  void * D.32348;
  struct MonoInst * D.32349;
  int D.32350;
  struct MonoInst * D.32351;
  int D.32352;
  int D.32353;
  unsigned int D.32354;
  int D.32355;
  char * D.32366;
  unsigned char D.32369;
  _Bool D.32370;
  _Bool D.32371;
  _Bool D.32372;
  struct MonoMethod * cil_method.119;
  char * D.32378;
  unsigned char D.32381;
  _Bool D.32382;
  _Bool D.32383;
  _Bool D.32384;
  int D.32387;
  struct MonoClass * D.32390;
  unsigned char D.32391;
  unsigned char D.32392;
  _Bool D.32393;
  long int D.32394;
  long int D.32395;
  struct MonoLoaderError * D.32401;
  struct MonoDebugOptions * D.32402;
  int D.32403;
  unsigned char D.32407;
  struct MonoGenericContainer * D.32412;
  struct MonoGenericContext * D.32413;
  int D.32414;
  int D.32417;
  gchar * D.32420;
  <unnamed type> D.32421;
  short unsigned int D.32426;
  int D.32427;
  int D.32428;
  unsigned char D.32433;
  unsigned char D.32434;
  int D.32437;
  unsigned char D.32440;
  unsigned char D.32441;
  unsigned char D.32444;
  int D.32447;
  struct MonoDebugOptions * D.32450;
  int D.32451;
  short unsigned int D.32457;
  int D.32458;
  int D.32459;
  int D.32461;
  unsigned char D.32463;
  struct MonoDebugOptions * D.32466;
  int D.32467;
  <unnamed-unsigned:1> D.32471;
  int D.32472;
  int check_for_pending_exc.120;
  struct MonoType * D.32478;
  int D.32479;
  unsigned char D.32486;
  _Bool D.32487;
  _Bool D.32488;
  _Bool D.32489;
  int D.32491;
  int D.32492;
  unsigned int D.32493;
  unsigned int D.32494;
  unsigned int D.32495;
  int D.32496;
  unsigned int D.32497;
  unsigned int D.32498;
  <unnamed type> D.32499;
  int D.32502;
  unsigned char D.32512;
  unsigned char D.32513;
  struct MonoGenericContainer * D.32522;
  struct MonoDebugOptions * D.32529;
  int D.32530;
  int D.32536;
  _Bool D.32537;
  long int D.32538;
  long int D.32539;
  struct MonoDebugOptions * D.32548;
  int D.32549;
  sizetype D.32551;
  int D.32554;
  struct MonoClass * D.32559;
  unsigned char D.32561;
  unsigned char D.32562;
  struct MonoImage * D.32567;
  struct MonoImage * D.32568;
  unsigned int D.32570;
  unsigned int D.32571;
  int D.32583;
  unsigned char D.32585;
  unsigned char D.32586;
  unsigned char D.32588;
  unsigned char D.32589;
  _Bool D.32590;
  unsigned char D.32591;
  _Bool D.32592;
  _Bool D.32593;
  int D.32594;
  int D.32596;
  unsigned char D.32598;
  unsigned char D.32599;
  struct MonoType * D.32602;
  int D.32603;
  int D.32605;
  int D.32606;
  int D.32609;
  struct MonoInst * D.32610;
  void * D.32612;
  struct MonoInst * D.32613;
  int D.32614;
  struct MonoInst * D.32615;
  guint16 iftmp.121;
  int D.32620;
  int D.32621;
  int D.32624;
  struct MonoInst * D.32625;
  int D.32626;
  int D.32627;
  int D.32628;
  unsigned int D.32630;
  int D.32631;
  int D.32635;
  struct MonoInst * D.32636;
  unsigned int D.32641;
  int D.32642;
  unsigned int D.32643;
  unsigned int D.32644;
  int D.32645;
  int D.32649;
  struct MonoClass * D.32652;
  struct MonoInst * D.32653;
  struct MonoInst * iftmp.122;
  struct MonoInst * * D.32655;
  struct MonoInst * D.32656;
  int D.32657;
  unsigned int D.32658;
  unsigned int D.32661;
  unsigned int D.32662;
  struct MonoInst * * D.32663;
  unsigned char D.32667;
  unsigned char D.32668;
  struct MonoClass * D.32669;
  unsigned int D.32670;
  int D.32671;
  struct MonoType * D.32674;
  int D.32675;
  _Bool iftmp.123;
  int D.32679;
  unsigned char D.32682;
  _Bool D.32683;
  _Bool D.32684;
  _Bool D.32685;
  int D.32686;
  unsigned char D.32688;
  struct MonoInst * iftmp.124;
  int D.32692;
  int D.32693;
  unsigned int D.32694;
  sizetype D.32697;
  sizetype D.32698;
  sizetype D.32699;
  struct MonoInst * * D.32700;
  struct MonoInst * iftmp.125;
  int D.32703;
  unsigned int D.32704;
  sizetype D.32707;
  sizetype D.32708;
  struct MonoInst * * D.32709;
  _Bool D.32711;
  long int D.32712;
  long int D.32713;
  _Bool D.32716;
  long int D.32717;
  long int D.32718;
  unsigned char D.32721;
  unsigned char D.32722;
  unsigned char D.32723;
  unsigned char D.32724;
  struct MonoInst * D.32728;
  int D.32729;
  void * D.32734;
  struct MonoInst * D.32735;
  int D.32736;
  struct MonoInst * D.32737;
  int D.32738;
  int D.32739;
  unsigned int D.32740;
  int D.32741;
  void * D.32748;
  unsigned int D.32749;
  int D.32750;
  void * D.32754;
  int D.32755;
  struct MonoInst * D.32756;
  int D.32757;
  int D.32758;
  unsigned int D.32759;
  int D.32760;
  int D.32764;
  struct MonoClass * D.32767;
  unsigned char D.32771;
  unsigned char D.32772;
  _Bool D.32773;
  unsigned char D.32774;
  _Bool D.32775;
  _Bool D.32776;
  int D.32779;
  struct MonoInst * D.32780;
  int D.32781;
  int D.32782;
  unsigned int D.32783;
  int D.32784;
  unsigned int D.32788;
  short unsigned int D.32789;
  int D.32790;
  unsigned int D.32791;
  int D.32792;
  const char * D.32798;
  gchar * D.32799;
  struct MonoClass * D.32807;
  struct MonoClass * D.32808;
  struct MonoType * D.32810;
  unsigned int D.32811;
  short unsigned int D.32812;
  unsigned int D.32813;
  int D.32814;
  int D.32818;
  struct MonoInst * D.32819;
  unsigned int D.32823;
  unsigned char D.32834;
  struct MonoDebugOptions * D.32835;
  int D.32836;
  struct MonoDebugOptions * D.32840;
  int D.32841;
  struct MonoDebugOptions * D.32847;
  int D.32848;
  struct MonoMethod * * D.32852;
  int D.32853;
  unsigned int D.32854;
  unsigned int D.32855;
  struct MonoMethod * * D.32856;
  unsigned int D.32859;
  short unsigned int D.32860;
  unsigned int D.32861;
  int D.32862;
  int D.32866;
  struct MonoInst * D.32867;
  int D.32871;
  struct MonoDebugOptions * D.32878;
  int D.32879;
  struct MonoClass * D.32883;
  struct MonoClass * D.32884;
  int D.27506;
  int iftmp.126;
  int D.27505;
  const char[7] * D.32890;
  unsigned char D.32891;
  int D.32892;
  unsigned char D.32893;
  int D.32894;
  _Bool D.32895;
  _Bool D.32896;
  _Bool D.32897;
  const unsigned char * D.32900;
  unsigned char D.32901;
  int D.32902;
  const unsigned char * D.32903;
  unsigned char D.32904;
  int D.32905;
  _Bool D.32906;
  _Bool D.32907;
  const unsigned char * D.32910;
  unsigned char D.32911;
  int D.32912;
  const unsigned char * D.32913;
  unsigned char D.32914;
  int D.32915;
  _Bool D.32916;
  _Bool D.32917;
  const unsigned char * D.32920;
  unsigned char D.32921;
  int D.32922;
  const unsigned char * D.32923;
  unsigned char D.32924;
  int D.32925;
  const char * D.32927;
  unsigned int D.32932;
  int D.32937;
  struct MonoGenericClass * D.32946;
  int D.32949;
  int D.32952;
  unsigned char D.32958;
  struct MonoDebugOptions * D.32959;
  int D.32960;
  struct MonoGenericInst * D.32975;
  int pass_vtable.128;
  struct MonoDebugOptions * D.32990;
  int D.32991;
  int D.32993;
  struct MonoInst * D.32994;
  guint16 iftmp.129;
  int D.32999;
  int D.33000;
  int D.33003;
  struct MonoInst * D.33004;
  int D.33005;
  int D.33006;
  struct MonoInst * iftmp.130;
  int D.33011;
  void * iftmp.131;
  unsigned int D.33017;
  int D.33018;
  int pass_mrgctx.132;
  _Bool D.33025;
  long int D.33026;
  long int D.33027;
  struct MonoDebugOptions * D.33035;
  int D.33036;
  int D.33040;
  int D.33042;
  unsigned int D.33045;
  _Bool D.33052;
  long int D.33053;
  long int D.33054;
  _Bool D.33057;
  long int D.33058;
  long int D.33059;
  int D.33068;
  struct MonoInst * D.33069;
  int D.33070;
  int D.33071;
  int D.33075;
  struct MonoInst * D.33076;
  int D.33077;
  int D.33078;
  int D.33084;
  struct MonoInst * D.33085;
  int D.33086;
  int D.33087;
  int D.33091;
  struct MonoInst * D.33092;
  int D.33093;
  int D.33094;
  _Bool D.33103;
  _Bool D.33104;
  _Bool D.33105;
  unsigned char D.33112;
  short unsigned int D.33113;
  int D.33117;
  unsigned char D.33118;
  _Bool D.33119;
  long int D.33120;
  long int D.33121;
  int D.33132;
  const char * D.33137;
  gchar * D.33138;
  int mono_use_imt.133;
  _Bool D.33148;
  long int D.33149;
  long int D.33150;
  unsigned char D.33155;
  unsigned char D.33156;
  _Bool D.33157;
  long int D.33158;
  long int D.33159;
  struct MonoType * D.33163;
  int D.33164;
  struct MonoInst * D.33165;
  int D.33166;
  int D.33167;
  int D.33168;
  unsigned int D.33169;
  unsigned int D.33170;
  struct MonoInst * * D.33171;
  struct MonoInst * D.33172;
  struct MonoType * D.33173;
  unsigned int D.33174;
  short unsigned int D.33175;
  struct MonoClass * D.33176;
  int D.33177;
  short unsigned int D.33178;
  struct MonoClass * D.33181;
  void * D.33185;
  struct MonoInst * D.33186;
  int D.33187;
  struct MonoInst * D.33188;
  int D.33189;
  int D.33190;
  unsigned int D.33191;
  short unsigned int D.33192;
  unsigned char D.33193;
  <unnamed type> D.33194;
  unsigned int D.33195;
  int D.33196;
  short unsigned int D.33197;
  struct MonoClass * D.33200;
  struct MonoInst * D.33204;
  void * D.33205;
  struct MonoInst * D.33206;
  int D.33207;
  struct MonoInst * D.33208;
  int D.33209;
  int D.33210;
  int D.33211;
  unsigned int D.33212;
  unsigned int D.33213;
  struct MonoInst * * D.33214;
  struct MonoInst * D.33215;
  unsigned char D.33216;
  unsigned char D.33217;
  struct MonoClass * D.33218;
  unsigned int D.33219;
  int D.33220;
  struct MonoType * D.33223;
  int D.33224;
  _Bool iftmp.134;
  int D.33228;
  unsigned char D.33231;
  _Bool D.33232;
  _Bool D.33233;
  _Bool D.33234;
  int D.33235;
  unsigned char D.33237;
  struct MonoInst * iftmp.135;
  int D.33241;
  int D.33242;
  unsigned int D.33243;
  sizetype D.33246;
  sizetype D.33247;
  sizetype D.33248;
  struct MonoInst * * D.33249;
  struct MonoInst * iftmp.136;
  int D.33252;
  unsigned int D.33253;
  sizetype D.33256;
  sizetype D.33257;
  struct MonoInst * * D.33258;
  _Bool D.33260;
  long int D.33261;
  long int D.33262;
  _Bool D.33265;
  long int D.33266;
  long int D.33267;
  unsigned char D.33270;
  unsigned char D.33271;
  unsigned char D.33272;
  unsigned char D.33273;
  void * D.33277;
  int D.33278;
  struct MonoInst * D.33279;
  int D.33280;
  int D.33281;
  unsigned int D.33282;
  short unsigned int D.33283;
  <unnamed type> D.33284;
  unsigned int D.33285;
  int D.33286;
  short unsigned int D.33287;
  struct MonoClass * D.33290;
  struct MonoClass * D.33296;
  int D.27530;
  int iftmp.137;
  int D.27529;
  const char[6] * D.33302;
  unsigned char D.33303;
  int D.33304;
  unsigned char D.33305;
  int D.33306;
  _Bool D.33307;
  _Bool D.33308;
  _Bool D.33309;
  const unsigned char * D.33312;
  unsigned char D.33313;
  int D.33314;
  const unsigned char * D.33315;
  unsigned char D.33316;
  int D.33317;
  _Bool D.33318;
  _Bool D.33319;
  const unsigned char * D.33322;
  unsigned char D.33323;
  int D.33324;
  const unsigned char * D.33325;
  unsigned char D.33326;
  int D.33327;
  _Bool D.33328;
  _Bool D.33329;
  const unsigned char * D.33332;
  unsigned char D.33333;
  int D.33334;
  const unsigned char * D.33335;
  unsigned char D.33336;
  int D.33337;
  struct MonoMethodSignature * D.33341;
  short unsigned int D.33342;
  int D.33345;
  unsigned int D.33346;
  unsigned int D.33347;
  struct MonoBasicBlock * * D.33348;
  const unsigned char * D.33354;
  struct MonoDebugOptions * D.33359;
  int D.33360;
  unsigned int D.33362;
  unsigned int D.33363;
  int D.33364;
  unsigned char * D.33365;
  int D.33368;
  int D.33369;
  unsigned int D.33370;
  unsigned int D.33371;
  struct MonoBasicBlock * * D.33372;
  unsigned char D.33373;
  unsigned char D.33374;
  unsigned int D.33377;
  unsigned int D.33378;
  int D.33387;
  unsigned int D.33394;
  int D.33403;
  struct GList * D.33406;
  int D.33412;
  unsigned int D.33421;
  int D.33422;
  unsigned int D.33425;
  _Bool D.33428;
  _Bool D.33429;
  _Bool D.33430;
  unsigned char D.33433;
  struct MonoMethodSignature * D.33444;
  struct MonoType * D.33445;
  int D.33446;
  unsigned int i.138;
  unsigned int D.33452;
  struct MonoType * * D.33453;
  struct MonoType * D.33454;
  unsigned int D.33455;
  short unsigned int D.33456;
  struct MonoInst * * D.33457;
  struct MonoInst * D.33458;
  struct MonoClass * D.33459;
  struct MonoInst * * D.33460;
  struct MonoInst * D.33461;
  int D.33462;
  int D.33463;
  struct MonoClass * D.33466;
  struct MonoBasicBlock * * D.33473;
  const guint8 * D.33474;
  int D.33475;
  int num_calls.139;
  int D.33479;
  int D.33483;
  unsigned char D.33491;
  unsigned char D.33492;
  const char * D.33496;
  gchar * D.33497;
  _Bool D.33502;
  long int D.33503;
  long int D.33504;
  unsigned char D.33511;
  const char * D.33516;
  gchar * D.33517;
  int D.27551;
  int iftmp.140;
  int D.27550;
  unsigned char D.33525;
  int D.33526;
  _Bool D.33527;
  _Bool D.33528;
  _Bool D.33529;
  const unsigned char * D.33532;
  unsigned char D.33533;
  int D.33534;
  _Bool D.33535;
  _Bool D.33536;
  const unsigned char * D.33539;
  unsigned char D.33540;
  int D.33541;
  _Bool D.33542;
  _Bool D.33543;
  const unsigned char * D.33546;
  unsigned char D.33547;
  int D.33548;
  int D.33560;
  const char * D.33567;
  gchar * D.33568;
  _Bool D.33575;
  _Bool D.33576;
  _Bool D.33577;
  int D.33580;
  int D.33583;
  int D.33585;
  int iftmp.141;
  _Bool D.33600;
  long int D.33601;
  long int D.33602;
  _Bool D.33605;
  long int D.33606;
  long int D.33607;
  int D.33616;
  struct MonoInst * D.33617;
  int D.33618;
  int D.33619;
  int D.33623;
  struct MonoInst * D.33624;
  int D.33625;
  int D.33626;
  int D.33632;
  struct MonoInst * D.33633;
  int D.33634;
  int D.33635;
  int D.33639;
  struct MonoInst * D.33640;
  int D.33641;
  int D.33642;
  _Bool D.33650;
  long int D.33651;
  long int D.33652;
  short unsigned int D.33671;
  _Bool D.33672;
  _Bool D.33673;
  _Bool D.33674;
  short unsigned int D.33676;
  short unsigned int D.33677;
  _Bool D.33678;
  _Bool D.33679;
  _Bool D.33680;
  struct MonoInst * D.33684;
  unsigned int info_type.142;
  unsigned int D.33686;
  <unnamed type> info_type.143;
  int D.33690;
  int D.33691;
  int D.27568;
  int iftmp.144;
  int D.27567;
  const char[4] * D.33697;
  unsigned char D.33698;
  int D.33699;
  unsigned char D.33700;
  int D.33701;
  _Bool D.33702;
  _Bool D.33703;
  _Bool D.33704;
  const unsigned char * D.33707;
  unsigned char D.33708;
  int D.33709;
  const unsigned char * D.33710;
  unsigned char D.33711;
  int D.33712;
  _Bool D.33713;
  _Bool D.33714;
  const unsigned char * D.33717;
  unsigned char D.33718;
  int D.33719;
  const unsigned char * D.33720;
  unsigned char D.33721;
  int D.33722;
  _Bool D.33723;
  _Bool D.33724;
  const unsigned char * D.33727;
  unsigned char D.33728;
  int D.33729;
  const unsigned char * D.33730;
  unsigned char D.33731;
  int D.33732;
  struct MonoInst * * D.33736;
  unsigned char D.33737;
  int D.33740;
  struct MonoType * D.33741;
  unsigned int D.33742;
  short unsigned int D.33743;
  int D.33744;
  int D.33745;
  struct MonoClass * D.33746;
  unsigned char D.33752;
  unsigned char D.33753;
  short unsigned int D.33758;
  int D.33760;
  int D.27579;
  int iftmp.145;
  int D.27578;
  const char[4] * D.33765;
  unsigned char D.33766;
  int D.33767;
  unsigned char D.33768;
  int D.33769;
  _Bool D.33770;
  _Bool D.33771;
  _Bool D.33772;
  const unsigned char * D.33775;
  unsigned char D.33776;
  int D.33777;
  const unsigned char * D.33778;
  unsigned char D.33779;
  int D.33780;
  _Bool D.33781;
  _Bool D.33782;
  const unsigned char * D.33785;
  unsigned char D.33786;
  int D.33787;
  const unsigned char * D.33788;
  unsigned char D.33789;
  int D.33790;
  _Bool D.33791;
  _Bool D.33792;
  const unsigned char * D.33795;
  unsigned char D.33796;
  int D.33797;
  const unsigned char * D.33798;
  unsigned char D.33799;
  int D.33800;
  unsigned int D.33804;
  short unsigned int D.33805;
  unsigned int D.33806;
  int D.33807;
  int D.27588;
  int iftmp.146;
  int D.27587;
  const char[8] * D.33815;
  unsigned char D.33816;
  int D.33817;
  unsigned char D.33818;
  int D.33819;
  _Bool D.33820;
  _Bool D.33821;
  _Bool D.33822;
  const unsigned char * D.33825;
  unsigned char D.33826;
  int D.33827;
  const unsigned char * D.33828;
  unsigned char D.33829;
  int D.33830;
  _Bool D.33831;
  _Bool D.33832;
  const unsigned char * D.33835;
  unsigned char D.33836;
  int D.33837;
  const unsigned char * D.33838;
  unsigned char D.33839;
  int D.33840;
  _Bool D.33841;
  _Bool D.33842;
  const unsigned char * D.33845;
  unsigned char D.33846;
  int D.33847;
  const unsigned char * D.33848;
  unsigned char D.33849;
  int D.33850;
  struct MonoClass * D.33854;
  unsigned char D.33855;
  unsigned char D.33856;
  struct MonoDebugOptions * D.33864;
  int D.33865;
  struct MonoInst * iftmp.147;
  unsigned int D.33875;
  int call_opcode.148;
  int D.33883;
  int D.33897;
  int D.33898;
  struct MonoMethodSignature * D.33899;
  struct MonoType * * D.33900;
  struct MonoType * D.33901;
  unsigned int D.33902;
  short unsigned int D.33903;
  struct MonoInst * * D.33904;
  struct MonoInst * D.33905;
  struct MonoClass * D.33906;
  struct MonoInst * * D.33907;
  struct MonoInst * D.33908;
  int D.33909;
  int D.33910;
  struct MonoClass * D.33913;
  struct MonoDebugOptions * D.33929;
  int D.33930;
  unsigned int D.33932;
  unsigned int D.33933;
  int D.33934;
  short int D.33940;
  struct MonoMethod * D.33947;
  struct MonoInst * iftmp.149;
  struct MonoDebugOptions * D.33969;
  int D.33970;
  unsigned int D.33972;
  unsigned int D.33973;
  int D.33974;
  int D.33982;
  _Bool D.33985;
  long int D.33986;
  long int D.33987;
  struct MonoInst * * sp.150;
  struct MonoInst * D.33993;
  struct MonoInst * * sp.151;
  int D.33998;
  struct MonoInst * D.33999;
  int D.34000;
  int D.34001;
  int D.34002;
  _Bool D.34009;
  long int D.34010;
  long int D.34011;
  short int D.34020;
  struct MonoMethodSignature * D.34023;
  struct MonoDebugOptions * D.34030;
  int D.34031;
  unsigned char D.34033;
  _Bool D.34034;
  _Bool D.34035;
  _Bool D.34036;
  int D.34039;
  struct MonoDebugOptions * D.34046;
  int D.34047;
  int D.34049;
  struct MonoInst * D.34050;
  int D.34051;
  int D.34052;
  int D.34053;
  unsigned int D.34054;
  unsigned int D.34055;
  struct MonoInst * * D.34056;
  struct MonoInst * D.34057;
  struct MonoType * D.34058;
  unsigned int D.34059;
  short unsigned int D.34060;
  struct MonoClass * D.34061;
  int D.34062;
  short unsigned int D.34063;
  struct MonoClass * D.34066;
  struct MonoInst * D.34071;
  struct MonoInst * D.34076;
  struct MonoMethodSignature * D.34079;
  struct MonoType * D.34080;
  _Bool D.34086;
  long int D.34087;
  long int D.34088;
  struct MonoDebugOptions * D.34097;
  int D.34098;
  unsigned char D.34100;
  _Bool D.34101;
  _Bool D.34102;
  _Bool D.34103;
  int D.34106;
  struct MonoDebugOptions * D.34113;
  int D.34114;
  unsigned int D.34116;
  struct MonoInst * D.34119;
  int D.34122;
  struct MonoInst * D.34123;
  int D.34124;
  int D.34125;
  unsigned int D.34126;
  short unsigned int D.34127;
  struct MonoClass * D.34128;
  int D.34129;
  short unsigned int D.34130;
  struct MonoClass * D.34133;
  int D.34138;
  struct MonoInst * D.34139;
  int D.34140;
  int D.34141;
  int D.34142;
  unsigned char D.34143;
  <unnamed type> D.34144;
  unsigned int D.34145;
  int D.34146;
  int D.34150;
  struct MonoClass * D.34154;
  struct MonoDebugOptions * D.34162;
  int D.34163;
  struct MonoDebugOptions * D.34174;
  int D.34175;
  signed char D.34177;
  sizetype D.34178;
  sizetype D.34179;
  int target.152;
  int D.34181;
  unsigned int D.34182;
  unsigned int D.34183;
  struct MonoBasicBlock * * D.34184;
  struct MonoDebugOptions * D.34194;
  int D.34195;
  unsigned int D.34197;
  unsigned int D.34198;
  int D.34199;
  struct MonoDebugOptions * D.34210;
  int D.34211;
  struct MonoDebugOptions * D.34222;
  int D.34223;
  struct MonoDebugOptions * D.34231;
  int D.34232;
  short unsigned int D.34234;
  short unsigned int D.34235;
  sizetype D.34236;
  sizetype D.34237;
  int D.34238;
  struct MonoInst * D.34239;
  int D.34240;
  int D.34241;
  unsigned char D.34242;
  struct MonoDebugOptions * D.34249;
  int D.34250;
  void * D.34252;
  struct MonoDebugOptions * D.34262;
  int D.34263;
  unsigned int D.34265;
  unsigned int D.34266;
  int D.34267;
  struct MonoBasicBlock * * D.34270;
  struct MonoBasicBlock * * D.34273;
  struct MonoDebugOptions * D.34284;
  int D.34285;
  unsigned int D.34287;
  unsigned int D.34288;
  int D.34289;
  struct MonoDebugOptions * D.34300;
  int D.34301;
  struct MonoDebugOptions * D.34315;
  int D.34316;
  sizetype D.34318;
  struct MonoDebugOptions * D.34328;
  int D.34329;
  unsigned int D.34331;
  unsigned int D.34332;
  int D.34333;
  struct MonoDebugOptions * D.34344;
  int D.34345;
  unsigned char D.34350;
  _Bool D.34351;
  unsigned char D.34352;
  _Bool D.34353;
  _Bool D.34354;
  _Bool D.34355;
  guint32 iftmp.153;
  unsigned char * D.34360;
  struct MonoDebugOptions * D.34367;
  int D.34368;
  struct MonoDebugOptions * D.34376;
  int D.34377;
  struct MonoInst * * D.34379;
  struct MonoInst * D.34380;
  unsigned char D.34381;
  _Bool D.34382;
  _Bool D.34383;
  _Bool D.34384;
  struct MonoDebugOptions * D.34391;
  int D.34392;
  sizetype iftmp.154;
  sizetype D.34398;
  struct MonoDebugOptions * D.34408;
  int D.34409;
  unsigned int D.34411;
  unsigned int D.34412;
  int D.34413;
  struct MonoDebugOptions * D.34425;
  int D.34426;
  unsigned int D.34428;
  unsigned int D.34429;
  int D.34430;
  struct MonoDebugOptions * D.34441;
  int D.34442;
  int D.34444;
  struct MonoInst * D.34445;
  int D.34446;
  int D.34447;
  unsigned char D.34448;
  struct MonoDebugOptions * D.34455;
  int D.34456;
  short unsigned int D.34458;
  unsigned int D.34461;
  int D.34462;
  guint16 iftmp.155;
  void * D.34476;
  struct MonoDebugOptions * D.34486;
  int D.34487;
  unsigned int D.34489;
  unsigned int D.34490;
  int D.34491;
  struct MonoDebugOptions * D.34503;
  int D.34504;
  unsigned int D.34506;
  unsigned int D.34507;
  int D.34508;
  struct MonoDebugOptions * D.34517;
  int D.34518;
  struct MonoDebugOptions * D.34526;
  int D.34527;
  int D.34529;
  struct MonoInst * D.34530;
  int D.34531;
  int D.34532;
  unsigned char D.34533;
  struct MonoDebugOptions * D.34540;
  int D.34541;
  void * D.34543;
  struct MonoDebugOptions * D.34553;
  int D.34554;
  unsigned int D.34556;
  unsigned int D.34557;
  int D.34558;
  struct MonoDebugOptions * D.34573;
  int D.34574;
  unsigned int D.34576;
  unsigned int D.34577;
  int D.34578;
  struct MonoDebugOptions * D.34589;
  int D.34590;
  unsigned int D.34598;
  unsigned int D.34599;
  unsigned int D.34600;
  unsigned int D.34601;
  struct MonoDebugOptions * D.34608;
  int D.34609;
  struct MonoDebugOptions * D.34617;
  int D.34618;
  unsigned char D.34620;
  _Bool D.34621;
  _Bool D.34622;
  _Bool D.34623;
  struct MonoDebugOptions * D.34630;
  int D.34631;
  unsigned char * D.34633;
  struct MonoDebugOptions * D.34640;
  int D.34641;
  struct MonoDebugOptions * D.34652;
  int D.34653;
  unsigned int D.34655;
  unsigned int D.34656;
  int D.34657;
  unsigned char * D.34658;
  int D.34661;
  int D.34662;
  unsigned int D.34663;
  unsigned int D.34664;
  struct MonoBasicBlock * * D.34665;
  unsigned int D.34666;
  unsigned int D.34667;
  unsigned char * D.34668;
  int D.34669;
  int D.34670;
  unsigned int D.34671;
  unsigned int D.34672;
  struct MonoBasicBlock * * D.34673;
  const unsigned char * D.34679;
  struct MonoDebugOptions * D.34684;
  int D.34685;
  unsigned int D.34687;
  unsigned int D.34688;
  int D.34689;
  struct MonoBasicBlock * * D.34692;
  struct MonoBasicBlock * D.34693;
  unsigned int D.34694;
  unsigned int D.34695;
  struct MonoDebugOptions * D.34704;
  int D.34705;
  int D.34707;
  struct MonoInst * D.34708;
  int D.34709;
  int D.34710;
  int D.34711;
  int D.34715;
  struct MonoInst * D.34716;
  int D.34717;
  int D.34718;
  unsigned int D.34721;
  unsigned int D.34722;
  int D.34723;
  unsigned char * D.34727;
  int D.34730;
  int D.34731;
  unsigned int D.34732;
  unsigned int D.34733;
  struct MonoBasicBlock * * D.34734;
  short unsigned int D.34739;
  short unsigned int D.34740;
  _Bool D.34741;
  short unsigned int D.34742;
  _Bool D.34743;
  _Bool D.34744;
  short unsigned int D.34746;
  short unsigned int D.34747;
  struct MonoBasicBlock * * D.34748;
  struct MonoBasicBlock * * D.34749;
  struct MonoBasicBlock * D.34750;
  short unsigned int D.34755;
  _Bool D.34756;
  _Bool D.34757;
  _Bool D.34758;
  short unsigned int D.34760;
  short unsigned int D.34761;
  _Bool D.34762;
  short unsigned int D.34763;
  _Bool D.34764;
  _Bool D.34765;
  void * D.34768;
  struct MonoBasicBlock * * D.34769;
  struct MonoBasicBlock * * D.34770;
  unsigned char D.34774;
  unsigned int D.34777;
  unsigned int D.34778;
  int D.34779;
  short unsigned int D.34786;
  short unsigned int D.34787;
  _Bool D.34788;
  short unsigned int D.34789;
  _Bool D.34790;
  _Bool D.34791;
  short unsigned int D.34797;
  _Bool D.34798;
  _Bool D.34799;
  _Bool D.34800;
  short unsigned int D.34802;
  short unsigned int D.34803;
  _Bool D.34804;
  short unsigned int D.34805;
  _Bool D.34806;
  _Bool D.34807;
  struct MonoClass * n.156;
  int D.34821;
  struct MonoInst * D.34822;
  int D.34823;
  int D.34824;
  int D.34829;
  struct MonoInst * D.34830;
  int D.34831;
  int D.34832;
  int D.34838;
  struct MonoInst * D.34839;
  guint16 iftmp.157;
  int D.34844;
  int D.34845;
  int D.34848;
  struct MonoInst * D.34849;
  int D.34850;
  int D.34851;
  int D.34852;
  unsigned int D.34854;
  int D.34855;
  int D.34863;
  struct MonoInst * D.34864;
  int D.34865;
  int D.34866;
  int D.34870;
  struct MonoInst * D.34871;
  int D.34872;
  int D.34873;
  int D.34877;
  struct MonoInst * D.34878;
  int D.34879;
  int D.34880;
  struct MonoDebugOptions * D.34890;
  int D.34891;
  unsigned int D.34893;
  unsigned int D.34894;
  unsigned int D.34895;
  unsigned int D.34896;
  int D.34897;
  short unsigned int D.34898;
  int D.34899;
  char D.34900;
  unsigned char D.34901;
  unsigned char D.34902;
  unsigned char D.34903;
  struct MonoInst * * sp.158;
  int D.34908;
  int D.34909;
  struct MonoDebugOptions * D.34918;
  int D.34919;
  int D.34921;
  short unsigned int D.34922;
  short unsigned int D.34936;
  void * D.34938;
  struct MonoDebugOptions * D.34945;
  int D.34946;
  struct MonoDebugOptions * D.34954;
  int D.34955;
  unsigned int D.34957;
  int D.34958;
  int D.34961;
  long long int D.34962;
  int D.34963;
  int D.34966;
  short unsigned int D.34969;
  void * D.34970;
  struct MonoInst * * sp.159;
  struct MonoInst * D.34975;
  struct MonoDebugOptions * D.34982;
  int D.34983;
  struct MonoDebugOptions * D.34991;
  int D.34992;
  unsigned int D.34994;
  int D.34995;
  short unsigned int D.34996;
  gint64 iftmp.160;
  int D.35003;
  short unsigned int D.35008;
  int D.35011;
  struct MonoInst * D.35013;
  struct MonoInst * * sp.161;
  struct MonoInst * D.35020;
  struct MonoDebugOptions * D.35027;
  int D.35028;
  unsigned char D.35032;
  _Bool D.35033;
  _Bool D.35034;
  _Bool D.35035;
  short unsigned int D.35037;
  int iftmp.162;
  unsigned int D.35046;
  int D.35047;
  struct MonoDebugOptions * D.35054;
  int D.35055;
  unsigned int D.35057;
  int D.35058;
  struct MonoInst * * sp.163;
  struct MonoInst * D.35063;
  struct MonoDebugOptions * D.35070;
  int D.35071;
  unsigned char D.35073;
  struct MonoDebugOptions * D.35082;
  int D.35083;
  unsigned int D.35085;
  int D.35086;
  struct MonoInst * * sp.164;
  struct MonoInst * D.35091;
  struct MonoDebugOptions * D.35098;
  int D.35099;
  unsigned int D.35101;
  int D.35102;
  struct MonoInst * * sp.165;
  struct MonoInst * D.35107;
  struct MonoDebugOptions * D.35115;
  int D.35116;
  unsigned int D.35118;
  int D.35119;
  struct MonoInst * * sp.166;
  struct MonoInst * D.35124;
  struct MonoDebugOptions * D.35131;
  int D.35132;
  struct MonoDebugOptions * D.35142;
  int D.35143;
  unsigned int D.35145;
  int D.35146;
  struct MonoInst * * sp.167;
  struct MonoInst * D.35151;
  struct MonoDebugOptions * D.35158;
  int D.35159;
  unsigned int D.35161;
  int D.35162;
  struct MonoInst * * sp.168;
  struct MonoInst * D.35167;
  struct MonoDebugOptions * D.35175;
  int D.35176;
  unsigned int D.35178;
  int D.35179;
  struct MonoInst * * sp.169;
  struct MonoInst * D.35184;
  struct MonoDebugOptions * D.35191;
  int D.35192;
  struct MonoDebugOptions * D.35200;
  int D.35201;
  unsigned int D.35203;
  int D.35204;
  struct MonoInst * * sp.170;
  struct MonoInst * D.35209;
  struct MonoDebugOptions * D.35217;
  int D.35218;
  struct MonoDebugOptions * D.35226;
  int D.35227;
  unsigned int D.35229;
  int D.35230;
  struct MonoInst * * sp.171;
  struct MonoInst * D.35235;
  const char * D.35238;
  gchar * D.35239;
  struct MonoDebugOptions * D.35248;
  int D.35249;
  struct MonoDebugOptions * D.35257;
  int D.35258;
  struct MonoClass * klass.172;
  struct MonoClass * klass.173;
  unsigned char D.35265;
  struct MonoDebugOptions * D.35266;
  int D.35267;
  int D.35269;
  unsigned int D.35272;
  int D.35273;
  struct MonoInst * D.35274;
  int D.35275;
  int D.35276;
  unsigned char D.35277;
  unsigned char D.35278;
  int D.35282;
  struct MonoInst * D.35283;
  int D.35284;
  int D.35285;
  unsigned char D.35286;
  unsigned char D.35287;
  struct MonoDebugOptions * D.35302;
  int D.35303;
  struct MonoDebugOptions * D.35311;
  int D.35312;
  struct MonoClass * klass.174;
  struct MonoDebugOptions * D.35318;
  int D.35319;
  int D.35321;
  unsigned char * D.35322;
  unsigned char D.35323;
  int D.35326;
  unsigned int loc_index.175;
  struct MonoDebugOptions * D.35336;
  int D.35337;
  struct MonoType * D.35339;
  unsigned int D.35340;
  short unsigned int D.35341;
  unsigned int D.35342;
  int D.35343;
  unsigned int D.35347;
  struct MonoInst * * D.35348;
  struct MonoInst * D.35349;
  int D.35350;
  sizetype stloc_len.176;
  int D.35354;
  const guint32 * D.35357;
  unsigned int D.35358;
  int D.35361;
  struct MonoDebugOptions * D.35370;
  int D.35371;
  unsigned int D.35373;
  short unsigned int D.35374;
  unsigned int D.35375;
  int D.35376;
  struct MonoInst * * sp.177;
  struct MonoDebugOptions * D.35387;
  int D.35388;
  struct MonoDebugOptions * D.35396;
  int D.35397;
  unsigned int n.178;
  void * D.35402;
  unsigned int D.35403;
  int D.35404;
  void * D.35411;
  struct MonoInst * D.35412;
  int D.35413;
  struct MonoInst * D.35414;
  int D.35415;
  int D.35416;
  void * D.35417;
  unsigned int D.35418;
  int D.35419;
  struct MonoInst * D.35423;
  void * n.179;
  struct GList * D.35430;
  struct GList * D.35431;
  void * D.35436;
  struct MonoInst * D.35437;
  int D.35438;
  struct MonoInst * D.35439;
  int D.35440;
  int D.35441;
  int D.35442;
  unsigned int D.35443;
  unsigned int D.35444;
  struct MonoInst * * D.35445;
  struct MonoInst * D.35446;
  struct MonoType * D.35447;
  unsigned int D.35448;
  short unsigned int D.35449;
  struct MonoClass * D.35450;
  int D.35451;
  unsigned char D.35452;
  <unnamed type> D.35453;
  unsigned int D.35454;
  int D.35455;
  short unsigned int D.35456;
  struct MonoClass * D.35459;
  void * D.35460;
  unsigned int D.35461;
  int D.35462;
  void * D.35466;
  struct MonoInst * D.35467;
  int D.35468;
  struct MonoInst * D.35469;
  guint16 iftmp.180;
  int D.35474;
  int D.35475;
  int D.35478;
  struct MonoInst * D.35479;
  int D.35480;
  int D.35481;
  int D.35482;
  unsigned int D.35484;
  int D.35485;
  void * D.35489;
  struct MonoInst * D.35490;
  int D.35491;
  struct MonoInst * D.35492;
  int D.35493;
  int D.35494;
  int D.35495;
  unsigned int D.35496;
  int D.35497;
  struct MonoInst * D.35501;
  unsigned int n.181;
  unsigned int D.35503;
  unsigned char D.35505;
  unsigned char D.35506;
  void * D.35511;
  struct MonoInst * D.35512;
  int D.35513;
  struct MonoInst * D.35514;
  int D.35515;
  int D.35516;
  unsigned int D.35517;
  int D.35518;
  struct MonoInst * D.35522;
  void * D.35524;
  guint16 iftmp.182;
  int D.35531;
  struct MonoInst * D.35532;
  int D.35533;
  int D.35534;
  int D.35535;
  unsigned int D.35537;
  int D.35538;
  void * D.35542;
  struct MonoInst * D.35543;
  int D.35544;
  struct MonoInst * D.35545;
  int D.35546;
  int D.35547;
  unsigned int D.35548;
  int D.35549;
  struct MonoInst * D.35553;
  int D.35557;
  struct MonoInst * D.35558;
  int D.35559;
  int D.35560;
  struct MonoJumpInfoToken * D.35561;
  int D.35562;
  struct MonoClass * D.35563;
  unsigned int D.35564;
  int D.35565;
  unsigned int D.35570;
  int D.35571;
  struct MonoString * D.35572;
  void * D.35573;
  struct MonoDebugOptions * D.35585;
  int D.35586;
  struct MonoLoaderError * D.35591;
  struct MonoDebugOptions * D.35592;
  int D.35593;
  struct MonoDebugOptions * D.35597;
  int D.35598;
  int D.35600;
  struct MonoDebugOptions * D.35603;
  int D.35604;
  <unnamed type> D.35608;
  int D.35611;
  <unnamed type> D.35622;
  int D.35633;
  int D.35636;
  struct MonoDebugOptions * D.35642;
  int D.35643;
  int D.35647;
  int D.35650;
  struct MonoGenericContext * D.35656;
  struct MonoGenericInst * D.35657;
  struct MonoDebugOptions * D.35662;
  int D.35663;
  struct MonoDebugOptions * D.35671;
  int D.35672;
  int D.35674;
  struct MonoInst * D.35675;
  guint16 iftmp.183;
  int D.35680;
  int D.35681;
  int D.35684;
  struct MonoInst * D.35685;
  int D.35686;
  int D.35687;
  struct MonoInst * iftmp.184;
  int D.35692;
  void * iftmp.185;
  unsigned int D.35698;
  int D.35699;
  short unsigned int D.35703;
  struct MonoDebugOptions * D.35710;
  int D.35711;
  int D.35720;
  struct MonoType * D.35726;
  short unsigned int D.35727;
  short unsigned int D.35728;
  struct MonoType * D.35730;
  short unsigned int D.35731;
  short unsigned int D.35732;
  _Bool D.35733;
  long int D.35734;
  long int D.35735;
  void * D.35738;
  struct MonoInst * D.35739;
  int D.35740;
  struct MonoInst * D.35741;
  int D.35742;
  int D.35743;
  unsigned int D.35744;
  int D.35745;
  unsigned int D.35746;
  int D.35747;
  struct MonoInst * * sp.186;
  struct MonoInst * D.35752;
  struct MonoInst * * sp.187;
  struct MonoInst * D.35754;
  struct MonoInst * D.35755;
  struct MonoInst * * sp.188;
  struct MonoInst * D.35757;
  int n.189;
  int D.35759;
  struct MonoDebugOptions * D.35766;
  int D.35767;
  int D.35769;
  struct MonoInst * D.35774;
  int D.35787;
  long int D.35791;
  long int D.35792;
  void * D.35797;
  unsigned int D.35798;
  int D.35799;
  struct MonoType * D.35806;
  struct MonoInst * D.35807;
  struct MonoInst * D.35808;
  int D.35809;
  void * D.35810;
  int D.35811;
  unsigned int D.35812;
  unsigned int D.35813;
  struct MonoInst * * D.35814;
  struct MonoInst * D.35815;
  unsigned char D.35816;
  unsigned char D.35817;
  struct MonoClass * D.35818;
  unsigned int D.35819;
  int D.35820;
  struct MonoType * D.35823;
  int D.35824;
  _Bool iftmp.190;
  int D.35828;
  unsigned char D.35831;
  _Bool D.35832;
  _Bool D.35833;
  _Bool D.35834;
  int D.35835;
  unsigned char D.35837;
  struct MonoInst * iftmp.191;
  int D.35841;
  int D.35842;
  unsigned int D.35843;
  sizetype D.35846;
  sizetype D.35847;
  sizetype D.35848;
  struct MonoInst * * D.35849;
  struct MonoInst * iftmp.192;
  int D.35852;
  unsigned int D.35853;
  sizetype D.35856;
  sizetype D.35857;
  struct MonoInst * * D.35858;
  _Bool D.35860;
  long int D.35861;
  long int D.35862;
  _Bool D.35865;
  long int D.35866;
  long int D.35867;
  unsigned char D.35870;
  unsigned char D.35871;
  unsigned char D.35872;
  unsigned char D.35873;
  struct MonoDebugOptions * D.35886;
  int D.35887;
  int D.35889;
  struct GSList * D.35892;
  struct MonoMethodSignature * helper_sig_class_init_trampoline.193;
  const char * D.35898;
  const char * D.35899;
  int D.35903;
  struct MonoInst * D.35904;
  int D.35905;
  int D.35906;
  int D.35907;
  struct MonoType * D.35918;
  int D.35919;
  _Bool D.35926;
  _Bool D.35928;
  _Bool D.35929;
  _Bool D.35930;
  int D.35932;
  struct MonoClass * D.35934;
  int D.35935;
  struct GList * D.35937;
  int D.35941;
  int D.35951;
  const char * D.35956;
  gchar * D.35957;
  int D.35963;
  int D.35969;
  int D.35971;
  unsigned int D.35980;
  short unsigned int D.35981;
  unsigned int D.35982;
  int D.35983;
  struct MonoClass * D.35986;
  struct MonoClass * D.35990;
  struct MonoType * D.35991;
  struct MonoInst * * sp.194;
  struct MonoInst * * sp.195;
  struct MonoDebugOptions * D.36001;
  int D.36002;
  struct MonoDebugOptions * D.36010;
  int D.36011;
  struct MonoClass * klass.196;
  struct MonoDebugOptions * D.36017;
  int D.36018;
  struct MonoDebugOptions * D.36026;
  int D.36027;
  int D.36032;
  void * D.36034;
  struct MonoInst * D.36035;
  int D.36036;
  struct MonoInst * D.36037;
  guint16 iftmp.197;
  int D.36042;
  int D.36043;
  int D.36046;
  struct MonoInst * D.36047;
  int D.36048;
  int D.36049;
  int D.36050;
  unsigned int D.36052;
  int D.36053;
  void * D.36059;
  struct MonoInst * D.36060;
  int D.36061;
  struct MonoInst * D.36062;
  guint16 iftmp.198;
  int D.36067;
  int D.36068;
  int D.36071;
  struct MonoInst * D.36072;
  int D.36073;
  int D.36074;
  int D.36075;
  unsigned int D.36077;
  int D.36078;
  void * D.36083;
  void * D.36084;
  unsigned int D.36085;
  int D.36086;
  struct MonoInst * * sp.199;
  struct MonoInst * D.36091;
  unsigned char D.36096;
  unsigned char D.36097;
  unsigned int D.36099;
  unsigned int D.36100;
  struct MonoMethodSignature * D.36101;
  _Bool D.36103;
  long int D.36104;
  long int D.36105;
  struct MonoInst * * sp.200;
  struct MonoInst * D.36109;
  struct MonoInst * * sp.201;
  struct MonoDebugOptions * D.36118;
  int D.36119;
  struct MonoDebugOptions * D.36127;
  int D.36128;
  struct MonoClass * klass.202;
  struct MonoDebugOptions * D.36134;
  int D.36135;
  struct MonoDebugOptions * D.36143;
  int D.36144;
  int D.36149;
  void * D.36151;
  struct MonoInst * D.36152;
  int D.36153;
  struct MonoInst * D.36154;
  guint16 iftmp.203;
  int D.36159;
  int D.36160;
  int D.36163;
  struct MonoInst * D.36164;
  int D.36165;
  int D.36166;
  int D.36167;
  unsigned int D.36169;
  int D.36170;
  void * D.36176;
  struct MonoInst * D.36177;
  int D.36178;
  struct MonoInst * D.36179;
  guint16 iftmp.204;
  int D.36184;
  int D.36185;
  int D.36188;
  struct MonoInst * D.36189;
  int D.36190;
  int D.36191;
  int D.36192;
  unsigned int D.36194;
  int D.36195;
  void * D.36200;
  void * D.36201;
  unsigned int D.36202;
  int D.36203;
  struct MonoInst * * sp.205;
  struct MonoInst * D.36208;
  struct MonoMethodSignature * D.36214;
  _Bool D.36216;
  long int D.36217;
  long int D.36218;
  struct MonoInst * * sp.206;
  struct MonoInst * D.36222;
  struct MonoInst * * sp.207;
  struct MonoDebugOptions * D.36231;
  int D.36232;
  struct MonoDebugOptions * D.36240;
  int D.36241;
  struct MonoClass * klass.208;
  struct MonoDebugOptions * D.36247;
  int D.36248;
  int D.36250;
  struct MonoInst * D.36253;
  int D.36254;
  int D.36260;
  void * D.36262;
  struct MonoInst * D.36263;
  int D.36264;
  struct MonoInst * D.36265;
  guint16 iftmp.209;
  int D.36270;
  int D.36271;
  int D.36274;
  struct MonoInst * D.36275;
  int D.36276;
  int D.36277;
  int D.36278;
  unsigned int D.36280;
  int D.36281;
  void * D.36287;
  struct MonoInst * D.36288;
  int D.36289;
  struct MonoInst * D.36290;
  guint16 iftmp.210;
  int D.36295;
  int D.36296;
  int D.36299;
  struct MonoInst * D.36300;
  int D.36301;
  int D.36302;
  int D.36303;
  unsigned int D.36305;
  int D.36306;
  void * D.36311;
  void * D.36312;
  unsigned int D.36313;
  int D.36314;
  struct MonoInst * * sp.211;
  struct MonoInst * D.36319;
  struct MonoMethodSignature * D.36325;
  _Bool D.36327;
  long int D.36328;
  long int D.36329;
  struct MonoInst * * sp.212;
  struct MonoInst * D.36333;
  struct MonoInst * * sp.213;
  int D.36336;
  struct MonoInst * * sp.214;
  unsigned int D.36340;
  short unsigned int D.36341;
  unsigned int D.36342;
  int D.36343;
  struct MonoInst * * sp.215;
  struct MonoDebugOptions * D.36354;
  int D.36355;
  struct MonoDebugOptions * D.36363;
  int D.36364;
  struct MonoClass * klass.216;
  struct MonoDebugOptions * D.36370;
  int D.36371;
  int D.36373;
  struct MonoInst * * sp.217;
  struct MonoClass * D.36377;
  struct MonoDebugOptions * D.36384;
  int D.36385;
  int D.36387;
  struct MonoDebugOptions * D.36394;
  int D.36395;
  int D.36399;
  int D.36404;
  unsigned char D.36407;
  _Bool D.36408;
  _Bool D.36409;
  _Bool D.36410;
  unsigned char D.36413;
  _Bool D.36414;
  _Bool D.36415;
  _Bool D.36416;
  char * D.36419;
  struct MonoDebugOptions * D.36426;
  int D.36427;
  struct MonoDebugOptions * D.36435;
  int D.36436;
  struct MonoDebugOptions * D.36447;
  int D.36448;
  unsigned int D.36450;
  unsigned int D.36451;
  int D.36452;
  unsigned char * D.36453;
  int D.36456;
  int D.36457;
  unsigned int D.36458;
  unsigned int D.36459;
  struct MonoBasicBlock * * D.36460;
  struct MonoDebugOptions * D.36470;
  int D.36471;
  unsigned int D.36473;
  unsigned int D.36474;
  int D.36475;
  unsigned char * D.36476;
  int D.36479;
  int D.36480;
  unsigned int D.36481;
  unsigned int D.36482;
  struct MonoBasicBlock * * D.36483;
  struct MonoDebugOptions * D.36492;
  int D.36493;
  unsigned int D.36497;
  int D.36498;
  struct MonoInst * D.36499;
  int D.36500;
  int D.36501;
  int D.36505;
  struct MonoInst * D.36506;
  int D.36507;
  int D.36508;
  _Bool D.36509;
  int D.36510;
  int D.36514;
  struct MonoInst * D.36515;
  int D.36516;
  int D.36517;
  void * D.36518;
  struct MonoBasicBlock * * D.36519;
  struct MonoBasicBlock * * D.36520;
  struct MonoBasicBlock * iftmp.218;
  struct MonoInst * * sp.219;
  struct MonoInst * D.36533;
  struct MonoDebugOptions * D.36541;
  int D.36542;
  struct MonoDebugOptions * D.36550;
  int D.36551;
  struct MonoClass * klass.220;
  struct MonoDebugOptions * D.36557;
  int D.36558;
  int D.36560;
  void * iftmp.221;
  int D.36564;
  unsigned int D.36565;
  unsigned int D.36568;
  unsigned int D.36569;
  struct MonoInst * * D.36570;
  struct MonoInst * iftmp.222;
  struct MonoInst * iftmp.223;
  unsigned char D.36580;
  unsigned char D.36581;
  struct MonoInst * iftmp.224;
  struct MonoClass * D.36586;
  unsigned int D.36587;
  int D.36588;
  struct MonoInst * iftmp.225;
  struct MonoType * D.36595;
  int D.36596;
  _Bool iftmp.226;
  int D.36600;
  struct MonoInst * iftmp.227;
  unsigned char D.36607;
  _Bool D.36608;
  _Bool D.36609;
  _Bool D.36610;
  int D.36611;
  struct MonoInst * iftmp.228;
  unsigned char D.36617;
  struct MonoInst * iftmp.229;
  struct MonoInst * iftmp.230;
  int D.36625;
  int D.36626;
  unsigned int D.36627;
  struct MonoInst * iftmp.231;
  int D.36634;
  sizetype D.36635;
  sizetype D.36636;
  sizetype D.36637;
  struct MonoInst * * D.36638;
  struct MonoInst * iftmp.232;
  struct MonoInst * iftmp.233;
  int D.36645;
  int D.36646;
  unsigned int D.36647;
  struct MonoInst * iftmp.234;
  int D.36654;
  sizetype D.36655;
  sizetype D.36656;
  sizetype D.36657;
  struct MonoInst * * D.36658;
  _Bool D.36660;
  long int D.36661;
  long int D.36662;
  _Bool D.36665;
  long int D.36666;
  long int D.36667;
  unsigned char D.36670;
  unsigned char D.36671;
  unsigned char D.36672;
  unsigned char D.36673;
  struct MonoInst * * sp.235;
  struct MonoInst * * sp.236;
  unsigned int op.237;
  unsigned int D.36681;
  _Bool D.36682;
  struct MonoDebugOptions * D.36693;
  int D.36694;
  struct MonoDebugOptions * D.36703;
  int D.36704;
  unsigned char D.36706;
  unsigned char D.36707;
  _Bool D.36708;
  _Bool D.36709;
  _Bool D.36710;
  struct MonoDebugOptions * D.36717;
  int D.36718;
  struct MonoDebugOptions * D.36728;
  int D.36729;
  struct MonoDebugOptions * D.36740;
  int D.36741;
  struct MonoDebugOptions * D.36749;
  int D.36750;
  struct MonoClass * klass.238;
  struct MonoDebugOptions * D.36758;
  int D.36759;
  int D.36765;
  gchar * D.36768;
  int D.36773;
  struct MonoDebugOptions * D.36780;
  int D.36781;
  <unnamed type> D.36785;
  struct MonoType * D.36790;
  short unsigned int D.36791;
  int D.36792;
  int D.36793;
  unsigned int iftmp.239;
  unsigned char D.36797;
  unsigned char D.36798;
  int D.36801;
  unsigned int D.36802;
  int D.36806;
  struct MonoDebugOptions * D.36813;
  int D.36814;
  struct MonoMethodSignature * D.36821;
  unsigned char D.36822;
  unsigned char D.36823;
  int D.36826;
  unsigned char D.36827;
  struct MonoClass * D.36829;
  const char * D.36832;
  gchar * D.36833;
  void * D.36836;
  struct MonoInst * D.36837;
  int D.36838;
  struct MonoInst * D.36839;
  guint16 iftmp.240;
  int D.36844;
  int D.36845;
  int D.36848;
  struct MonoInst * D.36849;
  int D.36850;
  int D.36851;
  int D.36852;
  unsigned int D.36854;
  int D.36855;
  void * D.36859;
  struct MonoInst * D.36860;
  int D.36861;
  struct MonoInst * D.36862;
  guint16 iftmp.241;
  int D.36867;
  int D.36868;
  int D.36871;
  struct MonoInst * D.36872;
  int D.36873;
  int D.36874;
  int D.36875;
  unsigned int D.36877;
  int D.36878;
  void * D.36882;
  struct MonoInst * D.36883;
  int D.36884;
  struct MonoInst * D.36885;
  int D.36886;
  int D.36887;
  mgreg_t iftmp.242;
  unsigned int D.36891;
  unsigned int D.36893;
  int D.36894;
  struct MonoMethodSignature * D.36902;
  _Bool D.36904;
  long int D.36905;
  long int D.36906;
  int D.36911;
  struct MonoInst * D.36912;
  int D.36913;
  int D.36914;
  int D.36918;
  struct MonoInst * D.36919;
  int D.36920;
  int D.36921;
  int D.36926;
  unsigned int D.36929;
  int D.36930;
  int D.36934;
  struct MonoInst * D.36935;
  unsigned int D.36936;
  short unsigned int D.36937;
  int D.36938;
  int D.36939;
  struct MonoClass * D.36940;
  unsigned int D.36945;
  short unsigned int D.36946;
  int foffset.243;
  struct MonoClass * D.36948;
  unsigned char D.36954;
  unsigned char D.36955;
  unsigned int D.36960;
  unsigned int D.36964;
  int D.36965;
  struct MonoInst * D.36966;
  int D.36967;
  int D.36968;
  unsigned char D.36972;
  struct MonoMethodSignature * D.36979;
  unsigned char D.36980;
  unsigned char D.36981;
  struct MonoMethod * iftmp.244;
  const char * D.36991;
  gchar * D.36992;
  void * D.36995;
  struct MonoInst * D.36996;
  int D.36997;
  struct MonoInst * D.36998;
  guint16 iftmp.245;
  int D.37003;
  int D.37004;
  int D.37007;
  struct MonoInst * D.37008;
  int D.37009;
  int D.37010;
  int D.37011;
  unsigned int D.37013;
  int D.37014;
  void * D.37018;
  struct MonoInst * D.37019;
  int D.37020;
  struct MonoInst * D.37021;
  guint16 iftmp.246;
  int D.37026;
  int D.37027;
  int D.37030;
  struct MonoInst * D.37031;
  int D.37032;
  int D.37033;
  int D.37034;
  unsigned int D.37036;
  int D.37037;
  void * D.37041;
  struct MonoInst * D.37042;
  int D.37043;
  struct MonoInst * D.37044;
  int D.37045;
  int D.37046;
  mgreg_t iftmp.247;
  unsigned int D.37051;
  int D.37052;
  struct MonoMethodSignature * D.37060;
  struct MonoInst * * sp.248;
  struct MonoInst * D.37065;
  struct MonoInst * * sp.249;
  struct MonoInst * iftmp.250;
  unsigned int D.37072;
  unsigned int D.37075;
  unsigned int D.37076;
  struct MonoInst * * D.37077;
  struct MonoClass * D.37082;
  _Bool D.37083;
  long int D.37084;
  long int D.37085;
  unsigned char D.37088;
  unsigned char D.37089;
  unsigned int D.37090;
  int D.37091;
  struct MonoType * D.37094;
  int D.37095;
  _Bool iftmp.251;
  int D.37099;
  unsigned char D.37102;
  _Bool D.37103;
  _Bool D.37104;
  _Bool D.37105;
  int D.37106;
  unsigned char D.37108;
  struct MonoInst * iftmp.252;
  int D.37112;
  int D.37113;
  unsigned int D.37114;
  sizetype D.37117;
  sizetype D.37118;
  sizetype D.37119;
  struct MonoInst * * D.37120;
  struct MonoInst * iftmp.253;
  int D.37123;
  unsigned int D.37124;
  sizetype D.37127;
  sizetype D.37128;
  struct MonoInst * * D.37129;
  _Bool D.37131;
  long int D.37132;
  long int D.37133;
  _Bool D.37136;
  long int D.37137;
  long int D.37138;
  unsigned char D.37141;
  unsigned char D.37142;
  unsigned char D.37143;
  unsigned char D.37144;
  int D.37150;
  const char * D.37155;
  gchar * D.37156;
  struct MonoInst * * sp.254;
  struct MonoInst * D.37160;
  int D.37164;
  struct MonoInst * D.37165;
  int D.37166;
  int D.37167;
  int D.37171;
  struct MonoInst * D.37172;
  int D.37173;
  int D.37174;
  unsigned int D.37178;
  int D.37179;
  int D.37182;
  struct MonoClass * D.37190;
  struct MonoInst * * sp.255;
  int D.37195;
  struct MonoInst * D.37196;
  int D.37197;
  int D.37198;
  int D.37202;
  struct MonoInst * D.37203;
  int D.37204;
  int D.37205;
  int D.37210;
  unsigned int D.37213;
  int D.37214;
  int D.37218;
  struct MonoInst * D.37219;
  unsigned int D.37220;
  short unsigned int D.37221;
  int D.37222;
  int D.37223;
  unsigned char D.37224;
  <unnamed type> D.37225;
  unsigned int D.37226;
  int D.37227;
  unsigned int D.37232;
  short unsigned int D.37233;
  unsigned int D.37234;
  int D.37235;
  unsigned char D.37239;
  unsigned char D.37240;
  unsigned char D.37243;
  struct MonoInst * * sp.256;
  short unsigned int D.37247;
  int D.37248;
  int D.37249;
  struct MonoDebugOptions * D.37256;
  int D.37257;
  struct MonoDebugOptions * D.37266;
  int D.37267;
  union mono_mutex_t * D.37269;
  _Bool D.37272;
  long int D.37273;
  long int D.37274;
  struct GHashTable * D.37277;
  _Bool D.37282;
  long int D.37283;
  long int D.37284;
  _Bool D.37287;
  signed int addr.257;
  _Bool D.37289;
  _Bool D.37290;
  const char * D.37302;
  gchar * D.37303;
  unsigned int D.37309;
  int D.37310;
  struct MonoInst * D.37311;
  int D.37312;
  int D.37313;
  int D.37314;
  guint16 iftmp.258;
  int D.37326;
  struct MonoInst * D.37327;
  int D.37328;
  int D.37329;
  int D.37330;
  unsigned int D.37332;
  int D.37333;
  int D.37337;
  struct MonoInst * D.37338;
  int D.37339;
  int D.37340;
  unsigned int D.37344;
  int D.37345;
  struct MonoInst * D.37346;
  int D.37347;
  int D.37348;
  int D.37352;
  struct MonoInst * D.37353;
  int D.37354;
  int D.37355;
  int D.37359;
  struct MonoInst * D.37360;
  int D.37361;
  int D.37362;
  int D.37366;
  struct MonoInst * D.37367;
  int D.37368;
  int D.37369;
  unsigned int D.37373;
  int D.37374;
  struct MonoInst * D.37375;
  int D.37376;
  int D.37377;
  unsigned int D.37381;
  int D.37382;
  struct MonoInst * D.37383;
  int D.37384;
  int D.37385;
  unsigned int D.37389;
  unsigned int addr.259;
  unsigned int D.37395;
  unsigned int D.37396;
  unsigned int D.37397;
  int D.37398;
  struct MonoInst * D.37399;
  int D.37400;
  int D.37401;
  unsigned int idx.260;
  unsigned int D.37403;
  int D.37404;
  unsigned int D.37408;
  int offset.261;
  int D.37410;
  _Bool D.37420;
  _Bool D.37421;
  long int D.37422;
  long int D.37423;
  void * D.37430;
  struct MonoInst * D.37431;
  int D.37432;
  struct MonoInst * D.37433;
  int D.37434;
  int D.37435;
  int D.37436;
  unsigned int D.37437;
  unsigned int D.37438;
  struct MonoInst * * D.37439;
  struct MonoInst * D.37440;
  struct MonoType * D.37441;
  unsigned int D.37442;
  short unsigned int D.37443;
  struct MonoClass * D.37444;
  int D.37445;
  unsigned char D.37446;
  <unnamed type> D.37447;
  unsigned int D.37448;
  int D.37449;
  short unsigned int D.37450;
  struct MonoClass * D.37453;
  void * D.37454;
  unsigned int D.37455;
  int D.37456;
  struct MonoInst * D.37462;
  void * D.37464;
  struct MonoInst * D.37465;
  int D.37466;
  struct MonoInst * D.37467;
  guint16 iftmp.262;
  int D.37472;
  int D.37473;
  int D.37476;
  struct MonoInst * D.37477;
  int D.37478;
  int D.37479;
  int D.37480;
  unsigned int D.37482;
  int D.37483;
  int D.37489;
  int D.37492;
  unsigned int D.37495;
  int D.37496;
  int D.37497;
  unsigned int D.37505;
  void * D.37521;
  struct MonoInst * D.37522;
  int D.37523;
  struct MonoInst * D.37524;
  int D.37525;
  int D.37526;
  int D.37527;
  unsigned int D.37528;
  unsigned int D.37529;
  struct MonoInst * * D.37530;
  struct MonoInst * D.37531;
  struct MonoType * D.37532;
  unsigned int D.37533;
  short unsigned int D.37534;
  struct MonoClass * D.37535;
  int D.37536;
  unsigned char D.37537;
  <unnamed type> D.37538;
  unsigned int D.37539;
  int D.37540;
  short unsigned int D.37541;
  struct MonoClass * D.37544;
  void * D.37545;
  unsigned int D.37546;
  int D.37547;
  void * D.37551;
  struct MonoInst * D.37552;
  int D.37553;
  struct MonoInst * D.37554;
  guint16 iftmp.263;
  int D.37559;
  int D.37560;
  int D.37563;
  struct MonoInst * D.37564;
  int D.37565;
  int D.37566;
  int D.37567;
  unsigned int D.37569;
  int D.37570;
  struct MonoDebugOptions * D.37579;
  int D.37580;
  int D.37584;
  struct GSList * D.37587;
  const char * D.37592;
  const char * D.37593;
  const char * D.37594;
  unsigned char D.37596;
  _Bool D.37599;
  long int D.37600;
  long int D.37601;
  unsigned char D.37604;
  unsigned char D.37605;
  guint16 iftmp.264;
  int D.37624;
  struct MonoInst * D.37625;
  int D.37626;
  int D.37627;
  int D.37628;
  unsigned int D.37630;
  int D.37631;
  void * D.37638;
  sizetype D.37639;
  _Bool D.37640;
  long int D.37641;
  long int D.37642;
  unsigned int D.37645;
  int D.37646;
  void * D.37651;
  struct MonoInst * D.37652;
  int D.37653;
  struct MonoInst * D.37654;
  int D.37655;
  int D.37656;
  int addr.265;
  unsigned int D.37658;
  int D.37659;
  struct MonoClass * D.37665;
  struct MonoInst * * sp.266;
  int D.37670;
  struct MonoInst * D.37671;
  unsigned int D.37672;
  short unsigned int D.37673;
  int D.37674;
  int D.37675;
  int D.37676;
  struct MonoClass * D.37677;
  unsigned char D.37681;
  unsigned char D.37682;
  struct MonoDebugOptions * D.37689;
  int D.37690;
  int D.37694;
  unsigned char D.37701;
  unsigned char D.37702;
  unsigned char D.37703;
  void * D.37706;
  struct MonoClass * D.37709;
  unsigned char D.37710;
  unsigned char D.37711;
  struct MonoType * D.37714;
  unsigned char D.37715;
  const char * D.37718;
  gchar * D.37719;
  void * D.37722;
  unsigned char D.37723;
  int D.37724;
  unsigned int D.37725;
  int D.37726;
  void * D.37730;
  signed char D.37731;
  int D.37732;
  unsigned int D.37733;
  int D.37734;
  void * D.37738;
  short unsigned int D.37739;
  int D.37740;
  unsigned int D.37741;
  int D.37742;
  void * D.37746;
  short int D.37747;
  int D.37748;
  unsigned int D.37749;
  int D.37750;
  void * D.37754;
  int D.37755;
  unsigned int D.37756;
  int D.37757;
  void * D.37761;
  unsigned int D.37762;
  int D.37763;
  unsigned int D.37764;
  int D.37765;
  void * D.37769;
  void * D.37770;
  unsigned int D.37771;
  int D.37772;
  int D.37776;
  void * D.37779;
  unsigned int D.37780;
  int D.37781;
  void * D.37786;
  unsigned int D.37787;
  int D.37788;
  long long int D.37789;
  struct MonoDebugOptions * D.37801;
  int D.37802;
  int D.37804;
  struct MonoInst * D.37805;
  unsigned int D.37806;
  short unsigned int D.37807;
  int D.37808;
  int D.37809;
  unsigned char D.37810;
  <unnamed type> D.37811;
  unsigned int D.37812;
  int D.37813;
  unsigned char D.37817;
  unsigned char D.37818;
  struct MonoInst * * sp.267;
  struct MonoDebugOptions * D.37826;
  int D.37827;
  struct MonoDebugOptions * D.37835;
  int D.37836;
  struct MonoClass * klass.268;
  struct MonoDebugOptions * D.37842;
  int D.37843;
  unsigned int D.37845;
  short unsigned int D.37846;
  struct MonoClass * D.37847;
  int D.37855;
  struct MonoDebugOptions * D.37864;
  int D.37865;
  struct MonoDebugOptions * D.37873;
  int D.37874;
  struct MonoClass * klass.269;
  struct MonoDebugOptions * D.37880;
  int D.37881;
  unsigned int D.37885;
  int D.37886;
  struct MonoInst * D.37890;
  struct MonoInst * D.37893;
  void * D.37904;
  struct MonoInst * D.37905;
  int D.37906;
  struct MonoInst * D.37907;
  int D.37908;
  int D.37909;
  int D.37910;
  unsigned int D.37911;
  unsigned int D.37912;
  struct MonoInst * * D.37913;
  struct MonoInst * D.37914;
  struct MonoType * D.37915;
  unsigned int D.37916;
  short unsigned int D.37917;
  struct MonoClass * D.37918;
  int D.37919;
  unsigned char D.37920;
  <unnamed type> D.37921;
  unsigned int D.37922;
  int D.37923;
  short unsigned int D.37924;
  struct MonoClass * D.37927;
  void * D.37928;
  unsigned int D.37929;
  int D.37930;
  void * D.37934;
  struct MonoInst * D.37935;
  int D.37936;
  struct MonoInst * D.37937;
  guint16 iftmp.270;
  int D.37942;
  int D.37943;
  int D.37946;
  struct MonoInst * D.37947;
  int D.37948;
  int D.37949;
  int D.37950;
  unsigned int D.37952;
  int D.37953;
  unsigned char D.37961;
  struct MonoDebugOptions * D.37962;
  int D.37963;
  unsigned int D.37965;
  int D.37966;
  unsigned int D.37970;
  struct MonoInst * * sp.271;
  const guint8 * D.37976;
  int D.37977;
  short unsigned int D.37980;
  int D.37983;
  unsigned int D.37984;
  unsigned int D.37987;
  void * D.37988;
  struct MonoInst * D.37989;
  int D.37990;
  struct MonoInst * D.37991;
  int D.37992;
  int D.37993;
  void * D.37999;
  struct MonoInst * D.38000;
  int D.38001;
  struct MonoInst * D.38002;
  int D.38003;
  int D.38004;
  int D.38005;
  struct MonoInst * D.38006;
  int D.38007;
  int D.38008;
  unsigned int field_token.272;
  struct MonoJumpInfoToken * D.38010;
  int D.38011;
  unsigned int D.38012;
  int D.38013;
  void * D.38018;
  unsigned int D.38019;
  int D.38020;
  void * D.38024;
  struct MonoInst * D.38025;
  int D.38026;
  struct MonoInst * D.38027;
  int D.38028;
  int D.38029;
  int data_size.273;
  unsigned int D.38031;
  int D.38032;
  struct MonoDebugOptions * D.38042;
  int D.38043;
  struct MonoDebugOptions * D.38051;
  int D.38052;
  unsigned int D.38054;
  int D.38055;
  unsigned char D.38056;
  struct MonoInst * * sp.274;
  struct MonoDebugOptions * D.38067;
  int D.38068;
  struct MonoDebugOptions * D.38076;
  int D.38077;
  struct MonoDebugOptions * D.38085;
  int D.38086;
  unsigned int D.38088;
  struct MonoClass * klass.275;
  struct MonoDebugOptions * D.38093;
  int D.38094;
  unsigned char D.38105;
  struct MonoDebugOptions * D.38106;
  int D.38107;
  struct MonoInst * * sp.276;
  struct MonoDebugOptions * D.38116;
  int D.38117;
  struct MonoDebugOptions * D.38127;
  int D.38128;
  struct MonoClass * klass.277;
  struct MonoDebugOptions * D.38134;
  int D.38135;
  struct MonoClass * klass.278;
  struct MonoDebugOptions * D.38145;
  int D.38146;
  int D.38148;
  unsigned int D.38151;
  short unsigned int D.38152;
  int D.38153;
  unsigned int D.38154;
  int D.38155;
  int D.38162;
  int D.38163;
  unsigned int D.38164;
  unsigned int D.38165;
  unsigned int D.38166;
  unsigned int D.38169;
  int D.38174;
  struct MonoInst * D.38175;
  int D.38176;
  int D.38177;
  int D.38181;
  struct MonoInst * D.38182;
  int D.38183;
  int D.38184;
  unsigned int D.38191;
  int D.38194;
  int D.38199;
  struct MonoInst * D.38200;
  int D.38201;
  int D.38202;
  int D.38206;
  struct MonoInst * D.38207;
  int D.38208;
  int D.38209;
  int D.38214;
  struct MonoInst * D.38215;
  int D.38216;
  int D.38217;
  unsigned char D.38218;
  int D.38223;
  int D.38228;
  struct MonoInst * D.38229;
  int D.38230;
  int D.38231;
  int D.38235;
  struct MonoInst * D.38236;
  int D.38237;
  int D.38238;
  int D.38243;
  struct MonoInst * D.38244;
  int D.38245;
  int D.38246;
  unsigned char D.38247;
  int D.38251;
  struct MonoInst * D.38252;
  int D.38253;
  int D.38254;
  int D.38258;
  struct MonoInst * D.38259;
  int D.38260;
  int D.38261;
  int D.38266;
  struct MonoInst * D.38267;
  int D.38268;
  int D.38269;
  int D.38273;
  struct MonoInst * D.38274;
  int D.38275;
  int D.38276;
  int D.38281;
  struct MonoInst * D.38282;
  int D.38283;
  int D.38284;
  unsigned char D.38285;
  unsigned char D.38286;
  unsigned int D.38290;
  short unsigned int D.38291;
  unsigned int D.38292;
  int D.38293;
  unsigned int D.38298;
  short unsigned int D.38299;
  unsigned int D.38300;
  int D.38301;
  struct MonoInst * * sp.279;
  struct MonoDebugOptions * D.38315;
  int D.38316;
  struct MonoDebugOptions * D.38326;
  int D.38327;
  struct MonoClass * klass.280;
  struct MonoDebugOptions * D.38333;
  int D.38334;
  struct MonoClass * klass.281;
  struct MonoDebugOptions * D.38344;
  int D.38345;
  struct MonoDebugOptions * D.38356;
  int D.38357;
  unsigned int D.38359;
  int D.38360;
  struct MonoInst * * sp.282;
  struct MonoInst * D.38365;
  unsigned int D.38366;
  unsigned int D.38367;
  const char * D.38370;
  gchar * D.38371;
  struct MonoDebugOptions * D.38380;
  int D.38381;
  struct MonoDebugOptions * D.38389;
  int D.38390;
  struct MonoClass * klass.283;
  struct MonoDebugOptions * D.38396;
  int D.38397;
  struct MonoInst * iftmp.284;
  struct MonoClass * D.38405;
  struct MonoType * D.38406;
  int D.38407;
  struct MonoInst * D.38408;
  int D.38409;
  int D.38410;
  unsigned char D.38411;
  unsigned char D.38412;
  struct MonoClass * D.38413;
  unsigned int D.38414;
  int D.38415;
  struct MonoType * D.38418;
  int D.38419;
  _Bool iftmp.285;
  int D.38423;
  unsigned char D.38426;
  _Bool D.38427;
  _Bool D.38428;
  _Bool D.38429;
  int D.38430;
  unsigned char D.38432;
  struct MonoInst * iftmp.286;
  int D.38436;
  int D.38437;
  unsigned int D.38438;
  sizetype D.38441;
  sizetype D.38442;
  sizetype D.38443;
  struct MonoInst * * D.38444;
  struct MonoInst * iftmp.287;
  int D.38447;
  unsigned int D.38448;
  sizetype D.38451;
  sizetype D.38452;
  struct MonoInst * * D.38453;
  _Bool D.38455;
  long int D.38456;
  long int D.38457;
  _Bool D.38460;
  long int D.38461;
  long int D.38462;
  unsigned char D.38465;
  unsigned char D.38466;
  unsigned char D.38467;
  unsigned char D.38468;
  int D.38472;
  struct MonoInst * D.38473;
  int D.38474;
  int D.38475;
  int D.38476;
  int D.38482;
  struct MonoInst * D.38483;
  int D.38484;
  int D.38485;
  int D.38486;
  int D.38490;
  struct MonoInst * D.38491;
  int D.38492;
  int D.38493;
  struct MonoInst * * sp.288;
  const char * D.38504;
  gchar * D.38505;
  struct MonoDebugOptions * D.38514;
  int D.38515;
  struct MonoDebugOptions * D.38523;
  int D.38524;
  struct MonoClass * klass.289;
  struct MonoDebugOptions * D.38530;
  int D.38531;
  int D.38533;
  struct MonoInst * D.38534;
  int D.38535;
  int D.38536;
  int D.38537;
  unsigned int D.38538;
  unsigned int D.38539;
  struct MonoInst * * D.38540;
  struct MonoInst * D.38541;
  unsigned char D.38542;
  unsigned char D.38543;
  struct MonoClass * D.38544;
  unsigned int D.38545;
  int D.38546;
  struct MonoType * D.38549;
  int D.38550;
  _Bool iftmp.290;
  int D.38554;
  unsigned char D.38557;
  _Bool D.38558;
  _Bool D.38559;
  _Bool D.38560;
  int D.38561;
  unsigned char D.38563;
  struct MonoInst * iftmp.291;
  int D.38567;
  int D.38568;
  unsigned int D.38569;
  sizetype D.38572;
  sizetype D.38573;
  sizetype D.38574;
  struct MonoInst * * D.38575;
  struct MonoInst * iftmp.292;
  int D.38578;
  unsigned int D.38579;
  sizetype D.38582;
  sizetype D.38583;
  struct MonoInst * * D.38584;
  _Bool D.38586;
  long int D.38587;
  long int D.38588;
  _Bool D.38591;
  long int D.38592;
  long int D.38593;
  unsigned char D.38596;
  unsigned char D.38597;
  unsigned char D.38598;
  unsigned char D.38599;
  unsigned int D.38605;
  int D.38606;
  struct MonoInst * D.38607;
  int D.38608;
  int D.38609;
  int D.38610;
  int D.38611;
  int D.38615;
  struct MonoInst * D.38616;
  int D.38617;
  int D.38618;
  int D.38622;
  struct MonoInst * D.38623;
  int D.38624;
  int D.38625;
  unsigned int D.38632;
  unsigned int D.38633;
  int D.38634;
  struct MonoInst * D.38635;
  guint16 iftmp.293;
  int D.38640;
  int D.38641;
  int D.38644;
  struct MonoInst * D.38645;
  int D.38646;
  int D.38647;
  int D.38648;
  unsigned int D.38650;
  int D.38651;
  int D.38655;
  struct MonoInst * D.38656;
  int D.38657;
  int D.38658;
  int D.38662;
  struct MonoInst * D.38663;
  int D.38664;
  int D.38665;
  int D.38669;
  struct MonoInst * D.38670;
  int D.38671;
  int D.38672;
  int D.38677;
  struct MonoInst * D.38678;
  int D.38679;
  int D.38680;
  int D.38681;
  int D.38685;
  struct MonoInst * D.38686;
  int D.38687;
  int D.38688;
  int klass.294;
  int D.38693;
  struct MonoInst * D.38694;
  int D.38695;
  int D.38696;
  unsigned int D.38700;
  short unsigned int D.38701;
  unsigned int D.38702;
  int D.38703;
  struct MonoClass * D.38706;
  struct MonoInst * * sp.295;
  struct MonoDebugOptions * D.38717;
  int D.38718;
  struct MonoDebugOptions * D.38726;
  int D.38727;
  unsigned char D.38729;
  _Bool D.38730;
  _Bool D.38731;
  _Bool D.38732;
  int D.38735;
  unsigned int D.38736;
  void * handle_class.296;
  struct MonoClass * D.38738;
  struct MonoClass * handle_class.297;
  struct MonoDebugOptions * D.38745;
  int D.38746;
  int D.38750;
  unsigned int D.38751;
  unsigned int D.38752;
  int D.38758;
  struct MonoClass * D.38762;
  struct MonoClass * D.38764;
  struct MonoClass * D.38767;
  struct MonoClass * D.38769;
  struct MonoType * D.38778;
  void * D.38779;
  struct MonoInst * D.38780;
  int D.38781;
  struct MonoInst * D.38782;
  guint16 iftmp.298;
  int D.38787;
  int D.38788;
  int D.38791;
  struct MonoInst * D.38792;
  int D.38793;
  int D.38794;
  int D.38795;
  unsigned int D.38797;
  int D.38798;
  void * D.38802;
  struct MonoInst * D.38803;
  int D.38804;
  struct MonoInst * D.38805;
  int D.38806;
  int D.38807;
  unsigned int D.38808;
  int D.38809;
  struct MonoInst * D.38815;
  void * D.38817;
  struct MonoInst * D.38818;
  int D.38819;
  struct MonoInst * D.38820;
  int D.38821;
  int D.38822;
  unsigned int D.38823;
  int D.38824;
  int D.38828;
  struct MonoInst * D.38829;
  int D.38830;
  int D.38831;
  int D.38832;
  unsigned int D.38833;
  unsigned int D.38834;
  struct MonoInst * * D.38835;
  struct MonoInst * D.38836;
  unsigned char D.38837;
  unsigned char D.38838;
  struct MonoClass * D.38839;
  unsigned int D.38840;
  int D.38841;
  struct MonoType * D.38844;
  int D.38845;
  _Bool iftmp.299;
  int D.38849;
  unsigned char D.38852;
  _Bool D.38853;
  _Bool D.38854;
  _Bool D.38855;
  int D.38856;
  unsigned char D.38858;
  struct MonoInst * iftmp.300;
  int D.38862;
  int D.38863;
  unsigned int D.38864;
  sizetype D.38867;
  sizetype D.38868;
  sizetype D.38869;
  struct MonoInst * * D.38870;
  struct MonoInst * iftmp.301;
  int D.38873;
  unsigned int D.38874;
  sizetype D.38877;
  sizetype D.38878;
  struct MonoInst * * D.38879;
  _Bool D.38881;
  long int D.38882;
  long int D.38883;
  _Bool D.38886;
  long int D.38887;
  long int D.38888;
  unsigned char D.38891;
  unsigned char D.38892;
  unsigned char D.38893;
  unsigned char D.38894;
  int D.38898;
  struct MonoInst * D.38899;
  int D.38900;
  int D.38901;
  int D.38902;
  unsigned int D.38906;
  short unsigned int D.38907;
  unsigned int D.38908;
  int D.38909;
  struct MonoClass * D.38912;
  int D.38919;
  unsigned char D.38921;
  _Bool D.38922;
  _Bool D.38923;
  _Bool D.38924;
  struct MonoClass * D.38927;
  int D.28079;
  int iftmp.302;
  int D.28078;
  const char[18] * D.38932;
  unsigned char D.38933;
  int D.38934;
  unsigned char D.38935;
  int D.38936;
  _Bool D.38937;
  _Bool D.38938;
  _Bool D.38939;
  const unsigned char * D.38942;
  unsigned char D.38943;
  int D.38944;
  const unsigned char * D.38945;
  unsigned char D.38946;
  int D.38947;
  _Bool D.38948;
  _Bool D.38949;
  const unsigned char * D.38952;
  unsigned char D.38953;
  int D.38954;
  const unsigned char * D.38955;
  unsigned char D.38956;
  int D.38957;
  _Bool D.38958;
  _Bool D.38959;
  const unsigned char * D.38962;
  unsigned char D.38963;
  int D.38964;
  const unsigned char * D.38965;
  unsigned char D.38966;
  int D.38967;
  unsigned int D.38979;
  struct MonoImage * D.38980;
  struct MonoClass * D.38981;
  int D.38984;
  struct MonoInst * D.38985;
  int D.38986;
  int D.38987;
  struct MonoJumpInfoToken * D.38988;
  int D.38989;
  struct MonoClass * D.38990;
  unsigned int D.38991;
  int D.38992;
  unsigned int D.38998;
  int D.38999;
  int D.39004;
  struct MonoInst * D.39005;
  int D.39006;
  int D.39007;
  struct MonoJumpInfoToken * D.39008;
  int D.39009;
  unsigned int D.39010;
  int D.39011;
  struct MonoReflectionType * D.39016;
  unsigned int D.39017;
  int D.39018;
  struct MonoClass * D.39026;
  int D.39037;
  struct MonoInst * D.39038;
  int D.39039;
  int D.39040;
  struct MonoJumpInfoToken * D.39041;
  int D.39042;
  unsigned int D.39043;
  int D.39044;
  unsigned int D.39049;
  int D.39050;
  int D.39054;
  struct MonoInst * D.39055;
  int D.39056;
  int D.39057;
  int D.39058;
  unsigned int D.39059;
  unsigned int D.39060;
  struct MonoInst * * D.39061;
  struct MonoInst * D.39062;
  unsigned char D.39063;
  unsigned char D.39064;
  struct MonoClass * D.39065;
  unsigned int D.39066;
  int D.39067;
  struct MonoType * D.39070;
  int D.39071;
  _Bool iftmp.303;
  int D.39075;
  unsigned char D.39078;
  _Bool D.39079;
  _Bool D.39080;
  _Bool D.39081;
  int D.39082;
  unsigned char D.39084;
  struct MonoInst * iftmp.304;
  int D.39088;
  int D.39089;
  unsigned int D.39090;
  sizetype D.39093;
  sizetype D.39094;
  sizetype D.39095;
  struct MonoInst * * D.39096;
  struct MonoInst * iftmp.305;
  int D.39099;
  unsigned int D.39100;
  sizetype D.39103;
  sizetype D.39104;
  struct MonoInst * * D.39105;
  _Bool D.39107;
  long int D.39108;
  long int D.39109;
  _Bool D.39112;
  long int D.39113;
  long int D.39114;
  unsigned char D.39117;
  unsigned char D.39118;
  unsigned char D.39119;
  unsigned char D.39120;
  int D.39124;
  struct MonoInst * D.39125;
  int D.39126;
  int D.39127;
  int D.39128;
  unsigned int D.39132;
  short unsigned int D.39133;
  unsigned int D.39134;
  int D.39135;
  struct MonoClass * D.39138;
  struct MonoInst * * sp.306;
  struct MonoDebugOptions * D.39149;
  int D.39150;
  struct MonoDebugOptions * D.39171;
  int D.39172;
  sizetype D.39174;
  struct MonoDebugOptions * D.39182;
  int D.39183;
  signed char D.39185;
  sizetype D.39186;
  sizetype D.39187;
  unsigned int D.39188;
  unsigned int D.39189;
  unsigned int D.39192;
  unsigned int D.39193;
  unsigned int D.39196;
  int iftmp.307;
  int D.39203;
  unsigned int D.39204;
  unsigned int D.39209;
  unsigned int D.39210;
  int D.39211;
  int D.39212;
  struct MonoInst * D.39213;
  int D.39214;
  int D.39215;
  int D.39216;
  int D.39220;
  struct MonoInst * D.39221;
  int D.39222;
  int D.39223;
  unsigned int D.39226;
  unsigned int D.39227;
  int D.39228;
  unsigned char * D.39232;
  int D.39235;
  int D.39236;
  unsigned int D.39237;
  unsigned int D.39238;
  struct MonoBasicBlock * * D.39239;
  short unsigned int D.39244;
  short unsigned int D.39245;
  _Bool D.39246;
  short unsigned int D.39247;
  _Bool D.39248;
  _Bool D.39249;
  short unsigned int D.39255;
  _Bool D.39256;
  _Bool D.39257;
  _Bool D.39258;
  short unsigned int D.39260;
  short unsigned int D.39261;
  _Bool D.39262;
  short unsigned int D.39263;
  _Bool D.39264;
  _Bool D.39265;
  void * D.39268;
  struct MonoBasicBlock * * D.39269;
  struct MonoBasicBlock * * D.39270;
  unsigned int D.39276;
  unsigned int D.39277;
  int D.39278;
  short unsigned int D.39285;
  short unsigned int D.39286;
  _Bool D.39287;
  short unsigned int D.39288;
  _Bool D.39289;
  _Bool D.39290;
  short unsigned int D.39296;
  _Bool D.39297;
  _Bool D.39298;
  _Bool D.39299;
  short unsigned int D.39301;
  short unsigned int D.39302;
  _Bool D.39303;
  short unsigned int D.39304;
  _Bool D.39305;
  _Bool D.39306;
  int D.39309;
  struct MonoInst * D.39310;
  int D.39311;
  int D.39312;
  unsigned char * D.39316;
  int D.39319;
  int D.39320;
  unsigned int D.39321;
  unsigned int D.39322;
  struct MonoBasicBlock * * D.39323;
  short unsigned int D.39328;
  short unsigned int D.39329;
  _Bool D.39330;
  short unsigned int D.39331;
  _Bool D.39332;
  _Bool D.39333;
  short unsigned int D.39339;
  _Bool D.39340;
  _Bool D.39341;
  _Bool D.39342;
  short unsigned int D.39344;
  short unsigned int D.39345;
  _Bool D.39346;
  short unsigned int D.39347;
  _Bool D.39348;
  _Bool D.39349;
  unsigned int D.39353;
  unsigned int D.39354;
  struct MonoBasicBlock * * D.39355;
  _Bool D.39356;
  long int D.39357;
  long int D.39358;
  struct MonoDebugOptions * D.39375;
  int D.39376;
  unsigned int D.39378;
  unsigned int D.39379;
  int D.39380;
  unsigned char * D.39381;
  int D.39384;
  int D.39385;
  unsigned int D.39386;
  unsigned int D.39387;
  struct MonoBasicBlock * * D.39388;
  struct MonoDebugOptions * D.39401;
  int D.39402;
  unsigned int D.39404;
  unsigned int D.39405;
  int D.39406;
  _Bool D.39412;
  long int D.39413;
  long int D.39414;
  struct MonoDebugOptions * D.39423;
  int D.39424;
  char * D.39428;
  _Bool D.39429;
  long int D.39430;
  long int D.39431;
  struct MonoMethodSignature * D.39434;
  short unsigned int D.39435;
  int D.39436;
  struct MonoDebugOptions * D.39443;
  int D.39444;
  unsigned int D.39446;
  unsigned int D.39447;
  sizetype D.39448;
  const void * D.39449;
  struct MonoType * D.39450;
  int D.39451;
  struct MonoInst * * sp.308;
  int num_calls.309;
  int D.39456;
  struct MonoDebugOptions * D.39463;
  int D.39464;
  struct MonoDebugOptions * D.39472;
  int D.39473;
  gint32 * D.39477;
  guint16 iftmp.310;
  int D.39486;
  struct MonoInst * D.39487;
  int D.39488;
  int D.39489;
  int D.39490;
  unsigned int D.39492;
  int D.39493;
  struct MonoInst * * sp.311;
  unsigned int D.39498;
  int D.39499;
  struct MonoInst * * sp.312;
  int num_calls.313;
  int D.39505;
  struct MonoDebugOptions * D.39514;
  int D.39515;
  struct MonoDebugOptions * D.39523;
  int D.39524;
  _Bool D.39526;
  long int D.39527;
  long int D.39528;
  guint16 iftmp.314;
  int D.39537;
  struct MonoInst * D.39538;
  int D.39539;
  int D.39540;
  const char * D.39541;
  int D.39542;
  unsigned int D.39544;
  int D.39545;
  struct MonoInst * * sp.315;
  int num_calls.316;
  int D.39551;
  struct MonoDebugOptions * D.39558;
  int D.39559;
  struct MonoDebugOptions * D.39567;
  int D.39568;
  guint16 iftmp.317;
  int D.39578;
  struct MonoInst * D.39579;
  int D.39580;
  int D.39581;
  int D.39582;
  unsigned int D.39584;
  int D.39585;
  _Bool D.39590;
  long int D.39591;
  long int D.39592;
  unsigned int D.39595;
  int D.39596;
  struct MonoInst * * sp.318;
  struct MonoDebugOptions * D.39607;
  int D.39608;
  struct MonoInst * iftmp.319;
  int D.39614;
  struct MonoInst * D.39615;
  int D.39616;
  int D.39617;
  unsigned char D.39618;
  unsigned char D.39619;
  struct MonoClass * D.39620;
  unsigned int D.39621;
  int D.39622;
  struct MonoType * D.39625;
  int D.39626;
  _Bool iftmp.320;
  int D.39630;
  unsigned char D.39633;
  _Bool D.39634;
  _Bool D.39635;
  _Bool D.39636;
  int D.39637;
  unsigned char D.39639;
  struct MonoInst * iftmp.321;
  int D.39643;
  int D.39644;
  unsigned int D.39645;
  sizetype D.39648;
  sizetype D.39649;
  sizetype D.39650;
  struct MonoInst * * D.39651;
  struct MonoInst * iftmp.322;
  int D.39654;
  unsigned int D.39655;
  sizetype D.39658;
  sizetype D.39659;
  struct MonoInst * * D.39660;
  _Bool D.39662;
  long int D.39663;
  long int D.39664;
  _Bool D.39667;
  long int D.39668;
  long int D.39669;
  unsigned char D.39672;
  unsigned char D.39673;
  unsigned char D.39674;
  unsigned char D.39675;
  struct MonoInst * * sp.323;
  struct MonoDebugOptions * D.39686;
  int D.39687;
  struct MonoDebugOptions * D.39695;
  int D.39696;
  void * klass.324;
  void * D.39703;
  struct MonoInst * D.39704;
  int D.39705;
  struct MonoInst * D.39706;
  int D.39707;
  int D.39708;
  int D.39709;
  unsigned int D.39710;
  unsigned int D.39711;
  struct MonoInst * * D.39712;
  struct MonoInst * D.39713;
  struct MonoType * D.39714;
  unsigned int D.39715;
  short unsigned int D.39716;
  struct MonoClass * D.39717;
  int D.39718;
  unsigned char D.39719;
  <unnamed type> D.39720;
  unsigned int D.39721;
  int D.39722;
  short unsigned int D.39723;
  struct MonoClass * D.39726;
  void * D.39727;
  unsigned int D.39728;
  int D.39729;
  void * D.39733;
  struct MonoInst * D.39734;
  int D.39735;
  struct MonoInst * D.39736;
  guint16 iftmp.325;
  int D.39741;
  int D.39742;
  int D.39745;
  struct MonoInst * D.39746;
  int D.39747;
  int D.39748;
  int D.39749;
  unsigned int D.39751;
  int D.39752;
  struct MonoInst * * sp.326;
  struct MonoInst * D.39757;
  int num_calls.327;
  int D.39759;
  struct MonoDebugOptions * D.39766;
  int D.39767;
  unsigned int D.39769;
  int D.39770;
  struct MonoInst * * sp.328;
  struct MonoDebugOptions * D.39781;
  int D.39782;
  struct MonoDebugOptions * D.39790;
  int D.39791;
  void * klass.329;
  _Bool D.39794;
  long int D.39795;
  long int D.39796;
  int D.39799;
  struct MonoInst * D.39800;
  int D.39801;
  int D.39802;
  int D.39803;
  unsigned int D.39804;
  unsigned int D.39805;
  struct MonoInst * * D.39806;
  struct MonoInst * D.39807;
  unsigned char D.39808;
  unsigned char D.39809;
  struct MonoClass * D.39810;
  unsigned int D.39811;
  int D.39812;
  struct MonoType * D.39815;
  int D.39816;
  _Bool iftmp.330;
  int D.39820;
  unsigned char D.39823;
  _Bool D.39824;
  _Bool D.39825;
  _Bool D.39826;
  int D.39827;
  unsigned char D.39829;
  struct MonoInst * iftmp.331;
  int D.39833;
  int D.39834;
  unsigned int D.39835;
  sizetype D.39838;
  sizetype D.39839;
  sizetype D.39840;
  struct MonoInst * * D.39841;
  struct MonoInst * iftmp.332;
  int D.39844;
  unsigned int D.39845;
  sizetype D.39848;
  sizetype D.39849;
  struct MonoInst * * D.39850;
  _Bool D.39852;
  long int D.39853;
  long int D.39854;
  _Bool D.39857;
  long int D.39858;
  long int D.39859;
  unsigned char D.39862;
  unsigned char D.39863;
  unsigned char D.39864;
  unsigned char D.39865;
  unsigned int D.39869;
  short unsigned int D.39870;
  unsigned char D.39871;
  <unnamed type> D.39872;
  unsigned int D.39873;
  int D.39874;
  short unsigned int D.39875;
  struct MonoClass * D.39878;
  struct MonoInst * * sp.333;
  _Bool D.39883;
  long int D.39884;
  long int D.39885;
  struct MonoMethodSignature * D.39888;
  unsigned char D.39889;
  unsigned char D.39890;
  _Bool D.39891;
  long int D.39892;
  long int D.39893;
  struct MonoDebugOptions * D.39902;
  int D.39903;
  struct MonoDebugOptions * D.39911;
  int D.39912;
  void * klass.334;
  unsigned char D.39917;
  _Bool D.39918;
  long int D.39919;
  long int D.39920;
  unsigned char D.39923;
  unsigned char D.39924;
  unsigned int D.39925;
  int D.39926;
  struct MonoType * D.39929;
  int D.39930;
  _Bool iftmp.335;
  int D.39934;
  unsigned char D.39937;
  _Bool D.39938;
  _Bool D.39939;
  _Bool D.39940;
  int D.39941;
  unsigned char D.39943;
  struct MonoInst * iftmp.336;
  int D.39947;
  unsigned int D.39948;
  sizetype D.39951;
  sizetype D.39952;
  sizetype D.39953;
  struct MonoInst * * D.39954;
  struct MonoInst * iftmp.337;
  int D.39957;
  unsigned int D.39958;
  sizetype D.39961;
  sizetype D.39962;
  struct MonoInst * * D.39963;
  _Bool D.39965;
  long int D.39966;
  long int D.39967;
  _Bool D.39970;
  long int D.39971;
  long int D.39972;
  unsigned char D.39975;
  unsigned char D.39976;
  unsigned char D.39977;
  unsigned char D.39978;
  unsigned int D.39983;
  int D.39984;
  struct MonoDebugOptions * D.39994;
  int D.39995;
  struct MonoDebugOptions * D.40006;
  int D.40007;
  struct MonoDebugOptions * D.40015;
  int D.40016;
  const guint32 * D.40018;
  unsigned int D.40019;
  unsigned int token.338;
  void * klass.339;
  struct MonoInst * * sp.340;
  struct MonoDebugOptions * D.40032;
  int D.40033;
  struct MonoDebugOptions * D.40041;
  int D.40042;
  guint16 iftmp.341;
  int D.40050;
  struct MonoInst * D.40051;
  int D.40052;
  int D.40053;
  void * D.40054;
  int D.40055;
  void * D.40057;
  unsigned int D.40058;
  int D.40059;
  struct MonoInst * * sp.342;
  int num_calls.343;
  int D.40065;
  struct MonoDebugOptions * D.40072;
  int D.40073;
  struct MonoDebugOptions * D.40081;
  int D.40082;
  _Bool D.40084;
  long int D.40085;
  long int D.40086;
  <unnamed type> key.344;
  unsigned int D.40096;
  int D.40097;
  struct MonoInst * * sp.345;
  struct MonoInst * D.40103;
  struct MonoInst * D.40106;
  unsigned char D.40107;
  unsigned char D.40108;
  int D.40109;
  int D.40110;
  unsigned int D.40114;
  int num_calls.346;
  int D.40116;
  struct MonoDebugOptions * D.40123;
  int D.40124;
  struct MonoInst * D.40126;
  unsigned int D.40127;
  int D.40128;
  int D.40132;
  struct MonoInst * D.40133;
  int D.40134;
  int D.40135;
  struct MonoInst * D.40136;
  int D.40137;
  int D.40141;
  _Bool D.40144;
  _Bool D.40145;
  _Bool D.40146;
  unsigned int D.40149;
  unsigned int D.40150;
  int D.40151;
  int D.40155;
  struct MonoInst * D.40156;
  int D.40157;
  int D.40158;
  int D.40159;
  int D.40163;
  struct MonoInst * D.40164;
  int D.40165;
  int D.40166;
  unsigned int D.40169;
  unsigned int D.40170;
  int D.40171;
  unsigned char * D.40175;
  int D.40178;
  int D.40179;
  unsigned int D.40180;
  unsigned int D.40181;
  struct MonoBasicBlock * * D.40182;
  short unsigned int D.40187;
  short unsigned int D.40188;
  _Bool D.40189;
  short unsigned int D.40190;
  _Bool D.40191;
  _Bool D.40192;
  short unsigned int D.40198;
  _Bool D.40199;
  _Bool D.40200;
  _Bool D.40201;
  short unsigned int D.40203;
  short unsigned int D.40204;
  _Bool D.40205;
  short unsigned int D.40206;
  _Bool D.40207;
  _Bool D.40208;
  void * D.40211;
  struct MonoBasicBlock * * D.40212;
  struct MonoBasicBlock * * D.40213;
  unsigned int D.40219;
  unsigned int D.40220;
  int D.40221;
  short unsigned int D.40228;
  short unsigned int D.40229;
  _Bool D.40230;
  short unsigned int D.40231;
  _Bool D.40232;
  _Bool D.40233;
  short unsigned int D.40239;
  _Bool D.40240;
  _Bool D.40241;
  _Bool D.40242;
  short unsigned int D.40244;
  short unsigned int D.40245;
  _Bool D.40246;
  short unsigned int D.40247;
  _Bool D.40248;
  _Bool D.40249;
  int D.40255;
  struct MonoInst * D.40256;
  int D.40257;
  int D.40258;
  int D.40259;
  int D.40263;
  struct MonoInst * D.40264;
  int D.40265;
  int D.40266;
  unsigned int D.40269;
  unsigned int D.40270;
  int D.40271;
  unsigned char * D.40275;
  int D.40278;
  int D.40279;
  unsigned int D.40280;
  unsigned int D.40281;
  struct MonoBasicBlock * * D.40282;
  short unsigned int D.40287;
  short unsigned int D.40288;
  _Bool D.40289;
  short unsigned int D.40290;
  _Bool D.40291;
  _Bool D.40292;
  short unsigned int D.40298;
  _Bool D.40299;
  _Bool D.40300;
  _Bool D.40301;
  short unsigned int D.40303;
  short unsigned int D.40304;
  _Bool D.40305;
  short unsigned int D.40306;
  _Bool D.40307;
  _Bool D.40308;
  void * D.40311;
  struct MonoBasicBlock * * D.40312;
  struct MonoBasicBlock * * D.40313;
  unsigned int D.40319;
  unsigned int D.40320;
  int D.40321;
  short unsigned int D.40328;
  short unsigned int D.40329;
  _Bool D.40330;
  short unsigned int D.40331;
  _Bool D.40332;
  _Bool D.40333;
  short unsigned int D.40339;
  _Bool D.40340;
  _Bool D.40341;
  _Bool D.40342;
  short unsigned int D.40344;
  short unsigned int D.40345;
  _Bool D.40346;
  short unsigned int D.40347;
  _Bool D.40348;
  _Bool D.40349;
  void * D.40354;
  struct MonoInst * D.40355;
  int D.40356;
  struct MonoInst * D.40357;
  int D.40358;
  int D.40359;
  unsigned int D.40360;
  int D.40361;
  void * D.40366;
  unsigned int D.40367;
  int D.40368;
  int D.40372;
  struct MonoInst * D.40373;
  int D.40374;
  int D.40375;
  unsigned char * D.40381;
  int D.40384;
  int D.40385;
  unsigned int D.40386;
  unsigned int D.40387;
  struct MonoBasicBlock * * D.40388;
  short unsigned int D.40393;
  short unsigned int D.40394;
  _Bool D.40395;
  short unsigned int D.40396;
  _Bool D.40397;
  _Bool D.40398;
  short unsigned int D.40404;
  _Bool D.40405;
  _Bool D.40406;
  _Bool D.40407;
  short unsigned int D.40409;
  short unsigned int D.40410;
  _Bool D.40411;
  short unsigned int D.40412;
  _Bool D.40413;
  _Bool D.40414;
  unsigned int D.40416;
  void * D.40417;
  struct MonoInst * D.40418;
  int D.40419;
  struct MonoInst * D.40420;
  int D.40421;
  int D.40422;
  struct MonoDebugOptions * D.40432;
  int D.40433;
  struct MonoDebugOptions * D.40441;
  int D.40442;
  struct MonoClass * D.40444;
  struct MonoType * D.40445;
  int D.40446;
  struct MonoInst * D.40447;
  int D.40448;
  int D.40449;
  int D.40450;
  unsigned int D.40451;
  unsigned int D.40452;
  struct MonoInst * * D.40453;
  struct MonoInst * D.40454;
  unsigned char D.40455;
  unsigned char D.40456;
  struct MonoClass * D.40457;
  unsigned int D.40458;
  int D.40459;
  struct MonoType * D.40462;
  int D.40463;
  _Bool iftmp.347;
  int D.40467;
  unsigned char D.40470;
  _Bool D.40471;
  _Bool D.40472;
  _Bool D.40473;
  int D.40474;
  unsigned char D.40476;
  struct MonoInst * iftmp.348;
  int D.40480;
  int D.40481;
  unsigned int D.40482;
  sizetype D.40485;
  sizetype D.40486;
  sizetype D.40487;
  struct MonoInst * * D.40488;
  struct MonoInst * iftmp.349;
  int D.40491;
  unsigned int D.40492;
  sizetype D.40495;
  sizetype D.40496;
  struct MonoInst * * D.40497;
  _Bool D.40499;
  long int D.40500;
  long int D.40501;
  _Bool D.40504;
  long int D.40505;
  long int D.40506;
  unsigned char D.40509;
  unsigned char D.40510;
  unsigned char D.40511;
  unsigned char D.40512;
  int D.40516;
  unsigned int D.40520;
  short unsigned int D.40521;
  unsigned int D.40522;
  int D.40523;
  struct MonoClass * D.40526;
  struct MonoInst * * sp.350;
  struct MonoDebugOptions * D.40537;
  int D.40538;
  int D.40540;
  struct MonoInst * D.40541;
  short unsigned int D.40542;
  short unsigned int D.40543;
  int D.40544;
  int D.40545;
  short unsigned int D.40546;
  unsigned char D.40547;
  struct MonoDebugOptions * D.40554;
  int D.40555;
  unsigned int D.40566;
  int D.40567;
  int D.40570;
  struct MonoInst * * sp.351;
  struct MonoDebugOptions * D.40581;
  int D.40582;
  struct MonoDebugOptions * D.40590;
  int D.40591;
  struct MonoLoaderError * D.40596;
  struct MonoDebugOptions * D.40597;
  int D.40598;
  int D.40604;
  gchar * D.40607;
  <unnamed type> D.40608;
  int D.40611;
  <unnamed type> D.40622;
  unsigned char * D.40627;
  int D.40630;
  const guint32 * D.40635;
  unsigned int D.40636;
  struct MonoClass * D.40639;
  struct MonoClass * D.40640;
  struct MonoMethodSignature * D.40646;
  struct MonoDebugOptions * D.40647;
  int D.40648;
  <unnamed type> D.40650;
  int D.40653;
  struct MonoMethodSignature * D.40656;
  short unsigned int D.40657;
  struct MonoMethodSignature * D.40658;
  short unsigned int D.40659;
  int D.40662;
  struct MonoInst * D.40663;
  int D.40664;
  int D.40665;
  int D.40666;
  int D.40670;
  struct MonoInst * D.40671;
  int D.40672;
  int D.40673;
  char * D.40681;
  struct MonoInst * D.40682;
  struct MonoInst * argconst.352;
  struct MonoInst * * sp.353;
  int num_calls.354;
  int D.40687;
  struct MonoDebugOptions * D.40694;
  int D.40695;
  struct MonoDebugOptions * D.40703;
  int D.40704;
  struct MonoLoaderError * D.40709;
  struct MonoDebugOptions * D.40710;
  int D.40711;
  <unnamed type> D.40713;
  int D.40716;
  <unnamed type> D.40727;
  struct MonoInst * D.40730;
  struct MonoInst * * sp.355;
  struct MonoInst * D.40734;
  struct MonoInst * * sp.356;
  struct MonoInst * D.40737;
  int num_calls.357;
  int D.40739;
  struct MonoDebugOptions * D.40746;
  int D.40747;
  unsigned char * D.40749;
  struct MonoDebugOptions * D.40756;
  int D.40757;
  const guint16 * D.40759;
  short unsigned int D.40760;
  struct MonoDebugOptions * D.40767;
  int D.40768;
  unsigned int D.40770;
  short unsigned int D.40771;
  unsigned int D.40772;
  int D.40773;
  struct MonoClass * D.40776;
  struct MonoInst * * sp.358;
  struct MonoDebugOptions * D.40787;
  int D.40788;
  struct MonoDebugOptions * D.40796;
  int D.40797;
  struct MonoDebugOptions * D.40805;
  int D.40806;
  unsigned int D.40808;
  int D.40809;
  int D.40812;
  _Bool iftmp.359;
  int D.40816;
  unsigned char D.40819;
  _Bool D.40820;
  _Bool D.40821;
  _Bool D.40822;
  int D.40823;
  struct MonoInst * iftmp.360;
  struct MonoInst * iftmp.361;
  _Bool D.40835;
  long int D.40836;
  long int D.40837;
  _Bool D.40840;
  long int D.40841;
  long int D.40842;
  unsigned char D.40845;
  unsigned char D.40846;
  unsigned char D.40847;
  unsigned char D.40848;
  struct MonoInst * * sp.362;
  struct MonoDebugOptions * D.40859;
  int D.40860;
  struct MonoDebugOptions * D.40868;
  int D.40869;
  struct MonoDebugOptions * D.40877;
  int D.40878;
  struct MonoType * * D.40882;
  struct MonoType * D.40883;
  int D.40884;
  struct MonoDebugOptions * D.40891;
  int D.40892;
  unsigned int D.40894;
  short unsigned int D.40895;
  struct MonoClass * D.40898;
  struct MonoDebugOptions * D.40908;
  int D.40909;
  struct MonoDebugOptions * D.40917;
  int D.40918;
  struct MonoDebugOptions * D.40926;
  int D.40927;
  unsigned int D.40929;
  short unsigned int D.40930;
  unsigned int D.40931;
  int D.40932;
  struct MonoClass * D.40935;
  struct MonoInst * * sp.363;
  struct MonoDebugOptions * D.40946;
  int D.40947;
  struct MonoDebugOptions * D.40955;
  int D.40956;
  struct MonoDebugOptions * D.40964;
  int D.40965;
  unsigned char D.40969;
  unsigned char D.40970;
  unsigned int D.40971;
  int D.40972;
  struct MonoType * D.40975;
  int D.40976;
  _Bool iftmp.364;
  int D.40980;
  unsigned char D.40983;
  _Bool D.40984;
  _Bool D.40985;
  _Bool D.40986;
  int D.40987;
  unsigned char D.40989;
  struct MonoInst * iftmp.365;
  int D.40993;
  unsigned int D.40994;
  sizetype D.40997;
  sizetype D.40998;
  sizetype D.40999;
  struct MonoInst * * D.41000;
  struct MonoInst * iftmp.366;
  int D.41003;
  unsigned int D.41004;
  sizetype D.41007;
  sizetype D.41008;
  struct MonoInst * * D.41009;
  _Bool D.41011;
  long int D.41012;
  long int D.41013;
  _Bool D.41016;
  long int D.41017;
  long int D.41018;
  unsigned char D.41021;
  unsigned char D.41022;
  unsigned char D.41023;
  unsigned char D.41024;
  struct MonoInst * * sp.367;
  struct MonoDebugOptions * D.41035;
  int D.41036;
  struct MonoDebugOptions * D.41044;
  int D.41045;
  struct MonoDebugOptions * D.41053;
  int D.41054;
  int D.41058;
  struct MonoDebugOptions * D.41065;
  int D.41066;
  struct MonoDebugOptions * D.41074;
  int D.41075;
  struct MonoDebugOptions * D.41083;
  int D.41084;
  unsigned int D.41087;
  int D.41088;
  unsigned char D.41094;
  struct MonoInst * * sp.368;
  struct MonoDebugOptions * D.41102;
  int D.41103;
  struct MonoDebugOptions * D.41112;
  int D.41113;
  unsigned int cc.369;
  unsigned int D.41119;
  unsigned int D.41122;
  unsigned int D.41123;
  unsigned int D.41126;
  unsigned int D.41129;
  unsigned int D.41133;
  _Bool D.41134;
  long int D.41135;
  long int D.41136;
  unsigned int D.41139;
  struct MonoDebugOptions * D.41146;
  int D.41147;
  unsigned char * D.41149;
  struct MonoDebugOptions * D.41156;
  int D.41157;
  unsigned int D.41159;
  struct MonoDebugOptions * D.41166;
  int D.41167;
  struct MonoDebugOptions * D.41175;
  int D.41176;
  struct MonoClass * klass.370;
  struct MonoDebugOptions * D.41182;
  int D.41183;
  int D.41185;
  int D.41188;
  struct MonoInst * D.41189;
  int D.41190;
  int D.41191;
  struct MonoDebugOptions * D.41202;
  int D.41203;
  struct MonoDebugOptions * D.41208;
  int D.41209;
  struct MonoDebugOptions * D.41217;
  int D.41218;
  struct MonoInst * * D.41224;
  struct MonoInst * D.41225;
  short unsigned int D.41226;
  int D.41229;
  struct MonoInst * D.41238;
  struct MonoDebugOptions * D.41248;
  int D.41249;
  unsigned char D.41251;
  int D.41252;
  int D.41253;
  int D.41256;
  unsigned int D.41259;
  unsigned int D.41262;
  unsigned int D.41263;
  unsigned int D.41266;
  unsigned int D.41267;
  unsigned int D.41270;
  unsigned int D.41271;
  _Bool D.41272;
  long int D.41273;
  long int D.41274;
  int D.41277;
  struct MonoInst * D.41278;
  int D.41279;
  int D.41280;
  struct MonoInst * D.41281;
  int D.41282;
  unsigned int D.41283;
  unsigned int D.41284;
  struct MonoInst * * D.41285;
  struct MonoInst * D.41286;
  struct MonoType * D.41287;
  unsigned int D.41288;
  short unsigned int D.41289;
  struct MonoInst * D.41290;
  int D.41291;
  unsigned int D.41292;
  unsigned int D.41293;
  struct MonoInst * * D.41294;
  struct MonoInst * D.41295;
  struct MonoType * D.41296;
  struct MonoInst * D.41297;
  int D.41298;
  unsigned int D.41299;
  unsigned int D.41300;
  struct MonoInst * * D.41301;
  struct MonoInst * D.41302;
  struct MonoClass * D.41303;
  struct MonoInst * D.41304;
  int D.41305;
  unsigned int D.41306;
  unsigned int D.41307;
  struct MonoInst * * D.41308;
  struct MonoInst * D.41309;
  int D.41310;
  unsigned char D.41311;
  <unnamed type> D.41312;
  unsigned int D.41313;
  int D.41314;
  short unsigned int D.41315;
  struct MonoInst * D.41318;
  int D.41319;
  unsigned int D.41320;
  unsigned int D.41321;
  struct MonoInst * * D.41322;
  struct MonoInst * D.41323;
  struct MonoType * D.41324;
  struct MonoClass * D.41325;
  int D.41329;
  const char * D.41338;
  gchar * D.41339;
  struct MonoDebugOptions * D.41348;
  int D.41349;
  struct MonoDebugOptions * D.41357;
  int D.41358;
  unsigned int D.41362;
  unsigned char D.41364;
  unsigned char D.41365;
  int D.41368;
  unsigned char D.41372;
  struct MonoDebugOptions * D.41373;
  int D.41374;
  struct MonoType * D.41376;
  int D.41377;
  int val.371;
  unsigned int D.41379;
  int D.41380;
  struct MonoInst * * sp.372;
  const char * D.41387;
  gchar * D.41388;
  struct MonoDebugOptions * D.41397;
  int D.41398;
  struct MonoInst * iftmp.373;
  int D.41406;
  struct MonoInst * D.41407;
  int D.41408;
  int D.41409;
  unsigned char D.41410;
  unsigned char D.41411;
  struct MonoClass * D.41412;
  unsigned int D.41413;
  int D.41414;
  struct MonoType * D.41417;
  int D.41418;
  _Bool iftmp.374;
  int D.41422;
  unsigned char D.41425;
  _Bool D.41426;
  _Bool D.41427;
  _Bool D.41428;
  int D.41429;
  unsigned char D.41431;
  struct MonoInst * iftmp.375;
  int D.41435;
  int D.41436;
  unsigned int D.41437;
  sizetype D.41440;
  sizetype D.41441;
  sizetype D.41442;
  struct MonoInst * * D.41443;
  struct MonoInst * iftmp.376;
  int D.41446;
  unsigned int D.41447;
  sizetype D.41450;
  sizetype D.41451;
  struct MonoInst * * D.41452;
  _Bool D.41454;
  long int D.41455;
  long int D.41456;
  _Bool D.41459;
  long int D.41460;
  long int D.41461;
  unsigned char D.41464;
  unsigned char D.41465;
  unsigned char D.41466;
  unsigned char D.41467;
  struct MonoType * D.41471;
  unsigned int D.41472;
  short unsigned int D.41473;
  int D.41474;
  unsigned int D.41475;
  int D.41476;
  struct MonoInst * * sp.377;
  struct MonoDebugOptions * D.41485;
  int D.41486;
  struct MonoDebugOptions * D.41492;
  int D.41493;
  struct MonoDebugOptions * D.41499;
  int D.41500;
  struct MonoDebugOptions * D.41506;
  int D.41507;
  struct MonoDebugOptions * D.41515;
  int D.41516;
  struct MonoBasicBlock * D.41518;
  struct MonoBasicBlock * D.41521;
  struct MonoInst * D.41525;
  int D.41534;
  struct MonoInst * D.41535;
  int D.41536;
  int D.41537;
  int D.41538;
  unsigned int D.41539;
  unsigned int D.41540;
  struct MonoInst * * D.41541;
  struct MonoInst * D.41542;
  struct MonoType * D.41543;
  unsigned int D.41544;
  short unsigned int D.41545;
  struct MonoClass * D.41546;
  int D.41547;
  int D.41548;
  short unsigned int D.41549;
  struct MonoClass * D.41552;
  struct MonoInst * D.41560;
  struct MonoType * D.41565;
  unsigned char D.41566;
  struct MonoInst * * D.41571;
  unsigned int D.41572;
  unsigned int D.41573;
  int D.41576;
  struct MonoInst * D.41577;
  int D.41578;
  int D.41579;
  int D.41580;
  unsigned int D.41584;
  struct MonoInst * D.41591;
  short int D.41594;
  short unsigned int D.41597;
  unsigned char D.41600;
  unsigned char D.41601;
  struct MonoInst * D.41604;
  struct MonoBasicBlock * D.41608;
  struct MonoInst * D.41609;
  unsigned int D.41615;
  unsigned int D.41616;
  int D.41617;
  unsigned int D.41618;
  unsigned int D.41619;
  unsigned int D.41622;
  unsigned int D.41623;
  int D.41626;
  struct MonoInst * D.41627;
  int D.41628;
  int D.41629;
  unsigned int i.378;
  unsigned int D.41633;
  int D.41634;
  int D.41635;
  unsigned int D.41636;
  struct GHashTable * D.41637;
  unsigned int D.41640;
  int D.41641;
  int D.41644;
  gchar * D.41647;
  struct GSList * D.41648;
  struct GSList * D.41649;
  int D.41650;
  struct GSList * D.41655;
  _Bool D.41656;
  long int D.41657;
  long int D.41658;
  struct GSList * D.41661;
  struct MonoError error;
  struct MonoInst * ins;
  struct MonoInst * * sp;
  struct MonoInst * * stack_start;
  struct MonoBasicBlock * bblock;
  struct MonoBasicBlock * tblock;
  struct MonoBasicBlock * init_localsbb;
  struct MonoSimpleBasicBlock * bb;
  struct MonoSimpleBasicBlock * original_bb;
  struct MonoMethod * cmethod;
  struct MonoMethod * method_definition;
  struct MonoInst * * arg_array;
  struct MonoMethodHeader * header;
  struct MonoImage * image;
  guint32 token;
  guint32 ins_flag;
  struct MonoClass * klass;
  struct MonoClass * constrained_call;
  unsigned char * ip;
  unsigned char * end;
  unsigned char * target;
  unsigned char * err_pos;
  struct MonoMethodSignature * sig;
  struct MonoGenericContext * generic_context;
  struct MonoGenericContainer * generic_container;
  struct MonoType * * param_types;
  int i;
  int n;
  int start_new_bblock;
  int dreg;
  int num_calls;
  int inline_costs;
  int breakpoint_id;
  guint num_args;
  MonoBoolean security;
  MonoBoolean pinvoke;
  struct MonoSecurityManager * secman;
  struct MonoDeclSecurityActions actions;
  struct GSList * class_inits;
  gboolean dont_verify;
  gboolean dont_verify_stloc;
  gboolean readonly;
  int context_used;
  gboolean init_locals;
  gboolean seq_points;
  gboolean skip_dead_blocks;
  gboolean disable_inline;
  gboolean sym_seq_points;
  struct MonoInst * cached_tls_addr;
  struct MonoDebugMethodInfo * minfo;
  struct MonoBitSet * seq_point_locs;
  struct MonoBitSet * seq_point_set_locs;
  void exception_exit = <<< error >>>;
  void unverified = <<< error >>>;
  void inline_failure = <<< error >>>;
  void load_error = <<< error >>>;
  void call_end = <<< error >>>;
  void cleanup = <<< error >>>;

  try
    {
      tblock = 0B;
      init_localsbb = 0B;
      bb = 0B;
      original_bb = 0B;
      constrained_call = 0B;
      generic_context = 0B;
      generic_container = 0B;
      num_calls = 0;
      inline_costs = 0;
      breakpoint_id = 0;
      secman = 0B;
      class_inits = 0B;
      readonly = 0;
      sym_seq_points = 0;
      cached_tls_addr = 0B;
      seq_point_locs = 0B;
      seq_point_set_locs = 0B;
      disable_inline = is_jit_optimizer_disabled (method);
      D.30426 = method->klass;
      D.30427 = D.30426->image;
      D.30428 = D.30427->assembly;
      D.30429 = D.30428->corlib_internal;
      D.30430 = D.30429 != 0;
      dont_verify = (gboolean) D.30430;
      D.30431 = BIT_FIELD_REF <*method, 8, 160>;
      D.30432 = D.30431 & 124;
      D.30433 = D.30432 == 40;
      D.30434 = (int) D.30433;
      dont_verify = D.30434 | dont_verify;
      D.30431 = BIT_FIELD_REF <*method, 8, 160>;
      D.30432 = D.30431 & 124;
      D.30435 = D.30432 == 44;
      D.30436 = (int) D.30435;
      dont_verify = D.30436 | dont_verify;
      D.30431 = BIT_FIELD_REF <*method, 8, 160>;
      D.30432 = D.30431 & 124;
      D.30437 = D.30432 == 24;
      D.30438 = (int) D.30437;
      dont_verify = D.30438 | dont_verify;
      D.30431 = BIT_FIELD_REF <*method, 8, 160>;
      D.30432 = D.30431 & 124;
      D.30439 = D.30432 == 108;
      D.30440 = (int) D.30439;
      dont_verify = D.30440 | dont_verify;
      D.30431 = BIT_FIELD_REF <*method, 8, 160>;
      D.30432 = D.30431 & 124;
      D.30441 = D.30432 == 104;
      D.30442 = (int) D.30441;
      dont_verify = D.30442 | dont_verify;
      D.30443 = mono_security_get_mode ();
      D.30444 = D.30443 == 3;
      D.30445 = (int) D.30444;
      dont_verify = D.30445 | dont_verify;
      D.30431 = BIT_FIELD_REF <*method, 8, 160>;
      D.30432 = D.30431 & 124;
      D.30437 = D.30432 == 24;
      dont_verify_stloc = (gboolean) D.30437;
      D.30431 = BIT_FIELD_REF <*method, 8, 160>;
      D.30432 = D.30431 & 124;
      D.30446 = D.30432 == 100;
      D.30447 = (int) D.30446;
      dont_verify_stloc = D.30447 | dont_verify_stloc;
      D.30431 = BIT_FIELD_REF <*method, 8, 160>;
      D.30432 = D.30431 & 124;
      D.30448 = D.30432 == 20;
      D.30449 = (int) D.30448;
      dont_verify_stloc = D.30449 | dont_verify_stloc;
      D.30431 = BIT_FIELD_REF <*method, 8, 160>;
      D.30432 = D.30431 & 124;
      D.30450 = D.30432 == 84;
      D.30451 = (int) D.30450;
      dont_verify_stloc = D.30451 | dont_verify_stloc;
      D.30426 = method->klass;
      image = D.30426->image;
      header = mono_method_get_header (method);
      if (header == 0B) goto <D.30452>; else goto <D.30453>;
      <D.30452>:
      {
        struct MonoLoaderError * error;

        error = mono_loader_get_last_error ();
        if (error != 0B) goto <D.30454>; else goto <D.30455>;
        <D.30454>:
        D.30456 = error->exception_type;
        D.30457 = (int) D.30456;
        mono_cfg_set_exception (cfg, D.30457);
        goto <D.30458>;
        <D.30455>:
        mono_cfg_set_exception (cfg, 3);
        D.30459 = cfg->method;
        D.30460 = D.30459->name;
        D.30461 = monoeg_g_strdup_printf ("Missing or incorrect header for method %s", D.30460);
        cfg->exception_message = D.30461;
        <D.30458>:
        goto exception_exit;
      }
      <D.30453>:
      generic_container = mono_method_get_generic_container (method);
      sig = mono_method_signature (method);
      D.30462 = sig->hasthis;
      D.30463 = (int) D.30462;
      D.30464 = sig->param_count;
      D.30465 = (int) D.30464;
      D.30466 = D.30463 + D.30465;
      num_args = (guint) D.30466;
      ip = header->code;
      cfg->cil_start = ip;
      D.30467 = header->code_size;
      end = ip + D.30467;
      D.30468 = cfg->stat_cil_code_size;
      D.30469 = (unsigned int) D.30468;
      D.30467 = header->code_size;
      D.30470 = D.30469 + D.30467;
      D.30471 = (int) D.30470;
      cfg->stat_cil_code_size = D.30471;
      D.30472 = header->init_locals;
      init_locals = (gboolean) D.30472;
      D.30476 = BIT_FIELD_REF <*cfg, 8, 3424>;
      D.30477 = D.30476 & 32;
      if (D.30477 != 0) goto <D.30478>; else goto <D.30474>;
      <D.30478>:
      D.30459 = cfg->method;
      if (D.30459 == method) goto <D.30479>; else goto <D.30474>;
      <D.30479>:
      iftmp.70 = 1;
      goto <D.30475>;
      <D.30474>:
      iftmp.70 = 0;
      <D.30475>:
      seq_points = iftmp.70;
      D.30431 = BIT_FIELD_REF <*method, 8, 160>;
      D.30432 = D.30431 & 124;
      if (D.30432 == 20) goto <D.30480>; else goto <D.30481>;
      <D.30480>:
      seq_points = 0;
      <D.30481>:
      D.30476 = BIT_FIELD_REF <*cfg, 8, 3424>;
      D.30477 = D.30476 & 32;
      if (D.30477 != 0) goto <D.30482>; else goto <D.30483>;
      <D.30482>:
      D.30459 = cfg->method;
      if (D.30459 == method) goto <D.30484>; else goto <D.30485>;
      <D.30484>:
      minfo = mono_debug_lookup_method (method);
      if (minfo != 0B) goto <D.30486>; else goto <D.30487>;
      <D.30486>:
      {
        int i;
        int n_il_offsets;
        int * il_offsets;
        int * line_numbers;

        try
          {
            mono_debug_symfile_get_line_numbers_full (minfo, 0B, 0B, &n_il_offsets, &il_offsets, &line_numbers, 0B, 0B);
            D.30467 = header->code_size;
            D.30467 = header->code_size;
            D.30488 = mono_bitset_alloc_size (D.30467, 0);
            D.30489 = cfg->mempool;
            D.30490 = mono_mempool_alloc0 (D.30489, D.30488);
            seq_point_locs = mono_bitset_mem_new (D.30490, D.30467, 0);
            D.30467 = header->code_size;
            D.30467 = header->code_size;
            D.30491 = mono_bitset_alloc_size (D.30467, 0);
            D.30489 = cfg->mempool;
            D.30492 = mono_mempool_alloc0 (D.30489, D.30491);
            seq_point_set_locs = mono_bitset_mem_new (D.30492, D.30467, 0);
            sym_seq_points = 1;
            i = 0;
            goto <D.27324>;
            <D.27323>:
            il_offsets.71 = il_offsets;
            i.72 = (unsigned int) i;
            D.30495 = i.72 * 4;
            D.30496 = il_offsets.71 + D.30495;
            D.30497 = *D.30496;
            D.30498 = (unsigned int) D.30497;
            D.30467 = header->code_size;
            if (D.30498 < D.30467) goto <D.30499>; else goto <D.30500>;
            <D.30499>:
            il_offsets.71 = il_offsets;
            i.72 = (unsigned int) i;
            D.30495 = i.72 * 4;
            D.30496 = il_offsets.71 + D.30495;
            D.30497 = *D.30496;
            D.30501 = (unsigned int) D.30497;
            D.30502 = D.30501 / 32;
            D.30503 = seq_point_locs->data[D.30502];
            il_offsets.71 = il_offsets;
            i.72 = (unsigned int) i;
            D.30495 = i.72 * 4;
            D.30496 = il_offsets.71 + D.30495;
            D.30497 = *D.30496;
            D.30504 = D.30497 & 31;
            D.30505 = 1 << D.30504;
            D.30506 = D.30503 | D.30505;
            seq_point_locs->data[D.30502] = D.30506;
            <D.30500>:
            i = i + 1;
            <D.27324>:
            n_il_offsets.73 = n_il_offsets;
            if (i < n_il_offsets.73) goto <D.27323>; else goto <D.27325>;
            <D.27325>:
            il_offsets.71 = il_offsets;
            monoeg_g_free (il_offsets.71);
            line_numbers.74 = line_numbers;
            monoeg_g_free (line_numbers.74);
          }
        finally
          {
            n_il_offsets = {CLOBBER};
            il_offsets = {CLOBBER};
            line_numbers = {CLOBBER};
          }
      }
      <D.30487>:
      <D.30485>:
      <D.30483>:
      init_locals = 1;
      method_definition = method;
      goto <D.27328>;
      <D.27327>:
      {
        struct MonoMethodInflated * imethod;

        imethod = method_definition;
        method_definition = imethod->declaring;
      }
      <D.27328>:
      D.30509 = BIT_FIELD_REF <*method_definition, 8, 168>;
      D.30510 = D.30509 & 16;
      if (D.30510 != 0) goto <D.27327>; else goto <D.27329>;
      <D.27329>:
      if (dont_verify == 0) goto <D.30511>; else goto <D.30512>;
      <D.30511>:
      D.30513 = cfg->domain;
      D.30514 = mini_assembly_can_skip_verification (D.30513, method);
      if (D.30514 != 0) goto <D.30515>; else goto <D.30516>;
      <D.30515>:
      dont_verify = 1;
      dont_verify_stloc = 1;
      <D.30516>:
      <D.30512>:
      D.30517 = BIT_FIELD_REF <*sig, 8, 88>;
      D.30518 = D.30517 & 2;
      if (D.30518 != 0) goto <D.30519>; else goto <D.30520>;
      <D.30519>:
      generic_context = mono_method_get_context (method);
      goto <D.30521>;
      <D.30520>:
      if (generic_container != 0B) goto <D.30522>; else goto <D.30523>;
      <D.30522>:
      generic_context = &generic_container->context;
      <D.30523>:
      <D.30521>:
      cfg->generic_context = generic_context;
      D.30524 = cfg->generic_sharing_context;
      if (D.30524 == 0B) goto <D.30525>; else goto <D.30526>;
      <D.30525>:
      D.30517 = BIT_FIELD_REF <*sig, 8, 88>;
      D.30527 = D.30517 & 4;
      D.30528 = D.30527 != 0;
      D.30529 = (long int) D.30528;
      D.30530 = __builtin_expect (D.30529, 0);
      if (D.30530 != 0) goto <D.30531>; else goto <D.30532>;
      <D.30531>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6727, "!sig->has_type_parameters");
      <D.30532>:
      <D.30526>:
      D.30533 = sig->generic_param_count;
      if (D.30533 != 0) goto <D.30534>; else goto <D.30535>;
      <D.30534>:
      D.30431 = BIT_FIELD_REF <*method, 8, 160>;
      D.30432 = D.30431 & 124;
      if (D.30432 == 0) goto <D.30536>; else goto <D.30537>;
      <D.30536>:
      D.30538 = BIT_FIELD_REF <*method, 8, 168>;
      D.30539 = D.30538 & 16;
      D.30540 = D.30539 == 0;
      D.30541 = (long int) D.30540;
      D.30542 = __builtin_expect (D.30541, 0);
      if (D.30542 != 0) goto <D.30543>; else goto <D.30544>;
      <D.30543>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6730, "method->is_inflated");
      <D.30544>:
      D.30545 = mono_method_get_context (method);
      D.30546 = D.30545->method_inst;
      D.30547 = D.30546 == 0B;
      D.30548 = (long int) D.30547;
      D.30549 = __builtin_expect (D.30548, 0);
      if (D.30549 != 0) goto <D.30550>; else goto <D.30551>;
      <D.30550>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6731, "mono_method_get_context (method)->method_inst");
      <D.30551>:
      <D.30537>:
      <D.30535>:
      D.30538 = BIT_FIELD_REF <*method, 8, 168>;
      D.30539 = D.30538 & 16;
      if (D.30539 != 0) goto <D.30552>; else goto <D.30553>;
      <D.30552>:
      D.30554 = mono_method_get_context (method);
      D.30555 = D.30554->method_inst;
      if (D.30555 != 0B) goto <D.30556>; else goto <D.30557>;
      <D.30556>:
      D.30533 = sig->generic_param_count;
      D.30558 = D.30533 == 0;
      D.30559 = (long int) D.30558;
      D.30560 = __builtin_expect (D.30559, 0);
      if (D.30560 != 0) goto <D.30561>; else goto <D.30562>;
      <D.30561>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6734, "sig->generic_param_count");
      <D.30562>:
      <D.30557>:
      <D.30553>:
      D.30459 = cfg->method;
      if (D.30459 == method) goto <D.30563>; else goto <D.30564>;
      <D.30563>:
      cfg->real_offset = 0;
      goto <D.30565>;
      <D.30564>:
      cfg->real_offset = inline_offset;
      <D.30565>:
      D.30467 = header->code_size;
      D.30566 = D.30467 * 4;
      D.30489 = cfg->mempool;
      D.30567 = mono_mempool_alloc0 (D.30489, D.30566);
      cfg->cil_offset_to_bb = D.30567;
      D.30467 = header->code_size;
      D.30568 = (int) D.30467;
      cfg->cil_offset_to_bb_len = D.30568;
      cfg->current_method = method;
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.30570>; else goto <D.30571>;
      <D.30570>:
      D.30572 = mono_method_full_name (method, 1);
      printf ("method to IR %s\n", D.30572);
      <D.30571>:
      D.30573 = num_args * 4;
      D.30489 = cfg->mempool;
      param_types = mono_mempool_alloc (D.30489, D.30573);
      D.30574 = BIT_FIELD_REF <*sig, 8, 80>;
      D.30575 = D.30574 & 64;
      if (D.30575 != 0) goto <D.30576>; else goto <D.30577>;
      <D.30576>:
      D.30426 = method->klass;
      D.30579 = BIT_FIELD_REF <*D.30426, 8, 160>;
      D.30580 = D.30579 & 8;
      if (D.30580 != 0) goto <D.30581>; else goto <D.30582>;
      <D.30581>:
      D.30426 = method->klass;
      iftmp.75 = &D.30426->this_arg;
      goto <D.30583>;
      <D.30582>:
      D.30426 = method->klass;
      iftmp.75 = &D.30426->byval_arg;
      <D.30583>:
      *param_types = iftmp.75;
      <D.30577>:
      n = 0;
      goto <D.27331>;
      <D.27330>:
      D.30462 = sig->hasthis;
      D.30463 = (int) D.30462;
      D.30584 = D.30463 + n;
      D.30585 = (unsigned int) D.30584;
      D.30586 = D.30585 * 4;
      D.30587 = param_types + D.30586;
      D.30588 = sig->params[n];
      *D.30587 = D.30588;
      n = n + 1;
      <D.27331>:
      D.30464 = sig->param_count;
      D.30465 = (int) D.30464;
      if (D.30465 > n) goto <D.27330>; else goto <D.27332>;
      <D.27332>:
      cfg->arg_types = param_types;
      dont_inline = monoeg_g_list_prepend (dont_inline, method);
      D.30459 = cfg->method;
      if (D.30459 == method) goto <D.30589>; else goto <D.30590>;
      <D.30589>:
      D.30591 = cfg->prof_options;
      D.30592 = D.30591 & 16384;
      if (D.30592 != 0) goto <D.30593>; else goto <D.30594>;
      <D.30593>:
      D.30467 = header->code_size;
      D.30595 = (int) D.30467;
      D.30459 = cfg->method;
      D.30596 = mono_profiler_coverage_alloc (D.30459, D.30595);
      cfg->coverage_info = D.30596;
      <D.30594>:
      D.30489 = cfg->mempool;
      start_bblock = mono_mempool_alloc0 (D.30489, 172);
      D.30597 = cfg->num_bblocks;
      D.30598 = D.30597;
      D.30599 = D.30598 + 1;
      cfg->num_bblocks = D.30599;
      D.30600 = (int) D.30598;
      start_bblock->block_num = D.30600;
      cfg->bb_entry = start_bblock;
      start_bblock->cil_code = 0B;
      start_bblock->cil_length = 0;
      D.30489 = cfg->mempool;
      end_bblock = mono_mempool_alloc0 (D.30489, 172);
      D.30597 = cfg->num_bblocks;
      D.30601 = D.30597;
      D.30602 = D.30601 + 1;
      cfg->num_bblocks = D.30602;
      D.30603 = (int) D.30601;
      end_bblock->block_num = D.30603;
      cfg->bb_exit = end_bblock;
      end_bblock->cil_code = 0B;
      end_bblock->cil_length = 0;
      D.30604 = end_bblock->flags;
      D.30605 = D.30604 | 32;
      end_bblock->flags = D.30605;
      D.30597 = cfg->num_bblocks;
      D.30606 = D.30597 != 2;
      D.30607 = (long int) D.30606;
      D.30608 = __builtin_expect (D.30607, 0);
      if (D.30608 != 0) goto <D.30609>; else goto <D.30610>;
      <D.30609>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6780, "cfg->num_bblocks == 2");
      <D.30610>:
      arg_array = cfg->args;
      D.30611 = BIT_FIELD_REF <*header, 16, 80>;
      D.30612 = D.30611 & 32767;
      if (D.30612 != 0) goto <D.30613>; else goto <D.30614>;
      <D.30613>:
      D.30615 = monoeg_g_hash_table_new (0B, 0B);
      cfg->spvars = D.30615;
      D.30616 = monoeg_g_hash_table_new (0B, 0B);
      cfg->exvars = D.30616;
      <D.30614>:
      i = 0;
      goto <D.27339>;
      <D.27338>:
      {
        struct MonoBasicBlock * try_bb;
        struct MonoExceptionClause * clause;

        D.30617 = header->clauses;
        i.76 = (unsigned int) i;
        D.30619 = i.76 * 24;
        clause = D.30617 + D.30619;
        D.30620 = cfg->cil_offset_to_bb;
        D.30621 = clause->try_offset;
        D.30622 = ip + D.30621;
        D.30623 = (int) D.30622;
        D.30624 = cfg->cil_start;
        D.30625 = (int) D.30624;
        D.30626 = D.30623 - D.30625;
        D.30627 = (unsigned int) D.30626;
        D.30628 = D.30627 * 4;
        D.30629 = D.30620 + D.30628;
        try_bb = *D.30629;
        if (try_bb == 0B) goto <D.30630>; else goto <D.30631>;
        <D.30630>:
        D.30621 = clause->try_offset;
        D.30622 = ip + D.30621;
        if (D.30622 >= end) goto <D.30632>; else goto <D.30634>;
        <D.30634>:
        D.30621 = clause->try_offset;
        D.30635 = ip + D.30621;
        D.30636 = header->code;
        if (D.30635 < D.30636) goto <D.30632>; else goto <D.30633>;
        <D.30632>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.30638>; else goto <D.30639>;
        <D.30638>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.30640>; else goto <D.30641>;
        <D.30640>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.30641>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.30639>:
        D.30642 = mini_get_debug_options ();
        D.30643 = D.30642->break_on_unverified;
        if (D.30643 != 0) goto <D.30644>; else goto unverified;
        <D.30644>:
        __asm__ __volatile__("int $03");
        <D.30633>:
        D.30489 = cfg->mempool;
        try_bb = mono_mempool_alloc0 (D.30489, 172);
        D.30597 = cfg->num_bblocks;
        D.30645 = D.30597;
        D.30646 = D.30645 + 1;
        cfg->num_bblocks = D.30646;
        D.30647 = (int) D.30645;
        try_bb->block_num = D.30647;
        D.30621 = clause->try_offset;
        D.30622 = ip + D.30621;
        try_bb->cil_code = D.30622;
        D.30648 = try_bb->cil_code;
        if (D.30648 != 0B) goto <D.30649>; else goto <D.30650>;
        <D.30649>:
        D.30620 = cfg->cil_offset_to_bb;
        D.30648 = try_bb->cil_code;
        D.30651 = (int) D.30648;
        D.30624 = cfg->cil_start;
        D.30625 = (int) D.30624;
        D.30652 = D.30651 - D.30625;
        D.30653 = (unsigned int) D.30652;
        D.30654 = D.30653 * 4;
        D.30655 = D.30620 + D.30654;
        *D.30655 = try_bb;
        <D.30650>:
        D.30656 = cfg->real_offset;
        try_bb->real_offset = D.30656;
        <D.30631>:
        D.30621 = clause->try_offset;
        try_bb->real_offset = D.30621;
        try_bb->try_start = 1;
        D.30657 = i + 1;
        D.30658 = D.30657 << 8;
        D.30659 = (unsigned int) D.30658;
        D.30660 = clause->flags;
        D.30661 = D.30659 | D.30660;
        try_bb->region = D.30661;
        D.30620 = cfg->cil_offset_to_bb;
        D.30662 = clause->handler_offset;
        D.30663 = ip + D.30662;
        D.30664 = (int) D.30663;
        D.30624 = cfg->cil_start;
        D.30625 = (int) D.30624;
        D.30665 = D.30664 - D.30625;
        D.30666 = (unsigned int) D.30665;
        D.30667 = D.30666 * 4;
        D.30668 = D.30620 + D.30667;
        tblock = *D.30668;
        if (tblock == 0B) goto <D.30669>; else goto <D.30670>;
        <D.30669>:
        D.30662 = clause->handler_offset;
        D.30663 = ip + D.30662;
        if (D.30663 >= end) goto <D.30671>; else goto <D.30673>;
        <D.30673>:
        D.30662 = clause->handler_offset;
        D.30674 = ip + D.30662;
        D.30636 = header->code;
        if (D.30674 < D.30636) goto <D.30671>; else goto <D.30672>;
        <D.30671>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.30675>; else goto <D.30676>;
        <D.30675>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.30677>; else goto <D.30678>;
        <D.30677>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.30678>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.30676>:
        D.30679 = mini_get_debug_options ();
        D.30680 = D.30679->break_on_unverified;
        if (D.30680 != 0) goto <D.30681>; else goto unverified;
        <D.30681>:
        __asm__ __volatile__("int $03");
        <D.30672>:
        D.30489 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.30489, 172);
        D.30597 = cfg->num_bblocks;
        D.30682 = D.30597;
        D.30683 = D.30682 + 1;
        cfg->num_bblocks = D.30683;
        D.30684 = (int) D.30682;
        tblock->block_num = D.30684;
        D.30662 = clause->handler_offset;
        D.30663 = ip + D.30662;
        tblock->cil_code = D.30663;
        D.30685 = tblock->cil_code;
        if (D.30685 != 0B) goto <D.30686>; else goto <D.30687>;
        <D.30686>:
        D.30620 = cfg->cil_offset_to_bb;
        D.30685 = tblock->cil_code;
        D.30688 = (int) D.30685;
        D.30624 = cfg->cil_start;
        D.30625 = (int) D.30624;
        D.30689 = D.30688 - D.30625;
        D.30690 = (unsigned int) D.30689;
        D.30691 = D.30690 * 4;
        D.30692 = D.30620 + D.30691;
        *D.30692 = tblock;
        <D.30687>:
        D.30656 = cfg->real_offset;
        tblock->real_offset = D.30656;
        <D.30670>:
        D.30662 = clause->handler_offset;
        tblock->real_offset = D.30662;
        D.30693 = tblock->flags;
        D.30694 = D.30693 | 16;
        tblock->flags = D.30694;
        if (0 != 0) goto <D.30695>; else goto <D.30696>;
        <D.30695>:
        link_bblock (cfg, try_bb, tblock);
        <D.30696>:
        D.30662 = clause->handler_offset;
        D.30663 = ip + D.30662;
        D.30697 = *D.30663;
        if (D.30697 == 38) goto <D.30698>; else goto <D.30699>;
        <D.30698>:
        D.30693 = tblock->flags;
        D.30700 = D.30693 | 4;
        tblock->flags = D.30700;
        <D.30699>:
        D.30701 = clause->flags;
        D.30702 = D.30701 + 4294967295;
        D.30703 = D.30702 <= 1;
        D.30704 = D.30701 == 4;
        D.30705 = D.30703 | D.30704;
        if (D.30705 != 0) goto <D.30706>; else goto <D.30707>;
        <D.30706>:
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        ins->opcode = 740;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        D.30713 = tblock->last_ins;
        if (D.30713 != 0B) goto <D.30714>; else goto <D.30715>;
        <D.30714>:
        D.30713 = tblock->last_ins;
        D.30713->next = ins;
        D.30713 = tblock->last_ins;
        ins->prev = D.30713;
        tblock->last_ins = ins;
        goto <D.30716>;
        <D.30715>:
        tblock->last_ins = ins;
        D.30713 = tblock->last_ins;
        tblock->code = D.30713;
        <D.30716>:
        if (seq_points != 0) goto <D.30717>; else goto <D.30718>;
        <D.30717>:
        D.30660 = clause->flags;
        if (D.30660 != 2) goto <D.30719>; else goto <D.30720>;
        <D.30719>:
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        ins->opcode = 341;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        D.30662 = clause->handler_offset;
        D.30721 = (int) D.30662;
        ins->data.op[1].const_val = D.30721;
        ins->flags = 1;
        D.30713 = tblock->last_ins;
        if (D.30713 != 0B) goto <D.30722>; else goto <D.30723>;
        <D.30722>:
        D.30713 = tblock->last_ins;
        D.30713->next = ins;
        D.30713 = tblock->last_ins;
        ins->prev = D.30713;
        tblock->last_ins = ins;
        goto <D.30724>;
        <D.30723>:
        tblock->last_ins = ins;
        D.30713 = tblock->last_ins;
        tblock->code = D.30713;
        <D.30724>:
        <D.30720>:
        <D.30718>:
        D.30660 = clause->flags;
        if (D.30660 == 4) goto <D.30725>; else goto <D.30726>;
        <D.30725>:
        D.30693 = tblock->flags;
        D.30727 = D.30693 | 8;
        tblock->flags = D.30727;
        <D.30726>:
        <D.30707>:
        D.30660 = clause->flags;
        if (D.30660 <= 1) goto <D.30728>; else goto <D.30729>;
        <D.30728>:
        {
          struct MonoInst * dummy_use;

          tblock->in_scount = 1;
          D.30489 = cfg->mempool;
          D.30730 = mono_mempool_alloc (D.30489, 4);
          tblock->in_stack = D.30730;
          D.30731 = tblock->in_stack;
          D.30662 = clause->handler_offset;
          D.30732 = (int) D.30662;
          D.30733 = mono_create_exvar_for_offset (cfg, D.30732);
          *D.30731 = D.30733;
          cfg->cbb = tblock;
          D.30489 = cfg->mempool;
          dummy_use = mono_mempool_alloc (D.30489, 48);
          dummy_use->data.op[1].const_val = 0;
          D.30734 = dummy_use->data.op[1].const_val;
          dummy_use->data.op[0].const_val = D.30734;
          dummy_use->prev = 0B;
          D.30735 = dummy_use->prev;
          dummy_use->next = D.30735;
          dummy_use->opcode = 800;
          dummy_use->flags = 0;
          dummy_use->type = 0;
          dummy_use->dreg = -1;
          dummy_use->sreg3 = -1;
          D.30736 = dummy_use->sreg3;
          dummy_use->sreg2 = D.30736;
          D.30737 = dummy_use->sreg2;
          dummy_use->sreg1 = D.30737;
          D.30712 = cfg->ip;
          dummy_use->cil_code = D.30712;
          D.30731 = tblock->in_stack;
          D.30738 = *D.30731;
          D.30739 = D.30738->dreg;
          dummy_use->sreg1 = D.30739;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.30742>; else goto <D.30743>;
          <D.30742>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = dummy_use;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          dummy_use->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = dummy_use;
          goto <D.30744>;
          <D.30743>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = dummy_use;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.30744>:
          D.30660 = clause->flags;
          if (D.30660 == 1) goto <D.30745>; else goto <D.30746>;
          <D.30745>:
          D.30620 = cfg->cil_offset_to_bb;
          D.30747 = clause->data.filter_offset;
          D.30748 = ip + D.30747;
          D.30749 = (int) D.30748;
          D.30624 = cfg->cil_start;
          D.30625 = (int) D.30624;
          D.30750 = D.30749 - D.30625;
          D.30751 = (unsigned int) D.30750;
          D.30752 = D.30751 * 4;
          D.30753 = D.30620 + D.30752;
          tblock = *D.30753;
          if (tblock == 0B) goto <D.30754>; else goto <D.30755>;
          <D.30754>:
          D.30747 = clause->data.filter_offset;
          D.30748 = ip + D.30747;
          if (D.30748 >= end) goto <D.30756>; else goto <D.30758>;
          <D.30758>:
          D.30747 = clause->data.filter_offset;
          D.30759 = ip + D.30747;
          D.30636 = header->code;
          if (D.30759 < D.30636) goto <D.30756>; else goto <D.30757>;
          <D.30756>:
          D.30637 = cfg->gsharedvt;
          if (D.30637 != 0) goto <D.30760>; else goto <D.30761>;
          <D.30760>:
          D.30569 = cfg->verbose_level;
          if (D.30569 > 2) goto <D.30762>; else goto <D.30763>;
          <D.30762>:
          printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
          <D.30763>:
          mono_cfg_set_exception (cfg, 11);
          goto exception_exit;
          <D.30761>:
          D.30764 = mini_get_debug_options ();
          D.30765 = D.30764->break_on_unverified;
          if (D.30765 != 0) goto <D.30766>; else goto unverified;
          <D.30766>:
          __asm__ __volatile__("int $03");
          <D.30757>:
          D.30489 = cfg->mempool;
          tblock = mono_mempool_alloc0 (D.30489, 172);
          D.30597 = cfg->num_bblocks;
          D.30767 = D.30597;
          D.30768 = D.30767 + 1;
          cfg->num_bblocks = D.30768;
          D.30769 = (int) D.30767;
          tblock->block_num = D.30769;
          D.30747 = clause->data.filter_offset;
          D.30748 = ip + D.30747;
          tblock->cil_code = D.30748;
          D.30685 = tblock->cil_code;
          if (D.30685 != 0B) goto <D.30770>; else goto <D.30771>;
          <D.30770>:
          D.30620 = cfg->cil_offset_to_bb;
          D.30685 = tblock->cil_code;
          D.30688 = (int) D.30685;
          D.30624 = cfg->cil_start;
          D.30625 = (int) D.30624;
          D.30689 = D.30688 - D.30625;
          D.30690 = (unsigned int) D.30689;
          D.30691 = D.30690 * 4;
          D.30692 = D.30620 + D.30691;
          *D.30692 = tblock;
          <D.30771>:
          D.30656 = cfg->real_offset;
          tblock->real_offset = D.30656;
          <D.30755>:
          D.30693 = tblock->flags;
          D.30694 = D.30693 | 16;
          tblock->flags = D.30694;
          D.30747 = clause->data.filter_offset;
          tblock->real_offset = D.30747;
          tblock->in_scount = 1;
          D.30489 = cfg->mempool;
          D.30772 = mono_mempool_alloc (D.30489, 4);
          tblock->in_stack = D.30772;
          D.30731 = tblock->in_stack;
          D.30662 = clause->handler_offset;
          D.30732 = (int) D.30662;
          D.30773 = mono_create_exvar_for_offset (cfg, D.30732);
          *D.30731 = D.30773;
          D.30489 = cfg->mempool;
          ins = mono_mempool_alloc (D.30489, 48);
          ins->data.op[1].const_val = 0;
          D.30708 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.30708;
          ins->prev = 0B;
          D.30709 = ins->prev;
          ins->next = D.30709;
          ins->opcode = 740;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.30710 = ins->sreg3;
          ins->sreg2 = D.30710;
          D.30711 = ins->sreg2;
          ins->sreg1 = D.30711;
          D.30712 = cfg->ip;
          ins->cil_code = D.30712;
          D.30713 = tblock->last_ins;
          if (D.30713 != 0B) goto <D.30774>; else goto <D.30775>;
          <D.30774>:
          D.30713 = tblock->last_ins;
          D.30713->next = ins;
          D.30713 = tblock->last_ins;
          ins->prev = D.30713;
          tblock->last_ins = ins;
          goto <D.30776>;
          <D.30775>:
          tblock->last_ins = ins;
          D.30713 = tblock->last_ins;
          tblock->code = D.30713;
          <D.30776>:
          <D.30746>:
        }
        <D.30729>:
        D.30660 = clause->flags;
        if (D.30660 != 1) goto <D.30777>; else goto <D.30778>;
        <D.30777>:
        D.30779 = clause->data.catch_class;
        if (D.30779 != 0B) goto <D.30780>; else goto <D.30781>;
        <D.30780>:
        D.30524 = cfg->generic_sharing_context;
        if (D.30524 != 0B) goto <D.30782>; else goto <D.30783>;
        <D.30782>:
        D.30779 = clause->data.catch_class;
        D.30784 = mono_class_check_context_used (D.30779);
        if (D.30784 != 0) goto <D.30785>; else goto <D.30786>;
        <D.30785>:
        D.30790 = method->flags;
        D.30791 = (int) D.30790;
        D.30792 = D.30791 & 16;
        if (D.30792 != 0) goto <D.30787>; else goto <D.30793>;
        <D.30793>:
        D.30794 = mini_method_get_context (method);
        D.30795 = D.30794->method_inst;
        if (D.30795 != 0B) goto <D.30787>; else goto <D.30796>;
        <D.30796>:
        D.30426 = method->klass;
        D.30579 = BIT_FIELD_REF <*D.30426, 8, 160>;
        D.30580 = D.30579 & 8;
        if (D.30580 != 0) goto <D.30787>; else goto <D.30788>;
        <D.30787>:
        mono_get_vtable_var (cfg);
        goto <D.30789>;
        <D.30788>:
        {
          struct MonoInst * dummy_use;

          D.30489 = cfg->mempool;
          dummy_use = mono_mempool_alloc (D.30489, 48);
          dummy_use->data.op[1].const_val = 0;
          D.30797 = dummy_use->data.op[1].const_val;
          dummy_use->data.op[0].const_val = D.30797;
          dummy_use->prev = 0B;
          D.30798 = dummy_use->prev;
          dummy_use->next = D.30798;
          dummy_use->opcode = 800;
          dummy_use->flags = 0;
          dummy_use->type = 0;
          dummy_use->dreg = -1;
          dummy_use->sreg3 = -1;
          D.30799 = dummy_use->sreg3;
          dummy_use->sreg2 = D.30799;
          D.30800 = dummy_use->sreg2;
          dummy_use->sreg1 = D.30800;
          D.30712 = cfg->ip;
          dummy_use->cil_code = D.30712;
          D.30801 = *arg_array;
          D.30802 = D.30801->dreg;
          dummy_use->sreg1 = D.30802;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.30803>; else goto <D.30804>;
          <D.30803>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = dummy_use;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          dummy_use->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = dummy_use;
          goto <D.30805>;
          <D.30804>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = dummy_use;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.30805>:
        }
        <D.30789>:
        <D.30786>:
        <D.30783>:
        <D.30781>:
        <D.30778>:
      }
      i = i + 1;
      <D.27339>:
      D.30806 = header->num_clauses;
      D.30807 = (int) D.30806;
      if (D.30807 > i) goto <D.27338>; else goto <D.27340>;
      <D.27340>:
      goto <D.30808>;
      <D.30590>:
      D.30573 = num_args * 4;
      arg_array = __builtin_alloca (D.30573);
      cfg->cbb = start_bblock;
      cfg->args = arg_array;
      mono_save_args (cfg, sig, inline_args);
      <D.30808>:
      D.30489 = cfg->mempool;
      bblock.77 = mono_mempool_alloc0 (D.30489, 172);
      bblock = bblock.77;
      bblock.78 = bblock;
      D.30597 = cfg->num_bblocks;
      D.30811 = D.30597;
      D.30812 = D.30811 + 1;
      cfg->num_bblocks = D.30812;
      D.30813 = (int) D.30811;
      bblock.78->block_num = D.30813;
      bblock.78 = bblock;
      bblock.78->cil_code = ip;
      bblock.78 = bblock;
      cfg->cbb = bblock.78;
      cfg->ip = ip;
      bblock.78 = bblock;
      D.30814 = bblock.78->cil_code;
      if (D.30814 != 0B) goto <D.30815>; else goto <D.30816>;
      <D.30815>:
      D.30620 = cfg->cil_offset_to_bb;
      bblock.78 = bblock;
      D.30814 = bblock.78->cil_code;
      D.30817 = (int) D.30814;
      D.30624 = cfg->cil_start;
      D.30625 = (int) D.30624;
      D.30818 = D.30817 - D.30625;
      D.30819 = (unsigned int) D.30818;
      D.30820 = D.30819 * 4;
      D.30821 = D.30620 + D.30820;
      bblock.78 = bblock;
      *D.30821 = bblock.78;
      <D.30816>:
      bblock.78 = bblock;
      D.30656 = cfg->real_offset;
      bblock.78->real_offset = D.30656;
      D.30459 = cfg->method;
      if (D.30459 == method) goto <D.30822>; else goto <D.30823>;
      <D.30822>:
      breakpoint_id = mono_debugger_method_has_breakpoint (method);
      if (breakpoint_id != 0) goto <D.30824>; else goto <D.30825>;
      <D.30824>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 449;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      if (D.30826 != 0B) goto <D.30827>; else goto <D.30828>;
      <D.30827>:
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      D.30826->next = ins;
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      ins->prev = D.30826;
      bblock.78 = bblock;
      bblock.78->last_ins = ins;
      goto <D.30829>;
      <D.30828>:
      bblock.78 = bblock;
      bblock.78 = bblock;
      bblock.78->last_ins = ins;
      D.30826 = bblock.78->last_ins;
      bblock.78->code = D.30826;
      <D.30829>:
      <D.30825>:
      <D.30823>:
      D.30830 = mono_security_get_mode ();
      if (D.30830 == 2) goto <D.30831>; else goto <D.30832>;
      <D.30831>:
      secman = mono_security_manager_get_methods ();
      <D.30832>:
      if (secman != 0B) goto <D.30836>; else goto <D.30834>;
      <D.30836>:
      D.30837 = mono_method_has_declsec (method);
      if (D.30837 != 0) goto <D.30838>; else goto <D.30834>;
      <D.30838>:
      iftmp.79 = 1;
      goto <D.30835>;
      <D.30834>:
      iftmp.79 = 0;
      <D.30835>:
      security = (MonoBoolean) iftmp.79;
      if (security != 0) goto <D.30839>; else goto <D.30840>;
      <D.30839>:
      D.30459 = cfg->method;
      if (D.30459 == method) goto <D.30841>; else goto <D.30842>;
      <D.30841>:
      security = mono_declsec_get_demands (method, &actions);
      <D.30842>:
      <D.30840>:
      if (secman != 0B) goto <D.30846>; else goto <D.30844>;
      <D.30846>:
      D.30431 = BIT_FIELD_REF <*method, 8, 160>;
      D.30432 = D.30431 & 124;
      if (D.30432 == 24) goto <D.30847>; else goto <D.30844>;
      <D.30847>:
      iftmp.80 = 1;
      goto <D.30845>;
      <D.30844>:
      iftmp.80 = 0;
      <D.30845>:
      pinvoke = (MonoBoolean) iftmp.80;
      if (pinvoke != 0) goto <D.30848>; else goto <D.30849>;
      <D.30848>:
      {
        struct MonoMethod * wrapped;

        wrapped = mono_marshal_method_from_wrapper (method);
        if (wrapped != 0B) goto <D.30852>; else goto <D.30850>;
        <D.30852>:
        D.30853 = wrapped->flags;
        D.30854 = (int) D.30853;
        D.30855 = D.30854 & 8192;
        if (D.30855 != 0) goto <D.30856>; else goto <D.30850>;
        <D.30856>:
        {
          struct MonoCustomAttrInfo * custom;

          custom = mono_custom_attrs_from_method (wrapped);
          if (custom != 0B) goto <D.30857>; else goto <D.30858>;
          <D.30857>:
          D.30859 = secman->suppressunmanagedcodesecurity;
          D.30860 = mono_custom_attrs_has_attr (custom, D.30859);
          if (D.30860 != 0) goto <D.30861>; else goto <D.30862>;
          <D.30861>:
          pinvoke = 0;
          <D.30862>:
          <D.30858>:
          if (custom != 0B) goto <D.30863>; else goto <D.30864>;
          <D.30863>:
          mono_custom_attrs_free (custom);
          <D.30864>:
          if (pinvoke != 0) goto <D.30865>; else goto <D.30866>;
          <D.30865>:
          D.30867 = wrapped->klass;
          custom = mono_custom_attrs_from_class (D.30867);
          if (custom != 0B) goto <D.30868>; else goto <D.30869>;
          <D.30868>:
          D.30859 = secman->suppressunmanagedcodesecurity;
          D.30870 = mono_custom_attrs_has_attr (custom, D.30859);
          if (D.30870 != 0) goto <D.30871>; else goto <D.30872>;
          <D.30871>:
          pinvoke = 0;
          <D.30872>:
          <D.30869>:
          if (custom != 0B) goto <D.30873>; else goto <D.30874>;
          <D.30873>:
          mono_custom_attrs_free (custom);
          <D.30874>:
          <D.30866>:
        }
        goto <D.30851>;
        <D.30850>:
        pinvoke = 0;
        <D.30851>:
      }
      <D.30849>:
      if (init_locals != 0) goto <D.30875>; else goto <D.30879>;
      <D.30879>:
      D.30459 = cfg->method;
      if (D.30459 == method) goto <D.30880>; else goto <D.30876>;
      <D.30880>:
      D.30881 = cfg->opt;
      D.30882 = D.30881 & 512;
      if (D.30882 != 0) goto <D.30875>; else goto <D.30876>;
      <D.30876>:
      D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.30884 = D.30883 & 64;
      D.30885 = D.30884 | security;
      D.30886 = D.30885 | pinvoke;
      if (D.30886 != 0) goto <D.30875>; else goto <D.30877>;
      <D.30875>:
      D.30489 = cfg->mempool;
      init_localsbb = mono_mempool_alloc0 (D.30489, 172);
      D.30597 = cfg->num_bblocks;
      D.30887 = D.30597;
      D.30888 = D.30887 + 1;
      cfg->num_bblocks = D.30888;
      D.30889 = (int) D.30887;
      init_localsbb->block_num = D.30889;
      cfg->bb_init = init_localsbb;
      D.30656 = cfg->real_offset;
      init_localsbb->real_offset = D.30656;
      start_bblock->next_bb = init_localsbb;
      bblock.78 = bblock;
      init_localsbb->next_bb = bblock.78;
      link_bblock (cfg, start_bblock, init_localsbb);
      bblock.78 = bblock;
      link_bblock (cfg, init_localsbb, bblock.78);
      cfg->cbb = init_localsbb;
      goto <D.30878>;
      <D.30877>:
      bblock.78 = bblock;
      start_bblock->next_bb = bblock.78;
      bblock.78 = bblock;
      link_bblock (cfg, start_bblock, bblock.78);
      <D.30878>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.30890>; else goto <D.30891>;
      <D.30890>:
      D.30459 = cfg->method;
      if (D.30459 == method) goto <D.30892>; else goto <D.30893>;
      <D.30892>:
      {
        struct MonoGSharedVtMethodInfo * info;
        struct MonoInst * var;
        struct MonoInst * locals_var;
        int dreg;

        D.30489 = cfg->mempool;
        info = mono_mempool_alloc0 (D.30489, 8);
        D.30459 = cfg->method;
        info->method = D.30459;
        D.30894 = monoeg_g_ptr_array_new ();
        info->entries = D.30894;
        cfg->gsharedvt_info = info;
        D.30895 = mono_defaults.int_class;
        D.30896 = &D.30895->byval_arg;
        var = mono_compile_create_var (cfg, D.30896, 329);
        cfg->gsharedvt_info_var = var;
        D.30897 = mini_method_check_context_used (cfg, method);
        ins = emit_get_rgctx_gsharedvt_method (cfg, D.30897, method, info);
        {
          struct MonoInst * inst;

          D.30489 = cfg->mempool;
          inst = mono_mempool_alloc (D.30489, 48);
          inst->data.op[1].const_val = 0;
          D.30898 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.30898;
          inst->prev = 0B;
          D.30899 = inst->prev;
          inst->next = D.30899;
          inst->opcode = 428;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.30900 = inst->sreg3;
          inst->sreg2 = D.30900;
          D.30901 = inst->sreg2;
          inst->sreg1 = D.30901;
          D.30712 = cfg->ip;
          inst->cil_code = D.30712;
          D.30902 = var->dreg;
          inst->dreg = D.30902;
          D.30903 = ins->dreg;
          inst->sreg1 = D.30903;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.30904>; else goto <D.30905>;
          <D.30904>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = inst;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          inst->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          goto <D.30906>;
          <D.30905>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.30906>:
        }
        D.30895 = mono_defaults.int_class;
        D.30896 = &D.30895->byval_arg;
        locals_var = mono_compile_create_var (cfg, D.30896, 329);
        cfg->gsharedvt_locals_var = locals_var;
        D.30907 = alloc_ireg (cfg);
        dreg = (int) D.30907;
        {
          struct MonoInst * inst;

          D.30489 = cfg->mempool;
          inst = mono_mempool_alloc (D.30489, 48);
          inst->data.op[1].const_val = 0;
          D.30908 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.30908;
          inst->prev = 0B;
          D.30909 = inst->prev;
          inst->next = D.30909;
          inst->opcode = 396;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.30910 = inst->sreg3;
          inst->sreg2 = D.30910;
          D.30911 = inst->sreg2;
          inst->sreg1 = D.30911;
          D.30712 = cfg->ip;
          inst->cil_code = D.30712;
          inst->dreg = dreg;
          D.30902 = var->dreg;
          inst->sreg1 = D.30902;
          inst->data.op[0].const_val = 0;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.30912>; else goto <D.30913>;
          <D.30912>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = inst;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          inst->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          goto <D.30914>;
          <D.30913>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.30914>:
        }
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        ins->opcode = 338;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        D.30915 = locals_var->dreg;
        ins->dreg = D.30915;
        ins->sreg1 = dreg;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.30916>; else goto <D.30917>;
        <D.30916>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = ins;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        ins->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        goto <D.30918>;
        <D.30917>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.30918>:
        cfg->gsharedvt_locals_var_ins = ins;
        D.30919 = cfg->flags;
        D.30920 = D.30919 | 1;
        cfg->flags = D.30920;
      }
      <D.30893>:
      <D.30891>:
      if (security != 0) goto <D.30921>; else goto <D.30922>;
      <D.30921>:
      D.30459 = cfg->method;
      if (D.30459 == method) goto <D.30923>; else goto <D.30924>;
      <D.30923>:
      {
        struct MonoInst * args[2];

        try
          {
            D.30925 = cfg->stat_cas_demand_generation;
            D.30926 = D.30925 + 1;
            cfg->stat_cas_demand_generation = D.30926;
            D.30927 = actions.demand.blob;
            if (D.30927 != 0B) goto <D.30928>; else goto <D.30929>;
            <D.30928>:
            D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.30884 = D.30883 & 64;
            if (D.30884 != 0) goto <D.30930>; else goto <D.30931>;
            <D.30930>:
            {
              struct MonoInst * group;
              struct MonoInst * got_loc;

              D.30489 = cfg->mempool;
              D.30932 = mono_mempool_alloc (D.30489, 48);
              args[0] = D.30932;
              D.30933 = args[0];
              D.30933 = args[0];
              D.30933->data.op[1].const_val = 0;
              D.30934 = D.30933->data.op[1].const_val;
              D.30933->data.op[0].const_val = D.30934;
              D.30933 = args[0];
              D.30933 = args[0];
              D.30933->prev = 0B;
              D.30935 = D.30933->prev;
              D.30933->next = D.30935;
              D.30933 = args[0];
              D.30933->opcode = 738;
              D.30933 = args[0];
              D.30933->flags = 0;
              D.30933 = args[0];
              D.30933->type = 0;
              D.30933 = args[0];
              D.30933->dreg = -1;
              D.30933 = args[0];
              D.30933 = args[0];
              D.30933 = args[0];
              D.30933->sreg3 = -1;
              D.30936 = D.30933->sreg3;
              D.30933->sreg2 = D.30936;
              D.30937 = D.30933->sreg2;
              D.30933->sreg1 = D.30937;
              D.30933 = args[0];
              D.30712 = cfg->ip;
              D.30933->cil_code = D.30712;
              got_loc = mono_get_got_var (cfg);
              D.30489 = cfg->mempool;
              group = mono_mempool_alloc (D.30489, 48);
              group->data.op[1].const_val = 0;
              D.30938 = group->data.op[1].const_val;
              group->data.op[0].const_val = D.30938;
              group->prev = 0B;
              D.30939 = group->prev;
              group->next = D.30939;
              group->opcode = 737;
              group->flags = 0;
              group->type = 0;
              group->dreg = -1;
              group->sreg3 = -1;
              D.30940 = group->sreg3;
              group->sreg2 = D.30940;
              D.30941 = group->sreg2;
              group->sreg1 = D.30941;
              D.30712 = cfg->ip;
              group->cil_code = D.30712;
              group->data.op[0].src = 0B;
              group->data.op[1].src = 28B;
              D.30942 = actions.demand.index;
              D.30489 = cfg->mempool;
              D.30943 = mono_jump_info_token_new2 (D.30489, image, D.30942, 0B);
              group->data.op[0].p = D.30943;
              D.30933 = args[0];
              D.30944 = got_loc->dreg;
              D.30933->sreg1 = D.30944;
              D.30933 = args[0];
              D.30933->data.op[1].p = group;
              D.30933 = args[0];
              D.30933->type = 6;
              D.30933 = args[0];
              D.30933->klass = 0B;
              D.30933 = args[0];
              D.30945 = alloc_dreg (cfg, 6);
              D.30946 = (int) D.30945;
              D.30933->dreg = D.30946;
            }
            goto <D.30947>;
            <D.30931>:
            D.30489 = cfg->mempool;
            D.30948 = mono_mempool_alloc (D.30489, 48);
            args[0] = D.30948;
            D.30933 = args[0];
            D.30933 = args[0];
            D.30933->data.op[1].const_val = 0;
            D.30934 = D.30933->data.op[1].const_val;
            D.30933->data.op[0].const_val = D.30934;
            D.30933 = args[0];
            D.30933 = args[0];
            D.30933->prev = 0B;
            D.30935 = D.30933->prev;
            D.30933->next = D.30935;
            D.30933 = args[0];
            D.30933->opcode = 362;
            D.30933 = args[0];
            D.30933->flags = 0;
            D.30933 = args[0];
            D.30933->type = 0;
            D.30933 = args[0];
            D.30933->dreg = -1;
            D.30933 = args[0];
            D.30933 = args[0];
            D.30933 = args[0];
            D.30933->sreg3 = -1;
            D.30936 = D.30933->sreg3;
            D.30933->sreg2 = D.30936;
            D.30937 = D.30933->sreg2;
            D.30933->sreg1 = D.30937;
            D.30933 = args[0];
            D.30712 = cfg->ip;
            D.30933->cil_code = D.30712;
            D.30933 = args[0];
            D.30927 = actions.demand.blob;
            D.30933->data.op[0].p = D.30927;
            D.30933 = args[0];
            D.30933->type = 3;
            D.30933 = args[0];
            D.30949 = alloc_dreg (cfg, 3);
            D.30950 = (int) D.30949;
            D.30933->dreg = D.30950;
            <D.30947>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.30951>; else goto <D.30952>;
            <D.30951>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30933 = args[0];
            D.30741->next = D.30933;
            D.30933 = args[0];
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30933->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.30933 = args[0];
            bblock.127->last_ins = D.30933;
            goto <D.30953>;
            <D.30952>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.30933 = args[0];
            bblock.127->last_ins = D.30933;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.30953>:
            D.30489 = cfg->mempool;
            D.30954 = mono_mempool_alloc (D.30489, 48);
            args[1] = D.30954;
            D.30955 = args[1];
            D.30955 = args[1];
            D.30955->data.op[1].const_val = 0;
            D.30956 = D.30955->data.op[1].const_val;
            D.30955->data.op[0].const_val = D.30956;
            D.30955 = args[1];
            D.30955 = args[1];
            D.30955->prev = 0B;
            D.30957 = D.30955->prev;
            D.30955->next = D.30957;
            D.30955 = args[1];
            D.30955->opcode = 362;
            D.30955 = args[1];
            D.30955->flags = 0;
            D.30955 = args[1];
            D.30955->type = 0;
            D.30955 = args[1];
            D.30955->dreg = -1;
            D.30955 = args[1];
            D.30955 = args[1];
            D.30955 = args[1];
            D.30955->sreg3 = -1;
            D.30958 = D.30955->sreg3;
            D.30955->sreg2 = D.30958;
            D.30959 = D.30955->sreg2;
            D.30955->sreg1 = D.30959;
            D.30955 = args[1];
            D.30712 = cfg->ip;
            D.30955->cil_code = D.30712;
            D.30955 = args[1];
            D.30960 = actions.demand.size;
            D.30961 = (int) D.30960;
            D.30955->data.op[0].const_val = D.30961;
            D.30955 = args[1];
            D.30955->type = 1;
            D.30955 = args[1];
            D.30962 = alloc_dreg (cfg, 1);
            D.30963 = (int) D.30962;
            D.30955->dreg = D.30963;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.30964>; else goto <D.30965>;
            <D.30964>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30955 = args[1];
            D.30741->next = D.30955;
            D.30955 = args[1];
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30955->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.30955 = args[1];
            bblock.127->last_ins = D.30955;
            goto <D.30966>;
            <D.30965>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.30955 = args[1];
            bblock.127->last_ins = D.30955;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.30966>:
            D.30967 = secman->demand;
            mono_emit_method_call (cfg, D.30967, &args, 0B);
            <D.30929>:
            D.30968 = actions.noncasdemand.blob;
            if (D.30968 != 0B) goto <D.30969>; else goto <D.30970>;
            <D.30969>:
            D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.30884 = D.30883 & 64;
            if (D.30884 != 0) goto <D.30971>; else goto <D.30972>;
            <D.30971>:
            {
              struct MonoInst * group;
              struct MonoInst * got_loc;

              D.30489 = cfg->mempool;
              D.30973 = mono_mempool_alloc (D.30489, 48);
              args[0] = D.30973;
              D.30933 = args[0];
              D.30933 = args[0];
              D.30933->data.op[1].const_val = 0;
              D.30934 = D.30933->data.op[1].const_val;
              D.30933->data.op[0].const_val = D.30934;
              D.30933 = args[0];
              D.30933 = args[0];
              D.30933->prev = 0B;
              D.30935 = D.30933->prev;
              D.30933->next = D.30935;
              D.30933 = args[0];
              D.30933->opcode = 738;
              D.30933 = args[0];
              D.30933->flags = 0;
              D.30933 = args[0];
              D.30933->type = 0;
              D.30933 = args[0];
              D.30933->dreg = -1;
              D.30933 = args[0];
              D.30933 = args[0];
              D.30933 = args[0];
              D.30933->sreg3 = -1;
              D.30936 = D.30933->sreg3;
              D.30933->sreg2 = D.30936;
              D.30937 = D.30933->sreg2;
              D.30933->sreg1 = D.30937;
              D.30933 = args[0];
              D.30712 = cfg->ip;
              D.30933->cil_code = D.30712;
              got_loc = mono_get_got_var (cfg);
              D.30489 = cfg->mempool;
              group = mono_mempool_alloc (D.30489, 48);
              group->data.op[1].const_val = 0;
              D.30974 = group->data.op[1].const_val;
              group->data.op[0].const_val = D.30974;
              group->prev = 0B;
              D.30975 = group->prev;
              group->next = D.30975;
              group->opcode = 737;
              group->flags = 0;
              group->type = 0;
              group->dreg = -1;
              group->sreg3 = -1;
              D.30976 = group->sreg3;
              group->sreg2 = D.30976;
              D.30977 = group->sreg2;
              group->sreg1 = D.30977;
              D.30712 = cfg->ip;
              group->cil_code = D.30712;
              group->data.op[0].src = 0B;
              group->data.op[1].src = 28B;
              D.30978 = actions.noncasdemand.index;
              D.30489 = cfg->mempool;
              D.30979 = mono_jump_info_token_new2 (D.30489, image, D.30978, 0B);
              group->data.op[0].p = D.30979;
              D.30933 = args[0];
              D.30980 = got_loc->dreg;
              D.30933->sreg1 = D.30980;
              D.30933 = args[0];
              D.30933->data.op[1].p = group;
              D.30933 = args[0];
              D.30933->type = 6;
              D.30933 = args[0];
              D.30933->klass = 0B;
              D.30933 = args[0];
              D.30981 = alloc_dreg (cfg, 6);
              D.30982 = (int) D.30981;
              D.30933->dreg = D.30982;
            }
            goto <D.30983>;
            <D.30972>:
            D.30489 = cfg->mempool;
            D.30984 = mono_mempool_alloc (D.30489, 48);
            args[0] = D.30984;
            D.30933 = args[0];
            D.30933 = args[0];
            D.30933->data.op[1].const_val = 0;
            D.30934 = D.30933->data.op[1].const_val;
            D.30933->data.op[0].const_val = D.30934;
            D.30933 = args[0];
            D.30933 = args[0];
            D.30933->prev = 0B;
            D.30935 = D.30933->prev;
            D.30933->next = D.30935;
            D.30933 = args[0];
            D.30933->opcode = 362;
            D.30933 = args[0];
            D.30933->flags = 0;
            D.30933 = args[0];
            D.30933->type = 0;
            D.30933 = args[0];
            D.30933->dreg = -1;
            D.30933 = args[0];
            D.30933 = args[0];
            D.30933 = args[0];
            D.30933->sreg3 = -1;
            D.30936 = D.30933->sreg3;
            D.30933->sreg2 = D.30936;
            D.30937 = D.30933->sreg2;
            D.30933->sreg1 = D.30937;
            D.30933 = args[0];
            D.30712 = cfg->ip;
            D.30933->cil_code = D.30712;
            D.30933 = args[0];
            D.30968 = actions.noncasdemand.blob;
            D.30933->data.op[0].p = D.30968;
            D.30933 = args[0];
            D.30933->type = 3;
            D.30933 = args[0];
            D.30985 = alloc_dreg (cfg, 3);
            D.30986 = (int) D.30985;
            D.30933->dreg = D.30986;
            <D.30983>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.30987>; else goto <D.30988>;
            <D.30987>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30933 = args[0];
            D.30741->next = D.30933;
            D.30933 = args[0];
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30933->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.30933 = args[0];
            bblock.127->last_ins = D.30933;
            goto <D.30989>;
            <D.30988>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.30933 = args[0];
            bblock.127->last_ins = D.30933;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.30989>:
            D.30489 = cfg->mempool;
            D.30990 = mono_mempool_alloc (D.30489, 48);
            args[1] = D.30990;
            D.30955 = args[1];
            D.30955 = args[1];
            D.30955->data.op[1].const_val = 0;
            D.30956 = D.30955->data.op[1].const_val;
            D.30955->data.op[0].const_val = D.30956;
            D.30955 = args[1];
            D.30955 = args[1];
            D.30955->prev = 0B;
            D.30957 = D.30955->prev;
            D.30955->next = D.30957;
            D.30955 = args[1];
            D.30955->opcode = 362;
            D.30955 = args[1];
            D.30955->flags = 0;
            D.30955 = args[1];
            D.30955->type = 0;
            D.30955 = args[1];
            D.30955->dreg = -1;
            D.30955 = args[1];
            D.30955 = args[1];
            D.30955 = args[1];
            D.30955->sreg3 = -1;
            D.30958 = D.30955->sreg3;
            D.30955->sreg2 = D.30958;
            D.30959 = D.30955->sreg2;
            D.30955->sreg1 = D.30959;
            D.30955 = args[1];
            D.30712 = cfg->ip;
            D.30955->cil_code = D.30712;
            D.30955 = args[1];
            D.30991 = actions.noncasdemand.size;
            D.30992 = (int) D.30991;
            D.30955->data.op[0].const_val = D.30992;
            D.30955 = args[1];
            D.30955->type = 1;
            D.30955 = args[1];
            D.30993 = alloc_dreg (cfg, 1);
            D.30994 = (int) D.30993;
            D.30955->dreg = D.30994;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.30995>; else goto <D.30996>;
            <D.30995>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30955 = args[1];
            D.30741->next = D.30955;
            D.30955 = args[1];
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30955->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.30955 = args[1];
            bblock.127->last_ins = D.30955;
            goto <D.30997>;
            <D.30996>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.30955 = args[1];
            bblock.127->last_ins = D.30955;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.30997>:
            D.30967 = secman->demand;
            mono_emit_method_call (cfg, D.30967, &args, 0B);
            <D.30970>:
            D.30998 = actions.demandchoice.blob;
            if (D.30998 != 0B) goto <D.30999>; else goto <D.31000>;
            <D.30999>:
            D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.30884 = D.30883 & 64;
            if (D.30884 != 0) goto <D.31001>; else goto <D.31002>;
            <D.31001>:
            {
              struct MonoInst * group;
              struct MonoInst * got_loc;

              D.30489 = cfg->mempool;
              D.31003 = mono_mempool_alloc (D.30489, 48);
              args[0] = D.31003;
              D.30933 = args[0];
              D.30933 = args[0];
              D.30933->data.op[1].const_val = 0;
              D.30934 = D.30933->data.op[1].const_val;
              D.30933->data.op[0].const_val = D.30934;
              D.30933 = args[0];
              D.30933 = args[0];
              D.30933->prev = 0B;
              D.30935 = D.30933->prev;
              D.30933->next = D.30935;
              D.30933 = args[0];
              D.30933->opcode = 738;
              D.30933 = args[0];
              D.30933->flags = 0;
              D.30933 = args[0];
              D.30933->type = 0;
              D.30933 = args[0];
              D.30933->dreg = -1;
              D.30933 = args[0];
              D.30933 = args[0];
              D.30933 = args[0];
              D.30933->sreg3 = -1;
              D.30936 = D.30933->sreg3;
              D.30933->sreg2 = D.30936;
              D.30937 = D.30933->sreg2;
              D.30933->sreg1 = D.30937;
              D.30933 = args[0];
              D.30712 = cfg->ip;
              D.30933->cil_code = D.30712;
              got_loc = mono_get_got_var (cfg);
              D.30489 = cfg->mempool;
              group = mono_mempool_alloc (D.30489, 48);
              group->data.op[1].const_val = 0;
              D.31004 = group->data.op[1].const_val;
              group->data.op[0].const_val = D.31004;
              group->prev = 0B;
              D.31005 = group->prev;
              group->next = D.31005;
              group->opcode = 737;
              group->flags = 0;
              group->type = 0;
              group->dreg = -1;
              group->sreg3 = -1;
              D.31006 = group->sreg3;
              group->sreg2 = D.31006;
              D.31007 = group->sreg2;
              group->sreg1 = D.31007;
              D.30712 = cfg->ip;
              group->cil_code = D.30712;
              group->data.op[0].src = 0B;
              group->data.op[1].src = 28B;
              D.31008 = actions.demandchoice.index;
              D.30489 = cfg->mempool;
              D.31009 = mono_jump_info_token_new2 (D.30489, image, D.31008, 0B);
              group->data.op[0].p = D.31009;
              D.30933 = args[0];
              D.31010 = got_loc->dreg;
              D.30933->sreg1 = D.31010;
              D.30933 = args[0];
              D.30933->data.op[1].p = group;
              D.30933 = args[0];
              D.30933->type = 6;
              D.30933 = args[0];
              D.30933->klass = 0B;
              D.30933 = args[0];
              D.31011 = alloc_dreg (cfg, 6);
              D.31012 = (int) D.31011;
              D.30933->dreg = D.31012;
            }
            goto <D.31013>;
            <D.31002>:
            D.30489 = cfg->mempool;
            D.31014 = mono_mempool_alloc (D.30489, 48);
            args[0] = D.31014;
            D.30933 = args[0];
            D.30933 = args[0];
            D.30933->data.op[1].const_val = 0;
            D.30934 = D.30933->data.op[1].const_val;
            D.30933->data.op[0].const_val = D.30934;
            D.30933 = args[0];
            D.30933 = args[0];
            D.30933->prev = 0B;
            D.30935 = D.30933->prev;
            D.30933->next = D.30935;
            D.30933 = args[0];
            D.30933->opcode = 362;
            D.30933 = args[0];
            D.30933->flags = 0;
            D.30933 = args[0];
            D.30933->type = 0;
            D.30933 = args[0];
            D.30933->dreg = -1;
            D.30933 = args[0];
            D.30933 = args[0];
            D.30933 = args[0];
            D.30933->sreg3 = -1;
            D.30936 = D.30933->sreg3;
            D.30933->sreg2 = D.30936;
            D.30937 = D.30933->sreg2;
            D.30933->sreg1 = D.30937;
            D.30933 = args[0];
            D.30712 = cfg->ip;
            D.30933->cil_code = D.30712;
            D.30933 = args[0];
            D.30998 = actions.demandchoice.blob;
            D.30933->data.op[0].p = D.30998;
            D.30933 = args[0];
            D.30933->type = 3;
            D.30933 = args[0];
            D.31015 = alloc_dreg (cfg, 3);
            D.31016 = (int) D.31015;
            D.30933->dreg = D.31016;
            <D.31013>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.31017>; else goto <D.31018>;
            <D.31017>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30933 = args[0];
            D.30741->next = D.30933;
            D.30933 = args[0];
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30933->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.30933 = args[0];
            bblock.127->last_ins = D.30933;
            goto <D.31019>;
            <D.31018>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.30933 = args[0];
            bblock.127->last_ins = D.30933;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.31019>:
            D.30489 = cfg->mempool;
            D.31020 = mono_mempool_alloc (D.30489, 48);
            args[1] = D.31020;
            D.30955 = args[1];
            D.30955 = args[1];
            D.30955->data.op[1].const_val = 0;
            D.30956 = D.30955->data.op[1].const_val;
            D.30955->data.op[0].const_val = D.30956;
            D.30955 = args[1];
            D.30955 = args[1];
            D.30955->prev = 0B;
            D.30957 = D.30955->prev;
            D.30955->next = D.30957;
            D.30955 = args[1];
            D.30955->opcode = 362;
            D.30955 = args[1];
            D.30955->flags = 0;
            D.30955 = args[1];
            D.30955->type = 0;
            D.30955 = args[1];
            D.30955->dreg = -1;
            D.30955 = args[1];
            D.30955 = args[1];
            D.30955 = args[1];
            D.30955->sreg3 = -1;
            D.30958 = D.30955->sreg3;
            D.30955->sreg2 = D.30958;
            D.30959 = D.30955->sreg2;
            D.30955->sreg1 = D.30959;
            D.30955 = args[1];
            D.30712 = cfg->ip;
            D.30955->cil_code = D.30712;
            D.30955 = args[1];
            D.31021 = actions.demandchoice.size;
            D.31022 = (int) D.31021;
            D.30955->data.op[0].const_val = D.31022;
            D.30955 = args[1];
            D.30955->type = 1;
            D.30955 = args[1];
            D.31023 = alloc_dreg (cfg, 1);
            D.31024 = (int) D.31023;
            D.30955->dreg = D.31024;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.31025>; else goto <D.31026>;
            <D.31025>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30955 = args[1];
            D.30741->next = D.30955;
            D.30955 = args[1];
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30955->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.30955 = args[1];
            bblock.127->last_ins = D.30955;
            goto <D.31027>;
            <D.31026>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.30955 = args[1];
            bblock.127->last_ins = D.30955;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.31027>:
            D.31028 = secman->demandchoice;
            mono_emit_method_call (cfg, D.31028, &args, 0B);
            <D.31000>:
          }
        finally
          {
            args = {CLOBBER};
          }
      }
      <D.30924>:
      <D.30922>:
      if (pinvoke != 0) goto <D.31029>; else goto <D.31030>;
      <D.31029>:
      D.31031 = secman->demandunmanaged;
      mono_emit_method_call (cfg, D.31031, 0B, 0B);
      <D.31030>:
      D.31032 = mono_security_get_mode ();
      if (D.31032 == 1) goto <D.31033>; else goto <D.31034>;
      <D.31033>:
      D.30431 = BIT_FIELD_REF <*method, 8, 160>;
      D.30432 = D.30431 & 124;
      if (D.30432 == 24) goto <D.31035>; else goto <D.31036>;
      <D.31035>:
      {
        struct MonoMethod * wrapped;

        wrapped = mono_marshal_method_from_wrapper (method);
        if (wrapped != 0B) goto <D.31037>; else goto <D.31038>;
        <D.31037>:
        {
          gboolean pinvk;
          gboolean icall;

          D.31039 = wrapped->flags;
          D.31040 = (int) D.31039;
          pinvk = D.31040 & 8192;
          D.31041 = wrapped->iflags;
          D.31042 = (int) D.31041;
          icall = D.31042 & 4096;
          D.31043 = icall | pinvk;
          if (D.31043 != 0) goto <D.31044>; else goto <D.31045>;
          <D.31044>:
          D.30426 = method->klass;
          if (D.30426 != 0B) goto <D.31046>; else goto <D.31047>;
          <D.31046>:
          D.30426 = method->klass;
          D.30427 = D.30426->image;
          if (D.30427 != 0B) goto <D.31048>; else goto <D.31049>;
          <D.31048>:
          D.30426 = method->klass;
          D.30427 = D.30426->image;
          D.31050 = mono_security_core_clr_is_platform_image (D.30427);
          if (D.31050 == 0) goto <D.31051>; else goto <D.31052>;
          <D.31051>:
          {
            struct MonoException * ex;

            if (icall != 0) goto <D.31054>; else goto <D.31055>;
            <D.31054>:
            iftmp.81 = mono_get_exception_security ();
            goto <D.31056>;
            <D.31055>:
            iftmp.81 = mono_get_exception_method_access ();
            <D.31056>:
            ex = iftmp.81;
            emit_throw_exception (cfg, ex);
          }
          <D.31052>:
          <D.31049>:
          <D.31047>:
          <D.31045>:
        }
        <D.31038>:
      }
      <D.31036>:
      <D.31034>:
      D.31057 = cfg->exception_type;
      if (D.31057 != 0) goto exception_exit; else goto <D.31058>;
      <D.31058>:
      D.30467 = header->code_size;
      if (D.30467 == 0) goto <D.31059>; else goto <D.31060>;
      <D.31059>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31061>; else goto <D.31062>;
      <D.31061>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31063>; else goto <D.31064>;
      <D.31063>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31064>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31062>:
      D.31065 = mini_get_debug_options ();
      D.31066 = D.31065->break_on_unverified;
      if (D.31066 != 0) goto <D.31067>; else goto unverified;
      <D.31067>:
      __asm__ __volatile__("int $03");
      <D.31060>:
      D.30656 = cfg->real_offset;
      D.31068 = get_basic_blocks (cfg, header, D.30656, ip, end, &err_pos);
      if (D.31068 != 0) goto <D.31069>; else goto <D.31070>;
      <D.31069>:
      ip = err_pos;
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31071>; else goto <D.31072>;
      <D.31071>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31073>; else goto <D.31074>;
      <D.31073>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31074>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31072>:
      D.31075 = mini_get_debug_options ();
      D.31076 = D.31075->break_on_unverified;
      if (D.31076 != 0) goto <D.31077>; else goto unverified;
      <D.31077>:
      __asm__ __volatile__("int $03");
      <D.31070>:
      D.30459 = cfg->method;
      if (D.30459 == method) goto <D.31078>; else goto <D.31079>;
      <D.31078>:
      breakpoint_id.82 = (unsigned int) breakpoint_id;
      bblock.78 = bblock;
      mono_debug_init_method (cfg, bblock.78, breakpoint_id.82);
      <D.31079>:
      n = 0;
      goto <D.27361>;
      <D.27360>:
      D.31081 = header->locals[n];
      D.31082 = BIT_FIELD_REF <*D.31081, 16, 48>;
      D.31083 = D.31082 & 16639;
      if (D.31083 == 1) goto <D.31084>; else goto <D.31085>;
      <D.31084>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31086>; else goto <D.31087>;
      <D.31086>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31088>; else goto <D.31089>;
      <D.31088>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31089>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31087>:
      D.31090 = mini_get_debug_options ();
      D.31091 = D.31090->break_on_unverified;
      if (D.31091 != 0) goto <D.31092>; else goto unverified;
      <D.31092>:
      __asm__ __volatile__("int $03");
      <D.31085>:
      n = n + 1;
      <D.27361>:
      D.31093 = header->num_locals;
      D.31094 = (int) D.31093;
      if (D.31094 > n) goto <D.27360>; else goto <D.27362>;
      <D.27362>:
      class_inits = 0B;
      D.30524 = cfg->generic_sharing_context;
      if (D.30524 != 0B) goto <D.31095>; else goto <D.31096>;
      <D.31095>:
      D.30459 = cfg->method;
      if (D.30459 == method) goto <D.31097>; else goto <D.31098>;
      <D.31097>:
      D.30790 = method->flags;
      D.30791 = (int) D.30790;
      D.30792 = D.30791 & 16;
      if (D.30792 != 0) goto <D.31099>; else goto <D.31102>;
      <D.31102>:
      D.31103 = mini_method_get_context (method);
      D.31104 = D.31103->method_inst;
      if (D.31104 != 0B) goto <D.31099>; else goto <D.31105>;
      <D.31105>:
      D.30426 = method->klass;
      D.30579 = BIT_FIELD_REF <*D.30426, 8, 160>;
      D.30580 = D.30579 & 8;
      if (D.30580 != 0) goto <D.31099>; else goto <D.31100>;
      <D.31099>:
      mono_get_vtable_var (cfg);
      goto <D.31101>;
      <D.31100>:
      D.31106 = cfg->args;
      D.31107 = *D.31106;
      D.31106 = cfg->args;
      D.31107 = *D.31106;
      D.31108 = D.31107->flags;
      D.31109 = D.31108 | 4;
      D.31107->flags = D.31109;
      <D.31101>:
      <D.31098>:
      <D.31096>:
      if (is_virtual_call != 0) goto <D.31110>; else goto <D.31111>;
      <D.31110>:
      {
        struct MonoInst * arg_ins;

        D.30489 = cfg->mempool;
        arg_ins = mono_mempool_alloc (D.30489, 48);
        arg_ins->data.op[1].const_val = 0;
        D.31112 = arg_ins->data.op[1].const_val;
        arg_ins->data.op[0].const_val = D.31112;
        arg_ins->prev = 0B;
        D.31113 = arg_ins->prev;
        arg_ins->next = D.31113;
        arg_ins->opcode = 428;
        arg_ins->flags = 0;
        arg_ins->type = 0;
        arg_ins->dreg = -1;
        arg_ins->sreg3 = -1;
        D.31114 = arg_ins->sreg3;
        arg_ins->sreg2 = D.31114;
        D.31115 = arg_ins->sreg2;
        arg_ins->sreg1 = D.31115;
        D.30712 = cfg->ip;
        arg_ins->cil_code = D.30712;
        D.31116 = cfg->arg_types;
        D.31117 = *D.31116;
        D.31118 = mono_type_to_regmove (cfg, D.31117);
        D.31119 = (short unsigned int) D.31118;
        arg_ins->opcode = D.31119;
        D.31116 = cfg->arg_types;
        D.31117 = *D.31116;
        type_to_eval_stack_type (cfg, D.31117, arg_ins);
        D.31106 = cfg->args;
        D.31107 = *D.31106;
        D.31120 = D.31107->klass;
        arg_ins->klass = D.31120;
        D.31106 = cfg->args;
        D.31107 = *D.31106;
        D.31121 = D.31107->dreg;
        arg_ins->sreg1 = D.31121;
        D.31122 = arg_ins->type;
        D.31123 = (<unnamed type>) D.31122;
        D.31124 = alloc_dreg (cfg, D.31123);
        D.31125 = (int) D.31124;
        arg_ins->dreg = D.31125;
        D.31126 = arg_ins->opcode;
        if (D.31126 == 431) goto <D.31127>; else goto <D.31128>;
        <D.31127>:
        D.31116 = cfg->arg_types;
        D.31117 = *D.31116;
        D.31129 = mono_class_from_mono_type (D.31117);
        arg_ins->klass = D.31129;
        <D.31128>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.31130>; else goto <D.31131>;
        <D.31130>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = arg_ins;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        arg_ins->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = arg_ins;
        goto <D.31132>;
        <D.31131>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = arg_ins;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.31132>:
        D.30919 = cfg->flags;
        D.31133 = D.30919 | 128;
        cfg->flags = D.31133;
        D.30476 = BIT_FIELD_REF <*cfg, 8, 3424>;
        D.31134 = D.30476 & 64;
        if (D.31134 != 0) goto <D.31135>; else goto <D.31136>;
        <D.31135>:
        D.30476 = BIT_FIELD_REF <*cfg, 8, 3424>;
        D.31134 = D.30476 & 64;
        if (D.31134 != 0) goto <D.31137>; else goto <D.31138>;
        <D.31137>:
        {
          struct MonoInst * inst;

          D.30489 = cfg->mempool;
          inst = mono_mempool_alloc (D.30489, 48);
          inst->data.op[1].const_val = 0;
          D.31139 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.31139;
          inst->prev = 0B;
          D.31140 = inst->prev;
          inst->next = D.31140;
          inst->opcode = 323;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.31141 = inst->sreg3;
          inst->sreg2 = D.31141;
          D.31142 = inst->sreg2;
          inst->sreg1 = D.31142;
          D.30712 = cfg->ip;
          inst->cil_code = D.30712;
          inst->dreg = -1;
          D.31143 = arg_ins->dreg;
          inst->sreg1 = D.31143;
          inst->data.op[1].const_val = 0;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.31144>; else goto <D.31145>;
          <D.31144>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = inst;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          inst->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          goto <D.31146>;
          <D.31145>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.31146>:
        }
        {
          struct MonoInst * inst;

          D.30489 = cfg->mempool;
          inst = mono_mempool_alloc (D.30489, 48);
          inst->data.op[1].const_val = 0;
          D.31147 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.31147;
          inst->prev = 0B;
          D.31148 = inst->prev;
          inst->next = D.31148;
          inst->opcode = 455;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.31149 = inst->sreg3;
          inst->sreg2 = D.31149;
          D.31150 = inst->sreg2;
          inst->sreg1 = D.31150;
          D.30712 = cfg->ip;
          inst->cil_code = D.30712;
          inst->data.op[1].p = "NullReferenceException";
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.31151>; else goto <D.31152>;
          <D.31151>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = inst;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          inst->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          goto <D.31153>;
          <D.31152>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.31153>:
        }
        goto <D.31154>;
        <D.31138>:
        <D.31154>:
        goto <D.31155>;
        <D.31136>:
        {
          struct MonoInst * inst;

          D.30489 = cfg->mempool;
          inst = mono_mempool_alloc (D.30489, 48);
          inst->data.op[1].const_val = 0;
          D.31156 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.31156;
          inst->prev = 0B;
          D.31157 = inst->prev;
          inst->next = D.31157;
          inst->opcode = 340;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.31158 = inst->sreg3;
          inst->sreg2 = D.31158;
          D.31159 = inst->sreg2;
          inst->sreg1 = D.31159;
          D.30712 = cfg->ip;
          inst->cil_code = D.30712;
          inst->dreg = -1;
          D.31143 = arg_ins->dreg;
          inst->sreg1 = D.31143;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.31160>; else goto <D.31161>;
          <D.31160>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = inst;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          inst->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          goto <D.31162>;
          <D.31161>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.31162>:
        }
        <D.31155>:
        {
          struct MonoInst * inst;

          D.30489 = cfg->mempool;
          inst = mono_mempool_alloc (D.30489, 48);
          inst->data.op[1].const_val = 0;
          D.31163 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.31163;
          inst->prev = 0B;
          D.31164 = inst->prev;
          inst->next = D.31164;
          inst->opcode = 803;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.31165 = inst->sreg3;
          inst->sreg2 = D.31165;
          D.31166 = inst->sreg2;
          inst->sreg1 = D.31166;
          D.30712 = cfg->ip;
          inst->cil_code = D.30712;
          inst->dreg = -1;
          D.31143 = arg_ins->dreg;
          inst->sreg1 = D.31143;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.31167>; else goto <D.31168>;
          <D.31167>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = inst;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          inst->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          goto <D.31169>;
          <D.31168>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.31169>:
        }
      }
      <D.31111>:
      D.31170 = dont_verify == 0;
      skip_dead_blocks = (gboolean) D.31170;
      if (skip_dead_blocks != 0) goto <D.31171>; else goto <D.31172>;
      <D.31171>:
      bb = mono_basic_block_split (method, &error);
      original_bb = bb;
      D.31173 = mono_error_ok (&error);
      if (D.31173 == 0) goto <D.31174>; else goto <D.31175>;
      <D.31174>:
      mono_error_cleanup (&error);
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31176>; else goto <D.31177>;
      <D.31176>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31178>; else goto <D.31179>;
      <D.31178>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31179>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31177>:
      D.31180 = mini_get_debug_options ();
      D.31181 = D.31180->break_on_unverified;
      if (D.31181 != 0) goto <D.31182>; else goto unverified;
      <D.31182>:
      __asm__ __volatile__("int $03");
      <D.31175>:
      D.31183 = bb == 0B;
      D.31184 = (long int) D.31183;
      D.31185 = __builtin_expect (D.31184, 0);
      if (D.31185 != 0) goto <D.31186>; else goto <D.31187>;
      <D.31186>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7115, "bb");
      <D.31187>:
      <D.31172>:
      D.31188 = header->max_stack;
      D.31189 = (int) D.31188;
      D.31190 = D.31189 + 1;
      D.31191 = (unsigned int) D.31190;
      D.31192 = D.31191 * 4;
      D.30489 = cfg->mempool;
      sp = mono_mempool_alloc0 (D.30489, D.31192);
      stack_start = sp;
      ins_flag = 0;
      start_new_bblock = 0;
      bblock.78 = bblock;
      cfg->cbb = bblock.78;
      goto <D.27376>;
      <D.28275>:
      D.30459 = cfg->method;
      if (D.30459 == method) goto <D.31193>; else goto <D.31194>;
      <D.31193>:
      ip.83 = (int) ip;
      D.30636 = header->code;
      D.31196 = (int) D.30636;
      D.31197 = ip.83 - D.31196;
      D.31198 = (unsigned int) D.31197;
      cfg->real_offset = D.31198;
      goto <D.31199>;
      <D.31194>:
      cfg->real_offset = inline_offset;
      <D.31199>:
      cfg->ip = ip;
      context_used = 0;
      if (start_new_bblock != 0) goto <D.31200>; else goto <D.31201>;
      <D.31200>:
      bblock.78 = bblock;
      ip.83 = (int) ip;
      bblock.78 = bblock;
      D.30814 = bblock.78->cil_code;
      D.30817 = (int) D.30814;
      D.31202 = ip.83 - D.30817;
      bblock.78->cil_length = D.31202;
      if (start_new_bblock == 2) goto <D.31203>; else goto <D.31204>;
      <D.31203>:
      D.30685 = tblock->cil_code;
      D.31205 = D.30685 != ip;
      D.31206 = (long int) D.31205;
      D.31207 = __builtin_expect (D.31206, 0);
      if (D.31207 != 0) goto <D.31208>; else goto <D.31209>;
      <D.31208>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7136, "ip == tblock->cil_code");
      <D.31209>:
      goto <D.31210>;
      <D.31204>:
      D.30620 = cfg->cil_offset_to_bb;
      ip.83 = (int) ip;
      D.30624 = cfg->cil_start;
      D.30625 = (int) D.30624;
      D.31211 = ip.83 - D.30625;
      D.31212 = (unsigned int) D.31211;
      D.31213 = D.31212 * 4;
      D.31214 = D.30620 + D.31213;
      tblock = *D.31214;
      if (tblock == 0B) goto <D.31215>; else goto <D.31216>;
      <D.31215>:
      if (ip >= end) goto <D.31217>; else goto <D.31219>;
      <D.31219>:
      D.30636 = header->code;
      if (D.30636 > ip) goto <D.31217>; else goto <D.31218>;
      <D.31217>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31220>; else goto <D.31221>;
      <D.31220>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31222>; else goto <D.31223>;
      <D.31222>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31223>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31221>:
      D.31224 = mini_get_debug_options ();
      D.31225 = D.31224->break_on_unverified;
      if (D.31225 != 0) goto <D.31226>; else goto unverified;
      <D.31226>:
      __asm__ __volatile__("int $03");
      <D.31218>:
      D.30489 = cfg->mempool;
      tblock = mono_mempool_alloc0 (D.30489, 172);
      D.30597 = cfg->num_bblocks;
      D.31227 = D.30597;
      D.31228 = D.31227 + 1;
      cfg->num_bblocks = D.31228;
      D.31229 = (int) D.31227;
      tblock->block_num = D.31229;
      tblock->cil_code = ip;
      D.30685 = tblock->cil_code;
      if (D.30685 != 0B) goto <D.31230>; else goto <D.31231>;
      <D.31230>:
      D.30620 = cfg->cil_offset_to_bb;
      D.30685 = tblock->cil_code;
      D.30688 = (int) D.30685;
      D.30624 = cfg->cil_start;
      D.30625 = (int) D.30624;
      D.30689 = D.30688 - D.30625;
      D.30690 = (unsigned int) D.30689;
      D.30691 = D.30690 * 4;
      D.30692 = D.30620 + D.30691;
      *D.30692 = tblock;
      <D.31231>:
      D.30656 = cfg->real_offset;
      tblock->real_offset = D.30656;
      <D.31216>:
      <D.31210>:
      bblock.78 = bblock;
      bblock.78->next_bb = tblock;
      bblock = tblock;
      bblock.78 = bblock;
      cfg->cbb = bblock.78;
      start_new_bblock = 0;
      i = 0;
      goto <D.27369>;
      <D.27368>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 3) goto <D.31232>; else goto <D.31233>;
      <D.31232>:
      bblock.78 = bblock;
      D.31234 = bblock.78->in_stack;
      i.76 = (unsigned int) i;
      D.31235 = i.76 * 4;
      D.31236 = D.31234 + D.31235;
      D.31237 = *D.31236;
      D.31238 = D.31237->data.op[0].const_val;
      printf ("loading %d from temp %d\n", i, D.31238);
      <D.31233>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 428;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      D.31239 = cfg->varinfo;
      bblock.78 = bblock;
      D.31234 = bblock.78->in_stack;
      i.76 = (unsigned int) i;
      D.31235 = i.76 * 4;
      D.31236 = D.31234 + D.31235;
      D.31237 = *D.31236;
      D.31238 = D.31237->data.op[0].const_val;
      D.31240 = (unsigned int) D.31238;
      D.31241 = D.31240 * 4;
      D.31242 = D.31239 + D.31241;
      D.31243 = *D.31242;
      D.31244 = D.31243->data.op[1].vtype;
      D.31245 = mono_type_to_regmove (cfg, D.31244);
      D.31246 = (short unsigned int) D.31245;
      ins->opcode = D.31246;
      D.31239 = cfg->varinfo;
      bblock.78 = bblock;
      D.31234 = bblock.78->in_stack;
      i.76 = (unsigned int) i;
      D.31235 = i.76 * 4;
      D.31236 = D.31234 + D.31235;
      D.31237 = *D.31236;
      D.31238 = D.31237->data.op[0].const_val;
      D.31240 = (unsigned int) D.31238;
      D.31241 = D.31240 * 4;
      D.31242 = D.31239 + D.31241;
      D.31243 = *D.31242;
      D.31244 = D.31243->data.op[1].vtype;
      type_to_eval_stack_type (cfg, D.31244, ins);
      D.31239 = cfg->varinfo;
      bblock.78 = bblock;
      D.31234 = bblock.78->in_stack;
      i.76 = (unsigned int) i;
      D.31235 = i.76 * 4;
      D.31236 = D.31234 + D.31235;
      D.31237 = *D.31236;
      D.31238 = D.31237->data.op[0].const_val;
      D.31240 = (unsigned int) D.31238;
      D.31241 = D.31240 * 4;
      D.31242 = D.31239 + D.31241;
      D.31243 = *D.31242;
      D.31247 = D.31243->klass;
      ins->klass = D.31247;
      D.31239 = cfg->varinfo;
      bblock.78 = bblock;
      D.31234 = bblock.78->in_stack;
      i.76 = (unsigned int) i;
      D.31235 = i.76 * 4;
      D.31236 = D.31234 + D.31235;
      D.31237 = *D.31236;
      D.31238 = D.31237->data.op[0].const_val;
      D.31240 = (unsigned int) D.31238;
      D.31241 = D.31240 * 4;
      D.31242 = D.31239 + D.31241;
      D.31243 = *D.31242;
      D.31248 = D.31243->dreg;
      ins->sreg1 = D.31248;
      D.31249 = ins->type;
      D.31250 = (<unnamed type>) D.31249;
      D.31251 = alloc_dreg (cfg, D.31250);
      D.31252 = (int) D.31251;
      ins->dreg = D.31252;
      D.31253 = ins->opcode;
      if (D.31253 == 431) goto <D.31254>; else goto <D.31255>;
      <D.31254>:
      D.31239 = cfg->varinfo;
      bblock.78 = bblock;
      D.31234 = bblock.78->in_stack;
      i.76 = (unsigned int) i;
      D.31235 = i.76 * 4;
      D.31236 = D.31234 + D.31235;
      D.31237 = *D.31236;
      D.31238 = D.31237->data.op[0].const_val;
      D.31240 = (unsigned int) D.31238;
      D.31241 = D.31240 * 4;
      D.31242 = D.31239 + D.31241;
      D.31243 = *D.31242;
      D.31244 = D.31243->data.op[1].vtype;
      D.31256 = mono_class_from_mono_type (D.31244);
      ins->klass = D.31256;
      <D.31255>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.31257>; else goto <D.31258>;
      <D.31257>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.31259>;
      <D.31258>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.31259>:
      sp.84 = sp;
      sp = sp.84 + 4;
      *sp.84 = ins;
      i = i + 1;
      <D.27369>:
      bblock.78 = bblock;
      D.31261 = bblock.78->in_scount;
      D.31262 = (int) D.31261;
      if (D.31262 > i) goto <D.27368>; else goto <D.27370>;
      <D.27370>:
      if (class_inits != 0B) goto <D.31263>; else goto <D.31264>;
      <D.31263>:
      monoeg_g_slist_free (class_inits);
      <D.31264>:
      class_inits = 0B;
      goto <D.31265>;
      <D.31201>:
      D.30620 = cfg->cil_offset_to_bb;
      ip.83 = (int) ip;
      D.30624 = cfg->cil_start;
      D.30625 = (int) D.30624;
      D.31211 = ip.83 - D.30625;
      D.31212 = (unsigned int) D.31211;
      D.31213 = D.31212 * 4;
      D.31214 = D.30620 + D.31213;
      tblock = *D.31214;
      if (tblock != 0B) goto <D.31266>; else goto <D.31267>;
      <D.31266>:
      bblock.78 = bblock;
      if (tblock != bblock.78) goto <D.31268>; else goto <D.31269>;
      <D.31268>:
      bblock.78 = bblock;
      link_bblock (cfg, bblock.78, tblock);
      if (sp != stack_start) goto <D.31270>; else goto <D.31271>;
      <D.31270>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      D.31275 = D.31274 /[ex] 4;
      handle_stack_args (cfg, stack_start, D.31275);
      sp = stack_start;
      D.31276 = BIT_FIELD_REF <*cfg, 8, 3400>;
      D.31277 = D.31276 & 32;
      if (D.31277 != 0) goto <D.31278>; else goto <D.31279>;
      <D.31278>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31280>; else goto <D.31281>;
      <D.31280>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31282>; else goto <D.31283>;
      <D.31282>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31283>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31281>:
      D.31284 = mini_get_debug_options ();
      D.31285 = D.31284->break_on_unverified;
      if (D.31285 != 0) goto <D.31286>; else goto unverified;
      <D.31286>:
      __asm__ __volatile__("int $03");
      <D.31279>:
      <D.31271>:
      bblock.78 = bblock;
      bblock.78->next_bb = tblock;
      bblock = tblock;
      bblock.78 = bblock;
      cfg->cbb = bblock.78;
      i = 0;
      goto <D.27372>;
      <D.27371>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 3) goto <D.31287>; else goto <D.31288>;
      <D.31287>:
      bblock.78 = bblock;
      D.31234 = bblock.78->in_stack;
      i.76 = (unsigned int) i;
      D.31235 = i.76 * 4;
      D.31236 = D.31234 + D.31235;
      D.31237 = *D.31236;
      D.31238 = D.31237->data.op[0].const_val;
      printf ("loading %d from temp %d\n", i, D.31238);
      <D.31288>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 428;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      D.31239 = cfg->varinfo;
      bblock.78 = bblock;
      D.31234 = bblock.78->in_stack;
      i.76 = (unsigned int) i;
      D.31235 = i.76 * 4;
      D.31236 = D.31234 + D.31235;
      D.31237 = *D.31236;
      D.31238 = D.31237->data.op[0].const_val;
      D.31240 = (unsigned int) D.31238;
      D.31241 = D.31240 * 4;
      D.31242 = D.31239 + D.31241;
      D.31243 = *D.31242;
      D.31244 = D.31243->data.op[1].vtype;
      D.31289 = mono_type_to_regmove (cfg, D.31244);
      D.31290 = (short unsigned int) D.31289;
      ins->opcode = D.31290;
      D.31239 = cfg->varinfo;
      bblock.78 = bblock;
      D.31234 = bblock.78->in_stack;
      i.76 = (unsigned int) i;
      D.31235 = i.76 * 4;
      D.31236 = D.31234 + D.31235;
      D.31237 = *D.31236;
      D.31238 = D.31237->data.op[0].const_val;
      D.31240 = (unsigned int) D.31238;
      D.31241 = D.31240 * 4;
      D.31242 = D.31239 + D.31241;
      D.31243 = *D.31242;
      D.31244 = D.31243->data.op[1].vtype;
      type_to_eval_stack_type (cfg, D.31244, ins);
      D.31239 = cfg->varinfo;
      bblock.78 = bblock;
      D.31234 = bblock.78->in_stack;
      i.76 = (unsigned int) i;
      D.31235 = i.76 * 4;
      D.31236 = D.31234 + D.31235;
      D.31237 = *D.31236;
      D.31238 = D.31237->data.op[0].const_val;
      D.31240 = (unsigned int) D.31238;
      D.31241 = D.31240 * 4;
      D.31242 = D.31239 + D.31241;
      D.31243 = *D.31242;
      D.31247 = D.31243->klass;
      ins->klass = D.31247;
      D.31239 = cfg->varinfo;
      bblock.78 = bblock;
      D.31234 = bblock.78->in_stack;
      i.76 = (unsigned int) i;
      D.31235 = i.76 * 4;
      D.31236 = D.31234 + D.31235;
      D.31237 = *D.31236;
      D.31238 = D.31237->data.op[0].const_val;
      D.31240 = (unsigned int) D.31238;
      D.31241 = D.31240 * 4;
      D.31242 = D.31239 + D.31241;
      D.31243 = *D.31242;
      D.31248 = D.31243->dreg;
      ins->sreg1 = D.31248;
      D.31249 = ins->type;
      D.31250 = (<unnamed type>) D.31249;
      D.31291 = alloc_dreg (cfg, D.31250);
      D.31292 = (int) D.31291;
      ins->dreg = D.31292;
      D.31253 = ins->opcode;
      if (D.31253 == 431) goto <D.31293>; else goto <D.31294>;
      <D.31293>:
      D.31239 = cfg->varinfo;
      bblock.78 = bblock;
      D.31234 = bblock.78->in_stack;
      i.76 = (unsigned int) i;
      D.31235 = i.76 * 4;
      D.31236 = D.31234 + D.31235;
      D.31237 = *D.31236;
      D.31238 = D.31237->data.op[0].const_val;
      D.31240 = (unsigned int) D.31238;
      D.31241 = D.31240 * 4;
      D.31242 = D.31239 + D.31241;
      D.31243 = *D.31242;
      D.31244 = D.31243->data.op[1].vtype;
      D.31295 = mono_class_from_mono_type (D.31244);
      ins->klass = D.31295;
      <D.31294>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.31296>; else goto <D.31297>;
      <D.31296>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.31298>;
      <D.31297>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.31298>:
      sp.87 = sp;
      sp = sp.87 + 4;
      *sp.87 = ins;
      i = i + 1;
      <D.27372>:
      bblock.78 = bblock;
      D.31261 = bblock.78->in_scount;
      D.31262 = (int) D.31261;
      if (D.31262 > i) goto <D.27371>; else goto <D.27373>;
      <D.27373>:
      monoeg_g_slist_free (class_inits);
      class_inits = 0B;
      <D.31269>:
      <D.31267>:
      <D.31265>:
      if (skip_dead_blocks != 0) goto <D.31300>; else goto <D.31301>;
      <D.31300>:
      {
        int ip_offset;

        ip.83 = (int) ip;
        D.30636 = header->code;
        D.31196 = (int) D.30636;
        ip_offset = ip.83 - D.31196;
        D.31302 = bb->end;
        if (D.31302 == ip_offset) goto <D.31303>; else goto <D.31304>;
        <D.31303>:
        bb = bb->next;
        <D.31304>:
        D.31305 = BIT_FIELD_REF <*bb, 8, 224>;
        D.31306 = D.31305 & 2;
        if (D.31306 != 0) goto <D.31307>; else goto <D.31308>;
        <D.31307>:
        {
          int op_size;

          op_size = mono_opcode_size (ip, end);
          D.31309 = op_size <= 0;
          D.31310 = (long int) D.31309;
          D.31311 = __builtin_expect (D.31310, 0);
          if (D.31311 != 0) goto <D.31312>; else goto <D.31313>;
          <D.31312>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7183, "op_size > 0");
          <D.31313>:
          D.30569 = cfg->verbose_level;
          if (D.30569 > 3) goto <D.31314>; else goto <D.31315>;
          <D.31314>:
          printf ("SKIPPING DEAD OP at %x\n", ip_offset);
          <D.31315>:
          D.31316 = ip_offset + op_size;
          D.31302 = bb->end;
          if (D.31316 == D.31302) goto <D.31317>; else goto <D.31318>;
          <D.31317>:
          D.30489 = cfg->mempool;
          ins = mono_mempool_alloc (D.30489, 48);
          ins->data.op[1].const_val = 0;
          D.30708 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.30708;
          ins->prev = 0B;
          D.30709 = ins->prev;
          ins->next = D.30709;
          ins->opcode = 316;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.30710 = ins->sreg3;
          ins->sreg2 = D.30710;
          D.30711 = ins->sreg2;
          ins->sreg1 = D.30711;
          D.30712 = cfg->ip;
          ins->cil_code = D.30712;
          bblock.78 = bblock;
          D.30826 = bblock.78->last_ins;
          if (D.30826 != 0B) goto <D.31319>; else goto <D.31320>;
          <D.31319>:
          bblock.78 = bblock;
          D.30826 = bblock.78->last_ins;
          D.30826->next = ins;
          bblock.78 = bblock;
          D.30826 = bblock.78->last_ins;
          ins->prev = D.30826;
          bblock.78 = bblock;
          bblock.78->last_ins = ins;
          goto <D.31321>;
          <D.31320>:
          bblock.78 = bblock;
          bblock.78 = bblock;
          bblock.78->last_ins = ins;
          D.30826 = bblock.78->last_ins;
          bblock.78->code = D.30826;
          <D.31321>:
          start_new_bblock = 1;
          <D.31318>:
          op_size.88 = (sizetype) op_size;
          ip = ip + op_size.88;
          // predicted unlikely by continue predictor.
          goto <D.27376>;
        }
        <D.31308>:
      }
      <D.31301>:
      if (seq_points != 0) goto <D.31325>; else goto <D.31326>;
      <D.31325>:
      if (sp == stack_start) goto <D.31323>; else goto <D.31327>;
      <D.31327>:
      if (sym_seq_points != 0) goto <D.31328>; else goto <D.31324>;
      <D.31328>:
      ip.83 = (int) ip;
      D.30636 = header->code;
      D.31196 = (int) D.30636;
      D.31197 = ip.83 - D.31196;
      D.31329 = (unsigned int) D.31197;
      D.31330 = D.31329 / 32;
      D.31331 = seq_point_locs->data[D.31330];
      ip.83 = (int) ip;
      D.30636 = header->code;
      D.31196 = (int) D.30636;
      D.31197 = ip.83 - D.31196;
      D.31332 = D.31197 & 31;
      D.31333 = 1 << D.31332;
      D.31334 = D.31331 & D.31333;
      if (D.31334 != 0) goto <D.31323>; else goto <D.31324>;
      <D.31323>:
      {
        gboolean intr_loc;

        D.30636 = header->code;
        if (D.30636 == ip) goto <D.31336>; else goto <D.31339>;
        <D.31339>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 == 0B) goto <D.31340>; else goto <D.31337>;
        <D.31340>:
        D.31341 = cfg->header;
        D.31342 = BIT_FIELD_REF <*D.31341, 16, 80>;
        D.31343 = D.31342 & 32767;
        if (D.31343 != 0) goto <D.31336>; else goto <D.31337>;
        <D.31336>:
        iftmp.89 = 1;
        goto <D.31338>;
        <D.31337>:
        iftmp.89 = 0;
        <D.31338>:
        intr_loc = iftmp.89;
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        ins->opcode = 341;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        ip.83 = (int) ip;
        D.30636 = header->code;
        D.31196 = (int) D.30636;
        D.31197 = ip.83 - D.31196;
        ins->data.op[1].const_val = D.31197;
        D.31344 = intr_loc != 0;
        D.31345 = (unsigned char) D.31344;
        ins->flags = D.31345;
        if (sp != stack_start) goto <D.31346>; else goto <D.31347>;
        <D.31346>:
        D.31348 = ins->flags;
        D.31349 = D.31348 | 4;
        ins->flags = D.31349;
        <D.31347>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.31350>; else goto <D.31351>;
        <D.31350>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = ins;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        ins->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        goto <D.31352>;
        <D.31351>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.31352>:
        if (sym_seq_points != 0) goto <D.31353>; else goto <D.31354>;
        <D.31353>:
        ip.83 = (int) ip;
        D.30636 = header->code;
        D.31196 = (int) D.30636;
        D.31197 = ip.83 - D.31196;
        D.31329 = (unsigned int) D.31197;
        D.31355 = D.31329 / 32;
        D.31356 = seq_point_set_locs->data[D.31355];
        ip.83 = (int) ip;
        D.30636 = header->code;
        D.31196 = (int) D.30636;
        D.31197 = ip.83 - D.31196;
        D.31332 = D.31197 & 31;
        D.31333 = 1 << D.31332;
        D.31357 = D.31356 | D.31333;
        seq_point_set_locs->data[D.31355] = D.31357;
        <D.31354>:
      }
      <D.31324>:
      <D.31326>:
      bblock.78 = bblock;
      D.30656 = cfg->real_offset;
      bblock.78->real_offset = D.30656;
      D.30459 = cfg->method;
      if (D.30459 == method) goto <D.31358>; else goto <D.31359>;
      <D.31358>:
      D.31360 = cfg->coverage_info;
      if (D.31360 != 0B) goto <D.31361>; else goto <D.31362>;
      <D.31361>:
      {
        guint32 cil_offset;

        ip.83 = (int) ip;
        D.30636 = header->code;
        D.31196 = (int) D.30636;
        D.31197 = ip.83 - D.31196;
        cil_offset = (guint32) D.31197;
        D.31360 = cfg->coverage_info;
        D.31360->data[cil_offset].cil_code = ip;
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        ins->opcode = 427;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        D.31360 = cfg->coverage_info;
        D.31363 = &D.31360->data[cil_offset].count;
        ins->data.op[0].p = D.31363;
        ins->data.op[1].const_val = 1;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.31364>; else goto <D.31365>;
        <D.31364>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = ins;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        ins->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        goto <D.31366>;
        <D.31365>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.31366>:
      }
      <D.31362>:
      <D.31359>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 3) goto <D.31367>; else goto <D.31368>;
      <D.31367>:
      D.31369 = mono_disasm_code_one (0B, method, ip, 0B);
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      D.31275 = D.31274 /[ex] 4;
      bblock.78 = bblock;
      D.31370 = bblock.78->block_num;
      printf ("converting (in B%d: stack: %d) %s", D.31370, D.31275, D.31369);
      <D.31368>:
      D.31371 = *ip;
      D.31372 = (int) D.31371;
      switch (D.31372) <default: <D.28274>, case 0: <D.27379>, case 1: <D.27381>, case 2: <D.27382>, case 3: <D.27383>, case 4: <D.27384>, case 5: <D.27385>, case 6: <D.27386>, case 7: <D.27387>, case 8: <D.27388>, case 9: <D.27389>, case 10: <D.27390>, case 11: <D.27391>, case 12: <D.27392>, case 13: <D.27393>, case 14: <D.27394>, case 15: <D.27395>, case 16: <D.27398>, case 17: <D.27399>, case 18: <D.27400>, case 19: <D.27404>, case 20: <D.27405>, case 21: <D.27406>, case 22: <D.27407>, case 23: <D.27408>, case 24: <D.27409>, case 25: <D.27410>, case 26: <D.27411>, case 27: <D.27412>, case 28: <D.27413>, case 29: <D.27414>, case 30: <D.27415>, case 31: <D.27416>, case 32: <D.27417>, case 33: <D.27418>, case 34: <D.27419>, case 35: <D.27427>, case 37: <D.27435>, case 38: <D.27438>, case 39: <D.27440>, case 40: <D.27454>, case 41: <D.27453>, case 42: <D.27595>, case 43: <D.27601>, case 44: <D.27614>, case 45: <D.27615>, case 46: <D.27602>, case 47: <D.27603>, case 48: <D.27604>, case 49: <D.27605>, case 50: <D.27606>, case 51: <D.27607>, case 52: <D.27608>, case 53: <D.27609>, case 54: <D.27610>, case 55: <D.27611>, case 56: <D.27613>, case 57: <D.27616>, case 58: <D.27617>, case 59: <D.27622>, case 60: <D.27623>, case 61: <D.27624>, case 62: <D.27625>, case 63: <D.27626>, case 64: <D.27627>, case 65: <D.27628>, case 66: <D.27629>, case 67: <D.27630>, case 68: <D.27631>, case 69: <D.27633>, case 70: <D.27663>, case 71: <D.27664>, case 72: <D.27665>, case 73: <D.27666>, case 74: <D.27667>, case 75: <D.27668>, case 76: <D.27669>, case 77: <D.27670>, case 78: <D.27671>, case 79: <D.27672>, case 80: <D.27673>, case 81: <D.27680>, case 82: <D.27681>, case 83: <D.27682>, case 84: <D.27683>, case 85: <D.27684>, case 86: <D.27685>, case 87: <D.27686>, case 88: <D.27690>, case 89: <D.27691>, case 90: <D.27688>, case 91: <D.27692>, case 92: <D.27693>, case 93: <D.27694>, case 94: <D.27695>, case 95: <D.27696>, case 96: <D.27697>, case 97: <D.27698>, case 98: <D.27699>, case 99: <D.27700>, case 100: <D.27701>, case 101: <D.27703>, case 102: <D.27704>, case 103: <D.27705>, case 104: <D.27706>, case 105: <D.27707>, case 106: <D.27711>, case 107: <D.27708>, case 108: <D.27709>, case 109: <D.27710>, case 110: <D.27712>, case 111: <D.27455>, case 112: <D.27745>, case 113: <D.27749>, case 114: <D.27759>, case 115: <D.27770>, case 116: <D.27796>, case 117: <D.27806>, case 118: <D.27715>, case 119: <D.28272>, case 120: <D.28273>, case 121: <D.27841>, case 122: <D.28092>, case 123: <D.27845>, case 124: <D.27846>, case 125: <D.27847>, case 126: <D.27848>, case 127: <D.27849>, case 128: <D.27850>, case 129: <D.27963>, case 130: <D.27725>, case 131: <D.27726>, case 132: <D.27727>, case 133: <D.27728>, case 134: <D.27729>, case 135: <D.27730>, case 136: <D.27731>, case 137: <D.27732>, case 138: <D.27733>, case 139: <D.27734>, case 140: <D.27826>, case 141: <D.27964>, case 142: <D.27982>, case 143: <D.27983>, case 144: <D.27986>, case 145: <D.27987>, case 146: <D.27988>, case 147: <D.27989>, case 148: <D.27990>, case 149: <D.27991>, case 150: <D.27992>, case 151: <D.27993>, case 152: <D.27994>, case 153: <D.27995>, case 154: <D.27996>, case 155: <D.28017>, case 156: <D.28018>, case 157: <D.28019>, case 158: <D.28020>, case 159: <D.28021>, case 160: <D.28022>, case 161: <D.28023>, case 162: <D.28024>, case 163: <D.27985>, case 164: <D.28025>, case 165: <D.27816>, case 179: <D.27718>, case 180: <D.27722>, case 181: <D.27719>, case 182: <D.27723>, case 183: <D.27717>, case 184: <D.27724>, case 185: <D.27713>, case 186: <D.27714>, case 194: <D.28027>, case 195: <D.28026>, case 198: <D.28038>, case 208: <D.28059>, case 209: <D.27735>, case 210: <D.27736>, case 211: <D.27737>, case 212: <D.27720>, case 213: <D.27721>, case 214: <D.27739>, case 215: <D.27740>, case 216: <D.27741>, case 217: <D.27742>, case 218: <D.27743>, case 219: <D.27744>, case 220: <D.28093>, case 221: <D.28097>, case 222: <D.28098>, case 223: <D.27687>, case 224: <D.27738>, case 240: <D.28119>, case 254: <D.28190>>
      <D.27379>:
      D.31373 = seq_points != 0;
      D.31374 = sym_seq_points == 0;
      D.31375 = D.31373 & D.31374;
      if (D.31375 != 0) goto <D.31376>; else goto <D.31377>;
      <D.31376>:
      if (sp != stack_start) goto <D.31378>; else goto <D.31379>;
      <D.31378>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 341;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      ip.83 = (int) ip;
      D.30636 = header->code;
      D.31196 = (int) D.30636;
      D.31197 = ip.83 - D.31196;
      ins->data.op[1].const_val = D.31197;
      ins->flags = 0;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.31380>; else goto <D.31381>;
      <D.31380>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.31382>;
      <D.31381>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.31382>:
      <D.31379>:
      <D.31377>:
      D.30476 = BIT_FIELD_REF <*cfg, 8, 3424>;
      D.31383 = D.30476 & 16;
      if (D.31383 != 0) goto <D.31384>; else goto <D.31385>;
      <D.31384>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 317;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      goto <D.31386>;
      <D.31385>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 316;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      <D.31386>:
      ip = ip + 1;
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      if (D.30826 != 0B) goto <D.31387>; else goto <D.31388>;
      <D.31387>:
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      D.30826->next = ins;
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      ins->prev = D.30826;
      bblock.78 = bblock;
      bblock.78->last_ins = ins;
      goto <D.31389>;
      <D.31388>:
      bblock.78 = bblock;
      bblock.78 = bblock;
      bblock.78->last_ins = ins;
      D.30826 = bblock.78->last_ins;
      bblock.78->code = D.30826;
      <D.31389>:
      goto <D.27380>;
      <D.27381>:
      D.30459 = cfg->method;
      D.31390 = should_insert_brekpoint (D.30459);
      if (D.31390 != 0) goto <D.31391>; else goto <D.31392>;
      <D.31391>:
      ins = mono_emit_jit_icall (cfg, mono_debugger_agent_user_break, 0B);
      goto <D.31393>;
      <D.31392>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 316;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      <D.31393>:
      ip = ip + 1;
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      if (D.30826 != 0B) goto <D.31394>; else goto <D.31395>;
      <D.31394>:
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      D.30826->next = ins;
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      ins->prev = D.30826;
      bblock.78 = bblock;
      bblock.78->last_ins = ins;
      goto <D.31396>;
      <D.31395>:
      bblock.78 = bblock;
      bblock.78 = bblock;
      bblock.78->last_ins = ins;
      D.30826 = bblock.78->last_ins;
      bblock.78->code = D.30826;
      <D.31396>:
      goto <D.27380>;
      <D.27382>:
      <D.27383>:
      <D.27384>:
      <D.27385>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      D.31275 = D.31274 /[ex] 4;
      D.31188 = header->max_stack;
      D.31189 = (int) D.31188;
      if (D.31275 >= D.31189) goto <D.31397>; else goto <D.31398>;
      <D.31397>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31399>; else goto <D.31400>;
      <D.31399>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31401>; else goto <D.31402>;
      <D.31401>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31402>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31400>:
      D.31403 = mini_get_debug_options ();
      D.31404 = D.31403->break_on_unverified;
      if (D.31404 != 0) goto <D.31405>; else goto unverified;
      <D.31405>:
      __asm__ __volatile__("int $03");
      <D.31398>:
      D.31371 = *ip;
      D.31372 = (int) D.31371;
      n = D.31372 + -2;
      n.90 = (unsigned int) n;
      if (n.90 >= num_args) goto <D.31407>; else goto <D.31408>;
      <D.31407>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31409>; else goto <D.31410>;
      <D.31409>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31411>; else goto <D.31412>;
      <D.31411>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31412>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31410>:
      D.31413 = mini_get_debug_options ();
      D.31414 = D.31413->break_on_unverified;
      if (D.31414 != 0) goto <D.31415>; else goto unverified;
      <D.31415>:
      __asm__ __volatile__("int $03");
      <D.31408>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 428;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      D.31116 = cfg->arg_types;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31417 = D.31116 + D.31416;
      D.31418 = *D.31417;
      D.31419 = mono_type_to_regmove (cfg, D.31418);
      D.31420 = (short unsigned int) D.31419;
      ins->opcode = D.31420;
      D.31116 = cfg->arg_types;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31417 = D.31116 + D.31416;
      D.31418 = *D.31417;
      type_to_eval_stack_type (cfg, D.31418, ins);
      D.31106 = cfg->args;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31421 = D.31106 + D.31416;
      D.31422 = *D.31421;
      D.31423 = D.31422->klass;
      ins->klass = D.31423;
      D.31106 = cfg->args;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31421 = D.31106 + D.31416;
      D.31422 = *D.31421;
      D.31424 = D.31422->dreg;
      ins->sreg1 = D.31424;
      D.31249 = ins->type;
      D.31250 = (<unnamed type>) D.31249;
      D.31425 = alloc_dreg (cfg, D.31250);
      D.31426 = (int) D.31425;
      ins->dreg = D.31426;
      D.31253 = ins->opcode;
      if (D.31253 == 431) goto <D.31427>; else goto <D.31428>;
      <D.31427>:
      D.31116 = cfg->arg_types;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31417 = D.31116 + D.31416;
      D.31418 = *D.31417;
      D.31429 = mono_class_from_mono_type (D.31418);
      ins->klass = D.31429;
      <D.31428>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.31430>; else goto <D.31431>;
      <D.31430>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.31432>;
      <D.31431>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.31432>:
      ip = ip + 1;
      sp.91 = sp;
      sp = sp.91 + 4;
      *sp.91 = ins;
      goto <D.27380>;
      <D.27386>:
      <D.27387>:
      <D.27388>:
      <D.27389>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      D.31275 = D.31274 /[ex] 4;
      D.31188 = header->max_stack;
      D.31189 = (int) D.31188;
      if (D.31275 >= D.31189) goto <D.31434>; else goto <D.31435>;
      <D.31434>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31436>; else goto <D.31437>;
      <D.31436>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31438>; else goto <D.31439>;
      <D.31438>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31439>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31437>:
      D.31440 = mini_get_debug_options ();
      D.31441 = D.31440->break_on_unverified;
      if (D.31441 != 0) goto <D.31442>; else goto unverified;
      <D.31442>:
      __asm__ __volatile__("int $03");
      <D.31435>:
      D.31371 = *ip;
      D.31372 = (int) D.31371;
      n = D.31372 + -6;
      n.90 = (unsigned int) n;
      D.31093 = header->num_locals;
      D.31443 = (unsigned int) D.31093;
      if (n.90 >= D.31443) goto <D.31444>; else goto <D.31445>;
      <D.31444>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31446>; else goto <D.31447>;
      <D.31446>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31448>; else goto <D.31449>;
      <D.31448>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31449>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31447>:
      D.31450 = mini_get_debug_options ();
      D.31451 = D.31450->break_on_unverified;
      if (D.31451 != 0) goto <D.31452>; else goto unverified;
      <D.31452>:
      __asm__ __volatile__("int $03");
      <D.31445>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 428;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      D.31081 = header->locals[n];
      D.31453 = mono_type_to_regmove (cfg, D.31081);
      D.31454 = (short unsigned int) D.31453;
      ins->opcode = D.31454;
      D.31081 = header->locals[n];
      type_to_eval_stack_type (cfg, D.31081, ins);
      D.31455 = cfg->locals;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31456 = D.31455 + D.31416;
      D.31457 = *D.31456;
      D.31458 = D.31457->klass;
      ins->klass = D.31458;
      D.31455 = cfg->locals;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31456 = D.31455 + D.31416;
      D.31457 = *D.31456;
      D.31459 = D.31457->dreg;
      ins->sreg1 = D.31459;
      D.31249 = ins->type;
      D.31250 = (<unnamed type>) D.31249;
      D.31460 = alloc_dreg (cfg, D.31250);
      D.31461 = (int) D.31460;
      ins->dreg = D.31461;
      D.31253 = ins->opcode;
      if (D.31253 == 431) goto <D.31462>; else goto <D.31463>;
      <D.31462>:
      D.31081 = header->locals[n];
      D.31464 = mono_class_from_mono_type (D.31081);
      ins->klass = D.31464;
      <D.31463>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.31465>; else goto <D.31466>;
      <D.31465>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.31467>;
      <D.31466>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.31467>:
      ip = ip + 1;
      sp.92 = sp;
      sp = sp.92 + 4;
      *sp.92 = ins;
      goto <D.27380>;
      <D.27390>:
      <D.27391>:
      <D.27392>:
      <D.27393>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      if (D.31274 <= 3) goto <D.31469>; else goto <D.31470>;
      <D.31469>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31471>; else goto <D.31472>;
      <D.31471>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31473>; else goto <D.31474>;
      <D.31473>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31474>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31472>:
      D.31475 = mini_get_debug_options ();
      D.31476 = D.31475->break_on_unverified;
      if (D.31476 != 0) goto <D.31477>; else goto unverified;
      <D.31477>:
      __asm__ __volatile__("int $03");
      <D.31470>:
      D.31371 = *ip;
      D.31372 = (int) D.31371;
      n = D.31372 + -10;
      n.90 = (unsigned int) n;
      D.31093 = header->num_locals;
      D.31443 = (unsigned int) D.31093;
      if (n.90 >= D.31443) goto <D.31478>; else goto <D.31479>;
      <D.31478>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31480>; else goto <D.31481>;
      <D.31480>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31482>; else goto <D.31483>;
      <D.31482>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31483>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31481>:
      D.31484 = mini_get_debug_options ();
      D.31485 = D.31484->break_on_unverified;
      if (D.31485 != 0) goto <D.31486>; else goto unverified;
      <D.31486>:
      __asm__ __volatile__("int $03");
      <D.31479>:
      sp = sp + 4294967292;
      if (dont_verify_stloc == 0) goto <D.31487>; else goto <D.31488>;
      <D.31487>:
      D.31489 = *sp;
      D.31081 = header->locals[n];
      D.31490 = target_type_is_incompatible (cfg, D.31081, D.31489);
      if (D.31490 != 0) goto <D.31491>; else goto <D.31492>;
      <D.31491>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31493>; else goto <D.31494>;
      <D.31493>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31495>; else goto <D.31496>;
      <D.31495>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31496>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31494>:
      D.31497 = mini_get_debug_options ();
      D.31498 = D.31497->break_on_unverified;
      if (D.31498 != 0) goto <D.31499>; else goto unverified;
      <D.31499>:
      __asm__ __volatile__("int $03");
      <D.31492>:
      <D.31488>:
      emit_stloc_ir (cfg, sp, header, n);
      ip = ip + 1;
      inline_costs = inline_costs + 1;
      goto <D.27380>;
      <D.27394>:
      D.31500 = ip + 2;
      if (D.31500 > end) goto <D.31501>; else goto <D.31502>;
      <D.31501>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31503>; else goto <D.31504>;
      <D.31503>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31505>; else goto <D.31506>;
      <D.31505>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31506>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31504>:
      D.31507 = mini_get_debug_options ();
      D.31508 = D.31507->break_on_unverified;
      if (D.31508 != 0) goto <D.31509>; else goto unverified;
      <D.31509>:
      __asm__ __volatile__("int $03");
      <D.31502>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      D.31275 = D.31274 /[ex] 4;
      D.31188 = header->max_stack;
      D.31189 = (int) D.31188;
      if (D.31275 >= D.31189) goto <D.31510>; else goto <D.31511>;
      <D.31510>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31512>; else goto <D.31513>;
      <D.31512>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31514>; else goto <D.31515>;
      <D.31514>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31515>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31513>:
      D.31516 = mini_get_debug_options ();
      D.31517 = D.31516->break_on_unverified;
      if (D.31517 != 0) goto <D.31518>; else goto unverified;
      <D.31518>:
      __asm__ __volatile__("int $03");
      <D.31511>:
      D.31519 = ip + 1;
      D.31520 = *D.31519;
      n = (int) D.31520;
      n.90 = (unsigned int) n;
      if (n.90 >= num_args) goto <D.31521>; else goto <D.31522>;
      <D.31521>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31523>; else goto <D.31524>;
      <D.31523>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31525>; else goto <D.31526>;
      <D.31525>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31526>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31524>:
      D.31527 = mini_get_debug_options ();
      D.31528 = D.31527->break_on_unverified;
      if (D.31528 != 0) goto <D.31529>; else goto unverified;
      <D.31529>:
      __asm__ __volatile__("int $03");
      <D.31522>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 428;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      D.31116 = cfg->arg_types;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31417 = D.31116 + D.31416;
      D.31418 = *D.31417;
      D.31530 = mono_type_to_regmove (cfg, D.31418);
      D.31531 = (short unsigned int) D.31530;
      ins->opcode = D.31531;
      D.31116 = cfg->arg_types;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31417 = D.31116 + D.31416;
      D.31418 = *D.31417;
      type_to_eval_stack_type (cfg, D.31418, ins);
      D.31106 = cfg->args;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31421 = D.31106 + D.31416;
      D.31422 = *D.31421;
      D.31423 = D.31422->klass;
      ins->klass = D.31423;
      D.31106 = cfg->args;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31421 = D.31106 + D.31416;
      D.31422 = *D.31421;
      D.31424 = D.31422->dreg;
      ins->sreg1 = D.31424;
      D.31249 = ins->type;
      D.31250 = (<unnamed type>) D.31249;
      D.31532 = alloc_dreg (cfg, D.31250);
      D.31533 = (int) D.31532;
      ins->dreg = D.31533;
      D.31253 = ins->opcode;
      if (D.31253 == 431) goto <D.31534>; else goto <D.31535>;
      <D.31534>:
      D.31116 = cfg->arg_types;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31417 = D.31116 + D.31416;
      D.31418 = *D.31417;
      D.31536 = mono_class_from_mono_type (D.31418);
      ins->klass = D.31536;
      <D.31535>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.31537>; else goto <D.31538>;
      <D.31537>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.31539>;
      <D.31538>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.31539>:
      sp.93 = sp;
      sp = sp.93 + 4;
      *sp.93 = ins;
      ip = ip + 2;
      goto <D.27380>;
      <D.27395>:
      D.31500 = ip + 2;
      if (D.31500 > end) goto <D.31541>; else goto <D.31542>;
      <D.31541>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31543>; else goto <D.31544>;
      <D.31543>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31545>; else goto <D.31546>;
      <D.31545>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31546>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31544>:
      D.31547 = mini_get_debug_options ();
      D.31548 = D.31547->break_on_unverified;
      if (D.31548 != 0) goto <D.31549>; else goto unverified;
      <D.31549>:
      __asm__ __volatile__("int $03");
      <D.31542>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      D.31275 = D.31274 /[ex] 4;
      D.31188 = header->max_stack;
      D.31189 = (int) D.31188;
      if (D.31275 >= D.31189) goto <D.31550>; else goto <D.31551>;
      <D.31550>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31552>; else goto <D.31553>;
      <D.31552>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31554>; else goto <D.31555>;
      <D.31554>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31555>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31553>:
      D.31556 = mini_get_debug_options ();
      D.31557 = D.31556->break_on_unverified;
      if (D.31557 != 0) goto <D.31558>; else goto unverified;
      <D.31558>:
      __asm__ __volatile__("int $03");
      <D.31551>:
      D.31519 = ip + 1;
      D.31520 = *D.31519;
      n = (int) D.31520;
      n.90 = (unsigned int) n;
      if (n.90 >= num_args) goto <D.31559>; else goto <D.31560>;
      <D.31559>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31561>; else goto <D.31562>;
      <D.31561>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31563>; else goto <D.31564>;
      <D.31563>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31564>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31562>:
      D.31565 = mini_get_debug_options ();
      D.31566 = D.31565->break_on_unverified;
      if (D.31566 != 0) goto <D.31567>; else goto unverified;
      <D.31567>:
      __asm__ __volatile__("int $03");
      <D.31560>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 314;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31568 = arg_array + D.31416;
      D.31569 = *D.31568;
      ins->data.op[0].p = D.31569;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31568 = arg_array + D.31416;
      D.31569 = *D.31568;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31568 = arg_array + D.31416;
      D.31569 = *D.31568;
      D.31570 = D.31569->flags;
      D.31571 = D.31570 | 16;
      D.31569->flags = D.31571;
      ins->type = 5;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31568 = arg_array + D.31416;
      D.31569 = *D.31568;
      D.31572 = D.31569->klass;
      ins->klass = D.31572;
      D.31573 = alloc_dreg (cfg, 5);
      D.31574 = (int) D.31573;
      ins->dreg = D.31574;
      cfg->has_indirection = 1;
      D.30637 = cfg->gsharedvt;
      D.31575 = D.30637 != 0;
      D.31576 = (long int) D.31575;
      D.31577 = __builtin_expect (D.31576, 0);
      if (D.31577 != 0) goto <D.31578>; else goto <D.31579>;
      <D.31578>:
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31568 = arg_array + D.31416;
      D.31569 = *D.31568;
      D.31580 = D.31569->data.op[1].vtype;
      D.31581 = mini_is_gsharedvt_variable_type (cfg, D.31580);
      if (D.31581 != 0) goto <D.31582>; else goto <D.31583>;
      <D.31582>:
      handle_gsharedvt_ldaddr (cfg);
      <D.31583>:
      <D.31579>:
      D.31585 = mono_arch_is_soft_float ();
      if (D.31585 != 0) goto <D.31586>; else goto <D.31587>;
      <D.31586>:
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31568 = arg_array + D.31416;
      D.31569 = *D.31568;
      D.31588 = D.31569->type;
      D.31589 = D.31588 == 2;
      D.31590 = D.31588 == 4;
      D.31591 = D.31589 | D.31590;
      D.31592 = (int) D.31591;
      iftmp.94 = (_Bool) D.31592;
      goto <D.31593>;
      <D.31587>:
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31568 = arg_array + D.31416;
      D.31569 = *D.31568;
      D.31594 = D.31569->type;
      iftmp.94 = D.31594 == 2;
      <D.31593>:
      if (iftmp.94 != 0) goto <D.31595>; else goto <D.31596>;
      <D.31595>:
      {
        struct MonoInst * var1;
        struct MonoInst * var2;

        n.90 = (unsigned int) n;
        D.31416 = n.90 * 4;
        D.31568 = arg_array + D.31416;
        D.31569 = *D.31568;
        D.31598 = D.31569->dreg;
        D.31599 = D.31598 + 1;
        D.31600 = (unsigned int) D.31599;
        D.31601 = cfg->vreg_to_inst_len;
        if (D.31600 < D.31601) goto <D.31602>; else goto <D.31603>;
        <D.31602>:
        D.31604 = cfg->vreg_to_inst;
        n.90 = (unsigned int) n;
        D.31416 = n.90 * 4;
        D.31568 = arg_array + D.31416;
        D.31569 = *D.31568;
        D.31598 = D.31569->dreg;
        D.31605 = (sizetype) D.31598;
        D.31606 = D.31605 + 1;
        D.31607 = D.31606 * 4;
        D.31608 = D.31604 + D.31607;
        iftmp.95 = *D.31608;
        goto <D.31609>;
        <D.31603>:
        iftmp.95 = 0B;
        <D.31609>:
        var1 = iftmp.95;
        n.90 = (unsigned int) n;
        D.31416 = n.90 * 4;
        D.31568 = arg_array + D.31416;
        D.31569 = *D.31568;
        D.31598 = D.31569->dreg;
        D.31611 = D.31598 + 2;
        D.31612 = (unsigned int) D.31611;
        D.31601 = cfg->vreg_to_inst_len;
        if (D.31612 < D.31601) goto <D.31613>; else goto <D.31614>;
        <D.31613>:
        D.31604 = cfg->vreg_to_inst;
        n.90 = (unsigned int) n;
        D.31416 = n.90 * 4;
        D.31568 = arg_array + D.31416;
        D.31569 = *D.31568;
        D.31598 = D.31569->dreg;
        D.31605 = (sizetype) D.31598;
        D.31615 = D.31605 + 2;
        D.31616 = D.31615 * 4;
        D.31617 = D.31604 + D.31616;
        iftmp.96 = *D.31617;
        goto <D.31618>;
        <D.31614>:
        iftmp.96 = 0B;
        <D.31618>:
        var2 = iftmp.96;
        D.31619 = var1 == 0B;
        D.31620 = (long int) D.31619;
        D.31621 = __builtin_expect (D.31620, 0);
        if (D.31621 != 0) goto <D.31622>; else goto <D.31623>;
        <D.31622>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7323, "var1");
        <D.31623>:
        D.31624 = var2 == 0B;
        D.31625 = (long int) D.31624;
        D.31626 = __builtin_expect (D.31625, 0);
        if (D.31626 != 0) goto <D.31627>; else goto <D.31628>;
        <D.31627>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7323, "var2");
        <D.31628>:
        D.31629 = var1->flags;
        D.31630 = D.31629 | 16;
        var1->flags = D.31630;
        D.31631 = var2->flags;
        D.31632 = D.31631 | 16;
        var2->flags = D.31632;
      }
      <D.31596>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.31633>; else goto <D.31634>;
      <D.31633>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.31635>;
      <D.31634>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.31635>:
      sp.97 = sp;
      sp = sp.97 + 4;
      *sp.97 = ins;
      ip = ip + 2;
      goto <D.27380>;
      <D.27398>:
      D.31500 = ip + 2;
      if (D.31500 > end) goto <D.31637>; else goto <D.31638>;
      <D.31637>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31639>; else goto <D.31640>;
      <D.31639>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31641>; else goto <D.31642>;
      <D.31641>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31642>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31640>:
      D.31643 = mini_get_debug_options ();
      D.31644 = D.31643->break_on_unverified;
      if (D.31644 != 0) goto <D.31645>; else goto unverified;
      <D.31645>:
      __asm__ __volatile__("int $03");
      <D.31638>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      if (D.31274 <= 3) goto <D.31646>; else goto <D.31647>;
      <D.31646>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31648>; else goto <D.31649>;
      <D.31648>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31650>; else goto <D.31651>;
      <D.31650>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31651>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31649>:
      D.31652 = mini_get_debug_options ();
      D.31653 = D.31652->break_on_unverified;
      if (D.31653 != 0) goto <D.31654>; else goto unverified;
      <D.31654>:
      __asm__ __volatile__("int $03");
      <D.31647>:
      sp = sp + 4294967292;
      D.31519 = ip + 1;
      D.31520 = *D.31519;
      n = (int) D.31520;
      n.90 = (unsigned int) n;
      if (n.90 >= num_args) goto <D.31655>; else goto <D.31656>;
      <D.31655>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31657>; else goto <D.31658>;
      <D.31657>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31659>; else goto <D.31660>;
      <D.31659>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31660>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31658>:
      D.31661 = mini_get_debug_options ();
      D.31662 = D.31661->break_on_unverified;
      if (D.31662 != 0) goto <D.31663>; else goto unverified;
      <D.31663>:
      __asm__ __volatile__("int $03");
      <D.31656>:
      if (dont_verify_stloc == 0) goto <D.31664>; else goto <D.31665>;
      <D.31664>:
      D.31489 = *sp;
      D.31519 = ip + 1;
      D.31520 = *D.31519;
      D.31666 = (unsigned int) D.31520;
      D.31667 = D.31666 * 4;
      D.31668 = param_types + D.31667;
      D.31669 = *D.31668;
      D.31670 = target_type_is_incompatible (cfg, D.31669, D.31489);
      if (D.31670 != 0) goto <D.31671>; else goto <D.31672>;
      <D.31671>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31673>; else goto <D.31674>;
      <D.31673>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31675>; else goto <D.31676>;
      <D.31675>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31676>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31674>:
      D.31677 = mini_get_debug_options ();
      D.31678 = D.31677->break_on_unverified;
      if (D.31678 != 0) goto <D.31679>; else goto unverified;
      <D.31679>:
      __asm__ __volatile__("int $03");
      <D.31672>:
      <D.31665>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 428;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      D.31116 = cfg->arg_types;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31417 = D.31116 + D.31416;
      D.31418 = *D.31417;
      D.31680 = mono_type_to_regmove (cfg, D.31418);
      D.31681 = (short unsigned int) D.31680;
      ins->opcode = D.31681;
      D.31106 = cfg->args;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31421 = D.31106 + D.31416;
      D.31422 = *D.31421;
      D.31423 = D.31422->klass;
      ins->klass = D.31423;
      D.31489 = *sp;
      D.31682 = D.31489->dreg;
      ins->sreg1 = D.31682;
      D.31106 = cfg->args;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31421 = D.31106 + D.31416;
      D.31422 = *D.31421;
      D.31424 = D.31422->dreg;
      ins->dreg = D.31424;
      D.31253 = ins->opcode;
      if (D.31253 == 431) goto <D.31683>; else goto <D.31684>;
      <D.31683>:
      D.31116 = cfg->arg_types;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31417 = D.31116 + D.31416;
      D.31418 = *D.31417;
      D.31685 = mono_class_from_mono_type (D.31418);
      ins->klass = D.31685;
      <D.31684>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.31686>; else goto <D.31687>;
      <D.31686>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.31688>;
      <D.31687>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.31688>:
      ip = ip + 2;
      goto <D.27380>;
      <D.27399>:
      D.31500 = ip + 2;
      if (D.31500 > end) goto <D.31689>; else goto <D.31690>;
      <D.31689>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31691>; else goto <D.31692>;
      <D.31691>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31693>; else goto <D.31694>;
      <D.31693>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31694>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31692>:
      D.31695 = mini_get_debug_options ();
      D.31696 = D.31695->break_on_unverified;
      if (D.31696 != 0) goto <D.31697>; else goto unverified;
      <D.31697>:
      __asm__ __volatile__("int $03");
      <D.31690>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      D.31275 = D.31274 /[ex] 4;
      D.31188 = header->max_stack;
      D.31189 = (int) D.31188;
      if (D.31275 >= D.31189) goto <D.31698>; else goto <D.31699>;
      <D.31698>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31700>; else goto <D.31701>;
      <D.31700>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31702>; else goto <D.31703>;
      <D.31702>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31703>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31701>:
      D.31704 = mini_get_debug_options ();
      D.31705 = D.31704->break_on_unverified;
      if (D.31705 != 0) goto <D.31706>; else goto unverified;
      <D.31706>:
      __asm__ __volatile__("int $03");
      <D.31699>:
      D.31519 = ip + 1;
      D.31520 = *D.31519;
      n = (int) D.31520;
      n.90 = (unsigned int) n;
      D.31093 = header->num_locals;
      D.31443 = (unsigned int) D.31093;
      if (n.90 >= D.31443) goto <D.31707>; else goto <D.31708>;
      <D.31707>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31709>; else goto <D.31710>;
      <D.31709>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31711>; else goto <D.31712>;
      <D.31711>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31712>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31710>:
      D.31713 = mini_get_debug_options ();
      D.31714 = D.31713->break_on_unverified;
      if (D.31714 != 0) goto <D.31715>; else goto unverified;
      <D.31715>:
      __asm__ __volatile__("int $03");
      <D.31708>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 428;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      D.31081 = header->locals[n];
      D.31716 = mono_type_to_regmove (cfg, D.31081);
      D.31717 = (short unsigned int) D.31716;
      ins->opcode = D.31717;
      D.31081 = header->locals[n];
      type_to_eval_stack_type (cfg, D.31081, ins);
      D.31455 = cfg->locals;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31456 = D.31455 + D.31416;
      D.31457 = *D.31456;
      D.31458 = D.31457->klass;
      ins->klass = D.31458;
      D.31455 = cfg->locals;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31456 = D.31455 + D.31416;
      D.31457 = *D.31456;
      D.31459 = D.31457->dreg;
      ins->sreg1 = D.31459;
      D.31249 = ins->type;
      D.31250 = (<unnamed type>) D.31249;
      D.31718 = alloc_dreg (cfg, D.31250);
      D.31719 = (int) D.31718;
      ins->dreg = D.31719;
      D.31253 = ins->opcode;
      if (D.31253 == 431) goto <D.31720>; else goto <D.31721>;
      <D.31720>:
      D.31081 = header->locals[n];
      D.31722 = mono_class_from_mono_type (D.31081);
      ins->klass = D.31722;
      <D.31721>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.31723>; else goto <D.31724>;
      <D.31723>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.31725>;
      <D.31724>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.31725>:
      sp.98 = sp;
      sp = sp.98 + 4;
      *sp.98 = ins;
      ip = ip + 2;
      goto <D.27380>;
      <D.27400>:
      {
        unsigned char * tmp_ip;

        D.31500 = ip + 2;
        if (D.31500 > end) goto <D.31727>; else goto <D.31728>;
        <D.31727>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.31729>; else goto <D.31730>;
        <D.31729>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.31731>; else goto <D.31732>;
        <D.31731>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.31732>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.31730>:
        D.31733 = mini_get_debug_options ();
        D.31734 = D.31733->break_on_unverified;
        if (D.31734 != 0) goto <D.31735>; else goto unverified;
        <D.31735>:
        __asm__ __volatile__("int $03");
        <D.31728>:
        sp.85 = (int) sp;
        stack_start.86 = (int) stack_start;
        D.31274 = sp.85 - stack_start.86;
        D.31275 = D.31274 /[ex] 4;
        D.31188 = header->max_stack;
        D.31189 = (int) D.31188;
        if (D.31275 >= D.31189) goto <D.31736>; else goto <D.31737>;
        <D.31736>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.31738>; else goto <D.31739>;
        <D.31738>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.31740>; else goto <D.31741>;
        <D.31740>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.31741>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.31739>:
        D.31742 = mini_get_debug_options ();
        D.31743 = D.31742->break_on_unverified;
        if (D.31743 != 0) goto <D.31744>; else goto unverified;
        <D.31744>:
        __asm__ __volatile__("int $03");
        <D.31737>:
        D.31519 = ip + 1;
        D.31520 = *D.31519;
        D.31745 = (short unsigned int) D.31520;
        D.31093 = header->num_locals;
        if (D.31745 >= D.31093) goto <D.31746>; else goto <D.31747>;
        <D.31746>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.31748>; else goto <D.31749>;
        <D.31748>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.31750>; else goto <D.31751>;
        <D.31750>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.31751>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.31749>:
        D.31752 = mini_get_debug_options ();
        D.31753 = D.31752->break_on_unverified;
        if (D.31753 != 0) goto <D.31754>; else goto unverified;
        <D.31754>:
        __asm__ __volatile__("int $03");
        <D.31747>:
        tmp_ip = emit_optimized_ldloca_ir (cfg, ip, end, 1);
        if (tmp_ip != 0B) goto <D.31755>; else goto <D.31756>;
        <D.31755>:
        ip = tmp_ip;
        inline_costs = inline_costs + 1;
        goto <D.27380>;
        <D.31756>:
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        ins->opcode = 314;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        D.31455 = cfg->locals;
        D.31519 = ip + 1;
        D.31520 = *D.31519;
        D.31666 = (unsigned int) D.31520;
        D.31667 = D.31666 * 4;
        D.31757 = D.31455 + D.31667;
        D.31758 = *D.31757;
        ins->data.op[0].p = D.31758;
        D.31455 = cfg->locals;
        D.31519 = ip + 1;
        D.31520 = *D.31519;
        D.31666 = (unsigned int) D.31520;
        D.31667 = D.31666 * 4;
        D.31757 = D.31455 + D.31667;
        D.31758 = *D.31757;
        D.31455 = cfg->locals;
        D.31519 = ip + 1;
        D.31520 = *D.31519;
        D.31666 = (unsigned int) D.31520;
        D.31667 = D.31666 * 4;
        D.31757 = D.31455 + D.31667;
        D.31758 = *D.31757;
        D.31759 = D.31758->flags;
        D.31760 = D.31759 | 16;
        D.31758->flags = D.31760;
        ins->type = 5;
        D.31455 = cfg->locals;
        D.31519 = ip + 1;
        D.31520 = *D.31519;
        D.31666 = (unsigned int) D.31520;
        D.31667 = D.31666 * 4;
        D.31757 = D.31455 + D.31667;
        D.31758 = *D.31757;
        D.31761 = D.31758->klass;
        ins->klass = D.31761;
        D.31762 = alloc_dreg (cfg, 5);
        D.31763 = (int) D.31762;
        ins->dreg = D.31763;
        cfg->has_indirection = 1;
        D.30637 = cfg->gsharedvt;
        D.31575 = D.30637 != 0;
        D.31576 = (long int) D.31575;
        D.31577 = __builtin_expect (D.31576, 0);
        if (D.31577 != 0) goto <D.31764>; else goto <D.31765>;
        <D.31764>:
        D.31455 = cfg->locals;
        D.31519 = ip + 1;
        D.31520 = *D.31519;
        D.31666 = (unsigned int) D.31520;
        D.31667 = D.31666 * 4;
        D.31757 = D.31455 + D.31667;
        D.31758 = *D.31757;
        D.31766 = D.31758->data.op[1].vtype;
        D.31767 = mini_is_gsharedvt_variable_type (cfg, D.31766);
        if (D.31767 != 0) goto <D.31768>; else goto <D.31769>;
        <D.31768>:
        handle_gsharedvt_ldaddr (cfg);
        <D.31769>:
        <D.31765>:
        D.31771 = mono_arch_is_soft_float ();
        if (D.31771 != 0) goto <D.31772>; else goto <D.31773>;
        <D.31772>:
        D.31455 = cfg->locals;
        D.31519 = ip + 1;
        D.31520 = *D.31519;
        D.31666 = (unsigned int) D.31520;
        D.31667 = D.31666 * 4;
        D.31757 = D.31455 + D.31667;
        D.31758 = *D.31757;
        D.31774 = D.31758->type;
        D.31775 = D.31774 == 2;
        D.31776 = D.31774 == 4;
        D.31777 = D.31775 | D.31776;
        D.31778 = (int) D.31777;
        iftmp.99 = (_Bool) D.31778;
        goto <D.31779>;
        <D.31773>:
        D.31455 = cfg->locals;
        D.31519 = ip + 1;
        D.31520 = *D.31519;
        D.31666 = (unsigned int) D.31520;
        D.31667 = D.31666 * 4;
        D.31757 = D.31455 + D.31667;
        D.31758 = *D.31757;
        D.31780 = D.31758->type;
        iftmp.99 = D.31780 == 2;
        <D.31779>:
        if (iftmp.99 != 0) goto <D.31781>; else goto <D.31782>;
        <D.31781>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.31455 = cfg->locals;
          D.31519 = ip + 1;
          D.31520 = *D.31519;
          D.31666 = (unsigned int) D.31520;
          D.31667 = D.31666 * 4;
          D.31757 = D.31455 + D.31667;
          D.31758 = *D.31757;
          D.31784 = D.31758->dreg;
          D.31785 = D.31784 + 1;
          D.31786 = (unsigned int) D.31785;
          D.31601 = cfg->vreg_to_inst_len;
          if (D.31786 < D.31601) goto <D.31787>; else goto <D.31788>;
          <D.31787>:
          D.31604 = cfg->vreg_to_inst;
          D.31455 = cfg->locals;
          D.31519 = ip + 1;
          D.31520 = *D.31519;
          D.31666 = (unsigned int) D.31520;
          D.31667 = D.31666 * 4;
          D.31757 = D.31455 + D.31667;
          D.31758 = *D.31757;
          D.31784 = D.31758->dreg;
          D.31789 = (sizetype) D.31784;
          D.31790 = D.31789 + 1;
          D.31791 = D.31790 * 4;
          D.31792 = D.31604 + D.31791;
          iftmp.100 = *D.31792;
          goto <D.31793>;
          <D.31788>:
          iftmp.100 = 0B;
          <D.31793>:
          var1 = iftmp.100;
          D.31455 = cfg->locals;
          D.31519 = ip + 1;
          D.31520 = *D.31519;
          D.31666 = (unsigned int) D.31520;
          D.31667 = D.31666 * 4;
          D.31757 = D.31455 + D.31667;
          D.31758 = *D.31757;
          D.31784 = D.31758->dreg;
          D.31795 = D.31784 + 2;
          D.31796 = (unsigned int) D.31795;
          D.31601 = cfg->vreg_to_inst_len;
          if (D.31796 < D.31601) goto <D.31797>; else goto <D.31798>;
          <D.31797>:
          D.31604 = cfg->vreg_to_inst;
          D.31455 = cfg->locals;
          D.31519 = ip + 1;
          D.31520 = *D.31519;
          D.31666 = (unsigned int) D.31520;
          D.31667 = D.31666 * 4;
          D.31757 = D.31455 + D.31667;
          D.31758 = *D.31757;
          D.31784 = D.31758->dreg;
          D.31789 = (sizetype) D.31784;
          D.31799 = D.31789 + 2;
          D.31800 = D.31799 * 4;
          D.31801 = D.31604 + D.31800;
          iftmp.101 = *D.31801;
          goto <D.31802>;
          <D.31798>:
          iftmp.101 = 0B;
          <D.31802>:
          var2 = iftmp.101;
          D.31803 = var1 == 0B;
          D.31804 = (long int) D.31803;
          D.31805 = __builtin_expect (D.31804, 0);
          if (D.31805 != 0) goto <D.31806>; else goto <D.31807>;
          <D.31806>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7360, "var1");
          <D.31807>:
          D.31808 = var2 == 0B;
          D.31809 = (long int) D.31808;
          D.31810 = __builtin_expect (D.31809, 0);
          if (D.31810 != 0) goto <D.31811>; else goto <D.31812>;
          <D.31811>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7360, "var2");
          <D.31812>:
          D.31813 = var1->flags;
          D.31814 = D.31813 | 16;
          var1->flags = D.31814;
          D.31815 = var2->flags;
          D.31816 = D.31815 | 16;
          var2->flags = D.31816;
        }
        <D.31782>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.31817>; else goto <D.31818>;
        <D.31817>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = ins;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        ins->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        goto <D.31819>;
        <D.31818>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.31819>:
        sp.102 = sp;
        sp = sp.102 + 4;
        *sp.102 = ins;
        ip = ip + 2;
        goto <D.27380>;
      }
      <D.27404>:
      D.31500 = ip + 2;
      if (D.31500 > end) goto <D.31821>; else goto <D.31822>;
      <D.31821>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31823>; else goto <D.31824>;
      <D.31823>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31825>; else goto <D.31826>;
      <D.31825>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31826>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31824>:
      D.31827 = mini_get_debug_options ();
      D.31828 = D.31827->break_on_unverified;
      if (D.31828 != 0) goto <D.31829>; else goto unverified;
      <D.31829>:
      __asm__ __volatile__("int $03");
      <D.31822>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      if (D.31274 <= 3) goto <D.31830>; else goto <D.31831>;
      <D.31830>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31832>; else goto <D.31833>;
      <D.31832>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31834>; else goto <D.31835>;
      <D.31834>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31835>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31833>:
      D.31836 = mini_get_debug_options ();
      D.31837 = D.31836->break_on_unverified;
      if (D.31837 != 0) goto <D.31838>; else goto unverified;
      <D.31838>:
      __asm__ __volatile__("int $03");
      <D.31831>:
      sp = sp + 4294967292;
      D.31519 = ip + 1;
      D.31520 = *D.31519;
      D.31745 = (short unsigned int) D.31520;
      D.31093 = header->num_locals;
      if (D.31745 >= D.31093) goto <D.31839>; else goto <D.31840>;
      <D.31839>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31841>; else goto <D.31842>;
      <D.31841>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31843>; else goto <D.31844>;
      <D.31843>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31844>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31842>:
      D.31845 = mini_get_debug_options ();
      D.31846 = D.31845->break_on_unverified;
      if (D.31846 != 0) goto <D.31847>; else goto unverified;
      <D.31847>:
      __asm__ __volatile__("int $03");
      <D.31840>:
      if (dont_verify_stloc == 0) goto <D.31848>; else goto <D.31849>;
      <D.31848>:
      D.31489 = *sp;
      D.31519 = ip + 1;
      D.31520 = *D.31519;
      D.31850 = (int) D.31520;
      D.31851 = header->locals[D.31850];
      D.31852 = target_type_is_incompatible (cfg, D.31851, D.31489);
      if (D.31852 != 0) goto <D.31853>; else goto <D.31854>;
      <D.31853>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31855>; else goto <D.31856>;
      <D.31855>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31857>; else goto <D.31858>;
      <D.31857>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31858>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31856>:
      D.31859 = mini_get_debug_options ();
      D.31860 = D.31859->break_on_unverified;
      if (D.31860 != 0) goto <D.31861>; else goto unverified;
      <D.31861>:
      __asm__ __volatile__("int $03");
      <D.31854>:
      <D.31849>:
      D.31519 = ip + 1;
      D.31520 = *D.31519;
      D.31850 = (int) D.31520;
      emit_stloc_ir (cfg, sp, header, D.31850);
      ip = ip + 2;
      inline_costs = inline_costs + 1;
      goto <D.27380>;
      <D.27405>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      D.31275 = D.31274 /[ex] 4;
      D.31188 = header->max_stack;
      D.31189 = (int) D.31188;
      if (D.31275 >= D.31189) goto <D.31862>; else goto <D.31863>;
      <D.31862>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31864>; else goto <D.31865>;
      <D.31864>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31866>; else goto <D.31867>;
      <D.31866>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31867>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31865>:
      D.31868 = mini_get_debug_options ();
      D.31869 = D.31868->break_on_unverified;
      if (D.31869 != 0) goto <D.31870>; else goto unverified;
      <D.31870>:
      __asm__ __volatile__("int $03");
      <D.31863>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 362;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      ins->data.op[0].p = 0B;
      ins->type = 3;
      D.31871 = alloc_dreg (cfg, 3);
      D.31872 = (int) D.31871;
      ins->dreg = D.31872;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.31873>; else goto <D.31874>;
      <D.31873>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.31875>;
      <D.31874>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.31875>:
      ins->type = 6;
      ip = ip + 1;
      sp.103 = sp;
      sp = sp.103 + 4;
      *sp.103 = ins;
      goto <D.27380>;
      <D.27406>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      D.31275 = D.31274 /[ex] 4;
      D.31188 = header->max_stack;
      D.31189 = (int) D.31188;
      if (D.31275 >= D.31189) goto <D.31877>; else goto <D.31878>;
      <D.31877>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31879>; else goto <D.31880>;
      <D.31879>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31881>; else goto <D.31882>;
      <D.31881>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31882>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31880>:
      D.31883 = mini_get_debug_options ();
      D.31884 = D.31883->break_on_unverified;
      if (D.31884 != 0) goto <D.31885>; else goto unverified;
      <D.31885>:
      __asm__ __volatile__("int $03");
      <D.31878>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 362;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      ins->data.op[0].const_val = -1;
      ins->type = 1;
      D.31886 = alloc_dreg (cfg, 1);
      D.31887 = (int) D.31886;
      ins->dreg = D.31887;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.31888>; else goto <D.31889>;
      <D.31888>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.31890>;
      <D.31889>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.31890>:
      ip = ip + 1;
      sp.104 = sp;
      sp = sp.104 + 4;
      *sp.104 = ins;
      goto <D.27380>;
      <D.27407>:
      <D.27408>:
      <D.27409>:
      <D.27410>:
      <D.27411>:
      <D.27412>:
      <D.27413>:
      <D.27414>:
      <D.27415>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      D.31275 = D.31274 /[ex] 4;
      D.31188 = header->max_stack;
      D.31189 = (int) D.31188;
      if (D.31275 >= D.31189) goto <D.31892>; else goto <D.31893>;
      <D.31892>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31894>; else goto <D.31895>;
      <D.31894>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31896>; else goto <D.31897>;
      <D.31896>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31897>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31895>:
      D.31898 = mini_get_debug_options ();
      D.31899 = D.31898->break_on_unverified;
      if (D.31899 != 0) goto <D.31900>; else goto unverified;
      <D.31900>:
      __asm__ __volatile__("int $03");
      <D.31893>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 362;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      D.31371 = *ip;
      D.31372 = (int) D.31371;
      D.31901 = D.31372 + -22;
      ins->data.op[0].const_val = D.31901;
      ins->type = 1;
      D.31902 = alloc_dreg (cfg, 1);
      D.31903 = (int) D.31902;
      ins->dreg = D.31903;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.31904>; else goto <D.31905>;
      <D.31904>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.31906>;
      <D.31905>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.31906>:
      ip = ip + 1;
      sp.105 = sp;
      sp = sp.105 + 4;
      *sp.105 = ins;
      goto <D.27380>;
      <D.27416>:
      D.31500 = ip + 2;
      if (D.31500 > end) goto <D.31908>; else goto <D.31909>;
      <D.31908>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31910>; else goto <D.31911>;
      <D.31910>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31912>; else goto <D.31913>;
      <D.31912>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31913>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31911>:
      D.31914 = mini_get_debug_options ();
      D.31915 = D.31914->break_on_unverified;
      if (D.31915 != 0) goto <D.31916>; else goto unverified;
      <D.31916>:
      __asm__ __volatile__("int $03");
      <D.31909>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      D.31275 = D.31274 /[ex] 4;
      D.31188 = header->max_stack;
      D.31189 = (int) D.31188;
      if (D.31275 >= D.31189) goto <D.31917>; else goto <D.31918>;
      <D.31917>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31919>; else goto <D.31920>;
      <D.31919>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31921>; else goto <D.31922>;
      <D.31921>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31922>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31920>:
      D.31923 = mini_get_debug_options ();
      D.31924 = D.31923->break_on_unverified;
      if (D.31924 != 0) goto <D.31925>; else goto unverified;
      <D.31925>:
      __asm__ __volatile__("int $03");
      <D.31918>:
      ip = ip + 1;
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 362;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      D.31926 = MEM[(signed char *)ip];
      D.31927 = (int) D.31926;
      ins->data.op[0].const_val = D.31927;
      ins->type = 1;
      D.31928 = alloc_dreg (cfg, 1);
      D.31929 = (int) D.31928;
      ins->dreg = D.31929;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.31930>; else goto <D.31931>;
      <D.31930>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.31932>;
      <D.31931>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.31932>:
      ip = ip + 1;
      sp.106 = sp;
      sp = sp.106 + 4;
      *sp.106 = ins;
      goto <D.27380>;
      <D.27417>:
      D.31934 = ip + 5;
      if (D.31934 > end) goto <D.31935>; else goto <D.31936>;
      <D.31935>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31937>; else goto <D.31938>;
      <D.31937>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31939>; else goto <D.31940>;
      <D.31939>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31940>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31938>:
      D.31941 = mini_get_debug_options ();
      D.31942 = D.31941->break_on_unverified;
      if (D.31942 != 0) goto <D.31943>; else goto unverified;
      <D.31943>:
      __asm__ __volatile__("int $03");
      <D.31936>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      D.31275 = D.31274 /[ex] 4;
      D.31188 = header->max_stack;
      D.31189 = (int) D.31188;
      if (D.31275 >= D.31189) goto <D.31944>; else goto <D.31945>;
      <D.31944>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31946>; else goto <D.31947>;
      <D.31946>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31948>; else goto <D.31949>;
      <D.31948>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31949>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31947>:
      D.31950 = mini_get_debug_options ();
      D.31951 = D.31950->break_on_unverified;
      if (D.31951 != 0) goto <D.31952>; else goto unverified;
      <D.31952>:
      __asm__ __volatile__("int $03");
      <D.31945>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 362;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      D.31953 = ip + 1;
      D.31954 = *D.31953;
      D.31955 = (int) D.31954;
      ins->data.op[0].const_val = D.31955;
      ins->type = 1;
      D.31956 = alloc_dreg (cfg, 1);
      D.31957 = (int) D.31956;
      ins->dreg = D.31957;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.31958>; else goto <D.31959>;
      <D.31958>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.31960>;
      <D.31959>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.31960>:
      ip = ip + 5;
      sp.107 = sp;
      sp = sp.107 + 4;
      *sp.107 = ins;
      goto <D.27380>;
      <D.27418>:
      D.31962 = ip + 9;
      if (D.31962 > end) goto <D.31963>; else goto <D.31964>;
      <D.31963>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31965>; else goto <D.31966>;
      <D.31965>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31967>; else goto <D.31968>;
      <D.31967>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31968>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31966>:
      D.31969 = mini_get_debug_options ();
      D.31970 = D.31969->break_on_unverified;
      if (D.31970 != 0) goto <D.31971>; else goto unverified;
      <D.31971>:
      __asm__ __volatile__("int $03");
      <D.31964>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      D.31275 = D.31274 /[ex] 4;
      D.31188 = header->max_stack;
      D.31189 = (int) D.31188;
      if (D.31275 >= D.31189) goto <D.31972>; else goto <D.31973>;
      <D.31972>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.31974>; else goto <D.31975>;
      <D.31974>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.31976>; else goto <D.31977>;
      <D.31976>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31977>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31975>:
      D.31978 = mini_get_debug_options ();
      D.31979 = D.31978->break_on_unverified;
      if (D.31979 != 0) goto <D.31980>; else goto unverified;
      <D.31980>:
      __asm__ __volatile__("int $03");
      <D.31973>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 363;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      ins->type = 2;
      D.31981 = alloc_dreg (cfg, 2);
      D.31982 = (int) D.31981;
      ins->dreg = D.31982;
      ip = ip + 1;
      D.31983 = MEM[(const guint64 *)ip];
      D.31984 = (long long int) D.31983;
      ins->data.i8const = D.31984;
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      if (D.30826 != 0B) goto <D.31985>; else goto <D.31986>;
      <D.31985>:
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      D.30826->next = ins;
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      ins->prev = D.30826;
      bblock.78 = bblock;
      bblock.78->last_ins = ins;
      goto <D.31987>;
      <D.31986>:
      bblock.78 = bblock;
      bblock.78 = bblock;
      bblock.78->last_ins = ins;
      D.30826 = bblock.78->last_ins;
      bblock.78->code = D.30826;
      <D.31987>:
      ip = ip + 8;
      sp.108 = sp;
      sp = sp.108 + 4;
      *sp.108 = ins;
      goto <D.27380>;
      <D.27419>:
      {
        float * f;
        gboolean use_aotconst;

        use_aotconst = 0;
        D.30513 = cfg->domain;
        f = mono_domain_alloc (D.30513, 4);
        D.31934 = ip + 5;
        if (D.31934 > end) goto <D.31989>; else goto <D.31990>;
        <D.31989>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.31991>; else goto <D.31992>;
        <D.31991>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.31993>; else goto <D.31994>;
        <D.31993>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.31994>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.31992>:
        D.31995 = mini_get_debug_options ();
        D.31996 = D.31995->break_on_unverified;
        if (D.31996 != 0) goto <D.31997>; else goto unverified;
        <D.31997>:
        __asm__ __volatile__("int $03");
        <D.31990>:
        sp.85 = (int) sp;
        stack_start.86 = (int) stack_start;
        D.31274 = sp.85 - stack_start.86;
        D.31275 = D.31274 /[ex] 4;
        D.31188 = header->max_stack;
        D.31189 = (int) D.31188;
        if (D.31275 >= D.31189) goto <D.31998>; else goto <D.31999>;
        <D.31998>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.32000>; else goto <D.32001>;
        <D.32000>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.32002>; else goto <D.32003>;
        <D.32002>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.32003>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.32001>:
        D.32004 = mini_get_debug_options ();
        D.32005 = D.32004->break_on_unverified;
        if (D.32005 != 0) goto <D.32006>; else goto unverified;
        <D.32006>:
        __asm__ __volatile__("int $03");
        <D.31999>:
        if (use_aotconst != 0) goto <D.32007>; else goto <D.32008>;
        <D.32007>:
        {
          struct MonoInst * cons;
          int dreg;

          D.30489 = cfg->mempool;
          cons = mono_mempool_alloc (D.30489, 48);
          cons->data.op[1].const_val = 0;
          D.32009 = cons->data.op[1].const_val;
          cons->data.op[0].const_val = D.32009;
          cons->prev = 0B;
          D.32010 = cons->prev;
          cons->next = D.32010;
          D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.30884 = D.30883 & 64;
          if (D.30884 != 0) goto <D.32012>; else goto <D.32013>;
          <D.32012>:
          iftmp.109 = 738;
          goto <D.32014>;
          <D.32013>:
          iftmp.109 = 362;
          <D.32014>:
          cons->opcode = iftmp.109;
          cons->flags = 0;
          cons->type = 0;
          cons->dreg = -1;
          cons->sreg3 = -1;
          D.32015 = cons->sreg3;
          cons->sreg2 = D.32015;
          D.32016 = cons->sreg2;
          cons->sreg1 = D.32016;
          D.30712 = cfg->ip;
          cons->cil_code = D.30712;
          D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.30884 = D.30883 & 64;
          if (D.30884 != 0) goto <D.32017>; else goto <D.32018>;
          <D.32017>:
          {
            struct MonoInst * group;
            struct MonoInst * got_loc;

            got_loc = mono_get_got_var (cfg);
            D.30489 = cfg->mempool;
            group = mono_mempool_alloc (D.30489, 48);
            group->data.op[1].const_val = 0;
            D.32019 = group->data.op[1].const_val;
            group->data.op[0].const_val = D.32019;
            group->prev = 0B;
            D.32020 = group->prev;
            group->next = D.32020;
            group->opcode = 737;
            group->flags = 0;
            group->type = 0;
            group->dreg = -1;
            group->sreg3 = -1;
            D.32021 = group->sreg3;
            group->sreg2 = D.32021;
            D.32022 = group->sreg2;
            group->sreg1 = D.32022;
            D.30712 = cfg->ip;
            group->cil_code = D.30712;
            group->data.op[0].src = f;
            group->data.op[1].src = 20B;
            D.32023 = got_loc->dreg;
            cons->sreg1 = D.32023;
            cons->data.op[1].p = group;
          }
          goto <D.32024>;
          <D.32018>:
          cons->data.op[0].p = f;
          cons->data.op[1].src = 20B;
          <D.32024>:
          cons->type = 3;
          D.32025 = alloc_dreg (cfg, 3);
          D.32026 = (int) D.32025;
          cons->dreg = D.32026;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.32027>; else goto <D.32028>;
          <D.32027>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = cons;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          cons->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = cons;
          goto <D.32029>;
          <D.32028>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = cons;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.32029>:
          D.32030 = alloc_freg (cfg);
          dreg = (int) D.32030;
          D.30489 = cfg->mempool;
          ins = mono_mempool_alloc (D.30489, 48);
          ins->data.op[1].const_val = 0;
          D.30708 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.30708;
          ins->prev = 0B;
          D.30709 = ins->prev;
          ins->next = D.30709;
          ins->opcode = 399;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.30710 = ins->sreg3;
          ins->sreg2 = D.30710;
          D.30711 = ins->sreg2;
          ins->sreg1 = D.30711;
          D.30712 = cfg->ip;
          ins->cil_code = D.30712;
          ins->dreg = dreg;
          D.32031 = cons->dreg;
          ins->sreg1 = D.32031;
          ins->data.op[0].const_val = 0;
          ins->type = 1;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.32032>; else goto <D.32033>;
          <D.32032>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = ins;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          ins->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = ins;
          goto <D.32034>;
          <D.32033>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = ins;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.32034>:
          ins->type = 4;
        }
        goto <D.32035>;
        <D.32008>:
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        ins->opcode = 364;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        ins->type = 4;
        D.32036 = alloc_dreg (cfg, 4);
        D.32037 = (int) D.32036;
        ins->dreg = D.32037;
        ins->data.op[0].p = f;
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        if (D.30826 != 0B) goto <D.32038>; else goto <D.32039>;
        <D.32038>:
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        D.30826->next = ins;
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        ins->prev = D.30826;
        bblock.78 = bblock;
        bblock.78->last_ins = ins;
        goto <D.32040>;
        <D.32039>:
        bblock.78 = bblock;
        bblock.78 = bblock;
        bblock.78->last_ins = ins;
        D.30826 = bblock.78->last_ins;
        bblock.78->code = D.30826;
        <D.32040>:
        <D.32035>:
        ip = ip + 1;
        {
          union mono_rfloat mf;

          try
            {
              D.32041 = MEM[(const guint32 *)ip];
              mf.ival = D.32041;
              D.32042 = mf.fval;
              *f = D.32042;
            }
          finally
            {
              mf = {CLOBBER};
            }
        }
        ip = ip + 4;
        sp.110 = sp;
        sp = sp.110 + 4;
        *sp.110 = ins;
        goto <D.27380>;
      }
      <D.27427>:
      {
        double * d;
        gboolean use_aotconst;

        use_aotconst = 0;
        D.30513 = cfg->domain;
        d = mono_domain_alloc (D.30513, 8);
        D.31962 = ip + 9;
        if (D.31962 > end) goto <D.32044>; else goto <D.32045>;
        <D.32044>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.32046>; else goto <D.32047>;
        <D.32046>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.32048>; else goto <D.32049>;
        <D.32048>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.32049>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.32047>:
        D.32050 = mini_get_debug_options ();
        D.32051 = D.32050->break_on_unverified;
        if (D.32051 != 0) goto <D.32052>; else goto unverified;
        <D.32052>:
        __asm__ __volatile__("int $03");
        <D.32045>:
        sp.85 = (int) sp;
        stack_start.86 = (int) stack_start;
        D.31274 = sp.85 - stack_start.86;
        D.31275 = D.31274 /[ex] 4;
        D.31188 = header->max_stack;
        D.31189 = (int) D.31188;
        if (D.31275 >= D.31189) goto <D.32053>; else goto <D.32054>;
        <D.32053>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.32055>; else goto <D.32056>;
        <D.32055>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.32057>; else goto <D.32058>;
        <D.32057>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.32058>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.32056>:
        D.32059 = mini_get_debug_options ();
        D.32060 = D.32059->break_on_unverified;
        if (D.32060 != 0) goto <D.32061>; else goto unverified;
        <D.32061>:
        __asm__ __volatile__("int $03");
        <D.32054>:
        if (use_aotconst != 0) goto <D.32062>; else goto <D.32063>;
        <D.32062>:
        {
          struct MonoInst * cons;
          int dreg;

          D.30489 = cfg->mempool;
          cons = mono_mempool_alloc (D.30489, 48);
          cons->data.op[1].const_val = 0;
          D.32064 = cons->data.op[1].const_val;
          cons->data.op[0].const_val = D.32064;
          cons->prev = 0B;
          D.32065 = cons->prev;
          cons->next = D.32065;
          D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.30884 = D.30883 & 64;
          if (D.30884 != 0) goto <D.32067>; else goto <D.32068>;
          <D.32067>:
          iftmp.111 = 738;
          goto <D.32069>;
          <D.32068>:
          iftmp.111 = 362;
          <D.32069>:
          cons->opcode = iftmp.111;
          cons->flags = 0;
          cons->type = 0;
          cons->dreg = -1;
          cons->sreg3 = -1;
          D.32070 = cons->sreg3;
          cons->sreg2 = D.32070;
          D.32071 = cons->sreg2;
          cons->sreg1 = D.32071;
          D.30712 = cfg->ip;
          cons->cil_code = D.30712;
          D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.30884 = D.30883 & 64;
          if (D.30884 != 0) goto <D.32072>; else goto <D.32073>;
          <D.32072>:
          {
            struct MonoInst * group;
            struct MonoInst * got_loc;

            got_loc = mono_get_got_var (cfg);
            D.30489 = cfg->mempool;
            group = mono_mempool_alloc (D.30489, 48);
            group->data.op[1].const_val = 0;
            D.32074 = group->data.op[1].const_val;
            group->data.op[0].const_val = D.32074;
            group->prev = 0B;
            D.32075 = group->prev;
            group->next = D.32075;
            group->opcode = 737;
            group->flags = 0;
            group->type = 0;
            group->dreg = -1;
            group->sreg3 = -1;
            D.32076 = group->sreg3;
            group->sreg2 = D.32076;
            D.32077 = group->sreg2;
            group->sreg1 = D.32077;
            D.30712 = cfg->ip;
            group->cil_code = D.30712;
            group->data.op[0].src = d;
            group->data.op[1].src = 21B;
            D.32078 = got_loc->dreg;
            cons->sreg1 = D.32078;
            cons->data.op[1].p = group;
          }
          goto <D.32079>;
          <D.32073>:
          cons->data.op[0].p = d;
          cons->data.op[1].src = 21B;
          <D.32079>:
          cons->type = 3;
          D.32080 = alloc_dreg (cfg, 3);
          D.32081 = (int) D.32080;
          cons->dreg = D.32081;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.32082>; else goto <D.32083>;
          <D.32082>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = cons;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          cons->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = cons;
          goto <D.32084>;
          <D.32083>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = cons;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.32084>:
          D.32085 = alloc_freg (cfg);
          dreg = (int) D.32085;
          D.30489 = cfg->mempool;
          ins = mono_mempool_alloc (D.30489, 48);
          ins->data.op[1].const_val = 0;
          D.30708 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.30708;
          ins->prev = 0B;
          D.30709 = ins->prev;
          ins->next = D.30709;
          ins->opcode = 400;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.30710 = ins->sreg3;
          ins->sreg2 = D.30710;
          D.30711 = ins->sreg2;
          ins->sreg1 = D.30711;
          D.30712 = cfg->ip;
          ins->cil_code = D.30712;
          ins->dreg = dreg;
          D.32086 = cons->dreg;
          ins->sreg1 = D.32086;
          ins->data.op[0].const_val = 0;
          ins->type = 1;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.32087>; else goto <D.32088>;
          <D.32087>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = ins;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          ins->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = ins;
          goto <D.32089>;
          <D.32088>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = ins;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.32089>:
          ins->type = 4;
        }
        goto <D.32090>;
        <D.32063>:
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        ins->opcode = 365;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        ins->type = 4;
        D.32091 = alloc_dreg (cfg, 4);
        D.32092 = (int) D.32091;
        ins->dreg = D.32092;
        ins->data.op[0].p = d;
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        if (D.30826 != 0B) goto <D.32093>; else goto <D.32094>;
        <D.32093>:
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        D.30826->next = ins;
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        ins->prev = D.30826;
        bblock.78 = bblock;
        bblock.78->last_ins = ins;
        goto <D.32095>;
        <D.32094>:
        bblock.78 = bblock;
        bblock.78 = bblock;
        bblock.78->last_ins = ins;
        D.30826 = bblock.78->last_ins;
        bblock.78->code = D.30826;
        <D.32095>:
        <D.32090>:
        ip = ip + 1;
        {
          union mono_rdouble mf;

          try
            {
              D.31983 = MEM[(const guint64 *)ip];
              mf.ival = D.31983;
              D.32096 = mf.fval;
              *d = D.32096;
            }
          finally
            {
              mf = {CLOBBER};
            }
        }
        ip = ip + 8;
        sp.112 = sp;
        sp = sp.112 + 4;
        *sp.112 = ins;
        goto <D.27380>;
      }
      <D.27435>:
      {
        struct MonoInst * temp;
        struct MonoInst * store;

        sp.85 = (int) sp;
        stack_start.86 = (int) stack_start;
        D.31274 = sp.85 - stack_start.86;
        if (D.31274 <= 3) goto <D.32098>; else goto <D.32099>;
        <D.32098>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.32100>; else goto <D.32101>;
        <D.32100>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.32102>; else goto <D.32103>;
        <D.32102>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.32103>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.32101>:
        D.32104 = mini_get_debug_options ();
        D.32105 = D.32104->break_on_unverified;
        if (D.32105 != 0) goto <D.32106>; else goto unverified;
        <D.32106>:
        __asm__ __volatile__("int $03");
        <D.32099>:
        sp.85 = (int) sp;
        stack_start.86 = (int) stack_start;
        D.31274 = sp.85 - stack_start.86;
        D.31275 = D.31274 /[ex] 4;
        D.31188 = header->max_stack;
        D.31189 = (int) D.31188;
        if (D.31275 >= D.31189) goto <D.32107>; else goto <D.32108>;
        <D.32107>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.32109>; else goto <D.32110>;
        <D.32109>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.32111>; else goto <D.32112>;
        <D.32111>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.32112>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.32110>:
        D.32113 = mini_get_debug_options ();
        D.32114 = D.32113->break_on_unverified;
        if (D.32114 != 0) goto <D.32115>; else goto unverified;
        <D.32115>:
        __asm__ __volatile__("int $03");
        <D.32108>:
        sp = sp + 4294967292;
        ins = *sp;
        D.32116 = type_from_stack_type (ins);
        temp = mono_compile_create_var (cfg, D.32116, 329);
        D.30489 = cfg->mempool;
        store = mono_mempool_alloc (D.30489, 48);
        store->data.op[1].const_val = 0;
        D.32117 = store->data.op[1].const_val;
        store->data.op[0].const_val = D.32117;
        store->prev = 0B;
        D.32118 = store->prev;
        store->next = D.32118;
        store->opcode = 428;
        store->flags = 0;
        store->type = 0;
        store->dreg = -1;
        store->sreg3 = -1;
        D.32119 = store->sreg3;
        store->sreg2 = D.32119;
        D.32120 = store->sreg2;
        store->sreg1 = D.32120;
        D.30712 = cfg->ip;
        store->cil_code = D.30712;
        D.31239 = cfg->varinfo;
        D.32121 = temp->data.op[0].const_val;
        D.32122 = (unsigned int) D.32121;
        D.32123 = D.32122 * 4;
        D.32124 = D.31239 + D.32123;
        D.32125 = *D.32124;
        D.32126 = D.32125->data.op[1].vtype;
        D.32127 = mono_type_to_regmove (cfg, D.32126);
        D.32128 = (short unsigned int) D.32127;
        store->opcode = D.32128;
        D.31239 = cfg->varinfo;
        D.32121 = temp->data.op[0].const_val;
        D.32122 = (unsigned int) D.32121;
        D.32123 = D.32122 * 4;
        D.32124 = D.31239 + D.32123;
        D.32125 = *D.32124;
        D.32129 = D.32125->klass;
        store->klass = D.32129;
        D.30903 = ins->dreg;
        store->sreg1 = D.30903;
        D.31239 = cfg->varinfo;
        D.32121 = temp->data.op[0].const_val;
        D.32122 = (unsigned int) D.32121;
        D.32123 = D.32122 * 4;
        D.32124 = D.31239 + D.32123;
        D.32125 = *D.32124;
        D.32130 = D.32125->dreg;
        store->dreg = D.32130;
        D.32131 = store->opcode;
        if (D.32131 == 431) goto <D.32132>; else goto <D.32133>;
        <D.32132>:
        D.31239 = cfg->varinfo;
        D.32121 = temp->data.op[0].const_val;
        D.32122 = (unsigned int) D.32121;
        D.32123 = D.32122 * 4;
        D.32124 = D.31239 + D.32123;
        D.32125 = *D.32124;
        D.32126 = D.32125->data.op[1].vtype;
        D.32134 = mono_class_from_mono_type (D.32126);
        store->klass = D.32134;
        <D.32133>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.32135>; else goto <D.32136>;
        <D.32135>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = store;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        store->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = store;
        goto <D.32137>;
        <D.32136>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = store;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.32137>:
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        ins->opcode = 428;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        D.31239 = cfg->varinfo;
        D.32121 = temp->data.op[0].const_val;
        D.32122 = (unsigned int) D.32121;
        D.32123 = D.32122 * 4;
        D.32124 = D.31239 + D.32123;
        D.32125 = *D.32124;
        D.32126 = D.32125->data.op[1].vtype;
        D.32138 = mono_type_to_regmove (cfg, D.32126);
        D.32139 = (short unsigned int) D.32138;
        ins->opcode = D.32139;
        D.31239 = cfg->varinfo;
        D.32121 = temp->data.op[0].const_val;
        D.32122 = (unsigned int) D.32121;
        D.32123 = D.32122 * 4;
        D.32124 = D.31239 + D.32123;
        D.32125 = *D.32124;
        D.32126 = D.32125->data.op[1].vtype;
        type_to_eval_stack_type (cfg, D.32126, ins);
        D.31239 = cfg->varinfo;
        D.32121 = temp->data.op[0].const_val;
        D.32122 = (unsigned int) D.32121;
        D.32123 = D.32122 * 4;
        D.32124 = D.31239 + D.32123;
        D.32125 = *D.32124;
        D.32129 = D.32125->klass;
        ins->klass = D.32129;
        D.31239 = cfg->varinfo;
        D.32121 = temp->data.op[0].const_val;
        D.32122 = (unsigned int) D.32121;
        D.32123 = D.32122 * 4;
        D.32124 = D.31239 + D.32123;
        D.32125 = *D.32124;
        D.32130 = D.32125->dreg;
        ins->sreg1 = D.32130;
        D.31249 = ins->type;
        D.31250 = (<unnamed type>) D.31249;
        D.32140 = alloc_dreg (cfg, D.31250);
        D.32141 = (int) D.32140;
        ins->dreg = D.32141;
        D.31253 = ins->opcode;
        if (D.31253 == 431) goto <D.32142>; else goto <D.32143>;
        <D.32142>:
        D.31239 = cfg->varinfo;
        D.32121 = temp->data.op[0].const_val;
        D.32122 = (unsigned int) D.32121;
        D.32123 = D.32122 * 4;
        D.32124 = D.31239 + D.32123;
        D.32125 = *D.32124;
        D.32126 = D.32125->data.op[1].vtype;
        D.32144 = mono_class_from_mono_type (D.32126);
        ins->klass = D.32144;
        <D.32143>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.32145>; else goto <D.32146>;
        <D.32145>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = ins;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        ins->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        goto <D.32147>;
        <D.32146>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.32147>:
        sp.113 = sp;
        sp = sp.113 + 4;
        *sp.113 = ins;
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        ins->opcode = 428;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        D.31239 = cfg->varinfo;
        D.32121 = temp->data.op[0].const_val;
        D.32122 = (unsigned int) D.32121;
        D.32123 = D.32122 * 4;
        D.32124 = D.31239 + D.32123;
        D.32125 = *D.32124;
        D.32126 = D.32125->data.op[1].vtype;
        D.32149 = mono_type_to_regmove (cfg, D.32126);
        D.32150 = (short unsigned int) D.32149;
        ins->opcode = D.32150;
        D.31239 = cfg->varinfo;
        D.32121 = temp->data.op[0].const_val;
        D.32122 = (unsigned int) D.32121;
        D.32123 = D.32122 * 4;
        D.32124 = D.31239 + D.32123;
        D.32125 = *D.32124;
        D.32126 = D.32125->data.op[1].vtype;
        type_to_eval_stack_type (cfg, D.32126, ins);
        D.31239 = cfg->varinfo;
        D.32121 = temp->data.op[0].const_val;
        D.32122 = (unsigned int) D.32121;
        D.32123 = D.32122 * 4;
        D.32124 = D.31239 + D.32123;
        D.32125 = *D.32124;
        D.32129 = D.32125->klass;
        ins->klass = D.32129;
        D.31239 = cfg->varinfo;
        D.32121 = temp->data.op[0].const_val;
        D.32122 = (unsigned int) D.32121;
        D.32123 = D.32122 * 4;
        D.32124 = D.31239 + D.32123;
        D.32125 = *D.32124;
        D.32130 = D.32125->dreg;
        ins->sreg1 = D.32130;
        D.31249 = ins->type;
        D.31250 = (<unnamed type>) D.31249;
        D.32151 = alloc_dreg (cfg, D.31250);
        D.32152 = (int) D.32151;
        ins->dreg = D.32152;
        D.31253 = ins->opcode;
        if (D.31253 == 431) goto <D.32153>; else goto <D.32154>;
        <D.32153>:
        D.31239 = cfg->varinfo;
        D.32121 = temp->data.op[0].const_val;
        D.32122 = (unsigned int) D.32121;
        D.32123 = D.32122 * 4;
        D.32124 = D.31239 + D.32123;
        D.32125 = *D.32124;
        D.32126 = D.32125->data.op[1].vtype;
        D.32155 = mono_class_from_mono_type (D.32126);
        ins->klass = D.32155;
        <D.32154>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.32156>; else goto <D.32157>;
        <D.32156>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = ins;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        ins->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        goto <D.32158>;
        <D.32157>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.32158>:
        sp.114 = sp;
        sp = sp.114 + 4;
        *sp.114 = ins;
        ip = ip + 1;
        inline_costs = inline_costs + 2;
        goto <D.27380>;
      }
      <D.27438>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      if (D.31274 <= 3) goto <D.32160>; else goto <D.32161>;
      <D.32160>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.32162>; else goto <D.32163>;
      <D.32162>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.32164>; else goto <D.32165>;
      <D.32164>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.32165>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.32163>:
      D.32166 = mini_get_debug_options ();
      D.32167 = D.32166->break_on_unverified;
      if (D.32167 != 0) goto <D.32168>; else goto unverified;
      <D.32168>:
      __asm__ __volatile__("int $03");
      <D.32161>:
      ip = ip + 1;
      sp = sp + 4294967292;
      D.31489 = *sp;
      D.32169 = D.31489->type;
      if (D.32169 == 4) goto <D.32170>; else goto <D.32171>;
      <D.32170>:
      {
        struct MonoInst * inst;

        D.30489 = cfg->mempool;
        inst = mono_mempool_alloc (D.30489, 48);
        inst->data.op[1].const_val = 0;
        D.32172 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.32172;
        inst->prev = 0B;
        D.32173 = inst->prev;
        inst->next = D.32173;
        inst->opcode = 1040;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.32174 = inst->sreg3;
        inst->sreg2 = D.32174;
        D.32175 = inst->sreg2;
        inst->sreg1 = D.32175;
        D.30712 = cfg->ip;
        inst->cil_code = D.30712;
        inst->dreg = -1;
        D.31489 = *sp;
        D.31682 = D.31489->dreg;
        inst->sreg1 = D.31682;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.32176>; else goto <D.32177>;
        <D.32176>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = inst;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        inst->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = inst;
        goto <D.32178>;
        <D.32177>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = inst;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.32178>:
      }
      <D.32171>:
      goto <D.27380>;
      <D.27440>:
      {
        struct MonoCallInst * call;

        D.30459 = cfg->method;
        if (D.30459 != method) goto <D.32179>; else goto <D.32180>;
        <D.32179>:
        D.30431 = BIT_FIELD_REF <*method, 8, 160>;
        D.30432 = D.30431 & 124;
        if (D.30432 == 0) goto <D.32181>; else goto <D.32182>;
        <D.32181>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 1) goto <D.32183>; else goto <D.32184>;
        <D.32183>:
        printf ("inline failed: %s\n", "jmp");
        <D.32184>:
        goto inline_failure;
        <D.32182>:
        <D.32180>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.32185>; else goto <D.32186>;
        <D.32185>:
        D.31371 = *ip;
        D.31372 = (int) D.31371;
        D.32187 = mono_opcode_name (D.31372);
        D.32188 = method->signature;
        D.32189 = D.32188->param_count;
        D.32190 = (int) D.32189;
        D.32191 = method->name;
        D.30426 = method->klass;
        D.32192 = D.30426->name;
        D.30426 = method->klass;
        D.32193 = D.30426->name_space;
        D.32194 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.32193, D.32192, D.32191, D.32190, D.32187, "method-to-ir.c", 7539);
        cfg->exception_message = D.32194;
        D.30569 = cfg->verbose_level;
        if (D.30569 > 1) goto <D.32195>; else goto <D.32196>;
        <D.32195>:
        D.32197 = cfg->exception_message;
        printf ("%s\n", D.32197);
        <D.32196>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.32186>:
        D.31934 = ip + 5;
        if (D.31934 > end) goto <D.32198>; else goto <D.32199>;
        <D.32198>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.32200>; else goto <D.32201>;
        <D.32200>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.32202>; else goto <D.32203>;
        <D.32202>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.32203>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.32201>:
        D.32204 = mini_get_debug_options ();
        D.32205 = D.32204->break_on_unverified;
        if (D.32205 != 0) goto <D.32206>; else goto unverified;
        <D.32206>:
        __asm__ __volatile__("int $03");
        <D.32199>:
        if (stack_start != sp) goto <D.32207>; else goto <D.32208>;
        <D.32207>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.32209>; else goto <D.32210>;
        <D.32209>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.32211>; else goto <D.32212>;
        <D.32211>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.32212>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.32210>:
        D.32213 = mini_get_debug_options ();
        D.32214 = D.32213->break_on_unverified;
        if (D.32214 != 0) goto <D.32215>; else goto unverified;
        <D.32215>:
        __asm__ __volatile__("int $03");
        <D.32208>:
        token = MEM[(const guint32 *)ip + 1B];
        cmethod = mini_get_method (cfg, method, token, 0B, generic_context);
        if (cmethod == 0B) goto <D.32216>; else goto <D.32218>;
        <D.32218>:
        D.32219 = mono_loader_get_last_error ();
        if (D.32219 != 0B) goto <D.32216>; else goto <D.32217>;
        <D.32216>:
        D.32220 = mini_get_debug_options ();
        D.32221 = D.32220->break_on_unverified;
        if (D.32221 != 0) goto <D.32222>; else goto load_error;
        <D.32222>:
        __asm__ __volatile__("int $03");
        <D.32217>:
        D.30524 = cfg->generic_sharing_context;
        if (D.30524 != 0B) goto <D.32223>; else goto <D.32224>;
        <D.32223>:
        D.32225 = mono_method_check_context_used (cmethod);
        if (D.32225 != 0) goto <D.32226>; else goto <D.32227>;
        <D.32226>:
        D.30524 = cfg->generic_sharing_context;
        if (D.30524 != 0B) goto <D.32228>; else goto <D.32229>;
        <D.32228>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.32230>; else goto <D.32231>;
        <D.32230>:
        D.32232 = mono_opcode_name (39);
        D.32188 = method->signature;
        D.32189 = D.32188->param_count;
        D.32190 = (int) D.32189;
        D.32191 = method->name;
        D.30426 = method->klass;
        D.32192 = D.30426->name;
        D.30426 = method->klass;
        D.32193 = D.30426->name_space;
        printf ("sharing failed for method %s.%s.%s/%d opcode %s line %d\n", D.32193, D.32192, D.32191, D.32190, D.32232, 7552);
        <D.32231>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.32229>:
        <D.32227>:
        <D.32224>:
        D.32233 = mono_security_get_mode ();
        if (D.32233 == 2) goto <D.32234>; else goto <D.32235>;
        <D.32234>:
        D.31057 = cfg->exception_type;
        if (D.31057 != 0) goto exception_exit; else goto <D.32236>;
        <D.32236>:
        <D.32235>:
        if (1 != 0) goto <D.32237>; else goto <D.32238>;
        <D.32237>:
        {
          struct MonoMethodSignature * fsig;
          int i;
          int n;

          fsig = mono_method_signature (cmethod);
          D.32239 = fsig->param_count;
          D.32240 = (int) D.32239;
          D.32241 = fsig->hasthis;
          D.32242 = (int) D.32241;
          n = D.32240 + D.32242;
          D.30569 = cfg->verbose_level;
          if (D.30569 > 1) goto <D.32243>; else goto <D.32244>;
          <D.32243>:
          printf ("AOT disabled: %s:%d\n", "method-to-ir.c", 7564);
          <D.32244>:
          cfg->disable_aot = 1;
          D.30489 = cfg->mempool;
          call = mono_mempool_alloc0 (D.30489, 108);
          call->inst.opcode = 448;
          call->inst.dreg = -1;
          call->inst.sreg3 = -1;
          D.32245 = call->inst.sreg3;
          call->inst.sreg2 = D.32245;
          D.32246 = call->inst.sreg2;
          call->inst.sreg1 = D.32246;
          D.30712 = cfg->ip;
          call->inst.cil_code = D.30712;
          call->method = cmethod;
          call->tail_call = 1;
          D.32247 = mono_method_signature (cmethod);
          call->signature = D.32247;
          n.115 = (unsigned int) n;
          D.32249 = n.115 * 4;
          D.30489 = cfg->mempool;
          D.32250 = mono_mempool_alloc (D.30489, D.32249);
          call->args = D.32250;
          call->inst.data.op[0].p = cmethod;
          i = 0;
          goto <D.27448>;
          <D.27447>:
          D.32251 = call->args;
          i.116 = (unsigned int) i;
          D.32253 = i.116 * 4;
          D.32254 = D.32251 + D.32253;
          D.30489 = cfg->mempool;
          D.32255 = mono_mempool_alloc (D.30489, 48);
          *D.32254 = D.32255;
          D.32251 = call->args;
          i.116 = (unsigned int) i;
          D.32253 = i.116 * 4;
          D.32254 = D.32251 + D.32253;
          D.32256 = *D.32254;
          D.32251 = call->args;
          i.116 = (unsigned int) i;
          D.32253 = i.116 * 4;
          D.32254 = D.32251 + D.32253;
          D.32256 = *D.32254;
          D.32256->data.op[1].const_val = 0;
          D.32257 = D.32256->data.op[1].const_val;
          D.32256->data.op[0].const_val = D.32257;
          D.32251 = call->args;
          i.116 = (unsigned int) i;
          D.32253 = i.116 * 4;
          D.32254 = D.32251 + D.32253;
          D.32256 = *D.32254;
          D.32251 = call->args;
          i.116 = (unsigned int) i;
          D.32253 = i.116 * 4;
          D.32254 = D.32251 + D.32253;
          D.32256 = *D.32254;
          D.32256->prev = 0B;
          D.32258 = D.32256->prev;
          D.32256->next = D.32258;
          D.32251 = call->args;
          i.116 = (unsigned int) i;
          D.32253 = i.116 * 4;
          D.32254 = D.32251 + D.32253;
          D.32256 = *D.32254;
          D.32256->opcode = 428;
          D.32251 = call->args;
          i.116 = (unsigned int) i;
          D.32253 = i.116 * 4;
          D.32254 = D.32251 + D.32253;
          D.32256 = *D.32254;
          D.32256->flags = 0;
          D.32251 = call->args;
          i.116 = (unsigned int) i;
          D.32253 = i.116 * 4;
          D.32254 = D.32251 + D.32253;
          D.32256 = *D.32254;
          D.32256->type = 0;
          D.32251 = call->args;
          i.116 = (unsigned int) i;
          D.32253 = i.116 * 4;
          D.32254 = D.32251 + D.32253;
          D.32256 = *D.32254;
          D.32256->dreg = -1;
          D.32251 = call->args;
          i.116 = (unsigned int) i;
          D.32253 = i.116 * 4;
          D.32254 = D.32251 + D.32253;
          D.32256 = *D.32254;
          D.32251 = call->args;
          i.116 = (unsigned int) i;
          D.32253 = i.116 * 4;
          D.32254 = D.32251 + D.32253;
          D.32256 = *D.32254;
          D.32251 = call->args;
          i.116 = (unsigned int) i;
          D.32253 = i.116 * 4;
          D.32254 = D.32251 + D.32253;
          D.32256 = *D.32254;
          D.32256->sreg3 = -1;
          D.32259 = D.32256->sreg3;
          D.32256->sreg2 = D.32259;
          D.32260 = D.32256->sreg2;
          D.32256->sreg1 = D.32260;
          D.32251 = call->args;
          i.116 = (unsigned int) i;
          D.32253 = i.116 * 4;
          D.32254 = D.32251 + D.32253;
          D.32256 = *D.32254;
          D.30712 = cfg->ip;
          D.32256->cil_code = D.30712;
          D.32251 = call->args;
          i.116 = (unsigned int) i;
          D.32253 = i.116 * 4;
          D.32254 = D.32251 + D.32253;
          D.32256 = *D.32254;
          D.31116 = cfg->arg_types;
          i.116 = (unsigned int) i;
          D.32253 = i.116 * 4;
          D.32261 = D.31116 + D.32253;
          D.32262 = *D.32261;
          D.32263 = mono_type_to_regmove (cfg, D.32262);
          D.32264 = (short unsigned int) D.32263;
          D.32256->opcode = D.32264;
          D.32251 = call->args;
          i.116 = (unsigned int) i;
          D.32253 = i.116 * 4;
          D.32254 = D.32251 + D.32253;
          D.32256 = *D.32254;
          D.31116 = cfg->arg_types;
          i.116 = (unsigned int) i;
          D.32253 = i.116 * 4;
          D.32261 = D.31116 + D.32253;
          D.32262 = *D.32261;
          type_to_eval_stack_type (cfg, D.32262, D.32256);
          D.32251 = call->args;
          i.116 = (unsigned int) i;
          D.32253 = i.116 * 4;
          D.32254 = D.32251 + D.32253;
          D.32256 = *D.32254;
          D.31106 = cfg->args;
          i.116 = (unsigned int) i;
          D.32253 = i.116 * 4;
          D.32265 = D.31106 + D.32253;
          D.32266 = *D.32265;
          D.32267 = D.32266->klass;
          D.32256->klass = D.32267;
          D.32251 = call->args;
          i.116 = (unsigned int) i;
          D.32253 = i.116 * 4;
          D.32254 = D.32251 + D.32253;
          D.32256 = *D.32254;
          D.31106 = cfg->args;
          i.116 = (unsigned int) i;
          D.32253 = i.116 * 4;
          D.32265 = D.31106 + D.32253;
          D.32266 = *D.32265;
          D.32268 = D.32266->dreg;
          D.32256->sreg1 = D.32268;
          D.32251 = call->args;
          i.116 = (unsigned int) i;
          D.32253 = i.116 * 4;
          D.32254 = D.32251 + D.32253;
          D.32256 = *D.32254;
          D.32251 = call->args;
          i.116 = (unsigned int) i;
          D.32253 = i.116 * 4;
          D.32254 = D.32251 + D.32253;
          D.32256 = *D.32254;
          D.32269 = D.32256->type;
          D.32270 = (<unnamed type>) D.32269;
          D.32271 = alloc_dreg (cfg, D.32270);
          D.32272 = (int) D.32271;
          D.32256->dreg = D.32272;
          D.32251 = call->args;
          i.116 = (unsigned int) i;
          D.32253 = i.116 * 4;
          D.32254 = D.32251 + D.32253;
          D.32256 = *D.32254;
          D.32273 = D.32256->opcode;
          if (D.32273 == 431) goto <D.32274>; else goto <D.32275>;
          <D.32274>:
          D.32251 = call->args;
          i.116 = (unsigned int) i;
          D.32253 = i.116 * 4;
          D.32254 = D.32251 + D.32253;
          D.32256 = *D.32254;
          D.31116 = cfg->arg_types;
          i.116 = (unsigned int) i;
          D.32253 = i.116 * 4;
          D.32261 = D.31116 + D.32253;
          D.32262 = *D.32261;
          D.32276 = mono_class_from_mono_type (D.32262);
          D.32256->klass = D.32276;
          <D.32275>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.32277>; else goto <D.32278>;
          <D.32277>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.32251 = call->args;
          i.116 = (unsigned int) i;
          D.32253 = i.116 * 4;
          D.32254 = D.32251 + D.32253;
          D.32256 = *D.32254;
          D.30741->next = D.32256;
          D.32251 = call->args;
          i.116 = (unsigned int) i;
          D.32253 = i.116 * 4;
          D.32254 = D.32251 + D.32253;
          D.32256 = *D.32254;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.32256->prev = D.30741;
          bblock.127 = cfg->cbb;
          D.32251 = call->args;
          i.116 = (unsigned int) i;
          D.32253 = i.116 * 4;
          D.32254 = D.32251 + D.32253;
          D.32256 = *D.32254;
          bblock.127->last_ins = D.32256;
          goto <D.32279>;
          <D.32278>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          D.32251 = call->args;
          i.116 = (unsigned int) i;
          D.32253 = i.116 * 4;
          D.32254 = D.32251 + D.32253;
          D.32256 = *D.32254;
          bblock.127->last_ins = D.32256;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.32279>:
          i = i + 1;
          <D.27448>:
          if (i < n) goto <D.27447>; else goto <D.27449>;
          <D.27449>:
          mono_arch_emit_call (cfg, call);
          bblock.78 = bblock;
          D.30826 = bblock.78->last_ins;
          if (D.30826 != 0B) goto <D.32280>; else goto <D.32281>;
          <D.32280>:
          bblock.78 = bblock;
          D.30826 = bblock.78->last_ins;
          D.30826->next = call;
          bblock.78 = bblock;
          D.30826 = bblock.78->last_ins;
          MEM[(struct MonoInst *)call].prev = D.30826;
          bblock.78 = bblock;
          bblock.78->last_ins = call;
          goto <D.32282>;
          <D.32281>:
          bblock.78 = bblock;
          bblock.78 = bblock;
          bblock.78->last_ins = call;
          D.30826 = bblock.78->last_ins;
          bblock.78->code = D.30826;
          <D.32282>:
        }
        goto <D.32283>;
        <D.32238>:
        i = 0;
        goto <D.27451>;
        <D.27450>:
        i.76 = (unsigned int) i;
        D.31235 = i.76 * 4;
        D.32284 = arg_array + D.31235;
        D.32285 = *D.32284;
        i.76 = (unsigned int) i;
        D.31235 = i.76 * 4;
        D.32284 = arg_array + D.31235;
        D.32285 = *D.32284;
        D.32286 = D.32285->flags;
        D.32287 = D.32286 | 4;
        D.32285->flags = D.32287;
        i = i + 1;
        <D.27451>:
        i.117 = (unsigned int) i;
        if (i.117 < num_args) goto <D.27450>; else goto <D.27452>;
        <D.27452>:
        D.30489 = cfg->mempool;
        call = mono_mempool_alloc0 (D.30489, 108);
        call->inst.opcode = 447;
        call->inst.dreg = -1;
        call->inst.sreg3 = -1;
        D.32245 = call->inst.sreg3;
        call->inst.sreg2 = D.32245;
        D.32246 = call->inst.sreg2;
        call->inst.sreg1 = D.32246;
        D.30712 = cfg->ip;
        call->inst.cil_code = D.30712;
        ins = call;
        ins->data.op[0].p = cmethod;
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        if (D.30826 != 0B) goto <D.32289>; else goto <D.32290>;
        <D.32289>:
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        D.30826->next = ins;
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        ins->prev = D.30826;
        bblock.78 = bblock;
        bblock.78->last_ins = ins;
        goto <D.32291>;
        <D.32290>:
        bblock.78 = bblock;
        bblock.78 = bblock;
        bblock.78->last_ins = ins;
        D.30826 = bblock.78->last_ins;
        bblock.78->code = D.30826;
        <D.32291>:
        <D.32283>:
        ip = ip + 5;
        start_new_bblock = 1;
        goto <D.27380>;
      }
      <D.27453>:
      <D.27454>:
      <D.27455>:
      {
        struct MonoInst * addr;
        struct MonoMethodSignature * fsig;
        int array_rank;
        int virtual;
        int calli;
        gboolean pass_imt_from_rgctx;
        struct MonoInst * imt_arg;
        struct MonoInst * keep_this_alive;
        gboolean pass_vtable;
        gboolean pass_mrgctx;
        struct MonoInst * vtable_arg;
        gboolean check_this;
        gboolean supported_tail_call;
        gboolean tail_call;
        gboolean need_seq_point;
        guint32 call_opcode;
        gboolean emit_widen;
        gboolean push_res;
        gboolean skip_ret;
        gboolean delegate_invoke;

        try
          {
            addr = 0B;
            fsig = 0B;
            array_rank = 0;
            D.31371 = *ip;
            D.32292 = D.31371 == 111;
            virtual = (int) D.32292;
            D.31371 = *ip;
            D.32293 = D.31371 == 41;
            calli = (int) D.32293;
            pass_imt_from_rgctx = 0;
            imt_arg = 0B;
            keep_this_alive = 0B;
            pass_vtable = 0;
            pass_mrgctx = 0;
            vtable_arg = 0B;
            check_this = 0;
            supported_tail_call = 0;
            tail_call = 0;
            need_seq_point = 0;
            D.31371 = *ip;
            call_opcode = (guint32) D.31371;
            emit_widen = 1;
            push_res = 1;
            skip_ret = 0;
            delegate_invoke = 0;
            D.31934 = ip + 5;
            if (D.31934 > end) goto <D.32294>; else goto <D.32295>;
            <D.32294>:
            D.30637 = cfg->gsharedvt;
            if (D.30637 != 0) goto <D.32296>; else goto <D.32297>;
            <D.32296>:
            D.30569 = cfg->verbose_level;
            if (D.30569 > 2) goto <D.32298>; else goto <D.32299>;
            <D.32298>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.32299>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.32297>:
            D.32300 = mini_get_debug_options ();
            D.32301 = D.32300->break_on_unverified;
            if (D.32301 != 0) goto <D.32302>; else goto unverified;
            <D.32302>:
            __asm__ __volatile__("int $03");
            <D.32295>:
            token = MEM[(const guint32 *)ip + 1B];
            ins = 0B;
            if (calli != 0) goto <D.32303>; else goto <D.32304>;
            <D.32303>:
            cmethod = 0B;
            sp.85 = (int) sp;
            stack_start.86 = (int) stack_start;
            D.31274 = sp.85 - stack_start.86;
            if (D.31274 <= 3) goto <D.32305>; else goto <D.32306>;
            <D.32305>:
            D.30637 = cfg->gsharedvt;
            if (D.30637 != 0) goto <D.32307>; else goto <D.32308>;
            <D.32307>:
            D.30569 = cfg->verbose_level;
            if (D.30569 > 2) goto <D.32309>; else goto <D.32310>;
            <D.32309>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.32310>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.32308>:
            D.32311 = mini_get_debug_options ();
            D.32312 = D.32311->break_on_unverified;
            if (D.32312 != 0) goto <D.32313>; else goto unverified;
            <D.32313>:
            __asm__ __volatile__("int $03");
            <D.32306>:
            sp = sp + 4294967292;
            addr = *sp;
            fsig = mini_get_signature (method, token, generic_context);
            D.32314 = fsig->param_count;
            D.32315 = (int) D.32314;
            D.32316 = fsig->hasthis;
            D.32317 = (int) D.32316;
            n = D.32315 + D.32317;
            D.30538 = BIT_FIELD_REF <*method, 8, 168>;
            D.32318 = D.30538 & 2;
            if (D.32318 != 0) goto <D.32319>; else goto <D.32320>;
            <D.32319>:
            D.32321 = BIT_FIELD_REF <*fsig, 8, 88>;
            D.32322 = D.32321 & 1;
            if (D.32322 != 0) goto <D.32323>; else goto <D.32324>;
            <D.32323>:
            {
              struct MonoInst * args[3];

              try
                {
                  D.30489 = cfg->mempool;
                  D.32325 = mono_mempool_alloc (D.30489, 48);
                  args[0] = D.32325;
                  D.32326 = args[0];
                  D.32326 = args[0];
                  D.32326->data.op[1].const_val = 0;
                  D.32327 = D.32326->data.op[1].const_val;
                  D.32326->data.op[0].const_val = D.32327;
                  D.32326 = args[0];
                  D.32326 = args[0];
                  D.32326->prev = 0B;
                  D.32328 = D.32326->prev;
                  D.32326->next = D.32328;
                  D.32326 = args[0];
                  D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
                  D.30884 = D.30883 & 64;
                  if (D.30884 != 0) goto <D.32330>; else goto <D.32331>;
                  <D.32330>:
                  iftmp.118 = 738;
                  goto <D.32332>;
                  <D.32331>:
                  iftmp.118 = 362;
                  <D.32332>:
                  D.32326->opcode = iftmp.118;
                  D.32326 = args[0];
                  D.32326->flags = 0;
                  D.32326 = args[0];
                  D.32326->type = 0;
                  D.32326 = args[0];
                  D.32326->dreg = -1;
                  D.32326 = args[0];
                  D.32326 = args[0];
                  D.32326 = args[0];
                  D.32326->sreg3 = -1;
                  D.32333 = D.32326->sreg3;
                  D.32326->sreg2 = D.32333;
                  D.32334 = D.32326->sreg2;
                  D.32326->sreg1 = D.32334;
                  D.32326 = args[0];
                  D.30712 = cfg->ip;
                  D.32326->cil_code = D.30712;
                  D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
                  D.30884 = D.30883 & 64;
                  if (D.30884 != 0) goto <D.32335>; else goto <D.32336>;
                  <D.32335>:
                  {
                    struct MonoInst * group;
                    struct MonoInst * got_loc;

                    got_loc = mono_get_got_var (cfg);
                    D.30489 = cfg->mempool;
                    group = mono_mempool_alloc (D.30489, 48);
                    group->data.op[1].const_val = 0;
                    D.32337 = group->data.op[1].const_val;
                    group->data.op[0].const_val = D.32337;
                    group->prev = 0B;
                    D.32338 = group->prev;
                    group->next = D.32338;
                    group->opcode = 737;
                    group->flags = 0;
                    group->type = 0;
                    group->dreg = -1;
                    group->sreg3 = -1;
                    D.32339 = group->sreg3;
                    group->sreg2 = D.32339;
                    D.32340 = group->sreg2;
                    group->sreg1 = D.32340;
                    D.30712 = cfg->ip;
                    group->cil_code = D.30712;
                    D.30426 = method->klass;
                    D.30427 = D.30426->image;
                    group->data.op[0].src = D.30427;
                    group->data.op[1].src = 12B;
                    D.32326 = args[0];
                    D.32341 = got_loc->dreg;
                    D.32326->sreg1 = D.32341;
                    D.32326 = args[0];
                    D.32326->data.op[1].p = group;
                  }
                  goto <D.32342>;
                  <D.32336>:
                  D.32326 = args[0];
                  D.30426 = method->klass;
                  D.30427 = D.30426->image;
                  D.32326->data.op[0].p = D.30427;
                  D.32326 = args[0];
                  D.32326->data.op[1].src = 12B;
                  <D.32342>:
                  D.32326 = args[0];
                  D.32326->type = 3;
                  D.32326 = args[0];
                  D.32343 = alloc_dreg (cfg, 3);
                  D.32344 = (int) D.32343;
                  D.32326->dreg = D.32344;
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  if (D.30741 != 0B) goto <D.32345>; else goto <D.32346>;
                  <D.32345>:
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.32326 = args[0];
                  D.30741->next = D.32326;
                  D.32326 = args[0];
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.32326->prev = D.30741;
                  bblock.127 = cfg->cbb;
                  D.32326 = args[0];
                  bblock.127->last_ins = D.32326;
                  goto <D.32347>;
                  <D.32346>:
                  bblock.127 = cfg->cbb;
                  bblock.127 = cfg->cbb;
                  D.32326 = args[0];
                  bblock.127->last_ins = D.32326;
                  D.30741 = bblock.127->last_ins;
                  bblock.127->code = D.30741;
                  <D.32347>:
                  D.30489 = cfg->mempool;
                  D.32348 = mono_mempool_alloc (D.30489, 48);
                  args[1] = D.32348;
                  D.32349 = args[1];
                  D.32349 = args[1];
                  D.32349->data.op[1].const_val = 0;
                  D.32350 = D.32349->data.op[1].const_val;
                  D.32349->data.op[0].const_val = D.32350;
                  D.32349 = args[1];
                  D.32349 = args[1];
                  D.32349->prev = 0B;
                  D.32351 = D.32349->prev;
                  D.32349->next = D.32351;
                  D.32349 = args[1];
                  D.32349->opcode = 362;
                  D.32349 = args[1];
                  D.32349->flags = 0;
                  D.32349 = args[1];
                  D.32349->type = 0;
                  D.32349 = args[1];
                  D.32349->dreg = -1;
                  D.32349 = args[1];
                  D.32349 = args[1];
                  D.32349 = args[1];
                  D.32349->sreg3 = -1;
                  D.32352 = D.32349->sreg3;
                  D.32349->sreg2 = D.32352;
                  D.32353 = D.32349->sreg2;
                  D.32349->sreg1 = D.32353;
                  D.32349 = args[1];
                  D.30712 = cfg->ip;
                  D.32349->cil_code = D.30712;
                  D.32349 = args[1];
                  D.32349->data.op[0].p = fsig;
                  D.32349 = args[1];
                  D.32349->type = 3;
                  D.32349 = args[1];
                  D.32354 = alloc_dreg (cfg, 3);
                  D.32355 = (int) D.32354;
                  D.32349->dreg = D.32355;
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  if (D.30741 != 0B) goto <D.32356>; else goto <D.32357>;
                  <D.32356>:
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.32349 = args[1];
                  D.30741->next = D.32349;
                  D.32349 = args[1];
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.32349->prev = D.30741;
                  bblock.127 = cfg->cbb;
                  D.32349 = args[1];
                  bblock.127->last_ins = D.32349;
                  goto <D.32358>;
                  <D.32357>:
                  bblock.127 = cfg->cbb;
                  bblock.127 = cfg->cbb;
                  D.32349 = args[1];
                  bblock.127->last_ins = D.32349;
                  D.30741 = bblock.127->last_ins;
                  bblock.127->code = D.30741;
                  <D.32358>:
                  args[2] = addr;
                  addr = mono_emit_jit_icall (cfg, mono_get_native_calli_wrapper, &args);
                }
              finally
                {
                  args = {CLOBBER};
                }
            }
            <D.32324>:
            <D.32320>:
            goto <D.32359>;
            <D.32304>:
            {
              struct MonoMethod * cil_method;

              try
                {
                  cmethod = mini_get_method (cfg, method, token, 0B, generic_context);
                  cil_method = cmethod;
                  if (constrained_call != 0B) goto <D.32360>; else goto <D.32361>;
                  <D.32360>:
                  D.30431 = BIT_FIELD_REF <*method, 8, 160>;
                  D.30432 = D.30431 & 124;
                  if (D.30432 != 0) goto <D.32362>; else goto <D.32363>;
                  <D.32362>:
                  D.30569 = cfg->verbose_level;
                  if (D.30569 > 2) goto <D.32364>; else goto <D.32365>;
                  <D.32364>:
                  D.32366 = mono_type_get_full_name (constrained_call);
                  printf ("DM Constrained call to %s\n", D.32366);
                  <D.32365>:
                  D.32369 = constrained_call->byval_arg.type;
                  D.32370 = D.32369 != 19;
                  D.32371 = D.32369 != 30;
                  D.32372 = D.32370 & D.32371;
                  if (D.32372 != 0) goto <D.32367>; else goto <D.32373>;
                  <D.32373>:
                  D.30524 = cfg->generic_sharing_context;
                  if (D.30524 == 0B) goto <D.32367>; else goto <D.32368>;
                  <D.32367>:
                  cil_method.119 = cil_method;
                  cmethod = mono_get_method_constrained_with_method (image, cil_method.119, constrained_call, generic_context);
                  <D.32368>:
                  goto <D.32375>;
                  <D.32363>:
                  D.30569 = cfg->verbose_level;
                  if (D.30569 > 2) goto <D.32376>; else goto <D.32377>;
                  <D.32376>:
                  D.32378 = mono_type_get_full_name (constrained_call);
                  printf ("Constrained call to %s\n", D.32378);
                  <D.32377>:
                  D.32381 = constrained_call->byval_arg.type;
                  D.32382 = D.32381 == 19;
                  D.32383 = D.32381 == 30;
                  D.32384 = D.32382 | D.32383;
                  if (D.32384 != 0) goto <D.32385>; else goto <D.32379>;
                  <D.32385>:
                  D.30524 = cfg->generic_sharing_context;
                  if (D.30524 != 0B) goto <D.32386>; else goto <D.32379>;
                  <D.32386>:
                  D.32387 = mini_is_gsharedvt_klass (cfg, constrained_call);
                  if (D.32387 == 0) goto <D.32388>; else goto <D.32389>;
                  <D.32388>:
                  D.32390 = cmethod->klass;
                  D.32391 = BIT_FIELD_REF <*D.32390, 8, 160>;
                  D.32392 = D.32391 & 8;
                  D.32393 = D.32392 != 0;
                  D.32394 = (long int) D.32393;
                  D.32395 = __builtin_expect (D.32394, 0);
                  if (D.32395 != 0) goto <D.32396>; else goto <D.32397>;
                  <D.32396>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7671, "!cmethod->klass->valuetype");
                  <D.32397>:
                  <D.32389>:
                  goto <D.32380>;
                  <D.32379>:
                  cmethod = mono_get_method_constrained (image, token, constrained_call, generic_context, &cil_method);
                  <D.32380>:
                  <D.32375>:
                  <D.32361>:
                  if (cmethod == 0B) goto <D.32398>; else goto <D.32400>;
                  <D.32400>:
                  D.32401 = mono_loader_get_last_error ();
                  if (D.32401 != 0B) goto <D.32398>; else goto <D.32399>;
                  <D.32398>:
                  D.32402 = mini_get_debug_options ();
                  D.32403 = D.32402->break_on_unverified;
                  if (D.32403 != 0) goto <D.32404>; else goto load_error;
                  <D.32404>:
                  __asm__ __volatile__("int $03");
                  <D.32399>:
                  if (dont_verify == 0) goto <D.32405>; else goto <D.32406>;
                  <D.32405>:
                  D.31276 = BIT_FIELD_REF <*cfg, 8, 3400>;
                  D.32407 = D.31276 & 64;
                  if (D.32407 == 0) goto <D.32408>; else goto <D.32409>;
                  <D.32408>:
                  {
                    struct MonoMethod * target_method;

                    target_method = cil_method;
                    D.30538 = BIT_FIELD_REF <*method, 8, 168>;
                    D.30539 = D.30538 & 16;
                    if (D.30539 != 0) goto <D.32410>; else goto <D.32411>;
                    <D.32410>:
                    D.32412 = mono_method_get_generic_container (method_definition);
                    D.32413 = &D.32412->context;
                    target_method = mini_get_method_allow_open (method, token, 0B, D.32413);
                    <D.32411>:
                    D.32414 = mono_method_can_access_method (method_definition, target_method);
                    if (D.32414 == 0) goto <D.32415>; else goto <D.32416>;
                    <D.32415>:
                    cil_method.119 = cil_method;
                    D.32417 = mono_method_can_access_method (method, cil_method.119);
                    if (D.32417 == 0) goto <D.32418>; else goto <D.32419>;
                    <D.32418>:
                    {
                      char * method_fname;
                      char * cil_method_fname;

                      method_fname = mono_method_full_name (method, 1);
                      cil_method.119 = cil_method;
                      cil_method_fname = mono_method_full_name (cil_method.119, 1);
                      mono_cfg_set_exception (cfg, 9);
                      D.32420 = monoeg_g_strdup_printf ("Method `%s\' is inaccessible from method `%s\'\n", cil_method_fname, method_fname);
                      cfg->exception_message = D.32420;
                      monoeg_g_free (method_fname);
                      monoeg_g_free (cil_method_fname);
                      goto exception_exit;
                    }
                    <D.32419>:
                    <D.32416>:
                  }
                  <D.32409>:
                  <D.32406>:
                  D.32421 = mono_security_get_mode ();
                  if (D.32421 == 1) goto <D.32422>; else goto <D.32423>;
                  <D.32422>:
                  bblock.78 = bblock;
                  cil_method.119 = cil_method;
                  ensure_method_is_allowed_to_call_method (cfg, method, cil_method.119, bblock.78, ip);
                  <D.32423>:
                  if (virtual == 0) goto <D.32424>; else goto <D.32425>;
                  <D.32424>:
                  D.32426 = cmethod->flags;
                  D.32427 = (int) D.32426;
                  D.32428 = D.32427 & 1024;
                  if (D.32428 != 0) goto <D.32429>; else goto <D.32430>;
                  <D.32429>:
                  virtual = 1;
                  <D.32430>:
                  <D.32425>:
                  {
                    const int test_flags;
                    const int expected_flags;

                    test_flags = 112;
                    expected_flags = 96;
                    if (virtual == 0) goto <D.32431>; else goto <D.32432>;
                    <D.32431>:
                    D.32390 = cmethod->klass;
                    D.32433 = BIT_FIELD_REF <*D.32390, 8, 176>;
                    D.32434 = D.32433 & 64;
                    if (D.32434 != 0) goto <D.32435>; else goto <D.32436>;
                    <D.32435>:
                    D.32426 = cmethod->flags;
                    D.32427 = (int) D.32426;
                    D.32437 = D.32427 & 112;
                    if (D.32437 == 96) goto <D.32438>; else goto <D.32439>;
                    <D.32438>:
                    D.30459 = cfg->method;
                    D.32440 = BIT_FIELD_REF <*D.30459, 8, 160>;
                    D.32441 = D.32440 & 124;
                    if (D.32441 == 0) goto <D.32442>; else goto <D.32443>;
                    <D.32442>:
                    virtual = 1;
                    <D.32443>:
                    <D.32439>:
                    <D.32436>:
                    <D.32432>:
                  }
                  D.32390 = cmethod->klass;
                  D.32391 = BIT_FIELD_REF <*D.32390, 8, 160>;
                  D.32444 = D.32391 & 1;
                  if (D.32444 == 0) goto <D.32445>; else goto <D.32446>;
                  <D.32445>:
                  D.32390 = cmethod->klass;
                  D.32447 = mono_class_init (D.32390);
                  if (D.32447 == 0) goto <D.32448>; else goto <D.32449>;
                  <D.32448>:
                  D.32450 = mini_get_debug_options ();
                  D.32451 = D.32450->break_on_unverified;
                  if (D.32451 != 0) goto <D.32452>; else goto <D.32453>;
                  <D.32452>:
                  __asm__ __volatile__("int $03");
                  goto <D.32454>;
                  <D.32453>:
                  D.32390 = cmethod->klass;
                  cfg->exception_ptr = D.32390;
                  goto load_error;
                  <D.32454>:
                  <D.32449>:
                  <D.32446>:
                  D.32457 = cmethod->iflags;
                  D.32458 = (int) D.32457;
                  D.32459 = D.32458 & 4096;
                  if (D.32459 != 0) goto <D.32460>; else goto <D.32455>;
                  <D.32460>:
                  D.32390 = cmethod->klass;
                  D.32461 = mini_class_is_system_array (D.32390);
                  if (D.32461 != 0) goto <D.32462>; else goto <D.32455>;
                  <D.32462>:
                  D.32390 = cmethod->klass;
                  D.32463 = D.32390->rank;
                  array_rank = (int) D.32463;
                  fsig = mono_method_signature (cmethod);
                  goto <D.32456>;
                  <D.32455>:
                  fsig = mono_method_signature (cmethod);
                  if (fsig == 0B) goto <D.32464>; else goto <D.32465>;
                  <D.32464>:
                  D.32466 = mini_get_debug_options ();
                  D.32467 = D.32466->break_on_unverified;
                  if (D.32467 != 0) goto <D.32468>; else goto load_error;
                  <D.32468>:
                  __asm__ __volatile__("int $03");
                  <D.32465>:
                  D.32321 = BIT_FIELD_REF <*fsig, 8, 88>;
                  D.32322 = D.32321 & 1;
                  if (D.32322 != 0) goto <D.32469>; else goto <D.32470>;
                  <D.32469>:
                  {
                    struct MonoMethod * wrapper;

                    D.32471 = cfg->compile_aot;
                    D.32472 = (int) D.32471;
                    check_for_pending_exc.120 = check_for_pending_exc;
                    wrapper = mono_marshal_get_native_wrapper (cmethod, check_for_pending_exc.120, D.32472);
                    fsig = mono_method_signature (wrapper);
                  }
                  goto <D.32474>;
                  <D.32470>:
                  if (constrained_call != 0B) goto <D.32475>; else goto <D.32476>;
                  <D.32475>:
                  fsig = mono_method_signature (cmethod);
                  goto <D.32477>;
                  <D.32476>:
                  fsig = mono_method_get_signature_full (cmethod, image, token, generic_context);
                  <D.32477>:
                  <D.32474>:
                  <D.32456>:
                  cil_method.119 = cil_method;
                  mono_save_token_info (cfg, image, token, cil_method.119);
                  D.32478 = fsig->ret;
                  D.32479 = mono_type_is_void (D.32478);
                  if (D.32479 == 0) goto <D.32480>; else goto <D.32481>;
                  <D.32480>:
                  D.31934 = ip + 5;
                  if (D.31934 >= end) goto <D.32484>; else goto <D.32485>;
                  <D.32485>:
                  D.31934 = ip + 5;
                  D.32486 = *D.31934;
                  D.32487 = D.32486 != 38;
                  D.32488 = D.32486 != 0;
                  D.32489 = D.32487 & D.32488;
                  if (D.32489 != 0) goto <D.32484>; else goto <D.32483>;
                  <D.32484>:
                  if (seq_point_locs == 0B) goto <D.32482>; else goto <D.32490>;
                  <D.32490>:
                  D.31934 = ip + 5;
                  D.32491 = (int) D.31934;
                  D.30636 = header->code;
                  D.31196 = (int) D.30636;
                  D.32492 = D.32491 - D.31196;
                  D.32493 = (unsigned int) D.32492;
                  D.32494 = D.32493 / 32;
                  D.32495 = seq_point_locs->data[D.32494];
                  D.31934 = ip + 5;
                  D.32491 = (int) D.31934;
                  D.30636 = header->code;
                  D.31196 = (int) D.30636;
                  D.32492 = D.32491 - D.31196;
                  D.32496 = D.32492 & 31;
                  D.32497 = 1 << D.32496;
                  D.32498 = D.32495 & D.32497;
                  if (D.32498 == 0) goto <D.32482>; else goto <D.32483>;
                  <D.32482>:
                  need_seq_point = 1;
                  <D.32483>:
                  <D.32481>:
                  D.32314 = fsig->param_count;
                  D.32315 = (int) D.32314;
                  D.32316 = fsig->hasthis;
                  D.32317 = (int) D.32316;
                  n = D.32315 + D.32317;
                  D.32499 = mono_security_get_mode ();
                  if (D.32499 == 2) goto <D.32500>; else goto <D.32501>;
                  <D.32500>:
                  D.32502 = check_linkdemand (cfg, method, cmethod);
                  if (D.32502 != 0) goto <D.32503>; else goto <D.32504>;
                  <D.32503>:
                  D.30459 = cfg->method;
                  if (D.30459 != method) goto <D.32505>; else goto <D.32506>;
                  <D.32505>:
                  D.30431 = BIT_FIELD_REF <*method, 8, 160>;
                  D.30432 = D.30431 & 124;
                  if (D.30432 == 0) goto <D.32507>; else goto <D.32508>;
                  <D.32507>:
                  D.30569 = cfg->verbose_level;
                  if (D.30569 > 1) goto <D.32509>; else goto <D.32510>;
                  <D.32509>:
                  printf ("inline failed: %s\n", "linkdemand");
                  <D.32510>:
                  goto inline_failure;
                  <D.32508>:
                  <D.32506>:
                  <D.32504>:
                  D.31057 = cfg->exception_type;
                  if (D.31057 != 0) goto exception_exit; else goto <D.32511>;
                  <D.32511>:
                  <D.32501>:
                  D.32512 = BIT_FIELD_REF <*cmethod, 8, 160>;
                  D.32513 = D.32512 & 128;
                  if (D.32513 != 0) goto <D.32514>; else goto <D.32515>;
                  <D.32514>:
                  D.30431 = BIT_FIELD_REF <*method, 8, 160>;
                  D.30432 = D.30431 & 124;
                  if (D.30432 != 16) goto <D.32516>; else goto <D.32517>;
                  <D.32516>:
                  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 7769);
                  <D.32517>:
                  <D.32515>:
                }
              finally
                {
                  cil_method = {CLOBBER};
                }
            }
            <D.32359>:
            D.30524 = cfg->generic_sharing_context;
            if (D.30524 == 0B) goto <D.32518>; else goto <D.32519>;
            <D.32518>:
            if (cmethod != 0B) goto <D.32520>; else goto <D.32521>;
            <D.32520>:
            D.32390 = cmethod->klass;
            D.32522 = D.32390->generic_container;
            if (D.32522 != 0B) goto <D.32523>; else goto <D.32524>;
            <D.32523>:
            D.30637 = cfg->gsharedvt;
            if (D.30637 != 0) goto <D.32525>; else goto <D.32526>;
            <D.32525>:
            D.30569 = cfg->verbose_level;
            if (D.30569 > 2) goto <D.32527>; else goto <D.32528>;
            <D.32527>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.32528>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.32526>:
            D.32529 = mini_get_debug_options ();
            D.32530 = D.32529->break_on_unverified;
            if (D.32530 != 0) goto <D.32531>; else goto unverified;
            <D.32531>:
            __asm__ __volatile__("int $03");
            <D.32524>:
            <D.32521>:
            <D.32519>:
            D.30524 = cfg->generic_sharing_context;
            if (D.30524 == 0B) goto <D.32532>; else goto <D.32533>;
            <D.32532>:
            if (cmethod != 0B) goto <D.32534>; else goto <D.32535>;
            <D.32534>:
            D.32536 = mono_method_check_context_used (cmethod);
            D.32537 = D.32536 != 0;
            D.32538 = (long int) D.32537;
            D.32539 = __builtin_expect (D.32538, 0);
            if (D.32539 != 0) goto <D.32540>; else goto <D.32541>;
            <D.32540>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7776, "!mono_method_check_context_used (cmethod)");
            <D.32541>:
            <D.32535>:
            <D.32533>:
            sp.85 = (int) sp;
            stack_start.86 = (int) stack_start;
            D.31274 = sp.85 - stack_start.86;
            D.31275 = D.31274 /[ex] 4;
            if (D.31275 < n) goto <D.32542>; else goto <D.32543>;
            <D.32542>:
            D.30637 = cfg->gsharedvt;
            if (D.30637 != 0) goto <D.32544>; else goto <D.32545>;
            <D.32544>:
            D.30569 = cfg->verbose_level;
            if (D.30569 > 2) goto <D.32546>; else goto <D.32547>;
            <D.32546>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.32547>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.32545>:
            D.32548 = mini_get_debug_options ();
            D.32549 = D.32548->break_on_unverified;
            if (D.32549 != 0) goto <D.32550>; else goto unverified;
            <D.32550>:
            __asm__ __volatile__("int $03");
            <D.32543>:
            n.90 = (unsigned int) n;
            D.31416 = n.90 * 4;
            D.32551 = -D.31416;
            sp = sp + D.32551;
            if (constrained_call != 0B) goto <D.32552>; else goto <D.32553>;
            <D.32552>:
            D.32554 = mini_is_gsharedvt_klass (cfg, constrained_call);
            if (D.32554 != 0) goto <D.32555>; else goto <D.32556>;
            <D.32555>:
            D.32390 = cmethod->klass;
            D.32559 = mono_defaults.object_class;
            if (D.32390 != D.32559) goto <D.32560>; else goto <D.32557>;
            <D.32560>:
            D.32561 = BIT_FIELD_REF <*constrained_call, 8, 160>;
            D.32562 = D.32561 & 8;
            if (D.32562 != 0) goto <D.32563>; else goto <D.32557>;
            <D.32563>:
            D.32390 = cmethod->klass;
            D.32391 = BIT_FIELD_REF <*D.32390, 8, 160>;
            D.32392 = D.32391 & 8;
            if (D.32392 != 0) goto <D.32564>; else goto <D.32557>;
            <D.32564>:
            goto <D.32558>;
            <D.32557>:
            D.32390 = cmethod->klass;
            D.32567 = D.32390->image;
            D.32568 = mono_defaults.corlib;
            if (D.32567 != D.32568) goto <D.32569>; else goto <D.32565>;
            <D.32569>:
            D.32390 = cmethod->klass;
            D.32570 = D.32390->flags;
            D.32571 = D.32570 & 32;
            if (D.32571 == 0) goto <D.32572>; else goto <D.32565>;
            <D.32572>:
            D.32390 = cmethod->klass;
            D.32391 = BIT_FIELD_REF <*D.32390, 8, 160>;
            D.32392 = D.32391 & 8;
            if (D.32392 == 0) goto <D.32573>; else goto <D.32565>;
            <D.32573>:
            goto <D.32566>;
            <D.32565>:
            D.32390 = cmethod->klass;
            D.32559 = mono_defaults.object_class;
            if (D.32390 == D.32559) goto <D.32574>; else goto <D.32580>;
            <D.32580>:
            D.32390 = cmethod->klass;
            D.32570 = D.32390->flags;
            D.32571 = D.32570 & 32;
            if (D.32571 != 0) goto <D.32574>; else goto <D.32581>;
            <D.32581>:
            D.32390 = cmethod->klass;
            D.32391 = BIT_FIELD_REF <*D.32390, 8, 160>;
            D.32392 = D.32391 & 8;
            if (D.32392 == 0) goto <D.32582>; else goto <D.32575>;
            <D.32582>:
            D.32390 = cmethod->klass;
            D.32567 = D.32390->image;
            D.32568 = mono_defaults.corlib;
            if (D.32567 != D.32568) goto <D.32574>; else goto <D.32575>;
            <D.32574>:
            D.32478 = fsig->ret;
            D.32583 = mono_type_is_void (D.32478);
            if (D.32583 != 0) goto <D.32576>; else goto <D.32584>;
            <D.32584>:
            D.32478 = fsig->ret;
            D.32585 = BIT_FIELD_REF <*D.32478, 8, 56>;
            D.32586 = D.32585 & 64;
            if (D.32586 == 0) goto <D.32587>; else goto <D.32577>;
            <D.32587>:
            D.32478 = fsig->ret;
            D.32588 = D.32478->type;
            D.32589 = D.32588 + 254;
            D.32590 = D.32589 <= 11;
            D.32591 = D.32588 + 232;
            D.32592 = D.32591 <= 1;
            D.32593 = D.32590 | D.32592;
            if (D.32593 != 0) goto <D.32576>; else goto <D.32577>;
            <D.32577>:
            D.32478 = fsig->ret;
            D.32594 = mono_type_is_reference (D.32478);
            if (D.32594 != 0) goto <D.32576>; else goto <D.32595>;
            <D.32595>:
            D.32478 = fsig->ret;
            D.32596 = mini_is_gsharedvt_type (cfg, D.32478);
            if (D.32596 != 0) goto <D.32576>; else goto <D.32575>;
            <D.32576>:
            D.32314 = fsig->param_count;
            if (D.32314 == 0) goto <D.32578>; else goto <D.32597>;
            <D.32597>:
            D.32598 = BIT_FIELD_REF <*fsig, 8, 80>;
            D.32599 = D.32598 & 64;
            if (D.32599 == 0) goto <D.32600>; else goto <D.32579>;
            <D.32600>:
            D.32314 = fsig->param_count;
            if (D.32314 == 1) goto <D.32578>; else goto <D.32579>;
            <D.32579>:
            D.32314 = fsig->param_count;
            if (D.32314 == 1) goto <D.32601>; else goto <D.32575>;
            <D.32601>:
            D.32602 = fsig->params[0];
            D.32603 = mono_type_is_reference (D.32602);
            if (D.32603 != 0) goto <D.32578>; else goto <D.32604>;
            <D.32604>:
            D.32602 = fsig->params[0];
            D.32605 = mini_is_gsharedvt_type (cfg, D.32602);
            if (D.32605 != 0) goto <D.32578>; else goto <D.32575>;
            <D.32578>:
            {
              struct MonoInst * args[16];

              try
                {
                  D.31489 = *sp;
                  args[0] = D.31489;
                  D.32606 = mono_method_check_context_used (cmethod);
                  if (D.32606 != 0) goto <D.32607>; else goto <D.32608>;
                  <D.32607>:
                  D.32609 = mono_method_check_context_used (cmethod);
                  D.32610 = emit_get_rgctx_method (cfg, D.32609, cmethod, 5);
                  args[1] = D.32610;
                  goto <D.32611>;
                  <D.32608>:
                  D.30489 = cfg->mempool;
                  D.32612 = mono_mempool_alloc (D.30489, 48);
                  args[1] = D.32612;
                  D.32613 = args[1];
                  D.32613 = args[1];
                  D.32613->data.op[1].const_val = 0;
                  D.32614 = D.32613->data.op[1].const_val;
                  D.32613->data.op[0].const_val = D.32614;
                  D.32613 = args[1];
                  D.32613 = args[1];
                  D.32613->prev = 0B;
                  D.32615 = D.32613->prev;
                  D.32613->next = D.32615;
                  D.32613 = args[1];
                  D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
                  D.30884 = D.30883 & 64;
                  if (D.30884 != 0) goto <D.32617>; else goto <D.32618>;
                  <D.32617>:
                  iftmp.121 = 738;
                  goto <D.32619>;
                  <D.32618>:
                  iftmp.121 = 362;
                  <D.32619>:
                  D.32613->opcode = iftmp.121;
                  D.32613 = args[1];
                  D.32613->flags = 0;
                  D.32613 = args[1];
                  D.32613->type = 0;
                  D.32613 = args[1];
                  D.32613->dreg = -1;
                  D.32613 = args[1];
                  D.32613 = args[1];
                  D.32613 = args[1];
                  D.32613->sreg3 = -1;
                  D.32620 = D.32613->sreg3;
                  D.32613->sreg2 = D.32620;
                  D.32621 = D.32613->sreg2;
                  D.32613->sreg1 = D.32621;
                  D.32613 = args[1];
                  D.30712 = cfg->ip;
                  D.32613->cil_code = D.30712;
                  D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
                  D.30884 = D.30883 & 64;
                  if (D.30884 != 0) goto <D.32622>; else goto <D.32623>;
                  <D.32622>:
                  {
                    struct MonoInst * group;
                    struct MonoInst * got_loc;

                    got_loc = mono_get_got_var (cfg);
                    D.30489 = cfg->mempool;
                    group = mono_mempool_alloc (D.30489, 48);
                    group->data.op[1].const_val = 0;
                    D.32624 = group->data.op[1].const_val;
                    group->data.op[0].const_val = D.32624;
                    group->prev = 0B;
                    D.32625 = group->prev;
                    group->next = D.32625;
                    group->opcode = 737;
                    group->flags = 0;
                    group->type = 0;
                    group->dreg = -1;
                    group->sreg3 = -1;
                    D.32626 = group->sreg3;
                    group->sreg2 = D.32626;
                    D.32627 = group->sreg2;
                    group->sreg1 = D.32627;
                    D.30712 = cfg->ip;
                    group->cil_code = D.30712;
                    group->data.op[0].src = cmethod;
                    group->data.op[1].src = 6B;
                    D.32613 = args[1];
                    D.32628 = got_loc->dreg;
                    D.32613->sreg1 = D.32628;
                    D.32613 = args[1];
                    D.32613->data.op[1].p = group;
                  }
                  goto <D.32629>;
                  <D.32623>:
                  D.32613 = args[1];
                  D.32613->data.op[0].p = cmethod;
                  D.32613 = args[1];
                  D.32613->data.op[1].src = 6B;
                  <D.32629>:
                  D.32613 = args[1];
                  D.32613->type = 3;
                  D.32613 = args[1];
                  D.32630 = alloc_dreg (cfg, 3);
                  D.32631 = (int) D.32630;
                  D.32613->dreg = D.32631;
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  if (D.30741 != 0B) goto <D.32632>; else goto <D.32633>;
                  <D.32632>:
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.32613 = args[1];
                  D.30741->next = D.32613;
                  D.32613 = args[1];
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.32613->prev = D.30741;
                  bblock.127 = cfg->cbb;
                  D.32613 = args[1];
                  bblock.127->last_ins = D.32613;
                  goto <D.32634>;
                  <D.32633>:
                  bblock.127 = cfg->cbb;
                  bblock.127 = cfg->cbb;
                  D.32613 = args[1];
                  bblock.127->last_ins = D.32613;
                  D.30741 = bblock.127->last_ins;
                  bblock.127->code = D.30741;
                  <D.32634>:
                  <D.32611>:
                  D.32635 = mono_class_check_context_used (constrained_call);
                  D.32636 = emit_get_rgctx_klass (cfg, D.32635, constrained_call, 1);
                  args[2] = D.32636;
                  D.32598 = BIT_FIELD_REF <*fsig, 8, 80>;
                  D.32599 = D.32598 & 64;
                  if (D.32599 != 0) goto <D.32639>; else goto <D.32637>;
                  <D.32639>:
                  D.32314 = fsig->param_count;
                  if (D.32314 != 0) goto <D.32640>; else goto <D.32637>;
                  <D.32640>:
                  D.30489 = cfg->mempool;
                  ins = mono_mempool_alloc (D.30489, 48);
                  ins->data.op[1].const_val = 0;
                  D.30708 = ins->data.op[1].const_val;
                  ins->data.op[0].const_val = D.30708;
                  ins->prev = 0B;
                  D.30709 = ins->prev;
                  ins->next = D.30709;
                  ins->opcode = 339;
                  ins->flags = 0;
                  ins->type = 0;
                  ins->dreg = -1;
                  ins->sreg3 = -1;
                  D.30710 = ins->sreg3;
                  ins->sreg2 = D.30710;
                  D.30711 = ins->sreg2;
                  ins->sreg1 = D.30711;
                  D.30712 = cfg->ip;
                  ins->cil_code = D.30712;
                  D.32641 = alloc_preg (cfg);
                  D.32642 = (int) D.32641;
                  ins->dreg = D.32642;
                  D.32314 = fsig->param_count;
                  D.32643 = (unsigned int) D.32314;
                  D.32644 = D.32643 * 4;
                  D.32645 = (int) D.32644;
                  ins->data.op[1].const_val = D.32645;
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  if (D.30741 != 0B) goto <D.32646>; else goto <D.32647>;
                  <D.32646>:
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.30741->next = ins;
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  ins->prev = D.30741;
                  bblock.127 = cfg->cbb;
                  bblock.127->last_ins = ins;
                  goto <D.32648>;
                  <D.32647>:
                  bblock.127 = cfg->cbb;
                  bblock.127 = cfg->cbb;
                  bblock.127->last_ins = ins;
                  D.30741 = bblock.127->last_ins;
                  bblock.127->code = D.30741;
                  <D.32648>:
                  args[4] = ins;
                  D.32602 = fsig->params[0];
                  D.32649 = mini_is_gsharedvt_type (cfg, D.32602);
                  if (D.32649 != 0) goto <D.32650>; else goto <D.32651>;
                  <D.32650>:
                  {
                    int addr_reg;

                    D.32602 = fsig->params[0];
                    D.32652 = mono_class_from_mono_type (D.32602);
                    D.32653 = emit_get_gsharedvt_info_klass (cfg, D.32652, 19);
                    args[3] = D.32653;
                    {
                      struct MonoInst * var;

                      D.32655 = sp + 4;
                      D.32656 = *D.32655;
                      D.32657 = D.32656->dreg;
                      D.32658 = (unsigned int) D.32657;
                      D.31601 = cfg->vreg_to_inst_len;
                      if (D.32658 < D.31601) goto <D.32659>; else goto <D.32660>;
                      <D.32659>:
                      D.31604 = cfg->vreg_to_inst;
                      D.32655 = sp + 4;
                      D.32656 = *D.32655;
                      D.32657 = D.32656->dreg;
                      D.32661 = (unsigned int) D.32657;
                      D.32662 = D.32661 * 4;
                      D.32663 = D.31604 + D.32662;
                      iftmp.122 = *D.32663;
                      goto <D.32664>;
                      <D.32660>:
                      iftmp.122 = 0B;
                      <D.32664>:
                      var = iftmp.122;
                      if (var == 0B) goto <D.32665>; else goto <D.32666>;
                      <D.32665>:
                      D.32655 = sp + 4;
                      D.32656 = *D.32655;
                      D.32657 = D.32656->dreg;
                      D.32602 = fsig->params[0];
                      var = mono_compile_create_var_for_vreg (cfg, D.32602, 329, D.32657);
                      <D.32666>:
                      D.30489 = cfg->mempool;
                      ins = mono_mempool_alloc (D.30489, 48);
                      ins->data.op[1].const_val = 0;
                      D.30708 = ins->data.op[1].const_val;
                      ins->data.op[0].const_val = D.30708;
                      ins->prev = 0B;
                      D.30709 = ins->prev;
                      ins->next = D.30709;
                      ins->opcode = 314;
                      ins->flags = 0;
                      ins->type = 0;
                      ins->dreg = -1;
                      ins->sreg3 = -1;
                      D.30710 = ins->sreg3;
                      ins->sreg2 = D.30710;
                      D.30711 = ins->sreg2;
                      ins->sreg1 = D.30711;
                      D.30712 = cfg->ip;
                      ins->cil_code = D.30712;
                      ins->data.op[0].p = var;
                      D.32667 = var->flags;
                      D.32668 = D.32667 | 16;
                      var->flags = D.32668;
                      ins->type = 5;
                      D.32669 = var->klass;
                      ins->klass = D.32669;
                      D.32670 = alloc_dreg (cfg, 5);
                      D.32671 = (int) D.32670;
                      ins->dreg = D.32671;
                      cfg->has_indirection = 1;
                      D.30637 = cfg->gsharedvt;
                      D.31575 = D.30637 != 0;
                      D.31576 = (long int) D.31575;
                      D.31577 = __builtin_expect (D.31576, 0);
                      if (D.31577 != 0) goto <D.32672>; else goto <D.32673>;
                      <D.32672>:
                      D.32674 = var->data.op[1].vtype;
                      D.32675 = mini_is_gsharedvt_variable_type (cfg, D.32674);
                      if (D.32675 != 0) goto <D.32676>; else goto <D.32677>;
                      <D.32676>:
                      handle_gsharedvt_ldaddr (cfg);
                      <D.32677>:
                      <D.32673>:
                      D.32679 = mono_arch_is_soft_float ();
                      if (D.32679 != 0) goto <D.32680>; else goto <D.32681>;
                      <D.32680>:
                      D.32682 = var->type;
                      D.32683 = D.32682 == 2;
                      D.32684 = D.32682 == 4;
                      D.32685 = D.32683 | D.32684;
                      D.32686 = (int) D.32685;
                      iftmp.123 = (_Bool) D.32686;
                      goto <D.32687>;
                      <D.32681>:
                      D.32688 = var->type;
                      iftmp.123 = D.32688 == 2;
                      <D.32687>:
                      if (iftmp.123 != 0) goto <D.32689>; else goto <D.32690>;
                      <D.32689>:
                      {
                        struct MonoInst * var1;
                        struct MonoInst * var2;

                        D.32692 = var->dreg;
                        D.32693 = D.32692 + 1;
                        D.32694 = (unsigned int) D.32693;
                        D.31601 = cfg->vreg_to_inst_len;
                        if (D.32694 < D.31601) goto <D.32695>; else goto <D.32696>;
                        <D.32695>:
                        D.31604 = cfg->vreg_to_inst;
                        D.32692 = var->dreg;
                        D.32697 = (sizetype) D.32692;
                        D.32698 = D.32697 + 1;
                        D.32699 = D.32698 * 4;
                        D.32700 = D.31604 + D.32699;
                        iftmp.124 = *D.32700;
                        goto <D.32701>;
                        <D.32696>:
                        iftmp.124 = 0B;
                        <D.32701>:
                        var1 = iftmp.124;
                        D.32692 = var->dreg;
                        D.32703 = D.32692 + 2;
                        D.32704 = (unsigned int) D.32703;
                        D.31601 = cfg->vreg_to_inst_len;
                        if (D.32704 < D.31601) goto <D.32705>; else goto <D.32706>;
                        <D.32705>:
                        D.31604 = cfg->vreg_to_inst;
                        D.32692 = var->dreg;
                        D.32697 = (sizetype) D.32692;
                        D.32707 = D.32697 + 2;
                        D.32708 = D.32707 * 4;
                        D.32709 = D.31604 + D.32708;
                        iftmp.125 = *D.32709;
                        goto <D.32710>;
                        <D.32706>:
                        iftmp.125 = 0B;
                        <D.32710>:
                        var2 = iftmp.125;
                        D.32711 = var1 == 0B;
                        D.32712 = (long int) D.32711;
                        D.32713 = __builtin_expect (D.32712, 0);
                        if (D.32713 != 0) goto <D.32714>; else goto <D.32715>;
                        <D.32714>:
                        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7827, "var1");
                        <D.32715>:
                        D.32716 = var2 == 0B;
                        D.32717 = (long int) D.32716;
                        D.32718 = __builtin_expect (D.32717, 0);
                        if (D.32718 != 0) goto <D.32719>; else goto <D.32720>;
                        <D.32719>:
                        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7827, "var2");
                        <D.32720>:
                        D.32721 = var1->flags;
                        D.32722 = D.32721 | 16;
                        var1->flags = D.32722;
                        D.32723 = var2->flags;
                        D.32724 = D.32723 | 16;
                        var2->flags = D.32724;
                      }
                      <D.32690>:
                    }
                    bblock.127 = cfg->cbb;
                    D.30741 = bblock.127->last_ins;
                    if (D.30741 != 0B) goto <D.32725>; else goto <D.32726>;
                    <D.32725>:
                    bblock.127 = cfg->cbb;
                    D.30741 = bblock.127->last_ins;
                    D.30741->next = ins;
                    bblock.127 = cfg->cbb;
                    D.30741 = bblock.127->last_ins;
                    ins->prev = D.30741;
                    bblock.127 = cfg->cbb;
                    bblock.127->last_ins = ins;
                    goto <D.32727>;
                    <D.32726>:
                    bblock.127 = cfg->cbb;
                    bblock.127 = cfg->cbb;
                    bblock.127->last_ins = ins;
                    D.30741 = bblock.127->last_ins;
                    bblock.127->code = D.30741;
                    <D.32727>:
                    addr_reg = ins->dreg;
                    D.30489 = cfg->mempool;
                    ins = mono_mempool_alloc (D.30489, 48);
                    ins->data.op[1].const_val = 0;
                    D.30708 = ins->data.op[1].const_val;
                    ins->data.op[0].const_val = D.30708;
                    ins->prev = 0B;
                    D.30709 = ins->prev;
                    ins->next = D.30709;
                    ins->opcode = 374;
                    ins->flags = 0;
                    ins->type = 0;
                    ins->dreg = -1;
                    ins->sreg3 = -1;
                    D.30710 = ins->sreg3;
                    ins->sreg2 = D.30710;
                    D.30711 = ins->sreg2;
                    ins->sreg1 = D.30711;
                    D.30712 = cfg->ip;
                    ins->cil_code = D.30712;
                    ins->sreg1 = addr_reg;
                    D.32728 = args[4];
                    D.32729 = D.32728->dreg;
                    ins->dreg = D.32729;
                    ins->data.op[0].const_val = 0;
                    bblock.127 = cfg->cbb;
                    D.30741 = bblock.127->last_ins;
                    if (D.30741 != 0B) goto <D.32730>; else goto <D.32731>;
                    <D.32730>:
                    bblock.127 = cfg->cbb;
                    D.30741 = bblock.127->last_ins;
                    D.30741->next = ins;
                    bblock.127 = cfg->cbb;
                    D.30741 = bblock.127->last_ins;
                    ins->prev = D.30741;
                    bblock.127 = cfg->cbb;
                    bblock.127->last_ins = ins;
                    goto <D.32732>;
                    <D.32731>:
                    bblock.127 = cfg->cbb;
                    bblock.127 = cfg->cbb;
                    bblock.127->last_ins = ins;
                    D.30741 = bblock.127->last_ins;
                    bblock.127->code = D.30741;
                    <D.32732>:
                  }
                  goto <D.32733>;
                  <D.32651>:
                  D.30489 = cfg->mempool;
                  D.32734 = mono_mempool_alloc (D.30489, 48);
                  args[3] = D.32734;
                  D.32735 = args[3];
                  D.32735 = args[3];
                  D.32735->data.op[1].const_val = 0;
                  D.32736 = D.32735->data.op[1].const_val;
                  D.32735->data.op[0].const_val = D.32736;
                  D.32735 = args[3];
                  D.32735 = args[3];
                  D.32735->prev = 0B;
                  D.32737 = D.32735->prev;
                  D.32735->next = D.32737;
                  D.32735 = args[3];
                  D.32735->opcode = 362;
                  D.32735 = args[3];
                  D.32735->flags = 0;
                  D.32735 = args[3];
                  D.32735->type = 0;
                  D.32735 = args[3];
                  D.32735->dreg = -1;
                  D.32735 = args[3];
                  D.32735 = args[3];
                  D.32735 = args[3];
                  D.32735->sreg3 = -1;
                  D.32738 = D.32735->sreg3;
                  D.32735->sreg2 = D.32738;
                  D.32739 = D.32735->sreg2;
                  D.32735->sreg1 = D.32739;
                  D.32735 = args[3];
                  D.30712 = cfg->ip;
                  D.32735->cil_code = D.30712;
                  D.32735 = args[3];
                  D.32735->data.op[0].const_val = 0;
                  D.32735 = args[3];
                  D.32735->type = 1;
                  D.32735 = args[3];
                  D.32740 = alloc_dreg (cfg, 1);
                  D.32741 = (int) D.32740;
                  D.32735->dreg = D.32741;
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  if (D.30741 != 0B) goto <D.32742>; else goto <D.32743>;
                  <D.32742>:
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.32735 = args[3];
                  D.30741->next = D.32735;
                  D.32735 = args[3];
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.32735->prev = D.30741;
                  bblock.127 = cfg->cbb;
                  D.32735 = args[3];
                  bblock.127->last_ins = D.32735;
                  goto <D.32744>;
                  <D.32743>:
                  bblock.127 = cfg->cbb;
                  bblock.127 = cfg->cbb;
                  D.32735 = args[3];
                  bblock.127->last_ins = D.32735;
                  D.30741 = bblock.127->last_ins;
                  bblock.127->code = D.30741;
                  <D.32744>:
                  D.30489 = cfg->mempool;
                  ins = mono_mempool_alloc (D.30489, 48);
                  ins->data.op[1].const_val = 0;
                  D.30708 = ins->data.op[1].const_val;
                  ins->data.op[0].const_val = D.30708;
                  ins->prev = 0B;
                  D.30709 = ins->prev;
                  ins->next = D.30709;
                  ins->opcode = 374;
                  ins->flags = 0;
                  ins->type = 0;
                  ins->dreg = -1;
                  ins->sreg3 = -1;
                  D.30710 = ins->sreg3;
                  ins->sreg2 = D.30710;
                  D.30711 = ins->sreg2;
                  ins->sreg1 = D.30711;
                  D.30712 = cfg->ip;
                  ins->cil_code = D.30712;
                  D.32655 = sp + 4;
                  D.32656 = *D.32655;
                  D.32657 = D.32656->dreg;
                  ins->sreg1 = D.32657;
                  D.32728 = args[4];
                  D.32729 = D.32728->dreg;
                  ins->dreg = D.32729;
                  ins->data.op[0].const_val = 0;
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  if (D.30741 != 0B) goto <D.32745>; else goto <D.32746>;
                  <D.32745>:
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.30741->next = ins;
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  ins->prev = D.30741;
                  bblock.127 = cfg->cbb;
                  bblock.127->last_ins = ins;
                  goto <D.32747>;
                  <D.32746>:
                  bblock.127 = cfg->cbb;
                  bblock.127 = cfg->cbb;
                  bblock.127->last_ins = ins;
                  D.30741 = bblock.127->last_ins;
                  bblock.127->code = D.30741;
                  <D.32747>:
                  <D.32733>:
                  goto <D.32638>;
                  <D.32637>:
                  D.30489 = cfg->mempool;
                  D.32748 = mono_mempool_alloc (D.30489, 48);
                  args[3] = D.32748;
                  D.32735 = args[3];
                  D.32735 = args[3];
                  D.32735->data.op[1].const_val = 0;
                  D.32736 = D.32735->data.op[1].const_val;
                  D.32735->data.op[0].const_val = D.32736;
                  D.32735 = args[3];
                  D.32735 = args[3];
                  D.32735->prev = 0B;
                  D.32737 = D.32735->prev;
                  D.32735->next = D.32737;
                  D.32735 = args[3];
                  D.32735->opcode = 362;
                  D.32735 = args[3];
                  D.32735->flags = 0;
                  D.32735 = args[3];
                  D.32735->type = 0;
                  D.32735 = args[3];
                  D.32735->dreg = -1;
                  D.32735 = args[3];
                  D.32735 = args[3];
                  D.32735 = args[3];
                  D.32735->sreg3 = -1;
                  D.32738 = D.32735->sreg3;
                  D.32735->sreg2 = D.32738;
                  D.32739 = D.32735->sreg2;
                  D.32735->sreg1 = D.32739;
                  D.32735 = args[3];
                  D.30712 = cfg->ip;
                  D.32735->cil_code = D.30712;
                  D.32735 = args[3];
                  D.32735->data.op[0].const_val = 0;
                  D.32735 = args[3];
                  D.32735->type = 1;
                  D.32735 = args[3];
                  D.32749 = alloc_dreg (cfg, 1);
                  D.32750 = (int) D.32749;
                  D.32735->dreg = D.32750;
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  if (D.30741 != 0B) goto <D.32751>; else goto <D.32752>;
                  <D.32751>:
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.32735 = args[3];
                  D.30741->next = D.32735;
                  D.32735 = args[3];
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.32735->prev = D.30741;
                  bblock.127 = cfg->cbb;
                  D.32735 = args[3];
                  bblock.127->last_ins = D.32735;
                  goto <D.32753>;
                  <D.32752>:
                  bblock.127 = cfg->cbb;
                  bblock.127 = cfg->cbb;
                  D.32735 = args[3];
                  bblock.127->last_ins = D.32735;
                  D.30741 = bblock.127->last_ins;
                  bblock.127->code = D.30741;
                  <D.32753>:
                  D.30489 = cfg->mempool;
                  D.32754 = mono_mempool_alloc (D.30489, 48);
                  args[4] = D.32754;
                  D.32728 = args[4];
                  D.32728 = args[4];
                  D.32728->data.op[1].const_val = 0;
                  D.32755 = D.32728->data.op[1].const_val;
                  D.32728->data.op[0].const_val = D.32755;
                  D.32728 = args[4];
                  D.32728 = args[4];
                  D.32728->prev = 0B;
                  D.32756 = D.32728->prev;
                  D.32728->next = D.32756;
                  D.32728 = args[4];
                  D.32728->opcode = 362;
                  D.32728 = args[4];
                  D.32728->flags = 0;
                  D.32728 = args[4];
                  D.32728->type = 0;
                  D.32728 = args[4];
                  D.32728->dreg = -1;
                  D.32728 = args[4];
                  D.32728 = args[4];
                  D.32728 = args[4];
                  D.32728->sreg3 = -1;
                  D.32757 = D.32728->sreg3;
                  D.32728->sreg2 = D.32757;
                  D.32758 = D.32728->sreg2;
                  D.32728->sreg1 = D.32758;
                  D.32728 = args[4];
                  D.30712 = cfg->ip;
                  D.32728->cil_code = D.30712;
                  D.32728 = args[4];
                  D.32728->data.op[0].const_val = 0;
                  D.32728 = args[4];
                  D.32728->type = 1;
                  D.32728 = args[4];
                  D.32759 = alloc_dreg (cfg, 1);
                  D.32760 = (int) D.32759;
                  D.32728->dreg = D.32760;
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  if (D.30741 != 0B) goto <D.32761>; else goto <D.32762>;
                  <D.32761>:
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.32728 = args[4];
                  D.30741->next = D.32728;
                  D.32728 = args[4];
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.32728->prev = D.30741;
                  bblock.127 = cfg->cbb;
                  D.32728 = args[4];
                  bblock.127->last_ins = D.32728;
                  goto <D.32763>;
                  <D.32762>:
                  bblock.127 = cfg->cbb;
                  bblock.127 = cfg->cbb;
                  D.32728 = args[4];
                  bblock.127->last_ins = D.32728;
                  D.30741 = bblock.127->last_ins;
                  bblock.127->code = D.30741;
                  <D.32763>:
                  <D.32638>:
                  ins = mono_emit_jit_icall (cfg, mono_gsharedvt_constrained_call, &args);
                  emit_widen = 0;
                  D.32478 = fsig->ret;
                  D.32764 = mini_is_gsharedvt_type (cfg, D.32478);
                  if (D.32764 != 0) goto <D.32765>; else goto <D.32766>;
                  <D.32765>:
                  D.32478 = fsig->ret;
                  D.32767 = mono_class_from_mono_type (D.32478);
                  ins = handle_unbox_gsharedvt (cfg, D.32767, ins, &bblock);
                  goto <D.32768>;
                  <D.32766>:
                  D.32478 = fsig->ret;
                  D.32585 = BIT_FIELD_REF <*D.32478, 8, 56>;
                  D.32586 = D.32585 & 64;
                  if (D.32586 == 0) goto <D.32769>; else goto <D.32770>;
                  <D.32769>:
                  D.32478 = fsig->ret;
                  D.32771 = D.32478->type;
                  D.32772 = D.32771 + 254;
                  D.32773 = D.32772 <= 11;
                  D.32774 = D.32771 + 232;
                  D.32775 = D.32774 <= 1;
                  D.32776 = D.32773 | D.32775;
                  if (D.32776 != 0) goto <D.32777>; else goto <D.32778>;
                  <D.32777>:
                  {
                    struct MonoInst * add;

                    D.30489 = cfg->mempool;
                    add = mono_mempool_alloc (D.30489, 48);
                    add->data.op[1].const_val = 0;
                    D.32779 = add->data.op[1].const_val;
                    add->data.op[0].const_val = D.32779;
                    add->prev = 0B;
                    D.32780 = add->prev;
                    add->next = D.32780;
                    add->opcode = 433;
                    add->flags = 0;
                    add->type = 0;
                    add->dreg = -1;
                    add->sreg3 = -1;
                    D.32781 = add->sreg3;
                    add->sreg2 = D.32781;
                    D.32782 = add->sreg2;
                    add->sreg1 = D.32782;
                    D.30712 = cfg->ip;
                    add->cil_code = D.30712;
                    D.32783 = alloc_dreg (cfg, 5);
                    D.32784 = (int) D.32783;
                    add->dreg = D.32784;
                    D.30903 = ins->dreg;
                    add->sreg1 = D.30903;
                    add->data.op[1].const_val = 8;
                    bblock.127 = cfg->cbb;
                    D.30741 = bblock.127->last_ins;
                    if (D.30741 != 0B) goto <D.32785>; else goto <D.32786>;
                    <D.32785>:
                    bblock.127 = cfg->cbb;
                    D.30741 = bblock.127->last_ins;
                    D.30741->next = add;
                    bblock.127 = cfg->cbb;
                    D.30741 = bblock.127->last_ins;
                    add->prev = D.30741;
                    bblock.127 = cfg->cbb;
                    bblock.127->last_ins = add;
                    goto <D.32787>;
                    <D.32786>:
                    bblock.127 = cfg->cbb;
                    bblock.127 = cfg->cbb;
                    bblock.127->last_ins = add;
                    D.30741 = bblock.127->last_ins;
                    bblock.127->code = D.30741;
                    <D.32787>:
                    D.30489 = cfg->mempool;
                    ins = mono_mempool_alloc (D.30489, 48);
                    ins->data.op[1].const_val = 0;
                    D.30708 = ins->data.op[1].const_val;
                    ins->data.op[0].const_val = D.30708;
                    ins->prev = 0B;
                    D.30709 = ins->prev;
                    ins->next = D.30709;
                    D.32478 = fsig->ret;
                    D.32788 = mono_type_to_load_membase (cfg, D.32478);
                    D.32789 = (short unsigned int) D.32788;
                    ins->opcode = D.32789;
                    ins->flags = 0;
                    ins->type = 0;
                    ins->dreg = -1;
                    ins->sreg3 = -1;
                    D.30710 = ins->sreg3;
                    ins->sreg2 = D.30710;
                    D.30711 = ins->sreg2;
                    ins->sreg1 = D.30711;
                    D.30712 = cfg->ip;
                    ins->cil_code = D.30712;
                    ins->dreg = 0;
                    D.32790 = add->dreg;
                    ins->sreg1 = D.32790;
                    ins->data.op[0].const_val = 0;
                    ins->type = 1;
                    D.32478 = fsig->ret;
                    type_to_eval_stack_type (cfg, D.32478, ins);
                    D.31249 = ins->type;
                    D.31250 = (<unnamed type>) D.31249;
                    D.32791 = alloc_dreg (cfg, D.31250);
                    D.32792 = (int) D.32791;
                    ins->dreg = D.32792;
                    bblock.127 = cfg->cbb;
                    D.30741 = bblock.127->last_ins;
                    if (D.30741 != 0B) goto <D.32793>; else goto <D.32794>;
                    <D.32793>:
                    bblock.127 = cfg->cbb;
                    D.30741 = bblock.127->last_ins;
                    D.30741->next = ins;
                    bblock.127 = cfg->cbb;
                    D.30741 = bblock.127->last_ins;
                    ins->prev = D.30741;
                    bblock.127 = cfg->cbb;
                    bblock.127->last_ins = ins;
                    goto <D.32795>;
                    <D.32794>:
                    bblock.127 = cfg->cbb;
                    bblock.127 = cfg->cbb;
                    bblock.127->last_ins = ins;
                    D.30741 = bblock.127->last_ins;
                    bblock.127->code = D.30741;
                    <D.32795>:
                  }
                  <D.32778>:
                  <D.32770>:
                  <D.32768>:
                  goto call_end;
                }
              finally
                {
                  args = {CLOBBER};
                }
            }
            <D.32575>:
            D.30637 = cfg->gsharedvt;
            if (D.30637 != 0) goto <D.32796>; else goto <D.32797>;
            <D.32796>:
            D.31371 = *ip;
            D.31372 = (int) D.31371;
            D.32798 = mono_opcode_name (D.31372);
            D.32188 = method->signature;
            D.32189 = D.32188->param_count;
            D.32190 = (int) D.32189;
            D.32191 = method->name;
            D.30426 = method->klass;
            D.32192 = D.30426->name;
            D.30426 = method->klass;
            D.32193 = D.30426->name_space;
            D.32799 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.32193, D.32192, D.32191, D.32190, D.32798, "method-to-ir.c", 7857);
            cfg->exception_message = D.32799;
            D.30569 = cfg->verbose_level;
            if (D.30569 > 1) goto <D.32800>; else goto <D.32801>;
            <D.32800>:
            D.32197 = cfg->exception_message;
            printf ("%s\n", D.32197);
            <D.32801>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.32797>:
            <D.32566>:
            <D.32558>:
            <D.32556>:
            D.32561 = BIT_FIELD_REF <*constrained_call, 8, 160>;
            D.32562 = D.32561 & 8;
            if (D.32562 != 0) goto <D.32805>; else goto <D.32802>;
            <D.32805>:
            D.32390 = cmethod->klass;
            D.32559 = mono_defaults.object_class;
            if (D.32390 == D.32559) goto <D.32803>; else goto <D.32806>;
            <D.32806>:
            D.32390 = cmethod->klass;
            D.32807 = mono_defaults.enum_class;
            D.32808 = D.32807->parent;
            if (D.32390 == D.32808) goto <D.32803>; else goto <D.32809>;
            <D.32809>:
            D.32390 = cmethod->klass;
            D.32807 = mono_defaults.enum_class;
            if (D.32390 == D.32807) goto <D.32803>; else goto <D.32802>;
            <D.32803>:
            D.30489 = cfg->mempool;
            ins = mono_mempool_alloc (D.30489, 48);
            ins->data.op[1].const_val = 0;
            D.30708 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.30708;
            ins->prev = 0B;
            D.30709 = ins->prev;
            ins->next = D.30709;
            D.32810 = &constrained_call->byval_arg;
            D.32811 = mono_type_to_load_membase (cfg, D.32810);
            D.32812 = (short unsigned int) D.32811;
            ins->opcode = D.32812;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.30710 = ins->sreg3;
            ins->sreg2 = D.30710;
            D.30711 = ins->sreg2;
            ins->sreg1 = D.30711;
            D.30712 = cfg->ip;
            ins->cil_code = D.30712;
            ins->dreg = 0;
            D.31489 = *sp;
            D.31682 = D.31489->dreg;
            ins->sreg1 = D.31682;
            ins->data.op[0].const_val = 0;
            ins->type = 1;
            D.32810 = &constrained_call->byval_arg;
            type_to_eval_stack_type (cfg, D.32810, ins);
            D.31249 = ins->type;
            D.31250 = (<unnamed type>) D.31249;
            D.32813 = alloc_dreg (cfg, D.31250);
            D.32814 = (int) D.32813;
            ins->dreg = D.32814;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.32815>; else goto <D.32816>;
            <D.32815>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = ins;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            ins->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = ins;
            goto <D.32817>;
            <D.32816>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = ins;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.32817>:
            ins->klass = constrained_call;
            D.32818 = mono_class_check_context_used (constrained_call);
            D.32819 = handle_box (cfg, ins, constrained_call, D.32818, &bblock);
            *sp = D.32819;
            D.31057 = cfg->exception_type;
            if (D.31057 != 0) goto exception_exit; else goto <D.32820>;
            <D.32820>:
            goto <D.32804>;
            <D.32802>:
            D.32561 = BIT_FIELD_REF <*constrained_call, 8, 160>;
            D.32562 = D.32561 & 8;
            if (D.32562 == 0) goto <D.32821>; else goto <D.32822>;
            <D.32821>:
            {
              int dreg;

              D.32823 = alloc_ireg_ref (cfg);
              dreg = (int) D.32823;
              D.30489 = cfg->mempool;
              ins = mono_mempool_alloc (D.30489, 48);
              ins->data.op[1].const_val = 0;
              D.30708 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.30708;
              ins->prev = 0B;
              D.30709 = ins->prev;
              ins->next = D.30709;
              ins->opcode = 391;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.30710 = ins->sreg3;
              ins->sreg2 = D.30710;
              D.30711 = ins->sreg2;
              ins->sreg1 = D.30711;
              D.30712 = cfg->ip;
              ins->cil_code = D.30712;
              ins->dreg = dreg;
              D.31489 = *sp;
              D.31682 = D.31489->dreg;
              ins->sreg1 = D.31682;
              ins->data.op[0].const_val = 0;
              ins->type = 1;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.32824>; else goto <D.32825>;
              <D.32824>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = ins;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              ins->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              goto <D.32826>;
              <D.32825>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.32826>:
              ins->type = 6;
              *sp = ins;
            }
            goto <D.32827>;
            <D.32822>:
            D.32390 = cmethod->klass;
            D.32391 = BIT_FIELD_REF <*D.32390, 8, 160>;
            D.32392 = D.32391 & 8;
            if (D.32392 != 0) goto <D.32828>; else goto <D.32829>;
            <D.32828>:
            goto <D.32830>;
            <D.32829>:
            {
              int ioffset;
              int slot;

              mono_class_setup_vtable (constrained_call);
              if (constrained_call == 0B) goto <D.32831>; else goto <D.32833>;
              <D.32833>:
              D.32834 = constrained_call->exception_type;
              if (D.32834 != 0) goto <D.32831>; else goto <D.32832>;
              <D.32831>:
              cfg->exception_ptr = constrained_call;
              D.32835 = mini_get_debug_options ();
              D.32836 = D.32835->break_on_unverified;
              if (D.32836 != 0) goto <D.32837>; else goto load_error;
              <D.32837>:
              __asm__ __volatile__("int $03");
              <D.32832>:
              D.32390 = cmethod->klass;
              ioffset = mono_class_interface_offset (constrained_call, D.32390);
              if (ioffset == -1) goto <D.32838>; else goto <D.32839>;
              <D.32838>:
              D.32840 = mini_get_debug_options ();
              D.32841 = D.32840->break_on_unverified;
              if (D.32841 != 0) goto <D.32842>; else goto <D.32843>;
              <D.32842>:
              __asm__ __volatile__("int $03");
              goto <D.32844>;
              <D.32843>:
              cfg->exception_ptr = constrained_call;
              goto load_error;
              <D.32844>:
              <D.32839>:
              slot = mono_method_get_vtable_slot (cmethod);
              if (slot == -1) goto <D.32845>; else goto <D.32846>;
              <D.32845>:
              D.32847 = mini_get_debug_options ();
              D.32848 = D.32847->break_on_unverified;
              if (D.32848 != 0) goto <D.32849>; else goto <D.32850>;
              <D.32849>:
              __asm__ __volatile__("int $03");
              goto <D.32851>;
              <D.32850>:
              D.32390 = cmethod->klass;
              cfg->exception_ptr = D.32390;
              goto load_error;
              <D.32851>:
              <D.32846>:
              D.32852 = constrained_call->vtable;
              D.32853 = ioffset + slot;
              D.32854 = (unsigned int) D.32853;
              D.32855 = D.32854 * 4;
              D.32856 = D.32852 + D.32855;
              cmethod = *D.32856;
              D.32390 = cmethod->klass;
              D.32807 = mono_defaults.enum_class;
              if (D.32390 == D.32807) goto <D.32857>; else goto <D.32858>;
              <D.32857>:
              D.30489 = cfg->mempool;
              ins = mono_mempool_alloc (D.30489, 48);
              ins->data.op[1].const_val = 0;
              D.30708 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.30708;
              ins->prev = 0B;
              D.30709 = ins->prev;
              ins->next = D.30709;
              D.32810 = &constrained_call->byval_arg;
              D.32859 = mono_type_to_load_membase (cfg, D.32810);
              D.32860 = (short unsigned int) D.32859;
              ins->opcode = D.32860;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.30710 = ins->sreg3;
              ins->sreg2 = D.30710;
              D.30711 = ins->sreg2;
              ins->sreg1 = D.30711;
              D.30712 = cfg->ip;
              ins->cil_code = D.30712;
              ins->dreg = 0;
              D.31489 = *sp;
              D.31682 = D.31489->dreg;
              ins->sreg1 = D.31682;
              ins->data.op[0].const_val = 0;
              ins->type = 1;
              D.32810 = &constrained_call->byval_arg;
              type_to_eval_stack_type (cfg, D.32810, ins);
              D.31249 = ins->type;
              D.31250 = (<unnamed type>) D.31249;
              D.32861 = alloc_dreg (cfg, D.31250);
              D.32862 = (int) D.32861;
              ins->dreg = D.32862;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.32863>; else goto <D.32864>;
              <D.32863>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = ins;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              ins->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              goto <D.32865>;
              <D.32864>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.32865>:
              ins->klass = constrained_call;
              D.32866 = mono_class_check_context_used (constrained_call);
              D.32867 = handle_box (cfg, ins, constrained_call, D.32866, &bblock);
              *sp = D.32867;
              D.31057 = cfg->exception_type;
              if (D.31057 != 0) goto exception_exit; else goto <D.32868>;
              <D.32868>:
              <D.32858>:
            }
            <D.32830>:
            virtual = 0;
            <D.32827>:
            <D.32804>:
            constrained_call = 0B;
            <D.32553>:
            if (calli == 0) goto <D.32869>; else goto <D.32870>;
            <D.32869>:
            D.32871 = check_call_signature (cfg, fsig, sp);
            if (D.32871 != 0) goto <D.32872>; else goto <D.32873>;
            <D.32872>:
            D.30637 = cfg->gsharedvt;
            if (D.30637 != 0) goto <D.32874>; else goto <D.32875>;
            <D.32874>:
            D.30569 = cfg->verbose_level;
            if (D.30569 > 2) goto <D.32876>; else goto <D.32877>;
            <D.32876>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.32877>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.32875>:
            D.32878 = mini_get_debug_options ();
            D.32879 = D.32878->break_on_unverified;
            if (D.32879 != 0) goto <D.32880>; else goto unverified;
            <D.32880>:
            __asm__ __volatile__("int $03");
            <D.32873>:
            <D.32870>:
            if (cmethod != 0B) goto <D.32881>; else goto <D.32882>;
            <D.32881>:
            D.32390 = cmethod->klass;
            D.32883 = D.32390->parent;
            D.32884 = mono_defaults.multicastdelegate_class;
            if (D.32883 == D.32884) goto <D.32885>; else goto <D.32886>;
            <D.32885>:
            {
              size_t __s1_len;
              size_t __s2_len;

              __s2_len = 6;
              if (__s2_len <= 3) goto <D.32888>; else goto <D.32889>;
              <D.32888>:
              {
                const unsigned char * __s2;
                int __result;

                __s2 = cmethod->name;
                D.32890 = "Invoke";
                D.32891 = MEM[(const unsigned char *)D.32890];
                D.32892 = (int) D.32891;
                D.32893 = *__s2;
                D.32894 = (int) D.32893;
                __result = D.32892 - D.32894;
                {
                  D.32895 = __s2_len != 0;
                  D.32896 = __result == 0;
                  D.32897 = D.32895 & D.32896;
                  if (D.32897 != 0) goto <D.32898>; else goto <D.32899>;
                  <D.32898>:
                  D.32900 = &MEM[(void *)"Invoke" + 1B];
                  D.32901 = *D.32900;
                  D.32902 = (int) D.32901;
                  D.32903 = __s2 + 1;
                  D.32904 = *D.32903;
                  D.32905 = (int) D.32904;
                  __result = D.32902 - D.32905;
                  D.32906 = __s2_len > 1;
                  D.32896 = __result == 0;
                  D.32907 = D.32906 & D.32896;
                  if (D.32907 != 0) goto <D.32908>; else goto <D.32909>;
                  <D.32908>:
                  D.32910 = &MEM[(void *)"Invoke" + 2B];
                  D.32911 = *D.32910;
                  D.32912 = (int) D.32911;
                  D.32913 = __s2 + 2;
                  D.32914 = *D.32913;
                  D.32915 = (int) D.32914;
                  __result = D.32912 - D.32915;
                  D.32916 = __s2_len > 2;
                  D.32896 = __result == 0;
                  D.32917 = D.32916 & D.32896;
                  if (D.32917 != 0) goto <D.32918>; else goto <D.32919>;
                  <D.32918>:
                  D.32920 = &MEM[(void *)"Invoke" + 3B];
                  D.32921 = *D.32920;
                  D.32922 = (int) D.32921;
                  D.32923 = __s2 + 3;
                  D.32924 = *D.32923;
                  D.32925 = (int) D.32924;
                  __result = D.32922 - D.32925;
                  <D.32919>:
                  <D.32909>:
                  <D.32899>:
                }
                D.27505 = __result;
              }
              iftmp.126 = -D.27505;
              goto <D.32926>;
              <D.32889>:
              D.32927 = cmethod->name;
              iftmp.126 = __builtin_strcmp (D.32927, "Invoke");
              <D.32926>:
              D.27506 = iftmp.126;
            }
            if (D.27506 == 0) goto <D.32928>; else goto <D.32929>;
            <D.32928>:
            delegate_invoke = 1;
            <D.32929>:
            <D.32886>:
            <D.32882>:
            if (cmethod != 0B) goto <D.32930>; else goto <D.32931>;
            <D.32930>:
            D.30881 = cfg->opt;
            D.32932 = D.30881 & 2048;
            if (D.32932 != 0) goto <D.32933>; else goto <D.32934>;
            <D.32933>:
            ins = mini_emit_inst_for_sharable_method (cfg, cmethod, fsig, sp);
            if (ins != 0B) goto <D.32935>; else goto <D.32936>;
            <D.32935>:
            bblock.127 = cfg->cbb;
            bblock = bblock.127;
            D.32478 = fsig->ret;
            D.32937 = mono_type_is_void (D.32478);
            if (D.32937 == 0) goto <D.32938>; else goto <D.32939>;
            <D.32938>:
            D.32478 = fsig->ret;
            type_to_eval_stack_type (cfg, D.32478, ins);
            emit_widen = 0;
            <D.32939>:
            goto call_end;
            <D.32936>:
            <D.32934>:
            <D.32931>:
            D.30524 = cfg->generic_sharing_context;
            if (D.30524 != 0B) goto <D.32940>; else goto <D.32941>;
            <D.32940>:
            if (cmethod != 0B) goto <D.32942>; else goto <D.32943>;
            <D.32942>:
            D.32390 = cmethod->klass;
            D.30426 = method->klass;
            if (D.32390 != D.30426) goto <D.32944>; else goto <D.32945>;
            <D.32944>:
            D.32390 = cmethod->klass;
            D.32946 = D.32390->generic_class;
            if (D.32946 != 0B) goto <D.32947>; else goto <D.32948>;
            <D.32947>:
            D.32949 = mono_method_is_generic_sharable (cmethod, 1);
            if (D.32949 != 0) goto <D.32950>; else goto <D.32951>;
            <D.32950>:
            D.32390 = cmethod->klass;
            D.32952 = mono_class_needs_cctor_run (D.32390, method);
            if (D.32952 != 0) goto <D.32953>; else goto <D.32954>;
            <D.32953>:
            D.32390 = cmethod->klass;
            emit_generic_class_init (cfg, D.32390);
            D.32390 = cmethod->klass;
            if (D.32390 == 0B) goto <D.32955>; else goto <D.32957>;
            <D.32957>:
            D.32390 = cmethod->klass;
            D.32958 = D.32390->exception_type;
            if (D.32958 != 0) goto <D.32955>; else goto <D.32956>;
            <D.32955>:
            D.32390 = cmethod->klass;
            cfg->exception_ptr = D.32390;
            D.32959 = mini_get_debug_options ();
            D.32960 = D.32959->break_on_unverified;
            if (D.32960 != 0) goto <D.32961>; else goto load_error;
            <D.32961>:
            __asm__ __volatile__("int $03");
            <D.32956>:
            <D.32954>:
            <D.32951>:
            <D.32948>:
            <D.32945>:
            <D.32943>:
            <D.32941>:
            if (cmethod != 0B) goto <D.32962>; else goto <D.32963>;
            <D.32962>:
            check_method_sharing (cfg, cmethod, &pass_vtable, &pass_mrgctx);
            <D.32963>:
            D.30524 = cfg->generic_sharing_context;
            if (D.30524 != 0B) goto <D.32964>; else goto <D.32965>;
            <D.32964>:
            if (cmethod != 0B) goto <D.32966>; else goto <D.32967>;
            <D.32966>:
            {
              struct MonoGenericContext * cmethod_context;

              cmethod_context = mono_method_get_context (cmethod);
              context_used = mini_method_check_context_used (cfg, cmethod);
              if (context_used != 0) goto <D.32968>; else goto <D.32969>;
              <D.32968>:
              D.32390 = cmethod->klass;
              D.32570 = D.32390->flags;
              D.32571 = D.32570 & 32;
              if (D.32571 != 0) goto <D.32970>; else goto <D.32971>;
              <D.32970>:
              if (cmethod_context == 0B) goto <D.32972>; else goto <D.32974>;
              <D.32974>:
              D.32975 = cmethod_context->method_inst;
              if (D.32975 == 0B) goto <D.32972>; else goto <D.32973>;
              <D.32972>:
              pass_imt_from_rgctx = 1;
              <D.32973>:
              <D.32971>:
              <D.32969>:
              if (context_used != 0) goto <D.32978>; else goto <D.32979>;
              <D.32978>:
              D.30790 = method->flags;
              D.30791 = (int) D.30790;
              D.30792 = D.30791 & 16;
              if (D.30792 != 0) goto <D.32976>; else goto <D.32980>;
              <D.32980>:
              D.30426 = method->klass;
              D.30579 = BIT_FIELD_REF <*D.30426, 8, 160>;
              D.30580 = D.30579 & 8;
              if (D.30580 != 0) goto <D.32976>; else goto <D.32977>;
              <D.32976>:
              mono_get_vtable_var (cfg);
              <D.32977>:
              <D.32979>:
            }
            <D.32967>:
            <D.32965>:
            pass_vtable.128 = pass_vtable;
            if (pass_vtable.128 != 0) goto <D.32982>; else goto <D.32983>;
            <D.32982>:
            if (context_used != 0) goto <D.32984>; else goto <D.32985>;
            <D.32984>:
            D.32390 = cmethod->klass;
            vtable_arg = emit_get_rgctx_klass (cfg, context_used, D.32390, 2);
            goto <D.32986>;
            <D.32985>:
            {
              struct MonoVTable * vtable;

              D.32390 = cmethod->klass;
              D.30513 = cfg->domain;
              vtable = mono_class_vtable (D.30513, D.32390);
              D.32390 = cmethod->klass;
              if (D.32390 == 0B) goto <D.32987>; else goto <D.32989>;
              <D.32989>:
              D.32390 = cmethod->klass;
              D.32958 = D.32390->exception_type;
              if (D.32958 != 0) goto <D.32987>; else goto <D.32988>;
              <D.32987>:
              D.32390 = cmethod->klass;
              cfg->exception_ptr = D.32390;
              D.32990 = mini_get_debug_options ();
              D.32991 = D.32990->break_on_unverified;
              if (D.32991 != 0) goto <D.32992>; else goto load_error;
              <D.32992>:
              __asm__ __volatile__("int $03");
              <D.32988>:
              D.30489 = cfg->mempool;
              vtable_arg = mono_mempool_alloc (D.30489, 48);
              vtable_arg->data.op[1].const_val = 0;
              D.32993 = vtable_arg->data.op[1].const_val;
              vtable_arg->data.op[0].const_val = D.32993;
              vtable_arg->prev = 0B;
              D.32994 = vtable_arg->prev;
              vtable_arg->next = D.32994;
              D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.30884 = D.30883 & 64;
              if (D.30884 != 0) goto <D.32996>; else goto <D.32997>;
              <D.32996>:
              iftmp.129 = 738;
              goto <D.32998>;
              <D.32997>:
              iftmp.129 = 362;
              <D.32998>:
              vtable_arg->opcode = iftmp.129;
              vtable_arg->flags = 0;
              vtable_arg->type = 0;
              vtable_arg->dreg = -1;
              vtable_arg->sreg3 = -1;
              D.32999 = vtable_arg->sreg3;
              vtable_arg->sreg2 = D.32999;
              D.33000 = vtable_arg->sreg2;
              vtable_arg->sreg1 = D.33000;
              D.30712 = cfg->ip;
              vtable_arg->cil_code = D.30712;
              D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.30884 = D.30883 & 64;
              if (D.30884 != 0) goto <D.33001>; else goto <D.33002>;
              <D.33001>:
              {
                struct MonoInst * group;
                struct MonoInst * got_loc;

                got_loc = mono_get_got_var (cfg);
                D.30489 = cfg->mempool;
                group = mono_mempool_alloc (D.30489, 48);
                group->data.op[1].const_val = 0;
                D.33003 = group->data.op[1].const_val;
                group->data.op[0].const_val = D.33003;
                group->prev = 0B;
                D.33004 = group->prev;
                group->next = D.33004;
                group->opcode = 737;
                group->flags = 0;
                group->type = 0;
                group->dreg = -1;
                group->sreg3 = -1;
                D.33005 = group->sreg3;
                group->sreg2 = D.33005;
                D.33006 = group->sreg2;
                group->sreg1 = D.33006;
                D.30712 = cfg->ip;
                group->cil_code = D.30712;
                D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
                D.30884 = D.30883 & 64;
                if (D.30884 != 0) goto <D.33008>; else goto <D.33009>;
                <D.33008>:
                iftmp.130 = vtable->klass;
                goto <D.33010>;
                <D.33009>:
                iftmp.130 = vtable;
                <D.33010>:
                group->data.op[0].src = iftmp.130;
                group->data.op[1].src = 14B;
                D.33011 = got_loc->dreg;
                vtable_arg->sreg1 = D.33011;
                vtable_arg->data.op[1].p = group;
              }
              goto <D.33012>;
              <D.33002>:
              D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.30884 = D.30883 & 64;
              if (D.30884 != 0) goto <D.33014>; else goto <D.33015>;
              <D.33014>:
              iftmp.131 = vtable->klass;
              goto <D.33016>;
              <D.33015>:
              iftmp.131 = vtable;
              <D.33016>:
              vtable_arg->data.op[0].p = iftmp.131;
              vtable_arg->data.op[1].src = 14B;
              <D.33012>:
              vtable_arg->type = 3;
              D.33017 = alloc_dreg (cfg, 3);
              D.33018 = (int) D.33017;
              vtable_arg->dreg = D.33018;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.33019>; else goto <D.33020>;
              <D.33019>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = vtable_arg;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              vtable_arg->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = vtable_arg;
              goto <D.33021>;
              <D.33020>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = vtable_arg;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.33021>:
            }
            <D.32986>:
            <D.32983>:
            pass_mrgctx.132 = pass_mrgctx;
            if (pass_mrgctx.132 != 0) goto <D.33023>; else goto <D.33024>;
            <D.33023>:
            D.33025 = vtable_arg != 0B;
            D.33026 = (long int) D.33025;
            D.33027 = __builtin_expect (D.33026, 0);
            if (D.33027 != 0) goto <D.33028>; else goto <D.33029>;
            <D.33028>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7986, "!vtable_arg");
            <D.33029>:
            D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.30884 = D.30883 & 64;
            if (D.30884 == 0) goto <D.33030>; else goto <D.33031>;
            <D.33030>:
            D.32390 = cmethod->klass;
            mono_class_setup_vtable (D.32390);
            D.32390 = cmethod->klass;
            if (D.32390 == 0B) goto <D.33032>; else goto <D.33034>;
            <D.33034>:
            D.32390 = cmethod->klass;
            D.32958 = D.32390->exception_type;
            if (D.32958 != 0) goto <D.33032>; else goto <D.33033>;
            <D.33032>:
            D.32390 = cmethod->klass;
            cfg->exception_ptr = D.32390;
            D.33035 = mini_get_debug_options ();
            D.33036 = D.33035->break_on_unverified;
            if (D.33036 != 0) goto <D.33037>; else goto load_error;
            <D.33037>:
            __asm__ __volatile__("int $03");
            <D.33033>:
            <D.33031>:
            vtable_arg = emit_get_rgctx_method (cfg, context_used, cmethod, 8);
            D.32426 = cmethod->flags;
            D.32427 = (int) D.32426;
            D.33040 = D.32427 & 64;
            if (D.33040 == 0) goto <D.33038>; else goto <D.33041>;
            <D.33041>:
            D.32426 = cmethod->flags;
            D.32427 = (int) D.32426;
            D.33042 = D.32427 & 32;
            if (D.33042 != 0) goto <D.33038>; else goto <D.33043>;
            <D.33043>:
            D.32390 = cmethod->klass;
            if (D.32390 != 0B) goto <D.33044>; else goto <D.33039>;
            <D.33044>:
            D.32390 = cmethod->klass;
            D.32570 = D.32390->flags;
            D.33045 = D.32570 & 256;
            if (D.33045 != 0) goto <D.33038>; else goto <D.33039>;
            <D.33038>:
            D.32390 = cmethod->klass;
            D.32433 = BIT_FIELD_REF <*D.32390, 8, 176>;
            D.32434 = D.32433 & 64;
            if (D.32434 == 0) goto <D.33046>; else goto <D.33047>;
            <D.33046>:
            if (virtual != 0) goto <D.33048>; else goto <D.33049>;
            <D.33048>:
            check_this = 1;
            <D.33049>:
            virtual = 0;
            <D.33047>:
            <D.33039>:
            <D.33024>:
            if (pass_imt_from_rgctx != 0) goto <D.33050>; else goto <D.33051>;
            <D.33050>:
            pass_vtable.128 = pass_vtable;
            D.33052 = pass_vtable.128 != 0;
            D.33053 = (long int) D.33052;
            D.33054 = __builtin_expect (D.33053, 0);
            if (D.33054 != 0) goto <D.33055>; else goto <D.33056>;
            <D.33055>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8010, "!pass_vtable");
            <D.33056>:
            D.33057 = cmethod == 0B;
            D.33058 = (long int) D.33057;
            D.33059 = __builtin_expect (D.33058, 0);
            if (D.33059 != 0) goto <D.33060>; else goto <D.33061>;
            <D.33060>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8011, "cmethod");
            <D.33061>:
            imt_arg = emit_get_rgctx_method (cfg, context_used, cmethod, 5);
            <D.33051>:
            if (check_this != 0) goto <D.33062>; else goto <D.33063>;
            <D.33062>:
            D.30919 = cfg->flags;
            D.31133 = D.30919 | 128;
            cfg->flags = D.31133;
            D.30476 = BIT_FIELD_REF <*cfg, 8, 3424>;
            D.31134 = D.30476 & 64;
            if (D.31134 != 0) goto <D.33064>; else goto <D.33065>;
            <D.33064>:
            D.30476 = BIT_FIELD_REF <*cfg, 8, 3424>;
            D.31134 = D.30476 & 64;
            if (D.31134 != 0) goto <D.33066>; else goto <D.33067>;
            <D.33066>:
            {
              struct MonoInst * inst;

              D.30489 = cfg->mempool;
              inst = mono_mempool_alloc (D.30489, 48);
              inst->data.op[1].const_val = 0;
              D.33068 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.33068;
              inst->prev = 0B;
              D.33069 = inst->prev;
              inst->next = D.33069;
              inst->opcode = 323;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.33070 = inst->sreg3;
              inst->sreg2 = D.33070;
              D.33071 = inst->sreg2;
              inst->sreg1 = D.33071;
              D.30712 = cfg->ip;
              inst->cil_code = D.30712;
              inst->dreg = -1;
              D.31489 = *sp;
              D.31682 = D.31489->dreg;
              inst->sreg1 = D.31682;
              inst->data.op[1].const_val = 0;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.33072>; else goto <D.33073>;
              <D.33072>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = inst;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              inst->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              goto <D.33074>;
              <D.33073>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.33074>:
            }
            {
              struct MonoInst * inst;

              D.30489 = cfg->mempool;
              inst = mono_mempool_alloc (D.30489, 48);
              inst->data.op[1].const_val = 0;
              D.33075 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.33075;
              inst->prev = 0B;
              D.33076 = inst->prev;
              inst->next = D.33076;
              inst->opcode = 455;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.33077 = inst->sreg3;
              inst->sreg2 = D.33077;
              D.33078 = inst->sreg2;
              inst->sreg1 = D.33078;
              D.30712 = cfg->ip;
              inst->cil_code = D.30712;
              inst->data.op[1].p = "NullReferenceException";
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.33079>; else goto <D.33080>;
              <D.33079>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = inst;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              inst->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              goto <D.33081>;
              <D.33080>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.33081>:
            }
            goto <D.33082>;
            <D.33067>:
            <D.33082>:
            goto <D.33083>;
            <D.33065>:
            {
              struct MonoInst * inst;

              D.30489 = cfg->mempool;
              inst = mono_mempool_alloc (D.30489, 48);
              inst->data.op[1].const_val = 0;
              D.33084 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.33084;
              inst->prev = 0B;
              D.33085 = inst->prev;
              inst->next = D.33085;
              inst->opcode = 340;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.33086 = inst->sreg3;
              inst->sreg2 = D.33086;
              D.33087 = inst->sreg2;
              inst->sreg1 = D.33087;
              D.30712 = cfg->ip;
              inst->cil_code = D.30712;
              inst->dreg = -1;
              D.31489 = *sp;
              D.31682 = D.31489->dreg;
              inst->sreg1 = D.31682;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.33088>; else goto <D.33089>;
              <D.33088>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = inst;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              inst->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              goto <D.33090>;
              <D.33089>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.33090>:
            }
            <D.33083>:
            {
              struct MonoInst * inst;

              D.30489 = cfg->mempool;
              inst = mono_mempool_alloc (D.30489, 48);
              inst->data.op[1].const_val = 0;
              D.33091 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.33091;
              inst->prev = 0B;
              D.33092 = inst->prev;
              inst->next = D.33092;
              inst->opcode = 803;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.33093 = inst->sreg3;
              inst->sreg2 = D.33093;
              D.33094 = inst->sreg2;
              inst->sreg1 = D.33094;
              D.30712 = cfg->ip;
              inst->cil_code = D.30712;
              inst->dreg = -1;
              D.31489 = *sp;
              D.31682 = D.31489->dreg;
              inst->sreg1 = D.31682;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.33095>; else goto <D.33096>;
              <D.33095>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = inst;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              inst->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              goto <D.33097>;
              <D.33096>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.33097>:
            }
            <D.33063>:
            D.33103 = cmethod != 0B;
            D.33104 = virtual != 0;
            D.33105 = D.33103 & D.33104;
            if (D.33105 != 0) goto <D.33106>; else goto <D.33107>;
            <D.33106>:
            D.32426 = cmethod->flags;
            D.32427 = (int) D.32426;
            D.33040 = D.32427 & 64;
            if (D.33040 != 0) goto <D.33108>; else goto <D.33109>;
            <D.33108>:
            D.32426 = cmethod->flags;
            D.32427 = (int) D.32426;
            D.33042 = D.32427 & 32;
            if (D.33042 == 0) goto <D.33110>; else goto <D.33100>;
            <D.33110>:
            D.32390 = cmethod->klass;
            if (D.32390 == 0B) goto <D.33101>; else goto <D.33111>;
            <D.33111>:
            D.32390 = cmethod->klass;
            D.32570 = D.32390->flags;
            D.33045 = D.32570 & 256;
            if (D.33045 == 0) goto <D.33101>; else goto <D.33100>;
            <D.33100>:
            D.32512 = BIT_FIELD_REF <*cmethod, 8, 160>;
            D.33112 = D.32512 & 124;
            if (D.33112 == 36) goto <D.33101>; else goto <D.33102>;
            <D.33101>:
            D.33113 = fsig->generic_param_count;
            if (D.33113 != 0) goto <D.33114>; else goto <D.33115>;
            <D.33114>:
            D.30637 = cfg->gsharedvt;
            if (D.30637 == 0) goto <D.33098>; else goto <D.33116>;
            <D.33116>:
            D.33117 = mini_is_gsharedvt_signature (cfg, fsig);
            if (D.33117 == 0) goto <D.33098>; else goto <D.33099>;
            <D.33098>:
            {
              struct MonoInst * this_temp;
              struct MonoInst * this_arg_temp;
              struct MonoInst * store;
              struct MonoInst * iargs[4];
              gboolean use_imt;

              try
                {
                  use_imt = 0;
                  D.32321 = BIT_FIELD_REF <*fsig, 8, 88>;
                  D.33118 = D.32321 & 2;
                  D.33119 = D.33118 == 0;
                  D.33120 = (long int) D.33119;
                  D.33121 = __builtin_expect (D.33120, 0);
                  if (D.33121 != 0) goto <D.33122>; else goto <D.33123>;
                  <D.33122>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8031, "fsig->is_inflated");
                  <D.33123>:
                  D.30459 = cfg->method;
                  if (D.30459 != method) goto <D.33124>; else goto <D.33125>;
                  <D.33124>:
                  D.30431 = BIT_FIELD_REF <*method, 8, 160>;
                  D.30432 = D.30431 & 124;
                  if (D.30432 == 0) goto <D.33126>; else goto <D.33127>;
                  <D.33126>:
                  D.30569 = cfg->verbose_level;
                  if (D.30569 > 1) goto <D.33128>; else goto <D.33129>;
                  <D.33128>:
                  printf ("inline failed: %s\n", "virtual generic call");
                  <D.33129>:
                  goto inline_failure;
                  <D.33127>:
                  <D.33125>:
                  D.30637 = cfg->gsharedvt;
                  if (D.30637 != 0) goto <D.33130>; else goto <D.33131>;
                  <D.33130>:
                  D.33132 = mini_is_gsharedvt_signature (cfg, fsig);
                  if (D.33132 != 0) goto <D.33133>; else goto <D.33134>;
                  <D.33133>:
                  D.30637 = cfg->gsharedvt;
                  if (D.30637 != 0) goto <D.33135>; else goto <D.33136>;
                  <D.33135>:
                  D.31371 = *ip;
                  D.31372 = (int) D.31371;
                  D.33137 = mono_opcode_name (D.31372);
                  D.32188 = method->signature;
                  D.32189 = D.32188->param_count;
                  D.32190 = (int) D.32189;
                  D.32191 = method->name;
                  D.30426 = method->klass;
                  D.32192 = D.30426->name;
                  D.30426 = method->klass;
                  D.32193 = D.30426->name_space;
                  D.33138 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.32193, D.32192, D.32191, D.32190, D.33137, "method-to-ir.c", 8037);
                  cfg->exception_message = D.33138;
                  D.30569 = cfg->verbose_level;
                  if (D.30569 > 1) goto <D.33139>; else goto <D.33140>;
                  <D.33139>:
                  D.32197 = cfg->exception_message;
                  printf ("%s\n", D.32197);
                  <D.33140>:
                  mono_cfg_set_exception (cfg, 11);
                  goto exception_exit;
                  <D.33136>:
                  <D.33134>:
                  <D.33131>:
                  D.32512 = BIT_FIELD_REF <*cmethod, 8, 160>;
                  D.33112 = D.32512 & 124;
                  if (D.33112 == 0) goto <D.33141>; else goto <D.33142>;
                  <D.33141>:
                  mono_use_imt.133 = mono_use_imt;
                  if (mono_use_imt.133 != 0) goto <D.33144>; else goto <D.33145>;
                  <D.33144>:
                  use_imt = 1;
                  <D.33145>:
                  <D.33142>:
                  if (use_imt != 0) goto <D.33146>; else goto <D.33147>;
                  <D.33146>:
                  D.33148 = imt_arg != 0B;
                  D.33149 = (long int) D.33148;
                  D.33150 = __builtin_expect (D.33149, 0);
                  if (D.33150 != 0) goto <D.33151>; else goto <D.33152>;
                  <D.33151>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8045, "!imt_arg");
                  <D.33152>:
                  if (context_used == 0) goto <D.33153>; else goto <D.33154>;
                  <D.33153>:
                  D.33155 = BIT_FIELD_REF <*cmethod, 8, 168>;
                  D.33156 = D.33155 & 16;
                  D.33157 = D.33156 == 0;
                  D.33158 = (long int) D.33157;
                  D.33159 = __builtin_expect (D.33158, 0);
                  if (D.33159 != 0) goto <D.33160>; else goto <D.33161>;
                  <D.33160>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8047, "cmethod->is_inflated");
                  <D.33161>:
                  <D.33154>:
                  imt_arg = emit_get_rgctx_method (cfg, context_used, cmethod, 5);
                  D.31489 = *sp;
                  ins = mono_emit_method_call_full (cfg, cmethod, fsig, 0, sp, D.31489, imt_arg, 0B);
                  goto <D.33162>;
                  <D.33147>:
                  D.31489 = *sp;
                  D.33163 = type_from_stack_type (D.31489);
                  this_temp = mono_compile_create_var (cfg, D.33163, 329);
                  D.30489 = cfg->mempool;
                  store = mono_mempool_alloc (D.30489, 48);
                  store->data.op[1].const_val = 0;
                  D.33164 = store->data.op[1].const_val;
                  store->data.op[0].const_val = D.33164;
                  store->prev = 0B;
                  D.33165 = store->prev;
                  store->next = D.33165;
                  store->opcode = 428;
                  store->flags = 0;
                  store->type = 0;
                  store->dreg = -1;
                  store->sreg3 = -1;
                  D.33166 = store->sreg3;
                  store->sreg2 = D.33166;
                  D.33167 = store->sreg2;
                  store->sreg1 = D.33167;
                  D.30712 = cfg->ip;
                  store->cil_code = D.30712;
                  D.31239 = cfg->varinfo;
                  D.33168 = this_temp->data.op[0].const_val;
                  D.33169 = (unsigned int) D.33168;
                  D.33170 = D.33169 * 4;
                  D.33171 = D.31239 + D.33170;
                  D.33172 = *D.33171;
                  D.33173 = D.33172->data.op[1].vtype;
                  D.33174 = mono_type_to_regmove (cfg, D.33173);
                  D.33175 = (short unsigned int) D.33174;
                  store->opcode = D.33175;
                  D.31239 = cfg->varinfo;
                  D.33168 = this_temp->data.op[0].const_val;
                  D.33169 = (unsigned int) D.33168;
                  D.33170 = D.33169 * 4;
                  D.33171 = D.31239 + D.33170;
                  D.33172 = *D.33171;
                  D.33176 = D.33172->klass;
                  store->klass = D.33176;
                  D.31489 = *sp;
                  D.31682 = D.31489->dreg;
                  store->sreg1 = D.31682;
                  D.31239 = cfg->varinfo;
                  D.33168 = this_temp->data.op[0].const_val;
                  D.33169 = (unsigned int) D.33168;
                  D.33170 = D.33169 * 4;
                  D.33171 = D.31239 + D.33170;
                  D.33172 = *D.33171;
                  D.33177 = D.33172->dreg;
                  store->dreg = D.33177;
                  D.33178 = store->opcode;
                  if (D.33178 == 431) goto <D.33179>; else goto <D.33180>;
                  <D.33179>:
                  D.31239 = cfg->varinfo;
                  D.33168 = this_temp->data.op[0].const_val;
                  D.33169 = (unsigned int) D.33168;
                  D.33170 = D.33169 * 4;
                  D.33171 = D.31239 + D.33170;
                  D.33172 = *D.33171;
                  D.33173 = D.33172->data.op[1].vtype;
                  D.33181 = mono_class_from_mono_type (D.33173);
                  store->klass = D.33181;
                  <D.33180>:
                  bblock.78 = bblock;
                  D.30826 = bblock.78->last_ins;
                  if (D.30826 != 0B) goto <D.33182>; else goto <D.33183>;
                  <D.33182>:
                  bblock.78 = bblock;
                  D.30826 = bblock.78->last_ins;
                  D.30826->next = store;
                  bblock.78 = bblock;
                  D.30826 = bblock.78->last_ins;
                  store->prev = D.30826;
                  bblock.78 = bblock;
                  bblock.78->last_ins = store;
                  goto <D.33184>;
                  <D.33183>:
                  bblock.78 = bblock;
                  bblock.78 = bblock;
                  bblock.78->last_ins = store;
                  D.30826 = bblock.78->last_ins;
                  bblock.78->code = D.30826;
                  <D.33184>:
                  D.30895 = mono_defaults.int_class;
                  D.30896 = &D.30895->byval_arg;
                  this_arg_temp = mono_compile_create_var (cfg, D.30896, 329);
                  D.30489 = cfg->mempool;
                  D.33185 = mono_mempool_alloc (D.30489, 48);
                  iargs[0] = D.33185;
                  D.33186 = iargs[0];
                  D.33186 = iargs[0];
                  D.33186->data.op[1].const_val = 0;
                  D.33187 = D.33186->data.op[1].const_val;
                  D.33186->data.op[0].const_val = D.33187;
                  D.33186 = iargs[0];
                  D.33186 = iargs[0];
                  D.33186->prev = 0B;
                  D.33188 = D.33186->prev;
                  D.33186->next = D.33188;
                  D.33186 = iargs[0];
                  D.33186->opcode = 428;
                  D.33186 = iargs[0];
                  D.33186->flags = 0;
                  D.33186 = iargs[0];
                  D.33186->type = 0;
                  D.33186 = iargs[0];
                  D.33186->dreg = -1;
                  D.33186 = iargs[0];
                  D.33186 = iargs[0];
                  D.33186 = iargs[0];
                  D.33186->sreg3 = -1;
                  D.33189 = D.33186->sreg3;
                  D.33186->sreg2 = D.33189;
                  D.33190 = D.33186->sreg2;
                  D.33186->sreg1 = D.33190;
                  D.33186 = iargs[0];
                  D.30712 = cfg->ip;
                  D.33186->cil_code = D.30712;
                  D.33186 = iargs[0];
                  D.31239 = cfg->varinfo;
                  D.33168 = this_temp->data.op[0].const_val;
                  D.33169 = (unsigned int) D.33168;
                  D.33170 = D.33169 * 4;
                  D.33171 = D.31239 + D.33170;
                  D.33172 = *D.33171;
                  D.33173 = D.33172->data.op[1].vtype;
                  D.33191 = mono_type_to_regmove (cfg, D.33173);
                  D.33192 = (short unsigned int) D.33191;
                  D.33186->opcode = D.33192;
                  D.33186 = iargs[0];
                  D.31239 = cfg->varinfo;
                  D.33168 = this_temp->data.op[0].const_val;
                  D.33169 = (unsigned int) D.33168;
                  D.33170 = D.33169 * 4;
                  D.33171 = D.31239 + D.33170;
                  D.33172 = *D.33171;
                  D.33173 = D.33172->data.op[1].vtype;
                  type_to_eval_stack_type (cfg, D.33173, D.33186);
                  D.33186 = iargs[0];
                  D.31239 = cfg->varinfo;
                  D.33168 = this_temp->data.op[0].const_val;
                  D.33169 = (unsigned int) D.33168;
                  D.33170 = D.33169 * 4;
                  D.33171 = D.31239 + D.33170;
                  D.33172 = *D.33171;
                  D.33176 = D.33172->klass;
                  D.33186->klass = D.33176;
                  D.33186 = iargs[0];
                  D.31239 = cfg->varinfo;
                  D.33168 = this_temp->data.op[0].const_val;
                  D.33169 = (unsigned int) D.33168;
                  D.33170 = D.33169 * 4;
                  D.33171 = D.31239 + D.33170;
                  D.33172 = *D.33171;
                  D.33177 = D.33172->dreg;
                  D.33186->sreg1 = D.33177;
                  D.33186 = iargs[0];
                  D.33186 = iargs[0];
                  D.33193 = D.33186->type;
                  D.33194 = (<unnamed type>) D.33193;
                  D.33195 = alloc_dreg (cfg, D.33194);
                  D.33196 = (int) D.33195;
                  D.33186->dreg = D.33196;
                  D.33186 = iargs[0];
                  D.33197 = D.33186->opcode;
                  if (D.33197 == 431) goto <D.33198>; else goto <D.33199>;
                  <D.33198>:
                  D.33186 = iargs[0];
                  D.31239 = cfg->varinfo;
                  D.33168 = this_temp->data.op[0].const_val;
                  D.33169 = (unsigned int) D.33168;
                  D.33170 = D.33169 * 4;
                  D.33171 = D.31239 + D.33170;
                  D.33172 = *D.33171;
                  D.33173 = D.33172->data.op[1].vtype;
                  D.33200 = mono_class_from_mono_type (D.33173);
                  D.33186->klass = D.33200;
                  <D.33199>:
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  if (D.30741 != 0B) goto <D.33201>; else goto <D.33202>;
                  <D.33201>:
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.33186 = iargs[0];
                  D.30741->next = D.33186;
                  D.33186 = iargs[0];
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.33186->prev = D.30741;
                  bblock.127 = cfg->cbb;
                  D.33186 = iargs[0];
                  bblock.127->last_ins = D.33186;
                  goto <D.33203>;
                  <D.33202>:
                  bblock.127 = cfg->cbb;
                  bblock.127 = cfg->cbb;
                  D.33186 = iargs[0];
                  bblock.127->last_ins = D.33186;
                  D.30741 = bblock.127->last_ins;
                  bblock.127->code = D.30741;
                  <D.33203>:
                  D.33204 = emit_get_rgctx_method (cfg, context_used, cmethod, 5);
                  iargs[1] = D.33204;
                  D.30489 = cfg->mempool;
                  D.33205 = mono_mempool_alloc (D.30489, 48);
                  iargs[2] = D.33205;
                  D.33206 = iargs[2];
                  D.33206 = iargs[2];
                  D.33206->data.op[1].const_val = 0;
                  D.33207 = D.33206->data.op[1].const_val;
                  D.33206->data.op[0].const_val = D.33207;
                  D.33206 = iargs[2];
                  D.33206 = iargs[2];
                  D.33206->prev = 0B;
                  D.33208 = D.33206->prev;
                  D.33206->next = D.33208;
                  D.33206 = iargs[2];
                  D.33206->opcode = 314;
                  D.33206 = iargs[2];
                  D.33206->flags = 0;
                  D.33206 = iargs[2];
                  D.33206->type = 0;
                  D.33206 = iargs[2];
                  D.33206->dreg = -1;
                  D.33206 = iargs[2];
                  D.33206 = iargs[2];
                  D.33206 = iargs[2];
                  D.33206->sreg3 = -1;
                  D.33209 = D.33206->sreg3;
                  D.33206->sreg2 = D.33209;
                  D.33210 = D.33206->sreg2;
                  D.33206->sreg1 = D.33210;
                  D.33206 = iargs[2];
                  D.30712 = cfg->ip;
                  D.33206->cil_code = D.30712;
                  D.33206 = iargs[2];
                  D.31239 = cfg->varinfo;
                  D.33211 = this_arg_temp->data.op[0].const_val;
                  D.33212 = (unsigned int) D.33211;
                  D.33213 = D.33212 * 4;
                  D.33214 = D.31239 + D.33213;
                  D.33215 = *D.33214;
                  D.33206->data.op[0].p = D.33215;
                  D.31239 = cfg->varinfo;
                  D.33211 = this_arg_temp->data.op[0].const_val;
                  D.33212 = (unsigned int) D.33211;
                  D.33213 = D.33212 * 4;
                  D.33214 = D.31239 + D.33213;
                  D.33215 = *D.33214;
                  D.31239 = cfg->varinfo;
                  D.33211 = this_arg_temp->data.op[0].const_val;
                  D.33212 = (unsigned int) D.33211;
                  D.33213 = D.33212 * 4;
                  D.33214 = D.31239 + D.33213;
                  D.33215 = *D.33214;
                  D.33216 = D.33215->flags;
                  D.33217 = D.33216 | 16;
                  D.33215->flags = D.33217;
                  D.33206 = iargs[2];
                  D.33206->type = 5;
                  D.33206 = iargs[2];
                  D.31239 = cfg->varinfo;
                  D.33211 = this_arg_temp->data.op[0].const_val;
                  D.33212 = (unsigned int) D.33211;
                  D.33213 = D.33212 * 4;
                  D.33214 = D.31239 + D.33213;
                  D.33215 = *D.33214;
                  D.33218 = D.33215->klass;
                  D.33206->klass = D.33218;
                  D.33206 = iargs[2];
                  D.33219 = alloc_dreg (cfg, 5);
                  D.33220 = (int) D.33219;
                  D.33206->dreg = D.33220;
                  cfg->has_indirection = 1;
                  D.30637 = cfg->gsharedvt;
                  D.31575 = D.30637 != 0;
                  D.31576 = (long int) D.31575;
                  D.31577 = __builtin_expect (D.31576, 0);
                  if (D.31577 != 0) goto <D.33221>; else goto <D.33222>;
                  <D.33221>:
                  D.31239 = cfg->varinfo;
                  D.33211 = this_arg_temp->data.op[0].const_val;
                  D.33212 = (unsigned int) D.33211;
                  D.33213 = D.33212 * 4;
                  D.33214 = D.31239 + D.33213;
                  D.33215 = *D.33214;
                  D.33223 = D.33215->data.op[1].vtype;
                  D.33224 = mini_is_gsharedvt_variable_type (cfg, D.33223);
                  if (D.33224 != 0) goto <D.33225>; else goto <D.33226>;
                  <D.33225>:
                  handle_gsharedvt_ldaddr (cfg);
                  <D.33226>:
                  <D.33222>:
                  D.33228 = mono_arch_is_soft_float ();
                  if (D.33228 != 0) goto <D.33229>; else goto <D.33230>;
                  <D.33229>:
                  D.31239 = cfg->varinfo;
                  D.33211 = this_arg_temp->data.op[0].const_val;
                  D.33212 = (unsigned int) D.33211;
                  D.33213 = D.33212 * 4;
                  D.33214 = D.31239 + D.33213;
                  D.33215 = *D.33214;
                  D.33231 = D.33215->type;
                  D.33232 = D.33231 == 2;
                  D.33233 = D.33231 == 4;
                  D.33234 = D.33232 | D.33233;
                  D.33235 = (int) D.33234;
                  iftmp.134 = (_Bool) D.33235;
                  goto <D.33236>;
                  <D.33230>:
                  D.31239 = cfg->varinfo;
                  D.33211 = this_arg_temp->data.op[0].const_val;
                  D.33212 = (unsigned int) D.33211;
                  D.33213 = D.33212 * 4;
                  D.33214 = D.31239 + D.33213;
                  D.33215 = *D.33214;
                  D.33237 = D.33215->type;
                  iftmp.134 = D.33237 == 2;
                  <D.33236>:
                  if (iftmp.134 != 0) goto <D.33238>; else goto <D.33239>;
                  <D.33238>:
                  {
                    struct MonoInst * var1;
                    struct MonoInst * var2;

                    D.31239 = cfg->varinfo;
                    D.33211 = this_arg_temp->data.op[0].const_val;
                    D.33212 = (unsigned int) D.33211;
                    D.33213 = D.33212 * 4;
                    D.33214 = D.31239 + D.33213;
                    D.33215 = *D.33214;
                    D.33241 = D.33215->dreg;
                    D.33242 = D.33241 + 1;
                    D.33243 = (unsigned int) D.33242;
                    D.31601 = cfg->vreg_to_inst_len;
                    if (D.33243 < D.31601) goto <D.33244>; else goto <D.33245>;
                    <D.33244>:
                    D.31604 = cfg->vreg_to_inst;
                    D.31239 = cfg->varinfo;
                    D.33211 = this_arg_temp->data.op[0].const_val;
                    D.33212 = (unsigned int) D.33211;
                    D.33213 = D.33212 * 4;
                    D.33214 = D.31239 + D.33213;
                    D.33215 = *D.33214;
                    D.33241 = D.33215->dreg;
                    D.33246 = (sizetype) D.33241;
                    D.33247 = D.33246 + 1;
                    D.33248 = D.33247 * 4;
                    D.33249 = D.31604 + D.33248;
                    iftmp.135 = *D.33249;
                    goto <D.33250>;
                    <D.33245>:
                    iftmp.135 = 0B;
                    <D.33250>:
                    var1 = iftmp.135;
                    D.31239 = cfg->varinfo;
                    D.33211 = this_arg_temp->data.op[0].const_val;
                    D.33212 = (unsigned int) D.33211;
                    D.33213 = D.33212 * 4;
                    D.33214 = D.31239 + D.33213;
                    D.33215 = *D.33214;
                    D.33241 = D.33215->dreg;
                    D.33252 = D.33241 + 2;
                    D.33253 = (unsigned int) D.33252;
                    D.31601 = cfg->vreg_to_inst_len;
                    if (D.33253 < D.31601) goto <D.33254>; else goto <D.33255>;
                    <D.33254>:
                    D.31604 = cfg->vreg_to_inst;
                    D.31239 = cfg->varinfo;
                    D.33211 = this_arg_temp->data.op[0].const_val;
                    D.33212 = (unsigned int) D.33211;
                    D.33213 = D.33212 * 4;
                    D.33214 = D.31239 + D.33213;
                    D.33215 = *D.33214;
                    D.33241 = D.33215->dreg;
                    D.33246 = (sizetype) D.33241;
                    D.33256 = D.33246 + 2;
                    D.33257 = D.33256 * 4;
                    D.33258 = D.31604 + D.33257;
                    iftmp.136 = *D.33258;
                    goto <D.33259>;
                    <D.33255>:
                    iftmp.136 = 0B;
                    <D.33259>:
                    var2 = iftmp.136;
                    D.33260 = var1 == 0B;
                    D.33261 = (long int) D.33260;
                    D.33262 = __builtin_expect (D.33261, 0);
                    if (D.33262 != 0) goto <D.33263>; else goto <D.33264>;
                    <D.33263>:
                    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8062, "var1");
                    <D.33264>:
                    D.33265 = var2 == 0B;
                    D.33266 = (long int) D.33265;
                    D.33267 = __builtin_expect (D.33266, 0);
                    if (D.33267 != 0) goto <D.33268>; else goto <D.33269>;
                    <D.33268>:
                    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8062, "var2");
                    <D.33269>:
                    D.33270 = var1->flags;
                    D.33271 = D.33270 | 16;
                    var1->flags = D.33271;
                    D.33272 = var2->flags;
                    D.33273 = D.33272 | 16;
                    var2->flags = D.33273;
                  }
                  <D.33239>:
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  if (D.30741 != 0B) goto <D.33274>; else goto <D.33275>;
                  <D.33274>:
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.33206 = iargs[2];
                  D.30741->next = D.33206;
                  D.33206 = iargs[2];
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.33206->prev = D.30741;
                  bblock.127 = cfg->cbb;
                  D.33206 = iargs[2];
                  bblock.127->last_ins = D.33206;
                  goto <D.33276>;
                  <D.33275>:
                  bblock.127 = cfg->cbb;
                  bblock.127 = cfg->cbb;
                  D.33206 = iargs[2];
                  bblock.127->last_ins = D.33206;
                  D.30741 = bblock.127->last_ins;
                  bblock.127->code = D.30741;
                  <D.33276>:
                  addr = mono_emit_jit_icall (cfg, mono_helper_compile_generic_method, &iargs);
                  D.30489 = cfg->mempool;
                  D.33277 = mono_mempool_alloc (D.30489, 48);
                  *sp = D.33277;
                  D.31489 = *sp;
                  D.31489 = *sp;
                  D.31489->data.op[1].const_val = 0;
                  D.33278 = D.31489->data.op[1].const_val;
                  D.31489->data.op[0].const_val = D.33278;
                  D.31489 = *sp;
                  D.31489 = *sp;
                  D.31489->prev = 0B;
                  D.33279 = D.31489->prev;
                  D.31489->next = D.33279;
                  D.31489 = *sp;
                  D.31489->opcode = 428;
                  D.31489 = *sp;
                  D.31489->flags = 0;
                  D.31489 = *sp;
                  D.31489->type = 0;
                  D.31489 = *sp;
                  D.31489->dreg = -1;
                  D.31489 = *sp;
                  D.31489 = *sp;
                  D.31489 = *sp;
                  D.31489->sreg3 = -1;
                  D.33280 = D.31489->sreg3;
                  D.31489->sreg2 = D.33280;
                  D.33281 = D.31489->sreg2;
                  D.31489->sreg1 = D.33281;
                  D.31489 = *sp;
                  D.30712 = cfg->ip;
                  D.31489->cil_code = D.30712;
                  D.31489 = *sp;
                  D.31239 = cfg->varinfo;
                  D.33211 = this_arg_temp->data.op[0].const_val;
                  D.33212 = (unsigned int) D.33211;
                  D.33213 = D.33212 * 4;
                  D.33214 = D.31239 + D.33213;
                  D.33215 = *D.33214;
                  D.33223 = D.33215->data.op[1].vtype;
                  D.33282 = mono_type_to_regmove (cfg, D.33223);
                  D.33283 = (short unsigned int) D.33282;
                  D.31489->opcode = D.33283;
                  D.31489 = *sp;
                  D.31239 = cfg->varinfo;
                  D.33211 = this_arg_temp->data.op[0].const_val;
                  D.33212 = (unsigned int) D.33211;
                  D.33213 = D.33212 * 4;
                  D.33214 = D.31239 + D.33213;
                  D.33215 = *D.33214;
                  D.33223 = D.33215->data.op[1].vtype;
                  type_to_eval_stack_type (cfg, D.33223, D.31489);
                  D.31489 = *sp;
                  D.31239 = cfg->varinfo;
                  D.33211 = this_arg_temp->data.op[0].const_val;
                  D.33212 = (unsigned int) D.33211;
                  D.33213 = D.33212 * 4;
                  D.33214 = D.31239 + D.33213;
                  D.33215 = *D.33214;
                  D.33218 = D.33215->klass;
                  D.31489->klass = D.33218;
                  D.31489 = *sp;
                  D.31239 = cfg->varinfo;
                  D.33211 = this_arg_temp->data.op[0].const_val;
                  D.33212 = (unsigned int) D.33211;
                  D.33213 = D.33212 * 4;
                  D.33214 = D.31239 + D.33213;
                  D.33215 = *D.33214;
                  D.33241 = D.33215->dreg;
                  D.31489->sreg1 = D.33241;
                  D.31489 = *sp;
                  D.31489 = *sp;
                  D.32169 = D.31489->type;
                  D.33284 = (<unnamed type>) D.32169;
                  D.33285 = alloc_dreg (cfg, D.33284);
                  D.33286 = (int) D.33285;
                  D.31489->dreg = D.33286;
                  D.31489 = *sp;
                  D.33287 = D.31489->opcode;
                  if (D.33287 == 431) goto <D.33288>; else goto <D.33289>;
                  <D.33288>:
                  D.31489 = *sp;
                  D.31239 = cfg->varinfo;
                  D.33211 = this_arg_temp->data.op[0].const_val;
                  D.33212 = (unsigned int) D.33211;
                  D.33213 = D.33212 * 4;
                  D.33214 = D.31239 + D.33213;
                  D.33215 = *D.33214;
                  D.33223 = D.33215->data.op[1].vtype;
                  D.33290 = mono_class_from_mono_type (D.33223);
                  D.31489->klass = D.33290;
                  <D.33289>:
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  if (D.30741 != 0B) goto <D.33291>; else goto <D.33292>;
                  <D.33291>:
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.31489 = *sp;
                  D.30741->next = D.31489;
                  D.31489 = *sp;
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.31489->prev = D.30741;
                  bblock.127 = cfg->cbb;
                  D.31489 = *sp;
                  bblock.127->last_ins = D.31489;
                  goto <D.33293>;
                  <D.33292>:
                  bblock.127 = cfg->cbb;
                  bblock.127 = cfg->cbb;
                  D.31489 = *sp;
                  bblock.127->last_ins = D.31489;
                  D.30741 = bblock.127->last_ins;
                  bblock.127->code = D.30741;
                  <D.33293>:
                  ins = mono_emit_calli (cfg, fsig, sp, addr, 0B, 0B);
                  <D.33162>:
                  goto call_end;
                }
              finally
                {
                  iargs = {CLOBBER};
                }
            }
            <D.33099>:
            <D.33115>:
            <D.33102>:
            <D.33109>:
            <D.33107>:
            if (cmethod != 0B) goto <D.33294>; else goto <D.33295>;
            <D.33294>:
            D.32390 = cmethod->klass;
            D.33296 = mono_defaults.monitor_class;
            if (D.32390 == D.33296) goto <D.33297>; else goto <D.33298>;
            <D.33297>:
            {
              size_t __s1_len;
              size_t __s2_len;

              __s2_len = 5;
              if (__s2_len <= 3) goto <D.33300>; else goto <D.33301>;
              <D.33300>:
              {
                const unsigned char * __s2;
                int __result;

                __s2 = cmethod->name;
                D.33302 = "Enter";
                D.33303 = MEM[(const unsigned char *)D.33302];
                D.33304 = (int) D.33303;
                D.33305 = *__s2;
                D.33306 = (int) D.33305;
                __result = D.33304 - D.33306;
                {
                  D.33307 = __s2_len != 0;
                  D.33308 = __result == 0;
                  D.33309 = D.33307 & D.33308;
                  if (D.33309 != 0) goto <D.33310>; else goto <D.33311>;
                  <D.33310>:
                  D.33312 = &MEM[(void *)"Enter" + 1B];
                  D.33313 = *D.33312;
                  D.33314 = (int) D.33313;
                  D.33315 = __s2 + 1;
                  D.33316 = *D.33315;
                  D.33317 = (int) D.33316;
                  __result = D.33314 - D.33317;
                  D.33318 = __s2_len > 1;
                  D.33308 = __result == 0;
                  D.33319 = D.33318 & D.33308;
                  if (D.33319 != 0) goto <D.33320>; else goto <D.33321>;
                  <D.33320>:
                  D.33322 = &MEM[(void *)"Enter" + 2B];
                  D.33323 = *D.33322;
                  D.33324 = (int) D.33323;
                  D.33325 = __s2 + 2;
                  D.33326 = *D.33325;
                  D.33327 = (int) D.33326;
                  __result = D.33324 - D.33327;
                  D.33328 = __s2_len > 2;
                  D.33308 = __result == 0;
                  D.33329 = D.33328 & D.33308;
                  if (D.33329 != 0) goto <D.33330>; else goto <D.33331>;
                  <D.33330>:
                  D.33332 = &MEM[(void *)"Enter" + 3B];
                  D.33333 = *D.33332;
                  D.33334 = (int) D.33333;
                  D.33335 = __s2 + 3;
                  D.33336 = *D.33335;
                  D.33337 = (int) D.33336;
                  __result = D.33334 - D.33337;
                  <D.33331>:
                  <D.33321>:
                  <D.33311>:
                }
                D.27529 = __result;
              }
              iftmp.137 = -D.27529;
              goto <D.33338>;
              <D.33301>:
              D.32927 = cmethod->name;
              iftmp.137 = __builtin_strcmp (D.32927, "Enter");
              <D.33338>:
              D.27530 = iftmp.137;
            }
            if (D.27530 == 0) goto <D.33339>; else goto <D.33340>;
            <D.33339>:
            D.33341 = mono_method_signature (cmethod);
            D.33342 = D.33341->param_count;
            if (D.33342 == 1) goto <D.33343>; else goto <D.33344>;
            <D.33343>:
            {
              struct MonoBasicBlock * tbb;

              D.30620 = cfg->cil_offset_to_bb;
              D.31934 = ip + 5;
              D.32491 = (int) D.31934;
              D.30624 = cfg->cil_start;
              D.30625 = (int) D.30624;
              D.33345 = D.32491 - D.30625;
              D.33346 = (unsigned int) D.33345;
              D.33347 = D.33346 * 4;
              D.33348 = D.30620 + D.33347;
              tbb = *D.33348;
              if (tbb == 0B) goto <D.33349>; else goto <D.33350>;
              <D.33349>:
              D.31934 = ip + 5;
              if (D.31934 >= end) goto <D.33351>; else goto <D.33353>;
              <D.33353>:
              D.33354 = ip + 5;
              D.30636 = header->code;
              if (D.33354 < D.30636) goto <D.33351>; else goto <D.33352>;
              <D.33351>:
              D.30637 = cfg->gsharedvt;
              if (D.30637 != 0) goto <D.33355>; else goto <D.33356>;
              <D.33355>:
              D.30569 = cfg->verbose_level;
              if (D.30569 > 2) goto <D.33357>; else goto <D.33358>;
              <D.33357>:
              printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
              <D.33358>:
              mono_cfg_set_exception (cfg, 11);
              goto exception_exit;
              <D.33356>:
              D.33359 = mini_get_debug_options ();
              D.33360 = D.33359->break_on_unverified;
              if (D.33360 != 0) goto <D.33361>; else goto unverified;
              <D.33361>:
              __asm__ __volatile__("int $03");
              <D.33352>:
              D.30489 = cfg->mempool;
              tbb = mono_mempool_alloc0 (D.30489, 172);
              D.30597 = cfg->num_bblocks;
              D.33362 = D.30597;
              D.33363 = D.33362 + 1;
              cfg->num_bblocks = D.33363;
              D.33364 = (int) D.33362;
              tbb->block_num = D.33364;
              D.31934 = ip + 5;
              tbb->cil_code = D.31934;
              D.33365 = tbb->cil_code;
              if (D.33365 != 0B) goto <D.33366>; else goto <D.33367>;
              <D.33366>:
              D.30620 = cfg->cil_offset_to_bb;
              D.33365 = tbb->cil_code;
              D.33368 = (int) D.33365;
              D.30624 = cfg->cil_start;
              D.30625 = (int) D.30624;
              D.33369 = D.33368 - D.30625;
              D.33370 = (unsigned int) D.33369;
              D.33371 = D.33370 * 4;
              D.33372 = D.30620 + D.33371;
              *D.33372 = tbb;
              <D.33367>:
              D.30656 = cfg->real_offset;
              tbb->real_offset = D.30656;
              <D.33350>:
              D.33373 = BIT_FIELD_REF <*tbb, 8, 912>;
              D.33374 = D.33373 & 64;
              if (D.33374 != 0) goto <D.33375>; else goto <D.33376>;
              <D.33375>:
              D.33377 = tbb->region;
              D.33378 = D.33377 & 7;
              if (D.33378 == 2) goto <D.33379>; else goto <D.33380>;
              <D.33379>:
              tbb->extend_try_block = 1;
              <D.33380>:
              <D.33376>:
            }
            <D.33344>:
            <D.33340>:
            <D.33298>:
            <D.33295>:
            if (cmethod != 0B) goto <D.33381>; else goto <D.33382>;
            <D.33381>:
            D.30881 = cfg->opt;
            D.32932 = D.30881 & 2048;
            if (D.32932 != 0) goto <D.33383>; else goto <D.33384>;
            <D.33383>:
            ins = mini_emit_inst_for_method (cfg, cmethod, fsig, sp);
            if (ins != 0B) goto <D.33385>; else goto <D.33386>;
            <D.33385>:
            bblock.127 = cfg->cbb;
            bblock = bblock.127;
            D.32478 = fsig->ret;
            D.33387 = mono_type_is_void (D.32478);
            if (D.33387 == 0) goto <D.33388>; else goto <D.33389>;
            <D.33388>:
            D.32478 = fsig->ret;
            type_to_eval_stack_type (cfg, D.32478, ins);
            emit_widen = 0;
            <D.33389>:
            goto call_end;
            <D.33386>:
            <D.33384>:
            <D.33382>:
            if (cmethod != 0B) goto <D.33392>; else goto <D.33393>;
            <D.33392>:
            D.30881 = cfg->opt;
            D.33394 = D.30881 & 4;
            if (D.33394 != 0) goto <D.33395>; else goto <D.33396>;
            <D.33395>:
            if (virtual == 0) goto <D.33390>; else goto <D.33397>;
            <D.33397>:
            D.32426 = cmethod->flags;
            D.32427 = (int) D.32426;
            D.33040 = D.32427 & 64;
            if (D.33040 == 0) goto <D.33390>; else goto <D.33398>;
            <D.33398>:
            D.32426 = cmethod->flags;
            D.32427 = (int) D.32426;
            D.33042 = D.32427 & 32;
            if (D.33042 != 0) goto <D.33390>; else goto <D.33399>;
            <D.33399>:
            D.32390 = cmethod->klass;
            if (D.32390 != 0B) goto <D.33400>; else goto <D.33391>;
            <D.33400>:
            D.32390 = cmethod->klass;
            D.32570 = D.32390->flags;
            D.33045 = D.32570 & 256;
            if (D.33045 != 0) goto <D.33390>; else goto <D.33391>;
            <D.33390>:
            if (disable_inline == 0) goto <D.33401>; else goto <D.33402>;
            <D.33401>:
            D.33403 = mono_method_check_inlining (cfg, cmethod);
            if (D.33403 != 0) goto <D.33404>; else goto <D.33405>;
            <D.33404>:
            D.33406 = monoeg_g_list_find (dont_inline, cmethod);
            if (D.33406 == 0B) goto <D.33407>; else goto <D.33408>;
            <D.33407>:
            {
              int costs;
              gboolean always;

              always = 0;
              D.32457 = cmethod->iflags;
              D.32458 = (int) D.32457;
              D.32459 = D.32458 & 4096;
              if (D.32459 != 0) goto <D.33409>; else goto <D.33411>;
              <D.33411>:
              D.32426 = cmethod->flags;
              D.32427 = (int) D.32426;
              D.33412 = D.32427 & 8192;
              if (D.33412 != 0) goto <D.33409>; else goto <D.33410>;
              <D.33409>:
              D.30459 = cfg->method;
              if (D.30459 != method) goto <D.33413>; else goto <D.33414>;
              <D.33413>:
              D.30431 = BIT_FIELD_REF <*method, 8, 160>;
              D.30432 = D.30431 & 124;
              if (D.30432 == 0) goto <D.33415>; else goto <D.33416>;
              <D.33415>:
              D.30569 = cfg->verbose_level;
              if (D.30569 > 1) goto <D.33417>; else goto <D.33418>;
              <D.33417>:
              printf ("inline failed: %s\n", "wrapper call");
              <D.33418>:
              goto inline_failure;
              <D.33416>:
              <D.33414>:
              check_for_pending_exc.120 = check_for_pending_exc;
              cmethod = mono_marshal_get_native_wrapper (cmethod, check_for_pending_exc.120, 0);
              always = 1;
              <D.33410>:
              D.30656 = cfg->real_offset;
              costs = inline_method (cfg, cmethod, fsig, sp, ip, D.30656, dont_inline, always);
              if (costs != 0) goto <D.33419>; else goto <D.33420>;
              <D.33419>:
              D.30656 = cfg->real_offset;
              D.33421 = D.30656 + 5;
              cfg->real_offset = D.33421;
              bblock.127 = cfg->cbb;
              bblock = bblock.127;
              D.32478 = fsig->ret;
              D.33422 = mono_type_is_void (D.32478);
              if (D.33422 == 0) goto <D.33423>; else goto <D.33424>;
              <D.33423>:
              sp = sp + 4;
              push_res = 0;
              <D.33424>:
              inline_costs = inline_costs + costs;
              goto call_end;
              <D.33420>:
            }
            <D.33408>:
            <D.33405>:
            <D.33402>:
            <D.33391>:
            <D.33396>:
            <D.33393>:
            D.30881 = cfg->opt;
            D.33425 = D.30881 & 4096;
            if (D.33425 != 0) goto <D.33426>; else goto <D.33427>;
            <D.33426>:
            D.33428 = call_opcode == 40;
            D.33429 = cmethod == method;
            D.33430 = D.33428 & D.33429;
            if (D.33430 != 0) goto <D.33431>; else goto <D.33432>;
            <D.33431>:
            D.31934 = ip + 5;
            D.33433 = *D.31934;
            if (D.33433 == 42) goto <D.33434>; else goto <D.33435>;
            <D.33434>:
            if (vtable_arg == 0B) goto <D.33436>; else goto <D.33437>;
            <D.33436>:
            {
              gboolean has_vtargs;
              int i;

              has_vtargs = 0;
              D.30459 = cfg->method;
              if (D.30459 != method) goto <D.33438>; else goto <D.33439>;
              <D.33438>:
              D.30431 = BIT_FIELD_REF <*method, 8, 160>;
              D.30432 = D.30431 & 124;
              if (D.30432 == 0) goto <D.33440>; else goto <D.33441>;
              <D.33440>:
              D.30569 = cfg->verbose_level;
              if (D.30569 > 1) goto <D.33442>; else goto <D.33443>;
              <D.33442>:
              printf ("inline failed: %s\n", "tail call");
              <D.33443>:
              goto inline_failure;
              <D.33441>:
              <D.33439>:
              D.32314 = fsig->param_count;
              D.32315 = (int) D.32314;
              i = D.32315 + -1;
              goto <D.27537>;
              <D.27536>:
              D.33444 = mono_method_signature (cmethod);
              D.33445 = D.33444->params[i];
              D.33446 = mono_type_is_struct (D.33445);
              if (D.33446 != 0) goto <D.33447>; else goto <D.33448>;
              <D.33447>:
              has_vtargs = 1;
              <D.33448>:
              i = i + -1;
              <D.27537>:
              if (i >= 0) goto <D.27536>; else goto <D.27538>;
              <D.27538>:
              if (has_vtargs == 0) goto <D.33449>; else goto <D.33450>;
              <D.33449>:
              i = 0;
              goto <D.27540>;
              <D.27539>:
              D.30489 = cfg->mempool;
              ins = mono_mempool_alloc (D.30489, 48);
              ins->data.op[1].const_val = 0;
              D.30708 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.30708;
              ins->prev = 0B;
              D.30709 = ins->prev;
              ins->next = D.30709;
              ins->opcode = 428;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.30710 = ins->sreg3;
              ins->sreg2 = D.30710;
              D.30711 = ins->sreg2;
              ins->sreg1 = D.30711;
              D.30712 = cfg->ip;
              ins->cil_code = D.30712;
              D.31116 = cfg->arg_types;
              i.138 = (unsigned int) i;
              D.33452 = i.138 * 4;
              D.33453 = D.31116 + D.33452;
              D.33454 = *D.33453;
              D.33455 = mono_type_to_regmove (cfg, D.33454);
              D.33456 = (short unsigned int) D.33455;
              ins->opcode = D.33456;
              D.31106 = cfg->args;
              i.138 = (unsigned int) i;
              D.33452 = i.138 * 4;
              D.33457 = D.31106 + D.33452;
              D.33458 = *D.33457;
              D.33459 = D.33458->klass;
              ins->klass = D.33459;
              i.138 = (unsigned int) i;
              D.33452 = i.138 * 4;
              D.33460 = sp + D.33452;
              D.33461 = *D.33460;
              D.33462 = D.33461->dreg;
              ins->sreg1 = D.33462;
              D.31106 = cfg->args;
              i.138 = (unsigned int) i;
              D.33452 = i.138 * 4;
              D.33457 = D.31106 + D.33452;
              D.33458 = *D.33457;
              D.33463 = D.33458->dreg;
              ins->dreg = D.33463;
              D.31253 = ins->opcode;
              if (D.31253 == 431) goto <D.33464>; else goto <D.33465>;
              <D.33464>:
              D.31116 = cfg->arg_types;
              i.138 = (unsigned int) i;
              D.33452 = i.138 * 4;
              D.33453 = D.31116 + D.33452;
              D.33454 = *D.33453;
              D.33466 = mono_class_from_mono_type (D.33454);
              ins->klass = D.33466;
              <D.33465>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.33467>; else goto <D.33468>;
              <D.33467>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = ins;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              ins->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              goto <D.33469>;
              <D.33468>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.33469>:
              i = i + 1;
              <D.27540>:
              if (i < n) goto <D.27539>; else goto <D.27541>;
              <D.27541>:
              D.30489 = cfg->mempool;
              ins = mono_mempool_alloc (D.30489, 48);
              ins->data.op[1].const_val = 0;
              D.30708 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.30708;
              ins->prev = 0B;
              D.30709 = ins->prev;
              ins->next = D.30709;
              ins->opcode = 446;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.30710 = ins->sreg3;
              ins->sreg2 = D.30710;
              D.30711 = ins->sreg2;
              ins->sreg1 = D.30711;
              D.30712 = cfg->ip;
              ins->cil_code = D.30712;
              bblock.78 = bblock;
              D.30826 = bblock.78->last_ins;
              if (D.30826 != 0B) goto <D.33470>; else goto <D.33471>;
              <D.33470>:
              bblock.78 = bblock;
              D.30826 = bblock.78->last_ins;
              D.30826->next = ins;
              bblock.78 = bblock;
              D.30826 = bblock.78->last_ins;
              ins->prev = D.30826;
              bblock.78 = bblock;
              bblock.78->last_ins = ins;
              goto <D.33472>;
              <D.33471>:
              bblock.78 = bblock;
              bblock.78 = bblock;
              bblock.78->last_ins = ins;
              D.30826 = bblock.78->last_ins;
              bblock.78->code = D.30826;
              <D.33472>:
              D.33473 = start_bblock->out_bb;
              tblock = *D.33473;
              bblock.78 = bblock;
              link_bblock (cfg, bblock.78, tblock);
              ins->data.op[0].target_block = tblock;
              start_new_bblock = 1;
              D.33474 = ip + 5;
              bblock.78 = bblock;
              D.33475 = ip_in_bb (cfg, bblock.78, D.33474);
              if (D.33475 != 0) goto <D.33476>; else goto <D.33477>;
              <D.33476>:
              skip_ret = 1;
              <D.33477>:
              push_res = 0;
              goto call_end;
              <D.33450>:
            }
            <D.33437>:
            <D.33435>:
            <D.33432>:
            <D.33427>:
            num_calls.139 = num_calls;
            num_calls = num_calls.139 + 1;
            D.33479 = num_calls.139 * 10;
            inline_costs = D.33479 + inline_costs;
            if (cmethod != 0B) goto <D.33481>; else goto <D.33480>;
            <D.33481>:
            D.30637 = cfg->gsharedvt;
            if (D.30637 != 0) goto <D.33482>; else goto <D.33480>;
            <D.33482>:
            D.33483 = mini_is_gsharedvt_signature (cfg, fsig);
            if (D.33483 != 0) goto <D.33484>; else goto <D.33480>;
            <D.33484>:
            {
              MonoRgctxInfoType info_type;

              if (virtual != 0) goto <D.33485>; else goto <D.33486>;
              <D.33485>:
              D.32598 = BIT_FIELD_REF <*fsig, 8, 80>;
              D.32599 = D.32598 & 64;
              if (D.32599 != 0) goto <D.33489>; else goto <D.33490>;
              <D.33489>:
              D.30426 = method->klass;
              D.33491 = BIT_FIELD_REF <*D.30426, 8, 176>;
              D.33492 = D.33491 & 64;
              if (D.33492 != 0) goto <D.33487>; else goto <D.33493>;
              <D.33493>:
              D.30426 = method->klass;
              D.32559 = mono_defaults.object_class;
              if (D.30426 == D.32559) goto <D.33487>; else goto <D.33488>;
              <D.33487>:
              D.30637 = cfg->gsharedvt;
              if (D.30637 != 0) goto <D.33494>; else goto <D.33495>;
              <D.33494>:
              D.31371 = *ip;
              D.31372 = (int) D.31371;
              D.33496 = mono_opcode_name (D.31372);
              D.32188 = method->signature;
              D.32189 = D.32188->param_count;
              D.32190 = (int) D.32189;
              D.32191 = method->name;
              D.30426 = method->klass;
              D.32192 = D.30426->name;
              D.30426 = method->klass;
              D.32193 = D.30426->name_space;
              D.33497 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.32193, D.32192, D.32191, D.32190, D.33496, "method-to-ir.c", 8189);
              cfg->exception_message = D.33497;
              D.30569 = cfg->verbose_level;
              if (D.30569 > 1) goto <D.33498>; else goto <D.33499>;
              <D.33498>:
              D.32197 = cfg->exception_message;
              printf ("%s\n", D.32197);
              <D.33499>:
              mono_cfg_set_exception (cfg, 11);
              goto exception_exit;
              <D.33495>:
              <D.33488>:
              <D.33490>:
              D.33113 = fsig->generic_param_count;
              if (D.33113 != 0) goto <D.33500>; else goto <D.33501>;
              <D.33500>:
              mono_use_imt.133 = mono_use_imt;
              D.33502 = mono_use_imt.133 == 0;
              D.33503 = (long int) D.33502;
              D.33504 = __builtin_expect (D.33503, 0);
              if (D.33504 != 0) goto <D.33505>; else goto <D.33506>;
              <D.33505>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8192, "mono_use_imt");
              <D.33506>:
              D.33148 = imt_arg != 0B;
              D.33149 = (long int) D.33148;
              D.33150 = __builtin_expect (D.33149, 0);
              if (D.33150 != 0) goto <D.33507>; else goto <D.33508>;
              <D.33507>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8193, "!imt_arg");
              <D.33508>:
              imt_arg = emit_get_rgctx_method (cfg, context_used, cmethod, 5);
              vtable_arg = 0B;
              <D.33501>:
              <D.33486>:
              D.32390 = cmethod->klass;
              D.32463 = D.32390->rank;
              if (D.32463 != 0) goto <D.33509>; else goto <D.33510>;
              <D.33509>:
              D.32390 = cmethod->klass;
              D.33511 = D.32390->byval_arg.type;
              if (D.33511 != 29) goto <D.33512>; else goto <D.33513>;
              <D.33512>:
              D.30637 = cfg->gsharedvt;
              if (D.30637 != 0) goto <D.33514>; else goto <D.33515>;
              <D.33514>:
              D.31371 = *ip;
              D.31372 = (int) D.31371;
              D.33516 = mono_opcode_name (D.31372);
              D.32188 = method->signature;
              D.32189 = D.32188->param_count;
              D.32190 = (int) D.32189;
              D.32191 = method->name;
              D.30426 = method->klass;
              D.32192 = D.30426->name;
              D.30426 = method->klass;
              D.32193 = D.30426->name_space;
              D.33517 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.32193, D.32192, D.32191, D.32190, D.33516, "method-to-ir.c", 8204);
              cfg->exception_message = D.33517;
              D.30569 = cfg->verbose_level;
              if (D.30569 > 1) goto <D.33518>; else goto <D.33519>;
              <D.33518>:
              D.32197 = cfg->exception_message;
              printf ("%s\n", D.32197);
              <D.33519>:
              mono_cfg_set_exception (cfg, 11);
              goto exception_exit;
              <D.33515>:
              <D.33513>:
              <D.33510>:
              D.32390 = cmethod->klass;
              D.32883 = D.32390->parent;
              D.32884 = mono_defaults.multicastdelegate_class;
              if (D.32883 == D.32884) goto <D.33520>; else goto <D.33521>;
              <D.33520>:
              {
                size_t __s1_len;
                size_t __s2_len;

                __s2_len = 6;
                if (__s2_len <= 3) goto <D.33523>; else goto <D.33524>;
                <D.33523>:
                {
                  const unsigned char * __s2;
                  int __result;

                  __s2 = cmethod->name;
                  D.32890 = "Invoke";
                  D.32891 = MEM[(const unsigned char *)D.32890];
                  D.32892 = (int) D.32891;
                  D.33525 = *__s2;
                  D.33526 = (int) D.33525;
                  __result = D.32892 - D.33526;
                  {
                    D.33527 = __s2_len != 0;
                    D.33528 = __result == 0;
                    D.33529 = D.33527 & D.33528;
                    if (D.33529 != 0) goto <D.33530>; else goto <D.33531>;
                    <D.33530>:
                    D.32900 = &MEM[(void *)"Invoke" + 1B];
                    D.32901 = *D.32900;
                    D.32902 = (int) D.32901;
                    D.33532 = __s2 + 1;
                    D.33533 = *D.33532;
                    D.33534 = (int) D.33533;
                    __result = D.32902 - D.33534;
                    D.33535 = __s2_len > 1;
                    D.33528 = __result == 0;
                    D.33536 = D.33535 & D.33528;
                    if (D.33536 != 0) goto <D.33537>; else goto <D.33538>;
                    <D.33537>:
                    D.32910 = &MEM[(void *)"Invoke" + 2B];
                    D.32911 = *D.32910;
                    D.32912 = (int) D.32911;
                    D.33539 = __s2 + 2;
                    D.33540 = *D.33539;
                    D.33541 = (int) D.33540;
                    __result = D.32912 - D.33541;
                    D.33542 = __s2_len > 2;
                    D.33528 = __result == 0;
                    D.33543 = D.33542 & D.33528;
                    if (D.33543 != 0) goto <D.33544>; else goto <D.33545>;
                    <D.33544>:
                    D.32920 = &MEM[(void *)"Invoke" + 3B];
                    D.32921 = *D.32920;
                    D.32922 = (int) D.32921;
                    D.33546 = __s2 + 3;
                    D.33547 = *D.33546;
                    D.33548 = (int) D.33547;
                    __result = D.32922 - D.33548;
                    <D.33545>:
                    <D.33538>:
                    <D.33531>:
                  }
                  D.27550 = __result;
                }
                iftmp.140 = -D.27550;
                goto <D.33549>;
                <D.33524>:
                D.32927 = cmethod->name;
                iftmp.140 = __builtin_strcmp (D.32927, "Invoke");
                <D.33549>:
                D.27551 = iftmp.140;
              }
              if (D.27551 == 0) goto <D.33550>; else goto <D.33551>;
              <D.33550>:
              keep_this_alive = *sp;
              <D.33551>:
              <D.33521>:
              if (virtual != 0) goto <D.33554>; else goto <D.33552>;
              <D.33554>:
              D.32426 = cmethod->flags;
              D.32427 = (int) D.32426;
              D.33040 = D.32427 & 64;
              if (D.33040 != 0) goto <D.33555>; else goto <D.33552>;
              <D.33555>:
              info_type = 17;
              goto <D.33553>;
              <D.33552>:
              info_type = 16;
              <D.33553>:
              addr = emit_get_rgctx_gsharedvt_call (cfg, context_used, fsig, cmethod, info_type);
              ins = mono_emit_calli (cfg, fsig, sp, addr, imt_arg, vtable_arg);
              goto call_end;
            }
            <D.33480>:
            if (calli != 0) goto <D.33556>; else goto <D.33557>;
            <D.33556>:
            D.30637 = cfg->gsharedvt;
            if (D.30637 != 0) goto <D.33558>; else goto <D.33559>;
            <D.33558>:
            D.33560 = mini_is_gsharedvt_signature (cfg, fsig);
            if (D.33560 != 0) goto <D.33561>; else goto <D.33562>;
            <D.33561>:
            {
              struct MonoInst * callee;

              callee = addr;
              D.30431 = BIT_FIELD_REF <*method, 8, 160>;
              D.30432 = D.30431 & 124;
              if (D.30432 != 4) goto <D.33563>; else goto <D.33564>;
              <D.33563>:
              D.30637 = cfg->gsharedvt;
              if (D.30637 != 0) goto <D.33565>; else goto <D.33566>;
              <D.33565>:
              D.31371 = *ip;
              D.31372 = (int) D.31371;
              D.33567 = mono_opcode_name (D.31372);
              D.32188 = method->signature;
              D.32189 = D.32188->param_count;
              D.32190 = (int) D.32189;
              D.32191 = method->name;
              D.30426 = method->klass;
              D.32192 = D.30426->name;
              D.30426 = method->klass;
              D.32193 = D.30426->name_space;
              D.33568 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.32193, D.32192, D.32191, D.32190, D.33567, "method-to-ir.c", 8225);
              cfg->exception_message = D.33568;
              D.30569 = cfg->verbose_level;
              if (D.30569 > 1) goto <D.33569>; else goto <D.33570>;
              <D.33569>:
              D.32197 = cfg->exception_message;
              printf ("%s\n", D.32197);
              <D.33570>:
              mono_cfg_set_exception (cfg, 11);
              goto exception_exit;
              <D.33566>:
              <D.33564>:
              addr = emit_get_rgctx_sig (cfg, context_used, fsig, 18);
              ins = mono_emit_calli (cfg, fsig, sp, addr, 0B, callee);
              goto call_end;
            }
            <D.33562>:
            <D.33559>:
            <D.33557>:
            D.33575 = context_used != 0;
            D.33576 = imt_arg == 0B;
            D.33577 = D.33575 & D.33576;
            if (D.33577 != 0) goto <D.33578>; else goto <D.33579>;
            <D.33578>:
            D.33580 = array_rank | delegate_invoke;
            if (D.33580 == 0) goto <D.33581>; else goto <D.33582>;
            <D.33581>:
            D.33583 = mono_method_is_generic_sharable (cmethod, 1);
            if (D.33583 == 0) goto <D.33574>; else goto <D.33584>;
            <D.33584>:
            D.32390 = cmethod->klass;
            D.33585 = mono_class_generic_sharing_enabled (D.32390);
            if (D.33585 == 0) goto <D.33574>; else goto <D.33573>;
            <D.33574>:
            if (virtual == 0) goto <D.33571>; else goto <D.33586>;
            <D.33586>:
            D.32426 = cmethod->flags;
            D.32427 = (int) D.32426;
            D.33042 = D.32427 & 32;
            if (D.33042 != 0) goto <D.33571>; else goto <D.33587>;
            <D.33587>:
            D.32390 = cmethod->klass;
            if (D.32390 != 0B) goto <D.33588>; else goto <D.33572>;
            <D.33588>:
            D.32390 = cmethod->klass;
            D.32570 = D.32390->flags;
            D.33045 = D.32570 & 256;
            if (D.33045 != 0) goto <D.33571>; else goto <D.33572>;
            <D.33572>:
            D.32426 = cmethod->flags;
            D.32427 = (int) D.32426;
            D.33040 = D.32427 & 64;
            if (D.33040 == 0) goto <D.33571>; else goto <D.33573>;
            <D.33571>:
            D.30459 = cfg->method;
            if (D.30459 != method) goto <D.33589>; else goto <D.33590>;
            <D.33589>:
            D.30431 = BIT_FIELD_REF <*method, 8, 160>;
            D.30432 = D.30431 & 124;
            if (D.30432 == 0) goto <D.33591>; else goto <D.33592>;
            <D.33591>:
            D.30569 = cfg->verbose_level;
            if (D.30569 > 1) goto <D.33593>; else goto <D.33594>;
            <D.33593>:
            printf ("inline failed: %s\n", "gshared");
            <D.33594>:
            goto inline_failure;
            <D.33592>:
            <D.33590>:
            D.30524 = cfg->generic_sharing_context;
            if (D.30524 == 0B) goto <D.33596>; else goto <D.33599>;
            <D.33599>:
            if (cmethod == 0B) goto <D.33596>; else goto <D.33597>;
            <D.33596>:
            iftmp.141 = 1;
            goto <D.33598>;
            <D.33597>:
            iftmp.141 = 0;
            <D.33598>:
            D.33600 = iftmp.141 != 0;
            D.33601 = (long int) D.33600;
            D.33602 = __builtin_expect (D.33601, 0);
            if (D.33602 != 0) goto <D.33603>; else goto <D.33604>;
            <D.33603>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8243, "cfg->generic_sharing_context && cmethod");
            <D.33604>:
            D.33605 = addr != 0B;
            D.33606 = (long int) D.33605;
            D.33607 = __builtin_expect (D.33606, 0);
            if (D.33607 != 0) goto <D.33608>; else goto <D.33609>;
            <D.33608>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8244, "!addr");
            <D.33609>:
            D.32598 = BIT_FIELD_REF <*fsig, 8, 80>;
            D.32599 = D.32598 & 64;
            if (D.32599 != 0) goto <D.33610>; else goto <D.33611>;
            <D.33610>:
            D.30919 = cfg->flags;
            D.31133 = D.30919 | 128;
            cfg->flags = D.31133;
            D.30476 = BIT_FIELD_REF <*cfg, 8, 3424>;
            D.31134 = D.30476 & 64;
            if (D.31134 != 0) goto <D.33612>; else goto <D.33613>;
            <D.33612>:
            D.30476 = BIT_FIELD_REF <*cfg, 8, 3424>;
            D.31134 = D.30476 & 64;
            if (D.31134 != 0) goto <D.33614>; else goto <D.33615>;
            <D.33614>:
            {
              struct MonoInst * inst;

              D.30489 = cfg->mempool;
              inst = mono_mempool_alloc (D.30489, 48);
              inst->data.op[1].const_val = 0;
              D.33616 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.33616;
              inst->prev = 0B;
              D.33617 = inst->prev;
              inst->next = D.33617;
              inst->opcode = 323;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.33618 = inst->sreg3;
              inst->sreg2 = D.33618;
              D.33619 = inst->sreg2;
              inst->sreg1 = D.33619;
              D.30712 = cfg->ip;
              inst->cil_code = D.30712;
              inst->dreg = -1;
              D.31489 = *sp;
              D.31682 = D.31489->dreg;
              inst->sreg1 = D.31682;
              inst->data.op[1].const_val = 0;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.33620>; else goto <D.33621>;
              <D.33620>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = inst;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              inst->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              goto <D.33622>;
              <D.33621>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.33622>:
            }
            {
              struct MonoInst * inst;

              D.30489 = cfg->mempool;
              inst = mono_mempool_alloc (D.30489, 48);
              inst->data.op[1].const_val = 0;
              D.33623 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.33623;
              inst->prev = 0B;
              D.33624 = inst->prev;
              inst->next = D.33624;
              inst->opcode = 455;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.33625 = inst->sreg3;
              inst->sreg2 = D.33625;
              D.33626 = inst->sreg2;
              inst->sreg1 = D.33626;
              D.30712 = cfg->ip;
              inst->cil_code = D.30712;
              inst->data.op[1].p = "NullReferenceException";
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.33627>; else goto <D.33628>;
              <D.33627>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = inst;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              inst->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              goto <D.33629>;
              <D.33628>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.33629>:
            }
            goto <D.33630>;
            <D.33615>:
            <D.33630>:
            goto <D.33631>;
            <D.33613>:
            {
              struct MonoInst * inst;

              D.30489 = cfg->mempool;
              inst = mono_mempool_alloc (D.30489, 48);
              inst->data.op[1].const_val = 0;
              D.33632 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.33632;
              inst->prev = 0B;
              D.33633 = inst->prev;
              inst->next = D.33633;
              inst->opcode = 340;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.33634 = inst->sreg3;
              inst->sreg2 = D.33634;
              D.33635 = inst->sreg2;
              inst->sreg1 = D.33635;
              D.30712 = cfg->ip;
              inst->cil_code = D.30712;
              inst->dreg = -1;
              D.31489 = *sp;
              D.31682 = D.31489->dreg;
              inst->sreg1 = D.31682;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.33636>; else goto <D.33637>;
              <D.33636>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = inst;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              inst->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              goto <D.33638>;
              <D.33637>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.33638>:
            }
            <D.33631>:
            {
              struct MonoInst * inst;

              D.30489 = cfg->mempool;
              inst = mono_mempool_alloc (D.30489, 48);
              inst->data.op[1].const_val = 0;
              D.33639 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.33639;
              inst->prev = 0B;
              D.33640 = inst->prev;
              inst->next = D.33640;
              inst->opcode = 803;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.33641 = inst->sreg3;
              inst->sreg2 = D.33641;
              D.33642 = inst->sreg2;
              inst->sreg1 = D.33642;
              D.30712 = cfg->ip;
              inst->cil_code = D.30712;
              inst->dreg = -1;
              D.31489 = *sp;
              D.31682 = D.31489->dreg;
              inst->sreg1 = D.31682;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.33643>; else goto <D.33644>;
              <D.33643>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = inst;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              inst->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              goto <D.33645>;
              <D.33644>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.33645>:
            }
            <D.33611>:
            addr = emit_get_rgctx_method (cfg, context_used, cmethod, 6);
            ins = mono_emit_calli (cfg, fsig, sp, addr, imt_arg, vtable_arg);
            goto call_end;
            <D.33573>:
            <D.33582>:
            <D.33579>:
            if (addr != 0B) goto <D.33646>; else goto <D.33647>;
            <D.33646>:
            if (call_opcode == 40) goto <D.33648>; else goto <D.33649>;
            <D.33648>:
            D.33650 = context_used == 0;
            D.33651 = (long int) D.33650;
            D.33652 = __builtin_expect (D.33651, 0);
            if (D.33652 != 0) goto <D.33653>; else goto <D.33654>;
            <D.33653>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8264, "context_used");
            <D.33654>:
            goto <D.33655>;
            <D.33649>:
            if (call_opcode == 41) goto <D.33656>; else goto <D.33657>;
            <D.33656>:
            D.33025 = vtable_arg != 0B;
            D.33026 = (long int) D.33025;
            D.33027 = __builtin_expect (D.33026, 0);
            if (D.33027 != 0) goto <D.33658>; else goto <D.33659>;
            <D.33658>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8266, "!vtable_arg");
            <D.33659>:
            goto <D.33660>;
            <D.33657>:
            if (0 != 0) goto <D.33661>; else goto <D.33662>;
            <D.33661>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8270, "cmethod->flags & METHOD_ATTRIBUTE_FINAL || !(cmethod->flags & METHOD_ATTRIBUTE_FINAL)");
            <D.33662>:
            <D.33660>:
            <D.33655>:
            D.30459 = cfg->method;
            if (D.30459 != method) goto <D.33663>; else goto <D.33664>;
            <D.33663>:
            D.30431 = BIT_FIELD_REF <*method, 8, 160>;
            D.30432 = D.30431 & 124;
            if (D.30432 == 0) goto <D.33665>; else goto <D.33666>;
            <D.33665>:
            D.30569 = cfg->verbose_level;
            if (D.30569 > 1) goto <D.33667>; else goto <D.33668>;
            <D.33667>:
            printf ("inline failed: %s\n", "indirect call");
            <D.33668>:
            goto inline_failure;
            <D.33666>:
            <D.33664>:
            D.33671 = addr->opcode;
            D.33672 = D.33671 == 362;
            D.33673 = D.33671 == 736;
            D.33674 = D.33672 | D.33673;
            if (D.33674 != 0) goto <D.33669>; else goto <D.33675>;
            <D.33675>:
            D.33676 = addr->opcode;
            if (D.33676 == 738) goto <D.33669>; else goto <D.33670>;
            <D.33669>:
            {
              int info_type;
              void * info_data;

              D.33677 = addr->opcode;
              D.33678 = D.33677 == 362;
              D.33679 = D.33677 == 736;
              D.33680 = D.33678 | D.33679;
              if (D.33680 != 0) goto <D.33681>; else goto <D.33682>;
              <D.33681>:
              info_type = addr->data.op[1].const_val;
              info_data = addr->data.op[0].p;
              goto <D.33683>;
              <D.33682>:
              D.33684 = addr->data.op[1].src;
              info_type = D.33684->data.op[1].const_val;
              D.33684 = addr->data.op[1].src;
              info_data = D.33684->data.op[0].src;
              <D.33683>:
              info_type.142 = (unsigned int) info_type;
              D.33686 = info_type.142 + 4294967265;
              if (D.33686 <= 1) goto <D.33687>; else goto <D.33688>;
              <D.33687>:
              info_type.143 = (<unnamed type>) info_type;
              ins = mono_emit_abs_call (cfg, info_type.143, info_data, fsig, sp);
              addr->opcode = 316;
              addr->dreg = -1;
              addr->sreg3 = -1;
              D.33690 = addr->sreg3;
              addr->sreg2 = D.33690;
              D.33691 = addr->sreg2;
              addr->sreg1 = D.33691;
              goto call_end;
              <D.33688>:
            }
            <D.33670>:
            ins = mono_emit_calli (cfg, fsig, sp, addr, imt_arg, vtable_arg);
            goto call_end;
            <D.33647>:
            if (array_rank != 0) goto <D.33692>; else goto <D.33693>;
            <D.33692>:
            {
              struct MonoInst * addr;

              {
                size_t __s1_len;
                size_t __s2_len;

                __s2_len = 3;
                if (__s2_len <= 3) goto <D.33695>; else goto <D.33696>;
                <D.33695>:
                {
                  const unsigned char * __s2;
                  int __result;

                  __s2 = cmethod->name;
                  D.33697 = "Set";
                  D.33698 = MEM[(const unsigned char *)D.33697];
                  D.33699 = (int) D.33698;
                  D.33700 = *__s2;
                  D.33701 = (int) D.33700;
                  __result = D.33699 - D.33701;
                  {
                    D.33702 = __s2_len != 0;
                    D.33703 = __result == 0;
                    D.33704 = D.33702 & D.33703;
                    if (D.33704 != 0) goto <D.33705>; else goto <D.33706>;
                    <D.33705>:
                    D.33707 = &MEM[(void *)"Set" + 1B];
                    D.33708 = *D.33707;
                    D.33709 = (int) D.33708;
                    D.33710 = __s2 + 1;
                    D.33711 = *D.33710;
                    D.33712 = (int) D.33711;
                    __result = D.33709 - D.33712;
                    D.33713 = __s2_len > 1;
                    D.33703 = __result == 0;
                    D.33714 = D.33713 & D.33703;
                    if (D.33714 != 0) goto <D.33715>; else goto <D.33716>;
                    <D.33715>:
                    D.33717 = &MEM[(void *)"Set" + 2B];
                    D.33718 = *D.33717;
                    D.33719 = (int) D.33718;
                    D.33720 = __s2 + 2;
                    D.33721 = *D.33720;
                    D.33722 = (int) D.33721;
                    __result = D.33719 - D.33722;
                    D.33723 = __s2_len > 2;
                    D.33703 = __result == 0;
                    D.33724 = D.33723 & D.33703;
                    if (D.33724 != 0) goto <D.33725>; else goto <D.33726>;
                    <D.33725>:
                    D.33727 = &MEM[(void *)"Set" + 3B];
                    D.33728 = *D.33727;
                    D.33729 = (int) D.33728;
                    D.33730 = __s2 + 3;
                    D.33731 = *D.33730;
                    D.33732 = (int) D.33731;
                    __result = D.33729 - D.33732;
                    <D.33726>:
                    <D.33716>:
                    <D.33706>:
                  }
                  D.27567 = __result;
                }
                iftmp.144 = -D.27567;
                goto <D.33733>;
                <D.33696>:
                D.32927 = cmethod->name;
                iftmp.144 = __builtin_strcmp (D.32927, "Set");
                <D.33733>:
                D.27568 = iftmp.144;
              }
              if (D.27568 == 0) goto <D.33734>; else goto <D.33735>;
              <D.33734>:
              {
                struct MonoInst * val;

                D.32314 = fsig->param_count;
                D.32643 = (unsigned int) D.32314;
                D.32644 = D.32643 * 4;
                D.33736 = sp + D.32644;
                val = *D.33736;
                D.33737 = val->type;
                if (D.33737 == 6) goto <D.33738>; else goto <D.33739>;
                <D.33738>:
                {
                  struct MonoInst * iargs[2];

                  try
                    {
                      D.31489 = *sp;
                      iargs[0] = D.31489;
                      iargs[1] = val;
                      mono_emit_jit_icall (cfg, mono_helper_stelem_ref_check, &iargs);
                    }
                  finally
                    {
                      iargs = {CLOBBER};
                    }
                }
                <D.33739>:
                addr = mini_emit_ldelema_ins (cfg, cmethod, sp, ip, 1);
                D.30489 = cfg->mempool;
                ins = mono_mempool_alloc (D.30489, 48);
                ins->data.op[1].const_val = 0;
                D.30708 = ins->data.op[1].const_val;
                ins->data.op[0].const_val = D.30708;
                ins->prev = 0B;
                D.30709 = ins->prev;
                ins->next = D.30709;
                D.32314 = fsig->param_count;
                D.32315 = (int) D.32314;
                D.33740 = D.32315 + -1;
                D.33741 = fsig->params[D.33740];
                D.33742 = mono_type_to_store_membase (cfg, D.33741);
                D.33743 = (short unsigned int) D.33742;
                ins->opcode = D.33743;
                ins->flags = 0;
                ins->type = 0;
                ins->dreg = -1;
                ins->sreg3 = -1;
                D.30710 = ins->sreg3;
                ins->sreg2 = D.30710;
                D.30711 = ins->sreg2;
                ins->sreg1 = D.30711;
                D.30712 = cfg->ip;
                ins->cil_code = D.30712;
                D.33744 = val->dreg;
                ins->sreg1 = D.33744;
                D.33745 = addr->dreg;
                ins->dreg = D.33745;
                ins->data.op[0].const_val = 0;
                D.32314 = fsig->param_count;
                D.32315 = (int) D.32314;
                D.33740 = D.32315 + -1;
                D.33741 = fsig->params[D.33740];
                type_to_eval_stack_type (cfg, D.33741, ins);
                D.32314 = fsig->param_count;
                D.32315 = (int) D.32314;
                D.33740 = D.32315 + -1;
                D.33741 = fsig->params[D.33740];
                D.33746 = mono_class_from_mono_type (D.33741);
                ins->klass = D.33746;
                bblock.127 = cfg->cbb;
                D.30741 = bblock.127->last_ins;
                if (D.30741 != 0B) goto <D.33747>; else goto <D.33748>;
                <D.33747>:
                bblock.127 = cfg->cbb;
                D.30741 = bblock.127->last_ins;
                D.30741->next = ins;
                bblock.127 = cfg->cbb;
                D.30741 = bblock.127->last_ins;
                ins->prev = D.30741;
                bblock.127 = cfg->cbb;
                bblock.127->last_ins = ins;
                goto <D.33749>;
                <D.33748>:
                bblock.127 = cfg->cbb;
                bblock.127 = cfg->cbb;
                bblock.127->last_ins = ins;
                D.30741 = bblock.127->last_ins;
                bblock.127->code = D.30741;
                <D.33749>:
                D.33752 = BIT_FIELD_REF <*cfg, 8, 3416>;
                D.33753 = D.33752 & 16;
                if (D.33753 != 0) goto <D.33754>; else goto <D.33755>;
                <D.33754>:
                D.33737 = val->type;
                if (D.33737 == 6) goto <D.33756>; else goto <D.33757>;
                <D.33756>:
                D.33758 = val->opcode;
                if (D.33758 != 362) goto <D.33750>; else goto <D.33759>;
                <D.33759>:
                D.33760 = val->data.op[0].const_val;
                if (D.33760 != 0) goto <D.33750>; else goto <D.33751>;
                <D.33750>:
                emit_write_barrier (cfg, addr, val);
                <D.33751>:
                <D.33757>:
                <D.33755>:
              }
              goto <D.33761>;
              <D.33735>:
              {
                size_t __s1_len;
                size_t __s2_len;

                __s2_len = 3;
                if (__s2_len <= 3) goto <D.33763>; else goto <D.33764>;
                <D.33763>:
                {
                  const unsigned char * __s2;
                  int __result;

                  __s2 = cmethod->name;
                  D.33765 = "Get";
                  D.33766 = MEM[(const unsigned char *)D.33765];
                  D.33767 = (int) D.33766;
                  D.33768 = *__s2;
                  D.33769 = (int) D.33768;
                  __result = D.33767 - D.33769;
                  {
                    D.33770 = __s2_len != 0;
                    D.33771 = __result == 0;
                    D.33772 = D.33770 & D.33771;
                    if (D.33772 != 0) goto <D.33773>; else goto <D.33774>;
                    <D.33773>:
                    D.33775 = &MEM[(void *)"Get" + 1B];
                    D.33776 = *D.33775;
                    D.33777 = (int) D.33776;
                    D.33778 = __s2 + 1;
                    D.33779 = *D.33778;
                    D.33780 = (int) D.33779;
                    __result = D.33777 - D.33780;
                    D.33781 = __s2_len > 1;
                    D.33771 = __result == 0;
                    D.33782 = D.33781 & D.33771;
                    if (D.33782 != 0) goto <D.33783>; else goto <D.33784>;
                    <D.33783>:
                    D.33785 = &MEM[(void *)"Get" + 2B];
                    D.33786 = *D.33785;
                    D.33787 = (int) D.33786;
                    D.33788 = __s2 + 2;
                    D.33789 = *D.33788;
                    D.33790 = (int) D.33789;
                    __result = D.33787 - D.33790;
                    D.33791 = __s2_len > 2;
                    D.33771 = __result == 0;
                    D.33792 = D.33791 & D.33771;
                    if (D.33792 != 0) goto <D.33793>; else goto <D.33794>;
                    <D.33793>:
                    D.33795 = &MEM[(void *)"Get" + 3B];
                    D.33796 = *D.33795;
                    D.33797 = (int) D.33796;
                    D.33798 = __s2 + 3;
                    D.33799 = *D.33798;
                    D.33800 = (int) D.33799;
                    __result = D.33797 - D.33800;
                    <D.33794>:
                    <D.33784>:
                    <D.33774>:
                  }
                  D.27578 = __result;
                }
                iftmp.145 = -D.27578;
                goto <D.33801>;
                <D.33764>:
                D.32927 = cmethod->name;
                iftmp.145 = __builtin_strcmp (D.32927, "Get");
                <D.33801>:
                D.27579 = iftmp.145;
              }
              if (D.27579 == 0) goto <D.33802>; else goto <D.33803>;
              <D.33802>:
              addr = mini_emit_ldelema_ins (cfg, cmethod, sp, ip, 0);
              D.30489 = cfg->mempool;
              ins = mono_mempool_alloc (D.30489, 48);
              ins->data.op[1].const_val = 0;
              D.30708 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.30708;
              ins->prev = 0B;
              D.30709 = ins->prev;
              ins->next = D.30709;
              D.32478 = fsig->ret;
              D.33804 = mono_type_to_load_membase (cfg, D.32478);
              D.33805 = (short unsigned int) D.33804;
              ins->opcode = D.33805;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.30710 = ins->sreg3;
              ins->sreg2 = D.30710;
              D.30711 = ins->sreg2;
              ins->sreg1 = D.30711;
              D.30712 = cfg->ip;
              ins->cil_code = D.30712;
              ins->dreg = 0;
              D.33745 = addr->dreg;
              ins->sreg1 = D.33745;
              ins->data.op[0].const_val = 0;
              ins->type = 1;
              D.32478 = fsig->ret;
              type_to_eval_stack_type (cfg, D.32478, ins);
              D.31249 = ins->type;
              D.31250 = (<unnamed type>) D.31249;
              D.33806 = alloc_dreg (cfg, D.31250);
              D.33807 = (int) D.33806;
              ins->dreg = D.33807;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.33808>; else goto <D.33809>;
              <D.33808>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = ins;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              ins->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              goto <D.33810>;
              <D.33809>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.33810>:
              goto <D.33811>;
              <D.33803>:
              {
                size_t __s1_len;
                size_t __s2_len;

                __s2_len = 7;
                if (__s2_len <= 3) goto <D.33813>; else goto <D.33814>;
                <D.33813>:
                {
                  const unsigned char * __s2;
                  int __result;

                  __s2 = cmethod->name;
                  D.33815 = "Address";
                  D.33816 = MEM[(const unsigned char *)D.33815];
                  D.33817 = (int) D.33816;
                  D.33818 = *__s2;
                  D.33819 = (int) D.33818;
                  __result = D.33817 - D.33819;
                  {
                    D.33820 = __s2_len != 0;
                    D.33821 = __result == 0;
                    D.33822 = D.33820 & D.33821;
                    if (D.33822 != 0) goto <D.33823>; else goto <D.33824>;
                    <D.33823>:
                    D.33825 = &MEM[(void *)"Address" + 1B];
                    D.33826 = *D.33825;
                    D.33827 = (int) D.33826;
                    D.33828 = __s2 + 1;
                    D.33829 = *D.33828;
                    D.33830 = (int) D.33829;
                    __result = D.33827 - D.33830;
                    D.33831 = __s2_len > 1;
                    D.33821 = __result == 0;
                    D.33832 = D.33831 & D.33821;
                    if (D.33832 != 0) goto <D.33833>; else goto <D.33834>;
                    <D.33833>:
                    D.33835 = &MEM[(void *)"Address" + 2B];
                    D.33836 = *D.33835;
                    D.33837 = (int) D.33836;
                    D.33838 = __s2 + 2;
                    D.33839 = *D.33838;
                    D.33840 = (int) D.33839;
                    __result = D.33837 - D.33840;
                    D.33841 = __s2_len > 2;
                    D.33821 = __result == 0;
                    D.33842 = D.33841 & D.33821;
                    if (D.33842 != 0) goto <D.33843>; else goto <D.33844>;
                    <D.33843>:
                    D.33845 = &MEM[(void *)"Address" + 3B];
                    D.33846 = *D.33845;
                    D.33847 = (int) D.33846;
                    D.33848 = __s2 + 3;
                    D.33849 = *D.33848;
                    D.33850 = (int) D.33849;
                    __result = D.33847 - D.33850;
                    <D.33844>:
                    <D.33834>:
                    <D.33824>:
                  }
                  D.27587 = __result;
                }
                iftmp.146 = -D.27587;
                goto <D.33851>;
                <D.33814>:
                D.32927 = cmethod->name;
                iftmp.146 = __builtin_strcmp (D.32927, "Address");
                <D.33851>:
                D.27588 = iftmp.146;
              }
              if (D.27588 == 0) goto <D.33852>; else goto <D.33853>;
              <D.33852>:
              D.32390 = cmethod->klass;
              D.33854 = D.32390->element_class;
              D.33855 = BIT_FIELD_REF <*D.33854, 8, 160>;
              D.33856 = D.33855 & 8;
              if (D.33856 == 0) goto <D.33857>; else goto <D.33858>;
              <D.33857>:
              if (readonly == 0) goto <D.33859>; else goto <D.33860>;
              <D.33859>:
              D.32390 = cmethod->klass;
              D.31489 = *sp;
              mini_emit_check_array_type (cfg, D.31489, D.32390);
              <D.33860>:
              <D.33858>:
              D.32390 = cmethod->klass;
              if (D.32390 == 0B) goto <D.33861>; else goto <D.33863>;
              <D.33863>:
              D.32390 = cmethod->klass;
              D.32958 = D.32390->exception_type;
              if (D.32958 != 0) goto <D.33861>; else goto <D.33862>;
              <D.33861>:
              D.32390 = cmethod->klass;
              cfg->exception_ptr = D.32390;
              D.33864 = mini_get_debug_options ();
              D.33865 = D.33864->break_on_unverified;
              if (D.33865 != 0) goto <D.33866>; else goto load_error;
              <D.33866>:
              __asm__ __volatile__("int $03");
              <D.33862>:
              readonly = 0;
              addr = mini_emit_ldelema_ins (cfg, cmethod, sp, ip, 0);
              ins = addr;
              goto <D.33867>;
              <D.33853>:
              monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 8334);
              <D.33867>:
              <D.33811>:
              <D.33761>:
              emit_widen = 0;
              goto call_end;
            }
            <D.33693>:
            if (virtual != 0) goto <D.33869>; else goto <D.33870>;
            <D.33869>:
            iftmp.147 = *sp;
            goto <D.33871>;
            <D.33870>:
            iftmp.147 = 0B;
            <D.33871>:
            ins = mini_redirect_call (cfg, cmethod, fsig, sp, iftmp.147);
            if (ins != 0B) goto call_end; else goto <D.33872>;
            <D.33872>:
            if (cmethod != 0B) goto <D.33873>; else goto <D.33874>;
            <D.33873>:
            D.33875 = ins_flag & 4;
            if (D.33875 != 0) goto <D.33876>; else goto <D.33877>;
            <D.33876>:
            if (vtable_arg == 0B) goto <D.33878>; else goto <D.33879>;
            <D.33878>:
            D.30524 = cfg->generic_sharing_context;
            if (D.30524 == 0B) goto <D.33880>; else goto <D.33881>;
            <D.33880>:
            call_opcode.148 = (int) call_opcode;
            D.33883 = is_supported_tail_call (cfg, method, cmethod, fsig, call_opcode.148);
            if (D.33883 != 0) goto <D.33884>; else goto <D.33885>;
            <D.33884>:
            supported_tail_call = 1;
            <D.33885>:
            <D.33881>:
            <D.33879>:
            <D.33877>:
            <D.33874>:
            if (supported_tail_call != 0) goto <D.33886>; else goto <D.33887>;
            <D.33886>:
            {
              struct MonoCallInst * call;

              D.30459 = cfg->method;
              if (D.30459 != method) goto <D.33888>; else goto <D.33889>;
              <D.33888>:
              D.30431 = BIT_FIELD_REF <*method, 8, 160>;
              D.30432 = D.30431 & 124;
              if (D.30432 == 0) goto <D.33890>; else goto <D.33891>;
              <D.33890>:
              D.30569 = cfg->verbose_level;
              if (D.30569 > 1) goto <D.33892>; else goto <D.33893>;
              <D.33892>:
              printf ("inline failed: %s\n", "tail call");
              <D.33893>:
              goto inline_failure;
              <D.33891>:
              <D.33889>:
              if (1 != 0) goto <D.33894>; else goto <D.33895>;
              <D.33894>:
              tail_call = 1;
              goto <D.33896>;
              <D.33895>:
              D.30489 = cfg->mempool;
              call = mono_mempool_alloc0 (D.30489, 108);
              call->inst.opcode = 447;
              call->inst.dreg = -1;
              call->inst.sreg3 = -1;
              D.33897 = call->inst.sreg3;
              call->inst.sreg2 = D.33897;
              D.33898 = call->inst.sreg2;
              call->inst.sreg1 = D.33898;
              D.30712 = cfg->ip;
              call->inst.cil_code = D.30712;
              call->tail_call = 1;
              call->method = cmethod;
              D.33899 = mono_method_signature (cmethod);
              call->signature = D.33899;
              i = 0;
              goto <D.27591>;
              <D.27590>:
              i.76 = (unsigned int) i;
              D.31235 = i.76 * 4;
              D.32284 = arg_array + D.31235;
              D.32285 = *D.32284;
              i.76 = (unsigned int) i;
              D.31235 = i.76 * 4;
              D.32284 = arg_array + D.31235;
              D.32285 = *D.32284;
              D.32286 = D.32285->flags;
              D.32287 = D.32286 | 4;
              D.32285->flags = D.32287;
              D.30489 = cfg->mempool;
              ins = mono_mempool_alloc (D.30489, 48);
              ins->data.op[1].const_val = 0;
              D.30708 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.30708;
              ins->prev = 0B;
              D.30709 = ins->prev;
              ins->next = D.30709;
              ins->opcode = 428;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.30710 = ins->sreg3;
              ins->sreg2 = D.30710;
              D.30711 = ins->sreg2;
              ins->sreg1 = D.30711;
              D.30712 = cfg->ip;
              ins->cil_code = D.30712;
              D.31116 = cfg->arg_types;
              i.76 = (unsigned int) i;
              D.31235 = i.76 * 4;
              D.33900 = D.31116 + D.31235;
              D.33901 = *D.33900;
              D.33902 = mono_type_to_regmove (cfg, D.33901);
              D.33903 = (short unsigned int) D.33902;
              ins->opcode = D.33903;
              D.31106 = cfg->args;
              i.76 = (unsigned int) i;
              D.31235 = i.76 * 4;
              D.33904 = D.31106 + D.31235;
              D.33905 = *D.33904;
              D.33906 = D.33905->klass;
              ins->klass = D.33906;
              i.76 = (unsigned int) i;
              D.31235 = i.76 * 4;
              D.33907 = sp + D.31235;
              D.33908 = *D.33907;
              D.33909 = D.33908->dreg;
              ins->sreg1 = D.33909;
              D.31106 = cfg->args;
              i.76 = (unsigned int) i;
              D.31235 = i.76 * 4;
              D.33904 = D.31106 + D.31235;
              D.33905 = *D.33904;
              D.33910 = D.33905->dreg;
              ins->dreg = D.33910;
              D.31253 = ins->opcode;
              if (D.31253 == 431) goto <D.33911>; else goto <D.33912>;
              <D.33911>:
              D.31116 = cfg->arg_types;
              i.76 = (unsigned int) i;
              D.31235 = i.76 * 4;
              D.33900 = D.31116 + D.31235;
              D.33901 = *D.33900;
              D.33913 = mono_class_from_mono_type (D.33901);
              ins->klass = D.33913;
              <D.33912>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.33914>; else goto <D.33915>;
              <D.33914>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = ins;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              ins->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              goto <D.33916>;
              <D.33915>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.33916>:
              i = i + 1;
              <D.27591>:
              if (i < n) goto <D.27590>; else goto <D.27592>;
              <D.27592>:
              ins = call;
              ins->data.op[0].p = cmethod;
              D.30801 = *arg_array;
              ins->data.op[1].p = D.30801;
              bblock.78 = bblock;
              D.30826 = bblock.78->last_ins;
              if (D.30826 != 0B) goto <D.33917>; else goto <D.33918>;
              <D.33917>:
              bblock.78 = bblock;
              D.30826 = bblock.78->last_ins;
              D.30826->next = ins;
              bblock.78 = bblock;
              D.30826 = bblock.78->last_ins;
              ins->prev = D.30826;
              bblock.78 = bblock;
              bblock.78->last_ins = ins;
              goto <D.33919>;
              <D.33918>:
              bblock.78 = bblock;
              bblock.78 = bblock;
              bblock.78->last_ins = ins;
              D.30826 = bblock.78->last_ins;
              bblock.78->code = D.30826;
              <D.33919>:
              bblock.78 = bblock;
              link_bblock (cfg, bblock.78, end_bblock);
              start_new_bblock = 1;
              D.30620 = cfg->cil_offset_to_bb;
              D.31934 = ip + 5;
              D.32491 = (int) D.31934;
              D.30624 = cfg->cil_start;
              D.30625 = (int) D.30624;
              D.33345 = D.32491 - D.30625;
              D.33346 = (unsigned int) D.33345;
              D.33347 = D.33346 * 4;
              D.33348 = D.30620 + D.33347;
              tblock = *D.33348;
              if (tblock == 0B) goto <D.33920>; else goto <D.33921>;
              <D.33920>:
              D.31934 = ip + 5;
              if (D.31934 >= end) goto <D.33922>; else goto <D.33924>;
              <D.33924>:
              D.33354 = ip + 5;
              D.30636 = header->code;
              if (D.33354 < D.30636) goto <D.33922>; else goto <D.33923>;
              <D.33922>:
              D.30637 = cfg->gsharedvt;
              if (D.30637 != 0) goto <D.33925>; else goto <D.33926>;
              <D.33925>:
              D.30569 = cfg->verbose_level;
              if (D.30569 > 2) goto <D.33927>; else goto <D.33928>;
              <D.33927>:
              printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
              <D.33928>:
              mono_cfg_set_exception (cfg, 11);
              goto exception_exit;
              <D.33926>:
              D.33929 = mini_get_debug_options ();
              D.33930 = D.33929->break_on_unverified;
              if (D.33930 != 0) goto <D.33931>; else goto unverified;
              <D.33931>:
              __asm__ __volatile__("int $03");
              <D.33923>:
              D.30489 = cfg->mempool;
              tblock = mono_mempool_alloc0 (D.30489, 172);
              D.30597 = cfg->num_bblocks;
              D.33932 = D.30597;
              D.33933 = D.33932 + 1;
              cfg->num_bblocks = D.33933;
              D.33934 = (int) D.33932;
              tblock->block_num = D.33934;
              D.31934 = ip + 5;
              tblock->cil_code = D.31934;
              D.30685 = tblock->cil_code;
              if (D.30685 != 0B) goto <D.33935>; else goto <D.33936>;
              <D.33935>:
              D.30620 = cfg->cil_offset_to_bb;
              D.30685 = tblock->cil_code;
              D.30688 = (int) D.30685;
              D.30624 = cfg->cil_start;
              D.30625 = (int) D.30624;
              D.30689 = D.30688 - D.30625;
              D.30690 = (unsigned int) D.30689;
              D.30691 = D.30690 * 4;
              D.30692 = D.30620 + D.30691;
              *D.30692 = tblock;
              <D.33936>:
              D.30656 = cfg->real_offset;
              tblock->real_offset = D.30656;
              <D.33921>:
              bblock.78 = bblock;
              if (tblock == bblock.78) goto <D.33937>; else goto <D.33939>;
              <D.33939>:
              D.33940 = tblock->in_count;
              if (D.33940 == 0) goto <D.33937>; else goto <D.33938>;
              <D.33937>:
              skip_ret = 1;
              <D.33938>:
              push_res = 0;
              goto call_end;
              <D.33896>:
            }
            <D.33887>:
            D.30459 = cfg->method;
            D.32440 = BIT_FIELD_REF <*D.30459, 8, 160>;
            D.32441 = D.32440 & 124;
            if (D.32441 == 64) goto <D.33941>; else goto <D.33942>;
            <D.33941>:
            {
              struct MonoMethod * orig;

              D.30459 = cfg->method;
              orig = mono_marshal_method_from_wrapper (D.30459);
              if (cmethod == orig) goto <D.33943>; else goto <D.33945>;
              <D.33945>:
              D.33155 = BIT_FIELD_REF <*cmethod, 8, 168>;
              D.33156 = D.33155 & 16;
              if (D.33156 != 0) goto <D.33946>; else goto <D.33944>;
              <D.33946>:
              D.33947 = mono_method_get_declaring_generic_method (cmethod);
              if (D.33947 == orig) goto <D.33943>; else goto <D.33944>;
              <D.33943>:
              cmethod = mono_marshal_get_synchronized_inner_wrapper (cmethod);
              <D.33944>:
            }
            <D.33942>:
            D.30459 = cfg->method;
            if (D.30459 != method) goto <D.33948>; else goto <D.33949>;
            <D.33948>:
            D.30431 = BIT_FIELD_REF <*method, 8, 160>;
            D.30432 = D.30431 & 124;
            if (D.30432 == 0) goto <D.33950>; else goto <D.33951>;
            <D.33950>:
            D.30569 = cfg->verbose_level;
            if (D.30569 > 1) goto <D.33952>; else goto <D.33953>;
            <D.33952>:
            printf ("inline failed: %s\n", "call");
            <D.33953>:
            goto inline_failure;
            <D.33951>:
            <D.33949>:
            if (virtual != 0) goto <D.33955>; else goto <D.33956>;
            <D.33955>:
            iftmp.149 = *sp;
            goto <D.33957>;
            <D.33956>:
            iftmp.149 = 0B;
            <D.33957>:
            ins = mono_emit_method_call_full (cfg, cmethod, fsig, tail_call, sp, iftmp.149, imt_arg, vtable_arg);
            if (tail_call != 0) goto <D.33958>; else goto <D.33959>;
            <D.33958>:
            bblock.78 = bblock;
            link_bblock (cfg, bblock.78, end_bblock);
            start_new_bblock = 1;
            D.30620 = cfg->cil_offset_to_bb;
            D.31934 = ip + 5;
            D.32491 = (int) D.31934;
            D.30624 = cfg->cil_start;
            D.30625 = (int) D.30624;
            D.33345 = D.32491 - D.30625;
            D.33346 = (unsigned int) D.33345;
            D.33347 = D.33346 * 4;
            D.33348 = D.30620 + D.33347;
            tblock = *D.33348;
            if (tblock == 0B) goto <D.33960>; else goto <D.33961>;
            <D.33960>:
            D.31934 = ip + 5;
            if (D.31934 >= end) goto <D.33962>; else goto <D.33964>;
            <D.33964>:
            D.33354 = ip + 5;
            D.30636 = header->code;
            if (D.33354 < D.30636) goto <D.33962>; else goto <D.33963>;
            <D.33962>:
            D.30637 = cfg->gsharedvt;
            if (D.30637 != 0) goto <D.33965>; else goto <D.33966>;
            <D.33965>:
            D.30569 = cfg->verbose_level;
            if (D.30569 > 2) goto <D.33967>; else goto <D.33968>;
            <D.33967>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.33968>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.33966>:
            D.33969 = mini_get_debug_options ();
            D.33970 = D.33969->break_on_unverified;
            if (D.33970 != 0) goto <D.33971>; else goto unverified;
            <D.33971>:
            __asm__ __volatile__("int $03");
            <D.33963>:
            D.30489 = cfg->mempool;
            tblock = mono_mempool_alloc0 (D.30489, 172);
            D.30597 = cfg->num_bblocks;
            D.33972 = D.30597;
            D.33973 = D.33972 + 1;
            cfg->num_bblocks = D.33973;
            D.33974 = (int) D.33972;
            tblock->block_num = D.33974;
            D.31934 = ip + 5;
            tblock->cil_code = D.31934;
            D.30685 = tblock->cil_code;
            if (D.30685 != 0B) goto <D.33975>; else goto <D.33976>;
            <D.33975>:
            D.30620 = cfg->cil_offset_to_bb;
            D.30685 = tblock->cil_code;
            D.30688 = (int) D.30685;
            D.30624 = cfg->cil_start;
            D.30625 = (int) D.30624;
            D.30689 = D.30688 - D.30625;
            D.30690 = (unsigned int) D.30689;
            D.30691 = D.30690 * 4;
            D.30692 = D.30620 + D.30691;
            *D.30692 = tblock;
            <D.33976>:
            D.30656 = cfg->real_offset;
            tblock->real_offset = D.30656;
            <D.33961>:
            bblock.78 = bblock;
            if (tblock == bblock.78) goto <D.33977>; else goto <D.33979>;
            <D.33979>:
            D.33940 = tblock->in_count;
            if (D.33940 == 0) goto <D.33977>; else goto <D.33978>;
            <D.33977>:
            skip_ret = 1;
            <D.33978>:
            push_res = 0;
            <D.33959>:
            call_end:
            if (push_res != 0) goto <D.33980>; else goto <D.33981>;
            <D.33980>:
            D.32478 = fsig->ret;
            D.33982 = mono_type_is_void (D.32478);
            if (D.33982 == 0) goto <D.33983>; else goto <D.33984>;
            <D.33983>:
            D.33985 = ins == 0B;
            D.33986 = (long int) D.33985;
            D.33987 = __builtin_expect (D.33986, 0);
            if (D.33987 != 0) goto <D.33988>; else goto <D.33989>;
            <D.33988>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8442, "ins");
            <D.33989>:
            if (emit_widen != 0) goto <D.33990>; else goto <D.33991>;
            <D.33990>:
            sp.150 = sp;
            sp = sp.150 + 4;
            D.33993 = mono_emit_widen_call_res (cfg, ins, fsig);
            *sp.150 = D.33993;
            goto <D.33994>;
            <D.33991>:
            sp.151 = sp;
            sp = sp.151 + 4;
            *sp.151 = ins;
            <D.33994>:
            <D.33984>:
            <D.33981>:
            if (keep_this_alive != 0B) goto <D.33996>; else goto <D.33997>;
            <D.33996>:
            {
              struct MonoInst * dummy_use;

              D.30489 = cfg->mempool;
              dummy_use = mono_mempool_alloc (D.30489, 48);
              dummy_use->data.op[1].const_val = 0;
              D.33998 = dummy_use->data.op[1].const_val;
              dummy_use->data.op[0].const_val = D.33998;
              dummy_use->prev = 0B;
              D.33999 = dummy_use->prev;
              dummy_use->next = D.33999;
              dummy_use->opcode = 800;
              dummy_use->flags = 0;
              dummy_use->type = 0;
              dummy_use->dreg = -1;
              dummy_use->sreg3 = -1;
              D.34000 = dummy_use->sreg3;
              dummy_use->sreg2 = D.34000;
              D.34001 = dummy_use->sreg2;
              dummy_use->sreg1 = D.34001;
              D.30712 = cfg->ip;
              dummy_use->cil_code = D.30712;
              D.34002 = keep_this_alive->dreg;
              dummy_use->sreg1 = D.34002;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.34003>; else goto <D.34004>;
              <D.34003>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = dummy_use;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              dummy_use->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = dummy_use;
              goto <D.34005>;
              <D.34004>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = dummy_use;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.34005>:
            }
            <D.33997>:
            D.31057 = cfg->exception_type;
            if (D.31057 != 0) goto exception_exit; else goto <D.34006>;
            <D.34006>:
            ip = ip + 5;
            if (skip_ret != 0) goto <D.34007>; else goto <D.34008>;
            <D.34007>:
            D.31371 = *ip;
            D.34009 = D.31371 != 42;
            D.34010 = (long int) D.34009;
            D.34011 = __builtin_expect (D.34010, 0);
            if (D.34011 != 0) goto <D.34012>; else goto <D.34013>;
            <D.34012>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8460, "*ip == CEE_RET");
            <D.34013>:
            ip = ip + 1;
            <D.34008>:
            ins_flag = 0;
            constrained_call = 0B;
            if (need_seq_point != 0) goto <D.34014>; else goto <D.34015>;
            <D.34014>:
            emit_seq_point (cfg, method, ip, 0, 1);
            <D.34015>:
            goto <D.27380>;
          }
        finally
          {
            pass_vtable = {CLOBBER};
            pass_mrgctx = {CLOBBER};
          }
      }
      <D.27595>:
      D.30459 = cfg->method;
      if (D.30459 != method) goto <D.34016>; else goto <D.34017>;
      <D.34016>:
      if (return_var != 0B) goto <D.34018>; else goto <D.34019>;
      <D.34018>:
      bblock.127 = cfg->cbb;
      D.34020 = bblock.127->in_count;
      if (D.34020 != 0) goto <D.34021>; else goto <D.34022>;
      <D.34021>:
      {
        struct MonoType * ret_type;
        struct MonoInst * store;

        D.34023 = mono_method_signature (method);
        ret_type = D.34023->ret;
        sp.85 = (int) sp;
        stack_start.86 = (int) stack_start;
        D.31274 = sp.85 - stack_start.86;
        if (D.31274 <= 3) goto <D.34024>; else goto <D.34025>;
        <D.34024>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.34026>; else goto <D.34027>;
        <D.34026>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.34028>; else goto <D.34029>;
        <D.34028>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34029>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34027>:
        D.34030 = mini_get_debug_options ();
        D.34031 = D.34030->break_on_unverified;
        if (D.34031 != 0) goto <D.34032>; else goto unverified;
        <D.34032>:
        __asm__ __volatile__("int $03");
        <D.34025>:
        sp = sp + 4294967292;
        D.30431 = BIT_FIELD_REF <*method, 8, 160>;
        D.34033 = D.30431 & 124;
        D.34034 = D.34033 == 68;
        D.34035 = D.34033 == 0;
        D.34036 = D.34034 | D.34035;
        if (D.34036 != 0) goto <D.34037>; else goto <D.34038>;
        <D.34037>:
        D.31489 = *sp;
        D.34039 = target_type_is_incompatible (cfg, ret_type, D.31489);
        if (D.34039 != 0) goto <D.34040>; else goto <D.34041>;
        <D.34040>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.34042>; else goto <D.34043>;
        <D.34042>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.34044>; else goto <D.34045>;
        <D.34044>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34045>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34043>:
        D.34046 = mini_get_debug_options ();
        D.34047 = D.34046->break_on_unverified;
        if (D.34047 != 0) goto <D.34048>; else goto unverified;
        <D.34048>:
        __asm__ __volatile__("int $03");
        <D.34041>:
        <D.34038>:
        D.30489 = cfg->mempool;
        store = mono_mempool_alloc (D.30489, 48);
        store->data.op[1].const_val = 0;
        D.34049 = store->data.op[1].const_val;
        store->data.op[0].const_val = D.34049;
        store->prev = 0B;
        D.34050 = store->prev;
        store->next = D.34050;
        store->opcode = 428;
        store->flags = 0;
        store->type = 0;
        store->dreg = -1;
        store->sreg3 = -1;
        D.34051 = store->sreg3;
        store->sreg2 = D.34051;
        D.34052 = store->sreg2;
        store->sreg1 = D.34052;
        D.30712 = cfg->ip;
        store->cil_code = D.30712;
        D.31239 = cfg->varinfo;
        D.34053 = return_var->data.op[0].const_val;
        D.34054 = (unsigned int) D.34053;
        D.34055 = D.34054 * 4;
        D.34056 = D.31239 + D.34055;
        D.34057 = *D.34056;
        D.34058 = D.34057->data.op[1].vtype;
        D.34059 = mono_type_to_regmove (cfg, D.34058);
        D.34060 = (short unsigned int) D.34059;
        store->opcode = D.34060;
        D.31239 = cfg->varinfo;
        D.34053 = return_var->data.op[0].const_val;
        D.34054 = (unsigned int) D.34053;
        D.34055 = D.34054 * 4;
        D.34056 = D.31239 + D.34055;
        D.34057 = *D.34056;
        D.34061 = D.34057->klass;
        store->klass = D.34061;
        D.31489 = *sp;
        D.31682 = D.31489->dreg;
        store->sreg1 = D.31682;
        D.31239 = cfg->varinfo;
        D.34053 = return_var->data.op[0].const_val;
        D.34054 = (unsigned int) D.34053;
        D.34055 = D.34054 * 4;
        D.34056 = D.31239 + D.34055;
        D.34057 = *D.34056;
        D.34062 = D.34057->dreg;
        store->dreg = D.34062;
        D.34063 = store->opcode;
        if (D.34063 == 431) goto <D.34064>; else goto <D.34065>;
        <D.34064>:
        D.31239 = cfg->varinfo;
        D.34053 = return_var->data.op[0].const_val;
        D.34054 = (unsigned int) D.34053;
        D.34055 = D.34054 * 4;
        D.34056 = D.31239 + D.34055;
        D.34057 = *D.34056;
        D.34058 = D.34057->data.op[1].vtype;
        D.34066 = mono_class_from_mono_type (D.34058);
        store->klass = D.34066;
        <D.34065>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.34067>; else goto <D.34068>;
        <D.34067>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = store;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        store->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = store;
        goto <D.34069>;
        <D.34068>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = store;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.34069>:
        cfg->ret_var_set = 1;
      }
      <D.34022>:
      <D.34019>:
      goto <D.34070>;
      <D.34017>:
      D.34071 = cfg->lmf_var;
      if (D.34071 != 0B) goto <D.34072>; else goto <D.34073>;
      <D.34072>:
      bblock.127 = cfg->cbb;
      D.34020 = bblock.127->in_count;
      if (D.34020 != 0) goto <D.34074>; else goto <D.34075>;
      <D.34074>:
      emit_pop_lmf (cfg);
      <D.34075>:
      <D.34073>:
      D.34076 = cfg->ret;
      if (D.34076 != 0B) goto <D.34077>; else goto <D.34078>;
      <D.34077>:
      {
        struct MonoType * ret_type;

        D.34079 = mono_method_signature (method);
        D.34080 = D.34079->ret;
        ret_type = mini_replace_type (D.34080);
        D.31373 = seq_points != 0;
        D.31374 = sym_seq_points == 0;
        D.31375 = D.31373 & D.31374;
        if (D.31375 != 0) goto <D.34081>; else goto <D.34082>;
        <D.34081>:
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        ins->opcode = 341;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        ip.83 = (int) ip;
        D.30636 = header->code;
        D.31196 = (int) D.30636;
        D.31197 = ip.83 - D.31196;
        ins->data.op[1].const_val = D.31197;
        ins->flags = 1;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.34083>; else goto <D.34084>;
        <D.34083>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = ins;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        ins->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        goto <D.34085>;
        <D.34084>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.34085>:
        <D.34082>:
        D.34086 = return_var != 0B;
        D.34087 = (long int) D.34086;
        D.34088 = __builtin_expect (D.34087, 0);
        if (D.34088 != 0) goto <D.34089>; else goto <D.34090>;
        <D.34089>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8511, "!return_var");
        <D.34090>:
        sp.85 = (int) sp;
        stack_start.86 = (int) stack_start;
        D.31274 = sp.85 - stack_start.86;
        if (D.31274 <= 3) goto <D.34091>; else goto <D.34092>;
        <D.34091>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.34093>; else goto <D.34094>;
        <D.34093>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.34095>; else goto <D.34096>;
        <D.34095>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34096>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34094>:
        D.34097 = mini_get_debug_options ();
        D.34098 = D.34097->break_on_unverified;
        if (D.34098 != 0) goto <D.34099>; else goto unverified;
        <D.34099>:
        __asm__ __volatile__("int $03");
        <D.34092>:
        sp = sp + 4294967292;
        D.30431 = BIT_FIELD_REF <*method, 8, 160>;
        D.34100 = D.30431 & 124;
        D.34101 = D.34100 == 68;
        D.34102 = D.34100 == 0;
        D.34103 = D.34101 | D.34102;
        if (D.34103 != 0) goto <D.34104>; else goto <D.34105>;
        <D.34104>:
        D.31489 = *sp;
        D.34106 = target_type_is_incompatible (cfg, ret_type, D.31489);
        if (D.34106 != 0) goto <D.34107>; else goto <D.34108>;
        <D.34107>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.34109>; else goto <D.34110>;
        <D.34109>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.34111>; else goto <D.34112>;
        <D.34111>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34112>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34110>:
        D.34113 = mini_get_debug_options ();
        D.34114 = D.34113->break_on_unverified;
        if (D.34114 != 0) goto <D.34115>; else goto unverified;
        <D.34115>:
        __asm__ __volatile__("int $03");
        <D.34108>:
        <D.34105>:
        D.34116 = mini_type_to_stind (cfg, ret_type);
        if (D.34116 == 129) goto <D.34117>; else goto <D.34118>;
        <D.34117>:
        {
          struct MonoInst * ret_addr;

          D.34119 = cfg->vret_addr;
          if (D.34119 == 0B) goto <D.34120>; else goto <D.34121>;
          <D.34120>:
          {
            struct MonoInst * ins;

            D.30489 = cfg->mempool;
            ins = mono_mempool_alloc (D.30489, 48);
            ins->data.op[1].const_val = 0;
            D.34122 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.34122;
            ins->prev = 0B;
            D.34123 = ins->prev;
            ins->next = D.34123;
            ins->opcode = 428;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.34124 = ins->sreg3;
            ins->sreg2 = D.34124;
            D.34125 = ins->sreg2;
            ins->sreg1 = D.34125;
            D.30712 = cfg->ip;
            ins->cil_code = D.30712;
            D.34126 = mono_type_to_regmove (cfg, ret_type);
            D.34127 = (short unsigned int) D.34126;
            ins->opcode = D.34127;
            D.34076 = cfg->ret;
            D.34128 = D.34076->klass;
            ins->klass = D.34128;
            D.31489 = *sp;
            D.31682 = D.31489->dreg;
            ins->sreg1 = D.31682;
            D.34076 = cfg->ret;
            D.34129 = D.34076->dreg;
            ins->dreg = D.34129;
            D.34130 = ins->opcode;
            if (D.34130 == 431) goto <D.34131>; else goto <D.34132>;
            <D.34131>:
            D.34133 = mono_class_from_mono_type (ret_type);
            ins->klass = D.34133;
            <D.34132>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.34134>; else goto <D.34135>;
            <D.34134>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = ins;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            ins->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = ins;
            goto <D.34136>;
            <D.34135>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = ins;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.34136>:
          }
          goto <D.34137>;
          <D.34121>:
          D.30489 = cfg->mempool;
          ret_addr = mono_mempool_alloc (D.30489, 48);
          ret_addr->data.op[1].const_val = 0;
          D.34138 = ret_addr->data.op[1].const_val;
          ret_addr->data.op[0].const_val = D.34138;
          ret_addr->prev = 0B;
          D.34139 = ret_addr->prev;
          ret_addr->next = D.34139;
          ret_addr->opcode = 428;
          ret_addr->flags = 0;
          ret_addr->type = 0;
          ret_addr->dreg = -1;
          ret_addr->sreg3 = -1;
          D.34140 = ret_addr->sreg3;
          ret_addr->sreg2 = D.34140;
          D.34141 = ret_addr->sreg2;
          ret_addr->sreg1 = D.34141;
          D.30712 = cfg->ip;
          ret_addr->cil_code = D.30712;
          ret_addr->type = 5;
          D.34076 = cfg->ret;
          D.34128 = D.34076->klass;
          ret_addr->klass = D.34128;
          D.34119 = cfg->vret_addr;
          D.34142 = D.34119->dreg;
          ret_addr->sreg1 = D.34142;
          D.34143 = ret_addr->type;
          D.34144 = (<unnamed type>) D.34143;
          D.34145 = alloc_dreg (cfg, D.34144);
          D.34146 = (int) D.34145;
          ret_addr->dreg = D.34146;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.34147>; else goto <D.34148>;
          <D.34147>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = ret_addr;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          ret_addr->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = ret_addr;
          goto <D.34149>;
          <D.34148>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = ret_addr;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.34149>:
          D.30489 = cfg->mempool;
          ins = mono_mempool_alloc (D.30489, 48);
          ins->data.op[1].const_val = 0;
          D.30708 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.30708;
          ins->prev = 0B;
          D.30709 = ins->prev;
          ins->next = D.30709;
          ins->opcode = 390;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.30710 = ins->sreg3;
          ins->sreg2 = D.30710;
          D.30711 = ins->sreg2;
          ins->sreg1 = D.30711;
          D.30712 = cfg->ip;
          ins->cil_code = D.30712;
          D.31489 = *sp;
          D.31682 = D.31489->dreg;
          ins->sreg1 = D.31682;
          D.34150 = ret_addr->dreg;
          ins->dreg = D.34150;
          ins->data.op[0].const_val = 0;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.34151>; else goto <D.34152>;
          <D.34151>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = ins;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          ins->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = ins;
          goto <D.34153>;
          <D.34152>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = ins;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.34153>:
          D.34154 = mono_class_from_mono_type (ret_type);
          ins->klass = D.34154;
          <D.34137>:
        }
        goto <D.34155>;
        <D.34118>:
        D.31489 = *sp;
        mono_arch_emit_setret (cfg, method, D.31489);
        <D.34155>:
      }
      <D.34078>:
      <D.34070>:
      if (sp != stack_start) goto <D.34156>; else goto <D.34157>;
      <D.34156>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.34158>; else goto <D.34159>;
      <D.34158>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.34160>; else goto <D.34161>;
      <D.34160>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34161>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34159>:
      D.34162 = mini_get_debug_options ();
      D.34163 = D.34162->break_on_unverified;
      if (D.34163 != 0) goto <D.34164>; else goto unverified;
      <D.34164>:
      __asm__ __volatile__("int $03");
      <D.34157>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 446;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      ip = ip + 1;
      ins->data.op[0].target_block = end_bblock;
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      if (D.30826 != 0B) goto <D.34165>; else goto <D.34166>;
      <D.34165>:
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      D.30826->next = ins;
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      ins->prev = D.30826;
      bblock.78 = bblock;
      bblock.78->last_ins = ins;
      goto <D.34167>;
      <D.34166>:
      bblock.78 = bblock;
      bblock.78 = bblock;
      bblock.78->last_ins = ins;
      D.30826 = bblock.78->last_ins;
      bblock.78->code = D.30826;
      <D.34167>:
      bblock.78 = bblock;
      link_bblock (cfg, bblock.78, end_bblock);
      start_new_bblock = 1;
      goto <D.27380>;
      <D.27601>:
      D.31500 = ip + 2;
      if (D.31500 > end) goto <D.34168>; else goto <D.34169>;
      <D.34168>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.34170>; else goto <D.34171>;
      <D.34170>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.34172>; else goto <D.34173>;
      <D.34172>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34173>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34171>:
      D.34174 = mini_get_debug_options ();
      D.34175 = D.34174->break_on_unverified;
      if (D.34175 != 0) goto <D.34176>; else goto unverified;
      <D.34176>:
      __asm__ __volatile__("int $03");
      <D.34169>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 446;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      ip = ip + 1;
      D.31371 = *ip;
      D.34177 = (signed char) D.31371;
      D.34178 = (sizetype) D.34177;
      D.34179 = D.34178 + 1;
      target = ip + D.34179;
      ip = ip + 1;
      D.30620 = cfg->cil_offset_to_bb;
      target.152 = (int) target;
      D.30624 = cfg->cil_start;
      D.30625 = (int) D.30624;
      D.34181 = target.152 - D.30625;
      D.34182 = (unsigned int) D.34181;
      D.34183 = D.34182 * 4;
      D.34184 = D.30620 + D.34183;
      tblock = *D.34184;
      if (tblock == 0B) goto <D.34185>; else goto <D.34186>;
      <D.34185>:
      if (target >= end) goto <D.34187>; else goto <D.34189>;
      <D.34189>:
      D.30636 = header->code;
      if (D.30636 > target) goto <D.34187>; else goto <D.34188>;
      <D.34187>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.34190>; else goto <D.34191>;
      <D.34190>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.34192>; else goto <D.34193>;
      <D.34192>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34193>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34191>:
      D.34194 = mini_get_debug_options ();
      D.34195 = D.34194->break_on_unverified;
      if (D.34195 != 0) goto <D.34196>; else goto unverified;
      <D.34196>:
      __asm__ __volatile__("int $03");
      <D.34188>:
      D.30489 = cfg->mempool;
      tblock = mono_mempool_alloc0 (D.30489, 172);
      D.30597 = cfg->num_bblocks;
      D.34197 = D.30597;
      D.34198 = D.34197 + 1;
      cfg->num_bblocks = D.34198;
      D.34199 = (int) D.34197;
      tblock->block_num = D.34199;
      tblock->cil_code = target;
      D.30685 = tblock->cil_code;
      if (D.30685 != 0B) goto <D.34200>; else goto <D.34201>;
      <D.34200>:
      D.30620 = cfg->cil_offset_to_bb;
      D.30685 = tblock->cil_code;
      D.30688 = (int) D.30685;
      D.30624 = cfg->cil_start;
      D.30625 = (int) D.30624;
      D.30689 = D.30688 - D.30625;
      D.30690 = (unsigned int) D.30689;
      D.30691 = D.30690 * 4;
      D.30692 = D.30620 + D.30691;
      *D.30692 = tblock;
      <D.34201>:
      D.30656 = cfg->real_offset;
      tblock->real_offset = D.30656;
      <D.34186>:
      bblock.78 = bblock;
      link_bblock (cfg, bblock.78, tblock);
      ins->data.op[0].target_block = tblock;
      if (sp != stack_start) goto <D.34202>; else goto <D.34203>;
      <D.34202>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      D.31275 = D.31274 /[ex] 4;
      handle_stack_args (cfg, stack_start, D.31275);
      sp = stack_start;
      D.31276 = BIT_FIELD_REF <*cfg, 8, 3400>;
      D.31277 = D.31276 & 32;
      if (D.31277 != 0) goto <D.34204>; else goto <D.34205>;
      <D.34204>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.34206>; else goto <D.34207>;
      <D.34206>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.34208>; else goto <D.34209>;
      <D.34208>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34209>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34207>:
      D.34210 = mini_get_debug_options ();
      D.34211 = D.34210->break_on_unverified;
      if (D.34211 != 0) goto <D.34212>; else goto unverified;
      <D.34212>:
      __asm__ __volatile__("int $03");
      <D.34205>:
      <D.34203>:
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      if (D.30826 != 0B) goto <D.34213>; else goto <D.34214>;
      <D.34213>:
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      D.30826->next = ins;
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      ins->prev = D.30826;
      bblock.78 = bblock;
      bblock.78->last_ins = ins;
      goto <D.34215>;
      <D.34214>:
      bblock.78 = bblock;
      bblock.78 = bblock;
      bblock.78->last_ins = ins;
      D.30826 = bblock.78->last_ins;
      bblock.78->code = D.30826;
      <D.34215>:
      start_new_bblock = 1;
      inline_costs = inline_costs + 10;
      goto <D.27380>;
      <D.27602>:
      <D.27603>:
      <D.27604>:
      <D.27605>:
      <D.27606>:
      <D.27607>:
      <D.27608>:
      <D.27609>:
      <D.27610>:
      <D.27611>:
      D.31500 = ip + 2;
      if (D.31500 > end) goto <D.34216>; else goto <D.34217>;
      <D.34216>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.34218>; else goto <D.34219>;
      <D.34218>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.34220>; else goto <D.34221>;
      <D.34220>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34221>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34219>:
      D.34222 = mini_get_debug_options ();
      D.34223 = D.34222->break_on_unverified;
      if (D.34223 != 0) goto <D.34224>; else goto unverified;
      <D.34224>:
      __asm__ __volatile__("int $03");
      <D.34217>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      if (D.31274 <= 7) goto <D.34225>; else goto <D.34226>;
      <D.34225>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.34227>; else goto <D.34228>;
      <D.34227>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.34229>; else goto <D.34230>;
      <D.34229>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34230>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34228>:
      D.34231 = mini_get_debug_options ();
      D.34232 = D.34231->break_on_unverified;
      if (D.34232 != 0) goto <D.34233>; else goto unverified;
      <D.34233>:
      __asm__ __volatile__("int $03");
      <D.34226>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      D.31371 = *ip;
      D.34234 = (short unsigned int) D.31371;
      D.34235 = D.34234 + 13;
      ins->opcode = D.34235;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      ip = ip + 1;
      D.31926 = MEM[(signed char *)ip];
      D.34236 = (sizetype) D.31926;
      D.34237 = D.34236 + 1;
      target = ip + D.34237;
      ip = ip + 1;
      {
        struct MonoInst * cmp;

        sp = sp + 4294967288;
        D.30489 = cfg->mempool;
        cmp = mono_mempool_alloc (D.30489, 48);
        cmp->data.op[1].const_val = 0;
        D.34238 = cmp->data.op[1].const_val;
        cmp->data.op[0].const_val = D.34238;
        cmp->prev = 0B;
        D.34239 = cmp->prev;
        cmp->next = D.34239;
        cmp->opcode = 322;
        cmp->flags = 0;
        cmp->type = 0;
        cmp->dreg = -1;
        cmp->sreg3 = -1;
        D.34240 = cmp->sreg3;
        cmp->sreg2 = D.34240;
        D.34241 = cmp->sreg2;
        cmp->sreg1 = D.34241;
        D.30712 = cfg->ip;
        cmp->cil_code = D.30712;
        D.31489 = *sp;
        D.31682 = D.31489->dreg;
        cmp->sreg1 = D.31682;
        D.32655 = sp + 4;
        D.32656 = *D.32655;
        D.32657 = D.32656->dreg;
        cmp->sreg2 = D.32657;
        D.32655 = sp + 4;
        D.32656 = *D.32655;
        D.31489 = *sp;
        type_from_op (cmp, D.31489, D.32656);
        D.34242 = cmp->type;
        if (D.34242 == 0) goto <D.34243>; else goto <D.34244>;
        <D.34243>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.34245>; else goto <D.34246>;
        <D.34245>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.34247>; else goto <D.34248>;
        <D.34247>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34248>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34246>:
        D.34249 = mini_get_debug_options ();
        D.34250 = D.34249->break_on_unverified;
        if (D.34250 != 0) goto <D.34251>; else goto unverified;
        <D.34251>:
        __asm__ __volatile__("int $03");
        <D.34244>:
        D.32655 = sp + 4;
        D.32656 = *D.32655;
        D.31489 = *sp;
        type_from_op (ins, D.31489, D.32656);
        D.30489 = cfg->mempool;
        D.34252 = mono_mempool_alloc (D.30489, 8);
        ins->data.op[1].many_blocks = D.34252;
        D.30620 = cfg->cil_offset_to_bb;
        target.152 = (int) target;
        D.30624 = cfg->cil_start;
        D.30625 = (int) D.30624;
        D.34181 = target.152 - D.30625;
        D.34182 = (unsigned int) D.34181;
        D.34183 = D.34182 * 4;
        D.34184 = D.30620 + D.34183;
        tblock = *D.34184;
        if (tblock == 0B) goto <D.34253>; else goto <D.34254>;
        <D.34253>:
        if (target >= end) goto <D.34255>; else goto <D.34257>;
        <D.34257>:
        D.30636 = header->code;
        if (D.30636 > target) goto <D.34255>; else goto <D.34256>;
        <D.34255>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.34258>; else goto <D.34259>;
        <D.34258>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.34260>; else goto <D.34261>;
        <D.34260>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34261>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34259>:
        D.34262 = mini_get_debug_options ();
        D.34263 = D.34262->break_on_unverified;
        if (D.34263 != 0) goto <D.34264>; else goto unverified;
        <D.34264>:
        __asm__ __volatile__("int $03");
        <D.34256>:
        D.30489 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.30489, 172);
        D.30597 = cfg->num_bblocks;
        D.34265 = D.30597;
        D.34266 = D.34265 + 1;
        cfg->num_bblocks = D.34266;
        D.34267 = (int) D.34265;
        tblock->block_num = D.34267;
        tblock->cil_code = target;
        D.30685 = tblock->cil_code;
        if (D.30685 != 0B) goto <D.34268>; else goto <D.34269>;
        <D.34268>:
        D.30620 = cfg->cil_offset_to_bb;
        D.30685 = tblock->cil_code;
        D.30688 = (int) D.30685;
        D.30624 = cfg->cil_start;
        D.30625 = (int) D.30624;
        D.30689 = D.30688 - D.30625;
        D.30690 = (unsigned int) D.30689;
        D.30691 = D.30690 * 4;
        D.30692 = D.30620 + D.30691;
        *D.30692 = tblock;
        <D.34269>:
        D.30656 = cfg->real_offset;
        tblock->real_offset = D.30656;
        <D.34254>:
        bblock.78 = bblock;
        link_bblock (cfg, bblock.78, tblock);
        D.34270 = ins->data.op[1].many_blocks;
        *D.34270 = tblock;
        if (0 != 0) goto <D.34271>; else goto <D.34272>;
        <D.34271>:
        bblock.78 = bblock;
        link_bblock (cfg, bblock.78, 0B);
        D.34270 = ins->data.op[1].many_blocks;
        D.34273 = D.34270 + 4;
        *D.34273 = 0B;
        start_new_bblock = 1;
        goto <D.34274>;
        <D.34272>:
        D.30620 = cfg->cil_offset_to_bb;
        ip.83 = (int) ip;
        D.30624 = cfg->cil_start;
        D.30625 = (int) D.30624;
        D.31211 = ip.83 - D.30625;
        D.31212 = (unsigned int) D.31211;
        D.31213 = D.31212 * 4;
        D.31214 = D.30620 + D.31213;
        tblock = *D.31214;
        if (tblock == 0B) goto <D.34275>; else goto <D.34276>;
        <D.34275>:
        if (ip >= end) goto <D.34277>; else goto <D.34279>;
        <D.34279>:
        D.30636 = header->code;
        if (D.30636 > ip) goto <D.34277>; else goto <D.34278>;
        <D.34277>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.34280>; else goto <D.34281>;
        <D.34280>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.34282>; else goto <D.34283>;
        <D.34282>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34283>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34281>:
        D.34284 = mini_get_debug_options ();
        D.34285 = D.34284->break_on_unverified;
        if (D.34285 != 0) goto <D.34286>; else goto unverified;
        <D.34286>:
        __asm__ __volatile__("int $03");
        <D.34278>:
        D.30489 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.30489, 172);
        D.30597 = cfg->num_bblocks;
        D.34287 = D.30597;
        D.34288 = D.34287 + 1;
        cfg->num_bblocks = D.34288;
        D.34289 = (int) D.34287;
        tblock->block_num = D.34289;
        tblock->cil_code = ip;
        D.30685 = tblock->cil_code;
        if (D.30685 != 0B) goto <D.34290>; else goto <D.34291>;
        <D.34290>:
        D.30620 = cfg->cil_offset_to_bb;
        D.30685 = tblock->cil_code;
        D.30688 = (int) D.30685;
        D.30624 = cfg->cil_start;
        D.30625 = (int) D.30624;
        D.30689 = D.30688 - D.30625;
        D.30690 = (unsigned int) D.30689;
        D.30691 = D.30690 * 4;
        D.30692 = D.30620 + D.30691;
        *D.30692 = tblock;
        <D.34291>:
        D.30656 = cfg->real_offset;
        tblock->real_offset = D.30656;
        <D.34276>:
        bblock.78 = bblock;
        link_bblock (cfg, bblock.78, tblock);
        D.34270 = ins->data.op[1].many_blocks;
        D.34273 = D.34270 + 4;
        *D.34273 = tblock;
        start_new_bblock = 2;
        <D.34274>:
        if (sp != stack_start) goto <D.34292>; else goto <D.34293>;
        <D.34292>:
        sp.85 = (int) sp;
        stack_start.86 = (int) stack_start;
        D.31274 = sp.85 - stack_start.86;
        D.31275 = D.31274 /[ex] 4;
        handle_stack_args (cfg, stack_start, D.31275);
        D.31276 = BIT_FIELD_REF <*cfg, 8, 3400>;
        D.31277 = D.31276 & 32;
        if (D.31277 != 0) goto <D.34294>; else goto <D.34295>;
        <D.34294>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.34296>; else goto <D.34297>;
        <D.34296>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.34298>; else goto <D.34299>;
        <D.34298>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34299>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34297>:
        D.34300 = mini_get_debug_options ();
        D.34301 = D.34300->break_on_unverified;
        if (D.34301 != 0) goto <D.34302>; else goto unverified;
        <D.34302>:
        __asm__ __volatile__("int $03");
        <D.34295>:
        <D.34293>:
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        if (D.30826 != 0B) goto <D.34303>; else goto <D.34304>;
        <D.34303>:
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        D.30826->next = cmp;
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        cmp->prev = D.30826;
        bblock.78 = bblock;
        bblock.78->last_ins = cmp;
        goto <D.34305>;
        <D.34304>:
        bblock.78 = bblock;
        bblock.78 = bblock;
        bblock.78->last_ins = cmp;
        D.30826 = bblock.78->last_ins;
        bblock.78->code = D.30826;
        <D.34305>:
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        if (D.30826 != 0B) goto <D.34306>; else goto <D.34307>;
        <D.34306>:
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        D.30826->next = ins;
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        ins->prev = D.30826;
        bblock.78 = bblock;
        bblock.78->last_ins = ins;
        goto <D.34308>;
        <D.34307>:
        bblock.78 = bblock;
        bblock.78 = bblock;
        bblock.78->last_ins = ins;
        D.30826 = bblock.78->last_ins;
        bblock.78->code = D.30826;
        <D.34308>:
      }
      sp = stack_start;
      inline_costs = inline_costs + 10;
      goto <D.27380>;
      <D.27613>:
      D.31934 = ip + 5;
      if (D.31934 > end) goto <D.34309>; else goto <D.34310>;
      <D.34309>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.34311>; else goto <D.34312>;
      <D.34311>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.34313>; else goto <D.34314>;
      <D.34313>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34314>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34312>:
      D.34315 = mini_get_debug_options ();
      D.34316 = D.34315->break_on_unverified;
      if (D.34316 != 0) goto <D.34317>; else goto unverified;
      <D.34317>:
      __asm__ __volatile__("int $03");
      <D.34310>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 446;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      ip = ip + 1;
      D.32041 = MEM[(const guint32 *)ip];
      D.34318 = D.32041 + 4;
      target = ip + D.34318;
      ip = ip + 4;
      D.30620 = cfg->cil_offset_to_bb;
      target.152 = (int) target;
      D.30624 = cfg->cil_start;
      D.30625 = (int) D.30624;
      D.34181 = target.152 - D.30625;
      D.34182 = (unsigned int) D.34181;
      D.34183 = D.34182 * 4;
      D.34184 = D.30620 + D.34183;
      tblock = *D.34184;
      if (tblock == 0B) goto <D.34319>; else goto <D.34320>;
      <D.34319>:
      if (target >= end) goto <D.34321>; else goto <D.34323>;
      <D.34323>:
      D.30636 = header->code;
      if (D.30636 > target) goto <D.34321>; else goto <D.34322>;
      <D.34321>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.34324>; else goto <D.34325>;
      <D.34324>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.34326>; else goto <D.34327>;
      <D.34326>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34327>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34325>:
      D.34328 = mini_get_debug_options ();
      D.34329 = D.34328->break_on_unverified;
      if (D.34329 != 0) goto <D.34330>; else goto unverified;
      <D.34330>:
      __asm__ __volatile__("int $03");
      <D.34322>:
      D.30489 = cfg->mempool;
      tblock = mono_mempool_alloc0 (D.30489, 172);
      D.30597 = cfg->num_bblocks;
      D.34331 = D.30597;
      D.34332 = D.34331 + 1;
      cfg->num_bblocks = D.34332;
      D.34333 = (int) D.34331;
      tblock->block_num = D.34333;
      tblock->cil_code = target;
      D.30685 = tblock->cil_code;
      if (D.30685 != 0B) goto <D.34334>; else goto <D.34335>;
      <D.34334>:
      D.30620 = cfg->cil_offset_to_bb;
      D.30685 = tblock->cil_code;
      D.30688 = (int) D.30685;
      D.30624 = cfg->cil_start;
      D.30625 = (int) D.30624;
      D.30689 = D.30688 - D.30625;
      D.30690 = (unsigned int) D.30689;
      D.30691 = D.30690 * 4;
      D.30692 = D.30620 + D.30691;
      *D.30692 = tblock;
      <D.34335>:
      D.30656 = cfg->real_offset;
      tblock->real_offset = D.30656;
      <D.34320>:
      bblock.78 = bblock;
      link_bblock (cfg, bblock.78, tblock);
      ins->data.op[0].target_block = tblock;
      if (sp != stack_start) goto <D.34336>; else goto <D.34337>;
      <D.34336>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      D.31275 = D.31274 /[ex] 4;
      handle_stack_args (cfg, stack_start, D.31275);
      sp = stack_start;
      D.31276 = BIT_FIELD_REF <*cfg, 8, 3400>;
      D.31277 = D.31276 & 32;
      if (D.31277 != 0) goto <D.34338>; else goto <D.34339>;
      <D.34338>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.34340>; else goto <D.34341>;
      <D.34340>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.34342>; else goto <D.34343>;
      <D.34342>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34343>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34341>:
      D.34344 = mini_get_debug_options ();
      D.34345 = D.34344->break_on_unverified;
      if (D.34345 != 0) goto <D.34346>; else goto unverified;
      <D.34346>:
      __asm__ __volatile__("int $03");
      <D.34339>:
      <D.34337>:
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      if (D.30826 != 0B) goto <D.34347>; else goto <D.34348>;
      <D.34347>:
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      D.30826->next = ins;
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      ins->prev = D.30826;
      bblock.78 = bblock;
      bblock.78->last_ins = ins;
      goto <D.34349>;
      <D.34348>:
      bblock.78 = bblock;
      bblock.78 = bblock;
      bblock.78->last_ins = ins;
      D.30826 = bblock.78->last_ins;
      bblock.78->code = D.30826;
      <D.34349>:
      start_new_bblock = 1;
      inline_costs = inline_costs + 10;
      goto <D.27380>;
      <D.27614>:
      <D.27615>:
      <D.27616>:
      <D.27617>:
      {
        struct MonoInst * cmp;
        gboolean is_short;
        gboolean is_true;
        guint32 opsize;

        D.31371 = *ip;
        D.34350 = D.31371 + 212;
        D.34351 = D.34350 <= 1;
        is_short = (gboolean) D.34351;
        D.34352 = *ip;
        D.34353 = D.34352 == 45;
        D.34354 = D.34352 == 58;
        D.34355 = D.34353 | D.34354;
        is_true = (gboolean) D.34355;
        if (is_short != 0) goto <D.34357>; else goto <D.34358>;
        <D.34357>:
        iftmp.153 = 1;
        goto <D.34359>;
        <D.34358>:
        iftmp.153 = 4;
        <D.34359>:
        opsize = iftmp.153;
        D.34360 = ip + opsize;
        if (D.34360 > end) goto <D.34361>; else goto <D.34362>;
        <D.34361>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.34363>; else goto <D.34364>;
        <D.34363>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.34365>; else goto <D.34366>;
        <D.34365>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34366>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34364>:
        D.34367 = mini_get_debug_options ();
        D.34368 = D.34367->break_on_unverified;
        if (D.34368 != 0) goto <D.34369>; else goto unverified;
        <D.34369>:
        __asm__ __volatile__("int $03");
        <D.34362>:
        sp.85 = (int) sp;
        stack_start.86 = (int) stack_start;
        D.31274 = sp.85 - stack_start.86;
        if (D.31274 <= 3) goto <D.34370>; else goto <D.34371>;
        <D.34370>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.34372>; else goto <D.34373>;
        <D.34372>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.34374>; else goto <D.34375>;
        <D.34374>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34375>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34373>:
        D.34376 = mini_get_debug_options ();
        D.34377 = D.34376->break_on_unverified;
        if (D.34377 != 0) goto <D.34378>; else goto unverified;
        <D.34378>:
        __asm__ __volatile__("int $03");
        <D.34371>:
        D.34379 = sp + 4294967292;
        D.34380 = *D.34379;
        D.34381 = D.34380->type;
        D.34382 = D.34381 == 7;
        D.34383 = D.34381 == 4;
        D.34384 = D.34382 | D.34383;
        if (D.34384 != 0) goto <D.34385>; else goto <D.34386>;
        <D.34385>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.34387>; else goto <D.34388>;
        <D.34387>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.34389>; else goto <D.34390>;
        <D.34389>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34390>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34388>:
        D.34391 = mini_get_debug_options ();
        D.34392 = D.34391->break_on_unverified;
        if (D.34392 != 0) goto <D.34393>; else goto unverified;
        <D.34393>:
        __asm__ __volatile__("int $03");
        <D.34386>:
        ip = ip + 1;
        if (is_short != 0) goto <D.34395>; else goto <D.34396>;
        <D.34395>:
        D.31926 = MEM[(signed char *)ip];
        iftmp.154 = (sizetype) D.31926;
        goto <D.34397>;
        <D.34396>:
        iftmp.154 = MEM[(const guint32 *)ip];
        <D.34397>:
        D.34398 = iftmp.154 + opsize;
        target = ip + D.34398;
        ip = ip + opsize;
        sp = sp + 4294967292;
        D.30620 = cfg->cil_offset_to_bb;
        target.152 = (int) target;
        D.30624 = cfg->cil_start;
        D.30625 = (int) D.30624;
        D.34181 = target.152 - D.30625;
        D.34182 = (unsigned int) D.34181;
        D.34183 = D.34182 * 4;
        D.34184 = D.30620 + D.34183;
        tblock = *D.34184;
        if (tblock == 0B) goto <D.34399>; else goto <D.34400>;
        <D.34399>:
        if (target >= end) goto <D.34401>; else goto <D.34403>;
        <D.34403>:
        D.30636 = header->code;
        if (D.30636 > target) goto <D.34401>; else goto <D.34402>;
        <D.34401>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.34404>; else goto <D.34405>;
        <D.34404>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.34406>; else goto <D.34407>;
        <D.34406>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34407>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34405>:
        D.34408 = mini_get_debug_options ();
        D.34409 = D.34408->break_on_unverified;
        if (D.34409 != 0) goto <D.34410>; else goto unverified;
        <D.34410>:
        __asm__ __volatile__("int $03");
        <D.34402>:
        D.30489 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.30489, 172);
        D.30597 = cfg->num_bblocks;
        D.34411 = D.30597;
        D.34412 = D.34411 + 1;
        cfg->num_bblocks = D.34412;
        D.34413 = (int) D.34411;
        tblock->block_num = D.34413;
        tblock->cil_code = target;
        D.30685 = tblock->cil_code;
        if (D.30685 != 0B) goto <D.34414>; else goto <D.34415>;
        <D.34414>:
        D.30620 = cfg->cil_offset_to_bb;
        D.30685 = tblock->cil_code;
        D.30688 = (int) D.30685;
        D.30624 = cfg->cil_start;
        D.30625 = (int) D.30624;
        D.30689 = D.30688 - D.30625;
        D.30690 = (unsigned int) D.30689;
        D.30691 = D.30690 * 4;
        D.30692 = D.30620 + D.30691;
        *D.30692 = tblock;
        <D.34415>:
        D.30656 = cfg->real_offset;
        tblock->real_offset = D.30656;
        <D.34400>:
        bblock.78 = bblock;
        link_bblock (cfg, bblock.78, tblock);
        D.30620 = cfg->cil_offset_to_bb;
        ip.83 = (int) ip;
        D.30624 = cfg->cil_start;
        D.30625 = (int) D.30624;
        D.31211 = ip.83 - D.30625;
        D.31212 = (unsigned int) D.31211;
        D.31213 = D.31212 * 4;
        D.31214 = D.30620 + D.31213;
        tblock = *D.31214;
        if (tblock == 0B) goto <D.34416>; else goto <D.34417>;
        <D.34416>:
        if (ip >= end) goto <D.34418>; else goto <D.34420>;
        <D.34420>:
        D.30636 = header->code;
        if (D.30636 > ip) goto <D.34418>; else goto <D.34419>;
        <D.34418>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.34421>; else goto <D.34422>;
        <D.34421>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.34423>; else goto <D.34424>;
        <D.34423>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34424>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34422>:
        D.34425 = mini_get_debug_options ();
        D.34426 = D.34425->break_on_unverified;
        if (D.34426 != 0) goto <D.34427>; else goto unverified;
        <D.34427>:
        __asm__ __volatile__("int $03");
        <D.34419>:
        D.30489 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.30489, 172);
        D.30597 = cfg->num_bblocks;
        D.34428 = D.30597;
        D.34429 = D.34428 + 1;
        cfg->num_bblocks = D.34429;
        D.34430 = (int) D.34428;
        tblock->block_num = D.34430;
        tblock->cil_code = ip;
        D.30685 = tblock->cil_code;
        if (D.30685 != 0B) goto <D.34431>; else goto <D.34432>;
        <D.34431>:
        D.30620 = cfg->cil_offset_to_bb;
        D.30685 = tblock->cil_code;
        D.30688 = (int) D.30685;
        D.30624 = cfg->cil_start;
        D.30625 = (int) D.30624;
        D.30689 = D.30688 - D.30625;
        D.30690 = (unsigned int) D.30689;
        D.30691 = D.30690 * 4;
        D.30692 = D.30620 + D.30691;
        *D.30692 = tblock;
        <D.34432>:
        D.30656 = cfg->real_offset;
        tblock->real_offset = D.30656;
        <D.34417>:
        bblock.78 = bblock;
        link_bblock (cfg, bblock.78, tblock);
        if (sp != stack_start) goto <D.34433>; else goto <D.34434>;
        <D.34433>:
        sp.85 = (int) sp;
        stack_start.86 = (int) stack_start;
        D.31274 = sp.85 - stack_start.86;
        D.31275 = D.31274 /[ex] 4;
        handle_stack_args (cfg, stack_start, D.31275);
        D.31276 = BIT_FIELD_REF <*cfg, 8, 3400>;
        D.31277 = D.31276 & 32;
        if (D.31277 != 0) goto <D.34435>; else goto <D.34436>;
        <D.34435>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.34437>; else goto <D.34438>;
        <D.34437>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.34439>; else goto <D.34440>;
        <D.34439>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34440>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34438>:
        D.34441 = mini_get_debug_options ();
        D.34442 = D.34441->break_on_unverified;
        if (D.34442 != 0) goto <D.34443>; else goto unverified;
        <D.34443>:
        __asm__ __volatile__("int $03");
        <D.34436>:
        <D.34434>:
        D.30489 = cfg->mempool;
        cmp = mono_mempool_alloc (D.30489, 48);
        cmp->data.op[1].const_val = 0;
        D.34444 = cmp->data.op[1].const_val;
        cmp->data.op[0].const_val = D.34444;
        cmp->prev = 0B;
        D.34445 = cmp->prev;
        cmp->next = D.34445;
        cmp->opcode = 327;
        cmp->flags = 0;
        cmp->type = 0;
        cmp->dreg = -1;
        cmp->sreg3 = -1;
        D.34446 = cmp->sreg3;
        cmp->sreg2 = D.34446;
        D.34447 = cmp->sreg2;
        cmp->sreg1 = D.34447;
        D.30712 = cfg->ip;
        cmp->cil_code = D.30712;
        D.31489 = *sp;
        D.31682 = D.31489->dreg;
        cmp->sreg1 = D.31682;
        D.31489 = *sp;
        type_from_op (cmp, D.31489, 0B);
        D.34448 = cmp->type;
        if (D.34448 == 0) goto <D.34449>; else goto <D.34450>;
        <D.34449>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.34451>; else goto <D.34452>;
        <D.34451>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.34453>; else goto <D.34454>;
        <D.34453>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34454>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34452>:
        D.34455 = mini_get_debug_options ();
        D.34456 = D.34455->break_on_unverified;
        if (D.34456 != 0) goto <D.34457>; else goto unverified;
        <D.34457>:
        __asm__ __volatile__("int $03");
        <D.34450>:
        D.34458 = cmp->opcode;
        if (D.34458 == 328) goto <D.34459>; else goto <D.34460>;
        <D.34459>:
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        ins->opcode = 363;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        ins->type = 2;
        D.34461 = alloc_dreg (cfg, 2);
        D.34462 = (int) D.34461;
        ins->dreg = D.34462;
        ins->data.i8const = 0;
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        if (D.30826 != 0B) goto <D.34463>; else goto <D.34464>;
        <D.34463>:
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        D.30826->next = ins;
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        ins->prev = D.30826;
        bblock.78 = bblock;
        bblock.78->last_ins = ins;
        goto <D.34465>;
        <D.34464>:
        bblock.78 = bblock;
        bblock.78 = bblock;
        bblock.78->last_ins = ins;
        D.30826 = bblock.78->last_ins;
        bblock.78->code = D.30826;
        <D.34465>:
        cmp->opcode = 325;
        D.30903 = ins->dreg;
        cmp->sreg2 = D.30903;
        <D.34460>:
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        if (D.30826 != 0B) goto <D.34466>; else goto <D.34467>;
        <D.34466>:
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        D.30826->next = cmp;
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        cmp->prev = D.30826;
        bblock.78 = bblock;
        bblock.78->last_ins = cmp;
        goto <D.34468>;
        <D.34467>:
        bblock.78 = bblock;
        bblock.78 = bblock;
        bblock.78->last_ins = cmp;
        D.30826 = bblock.78->last_ins;
        bblock.78->code = D.30826;
        <D.34468>:
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        if (is_true != 0) goto <D.34470>; else goto <D.34471>;
        <D.34470>:
        iftmp.155 = 64;
        goto <D.34472>;
        <D.34471>:
        iftmp.155 = 59;
        <D.34472>:
        ins->opcode = iftmp.155;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        D.31489 = *sp;
        type_from_op (ins, D.31489, 0B);
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        if (D.30826 != 0B) goto <D.34473>; else goto <D.34474>;
        <D.34473>:
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        D.30826->next = ins;
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        ins->prev = D.30826;
        bblock.78 = bblock;
        bblock.78->last_ins = ins;
        goto <D.34475>;
        <D.34474>:
        bblock.78 = bblock;
        bblock.78 = bblock;
        bblock.78->last_ins = ins;
        D.30826 = bblock.78->last_ins;
        bblock.78->code = D.30826;
        <D.34475>:
        D.30489 = cfg->mempool;
        D.34476 = mono_mempool_alloc (D.30489, 8);
        ins->data.op[1].many_blocks = D.34476;
        D.30620 = cfg->cil_offset_to_bb;
        target.152 = (int) target;
        D.30624 = cfg->cil_start;
        D.30625 = (int) D.30624;
        D.34181 = target.152 - D.30625;
        D.34182 = (unsigned int) D.34181;
        D.34183 = D.34182 * 4;
        D.34184 = D.30620 + D.34183;
        tblock = *D.34184;
        if (tblock == 0B) goto <D.34477>; else goto <D.34478>;
        <D.34477>:
        if (target >= end) goto <D.34479>; else goto <D.34481>;
        <D.34481>:
        D.30636 = header->code;
        if (D.30636 > target) goto <D.34479>; else goto <D.34480>;
        <D.34479>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.34482>; else goto <D.34483>;
        <D.34482>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.34484>; else goto <D.34485>;
        <D.34484>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34485>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34483>:
        D.34486 = mini_get_debug_options ();
        D.34487 = D.34486->break_on_unverified;
        if (D.34487 != 0) goto <D.34488>; else goto unverified;
        <D.34488>:
        __asm__ __volatile__("int $03");
        <D.34480>:
        D.30489 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.30489, 172);
        D.30597 = cfg->num_bblocks;
        D.34489 = D.30597;
        D.34490 = D.34489 + 1;
        cfg->num_bblocks = D.34490;
        D.34491 = (int) D.34489;
        tblock->block_num = D.34491;
        tblock->cil_code = target;
        D.30685 = tblock->cil_code;
        if (D.30685 != 0B) goto <D.34492>; else goto <D.34493>;
        <D.34492>:
        D.30620 = cfg->cil_offset_to_bb;
        D.30685 = tblock->cil_code;
        D.30688 = (int) D.30685;
        D.30624 = cfg->cil_start;
        D.30625 = (int) D.30624;
        D.30689 = D.30688 - D.30625;
        D.30690 = (unsigned int) D.30689;
        D.30691 = D.30690 * 4;
        D.30692 = D.30620 + D.30691;
        *D.30692 = tblock;
        <D.34493>:
        D.30656 = cfg->real_offset;
        tblock->real_offset = D.30656;
        <D.34478>:
        D.34270 = ins->data.op[1].many_blocks;
        *D.34270 = tblock;
        D.30620 = cfg->cil_offset_to_bb;
        ip.83 = (int) ip;
        D.30624 = cfg->cil_start;
        D.30625 = (int) D.30624;
        D.31211 = ip.83 - D.30625;
        D.31212 = (unsigned int) D.31211;
        D.31213 = D.31212 * 4;
        D.31214 = D.30620 + D.31213;
        tblock = *D.31214;
        if (tblock == 0B) goto <D.34494>; else goto <D.34495>;
        <D.34494>:
        if (ip >= end) goto <D.34496>; else goto <D.34498>;
        <D.34498>:
        D.30636 = header->code;
        if (D.30636 > ip) goto <D.34496>; else goto <D.34497>;
        <D.34496>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.34499>; else goto <D.34500>;
        <D.34499>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.34501>; else goto <D.34502>;
        <D.34501>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34502>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34500>:
        D.34503 = mini_get_debug_options ();
        D.34504 = D.34503->break_on_unverified;
        if (D.34504 != 0) goto <D.34505>; else goto unverified;
        <D.34505>:
        __asm__ __volatile__("int $03");
        <D.34497>:
        D.30489 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.30489, 172);
        D.30597 = cfg->num_bblocks;
        D.34506 = D.30597;
        D.34507 = D.34506 + 1;
        cfg->num_bblocks = D.34507;
        D.34508 = (int) D.34506;
        tblock->block_num = D.34508;
        tblock->cil_code = ip;
        D.30685 = tblock->cil_code;
        if (D.30685 != 0B) goto <D.34509>; else goto <D.34510>;
        <D.34509>:
        D.30620 = cfg->cil_offset_to_bb;
        D.30685 = tblock->cil_code;
        D.30688 = (int) D.30685;
        D.30624 = cfg->cil_start;
        D.30625 = (int) D.30624;
        D.30689 = D.30688 - D.30625;
        D.30690 = (unsigned int) D.30689;
        D.30691 = D.30690 * 4;
        D.30692 = D.30620 + D.30691;
        *D.30692 = tblock;
        <D.34510>:
        D.30656 = cfg->real_offset;
        tblock->real_offset = D.30656;
        <D.34495>:
        D.34270 = ins->data.op[1].many_blocks;
        D.34273 = D.34270 + 4;
        *D.34273 = tblock;
        start_new_bblock = 2;
        sp = stack_start;
        inline_costs = inline_costs + 10;
        goto <D.27380>;
      }
      <D.27622>:
      <D.27623>:
      <D.27624>:
      <D.27625>:
      <D.27626>:
      <D.27627>:
      <D.27628>:
      <D.27629>:
      <D.27630>:
      <D.27631>:
      D.31934 = ip + 5;
      if (D.31934 > end) goto <D.34511>; else goto <D.34512>;
      <D.34511>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.34513>; else goto <D.34514>;
      <D.34513>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.34515>; else goto <D.34516>;
      <D.34515>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34516>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34514>:
      D.34517 = mini_get_debug_options ();
      D.34518 = D.34517->break_on_unverified;
      if (D.34518 != 0) goto <D.34519>; else goto unverified;
      <D.34519>:
      __asm__ __volatile__("int $03");
      <D.34512>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      if (D.31274 <= 7) goto <D.34520>; else goto <D.34521>;
      <D.34520>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.34522>; else goto <D.34523>;
      <D.34522>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.34524>; else goto <D.34525>;
      <D.34524>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34525>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34523>:
      D.34526 = mini_get_debug_options ();
      D.34527 = D.34526->break_on_unverified;
      if (D.34527 != 0) goto <D.34528>; else goto unverified;
      <D.34528>:
      __asm__ __volatile__("int $03");
      <D.34521>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      D.31371 = *ip;
      D.34234 = (short unsigned int) D.31371;
      ins->opcode = D.34234;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      ip = ip + 1;
      D.32041 = MEM[(const guint32 *)ip];
      D.34318 = D.32041 + 4;
      target = ip + D.34318;
      ip = ip + 4;
      {
        struct MonoInst * cmp;

        sp = sp + 4294967288;
        D.30489 = cfg->mempool;
        cmp = mono_mempool_alloc (D.30489, 48);
        cmp->data.op[1].const_val = 0;
        D.34529 = cmp->data.op[1].const_val;
        cmp->data.op[0].const_val = D.34529;
        cmp->prev = 0B;
        D.34530 = cmp->prev;
        cmp->next = D.34530;
        cmp->opcode = 322;
        cmp->flags = 0;
        cmp->type = 0;
        cmp->dreg = -1;
        cmp->sreg3 = -1;
        D.34531 = cmp->sreg3;
        cmp->sreg2 = D.34531;
        D.34532 = cmp->sreg2;
        cmp->sreg1 = D.34532;
        D.30712 = cfg->ip;
        cmp->cil_code = D.30712;
        D.31489 = *sp;
        D.31682 = D.31489->dreg;
        cmp->sreg1 = D.31682;
        D.32655 = sp + 4;
        D.32656 = *D.32655;
        D.32657 = D.32656->dreg;
        cmp->sreg2 = D.32657;
        D.32655 = sp + 4;
        D.32656 = *D.32655;
        D.31489 = *sp;
        type_from_op (cmp, D.31489, D.32656);
        D.34533 = cmp->type;
        if (D.34533 == 0) goto <D.34534>; else goto <D.34535>;
        <D.34534>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.34536>; else goto <D.34537>;
        <D.34536>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.34538>; else goto <D.34539>;
        <D.34538>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34539>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34537>:
        D.34540 = mini_get_debug_options ();
        D.34541 = D.34540->break_on_unverified;
        if (D.34541 != 0) goto <D.34542>; else goto unverified;
        <D.34542>:
        __asm__ __volatile__("int $03");
        <D.34535>:
        D.32655 = sp + 4;
        D.32656 = *D.32655;
        D.31489 = *sp;
        type_from_op (ins, D.31489, D.32656);
        D.30489 = cfg->mempool;
        D.34543 = mono_mempool_alloc (D.30489, 8);
        ins->data.op[1].many_blocks = D.34543;
        D.30620 = cfg->cil_offset_to_bb;
        target.152 = (int) target;
        D.30624 = cfg->cil_start;
        D.30625 = (int) D.30624;
        D.34181 = target.152 - D.30625;
        D.34182 = (unsigned int) D.34181;
        D.34183 = D.34182 * 4;
        D.34184 = D.30620 + D.34183;
        tblock = *D.34184;
        if (tblock == 0B) goto <D.34544>; else goto <D.34545>;
        <D.34544>:
        if (target >= end) goto <D.34546>; else goto <D.34548>;
        <D.34548>:
        D.30636 = header->code;
        if (D.30636 > target) goto <D.34546>; else goto <D.34547>;
        <D.34546>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.34549>; else goto <D.34550>;
        <D.34549>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.34551>; else goto <D.34552>;
        <D.34551>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34552>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34550>:
        D.34553 = mini_get_debug_options ();
        D.34554 = D.34553->break_on_unverified;
        if (D.34554 != 0) goto <D.34555>; else goto unverified;
        <D.34555>:
        __asm__ __volatile__("int $03");
        <D.34547>:
        D.30489 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.30489, 172);
        D.30597 = cfg->num_bblocks;
        D.34556 = D.30597;
        D.34557 = D.34556 + 1;
        cfg->num_bblocks = D.34557;
        D.34558 = (int) D.34556;
        tblock->block_num = D.34558;
        tblock->cil_code = target;
        D.30685 = tblock->cil_code;
        if (D.30685 != 0B) goto <D.34559>; else goto <D.34560>;
        <D.34559>:
        D.30620 = cfg->cil_offset_to_bb;
        D.30685 = tblock->cil_code;
        D.30688 = (int) D.30685;
        D.30624 = cfg->cil_start;
        D.30625 = (int) D.30624;
        D.30689 = D.30688 - D.30625;
        D.30690 = (unsigned int) D.30689;
        D.30691 = D.30690 * 4;
        D.30692 = D.30620 + D.30691;
        *D.30692 = tblock;
        <D.34560>:
        D.30656 = cfg->real_offset;
        tblock->real_offset = D.30656;
        <D.34545>:
        bblock.78 = bblock;
        link_bblock (cfg, bblock.78, tblock);
        D.34270 = ins->data.op[1].many_blocks;
        *D.34270 = tblock;
        if (0 != 0) goto <D.34561>; else goto <D.34562>;
        <D.34561>:
        bblock.78 = bblock;
        link_bblock (cfg, bblock.78, 0B);
        D.34270 = ins->data.op[1].many_blocks;
        D.34273 = D.34270 + 4;
        *D.34273 = 0B;
        start_new_bblock = 1;
        goto <D.34563>;
        <D.34562>:
        D.30620 = cfg->cil_offset_to_bb;
        ip.83 = (int) ip;
        D.30624 = cfg->cil_start;
        D.30625 = (int) D.30624;
        D.31211 = ip.83 - D.30625;
        D.31212 = (unsigned int) D.31211;
        D.31213 = D.31212 * 4;
        D.31214 = D.30620 + D.31213;
        tblock = *D.31214;
        if (tblock == 0B) goto <D.34564>; else goto <D.34565>;
        <D.34564>:
        if (ip >= end) goto <D.34566>; else goto <D.34568>;
        <D.34568>:
        D.30636 = header->code;
        if (D.30636 > ip) goto <D.34566>; else goto <D.34567>;
        <D.34566>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.34569>; else goto <D.34570>;
        <D.34569>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.34571>; else goto <D.34572>;
        <D.34571>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34572>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34570>:
        D.34573 = mini_get_debug_options ();
        D.34574 = D.34573->break_on_unverified;
        if (D.34574 != 0) goto <D.34575>; else goto unverified;
        <D.34575>:
        __asm__ __volatile__("int $03");
        <D.34567>:
        D.30489 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.30489, 172);
        D.30597 = cfg->num_bblocks;
        D.34576 = D.30597;
        D.34577 = D.34576 + 1;
        cfg->num_bblocks = D.34577;
        D.34578 = (int) D.34576;
        tblock->block_num = D.34578;
        tblock->cil_code = ip;
        D.30685 = tblock->cil_code;
        if (D.30685 != 0B) goto <D.34579>; else goto <D.34580>;
        <D.34579>:
        D.30620 = cfg->cil_offset_to_bb;
        D.30685 = tblock->cil_code;
        D.30688 = (int) D.30685;
        D.30624 = cfg->cil_start;
        D.30625 = (int) D.30624;
        D.30689 = D.30688 - D.30625;
        D.30690 = (unsigned int) D.30689;
        D.30691 = D.30690 * 4;
        D.30692 = D.30620 + D.30691;
        *D.30692 = tblock;
        <D.34580>:
        D.30656 = cfg->real_offset;
        tblock->real_offset = D.30656;
        <D.34565>:
        bblock.78 = bblock;
        link_bblock (cfg, bblock.78, tblock);
        D.34270 = ins->data.op[1].many_blocks;
        D.34273 = D.34270 + 4;
        *D.34273 = tblock;
        start_new_bblock = 2;
        <D.34563>:
        if (sp != stack_start) goto <D.34581>; else goto <D.34582>;
        <D.34581>:
        sp.85 = (int) sp;
        stack_start.86 = (int) stack_start;
        D.31274 = sp.85 - stack_start.86;
        D.31275 = D.31274 /[ex] 4;
        handle_stack_args (cfg, stack_start, D.31275);
        D.31276 = BIT_FIELD_REF <*cfg, 8, 3400>;
        D.31277 = D.31276 & 32;
        if (D.31277 != 0) goto <D.34583>; else goto <D.34584>;
        <D.34583>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.34585>; else goto <D.34586>;
        <D.34585>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.34587>; else goto <D.34588>;
        <D.34587>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34588>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34586>:
        D.34589 = mini_get_debug_options ();
        D.34590 = D.34589->break_on_unverified;
        if (D.34590 != 0) goto <D.34591>; else goto unverified;
        <D.34591>:
        __asm__ __volatile__("int $03");
        <D.34584>:
        <D.34582>:
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        if (D.30826 != 0B) goto <D.34592>; else goto <D.34593>;
        <D.34592>:
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        D.30826->next = cmp;
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        cmp->prev = D.30826;
        bblock.78 = bblock;
        bblock.78->last_ins = cmp;
        goto <D.34594>;
        <D.34593>:
        bblock.78 = bblock;
        bblock.78 = bblock;
        bblock.78->last_ins = cmp;
        D.30826 = bblock.78->last_ins;
        bblock.78->code = D.30826;
        <D.34594>:
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        if (D.30826 != 0B) goto <D.34595>; else goto <D.34596>;
        <D.34595>:
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        D.30826->next = ins;
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        ins->prev = D.30826;
        bblock.78 = bblock;
        bblock.78->last_ins = ins;
        goto <D.34597>;
        <D.34596>:
        bblock.78 = bblock;
        bblock.78 = bblock;
        bblock.78->last_ins = ins;
        D.30826 = bblock.78->last_ins;
        bblock.78->code = D.30826;
        <D.34597>:
      }
      sp = stack_start;
      inline_costs = inline_costs + 10;
      goto <D.27380>;
      <D.27633>:
      {
        struct MonoInst * src1;
        struct MonoBasicBlock * * targets;
        struct MonoBasicBlock * default_bblock;
        struct MonoJumpInfoBBTable * table;
        int offset_reg;
        int target_reg;
        int table_reg;
        int sum_reg;
        gboolean use_op_switch;

        D.34598 = alloc_preg (cfg);
        offset_reg = (int) D.34598;
        D.34599 = alloc_preg (cfg);
        target_reg = (int) D.34599;
        D.34600 = alloc_preg (cfg);
        table_reg = (int) D.34600;
        D.34601 = alloc_preg (cfg);
        sum_reg = (int) D.34601;
        D.31934 = ip + 5;
        if (D.31934 > end) goto <D.34602>; else goto <D.34603>;
        <D.34602>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.34604>; else goto <D.34605>;
        <D.34604>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.34606>; else goto <D.34607>;
        <D.34606>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34607>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34605>:
        D.34608 = mini_get_debug_options ();
        D.34609 = D.34608->break_on_unverified;
        if (D.34609 != 0) goto <D.34610>; else goto unverified;
        <D.34610>:
        __asm__ __volatile__("int $03");
        <D.34603>:
        sp.85 = (int) sp;
        stack_start.86 = (int) stack_start;
        D.31274 = sp.85 - stack_start.86;
        if (D.31274 <= 3) goto <D.34611>; else goto <D.34612>;
        <D.34611>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.34613>; else goto <D.34614>;
        <D.34613>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.34615>; else goto <D.34616>;
        <D.34615>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34616>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34614>:
        D.34617 = mini_get_debug_options ();
        D.34618 = D.34617->break_on_unverified;
        if (D.34618 != 0) goto <D.34619>; else goto unverified;
        <D.34619>:
        __asm__ __volatile__("int $03");
        <D.34612>:
        D.31953 = ip + 1;
        D.31954 = *D.31953;
        n = (int) D.31954;
        sp = sp + 4294967292;
        src1 = *sp;
        D.34620 = src1->type;
        D.34621 = D.34620 != 1;
        D.34622 = D.34620 != 3;
        D.34623 = D.34621 & D.34622;
        if (D.34623 != 0) goto <D.34624>; else goto <D.34625>;
        <D.34624>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.34626>; else goto <D.34627>;
        <D.34626>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.34628>; else goto <D.34629>;
        <D.34628>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34629>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34627>:
        D.34630 = mini_get_debug_options ();
        D.34631 = D.34630->break_on_unverified;
        if (D.34631 != 0) goto <D.34632>; else goto unverified;
        <D.34632>:
        __asm__ __volatile__("int $03");
        <D.34625>:
        ip = ip + 5;
        n.90 = (unsigned int) n;
        D.31416 = n.90 * 4;
        D.34633 = ip + D.31416;
        if (D.34633 > end) goto <D.34634>; else goto <D.34635>;
        <D.34634>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.34636>; else goto <D.34637>;
        <D.34636>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.34638>; else goto <D.34639>;
        <D.34638>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34639>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34637>:
        D.34640 = mini_get_debug_options ();
        D.34641 = D.34640->break_on_unverified;
        if (D.34641 != 0) goto <D.34642>; else goto unverified;
        <D.34642>:
        __asm__ __volatile__("int $03");
        <D.34635>:
        n.90 = (unsigned int) n;
        D.31416 = n.90 * 4;
        target = ip + D.31416;
        D.30620 = cfg->cil_offset_to_bb;
        target.152 = (int) target;
        D.30624 = cfg->cil_start;
        D.30625 = (int) D.30624;
        D.34181 = target.152 - D.30625;
        D.34182 = (unsigned int) D.34181;
        D.34183 = D.34182 * 4;
        D.34184 = D.30620 + D.34183;
        default_bblock = *D.34184;
        if (default_bblock == 0B) goto <D.34643>; else goto <D.34644>;
        <D.34643>:
        if (target >= end) goto <D.34645>; else goto <D.34647>;
        <D.34647>:
        D.30636 = header->code;
        if (D.30636 > target) goto <D.34645>; else goto <D.34646>;
        <D.34645>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.34648>; else goto <D.34649>;
        <D.34648>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.34650>; else goto <D.34651>;
        <D.34650>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34651>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34649>:
        D.34652 = mini_get_debug_options ();
        D.34653 = D.34652->break_on_unverified;
        if (D.34653 != 0) goto <D.34654>; else goto unverified;
        <D.34654>:
        __asm__ __volatile__("int $03");
        <D.34646>:
        D.30489 = cfg->mempool;
        default_bblock = mono_mempool_alloc0 (D.30489, 172);
        D.30597 = cfg->num_bblocks;
        D.34655 = D.30597;
        D.34656 = D.34655 + 1;
        cfg->num_bblocks = D.34656;
        D.34657 = (int) D.34655;
        default_bblock->block_num = D.34657;
        default_bblock->cil_code = target;
        D.34658 = default_bblock->cil_code;
        if (D.34658 != 0B) goto <D.34659>; else goto <D.34660>;
        <D.34659>:
        D.30620 = cfg->cil_offset_to_bb;
        D.34658 = default_bblock->cil_code;
        D.34661 = (int) D.34658;
        D.30624 = cfg->cil_start;
        D.30625 = (int) D.30624;
        D.34662 = D.34661 - D.30625;
        D.34663 = (unsigned int) D.34662;
        D.34664 = D.34663 * 4;
        D.34665 = D.30620 + D.34664;
        *D.34665 = default_bblock;
        <D.34660>:
        D.30656 = cfg->real_offset;
        default_bblock->real_offset = D.30656;
        <D.34644>:
        D.34666 = default_bblock->flags;
        D.34667 = D.34666 | 32;
        default_bblock->flags = D.34667;
        n.90 = (unsigned int) n;
        D.31416 = n.90 * 4;
        D.30489 = cfg->mempool;
        targets = mono_mempool_alloc (D.30489, D.31416);
        i = 0;
        goto <D.27644>;
        <D.27643>:
        D.30620 = cfg->cil_offset_to_bb;
        D.32041 = MEM[(const guint32 *)ip];
        D.34668 = target + D.32041;
        D.34669 = (int) D.34668;
        D.30624 = cfg->cil_start;
        D.30625 = (int) D.30624;
        D.34670 = D.34669 - D.30625;
        D.34671 = (unsigned int) D.34670;
        D.34672 = D.34671 * 4;
        D.34673 = D.30620 + D.34672;
        tblock = *D.34673;
        if (tblock == 0B) goto <D.34674>; else goto <D.34675>;
        <D.34674>:
        D.32041 = MEM[(const guint32 *)ip];
        D.34668 = target + D.32041;
        if (D.34668 >= end) goto <D.34676>; else goto <D.34678>;
        <D.34678>:
        D.32041 = MEM[(const guint32 *)ip];
        D.34679 = target + D.32041;
        D.30636 = header->code;
        if (D.34679 < D.30636) goto <D.34676>; else goto <D.34677>;
        <D.34676>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.34680>; else goto <D.34681>;
        <D.34680>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.34682>; else goto <D.34683>;
        <D.34682>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34683>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34681>:
        D.34684 = mini_get_debug_options ();
        D.34685 = D.34684->break_on_unverified;
        if (D.34685 != 0) goto <D.34686>; else goto unverified;
        <D.34686>:
        __asm__ __volatile__("int $03");
        <D.34677>:
        D.30489 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.30489, 172);
        D.30597 = cfg->num_bblocks;
        D.34687 = D.30597;
        D.34688 = D.34687 + 1;
        cfg->num_bblocks = D.34688;
        D.34689 = (int) D.34687;
        tblock->block_num = D.34689;
        D.32041 = MEM[(const guint32 *)ip];
        D.34668 = target + D.32041;
        tblock->cil_code = D.34668;
        D.30685 = tblock->cil_code;
        if (D.30685 != 0B) goto <D.34690>; else goto <D.34691>;
        <D.34690>:
        D.30620 = cfg->cil_offset_to_bb;
        D.30685 = tblock->cil_code;
        D.30688 = (int) D.30685;
        D.30624 = cfg->cil_start;
        D.30625 = (int) D.30624;
        D.30689 = D.30688 - D.30625;
        D.30690 = (unsigned int) D.30689;
        D.30691 = D.30690 * 4;
        D.30692 = D.30620 + D.30691;
        *D.30692 = tblock;
        <D.34691>:
        D.30656 = cfg->real_offset;
        tblock->real_offset = D.30656;
        <D.34675>:
        i.76 = (unsigned int) i;
        D.31235 = i.76 * 4;
        D.34692 = targets + D.31235;
        *D.34692 = tblock;
        i.76 = (unsigned int) i;
        D.31235 = i.76 * 4;
        D.34692 = targets + D.31235;
        D.34693 = *D.34692;
        i.76 = (unsigned int) i;
        D.31235 = i.76 * 4;
        D.34692 = targets + D.31235;
        D.34693 = *D.34692;
        D.34694 = D.34693->flags;
        D.34695 = D.34694 | 32;
        D.34693->flags = D.34695;
        ip = ip + 4;
        i = i + 1;
        <D.27644>:
        if (i < n) goto <D.27643>; else goto <D.27645>;
        <D.27645>:
        if (sp != stack_start) goto <D.34696>; else goto <D.34697>;
        <D.34696>:
        bblock.78 = bblock;
        link_bblock (cfg, bblock.78, default_bblock);
        i = 0;
        goto <D.27647>;
        <D.27646>:
        i.76 = (unsigned int) i;
        D.31235 = i.76 * 4;
        D.34692 = targets + D.31235;
        D.34693 = *D.34692;
        bblock.78 = bblock;
        link_bblock (cfg, bblock.78, D.34693);
        i = i + 1;
        <D.27647>:
        if (i < n) goto <D.27646>; else goto <D.27648>;
        <D.27648>:
        sp.85 = (int) sp;
        stack_start.86 = (int) stack_start;
        D.31274 = sp.85 - stack_start.86;
        D.31275 = D.31274 /[ex] 4;
        handle_stack_args (cfg, stack_start, D.31275);
        sp = stack_start;
        D.31276 = BIT_FIELD_REF <*cfg, 8, 3400>;
        D.31277 = D.31276 & 32;
        if (D.31277 != 0) goto <D.34698>; else goto <D.34699>;
        <D.34698>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.34700>; else goto <D.34701>;
        <D.34700>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.34702>; else goto <D.34703>;
        <D.34702>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34703>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34701>:
        D.34704 = mini_get_debug_options ();
        D.34705 = D.34704->break_on_unverified;
        if (D.34705 != 0) goto <D.34706>; else goto unverified;
        <D.34706>:
        __asm__ __volatile__("int $03");
        <D.34699>:
        <D.34697>:
        {
          struct MonoInst * inst;

          D.30489 = cfg->mempool;
          inst = mono_mempool_alloc (D.30489, 48);
          inst->data.op[1].const_val = 0;
          D.34707 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.34707;
          inst->prev = 0B;
          D.34708 = inst->prev;
          inst->next = D.34708;
          inst->opcode = 327;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.34709 = inst->sreg3;
          inst->sreg2 = D.34709;
          D.34710 = inst->sreg2;
          inst->sreg1 = D.34710;
          D.30712 = cfg->ip;
          inst->cil_code = D.30712;
          inst->dreg = -1;
          D.34711 = src1->dreg;
          inst->sreg1 = D.34711;
          inst->data.op[1].const_val = n;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.34712>; else goto <D.34713>;
          <D.34712>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = inst;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          inst->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          goto <D.34714>;
          <D.34713>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.34714>:
        }
        {
          struct MonoInst * ins;
          struct MonoBasicBlock * falsebb;

          D.30489 = cfg->mempool;
          ins = mono_mempool_alloc (D.30489, 48);
          ins->data.op[1].const_val = 0;
          D.34715 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.34715;
          ins->prev = 0B;
          D.34716 = ins->prev;
          ins->next = D.34716;
          ins->opcode = 658;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.34717 = ins->sreg3;
          ins->sreg2 = D.34717;
          D.34718 = ins->sreg2;
          ins->sreg1 = D.34718;
          D.30712 = cfg->ip;
          ins->cil_code = D.30712;
          if (0 != 0) goto <D.34719>; else goto <D.34720>;
          <D.34719>:
          D.30489 = cfg->mempool;
          falsebb = mono_mempool_alloc0 (D.30489, 172);
          D.30597 = cfg->num_bblocks;
          D.34721 = D.30597;
          D.34722 = D.34721 + 1;
          cfg->num_bblocks = D.34722;
          D.34723 = (int) D.34721;
          falsebb->block_num = D.34723;
          ins->data.op[0].target_block = default_bblock;
          bblock.127 = cfg->cbb;
          mono_link_bblock (cfg, bblock.127, default_bblock);
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.34724>; else goto <D.34725>;
          <D.34724>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = ins;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          ins->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = ins;
          goto <D.34726>;
          <D.34725>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = ins;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.34726>:
          D.34727 = falsebb->cil_code;
          if (D.34727 != 0B) goto <D.34728>; else goto <D.34729>;
          <D.34728>:
          D.30620 = cfg->cil_offset_to_bb;
          D.34727 = falsebb->cil_code;
          D.34730 = (int) D.34727;
          D.30624 = cfg->cil_start;
          D.30625 = (int) D.30624;
          D.34731 = D.34730 - D.30625;
          D.34732 = (unsigned int) D.34731;
          D.34733 = D.34732 * 4;
          D.34734 = D.30620 + D.34733;
          *D.34734 = falsebb;
          <D.34729>:
          D.30656 = cfg->real_offset;
          falsebb->real_offset = D.30656;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.34738>; else goto <D.34735>;
          <D.34738>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.34739 = D.30741->opcode;
          D.34740 = D.34739 + 64981;
          D.34741 = D.34740 <= 9;
          D.34742 = D.34739 + 64874;
          D.34743 = D.34742 <= 9;
          D.34744 = D.34741 | D.34743;
          if (D.34744 != 0) goto <D.34736>; else goto <D.34745>;
          <D.34745>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.34746 = D.30741->opcode;
          D.34747 = D.34746 + 64884;
          if (D.34747 <= 9) goto <D.34736>; else goto <D.34735>;
          <D.34736>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.34748 = D.30741->data.op[1].many_blocks;
          D.34749 = D.34748 + 4;
          D.34750 = *D.34749;
          if (D.34750 == 0B) goto <D.34751>; else goto <D.34735>;
          <D.34751>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.34748 = D.30741->data.op[1].many_blocks;
          D.34749 = D.34748 + 4;
          *D.34749 = falsebb;
          bblock.127 = cfg->cbb;
          mono_link_bblock (cfg, bblock.127, falsebb);
          goto <D.34737>;
          <D.34735>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 == 0B) goto <D.34752>; else goto <D.34754>;
          <D.34754>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.34755 = D.30741->opcode;
          D.34756 = D.34755 != 446;
          D.34757 = D.34755 != 763;
          D.34758 = D.34756 & D.34757;
          if (D.34758 != 0) goto <D.34759>; else goto <D.34753>;
          <D.34759>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.34760 = D.30741->opcode;
          D.34761 = D.34760 + 64981;
          D.34762 = D.34761 > 9;
          D.34763 = D.34760 + 64874;
          D.34764 = D.34763 > 9;
          D.34765 = D.34762 & D.34764;
          if (D.34765 != 0) goto <D.34766>; else goto <D.34753>;
          <D.34766>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.34746 = D.30741->opcode;
          D.34747 = D.34746 + 64884;
          if (D.34747 > 9) goto <D.34752>; else goto <D.34753>;
          <D.34752>:
          bblock.127 = cfg->cbb;
          mono_link_bblock (cfg, bblock.127, falsebb);
          <D.34753>:
          <D.34737>:
          bblock.127 = cfg->cbb;
          bblock.127->next_bb = falsebb;
          cfg->cbb = falsebb;
          goto <D.34767>;
          <D.34720>:
          D.30489 = cfg->mempool;
          D.34768 = mono_mempool_alloc (D.30489, 8);
          ins->data.op[1].many_blocks = D.34768;
          D.34769 = ins->data.op[1].many_blocks;
          *D.34769 = default_bblock;
          D.34769 = ins->data.op[1].many_blocks;
          D.34770 = D.34769 + 4;
          *D.34770 = 0B;
          bblock.127 = cfg->cbb;
          mono_link_bblock (cfg, bblock.127, default_bblock);
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.34771>; else goto <D.34772>;
          <D.34771>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = ins;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          ins->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = ins;
          goto <D.34773>;
          <D.34772>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = ins;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.34773>:
          D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.34774 = D.30883 & 8;
          if (D.34774 == 0) goto <D.34775>; else goto <D.34776>;
          <D.34775>:
          D.30489 = cfg->mempool;
          falsebb = mono_mempool_alloc0 (D.30489, 172);
          D.30597 = cfg->num_bblocks;
          D.34777 = D.30597;
          D.34778 = D.34777 + 1;
          cfg->num_bblocks = D.34778;
          D.34779 = (int) D.34777;
          falsebb->block_num = D.34779;
          D.34769 = ins->data.op[1].many_blocks;
          D.34770 = D.34769 + 4;
          *D.34770 = falsebb;
          bblock.127 = cfg->cbb;
          mono_link_bblock (cfg, bblock.127, falsebb);
          D.34727 = falsebb->cil_code;
          if (D.34727 != 0B) goto <D.34780>; else goto <D.34781>;
          <D.34780>:
          D.30620 = cfg->cil_offset_to_bb;
          D.34727 = falsebb->cil_code;
          D.34730 = (int) D.34727;
          D.30624 = cfg->cil_start;
          D.30625 = (int) D.30624;
          D.34731 = D.34730 - D.30625;
          D.34732 = (unsigned int) D.34731;
          D.34733 = D.34732 * 4;
          D.34734 = D.30620 + D.34733;
          *D.34734 = falsebb;
          <D.34781>:
          D.30656 = cfg->real_offset;
          falsebb->real_offset = D.30656;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.34785>; else goto <D.34782>;
          <D.34785>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.34786 = D.30741->opcode;
          D.34787 = D.34786 + 64981;
          D.34788 = D.34787 <= 9;
          D.34789 = D.34786 + 64874;
          D.34790 = D.34789 <= 9;
          D.34791 = D.34788 | D.34790;
          if (D.34791 != 0) goto <D.34783>; else goto <D.34792>;
          <D.34792>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.34746 = D.30741->opcode;
          D.34747 = D.34746 + 64884;
          if (D.34747 <= 9) goto <D.34783>; else goto <D.34782>;
          <D.34783>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.34748 = D.30741->data.op[1].many_blocks;
          D.34749 = D.34748 + 4;
          D.34750 = *D.34749;
          if (D.34750 == 0B) goto <D.34793>; else goto <D.34782>;
          <D.34793>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.34748 = D.30741->data.op[1].many_blocks;
          D.34749 = D.34748 + 4;
          *D.34749 = falsebb;
          bblock.127 = cfg->cbb;
          mono_link_bblock (cfg, bblock.127, falsebb);
          goto <D.34784>;
          <D.34782>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 == 0B) goto <D.34794>; else goto <D.34796>;
          <D.34796>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.34797 = D.30741->opcode;
          D.34798 = D.34797 != 446;
          D.34799 = D.34797 != 763;
          D.34800 = D.34798 & D.34799;
          if (D.34800 != 0) goto <D.34801>; else goto <D.34795>;
          <D.34801>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.34802 = D.30741->opcode;
          D.34803 = D.34802 + 64981;
          D.34804 = D.34803 > 9;
          D.34805 = D.34802 + 64874;
          D.34806 = D.34805 > 9;
          D.34807 = D.34804 & D.34806;
          if (D.34807 != 0) goto <D.34808>; else goto <D.34795>;
          <D.34808>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.34746 = D.30741->opcode;
          D.34747 = D.34746 + 64884;
          if (D.34747 > 9) goto <D.34794>; else goto <D.34795>;
          <D.34794>:
          bblock.127 = cfg->cbb;
          mono_link_bblock (cfg, bblock.127, falsebb);
          <D.34795>:
          <D.34784>:
          bblock.127 = cfg->cbb;
          bblock.127->next_bb = falsebb;
          cfg->cbb = falsebb;
          goto <D.34809>;
          <D.34776>:
          bblock.127 = cfg->cbb;
          bblock.127->extended = 1;
          <D.34809>:
          <D.34767>:
        }
        bblock.127 = cfg->cbb;
        bblock = bblock.127;
        i = 0;
        goto <D.27653>;
        <D.27652>:
        i.76 = (unsigned int) i;
        D.31235 = i.76 * 4;
        D.34692 = targets + D.31235;
        D.34693 = *D.34692;
        bblock.78 = bblock;
        link_bblock (cfg, bblock.78, D.34693);
        i = i + 1;
        <D.27653>:
        if (i < n) goto <D.27652>; else goto <D.27654>;
        <D.27654>:
        D.30489 = cfg->mempool;
        table = mono_mempool_alloc (D.30489, 8);
        table->table = targets;
        table->table_size = n;
        use_op_switch = 0;
        if (0 != 0) goto <D.34810>; else goto <D.34811>;
        <D.34810>:
        use_op_switch = 1;
        <D.34811>:
        bblock.127 = cfg->cbb;
        bblock.127->has_jump_table = 1;
        if (use_op_switch != 0) goto <D.34812>; else goto <D.34813>;
        <D.34812>:
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        ins->opcode = 370;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        D.34711 = src1->dreg;
        ins->sreg1 = D.34711;
        ins->data.op[0].p = table;
        ins->data.op[1].many_blocks = targets;
        n.156 = (struct MonoClass *) n;
        ins->klass = n.156;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.34815>; else goto <D.34816>;
        <D.34815>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = ins;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        ins->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        goto <D.34817>;
        <D.34816>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.34817>:
        goto <D.34818>;
        <D.34813>:
        if (0 != 0) goto <D.34819>; else goto <D.34820>;
        <D.34819>:
        {
          struct MonoInst * inst;

          D.30489 = cfg->mempool;
          inst = mono_mempool_alloc (D.30489, 48);
          inst->data.op[1].const_val = 0;
          D.34821 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.34821;
          inst->prev = 0B;
          D.34822 = inst->prev;
          inst->next = D.34822;
          inst->opcode = 443;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.34823 = inst->sreg3;
          inst->sreg2 = D.34823;
          D.34824 = inst->sreg2;
          inst->sreg1 = D.34824;
          D.30712 = cfg->ip;
          inst->cil_code = D.30712;
          inst->dreg = offset_reg;
          D.34711 = src1->dreg;
          inst->sreg1 = D.34711;
          inst->data.op[1].const_val = 3;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.34825>; else goto <D.34826>;
          <D.34825>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = inst;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          inst->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          goto <D.34827>;
          <D.34826>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.34827>:
        }
        goto <D.34828>;
        <D.34820>:
        {
          struct MonoInst * inst;

          D.30489 = cfg->mempool;
          inst = mono_mempool_alloc (D.30489, 48);
          inst->data.op[1].const_val = 0;
          D.34829 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.34829;
          inst->prev = 0B;
          D.34830 = inst->prev;
          inst->next = D.34830;
          inst->opcode = 443;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.34831 = inst->sreg3;
          inst->sreg2 = D.34831;
          D.34832 = inst->sreg2;
          inst->sreg1 = D.34832;
          D.30712 = cfg->ip;
          inst->cil_code = D.30712;
          inst->dreg = offset_reg;
          D.34711 = src1->dreg;
          inst->sreg1 = D.34711;
          inst->data.op[1].const_val = 2;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.34833>; else goto <D.34834>;
          <D.34833>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = inst;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          inst->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          goto <D.34835>;
          <D.34834>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.34835>:
        }
        <D.34828>:
        D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.30884 = D.30883 & 64;
        if (D.30884 != 0) goto <D.34836>; else goto <D.34837>;
        <D.34836>:
        {
          struct MonoInst * inst;

          D.30489 = cfg->mempool;
          inst = mono_mempool_alloc (D.30489, 48);
          inst->data.op[1].const_val = 0;
          D.34838 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.34838;
          inst->prev = 0B;
          D.34839 = inst->prev;
          inst->next = D.34839;
          D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.30884 = D.30883 & 64;
          if (D.30884 != 0) goto <D.34841>; else goto <D.34842>;
          <D.34841>:
          iftmp.157 = 738;
          goto <D.34843>;
          <D.34842>:
          iftmp.157 = 362;
          <D.34843>:
          inst->opcode = iftmp.157;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.34844 = inst->sreg3;
          inst->sreg2 = D.34844;
          D.34845 = inst->sreg2;
          inst->sreg1 = D.34845;
          D.30712 = cfg->ip;
          inst->cil_code = D.30712;
          D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.30884 = D.30883 & 64;
          if (D.30884 != 0) goto <D.34846>; else goto <D.34847>;
          <D.34846>:
          {
            struct MonoInst * group;
            struct MonoInst * got_loc;

            got_loc = mono_get_got_var (cfg);
            D.30489 = cfg->mempool;
            group = mono_mempool_alloc (D.30489, 48);
            group->data.op[1].const_val = 0;
            D.34848 = group->data.op[1].const_val;
            group->data.op[0].const_val = D.34848;
            group->prev = 0B;
            D.34849 = group->prev;
            group->next = D.34849;
            group->opcode = 737;
            group->flags = 0;
            group->type = 0;
            group->dreg = -1;
            group->sreg3 = -1;
            D.34850 = group->sreg3;
            group->sreg2 = D.34850;
            D.34851 = group->sreg2;
            group->sreg1 = D.34851;
            D.30712 = cfg->ip;
            group->cil_code = D.30712;
            group->data.op[0].src = table;
            group->data.op[1].src = 8B;
            D.34852 = got_loc->dreg;
            inst->sreg1 = D.34852;
            inst->data.op[1].p = group;
          }
          goto <D.34853>;
          <D.34847>:
          inst->data.op[0].p = table;
          inst->data.op[1].src = 8B;
          <D.34853>:
          inst->type = 3;
          D.34854 = alloc_dreg (cfg, 3);
          D.34855 = (int) D.34854;
          inst->dreg = D.34855;
          inst->dreg = table_reg;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.34856>; else goto <D.34857>;
          <D.34856>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = inst;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          inst->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          goto <D.34858>;
          <D.34857>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.34858>:
        }
        goto <D.34859>;
        <D.34837>:
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        ins->opcode = 735;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        ins->data.op[1].const_val = 8;
        ins->data.op[0].p = table;
        ins->dreg = table_reg;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.34860>; else goto <D.34861>;
        <D.34860>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = ins;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        ins->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        goto <D.34862>;
        <D.34861>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.34862>:
        <D.34859>:
        {
          struct MonoInst * inst;

          D.30489 = cfg->mempool;
          inst = mono_mempool_alloc (D.30489, 48);
          inst->data.op[1].const_val = 0;
          D.34863 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.34863;
          inst->prev = 0B;
          D.34864 = inst->prev;
          inst->next = D.34864;
          inst->opcode = 569;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.34865 = inst->sreg3;
          inst->sreg2 = D.34865;
          D.34866 = inst->sreg2;
          inst->sreg1 = D.34866;
          D.30712 = cfg->ip;
          inst->cil_code = D.30712;
          inst->dreg = sum_reg;
          inst->sreg1 = table_reg;
          inst->sreg2 = offset_reg;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.34867>; else goto <D.34868>;
          <D.34867>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = inst;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          inst->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          goto <D.34869>;
          <D.34868>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.34869>:
        }
        {
          struct MonoInst * inst;

          D.30489 = cfg->mempool;
          inst = mono_mempool_alloc (D.30489, 48);
          inst->data.op[1].const_val = 0;
          D.34870 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.34870;
          inst->prev = 0B;
          D.34871 = inst->prev;
          inst->next = D.34871;
          inst->opcode = 391;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.34872 = inst->sreg3;
          inst->sreg2 = D.34872;
          D.34873 = inst->sreg2;
          inst->sreg1 = D.34873;
          D.30712 = cfg->ip;
          inst->cil_code = D.30712;
          inst->dreg = target_reg;
          inst->sreg1 = sum_reg;
          inst->data.op[0].const_val = 0;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.34874>; else goto <D.34875>;
          <D.34874>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = inst;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          inst->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          goto <D.34876>;
          <D.34875>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.34876>:
        }
        {
          struct MonoInst * inst;

          D.30489 = cfg->mempool;
          inst = mono_mempool_alloc (D.30489, 48);
          inst->data.op[1].const_val = 0;
          D.34877 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.34877;
          inst->prev = 0B;
          D.34878 = inst->prev;
          inst->next = D.34878;
          inst->opcode = 763;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.34879 = inst->sreg3;
          inst->sreg2 = D.34879;
          D.34880 = inst->sreg2;
          inst->sreg1 = D.34880;
          D.30712 = cfg->ip;
          inst->cil_code = D.30712;
          inst->dreg = -1;
          inst->sreg1 = target_reg;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.34881>; else goto <D.34882>;
          <D.34881>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = inst;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          inst->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          goto <D.34883>;
          <D.34882>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.34883>:
        }
        <D.34818>:
        start_new_bblock = 1;
        inline_costs = inline_costs + 20;
        goto <D.27380>;
      }
      <D.27663>:
      <D.27664>:
      <D.27665>:
      <D.27666>:
      <D.27667>:
      <D.27668>:
      <D.27669>:
      <D.27670>:
      <D.27671>:
      <D.27672>:
      <D.27673>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      if (D.31274 <= 3) goto <D.34884>; else goto <D.34885>;
      <D.34884>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.34886>; else goto <D.34887>;
      <D.34886>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.34888>; else goto <D.34889>;
      <D.34888>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34889>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34887>:
      D.34890 = mini_get_debug_options ();
      D.34891 = D.34890->break_on_unverified;
      if (D.34891 != 0) goto <D.34892>; else goto unverified;
      <D.34892>:
      __asm__ __volatile__("int $03");
      <D.34885>:
      sp = sp + 4294967292;
      D.31371 = *ip;
      D.31372 = (int) D.31371;
      switch (D.31372) <default: <D.27679>, case 76: <D.27677>, case 78: <D.27674>, case 79: <D.27675>, case 80: <D.27678>>
      <D.27674>:
      <D.27675>:
      D.34893 = alloc_freg (cfg);
      dreg = (int) D.34893;
      goto <D.27676>;
      <D.27677>:
      D.34894 = alloc_lreg (cfg);
      dreg = (int) D.34894;
      goto <D.27676>;
      <D.27678>:
      D.34895 = alloc_ireg_ref (cfg);
      dreg = (int) D.34895;
      goto <D.27676>;
      <D.27679>:
      D.34896 = alloc_preg (cfg);
      dreg = (int) D.34896;
      <D.27676>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      D.31371 = *ip;
      D.31372 = (int) D.31371;
      D.34897 = ldind_to_load_membase (D.31372);
      D.34898 = (short unsigned int) D.34897;
      ins->opcode = D.34898;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      ins->dreg = dreg;
      D.31489 = *sp;
      D.31682 = D.31489->dreg;
      ins->sreg1 = D.31682;
      ins->data.op[0].const_val = 0;
      ins->type = 1;
      D.31371 = *ip;
      D.31372 = (int) D.31371;
      D.34899 = D.31372 + -70;
      D.34900 = ldind_type[D.34899];
      D.34901 = (unsigned char) D.34900;
      ins->type = D.34901;
      D.31348 = ins->flags;
      D.34902 = (unsigned char) ins_flag;
      D.34903 = D.31348 | D.34902;
      ins->flags = D.34903;
      ins_flag = 0;
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      if (D.30826 != 0B) goto <D.34904>; else goto <D.34905>;
      <D.34904>:
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      D.30826->next = ins;
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      ins->prev = D.30826;
      bblock.78 = bblock;
      bblock.78->last_ins = ins;
      goto <D.34906>;
      <D.34905>:
      bblock.78 = bblock;
      bblock.78 = bblock;
      bblock.78->last_ins = ins;
      D.30826 = bblock.78->last_ins;
      bblock.78->code = D.30826;
      <D.34906>:
      sp.158 = sp;
      sp = sp.158 + 4;
      *sp.158 = ins;
      D.31348 = ins->flags;
      D.34908 = (int) D.31348;
      D.34909 = D.34908 & 4;
      if (D.34909 != 0) goto <D.34910>; else goto <D.34911>;
      <D.34910>:
      emit_memory_barrier (cfg, 4);
      <D.34911>:
      ip = ip + 1;
      goto <D.27380>;
      <D.27680>:
      <D.27681>:
      <D.27682>:
      <D.27683>:
      <D.27684>:
      <D.27685>:
      <D.27686>:
      <D.27687>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      if (D.31274 <= 7) goto <D.34912>; else goto <D.34913>;
      <D.34912>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.34914>; else goto <D.34915>;
      <D.34914>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.34916>; else goto <D.34917>;
      <D.34916>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34917>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34915>:
      D.34918 = mini_get_debug_options ();
      D.34919 = D.34918->break_on_unverified;
      if (D.34919 != 0) goto <D.34920>; else goto unverified;
      <D.34920>:
      __asm__ __volatile__("int $03");
      <D.34913>:
      sp = sp + 4294967288;
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      D.31371 = *ip;
      D.31372 = (int) D.31371;
      D.34921 = stind_to_store_membase (D.31372);
      D.34922 = (short unsigned int) D.34921;
      ins->opcode = D.34922;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      D.32655 = sp + 4;
      D.32656 = *D.32655;
      D.32657 = D.32656->dreg;
      ins->sreg1 = D.32657;
      D.31489 = *sp;
      D.31682 = D.31489->dreg;
      ins->dreg = D.31682;
      ins->data.op[0].const_val = 0;
      D.31348 = ins->flags;
      D.34902 = (unsigned char) ins_flag;
      D.34903 = D.31348 | D.34902;
      ins->flags = D.34903;
      ins_flag = 0;
      D.31348 = ins->flags;
      D.34908 = (int) D.31348;
      D.34909 = D.34908 & 4;
      if (D.34909 != 0) goto <D.34923>; else goto <D.34924>;
      <D.34923>:
      emit_memory_barrier (cfg, 4);
      <D.34924>:
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      if (D.30826 != 0B) goto <D.34925>; else goto <D.34926>;
      <D.34925>:
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      D.30826->next = ins;
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      ins->prev = D.30826;
      bblock.78 = bblock;
      bblock.78->last_ins = ins;
      goto <D.34927>;
      <D.34926>:
      bblock.78 = bblock;
      bblock.78 = bblock;
      bblock.78->last_ins = ins;
      D.30826 = bblock.78->last_ins;
      bblock.78->code = D.30826;
      <D.34927>:
      D.33752 = BIT_FIELD_REF <*cfg, 8, 3416>;
      D.33753 = D.33752 & 16;
      if (D.33753 != 0) goto <D.34930>; else goto <D.34931>;
      <D.34930>:
      D.31371 = *ip;
      if (D.31371 == 81) goto <D.34932>; else goto <D.34933>;
      <D.34932>:
      D.30431 = BIT_FIELD_REF <*method, 8, 160>;
      D.30432 = D.30431 & 124;
      if (D.30432 != 96) goto <D.34934>; else goto <D.34935>;
      <D.34934>:
      D.32655 = sp + 4;
      D.32656 = *D.32655;
      D.34936 = D.32656->opcode;
      if (D.34936 != 362) goto <D.34928>; else goto <D.34937>;
      <D.34937>:
      D.32655 = sp + 4;
      D.32656 = *D.32655;
      D.34938 = D.32656->data.op[0].p;
      if (D.34938 != 0B) goto <D.34928>; else goto <D.34929>;
      <D.34928>:
      D.32655 = sp + 4;
      D.32656 = *D.32655;
      D.31489 = *sp;
      emit_write_barrier (cfg, D.31489, D.32656);
      <D.34929>:
      <D.34935>:
      <D.34933>:
      <D.34931>:
      inline_costs = inline_costs + 1;
      ip = ip + 1;
      goto <D.27380>;
      <D.27688>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      if (D.31274 <= 7) goto <D.34939>; else goto <D.34940>;
      <D.34939>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.34941>; else goto <D.34942>;
      <D.34941>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.34943>; else goto <D.34944>;
      <D.34943>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34944>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34942>:
      D.34945 = mini_get_debug_options ();
      D.34946 = D.34945->break_on_unverified;
      if (D.34946 != 0) goto <D.34947>; else goto unverified;
      <D.34947>:
      __asm__ __volatile__("int $03");
      <D.34940>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      D.31371 = *ip;
      D.34234 = (short unsigned int) D.31371;
      ins->opcode = D.34234;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      sp = sp + 4294967288;
      D.31489 = *sp;
      D.31682 = D.31489->dreg;
      ins->sreg1 = D.31682;
      D.32655 = sp + 4;
      D.32656 = *D.32655;
      D.32657 = D.32656->dreg;
      ins->sreg2 = D.32657;
      D.32655 = sp + 4;
      D.32656 = *D.32655;
      D.31489 = *sp;
      type_from_op (ins, D.31489, D.32656);
      D.31249 = ins->type;
      if (D.31249 == 0) goto <D.34948>; else goto <D.34949>;
      <D.34948>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.34950>; else goto <D.34951>;
      <D.34950>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.34952>; else goto <D.34953>;
      <D.34952>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34953>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34951>:
      D.34954 = mini_get_debug_options ();
      D.34955 = D.34954->break_on_unverified;
      if (D.34955 != 0) goto <D.34956>; else goto unverified;
      <D.34956>:
      __asm__ __volatile__("int $03");
      <D.34949>:
      D.31249 = ins->type;
      D.31250 = (<unnamed type>) D.31249;
      D.34957 = alloc_dreg (cfg, D.31250);
      D.34958 = (int) D.34957;
      ins->dreg = D.34958;
      D.32655 = sp + 4;
      D.32656 = *D.32655;
      D.34936 = D.32656->opcode;
      if (D.34936 == 362) goto <D.34959>; else goto <D.34960>;
      <D.34959>:
      D.32655 = sp + 4;
      D.32656 = *D.32655;
      D.34961 = D.32656->data.op[0].const_val;
      D.34962 = (long long int) D.34961;
      D.34963 = mono_arch_is_inst_imm (D.34962);
      if (D.34963 != 0) goto <D.34964>; else goto <D.34965>;
      <D.34964>:
      {
        int imm_opcode;

        D.31253 = ins->opcode;
        D.34966 = (int) D.31253;
        imm_opcode = mono_op_to_op_imm_noemul (D.34966);
        if (imm_opcode != -1) goto <D.34967>; else goto <D.34968>;
        <D.34967>:
        D.34969 = (short unsigned int) imm_opcode;
        ins->opcode = D.34969;
        D.32655 = sp + 4;
        D.32656 = *D.32655;
        D.34961 = D.32656->data.op[0].const_val;
        D.34970 = (void *) D.34961;
        ins->data.op[1].p = D.34970;
        ins->sreg2 = -1;
        D.32655 = sp + 4;
        D.32656 = *D.32655;
        D.32656->opcode = 316;
        <D.34968>:
      }
      <D.34965>:
      <D.34960>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.34971>; else goto <D.34972>;
      <D.34971>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.34973>;
      <D.34972>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.34973>:
      sp.159 = sp;
      sp = sp.159 + 4;
      D.34975 = mono_decompose_opcode (cfg, ins);
      *sp.159 = D.34975;
      ip = ip + 1;
      goto <D.27380>;
      <D.27690>:
      <D.27691>:
      <D.27692>:
      <D.27693>:
      <D.27694>:
      <D.27695>:
      <D.27696>:
      <D.27697>:
      <D.27698>:
      <D.27699>:
      <D.27700>:
      <D.27701>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      if (D.31274 <= 7) goto <D.34976>; else goto <D.34977>;
      <D.34976>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.34978>; else goto <D.34979>;
      <D.34978>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.34980>; else goto <D.34981>;
      <D.34980>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34981>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34979>:
      D.34982 = mini_get_debug_options ();
      D.34983 = D.34982->break_on_unverified;
      if (D.34983 != 0) goto <D.34984>; else goto unverified;
      <D.34984>:
      __asm__ __volatile__("int $03");
      <D.34977>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      D.31371 = *ip;
      D.34234 = (short unsigned int) D.31371;
      ins->opcode = D.34234;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      sp = sp + 4294967288;
      D.31489 = *sp;
      D.31682 = D.31489->dreg;
      ins->sreg1 = D.31682;
      D.32655 = sp + 4;
      D.32656 = *D.32655;
      D.32657 = D.32656->dreg;
      ins->sreg2 = D.32657;
      D.32655 = sp + 4;
      D.32656 = *D.32655;
      D.31489 = *sp;
      type_from_op (ins, D.31489, D.32656);
      D.31249 = ins->type;
      if (D.31249 == 0) goto <D.34985>; else goto <D.34986>;
      <D.34985>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.34987>; else goto <D.34988>;
      <D.34987>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.34989>; else goto <D.34990>;
      <D.34989>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34990>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34988>:
      D.34991 = mini_get_debug_options ();
      D.34992 = D.34991->break_on_unverified;
      if (D.34992 != 0) goto <D.34993>; else goto unverified;
      <D.34993>:
      __asm__ __volatile__("int $03");
      <D.34986>:
      D.31249 = ins->type;
      D.31250 = (<unnamed type>) D.31249;
      D.34994 = alloc_dreg (cfg, D.31250);
      D.34995 = (int) D.34994;
      ins->dreg = D.34995;
      D.32655 = sp + 4;
      D.32656 = *D.32655;
      D.34936 = D.32656->opcode;
      D.34996 = D.34936 + 65174;
      if (D.34996 <= 1) goto <D.34997>; else goto <D.34998>;
      <D.34997>:
      D.32655 = sp + 4;
      D.32656 = *D.32655;
      D.34936 = D.32656->opcode;
      if (D.34936 == 362) goto <D.35000>; else goto <D.35001>;
      <D.35000>:
      D.32655 = sp + 4;
      D.32656 = *D.32655;
      D.34961 = D.32656->data.op[0].const_val;
      iftmp.160 = (gint64) D.34961;
      goto <D.35002>;
      <D.35001>:
      D.32655 = sp + 4;
      D.32656 = *D.32655;
      iftmp.160 = D.32656->data.i8const;
      <D.35002>:
      D.35003 = mono_arch_is_inst_imm (iftmp.160);
      if (D.35003 != 0) goto <D.35004>; else goto <D.35005>;
      <D.35004>:
      {
        int imm_opcode;

        D.31253 = ins->opcode;
        D.34966 = (int) D.31253;
        imm_opcode = mono_op_to_op_imm_noemul (D.34966);
        if (imm_opcode != -1) goto <D.35006>; else goto <D.35007>;
        <D.35006>:
        D.35008 = (short unsigned int) imm_opcode;
        ins->opcode = D.35008;
        D.32655 = sp + 4;
        D.32656 = *D.32655;
        D.34936 = D.32656->opcode;
        if (D.34936 == 363) goto <D.35009>; else goto <D.35010>;
        <D.35009>:
        D.32655 = sp + 4;
        D.32656 = *D.32655;
        D.34961 = D.32656->data.op[0].const_val;
        ins->data.op[0].const_val = D.34961;
        D.32655 = sp + 4;
        D.32656 = *D.32655;
        D.35011 = D.32656->data.op[1].const_val;
        ins->data.op[1].const_val = D.35011;
        goto <D.35012>;
        <D.35010>:
        D.32655 = sp + 4;
        D.32656 = *D.32655;
        D.34961 = D.32656->data.op[0].const_val;
        ins->data.op[1].const_val = D.34961;
        <D.35012>:
        ins->sreg2 = -1;
        D.32655 = sp + 4;
        D.32656 = *D.32655;
        D.35013 = D.32656->next;
        if (D.35013 == 0B) goto <D.35014>; else goto <D.35015>;
        <D.35014>:
        D.32655 = sp + 4;
        D.32656 = *D.32655;
        D.32656->opcode = 316;
        <D.35015>:
        <D.35007>:
      }
      <D.35005>:
      <D.34998>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.35016>; else goto <D.35017>;
      <D.35016>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.35018>;
      <D.35017>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.35018>:
      sp.161 = sp;
      sp = sp.161 + 4;
      D.35020 = mono_decompose_opcode (cfg, ins);
      *sp.161 = D.35020;
      ip = ip + 1;
      goto <D.27380>;
      <D.27703>:
      <D.27704>:
      <D.27705>:
      <D.27706>:
      <D.27707>:
      <D.27708>:
      <D.27709>:
      <D.27710>:
      <D.27711>:
      <D.27712>:
      <D.27713>:
      <D.27714>:
      <D.27715>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      if (D.31274 <= 3) goto <D.35021>; else goto <D.35022>;
      <D.35021>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.35023>; else goto <D.35024>;
      <D.35023>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.35025>; else goto <D.35026>;
      <D.35025>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35026>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35024>:
      D.35027 = mini_get_debug_options ();
      D.35028 = D.35027->break_on_unverified;
      if (D.35028 != 0) goto <D.35029>; else goto unverified;
      <D.35029>:
      __asm__ __volatile__("int $03");
      <D.35022>:
      D.35032 = *ip;
      D.35033 = D.35032 == 106;
      D.35034 = D.35032 == 110;
      D.35035 = D.35033 | D.35034;
      if (D.35035 != 0) goto <D.35036>; else goto <D.35030>;
      <D.35036>:
      D.34379 = sp + 4294967292;
      D.34380 = *D.34379;
      D.35037 = D.34380->opcode;
      if (D.35037 == 362) goto <D.35038>; else goto <D.35030>;
      <D.35038>:
      {
        int data;

        D.34379 = sp + 4294967292;
        D.34380 = *D.34379;
        data = D.34380->data.op[0].const_val;
        D.34379 = sp + 4294967292;
        D.34380 = *D.34379;
        D.34380->opcode = 363;
        D.34379 = sp + 4294967292;
        D.34380 = *D.34379;
        D.34380->type = 2;
        D.34379 = sp + 4294967292;
        D.34380 = *D.34379;
        D.34380->data.op[0].const_val = data;
        D.31371 = *ip;
        if (D.31371 == 110) goto <D.35039>; else goto <D.35040>;
        <D.35039>:
        D.34379 = sp + 4294967292;
        D.34380 = *D.34379;
        D.34380->data.op[1].const_val = 0;
        goto <D.35041>;
        <D.35040>:
        D.34379 = sp + 4294967292;
        D.34380 = *D.34379;
        if (data < 0) goto <D.35043>; else goto <D.35044>;
        <D.35043>:
        iftmp.162 = -1;
        goto <D.35045>;
        <D.35044>:
        iftmp.162 = 0;
        <D.35045>:
        D.34380->data.op[1].const_val = iftmp.162;
        <D.35041>:
        D.34379 = sp + 4294967292;
        D.34380 = *D.34379;
        D.35046 = alloc_dreg (cfg, 2);
        D.35047 = (int) D.35046;
        D.34380->dreg = D.35047;
      }
      goto <D.35031>;
      <D.35030>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      D.31371 = *ip;
      D.34234 = (short unsigned int) D.31371;
      ins->opcode = D.34234;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      sp = sp + 4294967292;
      D.31489 = *sp;
      D.31682 = D.31489->dreg;
      ins->sreg1 = D.31682;
      D.31489 = *sp;
      type_from_op (ins, D.31489, 0B);
      D.31249 = ins->type;
      if (D.31249 == 0) goto <D.35048>; else goto <D.35049>;
      <D.35048>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.35050>; else goto <D.35051>;
      <D.35050>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.35052>; else goto <D.35053>;
      <D.35052>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35053>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35051>:
      D.35054 = mini_get_debug_options ();
      D.35055 = D.35054->break_on_unverified;
      if (D.35055 != 0) goto <D.35056>; else goto unverified;
      <D.35056>:
      __asm__ __volatile__("int $03");
      <D.35049>:
      D.31249 = ins->type;
      D.31250 = (<unnamed type>) D.31249;
      D.35057 = alloc_dreg (cfg, D.31250);
      D.35058 = (int) D.35057;
      ins->dreg = D.35058;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.35059>; else goto <D.35060>;
      <D.35059>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.35061>;
      <D.35060>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.35061>:
      sp.163 = sp;
      sp = sp.163 + 4;
      D.35063 = mono_decompose_opcode (cfg, ins);
      *sp.163 = D.35063;
      <D.35031>:
      ip = ip + 1;
      goto <D.27380>;
      <D.27717>:
      <D.27718>:
      <D.27719>:
      <D.27720>:
      <D.27721>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      if (D.31274 <= 3) goto <D.35064>; else goto <D.35065>;
      <D.35064>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.35066>; else goto <D.35067>;
      <D.35066>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.35068>; else goto <D.35069>;
      <D.35068>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35069>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35067>:
      D.35070 = mini_get_debug_options ();
      D.35071 = D.35070->break_on_unverified;
      if (D.35071 != 0) goto <D.35072>; else goto unverified;
      <D.35072>:
      __asm__ __volatile__("int $03");
      <D.35065>:
      D.34379 = sp + 4294967292;
      D.34380 = *D.34379;
      D.35073 = D.34380->type;
      if (D.35073 == 4) goto <D.35074>; else goto <D.35075>;
      <D.35074>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 185;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      sp = sp + 4294967292;
      D.31489 = *sp;
      D.31682 = D.31489->dreg;
      ins->sreg1 = D.31682;
      D.31489 = *sp;
      type_from_op (ins, D.31489, 0B);
      D.31249 = ins->type;
      if (D.31249 == 0) goto <D.35076>; else goto <D.35077>;
      <D.35076>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.35078>; else goto <D.35079>;
      <D.35078>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.35080>; else goto <D.35081>;
      <D.35080>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35081>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35079>:
      D.35082 = mini_get_debug_options ();
      D.35083 = D.35082->break_on_unverified;
      if (D.35083 != 0) goto <D.35084>; else goto unverified;
      <D.35084>:
      __asm__ __volatile__("int $03");
      <D.35077>:
      D.31249 = ins->type;
      D.31250 = (<unnamed type>) D.31249;
      D.35085 = alloc_dreg (cfg, D.31250);
      D.35086 = (int) D.35085;
      ins->dreg = D.35086;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.35087>; else goto <D.35088>;
      <D.35087>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.35089>;
      <D.35088>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.35089>:
      sp.164 = sp;
      sp = sp.164 + 4;
      D.35091 = mono_decompose_opcode (cfg, ins);
      *sp.164 = D.35091;
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      D.31371 = *ip;
      D.34234 = (short unsigned int) D.31371;
      ins->opcode = D.34234;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      sp = sp + 4294967292;
      D.31489 = *sp;
      D.31682 = D.31489->dreg;
      ins->sreg1 = D.31682;
      D.31489 = *sp;
      type_from_op (ins, D.31489, 0B);
      D.31249 = ins->type;
      if (D.31249 == 0) goto <D.35092>; else goto <D.35093>;
      <D.35092>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.35094>; else goto <D.35095>;
      <D.35094>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.35096>; else goto <D.35097>;
      <D.35096>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35097>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35095>:
      D.35098 = mini_get_debug_options ();
      D.35099 = D.35098->break_on_unverified;
      if (D.35099 != 0) goto <D.35100>; else goto unverified;
      <D.35100>:
      __asm__ __volatile__("int $03");
      <D.35093>:
      D.31249 = ins->type;
      D.31250 = (<unnamed type>) D.31249;
      D.35101 = alloc_dreg (cfg, D.31250);
      D.35102 = (int) D.35101;
      ins->dreg = D.35102;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.35103>; else goto <D.35104>;
      <D.35103>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.35105>;
      <D.35104>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.35105>:
      sp.165 = sp;
      sp = sp.165 + 4;
      D.35107 = mono_decompose_opcode (cfg, ins);
      *sp.165 = D.35107;
      goto <D.35108>;
      <D.35075>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      D.31371 = *ip;
      D.34234 = (short unsigned int) D.31371;
      ins->opcode = D.34234;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      sp = sp + 4294967292;
      D.31489 = *sp;
      D.31682 = D.31489->dreg;
      ins->sreg1 = D.31682;
      D.31489 = *sp;
      type_from_op (ins, D.31489, 0B);
      D.31249 = ins->type;
      if (D.31249 == 0) goto <D.35109>; else goto <D.35110>;
      <D.35109>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.35111>; else goto <D.35112>;
      <D.35111>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.35113>; else goto <D.35114>;
      <D.35113>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35114>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35112>:
      D.35115 = mini_get_debug_options ();
      D.35116 = D.35115->break_on_unverified;
      if (D.35116 != 0) goto <D.35117>; else goto unverified;
      <D.35117>:
      __asm__ __volatile__("int $03");
      <D.35110>:
      D.31249 = ins->type;
      D.31250 = (<unnamed type>) D.31249;
      D.35118 = alloc_dreg (cfg, D.31250);
      D.35119 = (int) D.35118;
      ins->dreg = D.35119;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.35120>; else goto <D.35121>;
      <D.35120>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.35122>;
      <D.35121>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.35122>:
      sp.166 = sp;
      sp = sp.166 + 4;
      D.35124 = mono_decompose_opcode (cfg, ins);
      *sp.166 = D.35124;
      <D.35108>:
      ip = ip + 1;
      goto <D.27380>;
      <D.27722>:
      <D.27723>:
      <D.27724>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      if (D.31274 <= 3) goto <D.35125>; else goto <D.35126>;
      <D.35125>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.35127>; else goto <D.35128>;
      <D.35127>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.35129>; else goto <D.35130>;
      <D.35129>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35130>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35128>:
      D.35131 = mini_get_debug_options ();
      D.35132 = D.35131->break_on_unverified;
      if (D.35132 != 0) goto <D.35133>; else goto unverified;
      <D.35133>:
      __asm__ __volatile__("int $03");
      <D.35126>:
      D.34379 = sp + 4294967292;
      D.34380 = *D.34379;
      D.35073 = D.34380->type;
      if (D.35073 == 4) goto <D.35134>; else goto <D.35135>;
      <D.35134>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 186;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      sp = sp + 4294967292;
      D.31489 = *sp;
      D.31682 = D.31489->dreg;
      ins->sreg1 = D.31682;
      D.31489 = *sp;
      type_from_op (ins, D.31489, 0B);
      D.31249 = ins->type;
      if (D.31249 == 0) goto <D.35136>; else goto <D.35137>;
      <D.35136>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.35138>; else goto <D.35139>;
      <D.35138>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.35140>; else goto <D.35141>;
      <D.35140>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35141>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35139>:
      D.35142 = mini_get_debug_options ();
      D.35143 = D.35142->break_on_unverified;
      if (D.35143 != 0) goto <D.35144>; else goto unverified;
      <D.35144>:
      __asm__ __volatile__("int $03");
      <D.35137>:
      D.31249 = ins->type;
      D.31250 = (<unnamed type>) D.31249;
      D.35145 = alloc_dreg (cfg, D.31250);
      D.35146 = (int) D.35145;
      ins->dreg = D.35146;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.35147>; else goto <D.35148>;
      <D.35147>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.35149>;
      <D.35148>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.35149>:
      sp.167 = sp;
      sp = sp.167 + 4;
      D.35151 = mono_decompose_opcode (cfg, ins);
      *sp.167 = D.35151;
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      D.31371 = *ip;
      D.34234 = (short unsigned int) D.31371;
      ins->opcode = D.34234;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      sp = sp + 4294967292;
      D.31489 = *sp;
      D.31682 = D.31489->dreg;
      ins->sreg1 = D.31682;
      D.31489 = *sp;
      type_from_op (ins, D.31489, 0B);
      D.31249 = ins->type;
      if (D.31249 == 0) goto <D.35152>; else goto <D.35153>;
      <D.35152>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.35154>; else goto <D.35155>;
      <D.35154>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.35156>; else goto <D.35157>;
      <D.35156>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35157>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35155>:
      D.35158 = mini_get_debug_options ();
      D.35159 = D.35158->break_on_unverified;
      if (D.35159 != 0) goto <D.35160>; else goto unverified;
      <D.35160>:
      __asm__ __volatile__("int $03");
      <D.35153>:
      D.31249 = ins->type;
      D.31250 = (<unnamed type>) D.31249;
      D.35161 = alloc_dreg (cfg, D.31250);
      D.35162 = (int) D.35161;
      ins->dreg = D.35162;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.35163>; else goto <D.35164>;
      <D.35163>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.35165>;
      <D.35164>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.35165>:
      sp.168 = sp;
      sp = sp.168 + 4;
      D.35167 = mono_decompose_opcode (cfg, ins);
      *sp.168 = D.35167;
      goto <D.35168>;
      <D.35135>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      D.31371 = *ip;
      D.34234 = (short unsigned int) D.31371;
      ins->opcode = D.34234;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      sp = sp + 4294967292;
      D.31489 = *sp;
      D.31682 = D.31489->dreg;
      ins->sreg1 = D.31682;
      D.31489 = *sp;
      type_from_op (ins, D.31489, 0B);
      D.31249 = ins->type;
      if (D.31249 == 0) goto <D.35169>; else goto <D.35170>;
      <D.35169>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.35171>; else goto <D.35172>;
      <D.35171>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.35173>; else goto <D.35174>;
      <D.35173>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35174>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35172>:
      D.35175 = mini_get_debug_options ();
      D.35176 = D.35175->break_on_unverified;
      if (D.35176 != 0) goto <D.35177>; else goto unverified;
      <D.35177>:
      __asm__ __volatile__("int $03");
      <D.35170>:
      D.31249 = ins->type;
      D.31250 = (<unnamed type>) D.31249;
      D.35178 = alloc_dreg (cfg, D.31250);
      D.35179 = (int) D.35178;
      ins->dreg = D.35179;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.35180>; else goto <D.35181>;
      <D.35180>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.35182>;
      <D.35181>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.35182>:
      sp.169 = sp;
      sp = sp.169 + 4;
      D.35184 = mono_decompose_opcode (cfg, ins);
      *sp.169 = D.35184;
      <D.35168>:
      ip = ip + 1;
      goto <D.27380>;
      <D.27725>:
      <D.27726>:
      <D.27727>:
      <D.27728>:
      <D.27729>:
      <D.27730>:
      <D.27731>:
      <D.27732>:
      <D.27733>:
      <D.27734>:
      <D.27735>:
      <D.27736>:
      <D.27737>:
      <D.27738>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      if (D.31274 <= 3) goto <D.35185>; else goto <D.35186>;
      <D.35185>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.35187>; else goto <D.35188>;
      <D.35187>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.35189>; else goto <D.35190>;
      <D.35189>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35190>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35188>:
      D.35191 = mini_get_debug_options ();
      D.35192 = D.35191->break_on_unverified;
      if (D.35192 != 0) goto <D.35193>; else goto unverified;
      <D.35193>:
      __asm__ __volatile__("int $03");
      <D.35186>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      D.31371 = *ip;
      D.34234 = (short unsigned int) D.31371;
      ins->opcode = D.34234;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      sp = sp + 4294967292;
      D.31489 = *sp;
      D.31682 = D.31489->dreg;
      ins->sreg1 = D.31682;
      D.31489 = *sp;
      type_from_op (ins, D.31489, 0B);
      D.31249 = ins->type;
      if (D.31249 == 0) goto <D.35194>; else goto <D.35195>;
      <D.35194>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.35196>; else goto <D.35197>;
      <D.35196>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.35198>; else goto <D.35199>;
      <D.35198>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35199>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35197>:
      D.35200 = mini_get_debug_options ();
      D.35201 = D.35200->break_on_unverified;
      if (D.35201 != 0) goto <D.35202>; else goto unverified;
      <D.35202>:
      __asm__ __volatile__("int $03");
      <D.35195>:
      D.31249 = ins->type;
      D.31250 = (<unnamed type>) D.31249;
      D.35203 = alloc_dreg (cfg, D.31250);
      D.35204 = (int) D.35203;
      ins->dreg = D.35204;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.35205>; else goto <D.35206>;
      <D.35205>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.35207>;
      <D.35206>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.35207>:
      sp.170 = sp;
      sp = sp.170 + 4;
      D.35209 = mono_decompose_opcode (cfg, ins);
      *sp.170 = D.35209;
      D.31057 = cfg->exception_type;
      if (D.31057 != 0) goto exception_exit; else goto <D.35210>;
      <D.35210>:
      ip = ip + 1;
      goto <D.27380>;
      <D.27739>:
      <D.27740>:
      <D.27741>:
      <D.27742>:
      <D.27743>:
      <D.27744>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      if (D.31274 <= 7) goto <D.35211>; else goto <D.35212>;
      <D.35211>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.35213>; else goto <D.35214>;
      <D.35213>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.35215>; else goto <D.35216>;
      <D.35215>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35216>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35214>:
      D.35217 = mini_get_debug_options ();
      D.35218 = D.35217->break_on_unverified;
      if (D.35218 != 0) goto <D.35219>; else goto unverified;
      <D.35219>:
      __asm__ __volatile__("int $03");
      <D.35212>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      D.31371 = *ip;
      D.34234 = (short unsigned int) D.31371;
      ins->opcode = D.34234;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      sp = sp + 4294967288;
      D.31489 = *sp;
      D.31682 = D.31489->dreg;
      ins->sreg1 = D.31682;
      D.32655 = sp + 4;
      D.32656 = *D.32655;
      D.32657 = D.32656->dreg;
      ins->sreg2 = D.32657;
      D.32655 = sp + 4;
      D.32656 = *D.32655;
      D.31489 = *sp;
      type_from_op (ins, D.31489, D.32656);
      D.31249 = ins->type;
      if (D.31249 == 0) goto <D.35220>; else goto <D.35221>;
      <D.35220>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.35222>; else goto <D.35223>;
      <D.35222>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.35224>; else goto <D.35225>;
      <D.35224>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35225>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35223>:
      D.35226 = mini_get_debug_options ();
      D.35227 = D.35226->break_on_unverified;
      if (D.35227 != 0) goto <D.35228>; else goto unverified;
      <D.35228>:
      __asm__ __volatile__("int $03");
      <D.35221>:
      D.31249 = ins->type;
      D.31250 = (<unnamed type>) D.31249;
      D.35229 = alloc_dreg (cfg, D.31250);
      D.35230 = (int) D.35229;
      ins->dreg = D.35230;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.35231>; else goto <D.35232>;
      <D.35231>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.35233>;
      <D.35232>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.35233>:
      sp.171 = sp;
      sp = sp.171 + 4;
      D.35235 = mono_decompose_opcode (cfg, ins);
      *sp.171 = D.35235;
      ip = ip + 1;
      goto <D.27380>;
      <D.27745>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.35236>; else goto <D.35237>;
      <D.35236>:
      D.31371 = *ip;
      D.31372 = (int) D.31371;
      D.35238 = mono_opcode_name (D.31372);
      D.32188 = method->signature;
      D.32189 = D.32188->param_count;
      D.32190 = (int) D.32189;
      D.32191 = method->name;
      D.30426 = method->klass;
      D.32192 = D.30426->name;
      D.30426 = method->klass;
      D.32193 = D.30426->name_space;
      D.35239 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.32193, D.32192, D.32191, D.32190, D.35238, "method-to-ir.c", 9069);
      cfg->exception_message = D.35239;
      D.30569 = cfg->verbose_level;
      if (D.30569 > 1) goto <D.35240>; else goto <D.35241>;
      <D.35240>:
      D.32197 = cfg->exception_message;
      printf ("%s\n", D.32197);
      <D.35241>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35237>:
      D.31934 = ip + 5;
      if (D.31934 > end) goto <D.35242>; else goto <D.35243>;
      <D.35242>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.35244>; else goto <D.35245>;
      <D.35244>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.35246>; else goto <D.35247>;
      <D.35246>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35247>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35245>:
      D.35248 = mini_get_debug_options ();
      D.35249 = D.35248->break_on_unverified;
      if (D.35249 != 0) goto <D.35250>; else goto unverified;
      <D.35250>:
      __asm__ __volatile__("int $03");
      <D.35243>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      if (D.31274 <= 7) goto <D.35251>; else goto <D.35252>;
      <D.35251>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.35253>; else goto <D.35254>;
      <D.35253>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.35255>; else goto <D.35256>;
      <D.35255>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35256>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35254>:
      D.35257 = mini_get_debug_options ();
      D.35258 = D.35257->break_on_unverified;
      if (D.35258 != 0) goto <D.35259>; else goto unverified;
      <D.35259>:
      __asm__ __volatile__("int $03");
      <D.35252>:
      token = MEM[(const guint32 *)ip + 1B];
      klass.172 = mini_get_class (method, token, generic_context);
      klass = klass.172;
      klass.173 = klass;
      if (klass.173 == 0B) goto <D.35261>; else goto <D.35264>;
      <D.35264>:
      klass.173 = klass;
      D.35265 = klass.173->exception_type;
      if (D.35265 != 0) goto <D.35261>; else goto <D.35262>;
      <D.35261>:
      klass.173 = klass;
      cfg->exception_ptr = klass.173;
      D.35266 = mini_get_debug_options ();
      D.35267 = D.35266->break_on_unverified;
      if (D.35267 != 0) goto <D.35268>; else goto load_error;
      <D.35268>:
      __asm__ __volatile__("int $03");
      <D.35262>:
      sp = sp + 4294967288;
      klass.173 = klass;
      D.35269 = generic_class_is_reference_type (cfg, klass.173);
      if (D.35269 != 0) goto <D.35270>; else goto <D.35271>;
      <D.35270>:
      {
        struct MonoInst * store;
        struct MonoInst * load;
        int dreg;

        D.35272 = alloc_ireg_ref (cfg);
        dreg = (int) D.35272;
        D.30489 = cfg->mempool;
        load = mono_mempool_alloc (D.30489, 48);
        load->data.op[1].const_val = 0;
        D.35273 = load->data.op[1].const_val;
        load->data.op[0].const_val = D.35273;
        load->prev = 0B;
        D.35274 = load->prev;
        load->next = D.35274;
        load->opcode = 391;
        load->flags = 0;
        load->type = 0;
        load->dreg = -1;
        load->sreg3 = -1;
        D.35275 = load->sreg3;
        load->sreg2 = D.35275;
        D.35276 = load->sreg2;
        load->sreg1 = D.35276;
        D.30712 = cfg->ip;
        load->cil_code = D.30712;
        load->dreg = dreg;
        D.32655 = sp + 4;
        D.32656 = *D.32655;
        D.32657 = D.32656->dreg;
        load->sreg1 = D.32657;
        load->data.op[0].const_val = 0;
        load->type = 1;
        D.35277 = load->flags;
        D.34902 = (unsigned char) ins_flag;
        D.35278 = D.35277 | D.34902;
        load->flags = D.35278;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.35279>; else goto <D.35280>;
        <D.35279>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = load;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        load->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = load;
        goto <D.35281>;
        <D.35280>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = load;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.35281>:
        D.30489 = cfg->mempool;
        store = mono_mempool_alloc (D.30489, 48);
        store->data.op[1].const_val = 0;
        D.35282 = store->data.op[1].const_val;
        store->data.op[0].const_val = D.35282;
        store->prev = 0B;
        D.35283 = store->prev;
        store->next = D.35283;
        store->opcode = 374;
        store->flags = 0;
        store->type = 0;
        store->dreg = -1;
        store->sreg3 = -1;
        D.35284 = store->sreg3;
        store->sreg2 = D.35284;
        D.35285 = store->sreg2;
        store->sreg1 = D.35285;
        D.30712 = cfg->ip;
        store->cil_code = D.30712;
        store->sreg1 = dreg;
        D.31489 = *sp;
        D.31682 = D.31489->dreg;
        store->dreg = D.31682;
        store->data.op[0].const_val = 0;
        D.35286 = store->flags;
        D.34902 = (unsigned char) ins_flag;
        D.35287 = D.35286 | D.34902;
        store->flags = D.35287;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.35288>; else goto <D.35289>;
        <D.35288>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = store;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        store->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = store;
        goto <D.35290>;
        <D.35289>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = store;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.35290>:
        D.33752 = BIT_FIELD_REF <*cfg, 8, 3416>;
        D.33753 = D.33752 & 16;
        if (D.33753 != 0) goto <D.35291>; else goto <D.35292>;
        <D.35291>:
        D.30459 = cfg->method;
        D.32440 = BIT_FIELD_REF <*D.30459, 8, 160>;
        D.32441 = D.32440 & 124;
        if (D.32441 != 96) goto <D.35293>; else goto <D.35294>;
        <D.35293>:
        D.32655 = sp + 4;
        D.32656 = *D.32655;
        D.31489 = *sp;
        emit_write_barrier (cfg, D.31489, D.32656);
        <D.35294>:
        <D.35292>:
      }
      goto <D.35295>;
      <D.35271>:
      klass.173 = klass;
      D.32655 = sp + 4;
      D.32656 = *D.32655;
      D.31489 = *sp;
      mini_emit_stobj (cfg, D.31489, D.32656, klass.173, 0);
      <D.35295>:
      ins_flag = 0;
      ip = ip + 5;
      goto <D.27380>;
      <D.27749>:
      {
        int loc_index;
        int stloc_len;

        loc_index = -1;
        stloc_len = 0;
        D.31934 = ip + 5;
        if (D.31934 > end) goto <D.35296>; else goto <D.35297>;
        <D.35296>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.35298>; else goto <D.35299>;
        <D.35298>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.35300>; else goto <D.35301>;
        <D.35300>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.35301>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.35299>:
        D.35302 = mini_get_debug_options ();
        D.35303 = D.35302->break_on_unverified;
        if (D.35303 != 0) goto <D.35304>; else goto unverified;
        <D.35304>:
        __asm__ __volatile__("int $03");
        <D.35297>:
        sp.85 = (int) sp;
        stack_start.86 = (int) stack_start;
        D.31274 = sp.85 - stack_start.86;
        if (D.31274 <= 3) goto <D.35305>; else goto <D.35306>;
        <D.35305>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.35307>; else goto <D.35308>;
        <D.35307>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.35309>; else goto <D.35310>;
        <D.35309>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.35310>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.35308>:
        D.35311 = mini_get_debug_options ();
        D.35312 = D.35311->break_on_unverified;
        if (D.35312 != 0) goto <D.35313>; else goto unverified;
        <D.35313>:
        __asm__ __volatile__("int $03");
        <D.35306>:
        sp = sp + 4294967292;
        token = MEM[(const guint32 *)ip + 1B];
        klass.174 = mini_get_class (method, token, generic_context);
        klass = klass.174;
        klass.173 = klass;
        if (klass.173 == 0B) goto <D.35315>; else goto <D.35317>;
        <D.35317>:
        klass.173 = klass;
        D.35265 = klass.173->exception_type;
        if (D.35265 != 0) goto <D.35315>; else goto <D.35316>;
        <D.35315>:
        klass.173 = klass;
        cfg->exception_ptr = klass.173;
        D.35318 = mini_get_debug_options ();
        D.35319 = D.35318->break_on_unverified;
        if (D.35319 != 0) goto <D.35320>; else goto load_error;
        <D.35320>:
        __asm__ __volatile__("int $03");
        <D.35316>:
        D.31934 = ip + 5;
        D.33433 = *D.31934;
        D.35321 = (int) D.33433;
        switch (D.35321) <default: <D.27758>, case 10: <D.27754>, case 11: <D.27755>, case 12: <D.27756>, case 13: <D.27757>, case 19: <D.27752>>
        <D.27752>:
        D.35322 = ip + 6;
        D.35323 = *D.35322;
        loc_index = (int) D.35323;
        stloc_len = 2;
        goto <D.27753>;
        <D.27754>:
        <D.27755>:
        <D.27756>:
        <D.27757>:
        D.31934 = ip + 5;
        D.33433 = *D.31934;
        D.35321 = (int) D.33433;
        loc_index = D.35321 + -10;
        stloc_len = 1;
        goto <D.27753>;
        <D.27758>:
        goto <D.27753>;
        <D.27753>:
        if (loc_index != -1) goto <D.35324>; else goto <D.35325>;
        <D.35324>:
        D.33474 = ip + 5;
        bblock.78 = bblock;
        D.35326 = ip_in_bb (cfg, bblock.78, D.33474);
        if (D.35326 != 0) goto <D.35327>; else goto <D.35328>;
        <D.35327>:
        loc_index.175 = (unsigned int) loc_index;
        D.31093 = header->num_locals;
        D.31443 = (unsigned int) D.31093;
        if (loc_index.175 >= D.31443) goto <D.35330>; else goto <D.35331>;
        <D.35330>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.35332>; else goto <D.35333>;
        <D.35332>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.35334>; else goto <D.35335>;
        <D.35334>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.35335>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.35333>:
        D.35336 = mini_get_debug_options ();
        D.35337 = D.35336->break_on_unverified;
        if (D.35337 != 0) goto <D.35338>; else goto unverified;
        <D.35338>:
        __asm__ __volatile__("int $03");
        <D.35331>:
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        klass.173 = klass;
        D.35339 = &klass.173->byval_arg;
        D.35340 = mono_type_to_load_membase (cfg, D.35339);
        D.35341 = (short unsigned int) D.35340;
        ins->opcode = D.35341;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        ins->dreg = 0;
        D.31489 = *sp;
        D.31682 = D.31489->dreg;
        ins->sreg1 = D.31682;
        ins->data.op[0].const_val = 0;
        ins->type = 1;
        klass.173 = klass;
        D.35339 = &klass.173->byval_arg;
        type_to_eval_stack_type (cfg, D.35339, ins);
        D.31249 = ins->type;
        D.31250 = (<unnamed type>) D.31249;
        D.35342 = alloc_dreg (cfg, D.31250);
        D.35343 = (int) D.35342;
        ins->dreg = D.35343;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.35344>; else goto <D.35345>;
        <D.35344>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = ins;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        ins->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        goto <D.35346>;
        <D.35345>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.35346>:
        D.31455 = cfg->locals;
        loc_index.175 = (unsigned int) loc_index;
        D.35347 = loc_index.175 * 4;
        D.35348 = D.31455 + D.35347;
        D.35349 = *D.35348;
        D.35350 = D.35349->dreg;
        ins->dreg = D.35350;
        ip = ip + 5;
        stloc_len.176 = (sizetype) stloc_len;
        ip = ip + stloc_len.176;
        goto <D.27380>;
        <D.35328>:
        <D.35325>:
        D.31934 = ip + 5;
        D.33433 = *D.31934;
        if (D.33433 == 129) goto <D.35352>; else goto <D.35353>;
        <D.35352>:
        D.33474 = ip + 5;
        bblock.78 = bblock;
        D.35354 = ip_in_bb (cfg, bblock.78, D.33474);
        if (D.35354 != 0) goto <D.35355>; else goto <D.35356>;
        <D.35355>:
        D.35357 = ip + 6;
        D.35358 = *D.35357;
        if (D.35358 == token) goto <D.35359>; else goto <D.35360>;
        <D.35359>:
        klass.173 = klass;
        D.35361 = generic_class_is_reference_type (cfg, klass.173);
        if (D.35361 == 0) goto <D.35362>; else goto <D.35363>;
        <D.35362>:
        sp.85 = (int) sp;
        stack_start.86 = (int) stack_start;
        D.31274 = sp.85 - stack_start.86;
        if (D.31274 <= 3) goto <D.35364>; else goto <D.35365>;
        <D.35364>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.35366>; else goto <D.35367>;
        <D.35366>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.35368>; else goto <D.35369>;
        <D.35368>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.35369>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.35367>:
        D.35370 = mini_get_debug_options ();
        D.35371 = D.35370->break_on_unverified;
        if (D.35371 != 0) goto <D.35372>; else goto unverified;
        <D.35372>:
        __asm__ __volatile__("int $03");
        <D.35365>:
        sp = sp + 4294967292;
        klass.173 = klass;
        D.32655 = sp + 4;
        D.32656 = *D.32655;
        D.31489 = *sp;
        mini_emit_stobj (cfg, D.31489, D.32656, klass.173, 0);
        ip = ip + 10;
        ins_flag = 0;
        goto <D.27380>;
        <D.35363>:
        <D.35360>:
        <D.35356>:
        <D.35353>:
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        klass.173 = klass;
        D.35339 = &klass.173->byval_arg;
        D.35373 = mono_type_to_load_membase (cfg, D.35339);
        D.35374 = (short unsigned int) D.35373;
        ins->opcode = D.35374;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        ins->dreg = 0;
        D.31489 = *sp;
        D.31682 = D.31489->dreg;
        ins->sreg1 = D.31682;
        ins->data.op[0].const_val = 0;
        ins->type = 1;
        klass.173 = klass;
        D.35339 = &klass.173->byval_arg;
        type_to_eval_stack_type (cfg, D.35339, ins);
        D.31249 = ins->type;
        D.31250 = (<unnamed type>) D.31249;
        D.35375 = alloc_dreg (cfg, D.31250);
        D.35376 = (int) D.35375;
        ins->dreg = D.35376;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.35377>; else goto <D.35378>;
        <D.35377>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = ins;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        ins->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        goto <D.35379>;
        <D.35378>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.35379>:
        sp.177 = sp;
        sp = sp.177 + 4;
        *sp.177 = ins;
        ip = ip + 5;
        ins_flag = 0;
        inline_costs = inline_costs + 1;
        goto <D.27380>;
      }
      <D.27759>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      D.31275 = D.31274 /[ex] 4;
      D.31188 = header->max_stack;
      D.31189 = (int) D.31188;
      if (D.31275 >= D.31189) goto <D.35381>; else goto <D.35382>;
      <D.35381>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.35383>; else goto <D.35384>;
      <D.35383>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.35385>; else goto <D.35386>;
      <D.35385>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35386>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35384>:
      D.35387 = mini_get_debug_options ();
      D.35388 = D.35387->break_on_unverified;
      if (D.35388 != 0) goto <D.35389>; else goto unverified;
      <D.35389>:
      __asm__ __volatile__("int $03");
      <D.35382>:
      D.31934 = ip + 5;
      if (D.31934 > end) goto <D.35390>; else goto <D.35391>;
      <D.35390>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.35392>; else goto <D.35393>;
      <D.35392>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.35394>; else goto <D.35395>;
      <D.35394>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35395>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35393>:
      D.35396 = mini_get_debug_options ();
      D.35397 = D.35396->break_on_unverified;
      if (D.35397 != 0) goto <D.35398>; else goto unverified;
      <D.35398>:
      __asm__ __volatile__("int $03");
      <D.35391>:
      D.31953 = ip + 1;
      D.31954 = *D.31953;
      n = (int) D.31954;
      D.30431 = BIT_FIELD_REF <*method, 8, 160>;
      D.30432 = D.30431 & 124;
      if (D.30432 == 68) goto <D.35399>; else goto <D.35400>;
      <D.35399>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 362;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      n.178 = (unsigned int) n;
      D.35402 = mono_method_get_wrapper_data (method, n.178);
      ins->data.op[0].p = D.35402;
      ins->type = 3;
      D.35403 = alloc_dreg (cfg, 3);
      D.35404 = (int) D.35403;
      ins->dreg = D.35404;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.35405>; else goto <D.35406>;
      <D.35405>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.35407>;
      <D.35406>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.35407>:
      ins->type = 6;
      *sp = ins;
      goto <D.35408>;
      <D.35400>:
      D.30431 = BIT_FIELD_REF <*method, 8, 160>;
      D.30432 = D.30431 & 124;
      if (D.30432 != 0) goto <D.35409>; else goto <D.35410>;
      <D.35409>:
      {
        struct MonoInst * iargs[1];

        try
          {
            D.30489 = cfg->mempool;
            D.35411 = mono_mempool_alloc (D.30489, 48);
            iargs[0] = D.35411;
            D.35412 = iargs[0];
            D.35412 = iargs[0];
            D.35412->data.op[1].const_val = 0;
            D.35413 = D.35412->data.op[1].const_val;
            D.35412->data.op[0].const_val = D.35413;
            D.35412 = iargs[0];
            D.35412 = iargs[0];
            D.35412->prev = 0B;
            D.35414 = D.35412->prev;
            D.35412->next = D.35414;
            D.35412 = iargs[0];
            D.35412->opcode = 362;
            D.35412 = iargs[0];
            D.35412->flags = 0;
            D.35412 = iargs[0];
            D.35412->type = 0;
            D.35412 = iargs[0];
            D.35412->dreg = -1;
            D.35412 = iargs[0];
            D.35412 = iargs[0];
            D.35412 = iargs[0];
            D.35412->sreg3 = -1;
            D.35415 = D.35412->sreg3;
            D.35412->sreg2 = D.35415;
            D.35416 = D.35412->sreg2;
            D.35412->sreg1 = D.35416;
            D.35412 = iargs[0];
            D.30712 = cfg->ip;
            D.35412->cil_code = D.30712;
            D.35412 = iargs[0];
            n.178 = (unsigned int) n;
            D.35417 = mono_method_get_wrapper_data (method, n.178);
            D.35412->data.op[0].p = D.35417;
            D.35412 = iargs[0];
            D.35412->type = 3;
            D.35412 = iargs[0];
            D.35418 = alloc_dreg (cfg, 3);
            D.35419 = (int) D.35418;
            D.35412->dreg = D.35419;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.35420>; else goto <D.35421>;
            <D.35420>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.35412 = iargs[0];
            D.30741->next = D.35412;
            D.35412 = iargs[0];
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.35412->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.35412 = iargs[0];
            bblock.127->last_ins = D.35412;
            goto <D.35422>;
            <D.35421>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.35412 = iargs[0];
            bblock.127->last_ins = D.35412;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.35422>:
            D.35423 = mono_emit_jit_icall (cfg, mono_string_new_wrapper, &iargs);
            *sp = D.35423;
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      goto <D.35424>;
      <D.35410>:
      D.30881 = cfg->opt;
      D.30882 = D.30881 & 512;
      if (D.30882 != 0) goto <D.35425>; else goto <D.35426>;
      <D.35425>:
      {
        struct MonoInst * iargs[3];

        try
          {
            D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.30884 = D.30883 & 64;
            if (D.30884 != 0) goto <D.35427>; else goto <D.35428>;
            <D.35427>:
            n.179 = (void *) n;
            D.35430 = cfg->ldstr_list;
            D.35431 = monoeg_g_list_prepend (D.35430, n.179);
            cfg->ldstr_list = D.35431;
            <D.35428>:
            D.30881 = cfg->opt;
            D.30882 = D.30881 & 512;
            if (D.30882 != 0) goto <D.35432>; else goto <D.35435>;
            <D.35435>:
            D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.30884 = D.30883 & 64;
            if (D.30884 != 0) goto <D.35432>; else goto <D.35433>;
            <D.35432>:
            {
              struct MonoInst * __domain_var;

              __domain_var = mono_get_domainvar (cfg);
              D.30489 = cfg->mempool;
              D.35436 = mono_mempool_alloc (D.30489, 48);
              iargs[0] = D.35436;
              D.35437 = iargs[0];
              D.35437 = iargs[0];
              D.35437->data.op[1].const_val = 0;
              D.35438 = D.35437->data.op[1].const_val;
              D.35437->data.op[0].const_val = D.35438;
              D.35437 = iargs[0];
              D.35437 = iargs[0];
              D.35437->prev = 0B;
              D.35439 = D.35437->prev;
              D.35437->next = D.35439;
              D.35437 = iargs[0];
              D.35437->opcode = 428;
              D.35437 = iargs[0];
              D.35437->flags = 0;
              D.35437 = iargs[0];
              D.35437->type = 0;
              D.35437 = iargs[0];
              D.35437->dreg = -1;
              D.35437 = iargs[0];
              D.35437 = iargs[0];
              D.35437 = iargs[0];
              D.35437->sreg3 = -1;
              D.35440 = D.35437->sreg3;
              D.35437->sreg2 = D.35440;
              D.35441 = D.35437->sreg2;
              D.35437->sreg1 = D.35441;
              D.35437 = iargs[0];
              D.30712 = cfg->ip;
              D.35437->cil_code = D.30712;
              D.35437 = iargs[0];
              D.31239 = cfg->varinfo;
              D.35442 = __domain_var->data.op[0].const_val;
              D.35443 = (unsigned int) D.35442;
              D.35444 = D.35443 * 4;
              D.35445 = D.31239 + D.35444;
              D.35446 = *D.35445;
              D.35447 = D.35446->data.op[1].vtype;
              D.35448 = mono_type_to_regmove (cfg, D.35447);
              D.35449 = (short unsigned int) D.35448;
              D.35437->opcode = D.35449;
              D.35437 = iargs[0];
              D.31239 = cfg->varinfo;
              D.35442 = __domain_var->data.op[0].const_val;
              D.35443 = (unsigned int) D.35442;
              D.35444 = D.35443 * 4;
              D.35445 = D.31239 + D.35444;
              D.35446 = *D.35445;
              D.35447 = D.35446->data.op[1].vtype;
              type_to_eval_stack_type (cfg, D.35447, D.35437);
              D.35437 = iargs[0];
              D.31239 = cfg->varinfo;
              D.35442 = __domain_var->data.op[0].const_val;
              D.35443 = (unsigned int) D.35442;
              D.35444 = D.35443 * 4;
              D.35445 = D.31239 + D.35444;
              D.35446 = *D.35445;
              D.35450 = D.35446->klass;
              D.35437->klass = D.35450;
              D.35437 = iargs[0];
              D.31239 = cfg->varinfo;
              D.35442 = __domain_var->data.op[0].const_val;
              D.35443 = (unsigned int) D.35442;
              D.35444 = D.35443 * 4;
              D.35445 = D.31239 + D.35444;
              D.35446 = *D.35445;
              D.35451 = D.35446->dreg;
              D.35437->sreg1 = D.35451;
              D.35437 = iargs[0];
              D.35437 = iargs[0];
              D.35452 = D.35437->type;
              D.35453 = (<unnamed type>) D.35452;
              D.35454 = alloc_dreg (cfg, D.35453);
              D.35455 = (int) D.35454;
              D.35437->dreg = D.35455;
              D.35437 = iargs[0];
              D.35456 = D.35437->opcode;
              if (D.35456 == 431) goto <D.35457>; else goto <D.35458>;
              <D.35457>:
              D.35437 = iargs[0];
              D.31239 = cfg->varinfo;
              D.35442 = __domain_var->data.op[0].const_val;
              D.35443 = (unsigned int) D.35442;
              D.35444 = D.35443 * 4;
              D.35445 = D.31239 + D.35444;
              D.35446 = *D.35445;
              D.35447 = D.35446->data.op[1].vtype;
              D.35459 = mono_class_from_mono_type (D.35447);
              D.35437->klass = D.35459;
              <D.35458>:
            }
            goto <D.35434>;
            <D.35433>:
            D.30489 = cfg->mempool;
            D.35460 = mono_mempool_alloc (D.30489, 48);
            iargs[0] = D.35460;
            D.35437 = iargs[0];
            D.35437 = iargs[0];
            D.35437->data.op[1].const_val = 0;
            D.35438 = D.35437->data.op[1].const_val;
            D.35437->data.op[0].const_val = D.35438;
            D.35437 = iargs[0];
            D.35437 = iargs[0];
            D.35437->prev = 0B;
            D.35439 = D.35437->prev;
            D.35437->next = D.35439;
            D.35437 = iargs[0];
            D.35437->opcode = 362;
            D.35437 = iargs[0];
            D.35437->flags = 0;
            D.35437 = iargs[0];
            D.35437->type = 0;
            D.35437 = iargs[0];
            D.35437->dreg = -1;
            D.35437 = iargs[0];
            D.35437 = iargs[0];
            D.35437 = iargs[0];
            D.35437->sreg3 = -1;
            D.35440 = D.35437->sreg3;
            D.35437->sreg2 = D.35440;
            D.35441 = D.35437->sreg2;
            D.35437->sreg1 = D.35441;
            D.35437 = iargs[0];
            D.30712 = cfg->ip;
            D.35437->cil_code = D.30712;
            D.35437 = iargs[0];
            D.30513 = cfg->domain;
            D.35437->data.op[0].p = D.30513;
            D.35437 = iargs[0];
            D.35437->type = 3;
            D.35437 = iargs[0];
            D.35461 = alloc_dreg (cfg, 3);
            D.35462 = (int) D.35461;
            D.35437->dreg = D.35462;
            <D.35434>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.35463>; else goto <D.35464>;
            <D.35463>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.35437 = iargs[0];
            D.30741->next = D.35437;
            D.35437 = iargs[0];
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.35437->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.35437 = iargs[0];
            bblock.127->last_ins = D.35437;
            goto <D.35465>;
            <D.35464>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.35437 = iargs[0];
            bblock.127->last_ins = D.35437;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.35465>:
            D.30489 = cfg->mempool;
            D.35466 = mono_mempool_alloc (D.30489, 48);
            iargs[1] = D.35466;
            D.35467 = iargs[1];
            D.35467 = iargs[1];
            D.35467->data.op[1].const_val = 0;
            D.35468 = D.35467->data.op[1].const_val;
            D.35467->data.op[0].const_val = D.35468;
            D.35467 = iargs[1];
            D.35467 = iargs[1];
            D.35467->prev = 0B;
            D.35469 = D.35467->prev;
            D.35467->next = D.35469;
            D.35467 = iargs[1];
            D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.30884 = D.30883 & 64;
            if (D.30884 != 0) goto <D.35471>; else goto <D.35472>;
            <D.35471>:
            iftmp.180 = 738;
            goto <D.35473>;
            <D.35472>:
            iftmp.180 = 362;
            <D.35473>:
            D.35467->opcode = iftmp.180;
            D.35467 = iargs[1];
            D.35467->flags = 0;
            D.35467 = iargs[1];
            D.35467->type = 0;
            D.35467 = iargs[1];
            D.35467->dreg = -1;
            D.35467 = iargs[1];
            D.35467 = iargs[1];
            D.35467 = iargs[1];
            D.35467->sreg3 = -1;
            D.35474 = D.35467->sreg3;
            D.35467->sreg2 = D.35474;
            D.35475 = D.35467->sreg2;
            D.35467->sreg1 = D.35475;
            D.35467 = iargs[1];
            D.30712 = cfg->ip;
            D.35467->cil_code = D.30712;
            D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.30884 = D.30883 & 64;
            if (D.30884 != 0) goto <D.35476>; else goto <D.35477>;
            <D.35476>:
            {
              struct MonoInst * group;
              struct MonoInst * got_loc;

              got_loc = mono_get_got_var (cfg);
              D.30489 = cfg->mempool;
              group = mono_mempool_alloc (D.30489, 48);
              group->data.op[1].const_val = 0;
              D.35478 = group->data.op[1].const_val;
              group->data.op[0].const_val = D.35478;
              group->prev = 0B;
              D.35479 = group->prev;
              group->next = D.35479;
              group->opcode = 737;
              group->flags = 0;
              group->type = 0;
              group->dreg = -1;
              group->sreg3 = -1;
              D.35480 = group->sreg3;
              group->sreg2 = D.35480;
              D.35481 = group->sreg2;
              group->sreg1 = D.35481;
              D.30712 = cfg->ip;
              group->cil_code = D.30712;
              group->data.op[0].src = image;
              group->data.op[1].src = 12B;
              D.35467 = iargs[1];
              D.35482 = got_loc->dreg;
              D.35467->sreg1 = D.35482;
              D.35467 = iargs[1];
              D.35467->data.op[1].p = group;
            }
            goto <D.35483>;
            <D.35477>:
            D.35467 = iargs[1];
            D.35467->data.op[0].p = image;
            D.35467 = iargs[1];
            D.35467->data.op[1].src = 12B;
            <D.35483>:
            D.35467 = iargs[1];
            D.35467->type = 3;
            D.35467 = iargs[1];
            D.35484 = alloc_dreg (cfg, 3);
            D.35485 = (int) D.35484;
            D.35467->dreg = D.35485;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.35486>; else goto <D.35487>;
            <D.35486>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.35467 = iargs[1];
            D.30741->next = D.35467;
            D.35467 = iargs[1];
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.35467->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.35467 = iargs[1];
            bblock.127->last_ins = D.35467;
            goto <D.35488>;
            <D.35487>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.35467 = iargs[1];
            bblock.127->last_ins = D.35467;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.35488>:
            D.30489 = cfg->mempool;
            D.35489 = mono_mempool_alloc (D.30489, 48);
            iargs[2] = D.35489;
            D.35490 = iargs[2];
            D.35490 = iargs[2];
            D.35490->data.op[1].const_val = 0;
            D.35491 = D.35490->data.op[1].const_val;
            D.35490->data.op[0].const_val = D.35491;
            D.35490 = iargs[2];
            D.35490 = iargs[2];
            D.35490->prev = 0B;
            D.35492 = D.35490->prev;
            D.35490->next = D.35492;
            D.35490 = iargs[2];
            D.35490->opcode = 362;
            D.35490 = iargs[2];
            D.35490->flags = 0;
            D.35490 = iargs[2];
            D.35490->type = 0;
            D.35490 = iargs[2];
            D.35490->dreg = -1;
            D.35490 = iargs[2];
            D.35490 = iargs[2];
            D.35490 = iargs[2];
            D.35490->sreg3 = -1;
            D.35493 = D.35490->sreg3;
            D.35490->sreg2 = D.35493;
            D.35494 = D.35490->sreg2;
            D.35490->sreg1 = D.35494;
            D.35490 = iargs[2];
            D.30712 = cfg->ip;
            D.35490->cil_code = D.30712;
            D.35490 = iargs[2];
            D.35495 = n & 16777215;
            D.35490->data.op[0].const_val = D.35495;
            D.35490 = iargs[2];
            D.35490->type = 1;
            D.35490 = iargs[2];
            D.35496 = alloc_dreg (cfg, 1);
            D.35497 = (int) D.35496;
            D.35490->dreg = D.35497;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.35498>; else goto <D.35499>;
            <D.35498>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.35490 = iargs[2];
            D.30741->next = D.35490;
            D.35490 = iargs[2];
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.35490->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.35490 = iargs[2];
            bblock.127->last_ins = D.35490;
            goto <D.35500>;
            <D.35499>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.35490 = iargs[2];
            bblock.127->last_ins = D.35490;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.35500>:
            D.35501 = mono_emit_jit_icall (cfg, mono_ldstr, &iargs);
            *sp = D.35501;
            n.181 = (unsigned int) n;
            D.35503 = n.181 & 16777215;
            D.30513 = cfg->domain;
            mono_ldstr (D.30513, image, D.35503);
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      goto <D.35504>;
      <D.35426>:
      bblock.78 = bblock;
      D.35505 = BIT_FIELD_REF <*bblock.78, 8, 912>;
      D.35506 = D.35505 & 1;
      if (D.35506 != 0) goto <D.35507>; else goto <D.35508>;
      <D.35507>:
      {
        struct MonoInst * iargs[2];

        try
          {
            D.32568 = mono_defaults.corlib;
            if (D.32568 == image) goto <D.35509>; else goto <D.35510>;
            <D.35509>:
            D.30489 = cfg->mempool;
            D.35511 = mono_mempool_alloc (D.30489, 48);
            iargs[0] = D.35511;
            D.35512 = iargs[0];
            D.35512 = iargs[0];
            D.35512->data.op[1].const_val = 0;
            D.35513 = D.35512->data.op[1].const_val;
            D.35512->data.op[0].const_val = D.35513;
            D.35512 = iargs[0];
            D.35512 = iargs[0];
            D.35512->prev = 0B;
            D.35514 = D.35512->prev;
            D.35512->next = D.35514;
            D.35512 = iargs[0];
            D.35512->opcode = 362;
            D.35512 = iargs[0];
            D.35512->flags = 0;
            D.35512 = iargs[0];
            D.35512->type = 0;
            D.35512 = iargs[0];
            D.35512->dreg = -1;
            D.35512 = iargs[0];
            D.35512 = iargs[0];
            D.35512 = iargs[0];
            D.35512->sreg3 = -1;
            D.35515 = D.35512->sreg3;
            D.35512->sreg2 = D.35515;
            D.35516 = D.35512->sreg2;
            D.35512->sreg1 = D.35516;
            D.35512 = iargs[0];
            D.30712 = cfg->ip;
            D.35512->cil_code = D.30712;
            D.35512 = iargs[0];
            D.35495 = n & 16777215;
            D.35512->data.op[0].const_val = D.35495;
            D.35512 = iargs[0];
            D.35512->type = 1;
            D.35512 = iargs[0];
            D.35517 = alloc_dreg (cfg, 1);
            D.35518 = (int) D.35517;
            D.35512->dreg = D.35518;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.35519>; else goto <D.35520>;
            <D.35519>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.35512 = iargs[0];
            D.30741->next = D.35512;
            D.35512 = iargs[0];
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.35512->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.35512 = iargs[0];
            bblock.127->last_ins = D.35512;
            goto <D.35521>;
            <D.35520>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.35512 = iargs[0];
            bblock.127->last_ins = D.35512;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.35521>:
            D.35522 = mono_emit_jit_icall (cfg, mono_helper_ldstr_mscorlib, &iargs);
            *sp = D.35522;
            goto <D.35523>;
            <D.35510>:
            D.30489 = cfg->mempool;
            D.35524 = mono_mempool_alloc (D.30489, 48);
            iargs[0] = D.35524;
            D.35512 = iargs[0];
            D.35512 = iargs[0];
            D.35512->data.op[1].const_val = 0;
            D.35513 = D.35512->data.op[1].const_val;
            D.35512->data.op[0].const_val = D.35513;
            D.35512 = iargs[0];
            D.35512 = iargs[0];
            D.35512->prev = 0B;
            D.35514 = D.35512->prev;
            D.35512->next = D.35514;
            D.35512 = iargs[0];
            D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.30884 = D.30883 & 64;
            if (D.30884 != 0) goto <D.35526>; else goto <D.35527>;
            <D.35526>:
            iftmp.182 = 738;
            goto <D.35528>;
            <D.35527>:
            iftmp.182 = 362;
            <D.35528>:
            D.35512->opcode = iftmp.182;
            D.35512 = iargs[0];
            D.35512->flags = 0;
            D.35512 = iargs[0];
            D.35512->type = 0;
            D.35512 = iargs[0];
            D.35512->dreg = -1;
            D.35512 = iargs[0];
            D.35512 = iargs[0];
            D.35512 = iargs[0];
            D.35512->sreg3 = -1;
            D.35515 = D.35512->sreg3;
            D.35512->sreg2 = D.35515;
            D.35516 = D.35512->sreg2;
            D.35512->sreg1 = D.35516;
            D.35512 = iargs[0];
            D.30712 = cfg->ip;
            D.35512->cil_code = D.30712;
            D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.30884 = D.30883 & 64;
            if (D.30884 != 0) goto <D.35529>; else goto <D.35530>;
            <D.35529>:
            {
              struct MonoInst * group;
              struct MonoInst * got_loc;

              got_loc = mono_get_got_var (cfg);
              D.30489 = cfg->mempool;
              group = mono_mempool_alloc (D.30489, 48);
              group->data.op[1].const_val = 0;
              D.35531 = group->data.op[1].const_val;
              group->data.op[0].const_val = D.35531;
              group->prev = 0B;
              D.35532 = group->prev;
              group->next = D.35532;
              group->opcode = 737;
              group->flags = 0;
              group->type = 0;
              group->dreg = -1;
              group->sreg3 = -1;
              D.35533 = group->sreg3;
              group->sreg2 = D.35533;
              D.35534 = group->sreg2;
              group->sreg1 = D.35534;
              D.30712 = cfg->ip;
              group->cil_code = D.30712;
              group->data.op[0].src = image;
              group->data.op[1].src = 12B;
              D.35512 = iargs[0];
              D.35535 = got_loc->dreg;
              D.35512->sreg1 = D.35535;
              D.35512 = iargs[0];
              D.35512->data.op[1].p = group;
            }
            goto <D.35536>;
            <D.35530>:
            D.35512 = iargs[0];
            D.35512->data.op[0].p = image;
            D.35512 = iargs[0];
            D.35512->data.op[1].src = 12B;
            <D.35536>:
            D.35512 = iargs[0];
            D.35512->type = 3;
            D.35512 = iargs[0];
            D.35537 = alloc_dreg (cfg, 3);
            D.35538 = (int) D.35537;
            D.35512->dreg = D.35538;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.35539>; else goto <D.35540>;
            <D.35539>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.35512 = iargs[0];
            D.30741->next = D.35512;
            D.35512 = iargs[0];
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.35512->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.35512 = iargs[0];
            bblock.127->last_ins = D.35512;
            goto <D.35541>;
            <D.35540>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.35512 = iargs[0];
            bblock.127->last_ins = D.35512;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.35541>:
            D.30489 = cfg->mempool;
            D.35542 = mono_mempool_alloc (D.30489, 48);
            iargs[1] = D.35542;
            D.35543 = iargs[1];
            D.35543 = iargs[1];
            D.35543->data.op[1].const_val = 0;
            D.35544 = D.35543->data.op[1].const_val;
            D.35543->data.op[0].const_val = D.35544;
            D.35543 = iargs[1];
            D.35543 = iargs[1];
            D.35543->prev = 0B;
            D.35545 = D.35543->prev;
            D.35543->next = D.35545;
            D.35543 = iargs[1];
            D.35543->opcode = 362;
            D.35543 = iargs[1];
            D.35543->flags = 0;
            D.35543 = iargs[1];
            D.35543->type = 0;
            D.35543 = iargs[1];
            D.35543->dreg = -1;
            D.35543 = iargs[1];
            D.35543 = iargs[1];
            D.35543 = iargs[1];
            D.35543->sreg3 = -1;
            D.35546 = D.35543->sreg3;
            D.35543->sreg2 = D.35546;
            D.35547 = D.35543->sreg2;
            D.35543->sreg1 = D.35547;
            D.35543 = iargs[1];
            D.30712 = cfg->ip;
            D.35543->cil_code = D.30712;
            D.35543 = iargs[1];
            D.35495 = n & 16777215;
            D.35543->data.op[0].const_val = D.35495;
            D.35543 = iargs[1];
            D.35543->type = 1;
            D.35543 = iargs[1];
            D.35548 = alloc_dreg (cfg, 1);
            D.35549 = (int) D.35548;
            D.35543->dreg = D.35549;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.35550>; else goto <D.35551>;
            <D.35550>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.35543 = iargs[1];
            D.30741->next = D.35543;
            D.35543 = iargs[1];
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.35543->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.35543 = iargs[1];
            bblock.127->last_ins = D.35543;
            goto <D.35552>;
            <D.35551>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.35543 = iargs[1];
            bblock.127->last_ins = D.35543;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.35552>:
            D.35553 = mono_emit_jit_icall (cfg, mono_helper_ldstr, &iargs);
            *sp = D.35553;
            <D.35523>:
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      goto <D.35554>;
      <D.35508>:
      D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.30884 = D.30883 & 64;
      if (D.30884 != 0) goto <D.35555>; else goto <D.35556>;
      <D.35555>:
      {
        struct MonoInst * group;
        struct MonoInst * got_loc;

        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        ins->opcode = 738;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        got_loc = mono_get_got_var (cfg);
        D.30489 = cfg->mempool;
        group = mono_mempool_alloc (D.30489, 48);
        group->data.op[1].const_val = 0;
        D.35557 = group->data.op[1].const_val;
        group->data.op[0].const_val = D.35557;
        group->prev = 0B;
        D.35558 = group->prev;
        group->next = D.35558;
        group->opcode = 737;
        group->flags = 0;
        group->type = 0;
        group->dreg = -1;
        group->sreg3 = -1;
        D.35559 = group->sreg3;
        group->sreg2 = D.35559;
        D.35560 = group->sreg2;
        group->sreg1 = D.35560;
        D.30712 = cfg->ip;
        group->cil_code = D.30712;
        group->data.op[0].src = 0B;
        group->data.op[1].src = 17B;
        n.178 = (unsigned int) n;
        D.30489 = cfg->mempool;
        D.35561 = mono_jump_info_token_new2 (D.30489, image, n.178, 0B);
        group->data.op[0].p = D.35561;
        D.35562 = got_loc->dreg;
        ins->sreg1 = D.35562;
        ins->data.op[1].p = group;
        ins->type = 6;
        D.35563 = mono_defaults.string_class;
        ins->klass = D.35563;
        D.35564 = alloc_dreg (cfg, 6);
        D.35565 = (int) D.35564;
        ins->dreg = D.35565;
      }
      *sp = ins;
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      if (D.30826 != 0B) goto <D.35566>; else goto <D.35567>;
      <D.35566>:
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      D.30826->next = ins;
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      ins->prev = D.30826;
      bblock.78 = bblock;
      bblock.78->last_ins = ins;
      goto <D.35568>;
      <D.35567>:
      bblock.78 = bblock;
      bblock.78 = bblock;
      bblock.78->last_ins = ins;
      D.30826 = bblock.78->last_ins;
      bblock.78->code = D.30826;
      <D.35568>:
      goto <D.35569>;
      <D.35556>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 362;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      ins->data.op[0].p = 0B;
      ins->type = 3;
      D.35570 = alloc_dreg (cfg, 3);
      D.35571 = (int) D.35570;
      ins->dreg = D.35571;
      ins->type = 6;
      n.181 = (unsigned int) n;
      D.35503 = n.181 & 16777215;
      D.30513 = cfg->domain;
      D.35572 = mono_ldstr (D.30513, image, D.35503);
      ins->data.op[0].p = D.35572;
      D.35573 = ins->data.op[0].p;
      if (D.35573 == 0B) goto <D.35574>; else goto <D.35575>;
      <D.35574>:
      mono_cfg_set_exception (cfg, 14);
      goto exception_exit;
      <D.35575>:
      *sp = ins;
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      if (D.30826 != 0B) goto <D.35576>; else goto <D.35577>;
      <D.35576>:
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      D.30826->next = ins;
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      ins->prev = D.30826;
      bblock.78 = bblock;
      bblock.78->last_ins = ins;
      goto <D.35578>;
      <D.35577>:
      bblock.78 = bblock;
      bblock.78 = bblock;
      bblock.78->last_ins = ins;
      D.30826 = bblock.78->last_ins;
      bblock.78->code = D.30826;
      <D.35578>:
      <D.35569>:
      <D.35554>:
      <D.35504>:
      <D.35424>:
      <D.35408>:
      sp = sp + 4;
      ip = ip + 5;
      goto <D.27380>;
      <D.27770>:
      {
        struct MonoInst * iargs[2];
        struct MonoMethodSignature * fsig;
        struct MonoInst this_ins;
        struct MonoInst * alloc;
        struct MonoInst * vtable_arg;

        try
          {
            vtable_arg = 0B;
            D.31934 = ip + 5;
            if (D.31934 > end) goto <D.35579>; else goto <D.35580>;
            <D.35579>:
            D.30637 = cfg->gsharedvt;
            if (D.30637 != 0) goto <D.35581>; else goto <D.35582>;
            <D.35581>:
            D.30569 = cfg->verbose_level;
            if (D.30569 > 2) goto <D.35583>; else goto <D.35584>;
            <D.35583>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.35584>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.35582>:
            D.35585 = mini_get_debug_options ();
            D.35586 = D.35585->break_on_unverified;
            if (D.35586 != 0) goto <D.35587>; else goto unverified;
            <D.35587>:
            __asm__ __volatile__("int $03");
            <D.35580>:
            token = MEM[(const guint32 *)ip + 1B];
            cmethod = mini_get_method (cfg, method, token, 0B, generic_context);
            if (cmethod == 0B) goto <D.35588>; else goto <D.35590>;
            <D.35590>:
            D.35591 = mono_loader_get_last_error ();
            if (D.35591 != 0B) goto <D.35588>; else goto <D.35589>;
            <D.35588>:
            D.35592 = mini_get_debug_options ();
            D.35593 = D.35592->break_on_unverified;
            if (D.35593 != 0) goto <D.35594>; else goto load_error;
            <D.35594>:
            __asm__ __volatile__("int $03");
            <D.35589>:
            fsig = mono_method_get_signature (cmethod, image, token);
            if (fsig == 0B) goto <D.35595>; else goto <D.35596>;
            <D.35595>:
            D.35597 = mini_get_debug_options ();
            D.35598 = D.35597->break_on_unverified;
            if (D.35598 != 0) goto <D.35599>; else goto load_error;
            <D.35599>:
            __asm__ __volatile__("int $03");
            <D.35596>:
            mono_save_token_info (cfg, image, token, cmethod);
            D.32390 = cmethod->klass;
            D.35600 = mono_class_init (D.32390);
            if (D.35600 == 0) goto <D.35601>; else goto <D.35602>;
            <D.35601>:
            D.35603 = mini_get_debug_options ();
            D.35604 = D.35603->break_on_unverified;
            if (D.35604 != 0) goto <D.35605>; else goto <D.35606>;
            <D.35605>:
            __asm__ __volatile__("int $03");
            goto <D.35607>;
            <D.35606>:
            D.32390 = cmethod->klass;
            cfg->exception_ptr = D.32390;
            goto load_error;
            <D.35607>:
            <D.35602>:
            context_used = mini_method_check_context_used (cfg, cmethod);
            D.35608 = mono_security_get_mode ();
            if (D.35608 == 2) goto <D.35609>; else goto <D.35610>;
            <D.35609>:
            D.35611 = check_linkdemand (cfg, method, cmethod);
            if (D.35611 != 0) goto <D.35612>; else goto <D.35613>;
            <D.35612>:
            D.30459 = cfg->method;
            if (D.30459 != method) goto <D.35614>; else goto <D.35615>;
            <D.35614>:
            D.30431 = BIT_FIELD_REF <*method, 8, 160>;
            D.30432 = D.30431 & 124;
            if (D.30432 == 0) goto <D.35616>; else goto <D.35617>;
            <D.35616>:
            D.30569 = cfg->verbose_level;
            if (D.30569 > 1) goto <D.35618>; else goto <D.35619>;
            <D.35618>:
            printf ("inline failed: %s\n", "linkdemand");
            <D.35619>:
            goto inline_failure;
            <D.35617>:
            <D.35615>:
            <D.35613>:
            D.31057 = cfg->exception_type;
            if (D.31057 != 0) goto exception_exit; else goto <D.35620>;
            <D.35620>:
            goto <D.35621>;
            <D.35610>:
            D.35622 = mono_security_get_mode ();
            if (D.35622 == 1) goto <D.35623>; else goto <D.35624>;
            <D.35623>:
            bblock.78 = bblock;
            ensure_method_is_allowed_to_call_method (cfg, method, cmethod, bblock.78, ip);
            <D.35624>:
            <D.35621>:
            D.30524 = cfg->generic_sharing_context;
            if (D.30524 != 0B) goto <D.35625>; else goto <D.35626>;
            <D.35625>:
            if (cmethod != 0B) goto <D.35627>; else goto <D.35628>;
            <D.35627>:
            D.32390 = cmethod->klass;
            D.30426 = method->klass;
            if (D.32390 != D.30426) goto <D.35629>; else goto <D.35630>;
            <D.35629>:
            D.32390 = cmethod->klass;
            D.32946 = D.32390->generic_class;
            if (D.32946 != 0B) goto <D.35631>; else goto <D.35632>;
            <D.35631>:
            D.35633 = mono_method_is_generic_sharable (cmethod, 1);
            if (D.35633 != 0) goto <D.35634>; else goto <D.35635>;
            <D.35634>:
            D.32390 = cmethod->klass;
            D.35636 = mono_class_needs_cctor_run (D.32390, method);
            if (D.35636 != 0) goto <D.35637>; else goto <D.35638>;
            <D.35637>:
            D.32390 = cmethod->klass;
            emit_generic_class_init (cfg, D.32390);
            D.32390 = cmethod->klass;
            if (D.32390 == 0B) goto <D.35639>; else goto <D.35641>;
            <D.35641>:
            D.32390 = cmethod->klass;
            D.32958 = D.32390->exception_type;
            if (D.32958 != 0) goto <D.35639>; else goto <D.35640>;
            <D.35639>:
            D.32390 = cmethod->klass;
            cfg->exception_ptr = D.32390;
            D.35642 = mini_get_debug_options ();
            D.35643 = D.35642->break_on_unverified;
            if (D.35643 != 0) goto <D.35644>; else goto load_error;
            <D.35644>:
            __asm__ __volatile__("int $03");
            <D.35640>:
            <D.35638>:
            <D.35635>:
            <D.35632>:
            <D.35630>:
            <D.35628>:
            <D.35626>:
            D.32390 = cmethod->klass;
            D.32391 = BIT_FIELD_REF <*D.32390, 8, 160>;
            D.32392 = D.32391 & 8;
            if (D.32392 != 0) goto <D.35645>; else goto <D.35646>;
            <D.35645>:
            D.32390 = cmethod->klass;
            D.35647 = mono_class_generic_sharing_enabled (D.32390);
            if (D.35647 != 0) goto <D.35648>; else goto <D.35649>;
            <D.35648>:
            D.35650 = mono_method_is_generic_sharable (cmethod, 1);
            if (D.35650 != 0) goto <D.35651>; else goto <D.35652>;
            <D.35651>:
            D.33155 = BIT_FIELD_REF <*cmethod, 8, 168>;
            D.33156 = D.33155 & 16;
            if (D.33156 != 0) goto <D.35655>; else goto <D.35653>;
            <D.35655>:
            D.35656 = mono_method_get_context (cmethod);
            D.35657 = D.35656->method_inst;
            if (D.35657 != 0B) goto <D.35658>; else goto <D.35653>;
            <D.35658>:
            D.32390 = cmethod->klass;
            D.30513 = cfg->domain;
            mono_class_vtable (D.30513, D.32390);
            D.32390 = cmethod->klass;
            if (D.32390 == 0B) goto <D.35659>; else goto <D.35661>;
            <D.35661>:
            D.32390 = cmethod->klass;
            D.32958 = D.32390->exception_type;
            if (D.32958 != 0) goto <D.35659>; else goto <D.35660>;
            <D.35659>:
            D.32390 = cmethod->klass;
            cfg->exception_ptr = D.32390;
            D.35662 = mini_get_debug_options ();
            D.35663 = D.35662->break_on_unverified;
            if (D.35663 != 0) goto <D.35664>; else goto load_error;
            <D.35664>:
            __asm__ __volatile__("int $03");
            <D.35660>:
            vtable_arg = emit_get_rgctx_method (cfg, context_used, cmethod, 8);
            goto <D.35654>;
            <D.35653>:
            if (context_used != 0) goto <D.35665>; else goto <D.35666>;
            <D.35665>:
            D.32390 = cmethod->klass;
            vtable_arg = emit_get_rgctx_klass (cfg, context_used, D.32390, 2);
            goto <D.35667>;
            <D.35666>:
            {
              struct MonoVTable * vtable;

              D.32390 = cmethod->klass;
              D.30513 = cfg->domain;
              vtable = mono_class_vtable (D.30513, D.32390);
              D.32390 = cmethod->klass;
              if (D.32390 == 0B) goto <D.35668>; else goto <D.35670>;
              <D.35670>:
              D.32390 = cmethod->klass;
              D.32958 = D.32390->exception_type;
              if (D.32958 != 0) goto <D.35668>; else goto <D.35669>;
              <D.35668>:
              D.32390 = cmethod->klass;
              cfg->exception_ptr = D.32390;
              D.35671 = mini_get_debug_options ();
              D.35672 = D.35671->break_on_unverified;
              if (D.35672 != 0) goto <D.35673>; else goto load_error;
              <D.35673>:
              __asm__ __volatile__("int $03");
              <D.35669>:
              D.30489 = cfg->mempool;
              vtable_arg = mono_mempool_alloc (D.30489, 48);
              vtable_arg->data.op[1].const_val = 0;
              D.35674 = vtable_arg->data.op[1].const_val;
              vtable_arg->data.op[0].const_val = D.35674;
              vtable_arg->prev = 0B;
              D.35675 = vtable_arg->prev;
              vtable_arg->next = D.35675;
              D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.30884 = D.30883 & 64;
              if (D.30884 != 0) goto <D.35677>; else goto <D.35678>;
              <D.35677>:
              iftmp.183 = 738;
              goto <D.35679>;
              <D.35678>:
              iftmp.183 = 362;
              <D.35679>:
              vtable_arg->opcode = iftmp.183;
              vtable_arg->flags = 0;
              vtable_arg->type = 0;
              vtable_arg->dreg = -1;
              vtable_arg->sreg3 = -1;
              D.35680 = vtable_arg->sreg3;
              vtable_arg->sreg2 = D.35680;
              D.35681 = vtable_arg->sreg2;
              vtable_arg->sreg1 = D.35681;
              D.30712 = cfg->ip;
              vtable_arg->cil_code = D.30712;
              D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.30884 = D.30883 & 64;
              if (D.30884 != 0) goto <D.35682>; else goto <D.35683>;
              <D.35682>:
              {
                struct MonoInst * group;
                struct MonoInst * got_loc;

                got_loc = mono_get_got_var (cfg);
                D.30489 = cfg->mempool;
                group = mono_mempool_alloc (D.30489, 48);
                group->data.op[1].const_val = 0;
                D.35684 = group->data.op[1].const_val;
                group->data.op[0].const_val = D.35684;
                group->prev = 0B;
                D.35685 = group->prev;
                group->next = D.35685;
                group->opcode = 737;
                group->flags = 0;
                group->type = 0;
                group->dreg = -1;
                group->sreg3 = -1;
                D.35686 = group->sreg3;
                group->sreg2 = D.35686;
                D.35687 = group->sreg2;
                group->sreg1 = D.35687;
                D.30712 = cfg->ip;
                group->cil_code = D.30712;
                D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
                D.30884 = D.30883 & 64;
                if (D.30884 != 0) goto <D.35689>; else goto <D.35690>;
                <D.35689>:
                iftmp.184 = vtable->klass;
                goto <D.35691>;
                <D.35690>:
                iftmp.184 = vtable;
                <D.35691>:
                group->data.op[0].src = iftmp.184;
                group->data.op[1].src = 14B;
                D.35692 = got_loc->dreg;
                vtable_arg->sreg1 = D.35692;
                vtable_arg->data.op[1].p = group;
              }
              goto <D.35693>;
              <D.35683>:
              D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.30884 = D.30883 & 64;
              if (D.30884 != 0) goto <D.35695>; else goto <D.35696>;
              <D.35695>:
              iftmp.185 = vtable->klass;
              goto <D.35697>;
              <D.35696>:
              iftmp.185 = vtable;
              <D.35697>:
              vtable_arg->data.op[0].p = iftmp.185;
              vtable_arg->data.op[1].src = 14B;
              <D.35693>:
              vtable_arg->type = 3;
              D.35698 = alloc_dreg (cfg, 3);
              D.35699 = (int) D.35698;
              vtable_arg->dreg = D.35699;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.35700>; else goto <D.35701>;
              <D.35700>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = vtable_arg;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              vtable_arg->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = vtable_arg;
              goto <D.35702>;
              <D.35701>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = vtable_arg;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.35702>:
            }
            <D.35667>:
            <D.35654>:
            <D.35652>:
            <D.35649>:
            <D.35646>:
            D.35703 = fsig->param_count;
            n = (int) D.35703;
            sp.85 = (int) sp;
            stack_start.86 = (int) stack_start;
            D.31274 = sp.85 - stack_start.86;
            D.31275 = D.31274 /[ex] 4;
            if (D.31275 < n) goto <D.35704>; else goto <D.35705>;
            <D.35704>:
            D.30637 = cfg->gsharedvt;
            if (D.30637 != 0) goto <D.35706>; else goto <D.35707>;
            <D.35706>:
            D.30569 = cfg->verbose_level;
            if (D.30569 > 2) goto <D.35708>; else goto <D.35709>;
            <D.35708>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.35709>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.35707>:
            D.35710 = mini_get_debug_options ();
            D.35711 = D.35710->break_on_unverified;
            if (D.35711 != 0) goto <D.35712>; else goto unverified;
            <D.35712>:
            __asm__ __volatile__("int $03");
            <D.35705>:
            bblock.78 = bblock;
            D.35505 = BIT_FIELD_REF <*bblock.78, 8, 912>;
            D.35506 = D.35505 & 1;
            if (D.35506 != 0) goto <D.35716>; else goto <D.35717>;
            <D.35716>:
            D.32390 = cmethod->klass;
            D.32567 = D.32390->image;
            D.32568 = mono_defaults.corlib;
            if (D.32567 == D.32568) goto <D.35718>; else goto <D.35719>;
            <D.35718>:
            D.32390 = cmethod->klass;
            D.35720 = is_exception_class (D.32390);
            if (D.35720 != 0) goto <D.35721>; else goto <D.35722>;
            <D.35721>:
            if (n <= 2) goto <D.35723>; else goto <D.35724>;
            <D.35723>:
            if (n <= 0) goto <D.35715>; else goto <D.35725>;
            <D.35725>:
            D.35726 = fsig->params[0];
            D.35727 = BIT_FIELD_REF <*D.35726, 16, 48>;
            D.35728 = D.35727 & 16639;
            if (D.35728 == 14) goto <D.35715>; else goto <D.35714>;
            <D.35715>:
            if (n <= 1) goto <D.35713>; else goto <D.35729>;
            <D.35729>:
            D.35730 = fsig->params[1];
            D.35731 = BIT_FIELD_REF <*D.35730, 16, 48>;
            D.35732 = D.35731 & 16639;
            if (D.35732 == 14) goto <D.35713>; else goto <D.35714>;
            <D.35713>:
            {
              struct MonoInst * iargs[3];

              try
                {
                  D.35733 = vtable_arg != 0B;
                  D.35734 = (long int) D.35733;
                  D.35735 = __builtin_expect (D.35734, 0);
                  if (D.35735 != 0) goto <D.35736>; else goto <D.35737>;
                  <D.35736>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9300, "!vtable_arg");
                  <D.35737>:
                  n.90 = (unsigned int) n;
                  D.31416 = n.90 * 4;
                  D.32551 = -D.31416;
                  sp = sp + D.32551;
                  D.30489 = cfg->mempool;
                  D.35738 = mono_mempool_alloc (D.30489, 48);
                  iargs[0] = D.35738;
                  D.35739 = iargs[0];
                  D.35739 = iargs[0];
                  D.35739->data.op[1].const_val = 0;
                  D.35740 = D.35739->data.op[1].const_val;
                  D.35739->data.op[0].const_val = D.35740;
                  D.35739 = iargs[0];
                  D.35739 = iargs[0];
                  D.35739->prev = 0B;
                  D.35741 = D.35739->prev;
                  D.35739->next = D.35741;
                  D.35739 = iargs[0];
                  D.35739->opcode = 362;
                  D.35739 = iargs[0];
                  D.35739->flags = 0;
                  D.35739 = iargs[0];
                  D.35739->type = 0;
                  D.35739 = iargs[0];
                  D.35739->dreg = -1;
                  D.35739 = iargs[0];
                  D.35739 = iargs[0];
                  D.35739 = iargs[0];
                  D.35739->sreg3 = -1;
                  D.35742 = D.35739->sreg3;
                  D.35739->sreg2 = D.35742;
                  D.35743 = D.35739->sreg2;
                  D.35739->sreg1 = D.35743;
                  D.35739 = iargs[0];
                  D.30712 = cfg->ip;
                  D.35739->cil_code = D.30712;
                  D.35739 = iargs[0];
                  D.32390 = cmethod->klass;
                  D.35744 = D.32390->type_token;
                  D.35745 = (int) D.35744;
                  D.35739->data.op[0].const_val = D.35745;
                  D.35739 = iargs[0];
                  D.35739->type = 1;
                  D.35739 = iargs[0];
                  D.35746 = alloc_dreg (cfg, 1);
                  D.35747 = (int) D.35746;
                  D.35739->dreg = D.35747;
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  if (D.30741 != 0B) goto <D.35748>; else goto <D.35749>;
                  <D.35748>:
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.35739 = iargs[0];
                  D.30741->next = D.35739;
                  D.35739 = iargs[0];
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.35739->prev = D.30741;
                  bblock.127 = cfg->cbb;
                  D.35739 = iargs[0];
                  bblock.127->last_ins = D.35739;
                  goto <D.35750>;
                  <D.35749>:
                  bblock.127 = cfg->cbb;
                  bblock.127 = cfg->cbb;
                  D.35739 = iargs[0];
                  bblock.127->last_ins = D.35739;
                  D.30741 = bblock.127->last_ins;
                  bblock.127->code = D.30741;
                  <D.35750>:
                  switch (n) <default: <D.27784>, case 0: <D.27780>, case 1: <D.27782>, case 2: <D.27783>>
                  <D.27780>:
                  sp.186 = sp;
                  sp = sp.186 + 4;
                  D.35752 = mono_emit_jit_icall (cfg, mono_create_corlib_exception_0, &iargs);
                  *sp.186 = D.35752;
                  goto <D.27781>;
                  <D.27782>:
                  D.31489 = *sp;
                  iargs[1] = D.31489;
                  sp.187 = sp;
                  sp = sp.187 + 4;
                  D.35754 = mono_emit_jit_icall (cfg, mono_create_corlib_exception_1, &iargs);
                  *sp.187 = D.35754;
                  goto <D.27781>;
                  <D.27783>:
                  D.31489 = *sp;
                  iargs[1] = D.31489;
                  D.35755 = MEM[(struct MonoInst * *)sp + 4B];
                  iargs[2] = D.35755;
                  sp.188 = sp;
                  sp = sp.188 + 4;
                  D.35757 = mono_emit_jit_icall (cfg, mono_create_corlib_exception_2, &iargs);
                  *sp.188 = D.35757;
                  goto <D.27781>;
                  <D.27784>:
                  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 9319);
                  <D.27781>:
                  ip = ip + 5;
                  inline_costs = inline_costs + 5;
                  goto <D.27380>;
                }
              finally
                {
                  iargs = {CLOBBER};
                }
            }
            <D.35714>:
            <D.35724>:
            <D.35722>:
            <D.35719>:
            <D.35717>:
            goto <D.27786>;
            <D.27785>:
            sp = sp + 4294967292;
            D.32655 = sp + 4;
            D.31489 = *sp;
            *D.32655 = D.31489;
            <D.27786>:
            n.189 = n;
            n = n.189 + -1;
            if (n.189 != 0) goto <D.27785>; else goto <D.27787>;
            <D.27787>:
            this_ins.type = 6;
            *sp = &this_ins;
            D.35759 = check_call_signature (cfg, fsig, sp);
            if (D.35759 != 0) goto <D.35760>; else goto <D.35761>;
            <D.35760>:
            D.30637 = cfg->gsharedvt;
            if (D.30637 != 0) goto <D.35762>; else goto <D.35763>;
            <D.35762>:
            D.30569 = cfg->verbose_level;
            if (D.30569 > 2) goto <D.35764>; else goto <D.35765>;
            <D.35764>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.35765>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.35763>:
            D.35766 = mini_get_debug_options ();
            D.35767 = D.35766->break_on_unverified;
            if (D.35767 != 0) goto <D.35768>; else goto unverified;
            <D.35768>:
            __asm__ __volatile__("int $03");
            <D.35761>:
            iargs[0] = 0B;
            D.32390 = cmethod->klass;
            D.35769 = mini_class_is_system_array (D.32390);
            if (D.35769 != 0) goto <D.35770>; else goto <D.35771>;
            <D.35770>:
            D.35733 = vtable_arg != 0B;
            D.35734 = (long int) D.35733;
            D.35735 = __builtin_expect (D.35734, 0);
            if (D.35735 != 0) goto <D.35772>; else goto <D.35773>;
            <D.35772>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9342, "!vtable_arg");
            <D.35773>:
            D.35774 = emit_get_rgctx_method (cfg, context_used, cmethod, 5);
            *sp = D.35774;
            D.35703 = fsig->param_count;
            if (D.35703 == 1) goto <D.35775>; else goto <D.35776>;
            <D.35775>:
            alloc = mono_emit_jit_icall (cfg, mono_array_new_1, sp);
            goto <D.35777>;
            <D.35776>:
            D.35703 = fsig->param_count;
            if (D.35703 == 2) goto <D.35778>; else goto <D.35779>;
            <D.35778>:
            alloc = mono_emit_jit_icall (cfg, mono_array_new_2, sp);
            goto <D.35780>;
            <D.35779>:
            D.35703 = fsig->param_count;
            if (D.35703 == 3) goto <D.35781>; else goto <D.35782>;
            <D.35781>:
            alloc = mono_emit_jit_icall (cfg, mono_array_new_3, sp);
            goto <D.35783>;
            <D.35782>:
            D.35703 = fsig->param_count;
            if (D.35703 == 4) goto <D.35784>; else goto <D.35785>;
            <D.35784>:
            alloc = mono_emit_jit_icall (cfg, mono_array_new_4, sp);
            goto <D.35786>;
            <D.35785>:
            D.35703 = fsig->param_count;
            D.35787 = (int) D.35703;
            alloc = handle_array_new (cfg, D.35787, sp, ip);
            <D.35786>:
            <D.35783>:
            <D.35780>:
            <D.35777>:
            goto <D.35788>;
            <D.35771>:
            D.32512 = BIT_FIELD_REF <*cmethod, 8, 160>;
            D.32513 = D.32512 & 128;
            if (D.32513 != 0) goto <D.35789>; else goto <D.35790>;
            <D.35789>:
            D.33575 = context_used != 0;
            D.35791 = (long int) D.33575;
            D.35792 = __builtin_expect (D.35791, 0);
            if (D.35792 != 0) goto <D.35793>; else goto <D.35794>;
            <D.35793>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9359, "!context_used");
            <D.35794>:
            D.35733 = vtable_arg != 0B;
            D.35734 = (long int) D.35733;
            D.35735 = __builtin_expect (D.35734, 0);
            if (D.35735 != 0) goto <D.35795>; else goto <D.35796>;
            <D.35795>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9360, "!vtable_arg");
            <D.35796>:
            D.30489 = cfg->mempool;
            D.35797 = mono_mempool_alloc (D.30489, 48);
            *sp = D.35797;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489->data.op[1].const_val = 0;
            D.33278 = D.31489->data.op[1].const_val;
            D.31489->data.op[0].const_val = D.33278;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489->prev = 0B;
            D.33279 = D.31489->prev;
            D.31489->next = D.33279;
            D.31489 = *sp;
            D.31489->opcode = 362;
            D.31489 = *sp;
            D.31489->flags = 0;
            D.31489 = *sp;
            D.31489->type = 0;
            D.31489 = *sp;
            D.31489->dreg = -1;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489->sreg3 = -1;
            D.33280 = D.31489->sreg3;
            D.31489->sreg2 = D.33280;
            D.33281 = D.31489->sreg2;
            D.31489->sreg1 = D.33281;
            D.31489 = *sp;
            D.30712 = cfg->ip;
            D.31489->cil_code = D.30712;
            D.31489 = *sp;
            D.31489->data.op[0].p = 0B;
            D.31489 = *sp;
            D.31489->type = 3;
            D.31489 = *sp;
            D.35798 = alloc_dreg (cfg, 3);
            D.35799 = (int) D.35798;
            D.31489->dreg = D.35799;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.35800>; else goto <D.35801>;
            <D.35800>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.31489 = *sp;
            D.30741->next = D.31489;
            D.31489 = *sp;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.31489->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.31489 = *sp;
            bblock.127->last_ins = D.31489;
            goto <D.35802>;
            <D.35801>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.31489 = *sp;
            bblock.127->last_ins = D.31489;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.35802>:
            alloc = mono_emit_method_call_full (cfg, cmethod, fsig, 0, sp, 0B, 0B, 0B);
            goto <D.35803>;
            <D.35790>:
            {
              struct MonoInst * callvirt_this_arg;

              callvirt_this_arg = 0B;
              D.32390 = cmethod->klass;
              D.32391 = BIT_FIELD_REF <*D.32390, 8, 160>;
              D.32392 = D.32391 & 8;
              if (D.32392 != 0) goto <D.35804>; else goto <D.35805>;
              <D.35804>:
              D.32390 = cmethod->klass;
              D.35806 = &D.32390->byval_arg;
              D.35807 = mono_compile_create_var (cfg, D.35806, 329);
              iargs[0] = D.35807;
              D.32390 = cmethod->klass;
              D.35806 = &D.32390->byval_arg;
              D.35808 = iargs[0];
              D.35809 = D.35808->dreg;
              emit_init_rvar (cfg, D.35809, D.35806);
              D.30489 = cfg->mempool;
              D.35810 = mono_mempool_alloc (D.30489, 48);
              *sp = D.35810;
              D.31489 = *sp;
              D.31489 = *sp;
              D.31489->data.op[1].const_val = 0;
              D.33278 = D.31489->data.op[1].const_val;
              D.31489->data.op[0].const_val = D.33278;
              D.31489 = *sp;
              D.31489 = *sp;
              D.31489->prev = 0B;
              D.33279 = D.31489->prev;
              D.31489->next = D.33279;
              D.31489 = *sp;
              D.31489->opcode = 314;
              D.31489 = *sp;
              D.31489->flags = 0;
              D.31489 = *sp;
              D.31489->type = 0;
              D.31489 = *sp;
              D.31489->dreg = -1;
              D.31489 = *sp;
              D.31489 = *sp;
              D.31489 = *sp;
              D.31489->sreg3 = -1;
              D.33280 = D.31489->sreg3;
              D.31489->sreg2 = D.33280;
              D.33281 = D.31489->sreg2;
              D.31489->sreg1 = D.33281;
              D.31489 = *sp;
              D.30712 = cfg->ip;
              D.31489->cil_code = D.30712;
              D.31489 = *sp;
              D.31239 = cfg->varinfo;
              D.35808 = iargs[0];
              D.35811 = D.35808->data.op[0].const_val;
              D.35812 = (unsigned int) D.35811;
              D.35813 = D.35812 * 4;
              D.35814 = D.31239 + D.35813;
              D.35815 = *D.35814;
              D.31489->data.op[0].p = D.35815;
              D.31239 = cfg->varinfo;
              D.35808 = iargs[0];
              D.35811 = D.35808->data.op[0].const_val;
              D.35812 = (unsigned int) D.35811;
              D.35813 = D.35812 * 4;
              D.35814 = D.31239 + D.35813;
              D.35815 = *D.35814;
              D.31239 = cfg->varinfo;
              D.35808 = iargs[0];
              D.35811 = D.35808->data.op[0].const_val;
              D.35812 = (unsigned int) D.35811;
              D.35813 = D.35812 * 4;
              D.35814 = D.31239 + D.35813;
              D.35815 = *D.35814;
              D.35816 = D.35815->flags;
              D.35817 = D.35816 | 16;
              D.35815->flags = D.35817;
              D.31489 = *sp;
              D.31489->type = 5;
              D.31489 = *sp;
              D.31239 = cfg->varinfo;
              D.35808 = iargs[0];
              D.35811 = D.35808->data.op[0].const_val;
              D.35812 = (unsigned int) D.35811;
              D.35813 = D.35812 * 4;
              D.35814 = D.31239 + D.35813;
              D.35815 = *D.35814;
              D.35818 = D.35815->klass;
              D.31489->klass = D.35818;
              D.31489 = *sp;
              D.35819 = alloc_dreg (cfg, 5);
              D.35820 = (int) D.35819;
              D.31489->dreg = D.35820;
              cfg->has_indirection = 1;
              D.30637 = cfg->gsharedvt;
              D.31575 = D.30637 != 0;
              D.31576 = (long int) D.31575;
              D.31577 = __builtin_expect (D.31576, 0);
              if (D.31577 != 0) goto <D.35821>; else goto <D.35822>;
              <D.35821>:
              D.31239 = cfg->varinfo;
              D.35808 = iargs[0];
              D.35811 = D.35808->data.op[0].const_val;
              D.35812 = (unsigned int) D.35811;
              D.35813 = D.35812 * 4;
              D.35814 = D.31239 + D.35813;
              D.35815 = *D.35814;
              D.35823 = D.35815->data.op[1].vtype;
              D.35824 = mini_is_gsharedvt_variable_type (cfg, D.35823);
              if (D.35824 != 0) goto <D.35825>; else goto <D.35826>;
              <D.35825>:
              handle_gsharedvt_ldaddr (cfg);
              <D.35826>:
              <D.35822>:
              D.35828 = mono_arch_is_soft_float ();
              if (D.35828 != 0) goto <D.35829>; else goto <D.35830>;
              <D.35829>:
              D.31239 = cfg->varinfo;
              D.35808 = iargs[0];
              D.35811 = D.35808->data.op[0].const_val;
              D.35812 = (unsigned int) D.35811;
              D.35813 = D.35812 * 4;
              D.35814 = D.31239 + D.35813;
              D.35815 = *D.35814;
              D.35831 = D.35815->type;
              D.35832 = D.35831 == 2;
              D.35833 = D.35831 == 4;
              D.35834 = D.35832 | D.35833;
              D.35835 = (int) D.35834;
              iftmp.190 = (_Bool) D.35835;
              goto <D.35836>;
              <D.35830>:
              D.31239 = cfg->varinfo;
              D.35808 = iargs[0];
              D.35811 = D.35808->data.op[0].const_val;
              D.35812 = (unsigned int) D.35811;
              D.35813 = D.35812 * 4;
              D.35814 = D.31239 + D.35813;
              D.35815 = *D.35814;
              D.35837 = D.35815->type;
              iftmp.190 = D.35837 == 2;
              <D.35836>:
              if (iftmp.190 != 0) goto <D.35838>; else goto <D.35839>;
              <D.35838>:
              {
                struct MonoInst * var1;
                struct MonoInst * var2;

                D.31239 = cfg->varinfo;
                D.35808 = iargs[0];
                D.35811 = D.35808->data.op[0].const_val;
                D.35812 = (unsigned int) D.35811;
                D.35813 = D.35812 * 4;
                D.35814 = D.31239 + D.35813;
                D.35815 = *D.35814;
                D.35841 = D.35815->dreg;
                D.35842 = D.35841 + 1;
                D.35843 = (unsigned int) D.35842;
                D.31601 = cfg->vreg_to_inst_len;
                if (D.35843 < D.31601) goto <D.35844>; else goto <D.35845>;
                <D.35844>:
                D.31604 = cfg->vreg_to_inst;
                D.31239 = cfg->varinfo;
                D.35808 = iargs[0];
                D.35811 = D.35808->data.op[0].const_val;
                D.35812 = (unsigned int) D.35811;
                D.35813 = D.35812 * 4;
                D.35814 = D.31239 + D.35813;
                D.35815 = *D.35814;
                D.35841 = D.35815->dreg;
                D.35846 = (sizetype) D.35841;
                D.35847 = D.35846 + 1;
                D.35848 = D.35847 * 4;
                D.35849 = D.31604 + D.35848;
                iftmp.191 = *D.35849;
                goto <D.35850>;
                <D.35845>:
                iftmp.191 = 0B;
                <D.35850>:
                var1 = iftmp.191;
                D.31239 = cfg->varinfo;
                D.35808 = iargs[0];
                D.35811 = D.35808->data.op[0].const_val;
                D.35812 = (unsigned int) D.35811;
                D.35813 = D.35812 * 4;
                D.35814 = D.31239 + D.35813;
                D.35815 = *D.35814;
                D.35841 = D.35815->dreg;
                D.35852 = D.35841 + 2;
                D.35853 = (unsigned int) D.35852;
                D.31601 = cfg->vreg_to_inst_len;
                if (D.35853 < D.31601) goto <D.35854>; else goto <D.35855>;
                <D.35854>:
                D.31604 = cfg->vreg_to_inst;
                D.31239 = cfg->varinfo;
                D.35808 = iargs[0];
                D.35811 = D.35808->data.op[0].const_val;
                D.35812 = (unsigned int) D.35811;
                D.35813 = D.35812 * 4;
                D.35814 = D.31239 + D.35813;
                D.35815 = *D.35814;
                D.35841 = D.35815->dreg;
                D.35846 = (sizetype) D.35841;
                D.35856 = D.35846 + 2;
                D.35857 = D.35856 * 4;
                D.35858 = D.31604 + D.35857;
                iftmp.192 = *D.35858;
                goto <D.35859>;
                <D.35855>:
                iftmp.192 = 0B;
                <D.35859>:
                var2 = iftmp.192;
                D.35860 = var1 == 0B;
                D.35861 = (long int) D.35860;
                D.35862 = __builtin_expect (D.35861, 0);
                if (D.35862 != 0) goto <D.35863>; else goto <D.35864>;
                <D.35863>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9371, "var1");
                <D.35864>:
                D.35865 = var2 == 0B;
                D.35866 = (long int) D.35865;
                D.35867 = __builtin_expect (D.35866, 0);
                if (D.35867 != 0) goto <D.35868>; else goto <D.35869>;
                <D.35868>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9371, "var2");
                <D.35869>:
                D.35870 = var1->flags;
                D.35871 = D.35870 | 16;
                var1->flags = D.35871;
                D.35872 = var2->flags;
                D.35873 = D.35872 | 16;
                var2->flags = D.35873;
              }
              <D.35839>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.35874>; else goto <D.35875>;
              <D.35874>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.31489 = *sp;
              D.30741->next = D.31489;
              D.31489 = *sp;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.31489->prev = D.30741;
              bblock.127 = cfg->cbb;
              D.31489 = *sp;
              bblock.127->last_ins = D.31489;
              goto <D.35876>;
              <D.35875>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              D.31489 = *sp;
              bblock.127->last_ins = D.31489;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.35876>:
              alloc = 0B;
              goto <D.35877>;
              <D.35805>:
              if (context_used != 0) goto <D.35878>; else goto <D.35879>;
              <D.35878>:
              D.32390 = cmethod->klass;
              alloc = handle_alloc (cfg, D.32390, 0, context_used);
              *sp = alloc;
              goto <D.35880>;
              <D.35879>:
              {
                struct MonoVTable * vtable;

                vtable = 0B;
                D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
                D.30884 = D.30883 & 64;
                if (D.30884 == 0) goto <D.35881>; else goto <D.35882>;
                <D.35881>:
                D.32390 = cmethod->klass;
                D.30513 = cfg->domain;
                vtable = mono_class_vtable (D.30513, D.32390);
                <D.35882>:
                D.32390 = cmethod->klass;
                if (D.32390 == 0B) goto <D.35883>; else goto <D.35885>;
                <D.35885>:
                D.32390 = cmethod->klass;
                D.32958 = D.32390->exception_type;
                if (D.32958 != 0) goto <D.35883>; else goto <D.35884>;
                <D.35883>:
                D.32390 = cmethod->klass;
                cfg->exception_ptr = D.32390;
                D.35886 = mini_get_debug_options ();
                D.35887 = D.35886->break_on_unverified;
                if (D.35887 != 0) goto <D.35888>; else goto load_error;
                <D.35888>:
                __asm__ __volatile__("int $03");
                <D.35884>:
                D.32390 = cmethod->klass;
                D.35889 = mini_field_access_needs_cctor_run (cfg, method, D.32390, vtable);
                if (D.35889 != 0) goto <D.35890>; else goto <D.35891>;
                <D.35890>:
                D.32390 = cmethod->klass;
                D.35892 = monoeg_g_slist_find (class_inits, D.32390);
                if (D.35892 == 0B) goto <D.35893>; else goto <D.35894>;
                <D.35893>:
                helper_sig_class_init_trampoline.193 = helper_sig_class_init_trampoline;
                D.32390 = cmethod->klass;
                mono_emit_abs_call (cfg, 15, D.32390, helper_sig_class_init_trampoline.193, 0B);
                D.30569 = cfg->verbose_level;
                if (D.30569 > 2) goto <D.35896>; else goto <D.35897>;
                <D.35896>:
                D.32390 = cmethod->klass;
                D.35898 = D.32390->name;
                D.32390 = cmethod->klass;
                D.35899 = D.32390->name_space;
                printf ("class %s.%s needs init call for ctor\n", D.35899, D.35898);
                <D.35897>:
                D.32390 = cmethod->klass;
                class_inits = monoeg_g_slist_prepend (class_inits, D.32390);
                <D.35894>:
                <D.35891>:
                D.32390 = cmethod->klass;
                alloc = handle_alloc (cfg, D.32390, 0, 0);
                *sp = alloc;
              }
              <D.35880>:
              <D.35877>:
              D.31057 = cfg->exception_type;
              if (D.31057 != 0) goto exception_exit; else goto <D.35900>;
              <D.35900>:
              if (alloc != 0B) goto <D.35901>; else goto <D.35902>;
              <D.35901>:
              {
                struct MonoInst * inst;

                D.30489 = cfg->mempool;
                inst = mono_mempool_alloc (D.30489, 48);
                inst->data.op[1].const_val = 0;
                D.35903 = inst->data.op[1].const_val;
                inst->data.op[0].const_val = D.35903;
                inst->prev = 0B;
                D.35904 = inst->prev;
                inst->next = D.35904;
                inst->opcode = 803;
                inst->flags = 0;
                inst->type = 0;
                inst->dreg = -1;
                inst->sreg3 = -1;
                D.35905 = inst->sreg3;
                inst->sreg2 = D.35905;
                D.35906 = inst->sreg2;
                inst->sreg1 = D.35906;
                D.30712 = cfg->ip;
                inst->cil_code = D.30712;
                inst->dreg = -1;
                D.35907 = alloc->dreg;
                inst->sreg1 = D.35907;
                bblock.127 = cfg->cbb;
                D.30741 = bblock.127->last_ins;
                if (D.30741 != 0B) goto <D.35908>; else goto <D.35909>;
                <D.35908>:
                bblock.127 = cfg->cbb;
                D.30741 = bblock.127->last_ins;
                D.30741->next = inst;
                bblock.127 = cfg->cbb;
                D.30741 = bblock.127->last_ins;
                inst->prev = D.30741;
                bblock.127 = cfg->cbb;
                bblock.127->last_ins = inst;
                goto <D.35910>;
                <D.35909>:
                bblock.127 = cfg->cbb;
                bblock.127 = cfg->cbb;
                bblock.127->last_ins = inst;
                D.30741 = bblock.127->last_ins;
                bblock.127->code = D.30741;
                <D.35910>:
              }
              <D.35902>:
              D.32390 = cmethod->klass;
              D.32433 = BIT_FIELD_REF <*D.32390, 8, 176>;
              D.32434 = D.32433 & 64;
              if (D.32434 != 0) goto <D.35911>; else goto <D.35912>;
              <D.35911>:
              callvirt_this_arg = *sp;
              <D.35912>:
              if (cmethod != 0B) goto <D.35915>; else goto <D.35913>;
              <D.35915>:
              D.30881 = cfg->opt;
              D.32932 = D.30881 & 2048;
              if (D.32932 != 0) goto <D.35916>; else goto <D.35913>;
              <D.35916>:
              ins = mini_emit_inst_for_ctor (cfg, cmethod, fsig, sp);
              if (ins != 0B) goto <D.35917>; else goto <D.35913>;
              <D.35917>:
              D.35918 = fsig->ret;
              D.35919 = mono_type_is_void (D.35918);
              if (D.35919 == 0) goto <D.35920>; else goto <D.35921>;
              <D.35920>:
              D.35918 = fsig->ret;
              type_to_eval_stack_type (cfg, D.35918, ins);
              *sp = ins;
              sp = sp + 4;
              <D.35921>:
              D.31057 = cfg->exception_type;
              if (D.31057 != 0) goto exception_exit; else goto <D.35922>;
              <D.35922>:
              goto <D.35914>;
              <D.35913>:
              D.30881 = cfg->opt;
              D.33394 = D.30881 & 4;
              if (D.33394 != 0) goto <D.35925>; else goto <D.35923>;
              <D.35925>:
              D.33103 = cmethod != 0B;
              D.33650 = context_used == 0;
              D.35926 = D.33103 & D.33650;
              if (D.35926 != 0) goto <D.35927>; else goto <D.35923>;
              <D.35927>:
              D.35928 = vtable_arg == 0B;
              D.35929 = disable_inline == 0;
              D.35930 = D.35928 & D.35929;
              if (D.35930 != 0) goto <D.35931>; else goto <D.35923>;
              <D.35931>:
              D.35932 = mono_method_check_inlining (cfg, cmethod);
              if (D.35932 != 0) goto <D.35933>; else goto <D.35923>;
              <D.35933>:
              D.35934 = mono_defaults.exception_class;
              D.32390 = cmethod->klass;
              D.35935 = mono_class_is_subclass_of (D.32390, D.35934, 0);
              if (D.35935 == 0) goto <D.35936>; else goto <D.35923>;
              <D.35936>:
              D.35937 = monoeg_g_list_find (dont_inline, cmethod);
              if (D.35937 == 0B) goto <D.35938>; else goto <D.35923>;
              <D.35938>:
              {
                int costs;

                D.30656 = cfg->real_offset;
                costs = inline_method (cfg, cmethod, fsig, sp, ip, D.30656, dont_inline, 0);
                if (costs != 0) goto <D.35939>; else goto <D.35940>;
                <D.35939>:
                D.30656 = cfg->real_offset;
                D.33421 = D.30656 + 5;
                cfg->real_offset = D.33421;
                bblock.127 = cfg->cbb;
                bblock = bblock.127;
                D.35941 = costs + -5;
                inline_costs = D.35941 + inline_costs;
                goto <D.35942>;
                <D.35940>:
                D.30459 = cfg->method;
                if (D.30459 != method) goto <D.35943>; else goto <D.35944>;
                <D.35943>:
                D.30431 = BIT_FIELD_REF <*method, 8, 160>;
                D.30432 = D.30431 & 124;
                if (D.30432 == 0) goto <D.35945>; else goto <D.35946>;
                <D.35945>:
                D.30569 = cfg->verbose_level;
                if (D.30569 > 1) goto <D.35947>; else goto <D.35948>;
                <D.35947>:
                printf ("inline failed: %s\n", "inline failure");
                <D.35948>:
                goto inline_failure;
                <D.35946>:
                <D.35944>:
                D.30637 = cfg->gsharedvt;
                if (D.30637 != 0) goto <D.35949>; else goto <D.35950>;
                <D.35949>:
                D.35951 = mini_is_gsharedvt_signature (cfg, fsig);
                if (D.35951 != 0) goto <D.35952>; else goto <D.35953>;
                <D.35952>:
                D.30637 = cfg->gsharedvt;
                if (D.30637 != 0) goto <D.35954>; else goto <D.35955>;
                <D.35954>:
                D.31371 = *ip;
                D.31372 = (int) D.31371;
                D.35956 = mono_opcode_name (D.31372);
                D.32188 = method->signature;
                D.32189 = D.32188->param_count;
                D.32190 = (int) D.32189;
                D.32191 = method->name;
                D.30426 = method->klass;
                D.32192 = D.30426->name;
                D.30426 = method->klass;
                D.32193 = D.30426->name_space;
                D.35957 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.32193, D.32192, D.32191, D.32190, D.35956, "method-to-ir.c", 9439);
                cfg->exception_message = D.35957;
                D.30569 = cfg->verbose_level;
                if (D.30569 > 1) goto <D.35958>; else goto <D.35959>;
                <D.35958>:
                D.32197 = cfg->exception_message;
                printf ("%s\n", D.32197);
                <D.35959>:
                mono_cfg_set_exception (cfg, 11);
                goto exception_exit;
                <D.35955>:
                <D.35953>:
                <D.35950>:
                mono_emit_method_call_full (cfg, cmethod, fsig, 0, sp, callvirt_this_arg, 0B, 0B);
                <D.35942>:
              }
              goto <D.35924>;
              <D.35923>:
              D.30637 = cfg->gsharedvt;
              if (D.30637 != 0) goto <D.35962>; else goto <D.35960>;
              <D.35962>:
              D.35963 = mini_is_gsharedvt_signature (cfg, fsig);
              if (D.35963 != 0) goto <D.35964>; else goto <D.35960>;
              <D.35964>:
              {
                struct MonoInst * addr;

                addr = emit_get_rgctx_gsharedvt_call (cfg, context_used, fsig, cmethod, 16);
                mono_emit_calli (cfg, fsig, sp, addr, 0B, vtable_arg);
              }
              goto <D.35961>;
              <D.35960>:
              if (context_used != 0) goto <D.35968>; else goto <D.35965>;
              <D.35968>:
              D.35969 = mono_method_is_generic_sharable (cmethod, 1);
              if (D.35969 == 0) goto <D.35966>; else goto <D.35970>;
              <D.35970>:
              D.32390 = cmethod->klass;
              D.35971 = mono_class_generic_sharing_enabled (D.32390);
              if (D.35971 == 0) goto <D.35966>; else goto <D.35965>;
              <D.35966>:
              {
                struct MonoInst * cmethod_addr;

                cmethod_addr = emit_get_rgctx_method (cfg, context_used, cmethod, 6);
                mono_emit_calli (cfg, fsig, sp, cmethod_addr, 0B, vtable_arg);
              }
              goto <D.35967>;
              <D.35965>:
              D.30459 = cfg->method;
              if (D.30459 != method) goto <D.35972>; else goto <D.35973>;
              <D.35972>:
              D.30431 = BIT_FIELD_REF <*method, 8, 160>;
              D.30432 = D.30431 & 124;
              if (D.30432 == 0) goto <D.35974>; else goto <D.35975>;
              <D.35974>:
              D.30569 = cfg->verbose_level;
              if (D.30569 > 1) goto <D.35976>; else goto <D.35977>;
              <D.35976>:
              printf ("inline failed: %s\n", "ctor call");
              <D.35977>:
              goto inline_failure;
              <D.35975>:
              <D.35973>:
              ins = mono_emit_method_call_full (cfg, cmethod, fsig, 0, sp, callvirt_this_arg, 0B, vtable_arg);
              <D.35967>:
              <D.35961>:
              <D.35924>:
              <D.35914>:
            }
            <D.35803>:
            <D.35788>:
            if (alloc == 0B) goto <D.35978>; else goto <D.35979>;
            <D.35978>:
            D.30489 = cfg->mempool;
            ins = mono_mempool_alloc (D.30489, 48);
            ins->data.op[1].const_val = 0;
            D.30708 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.30708;
            ins->prev = 0B;
            D.30709 = ins->prev;
            ins->next = D.30709;
            ins->opcode = 428;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.30710 = ins->sreg3;
            ins->sreg2 = D.30710;
            D.30711 = ins->sreg2;
            ins->sreg1 = D.30711;
            D.30712 = cfg->ip;
            ins->cil_code = D.30712;
            D.31239 = cfg->varinfo;
            D.35808 = iargs[0];
            D.35811 = D.35808->data.op[0].const_val;
            D.35812 = (unsigned int) D.35811;
            D.35813 = D.35812 * 4;
            D.35814 = D.31239 + D.35813;
            D.35815 = *D.35814;
            D.35823 = D.35815->data.op[1].vtype;
            D.35980 = mono_type_to_regmove (cfg, D.35823);
            D.35981 = (short unsigned int) D.35980;
            ins->opcode = D.35981;
            D.31239 = cfg->varinfo;
            D.35808 = iargs[0];
            D.35811 = D.35808->data.op[0].const_val;
            D.35812 = (unsigned int) D.35811;
            D.35813 = D.35812 * 4;
            D.35814 = D.31239 + D.35813;
            D.35815 = *D.35814;
            D.35823 = D.35815->data.op[1].vtype;
            type_to_eval_stack_type (cfg, D.35823, ins);
            D.31239 = cfg->varinfo;
            D.35808 = iargs[0];
            D.35811 = D.35808->data.op[0].const_val;
            D.35812 = (unsigned int) D.35811;
            D.35813 = D.35812 * 4;
            D.35814 = D.31239 + D.35813;
            D.35815 = *D.35814;
            D.35818 = D.35815->klass;
            ins->klass = D.35818;
            D.31239 = cfg->varinfo;
            D.35808 = iargs[0];
            D.35811 = D.35808->data.op[0].const_val;
            D.35812 = (unsigned int) D.35811;
            D.35813 = D.35812 * 4;
            D.35814 = D.31239 + D.35813;
            D.35815 = *D.35814;
            D.35841 = D.35815->dreg;
            ins->sreg1 = D.35841;
            D.31249 = ins->type;
            D.31250 = (<unnamed type>) D.31249;
            D.35982 = alloc_dreg (cfg, D.31250);
            D.35983 = (int) D.35982;
            ins->dreg = D.35983;
            D.31253 = ins->opcode;
            if (D.31253 == 431) goto <D.35984>; else goto <D.35985>;
            <D.35984>:
            D.31239 = cfg->varinfo;
            D.35808 = iargs[0];
            D.35811 = D.35808->data.op[0].const_val;
            D.35812 = (unsigned int) D.35811;
            D.35813 = D.35812 * 4;
            D.35814 = D.31239 + D.35813;
            D.35815 = *D.35814;
            D.35823 = D.35815->data.op[1].vtype;
            D.35986 = mono_class_from_mono_type (D.35823);
            ins->klass = D.35986;
            <D.35985>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.35987>; else goto <D.35988>;
            <D.35987>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = ins;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            ins->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = ins;
            goto <D.35989>;
            <D.35988>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = ins;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.35989>:
            D.35990 = ins->klass;
            D.35991 = &D.35990->byval_arg;
            type_to_eval_stack_type (cfg, D.35991, ins);
            sp.194 = sp;
            sp = sp.194 + 4;
            *sp.194 = ins;
            goto <D.35993>;
            <D.35979>:
            sp.195 = sp;
            sp = sp.195 + 4;
            *sp.195 = alloc;
            <D.35993>:
            ip = ip + 5;
            inline_costs = inline_costs + 5;
            goto <D.27380>;
          }
        finally
          {
            iargs = {CLOBBER};
            this_ins = {CLOBBER};
          }
      }
      <D.27796>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      if (D.31274 <= 3) goto <D.35995>; else goto <D.35996>;
      <D.35995>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.35997>; else goto <D.35998>;
      <D.35997>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.35999>; else goto <D.36000>;
      <D.35999>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36000>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35998>:
      D.36001 = mini_get_debug_options ();
      D.36002 = D.36001->break_on_unverified;
      if (D.36002 != 0) goto <D.36003>; else goto unverified;
      <D.36003>:
      __asm__ __volatile__("int $03");
      <D.35996>:
      sp = sp + 4294967292;
      D.31934 = ip + 5;
      if (D.31934 > end) goto <D.36004>; else goto <D.36005>;
      <D.36004>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.36006>; else goto <D.36007>;
      <D.36006>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.36008>; else goto <D.36009>;
      <D.36008>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36009>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36007>:
      D.36010 = mini_get_debug_options ();
      D.36011 = D.36010->break_on_unverified;
      if (D.36011 != 0) goto <D.36012>; else goto unverified;
      <D.36012>:
      __asm__ __volatile__("int $03");
      <D.36005>:
      token = MEM[(const guint32 *)ip + 1B];
      klass.196 = mini_get_class (method, token, generic_context);
      klass = klass.196;
      klass.173 = klass;
      if (klass.173 == 0B) goto <D.36014>; else goto <D.36016>;
      <D.36016>:
      klass.173 = klass;
      D.35265 = klass.173->exception_type;
      if (D.35265 != 0) goto <D.36014>; else goto <D.36015>;
      <D.36014>:
      klass.173 = klass;
      cfg->exception_ptr = klass.173;
      D.36017 = mini_get_debug_options ();
      D.36018 = D.36017->break_on_unverified;
      if (D.36018 != 0) goto <D.36019>; else goto load_error;
      <D.36019>:
      __asm__ __volatile__("int $03");
      <D.36015>:
      D.31489 = *sp;
      D.32169 = D.31489->type;
      if (D.32169 != 6) goto <D.36020>; else goto <D.36021>;
      <D.36020>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.36022>; else goto <D.36023>;
      <D.36022>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.36024>; else goto <D.36025>;
      <D.36024>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36025>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36023>:
      D.36026 = mini_get_debug_options ();
      D.36027 = D.36026->break_on_unverified;
      if (D.36027 != 0) goto <D.36028>; else goto unverified;
      <D.36028>:
      __asm__ __volatile__("int $03");
      <D.36021>:
      klass.173 = klass;
      context_used = mini_class_check_context_used (cfg, klass.173);
      if (context_used == 0) goto <D.36031>; else goto <D.36029>;
      <D.36031>:
      klass.173 = klass;
      D.36032 = mini_class_has_reference_variant_generic_argument (cfg, klass.173, context_used);
      if (D.36032 != 0) goto <D.36033>; else goto <D.36029>;
      <D.36033>:
      {
        struct MonoMethod * mono_castclass;
        struct MonoInst * args[3];

        try
          {
            mono_castclass = mono_marshal_get_castclass_with_cache ();
            D.31489 = *sp;
            args[0] = D.31489;
            D.30489 = cfg->mempool;
            D.36034 = mono_mempool_alloc (D.30489, 48);
            args[1] = D.36034;
            D.36035 = args[1];
            D.36035 = args[1];
            D.36035->data.op[1].const_val = 0;
            D.36036 = D.36035->data.op[1].const_val;
            D.36035->data.op[0].const_val = D.36036;
            D.36035 = args[1];
            D.36035 = args[1];
            D.36035->prev = 0B;
            D.36037 = D.36035->prev;
            D.36035->next = D.36037;
            D.36035 = args[1];
            D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.30884 = D.30883 & 64;
            if (D.30884 != 0) goto <D.36039>; else goto <D.36040>;
            <D.36039>:
            iftmp.197 = 738;
            goto <D.36041>;
            <D.36040>:
            iftmp.197 = 362;
            <D.36041>:
            D.36035->opcode = iftmp.197;
            D.36035 = args[1];
            D.36035->flags = 0;
            D.36035 = args[1];
            D.36035->type = 0;
            D.36035 = args[1];
            D.36035->dreg = -1;
            D.36035 = args[1];
            D.36035 = args[1];
            D.36035 = args[1];
            D.36035->sreg3 = -1;
            D.36042 = D.36035->sreg3;
            D.36035->sreg2 = D.36042;
            D.36043 = D.36035->sreg2;
            D.36035->sreg1 = D.36043;
            D.36035 = args[1];
            D.30712 = cfg->ip;
            D.36035->cil_code = D.30712;
            D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.30884 = D.30883 & 64;
            if (D.30884 != 0) goto <D.36044>; else goto <D.36045>;
            <D.36044>:
            {
              struct MonoInst * group;
              struct MonoInst * got_loc;

              got_loc = mono_get_got_var (cfg);
              D.30489 = cfg->mempool;
              group = mono_mempool_alloc (D.30489, 48);
              group->data.op[1].const_val = 0;
              D.36046 = group->data.op[1].const_val;
              group->data.op[0].const_val = D.36046;
              group->prev = 0B;
              D.36047 = group->prev;
              group->next = D.36047;
              group->opcode = 737;
              group->flags = 0;
              group->type = 0;
              group->dreg = -1;
              group->sreg3 = -1;
              D.36048 = group->sreg3;
              group->sreg2 = D.36048;
              D.36049 = group->sreg2;
              group->sreg1 = D.36049;
              D.30712 = cfg->ip;
              group->cil_code = D.30712;
              klass.173 = klass;
              group->data.op[0].src = klass.173;
              group->data.op[1].src = 11B;
              D.36035 = args[1];
              D.36050 = got_loc->dreg;
              D.36035->sreg1 = D.36050;
              D.36035 = args[1];
              D.36035->data.op[1].p = group;
            }
            goto <D.36051>;
            <D.36045>:
            D.36035 = args[1];
            klass.173 = klass;
            D.36035->data.op[0].p = klass.173;
            D.36035 = args[1];
            D.36035->data.op[1].src = 11B;
            <D.36051>:
            D.36035 = args[1];
            D.36035->type = 3;
            D.36035 = args[1];
            D.36052 = alloc_dreg (cfg, 3);
            D.36053 = (int) D.36052;
            D.36035->dreg = D.36053;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.36054>; else goto <D.36055>;
            <D.36054>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.36035 = args[1];
            D.30741->next = D.36035;
            D.36035 = args[1];
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.36035->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.36035 = args[1];
            bblock.127->last_ins = D.36035;
            goto <D.36056>;
            <D.36055>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.36035 = args[1];
            bblock.127->last_ins = D.36035;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.36056>:
            D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.30884 = D.30883 & 64;
            if (D.30884 != 0) goto <D.36057>; else goto <D.36058>;
            <D.36057>:
            D.30489 = cfg->mempool;
            D.36059 = mono_mempool_alloc (D.30489, 48);
            args[2] = D.36059;
            D.36060 = args[2];
            D.36060 = args[2];
            D.36060->data.op[1].const_val = 0;
            D.36061 = D.36060->data.op[1].const_val;
            D.36060->data.op[0].const_val = D.36061;
            D.36060 = args[2];
            D.36060 = args[2];
            D.36060->prev = 0B;
            D.36062 = D.36060->prev;
            D.36060->next = D.36062;
            D.36060 = args[2];
            D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.30884 = D.30883 & 64;
            if (D.30884 != 0) goto <D.36064>; else goto <D.36065>;
            <D.36064>:
            iftmp.198 = 738;
            goto <D.36066>;
            <D.36065>:
            iftmp.198 = 362;
            <D.36066>:
            D.36060->opcode = iftmp.198;
            D.36060 = args[2];
            D.36060->flags = 0;
            D.36060 = args[2];
            D.36060->type = 0;
            D.36060 = args[2];
            D.36060->dreg = -1;
            D.36060 = args[2];
            D.36060 = args[2];
            D.36060 = args[2];
            D.36060->sreg3 = -1;
            D.36067 = D.36060->sreg3;
            D.36060->sreg2 = D.36067;
            D.36068 = D.36060->sreg2;
            D.36060->sreg1 = D.36068;
            D.36060 = args[2];
            D.30712 = cfg->ip;
            D.36060->cil_code = D.30712;
            D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.30884 = D.30883 & 64;
            if (D.30884 != 0) goto <D.36069>; else goto <D.36070>;
            <D.36069>:
            {
              struct MonoInst * group;
              struct MonoInst * got_loc;

              got_loc = mono_get_got_var (cfg);
              D.30489 = cfg->mempool;
              group = mono_mempool_alloc (D.30489, 48);
              group->data.op[1].const_val = 0;
              D.36071 = group->data.op[1].const_val;
              group->data.op[0].const_val = D.36071;
              group->prev = 0B;
              D.36072 = group->prev;
              group->next = D.36072;
              group->opcode = 737;
              group->flags = 0;
              group->type = 0;
              group->dreg = -1;
              group->sreg3 = -1;
              D.36073 = group->sreg3;
              group->sreg2 = D.36073;
              D.36074 = group->sreg2;
              group->sreg1 = D.36074;
              D.30712 = cfg->ip;
              group->cil_code = D.30712;
              group->data.op[0].src = 0B;
              group->data.op[1].src = 43B;
              D.36060 = args[2];
              D.36075 = got_loc->dreg;
              D.36060->sreg1 = D.36075;
              D.36060 = args[2];
              D.36060->data.op[1].p = group;
            }
            goto <D.36076>;
            <D.36070>:
            D.36060 = args[2];
            D.36060->data.op[0].p = 0B;
            D.36060 = args[2];
            D.36060->data.op[1].src = 43B;
            <D.36076>:
            D.36060 = args[2];
            D.36060->type = 3;
            D.36060 = args[2];
            D.36077 = alloc_dreg (cfg, 3);
            D.36078 = (int) D.36077;
            D.36060->dreg = D.36078;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.36079>; else goto <D.36080>;
            <D.36079>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.36060 = args[2];
            D.30741->next = D.36060;
            D.36060 = args[2];
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.36060->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.36060 = args[2];
            bblock.127->last_ins = D.36060;
            goto <D.36081>;
            <D.36080>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.36060 = args[2];
            bblock.127->last_ins = D.36060;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.36081>:
            goto <D.36082>;
            <D.36058>:
            D.30489 = cfg->mempool;
            D.36083 = mono_mempool_alloc (D.30489, 48);
            args[2] = D.36083;
            D.36060 = args[2];
            D.36060 = args[2];
            D.36060->data.op[1].const_val = 0;
            D.36061 = D.36060->data.op[1].const_val;
            D.36060->data.op[0].const_val = D.36061;
            D.36060 = args[2];
            D.36060 = args[2];
            D.36060->prev = 0B;
            D.36062 = D.36060->prev;
            D.36060->next = D.36062;
            D.36060 = args[2];
            D.36060->opcode = 362;
            D.36060 = args[2];
            D.36060->flags = 0;
            D.36060 = args[2];
            D.36060->type = 0;
            D.36060 = args[2];
            D.36060->dreg = -1;
            D.36060 = args[2];
            D.36060 = args[2];
            D.36060 = args[2];
            D.36060->sreg3 = -1;
            D.36067 = D.36060->sreg3;
            D.36060->sreg2 = D.36067;
            D.36068 = D.36060->sreg2;
            D.36060->sreg1 = D.36068;
            D.36060 = args[2];
            D.30712 = cfg->ip;
            D.36060->cil_code = D.30712;
            D.36060 = args[2];
            D.30513 = cfg->domain;
            D.36084 = mono_domain_alloc0 (D.30513, 4);
            D.36060->data.op[0].p = D.36084;
            D.36060 = args[2];
            D.36060->type = 3;
            D.36060 = args[2];
            D.36085 = alloc_dreg (cfg, 3);
            D.36086 = (int) D.36085;
            D.36060->dreg = D.36086;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.36087>; else goto <D.36088>;
            <D.36087>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.36060 = args[2];
            D.30741->next = D.36060;
            D.36060 = args[2];
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.36060->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.36060 = args[2];
            bblock.127->last_ins = D.36060;
            goto <D.36089>;
            <D.36088>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.36060 = args[2];
            bblock.127->last_ins = D.36060;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.36089>:
            <D.36082>:
            D.31489 = *sp;
            D.31682 = D.31489->dreg;
            klass.173 = klass;
            save_cast_details (cfg, klass.173, D.31682, 1, &bblock);
            sp.199 = sp;
            sp = sp.199 + 4;
            D.36091 = mono_emit_method_call (cfg, mono_castclass, &args, 0B);
            *sp.199 = D.36091;
            reset_cast_details (cfg);
            ip = ip + 5;
            inline_costs = inline_costs + 2;
          }
        finally
          {
            args = {CLOBBER};
          }
      }
      goto <D.36030>;
      <D.36029>:
      if (context_used == 0) goto <D.36095>; else goto <D.36092>;
      <D.36095>:
      klass.173 = klass;
      D.36096 = BIT_FIELD_REF <*klass.173, 8, 176>;
      D.36097 = D.36096 & 64;
      if (D.36097 != 0) goto <D.36093>; else goto <D.36098>;
      <D.36098>:
      klass.173 = klass;
      D.36099 = klass.173->flags;
      D.36100 = D.36099 & 32;
      if (D.36100 != 0) goto <D.36093>; else goto <D.36092>;
      <D.36093>:
      {
        struct MonoMethod * mono_castclass;
        struct MonoInst * iargs[1];
        int costs;

        try
          {
            klass.173 = klass;
            mono_castclass = mono_marshal_get_castclass (klass.173);
            D.31489 = *sp;
            iargs[0] = D.31489;
            D.31489 = *sp;
            D.31682 = D.31489->dreg;
            klass.173 = klass;
            save_cast_details (cfg, klass.173, D.31682, 1, &bblock);
            D.30656 = cfg->real_offset;
            D.36101 = mono_method_signature (mono_castclass);
            costs = inline_method (cfg, mono_castclass, D.36101, &iargs, ip, D.30656, dont_inline, 1);
            reset_cast_details (cfg);
            D.31057 = cfg->exception_type;
            if (D.31057 != 0) goto exception_exit; else goto <D.36102>;
            <D.36102>:
            D.36103 = costs <= 0;
            D.36104 = (long int) D.36103;
            D.36105 = __builtin_expect (D.36104, 0);
            if (D.36105 != 0) goto <D.36106>; else goto <D.36107>;
            <D.36106>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9524, "costs > 0");
            <D.36107>:
            ip = ip + 5;
            D.30656 = cfg->real_offset;
            D.33421 = D.30656 + 5;
            cfg->real_offset = D.33421;
            bblock.127 = cfg->cbb;
            bblock = bblock.127;
            sp.200 = sp;
            sp = sp.200 + 4;
            D.36109 = iargs[0];
            *sp.200 = D.36109;
            inline_costs = inline_costs + costs;
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      goto <D.36094>;
      <D.36092>:
      D.31489 = *sp;
      klass.173 = klass;
      ins = handle_castclass (cfg, klass.173, D.31489, context_used);
      D.31057 = cfg->exception_type;
      if (D.31057 != 0) goto exception_exit; else goto <D.36110>;
      <D.36110>:
      bblock.127 = cfg->cbb;
      bblock = bblock.127;
      sp.201 = sp;
      sp = sp.201 + 4;
      *sp.201 = ins;
      ip = ip + 5;
      <D.36094>:
      <D.36030>:
      goto <D.27380>;
      <D.27806>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      if (D.31274 <= 3) goto <D.36112>; else goto <D.36113>;
      <D.36112>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.36114>; else goto <D.36115>;
      <D.36114>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.36116>; else goto <D.36117>;
      <D.36116>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36117>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36115>:
      D.36118 = mini_get_debug_options ();
      D.36119 = D.36118->break_on_unverified;
      if (D.36119 != 0) goto <D.36120>; else goto unverified;
      <D.36120>:
      __asm__ __volatile__("int $03");
      <D.36113>:
      sp = sp + 4294967292;
      D.31934 = ip + 5;
      if (D.31934 > end) goto <D.36121>; else goto <D.36122>;
      <D.36121>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.36123>; else goto <D.36124>;
      <D.36123>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.36125>; else goto <D.36126>;
      <D.36125>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36126>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36124>:
      D.36127 = mini_get_debug_options ();
      D.36128 = D.36127->break_on_unverified;
      if (D.36128 != 0) goto <D.36129>; else goto unverified;
      <D.36129>:
      __asm__ __volatile__("int $03");
      <D.36122>:
      token = MEM[(const guint32 *)ip + 1B];
      klass.202 = mini_get_class (method, token, generic_context);
      klass = klass.202;
      klass.173 = klass;
      if (klass.173 == 0B) goto <D.36131>; else goto <D.36133>;
      <D.36133>:
      klass.173 = klass;
      D.35265 = klass.173->exception_type;
      if (D.35265 != 0) goto <D.36131>; else goto <D.36132>;
      <D.36131>:
      klass.173 = klass;
      cfg->exception_ptr = klass.173;
      D.36134 = mini_get_debug_options ();
      D.36135 = D.36134->break_on_unverified;
      if (D.36135 != 0) goto <D.36136>; else goto load_error;
      <D.36136>:
      __asm__ __volatile__("int $03");
      <D.36132>:
      D.31489 = *sp;
      D.32169 = D.31489->type;
      if (D.32169 != 6) goto <D.36137>; else goto <D.36138>;
      <D.36137>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.36139>; else goto <D.36140>;
      <D.36139>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.36141>; else goto <D.36142>;
      <D.36141>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36142>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36140>:
      D.36143 = mini_get_debug_options ();
      D.36144 = D.36143->break_on_unverified;
      if (D.36144 != 0) goto <D.36145>; else goto unverified;
      <D.36145>:
      __asm__ __volatile__("int $03");
      <D.36138>:
      klass.173 = klass;
      context_used = mini_class_check_context_used (cfg, klass.173);
      if (context_used == 0) goto <D.36148>; else goto <D.36146>;
      <D.36148>:
      klass.173 = klass;
      D.36149 = mini_class_has_reference_variant_generic_argument (cfg, klass.173, context_used);
      if (D.36149 != 0) goto <D.36150>; else goto <D.36146>;
      <D.36150>:
      {
        struct MonoMethod * mono_isinst;
        struct MonoInst * args[3];

        try
          {
            mono_isinst = mono_marshal_get_isinst_with_cache ();
            D.31489 = *sp;
            args[0] = D.31489;
            D.30489 = cfg->mempool;
            D.36151 = mono_mempool_alloc (D.30489, 48);
            args[1] = D.36151;
            D.36152 = args[1];
            D.36152 = args[1];
            D.36152->data.op[1].const_val = 0;
            D.36153 = D.36152->data.op[1].const_val;
            D.36152->data.op[0].const_val = D.36153;
            D.36152 = args[1];
            D.36152 = args[1];
            D.36152->prev = 0B;
            D.36154 = D.36152->prev;
            D.36152->next = D.36154;
            D.36152 = args[1];
            D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.30884 = D.30883 & 64;
            if (D.30884 != 0) goto <D.36156>; else goto <D.36157>;
            <D.36156>:
            iftmp.203 = 738;
            goto <D.36158>;
            <D.36157>:
            iftmp.203 = 362;
            <D.36158>:
            D.36152->opcode = iftmp.203;
            D.36152 = args[1];
            D.36152->flags = 0;
            D.36152 = args[1];
            D.36152->type = 0;
            D.36152 = args[1];
            D.36152->dreg = -1;
            D.36152 = args[1];
            D.36152 = args[1];
            D.36152 = args[1];
            D.36152->sreg3 = -1;
            D.36159 = D.36152->sreg3;
            D.36152->sreg2 = D.36159;
            D.36160 = D.36152->sreg2;
            D.36152->sreg1 = D.36160;
            D.36152 = args[1];
            D.30712 = cfg->ip;
            D.36152->cil_code = D.30712;
            D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.30884 = D.30883 & 64;
            if (D.30884 != 0) goto <D.36161>; else goto <D.36162>;
            <D.36161>:
            {
              struct MonoInst * group;
              struct MonoInst * got_loc;

              got_loc = mono_get_got_var (cfg);
              D.30489 = cfg->mempool;
              group = mono_mempool_alloc (D.30489, 48);
              group->data.op[1].const_val = 0;
              D.36163 = group->data.op[1].const_val;
              group->data.op[0].const_val = D.36163;
              group->prev = 0B;
              D.36164 = group->prev;
              group->next = D.36164;
              group->opcode = 737;
              group->flags = 0;
              group->type = 0;
              group->dreg = -1;
              group->sreg3 = -1;
              D.36165 = group->sreg3;
              group->sreg2 = D.36165;
              D.36166 = group->sreg2;
              group->sreg1 = D.36166;
              D.30712 = cfg->ip;
              group->cil_code = D.30712;
              klass.173 = klass;
              group->data.op[0].src = klass.173;
              group->data.op[1].src = 11B;
              D.36152 = args[1];
              D.36167 = got_loc->dreg;
              D.36152->sreg1 = D.36167;
              D.36152 = args[1];
              D.36152->data.op[1].p = group;
            }
            goto <D.36168>;
            <D.36162>:
            D.36152 = args[1];
            klass.173 = klass;
            D.36152->data.op[0].p = klass.173;
            D.36152 = args[1];
            D.36152->data.op[1].src = 11B;
            <D.36168>:
            D.36152 = args[1];
            D.36152->type = 3;
            D.36152 = args[1];
            D.36169 = alloc_dreg (cfg, 3);
            D.36170 = (int) D.36169;
            D.36152->dreg = D.36170;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.36171>; else goto <D.36172>;
            <D.36171>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.36152 = args[1];
            D.30741->next = D.36152;
            D.36152 = args[1];
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.36152->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.36152 = args[1];
            bblock.127->last_ins = D.36152;
            goto <D.36173>;
            <D.36172>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.36152 = args[1];
            bblock.127->last_ins = D.36152;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.36173>:
            D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.30884 = D.30883 & 64;
            if (D.30884 != 0) goto <D.36174>; else goto <D.36175>;
            <D.36174>:
            D.30489 = cfg->mempool;
            D.36176 = mono_mempool_alloc (D.30489, 48);
            args[2] = D.36176;
            D.36177 = args[2];
            D.36177 = args[2];
            D.36177->data.op[1].const_val = 0;
            D.36178 = D.36177->data.op[1].const_val;
            D.36177->data.op[0].const_val = D.36178;
            D.36177 = args[2];
            D.36177 = args[2];
            D.36177->prev = 0B;
            D.36179 = D.36177->prev;
            D.36177->next = D.36179;
            D.36177 = args[2];
            D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.30884 = D.30883 & 64;
            if (D.30884 != 0) goto <D.36181>; else goto <D.36182>;
            <D.36181>:
            iftmp.204 = 738;
            goto <D.36183>;
            <D.36182>:
            iftmp.204 = 362;
            <D.36183>:
            D.36177->opcode = iftmp.204;
            D.36177 = args[2];
            D.36177->flags = 0;
            D.36177 = args[2];
            D.36177->type = 0;
            D.36177 = args[2];
            D.36177->dreg = -1;
            D.36177 = args[2];
            D.36177 = args[2];
            D.36177 = args[2];
            D.36177->sreg3 = -1;
            D.36184 = D.36177->sreg3;
            D.36177->sreg2 = D.36184;
            D.36185 = D.36177->sreg2;
            D.36177->sreg1 = D.36185;
            D.36177 = args[2];
            D.30712 = cfg->ip;
            D.36177->cil_code = D.30712;
            D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.30884 = D.30883 & 64;
            if (D.30884 != 0) goto <D.36186>; else goto <D.36187>;
            <D.36186>:
            {
              struct MonoInst * group;
              struct MonoInst * got_loc;

              got_loc = mono_get_got_var (cfg);
              D.30489 = cfg->mempool;
              group = mono_mempool_alloc (D.30489, 48);
              group->data.op[1].const_val = 0;
              D.36188 = group->data.op[1].const_val;
              group->data.op[0].const_val = D.36188;
              group->prev = 0B;
              D.36189 = group->prev;
              group->next = D.36189;
              group->opcode = 737;
              group->flags = 0;
              group->type = 0;
              group->dreg = -1;
              group->sreg3 = -1;
              D.36190 = group->sreg3;
              group->sreg2 = D.36190;
              D.36191 = group->sreg2;
              group->sreg1 = D.36191;
              D.30712 = cfg->ip;
              group->cil_code = D.30712;
              group->data.op[0].src = 0B;
              group->data.op[1].src = 43B;
              D.36177 = args[2];
              D.36192 = got_loc->dreg;
              D.36177->sreg1 = D.36192;
              D.36177 = args[2];
              D.36177->data.op[1].p = group;
            }
            goto <D.36193>;
            <D.36187>:
            D.36177 = args[2];
            D.36177->data.op[0].p = 0B;
            D.36177 = args[2];
            D.36177->data.op[1].src = 43B;
            <D.36193>:
            D.36177 = args[2];
            D.36177->type = 3;
            D.36177 = args[2];
            D.36194 = alloc_dreg (cfg, 3);
            D.36195 = (int) D.36194;
            D.36177->dreg = D.36195;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.36196>; else goto <D.36197>;
            <D.36196>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.36177 = args[2];
            D.30741->next = D.36177;
            D.36177 = args[2];
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.36177->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.36177 = args[2];
            bblock.127->last_ins = D.36177;
            goto <D.36198>;
            <D.36197>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.36177 = args[2];
            bblock.127->last_ins = D.36177;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.36198>:
            goto <D.36199>;
            <D.36175>:
            D.30489 = cfg->mempool;
            D.36200 = mono_mempool_alloc (D.30489, 48);
            args[2] = D.36200;
            D.36177 = args[2];
            D.36177 = args[2];
            D.36177->data.op[1].const_val = 0;
            D.36178 = D.36177->data.op[1].const_val;
            D.36177->data.op[0].const_val = D.36178;
            D.36177 = args[2];
            D.36177 = args[2];
            D.36177->prev = 0B;
            D.36179 = D.36177->prev;
            D.36177->next = D.36179;
            D.36177 = args[2];
            D.36177->opcode = 362;
            D.36177 = args[2];
            D.36177->flags = 0;
            D.36177 = args[2];
            D.36177->type = 0;
            D.36177 = args[2];
            D.36177->dreg = -1;
            D.36177 = args[2];
            D.36177 = args[2];
            D.36177 = args[2];
            D.36177->sreg3 = -1;
            D.36184 = D.36177->sreg3;
            D.36177->sreg2 = D.36184;
            D.36185 = D.36177->sreg2;
            D.36177->sreg1 = D.36185;
            D.36177 = args[2];
            D.30712 = cfg->ip;
            D.36177->cil_code = D.30712;
            D.36177 = args[2];
            D.30513 = cfg->domain;
            D.36201 = mono_domain_alloc0 (D.30513, 4);
            D.36177->data.op[0].p = D.36201;
            D.36177 = args[2];
            D.36177->type = 3;
            D.36177 = args[2];
            D.36202 = alloc_dreg (cfg, 3);
            D.36203 = (int) D.36202;
            D.36177->dreg = D.36203;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.36204>; else goto <D.36205>;
            <D.36204>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.36177 = args[2];
            D.30741->next = D.36177;
            D.36177 = args[2];
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.36177->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.36177 = args[2];
            bblock.127->last_ins = D.36177;
            goto <D.36206>;
            <D.36205>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.36177 = args[2];
            bblock.127->last_ins = D.36177;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.36206>:
            <D.36199>:
            sp.205 = sp;
            sp = sp.205 + 4;
            D.36208 = mono_emit_method_call (cfg, mono_isinst, &args, 0B);
            *sp.205 = D.36208;
            ip = ip + 5;
            inline_costs = inline_costs + 2;
          }
        finally
          {
            args = {CLOBBER};
          }
      }
      goto <D.36147>;
      <D.36146>:
      if (context_used == 0) goto <D.36212>; else goto <D.36209>;
      <D.36212>:
      klass.173 = klass;
      D.36096 = BIT_FIELD_REF <*klass.173, 8, 176>;
      D.36097 = D.36096 & 64;
      if (D.36097 != 0) goto <D.36210>; else goto <D.36213>;
      <D.36213>:
      klass.173 = klass;
      D.36099 = klass.173->flags;
      D.36100 = D.36099 & 32;
      if (D.36100 != 0) goto <D.36210>; else goto <D.36209>;
      <D.36210>:
      {
        struct MonoMethod * mono_isinst;
        struct MonoInst * iargs[1];
        int costs;

        try
          {
            klass.173 = klass;
            mono_isinst = mono_marshal_get_isinst (klass.173);
            D.31489 = *sp;
            iargs[0] = D.31489;
            D.30656 = cfg->real_offset;
            D.36214 = mono_method_signature (mono_isinst);
            costs = inline_method (cfg, mono_isinst, D.36214, &iargs, ip, D.30656, dont_inline, 1);
            D.31057 = cfg->exception_type;
            if (D.31057 != 0) goto exception_exit; else goto <D.36215>;
            <D.36215>:
            D.36216 = costs <= 0;
            D.36217 = (long int) D.36216;
            D.36218 = __builtin_expect (D.36217, 0);
            if (D.36218 != 0) goto <D.36219>; else goto <D.36220>;
            <D.36219>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9584, "costs > 0");
            <D.36220>:
            ip = ip + 5;
            D.30656 = cfg->real_offset;
            D.33421 = D.30656 + 5;
            cfg->real_offset = D.33421;
            bblock.127 = cfg->cbb;
            bblock = bblock.127;
            sp.206 = sp;
            sp = sp.206 + 4;
            D.36222 = iargs[0];
            *sp.206 = D.36222;
            inline_costs = inline_costs + costs;
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      goto <D.36211>;
      <D.36209>:
      D.31489 = *sp;
      klass.173 = klass;
      ins = handle_isinst (cfg, klass.173, D.31489, context_used);
      D.31057 = cfg->exception_type;
      if (D.31057 != 0) goto exception_exit; else goto <D.36223>;
      <D.36223>:
      bblock.127 = cfg->cbb;
      bblock = bblock.127;
      sp.207 = sp;
      sp = sp.207 + 4;
      *sp.207 = ins;
      ip = ip + 5;
      <D.36211>:
      <D.36147>:
      goto <D.27380>;
      <D.27816>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      if (D.31274 <= 3) goto <D.36225>; else goto <D.36226>;
      <D.36225>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.36227>; else goto <D.36228>;
      <D.36227>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.36229>; else goto <D.36230>;
      <D.36229>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36230>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36228>:
      D.36231 = mini_get_debug_options ();
      D.36232 = D.36231->break_on_unverified;
      if (D.36232 != 0) goto <D.36233>; else goto unverified;
      <D.36233>:
      __asm__ __volatile__("int $03");
      <D.36226>:
      sp = sp + 4294967292;
      D.31934 = ip + 5;
      if (D.31934 > end) goto <D.36234>; else goto <D.36235>;
      <D.36234>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.36236>; else goto <D.36237>;
      <D.36236>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.36238>; else goto <D.36239>;
      <D.36238>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36239>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36237>:
      D.36240 = mini_get_debug_options ();
      D.36241 = D.36240->break_on_unverified;
      if (D.36241 != 0) goto <D.36242>; else goto unverified;
      <D.36242>:
      __asm__ __volatile__("int $03");
      <D.36235>:
      token = MEM[(const guint32 *)ip + 1B];
      klass.208 = mini_get_class (method, token, generic_context);
      klass = klass.208;
      klass.173 = klass;
      if (klass.173 == 0B) goto <D.36244>; else goto <D.36246>;
      <D.36246>:
      klass.173 = klass;
      D.35265 = klass.173->exception_type;
      if (D.35265 != 0) goto <D.36244>; else goto <D.36245>;
      <D.36244>:
      klass.173 = klass;
      cfg->exception_ptr = klass.173;
      D.36247 = mini_get_debug_options ();
      D.36248 = D.36247->break_on_unverified;
      if (D.36248 != 0) goto <D.36249>; else goto load_error;
      <D.36249>:
      __asm__ __volatile__("int $03");
      <D.36245>:
      klass.173 = klass;
      mono_save_token_info (cfg, image, token, klass.173);
      klass.173 = klass;
      context_used = mini_class_check_context_used (cfg, klass.173);
      klass.173 = klass;
      D.36250 = mini_is_gsharedvt_klass (cfg, klass.173);
      if (D.36250 != 0) goto <D.36251>; else goto <D.36252>;
      <D.36251>:
      D.31489 = *sp;
      klass.173 = klass;
      D.36253 = handle_unbox_gsharedvt (cfg, klass.173, D.31489, &bblock);
      *sp = D.36253;
      sp = sp + 4;
      ip = ip + 5;
      inline_costs = inline_costs + 2;
      goto <D.27380>;
      <D.36252>:
      klass.173 = klass;
      D.36254 = generic_class_is_reference_type (cfg, klass.173);
      if (D.36254 != 0) goto <D.36255>; else goto <D.36256>;
      <D.36255>:
      if (context_used == 0) goto <D.36259>; else goto <D.36257>;
      <D.36259>:
      klass.173 = klass;
      D.36260 = mini_class_has_reference_variant_generic_argument (cfg, klass.173, context_used);
      if (D.36260 != 0) goto <D.36261>; else goto <D.36257>;
      <D.36261>:
      {
        struct MonoMethod * mono_castclass;
        struct MonoInst * args[3];

        try
          {
            mono_castclass = mono_marshal_get_castclass_with_cache ();
            D.31489 = *sp;
            args[0] = D.31489;
            D.30489 = cfg->mempool;
            D.36262 = mono_mempool_alloc (D.30489, 48);
            args[1] = D.36262;
            D.36263 = args[1];
            D.36263 = args[1];
            D.36263->data.op[1].const_val = 0;
            D.36264 = D.36263->data.op[1].const_val;
            D.36263->data.op[0].const_val = D.36264;
            D.36263 = args[1];
            D.36263 = args[1];
            D.36263->prev = 0B;
            D.36265 = D.36263->prev;
            D.36263->next = D.36265;
            D.36263 = args[1];
            D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.30884 = D.30883 & 64;
            if (D.30884 != 0) goto <D.36267>; else goto <D.36268>;
            <D.36267>:
            iftmp.209 = 738;
            goto <D.36269>;
            <D.36268>:
            iftmp.209 = 362;
            <D.36269>:
            D.36263->opcode = iftmp.209;
            D.36263 = args[1];
            D.36263->flags = 0;
            D.36263 = args[1];
            D.36263->type = 0;
            D.36263 = args[1];
            D.36263->dreg = -1;
            D.36263 = args[1];
            D.36263 = args[1];
            D.36263 = args[1];
            D.36263->sreg3 = -1;
            D.36270 = D.36263->sreg3;
            D.36263->sreg2 = D.36270;
            D.36271 = D.36263->sreg2;
            D.36263->sreg1 = D.36271;
            D.36263 = args[1];
            D.30712 = cfg->ip;
            D.36263->cil_code = D.30712;
            D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.30884 = D.30883 & 64;
            if (D.30884 != 0) goto <D.36272>; else goto <D.36273>;
            <D.36272>:
            {
              struct MonoInst * group;
              struct MonoInst * got_loc;

              got_loc = mono_get_got_var (cfg);
              D.30489 = cfg->mempool;
              group = mono_mempool_alloc (D.30489, 48);
              group->data.op[1].const_val = 0;
              D.36274 = group->data.op[1].const_val;
              group->data.op[0].const_val = D.36274;
              group->prev = 0B;
              D.36275 = group->prev;
              group->next = D.36275;
              group->opcode = 737;
              group->flags = 0;
              group->type = 0;
              group->dreg = -1;
              group->sreg3 = -1;
              D.36276 = group->sreg3;
              group->sreg2 = D.36276;
              D.36277 = group->sreg2;
              group->sreg1 = D.36277;
              D.30712 = cfg->ip;
              group->cil_code = D.30712;
              klass.173 = klass;
              group->data.op[0].src = klass.173;
              group->data.op[1].src = 11B;
              D.36263 = args[1];
              D.36278 = got_loc->dreg;
              D.36263->sreg1 = D.36278;
              D.36263 = args[1];
              D.36263->data.op[1].p = group;
            }
            goto <D.36279>;
            <D.36273>:
            D.36263 = args[1];
            klass.173 = klass;
            D.36263->data.op[0].p = klass.173;
            D.36263 = args[1];
            D.36263->data.op[1].src = 11B;
            <D.36279>:
            D.36263 = args[1];
            D.36263->type = 3;
            D.36263 = args[1];
            D.36280 = alloc_dreg (cfg, 3);
            D.36281 = (int) D.36280;
            D.36263->dreg = D.36281;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.36282>; else goto <D.36283>;
            <D.36282>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.36263 = args[1];
            D.30741->next = D.36263;
            D.36263 = args[1];
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.36263->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.36263 = args[1];
            bblock.127->last_ins = D.36263;
            goto <D.36284>;
            <D.36283>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.36263 = args[1];
            bblock.127->last_ins = D.36263;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.36284>:
            D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.30884 = D.30883 & 64;
            if (D.30884 != 0) goto <D.36285>; else goto <D.36286>;
            <D.36285>:
            D.30489 = cfg->mempool;
            D.36287 = mono_mempool_alloc (D.30489, 48);
            args[2] = D.36287;
            D.36288 = args[2];
            D.36288 = args[2];
            D.36288->data.op[1].const_val = 0;
            D.36289 = D.36288->data.op[1].const_val;
            D.36288->data.op[0].const_val = D.36289;
            D.36288 = args[2];
            D.36288 = args[2];
            D.36288->prev = 0B;
            D.36290 = D.36288->prev;
            D.36288->next = D.36290;
            D.36288 = args[2];
            D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.30884 = D.30883 & 64;
            if (D.30884 != 0) goto <D.36292>; else goto <D.36293>;
            <D.36292>:
            iftmp.210 = 738;
            goto <D.36294>;
            <D.36293>:
            iftmp.210 = 362;
            <D.36294>:
            D.36288->opcode = iftmp.210;
            D.36288 = args[2];
            D.36288->flags = 0;
            D.36288 = args[2];
            D.36288->type = 0;
            D.36288 = args[2];
            D.36288->dreg = -1;
            D.36288 = args[2];
            D.36288 = args[2];
            D.36288 = args[2];
            D.36288->sreg3 = -1;
            D.36295 = D.36288->sreg3;
            D.36288->sreg2 = D.36295;
            D.36296 = D.36288->sreg2;
            D.36288->sreg1 = D.36296;
            D.36288 = args[2];
            D.30712 = cfg->ip;
            D.36288->cil_code = D.30712;
            D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.30884 = D.30883 & 64;
            if (D.30884 != 0) goto <D.36297>; else goto <D.36298>;
            <D.36297>:
            {
              struct MonoInst * group;
              struct MonoInst * got_loc;

              got_loc = mono_get_got_var (cfg);
              D.30489 = cfg->mempool;
              group = mono_mempool_alloc (D.30489, 48);
              group->data.op[1].const_val = 0;
              D.36299 = group->data.op[1].const_val;
              group->data.op[0].const_val = D.36299;
              group->prev = 0B;
              D.36300 = group->prev;
              group->next = D.36300;
              group->opcode = 737;
              group->flags = 0;
              group->type = 0;
              group->dreg = -1;
              group->sreg3 = -1;
              D.36301 = group->sreg3;
              group->sreg2 = D.36301;
              D.36302 = group->sreg2;
              group->sreg1 = D.36302;
              D.30712 = cfg->ip;
              group->cil_code = D.30712;
              group->data.op[0].src = 0B;
              group->data.op[1].src = 43B;
              D.36288 = args[2];
              D.36303 = got_loc->dreg;
              D.36288->sreg1 = D.36303;
              D.36288 = args[2];
              D.36288->data.op[1].p = group;
            }
            goto <D.36304>;
            <D.36298>:
            D.36288 = args[2];
            D.36288->data.op[0].p = 0B;
            D.36288 = args[2];
            D.36288->data.op[1].src = 43B;
            <D.36304>:
            D.36288 = args[2];
            D.36288->type = 3;
            D.36288 = args[2];
            D.36305 = alloc_dreg (cfg, 3);
            D.36306 = (int) D.36305;
            D.36288->dreg = D.36306;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.36307>; else goto <D.36308>;
            <D.36307>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.36288 = args[2];
            D.30741->next = D.36288;
            D.36288 = args[2];
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.36288->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.36288 = args[2];
            bblock.127->last_ins = D.36288;
            goto <D.36309>;
            <D.36308>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.36288 = args[2];
            bblock.127->last_ins = D.36288;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.36309>:
            goto <D.36310>;
            <D.36286>:
            D.30489 = cfg->mempool;
            D.36311 = mono_mempool_alloc (D.30489, 48);
            args[2] = D.36311;
            D.36288 = args[2];
            D.36288 = args[2];
            D.36288->data.op[1].const_val = 0;
            D.36289 = D.36288->data.op[1].const_val;
            D.36288->data.op[0].const_val = D.36289;
            D.36288 = args[2];
            D.36288 = args[2];
            D.36288->prev = 0B;
            D.36290 = D.36288->prev;
            D.36288->next = D.36290;
            D.36288 = args[2];
            D.36288->opcode = 362;
            D.36288 = args[2];
            D.36288->flags = 0;
            D.36288 = args[2];
            D.36288->type = 0;
            D.36288 = args[2];
            D.36288->dreg = -1;
            D.36288 = args[2];
            D.36288 = args[2];
            D.36288 = args[2];
            D.36288->sreg3 = -1;
            D.36295 = D.36288->sreg3;
            D.36288->sreg2 = D.36295;
            D.36296 = D.36288->sreg2;
            D.36288->sreg1 = D.36296;
            D.36288 = args[2];
            D.30712 = cfg->ip;
            D.36288->cil_code = D.30712;
            D.36288 = args[2];
            D.30513 = cfg->domain;
            D.36312 = mono_domain_alloc0 (D.30513, 4);
            D.36288->data.op[0].p = D.36312;
            D.36288 = args[2];
            D.36288->type = 3;
            D.36288 = args[2];
            D.36313 = alloc_dreg (cfg, 3);
            D.36314 = (int) D.36313;
            D.36288->dreg = D.36314;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.36315>; else goto <D.36316>;
            <D.36315>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.36288 = args[2];
            D.30741->next = D.36288;
            D.36288 = args[2];
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.36288->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.36288 = args[2];
            bblock.127->last_ins = D.36288;
            goto <D.36317>;
            <D.36316>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.36288 = args[2];
            bblock.127->last_ins = D.36288;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.36317>:
            <D.36310>:
            sp.211 = sp;
            sp = sp.211 + 4;
            D.36319 = mono_emit_method_call (cfg, mono_castclass, &args, 0B);
            *sp.211 = D.36319;
            ip = ip + 5;
            inline_costs = inline_costs + 2;
          }
        finally
          {
            args = {CLOBBER};
          }
      }
      goto <D.36258>;
      <D.36257>:
      if (context_used == 0) goto <D.36323>; else goto <D.36320>;
      <D.36323>:
      klass.173 = klass;
      D.36096 = BIT_FIELD_REF <*klass.173, 8, 176>;
      D.36097 = D.36096 & 64;
      if (D.36097 != 0) goto <D.36321>; else goto <D.36324>;
      <D.36324>:
      klass.173 = klass;
      D.36099 = klass.173->flags;
      D.36100 = D.36099 & 32;
      if (D.36100 != 0) goto <D.36321>; else goto <D.36320>;
      <D.36321>:
      {
        struct MonoMethod * mono_castclass;
        struct MonoInst * iargs[1];
        int costs;

        try
          {
            klass.173 = klass;
            mono_castclass = mono_marshal_get_castclass (klass.173);
            D.31489 = *sp;
            iargs[0] = D.31489;
            D.30656 = cfg->real_offset;
            D.36325 = mono_method_signature (mono_castclass);
            costs = inline_method (cfg, mono_castclass, D.36325, &iargs, ip, D.30656, dont_inline, 1);
            D.31057 = cfg->exception_type;
            if (D.31057 != 0) goto exception_exit; else goto <D.36326>;
            <D.36326>:
            D.36327 = costs <= 0;
            D.36328 = (long int) D.36327;
            D.36329 = __builtin_expect (D.36328, 0);
            if (D.36329 != 0) goto <D.36330>; else goto <D.36331>;
            <D.36330>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9658, "costs > 0");
            <D.36331>:
            ip = ip + 5;
            D.30656 = cfg->real_offset;
            D.33421 = D.30656 + 5;
            cfg->real_offset = D.33421;
            bblock.127 = cfg->cbb;
            bblock = bblock.127;
            sp.212 = sp;
            sp = sp.212 + 4;
            D.36333 = iargs[0];
            *sp.212 = D.36333;
            inline_costs = inline_costs + costs;
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      goto <D.36322>;
      <D.36320>:
      D.31489 = *sp;
      klass.173 = klass;
      ins = handle_castclass (cfg, klass.173, D.31489, context_used);
      D.31057 = cfg->exception_type;
      if (D.31057 != 0) goto exception_exit; else goto <D.36334>;
      <D.36334>:
      bblock.127 = cfg->cbb;
      bblock = bblock.127;
      sp.213 = sp;
      sp = sp.213 + 4;
      *sp.213 = ins;
      ip = ip + 5;
      <D.36322>:
      <D.36258>:
      goto <D.27380>;
      <D.36256>:
      klass.173 = klass;
      D.36336 = mono_class_is_nullable (klass.173);
      if (D.36336 != 0) goto <D.36337>; else goto <D.36338>;
      <D.36337>:
      klass.173 = klass;
      D.31489 = *sp;
      ins = handle_unbox_nullable (cfg, D.31489, klass.173, context_used);
      sp.214 = sp;
      sp = sp.214 + 4;
      *sp.214 = ins;
      ip = ip + 5;
      goto <D.27380>;
      <D.36338>:
      klass.173 = klass;
      ins = handle_unbox (cfg, klass.173, sp, context_used);
      *sp = ins;
      ip = ip + 5;
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      klass.173 = klass;
      D.35339 = &klass.173->byval_arg;
      D.36340 = mono_type_to_load_membase (cfg, D.35339);
      D.36341 = (short unsigned int) D.36340;
      ins->opcode = D.36341;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      ins->dreg = 0;
      D.31489 = *sp;
      D.31682 = D.31489->dreg;
      ins->sreg1 = D.31682;
      ins->data.op[0].const_val = 0;
      ins->type = 1;
      klass.173 = klass;
      D.35339 = &klass.173->byval_arg;
      type_to_eval_stack_type (cfg, D.35339, ins);
      D.31249 = ins->type;
      D.31250 = (<unnamed type>) D.31249;
      D.36342 = alloc_dreg (cfg, D.31250);
      D.36343 = (int) D.36342;
      ins->dreg = D.36343;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.36344>; else goto <D.36345>;
      <D.36344>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.36346>;
      <D.36345>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.36346>:
      sp.215 = sp;
      sp = sp.215 + 4;
      *sp.215 = ins;
      inline_costs = inline_costs + 2;
      goto <D.27380>;
      <D.27826>:
      {
        struct MonoInst * val;

        sp.85 = (int) sp;
        stack_start.86 = (int) stack_start;
        D.31274 = sp.85 - stack_start.86;
        if (D.31274 <= 3) goto <D.36348>; else goto <D.36349>;
        <D.36348>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.36350>; else goto <D.36351>;
        <D.36350>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.36352>; else goto <D.36353>;
        <D.36352>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36353>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36351>:
        D.36354 = mini_get_debug_options ();
        D.36355 = D.36354->break_on_unverified;
        if (D.36355 != 0) goto <D.36356>; else goto unverified;
        <D.36356>:
        __asm__ __volatile__("int $03");
        <D.36349>:
        sp = sp + 4294967292;
        val = *sp;
        D.31934 = ip + 5;
        if (D.31934 > end) goto <D.36357>; else goto <D.36358>;
        <D.36357>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.36359>; else goto <D.36360>;
        <D.36359>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.36361>; else goto <D.36362>;
        <D.36361>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36362>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36360>:
        D.36363 = mini_get_debug_options ();
        D.36364 = D.36363->break_on_unverified;
        if (D.36364 != 0) goto <D.36365>; else goto unverified;
        <D.36365>:
        __asm__ __volatile__("int $03");
        <D.36358>:
        token = MEM[(const guint32 *)ip + 1B];
        klass.216 = mini_get_class (method, token, generic_context);
        klass = klass.216;
        klass.173 = klass;
        if (klass.173 == 0B) goto <D.36367>; else goto <D.36369>;
        <D.36369>:
        klass.173 = klass;
        D.35265 = klass.173->exception_type;
        if (D.35265 != 0) goto <D.36367>; else goto <D.36368>;
        <D.36367>:
        klass.173 = klass;
        cfg->exception_ptr = klass.173;
        D.36370 = mini_get_debug_options ();
        D.36371 = D.36370->break_on_unverified;
        if (D.36371 != 0) goto <D.36372>; else goto load_error;
        <D.36372>:
        __asm__ __volatile__("int $03");
        <D.36368>:
        klass.173 = klass;
        mono_save_token_info (cfg, image, token, klass.173);
        klass.173 = klass;
        context_used = mini_class_check_context_used (cfg, klass.173);
        klass.173 = klass;
        D.36373 = generic_class_is_reference_type (cfg, klass.173);
        if (D.36373 != 0) goto <D.36374>; else goto <D.36375>;
        <D.36374>:
        sp.217 = sp;
        sp = sp.217 + 4;
        *sp.217 = val;
        ip = ip + 5;
        goto <D.27380>;
        <D.36375>:
        D.36377 = mono_defaults.void_class;
        klass.173 = klass;
        if (D.36377 == klass.173) goto <D.36378>; else goto <D.36379>;
        <D.36378>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.36380>; else goto <D.36381>;
        <D.36380>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.36382>; else goto <D.36383>;
        <D.36382>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36383>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36381>:
        D.36384 = mini_get_debug_options ();
        D.36385 = D.36384->break_on_unverified;
        if (D.36385 != 0) goto <D.36386>; else goto unverified;
        <D.36386>:
        __asm__ __volatile__("int $03");
        <D.36379>:
        D.31489 = *sp;
        klass.173 = klass;
        D.35339 = &klass.173->byval_arg;
        D.36387 = target_type_is_incompatible (cfg, D.35339, D.31489);
        if (D.36387 != 0) goto <D.36388>; else goto <D.36389>;
        <D.36388>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.36390>; else goto <D.36391>;
        <D.36390>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.36392>; else goto <D.36393>;
        <D.36392>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36393>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36391>:
        D.36394 = mini_get_debug_options ();
        D.36395 = D.36394->break_on_unverified;
        if (D.36395 != 0) goto <D.36396>; else goto unverified;
        <D.36396>:
        __asm__ __volatile__("int $03");
        <D.36389>:
        klass.173 = klass;
        D.36399 = mono_class_is_nullable (klass.173);
        if (D.36399 == 0) goto <D.36400>; else goto <D.36401>;
        <D.36400>:
        D.31934 = ip + 5;
        if (D.31934 < end) goto <D.36402>; else goto <D.36403>;
        <D.36402>:
        D.33474 = ip + 5;
        bblock.78 = bblock;
        D.36404 = ip_in_bb (cfg, bblock.78, D.33474);
        if (D.36404 != 0) goto <D.36405>; else goto <D.36406>;
        <D.36405>:
        D.31934 = ip + 5;
        D.36407 = *D.31934;
        D.36408 = D.36407 == 58;
        D.36409 = D.36407 == 45;
        D.36410 = D.36408 | D.36409;
        if (D.36410 != 0) goto <D.36397>; else goto <D.36411>;
        <D.36411>:
        D.31934 = ip + 5;
        D.33433 = *D.31934;
        if (D.33433 == 57) goto <D.36397>; else goto <D.36412>;
        <D.36412>:
        D.31934 = ip + 5;
        D.33433 = *D.31934;
        if (D.33433 == 44) goto <D.36397>; else goto <D.36398>;
        <D.36397>:
        {
          gboolean is_true;
          int dreg;
          struct MonoBasicBlock * true_bb;
          struct MonoBasicBlock * false_bb;

          D.31934 = ip + 5;
          D.36413 = *D.31934;
          D.36414 = D.36413 == 58;
          D.36415 = D.36413 == 45;
          D.36416 = D.36414 | D.36415;
          is_true = (gboolean) D.36416;
          ip = ip + 5;
          D.30569 = cfg->verbose_level;
          if (D.30569 > 3) goto <D.36417>; else goto <D.36418>;
          <D.36417>:
          D.36419 = mono_disasm_code_one (0B, method, ip, 0B);
          sp.85 = (int) sp;
          stack_start.86 = (int) stack_start;
          D.31274 = sp.85 - stack_start.86;
          D.31275 = D.31274 /[ex] 4;
          bblock.78 = bblock;
          D.31370 = bblock.78->block_num;
          printf ("converting (in B%d: stack: %d) %s", D.31370, D.31275, D.36419);
          printf ("<box+brtrue opt>\n");
          <D.36418>:
          D.31371 = *ip;
          D.31372 = (int) D.31371;
          switch (D.31372) <default: <D.27837>, case 44: <D.27833>, case 45: <D.27832>, case 57: <D.27836>, case 58: <D.27835>>
          <D.27832>:
          <D.27833>:
          D.31500 = ip + 2;
          if (D.31500 > end) goto <D.36420>; else goto <D.36421>;
          <D.36420>:
          D.30637 = cfg->gsharedvt;
          if (D.30637 != 0) goto <D.36422>; else goto <D.36423>;
          <D.36422>:
          D.30569 = cfg->verbose_level;
          if (D.30569 > 2) goto <D.36424>; else goto <D.36425>;
          <D.36424>:
          printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
          <D.36425>:
          mono_cfg_set_exception (cfg, 11);
          goto exception_exit;
          <D.36423>:
          D.36426 = mini_get_debug_options ();
          D.36427 = D.36426->break_on_unverified;
          if (D.36427 != 0) goto <D.36428>; else goto unverified;
          <D.36428>:
          __asm__ __volatile__("int $03");
          <D.36421>:
          ip = ip + 1;
          D.31371 = *ip;
          D.34177 = (signed char) D.31371;
          D.34178 = (sizetype) D.34177;
          D.34179 = D.34178 + 1;
          target = ip + D.34179;
          ip = ip + 1;
          goto <D.27834>;
          <D.27835>:
          <D.27836>:
          D.31934 = ip + 5;
          if (D.31934 > end) goto <D.36429>; else goto <D.36430>;
          <D.36429>:
          D.30637 = cfg->gsharedvt;
          if (D.30637 != 0) goto <D.36431>; else goto <D.36432>;
          <D.36431>:
          D.30569 = cfg->verbose_level;
          if (D.30569 > 2) goto <D.36433>; else goto <D.36434>;
          <D.36433>:
          printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
          <D.36434>:
          mono_cfg_set_exception (cfg, 11);
          goto exception_exit;
          <D.36432>:
          D.36435 = mini_get_debug_options ();
          D.36436 = D.36435->break_on_unverified;
          if (D.36436 != 0) goto <D.36437>; else goto unverified;
          <D.36437>:
          __asm__ __volatile__("int $03");
          <D.36430>:
          ip = ip + 1;
          D.32041 = MEM[(const guint32 *)ip];
          D.34318 = D.32041 + 4;
          target = ip + D.34318;
          ip = ip + 4;
          goto <D.27834>;
          <D.27837>:
          monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 9757);
          <D.27834>:
          D.30620 = cfg->cil_offset_to_bb;
          target.152 = (int) target;
          D.30624 = cfg->cil_start;
          D.30625 = (int) D.30624;
          D.34181 = target.152 - D.30625;
          D.34182 = (unsigned int) D.34181;
          D.34183 = D.34182 * 4;
          D.34184 = D.30620 + D.34183;
          true_bb = *D.34184;
          if (true_bb == 0B) goto <D.36438>; else goto <D.36439>;
          <D.36438>:
          if (target >= end) goto <D.36440>; else goto <D.36442>;
          <D.36442>:
          D.30636 = header->code;
          if (D.30636 > target) goto <D.36440>; else goto <D.36441>;
          <D.36440>:
          D.30637 = cfg->gsharedvt;
          if (D.30637 != 0) goto <D.36443>; else goto <D.36444>;
          <D.36443>:
          D.30569 = cfg->verbose_level;
          if (D.30569 > 2) goto <D.36445>; else goto <D.36446>;
          <D.36445>:
          printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
          <D.36446>:
          mono_cfg_set_exception (cfg, 11);
          goto exception_exit;
          <D.36444>:
          D.36447 = mini_get_debug_options ();
          D.36448 = D.36447->break_on_unverified;
          if (D.36448 != 0) goto <D.36449>; else goto unverified;
          <D.36449>:
          __asm__ __volatile__("int $03");
          <D.36441>:
          D.30489 = cfg->mempool;
          true_bb = mono_mempool_alloc0 (D.30489, 172);
          D.30597 = cfg->num_bblocks;
          D.36450 = D.30597;
          D.36451 = D.36450 + 1;
          cfg->num_bblocks = D.36451;
          D.36452 = (int) D.36450;
          true_bb->block_num = D.36452;
          true_bb->cil_code = target;
          D.36453 = true_bb->cil_code;
          if (D.36453 != 0B) goto <D.36454>; else goto <D.36455>;
          <D.36454>:
          D.30620 = cfg->cil_offset_to_bb;
          D.36453 = true_bb->cil_code;
          D.36456 = (int) D.36453;
          D.30624 = cfg->cil_start;
          D.30625 = (int) D.30624;
          D.36457 = D.36456 - D.30625;
          D.36458 = (unsigned int) D.36457;
          D.36459 = D.36458 * 4;
          D.36460 = D.30620 + D.36459;
          *D.36460 = true_bb;
          <D.36455>:
          D.30656 = cfg->real_offset;
          true_bb->real_offset = D.30656;
          <D.36439>:
          D.30620 = cfg->cil_offset_to_bb;
          ip.83 = (int) ip;
          D.30624 = cfg->cil_start;
          D.30625 = (int) D.30624;
          D.31211 = ip.83 - D.30625;
          D.31212 = (unsigned int) D.31211;
          D.31213 = D.31212 * 4;
          D.31214 = D.30620 + D.31213;
          false_bb = *D.31214;
          if (false_bb == 0B) goto <D.36461>; else goto <D.36462>;
          <D.36461>:
          if (ip >= end) goto <D.36463>; else goto <D.36465>;
          <D.36465>:
          D.30636 = header->code;
          if (D.30636 > ip) goto <D.36463>; else goto <D.36464>;
          <D.36463>:
          D.30637 = cfg->gsharedvt;
          if (D.30637 != 0) goto <D.36466>; else goto <D.36467>;
          <D.36466>:
          D.30569 = cfg->verbose_level;
          if (D.30569 > 2) goto <D.36468>; else goto <D.36469>;
          <D.36468>:
          printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
          <D.36469>:
          mono_cfg_set_exception (cfg, 11);
          goto exception_exit;
          <D.36467>:
          D.36470 = mini_get_debug_options ();
          D.36471 = D.36470->break_on_unverified;
          if (D.36471 != 0) goto <D.36472>; else goto unverified;
          <D.36472>:
          __asm__ __volatile__("int $03");
          <D.36464>:
          D.30489 = cfg->mempool;
          false_bb = mono_mempool_alloc0 (D.30489, 172);
          D.30597 = cfg->num_bblocks;
          D.36473 = D.30597;
          D.36474 = D.36473 + 1;
          cfg->num_bblocks = D.36474;
          D.36475 = (int) D.36473;
          false_bb->block_num = D.36475;
          false_bb->cil_code = ip;
          D.36476 = false_bb->cil_code;
          if (D.36476 != 0B) goto <D.36477>; else goto <D.36478>;
          <D.36477>:
          D.30620 = cfg->cil_offset_to_bb;
          D.36476 = false_bb->cil_code;
          D.36479 = (int) D.36476;
          D.30624 = cfg->cil_start;
          D.30625 = (int) D.30624;
          D.36480 = D.36479 - D.30625;
          D.36481 = (unsigned int) D.36480;
          D.36482 = D.36481 * 4;
          D.36483 = D.30620 + D.36482;
          *D.36483 = false_bb;
          <D.36478>:
          D.30656 = cfg->real_offset;
          false_bb->real_offset = D.30656;
          <D.36462>:
          bblock.127 = cfg->cbb;
          mono_link_bblock (cfg, bblock.127, true_bb);
          bblock.127 = cfg->cbb;
          mono_link_bblock (cfg, bblock.127, false_bb);
          if (sp != stack_start) goto <D.36484>; else goto <D.36485>;
          <D.36484>:
          sp.85 = (int) sp;
          stack_start.86 = (int) stack_start;
          D.31274 = sp.85 - stack_start.86;
          D.31275 = D.31274 /[ex] 4;
          handle_stack_args (cfg, stack_start, D.31275);
          sp = stack_start;
          D.31276 = BIT_FIELD_REF <*cfg, 8, 3400>;
          D.31277 = D.31276 & 32;
          if (D.31277 != 0) goto <D.36486>; else goto <D.36487>;
          <D.36486>:
          D.30637 = cfg->gsharedvt;
          if (D.30637 != 0) goto <D.36488>; else goto <D.36489>;
          <D.36488>:
          D.30569 = cfg->verbose_level;
          if (D.30569 > 2) goto <D.36490>; else goto <D.36491>;
          <D.36490>:
          printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
          <D.36491>:
          mono_cfg_set_exception (cfg, 11);
          goto exception_exit;
          <D.36489>:
          D.36492 = mini_get_debug_options ();
          D.36493 = D.36492->break_on_unverified;
          if (D.36493 != 0) goto <D.36494>; else goto unverified;
          <D.36494>:
          __asm__ __volatile__("int $03");
          <D.36487>:
          <D.36485>:
          if (0 != 0) goto <D.36495>; else goto <D.36496>;
          <D.36495>:
          D.36497 = alloc_ireg (cfg);
          dreg = (int) D.36497;
          {
            struct MonoInst * inst;

            D.30489 = cfg->mempool;
            inst = mono_mempool_alloc (D.30489, 48);
            inst->data.op[1].const_val = 0;
            D.36498 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.36498;
            inst->prev = 0B;
            D.36499 = inst->prev;
            inst->next = D.36499;
            inst->opcode = 362;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.36500 = inst->sreg3;
            inst->sreg2 = D.36500;
            D.36501 = inst->sreg2;
            inst->sreg1 = D.36501;
            D.30712 = cfg->ip;
            inst->cil_code = D.30712;
            inst->dreg = dreg;
            inst->data.op[0].const_val = 0;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.36502>; else goto <D.36503>;
            <D.36502>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = inst;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            inst->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            goto <D.36504>;
            <D.36503>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.36504>:
          }
          {
            struct MonoInst * inst;

            D.30489 = cfg->mempool;
            inst = mono_mempool_alloc (D.30489, 48);
            inst->data.op[1].const_val = 0;
            D.36505 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.36505;
            inst->prev = 0B;
            D.36506 = inst->prev;
            inst->next = D.36506;
            inst->opcode = 323;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.36507 = inst->sreg3;
            inst->sreg2 = D.36507;
            D.36508 = inst->sreg2;
            inst->sreg1 = D.36508;
            D.30712 = cfg->ip;
            inst->cil_code = D.30712;
            inst->dreg = -1;
            inst->sreg1 = dreg;
            D.36509 = is_true == 0;
            D.36510 = (int) D.36509;
            inst->data.op[1].const_val = D.36510;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.36511>; else goto <D.36512>;
            <D.36511>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = inst;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            inst->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            goto <D.36513>;
            <D.36512>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.36513>:
          }
          {
            struct MonoInst * ins;

            D.30489 = cfg->mempool;
            ins = mono_mempool_alloc (D.30489, 48);
            ins->data.op[1].const_val = 0;
            D.36514 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.36514;
            ins->prev = 0B;
            D.36515 = ins->prev;
            ins->next = D.36515;
            ins->opcode = 652;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.36516 = ins->sreg3;
            ins->sreg2 = D.36516;
            D.36517 = ins->sreg2;
            ins->sreg1 = D.36517;
            D.30712 = cfg->ip;
            ins->cil_code = D.30712;
            D.30489 = cfg->mempool;
            D.36518 = mono_mempool_alloc (D.30489, 8);
            ins->data.op[1].many_blocks = D.36518;
            D.36519 = ins->data.op[1].many_blocks;
            *D.36519 = true_bb;
            D.36519 = ins->data.op[1].many_blocks;
            D.36520 = D.36519 + 4;
            *D.36520 = false_bb;
            bblock.127 = cfg->cbb;
            mono_link_bblock (cfg, bblock.127, true_bb);
            bblock.127 = cfg->cbb;
            mono_link_bblock (cfg, bblock.127, false_bb);
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.36521>; else goto <D.36522>;
            <D.36521>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = ins;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            ins->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = ins;
            goto <D.36523>;
            <D.36522>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = ins;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.36523>:
          }
          goto <D.36524>;
          <D.36496>:
          D.30489 = cfg->mempool;
          ins = mono_mempool_alloc (D.30489, 48);
          ins->data.op[1].const_val = 0;
          D.30708 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.30708;
          ins->prev = 0B;
          D.30709 = ins->prev;
          ins->next = D.30709;
          ins->opcode = 446;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.30710 = ins->sreg3;
          ins->sreg2 = D.30710;
          D.30711 = ins->sreg2;
          ins->sreg1 = D.30711;
          D.30712 = cfg->ip;
          ins->cil_code = D.30712;
          if (is_true != 0) goto <D.36526>; else goto <D.36527>;
          <D.36526>:
          iftmp.218 = true_bb;
          goto <D.36528>;
          <D.36527>:
          iftmp.218 = false_bb;
          <D.36528>:
          ins->data.op[0].target_block = iftmp.218;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.36529>; else goto <D.36530>;
          <D.36529>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = ins;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          ins->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = ins;
          goto <D.36531>;
          <D.36530>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = ins;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.36531>:
          <D.36524>:
          start_new_bblock = 1;
          goto <D.27380>;
        }
        <D.36398>:
        <D.36406>:
        <D.36403>:
        <D.36401>:
        sp.219 = sp;
        sp = sp.219 + 4;
        klass.173 = klass;
        D.36533 = handle_box (cfg, val, klass.173, context_used, &bblock);
        *sp.219 = D.36533;
        D.31057 = cfg->exception_type;
        if (D.31057 != 0) goto exception_exit; else goto <D.36534>;
        <D.36534>:
        ip = ip + 5;
        inline_costs = inline_costs + 1;
        goto <D.27380>;
      }
      <D.27841>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      if (D.31274 <= 3) goto <D.36535>; else goto <D.36536>;
      <D.36535>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.36537>; else goto <D.36538>;
      <D.36537>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.36539>; else goto <D.36540>;
      <D.36539>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36540>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36538>:
      D.36541 = mini_get_debug_options ();
      D.36542 = D.36541->break_on_unverified;
      if (D.36542 != 0) goto <D.36543>; else goto unverified;
      <D.36543>:
      __asm__ __volatile__("int $03");
      <D.36536>:
      sp = sp + 4294967292;
      D.31934 = ip + 5;
      if (D.31934 > end) goto <D.36544>; else goto <D.36545>;
      <D.36544>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.36546>; else goto <D.36547>;
      <D.36546>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.36548>; else goto <D.36549>;
      <D.36548>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36549>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36547>:
      D.36550 = mini_get_debug_options ();
      D.36551 = D.36550->break_on_unverified;
      if (D.36551 != 0) goto <D.36552>; else goto unverified;
      <D.36552>:
      __asm__ __volatile__("int $03");
      <D.36545>:
      token = MEM[(const guint32 *)ip + 1B];
      klass.220 = mini_get_class (method, token, generic_context);
      klass = klass.220;
      klass.173 = klass;
      if (klass.173 == 0B) goto <D.36554>; else goto <D.36556>;
      <D.36556>:
      klass.173 = klass;
      D.35265 = klass.173->exception_type;
      if (D.35265 != 0) goto <D.36554>; else goto <D.36555>;
      <D.36554>:
      klass.173 = klass;
      cfg->exception_ptr = klass.173;
      D.36557 = mini_get_debug_options ();
      D.36558 = D.36557->break_on_unverified;
      if (D.36558 != 0) goto <D.36559>; else goto load_error;
      <D.36559>:
      __asm__ __volatile__("int $03");
      <D.36555>:
      klass.173 = klass;
      mono_save_token_info (cfg, image, token, klass.173);
      klass.173 = klass;
      context_used = mini_class_check_context_used (cfg, klass.173);
      klass.173 = klass;
      D.36560 = mono_class_is_nullable (klass.173);
      if (D.36560 != 0) goto <D.36561>; else goto <D.36562>;
      <D.36561>:
      {
        struct MonoInst * val;

        klass.173 = klass;
        D.31489 = *sp;
        val = handle_unbox_nullable (cfg, D.31489, klass.173, context_used);
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        ins->opcode = 314;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        D.36564 = val->dreg;
        D.36565 = (unsigned int) D.36564;
        D.31601 = cfg->vreg_to_inst_len;
        if (D.36565 < D.31601) goto <D.36566>; else goto <D.36567>;
        <D.36566>:
        D.31604 = cfg->vreg_to_inst;
        D.36564 = val->dreg;
        D.36568 = (unsigned int) D.36564;
        D.36569 = D.36568 * 4;
        D.36570 = D.31604 + D.36569;
        iftmp.221 = *D.36570;
        goto <D.36571>;
        <D.36567>:
        iftmp.221 = 0B;
        <D.36571>:
        ins->data.op[0].p = iftmp.221;
        D.36564 = val->dreg;
        D.36565 = (unsigned int) D.36564;
        D.31601 = cfg->vreg_to_inst_len;
        if (D.36565 < D.31601) goto <D.36573>; else goto <D.36574>;
        <D.36573>:
        D.31604 = cfg->vreg_to_inst;
        D.36564 = val->dreg;
        D.36568 = (unsigned int) D.36564;
        D.36569 = D.36568 * 4;
        D.36570 = D.31604 + D.36569;
        iftmp.222 = *D.36570;
        goto <D.36575>;
        <D.36574>:
        iftmp.222 = 0B;
        <D.36575>:
        D.36564 = val->dreg;
        D.36565 = (unsigned int) D.36564;
        D.31601 = cfg->vreg_to_inst_len;
        if (D.36565 < D.31601) goto <D.36577>; else goto <D.36578>;
        <D.36577>:
        D.31604 = cfg->vreg_to_inst;
        D.36564 = val->dreg;
        D.36568 = (unsigned int) D.36564;
        D.36569 = D.36568 * 4;
        D.36570 = D.31604 + D.36569;
        iftmp.223 = *D.36570;
        goto <D.36579>;
        <D.36578>:
        iftmp.223 = 0B;
        <D.36579>:
        D.36580 = iftmp.223->flags;
        D.36581 = D.36580 | 16;
        iftmp.222->flags = D.36581;
        ins->type = 5;
        D.36564 = val->dreg;
        D.36565 = (unsigned int) D.36564;
        D.31601 = cfg->vreg_to_inst_len;
        if (D.36565 < D.31601) goto <D.36583>; else goto <D.36584>;
        <D.36583>:
        D.31604 = cfg->vreg_to_inst;
        D.36564 = val->dreg;
        D.36568 = (unsigned int) D.36564;
        D.36569 = D.36568 * 4;
        D.36570 = D.31604 + D.36569;
        iftmp.224 = *D.36570;
        goto <D.36585>;
        <D.36584>:
        iftmp.224 = 0B;
        <D.36585>:
        D.36586 = iftmp.224->klass;
        ins->klass = D.36586;
        D.36587 = alloc_dreg (cfg, 5);
        D.36588 = (int) D.36587;
        ins->dreg = D.36588;
        cfg->has_indirection = 1;
        D.30637 = cfg->gsharedvt;
        D.31575 = D.30637 != 0;
        D.31576 = (long int) D.31575;
        D.31577 = __builtin_expect (D.31576, 0);
        if (D.31577 != 0) goto <D.36589>; else goto <D.36590>;
        <D.36589>:
        D.36564 = val->dreg;
        D.36565 = (unsigned int) D.36564;
        D.31601 = cfg->vreg_to_inst_len;
        if (D.36565 < D.31601) goto <D.36592>; else goto <D.36593>;
        <D.36592>:
        D.31604 = cfg->vreg_to_inst;
        D.36564 = val->dreg;
        D.36568 = (unsigned int) D.36564;
        D.36569 = D.36568 * 4;
        D.36570 = D.31604 + D.36569;
        iftmp.225 = *D.36570;
        goto <D.36594>;
        <D.36593>:
        iftmp.225 = 0B;
        <D.36594>:
        D.36595 = iftmp.225->data.op[1].vtype;
        D.36596 = mini_is_gsharedvt_variable_type (cfg, D.36595);
        if (D.36596 != 0) goto <D.36597>; else goto <D.36598>;
        <D.36597>:
        handle_gsharedvt_ldaddr (cfg);
        <D.36598>:
        <D.36590>:
        D.36600 = mono_arch_is_soft_float ();
        if (D.36600 != 0) goto <D.36601>; else goto <D.36602>;
        <D.36601>:
        D.36564 = val->dreg;
        D.36565 = (unsigned int) D.36564;
        D.31601 = cfg->vreg_to_inst_len;
        if (D.36565 < D.31601) goto <D.36604>; else goto <D.36605>;
        <D.36604>:
        D.31604 = cfg->vreg_to_inst;
        D.36564 = val->dreg;
        D.36568 = (unsigned int) D.36564;
        D.36569 = D.36568 * 4;
        D.36570 = D.31604 + D.36569;
        iftmp.227 = *D.36570;
        goto <D.36606>;
        <D.36605>:
        iftmp.227 = 0B;
        <D.36606>:
        D.36607 = iftmp.227->type;
        D.36608 = D.36607 == 2;
        D.36609 = D.36607 == 4;
        D.36610 = D.36608 | D.36609;
        D.36611 = (int) D.36610;
        iftmp.226 = (_Bool) D.36611;
        goto <D.36612>;
        <D.36602>:
        D.36564 = val->dreg;
        D.36565 = (unsigned int) D.36564;
        D.31601 = cfg->vreg_to_inst_len;
        if (D.36565 < D.31601) goto <D.36614>; else goto <D.36615>;
        <D.36614>:
        D.31604 = cfg->vreg_to_inst;
        D.36564 = val->dreg;
        D.36568 = (unsigned int) D.36564;
        D.36569 = D.36568 * 4;
        D.36570 = D.31604 + D.36569;
        iftmp.228 = *D.36570;
        goto <D.36616>;
        <D.36615>:
        iftmp.228 = 0B;
        <D.36616>:
        D.36617 = iftmp.228->type;
        iftmp.226 = D.36617 == 2;
        <D.36612>:
        if (iftmp.226 != 0) goto <D.36618>; else goto <D.36619>;
        <D.36618>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.36564 = val->dreg;
          D.36565 = (unsigned int) D.36564;
          D.31601 = cfg->vreg_to_inst_len;
          if (D.36565 < D.31601) goto <D.36622>; else goto <D.36623>;
          <D.36622>:
          D.31604 = cfg->vreg_to_inst;
          D.36564 = val->dreg;
          D.36568 = (unsigned int) D.36564;
          D.36569 = D.36568 * 4;
          D.36570 = D.31604 + D.36569;
          iftmp.230 = *D.36570;
          goto <D.36624>;
          <D.36623>:
          iftmp.230 = 0B;
          <D.36624>:
          D.36625 = iftmp.230->dreg;
          D.36626 = D.36625 + 1;
          D.36627 = (unsigned int) D.36626;
          D.31601 = cfg->vreg_to_inst_len;
          if (D.36627 < D.31601) goto <D.36628>; else goto <D.36629>;
          <D.36628>:
          D.31604 = cfg->vreg_to_inst;
          D.36564 = val->dreg;
          D.36565 = (unsigned int) D.36564;
          D.31601 = cfg->vreg_to_inst_len;
          if (D.36565 < D.31601) goto <D.36631>; else goto <D.36632>;
          <D.36631>:
          D.31604 = cfg->vreg_to_inst;
          D.36564 = val->dreg;
          D.36568 = (unsigned int) D.36564;
          D.36569 = D.36568 * 4;
          D.36570 = D.31604 + D.36569;
          iftmp.231 = *D.36570;
          goto <D.36633>;
          <D.36632>:
          iftmp.231 = 0B;
          <D.36633>:
          D.36634 = iftmp.231->dreg;
          D.36635 = (sizetype) D.36634;
          D.36636 = D.36635 + 1;
          D.36637 = D.36636 * 4;
          D.36638 = D.31604 + D.36637;
          iftmp.229 = *D.36638;
          goto <D.36639>;
          <D.36629>:
          iftmp.229 = 0B;
          <D.36639>:
          var1 = iftmp.229;
          D.36564 = val->dreg;
          D.36565 = (unsigned int) D.36564;
          D.31601 = cfg->vreg_to_inst_len;
          if (D.36565 < D.31601) goto <D.36642>; else goto <D.36643>;
          <D.36642>:
          D.31604 = cfg->vreg_to_inst;
          D.36564 = val->dreg;
          D.36568 = (unsigned int) D.36564;
          D.36569 = D.36568 * 4;
          D.36570 = D.31604 + D.36569;
          iftmp.233 = *D.36570;
          goto <D.36644>;
          <D.36643>:
          iftmp.233 = 0B;
          <D.36644>:
          D.36645 = iftmp.233->dreg;
          D.36646 = D.36645 + 2;
          D.36647 = (unsigned int) D.36646;
          D.31601 = cfg->vreg_to_inst_len;
          if (D.36647 < D.31601) goto <D.36648>; else goto <D.36649>;
          <D.36648>:
          D.31604 = cfg->vreg_to_inst;
          D.36564 = val->dreg;
          D.36565 = (unsigned int) D.36564;
          D.31601 = cfg->vreg_to_inst_len;
          if (D.36565 < D.31601) goto <D.36651>; else goto <D.36652>;
          <D.36651>:
          D.31604 = cfg->vreg_to_inst;
          D.36564 = val->dreg;
          D.36568 = (unsigned int) D.36564;
          D.36569 = D.36568 * 4;
          D.36570 = D.31604 + D.36569;
          iftmp.234 = *D.36570;
          goto <D.36653>;
          <D.36652>:
          iftmp.234 = 0B;
          <D.36653>:
          D.36654 = iftmp.234->dreg;
          D.36655 = (sizetype) D.36654;
          D.36656 = D.36655 + 2;
          D.36657 = D.36656 * 4;
          D.36658 = D.31604 + D.36657;
          iftmp.232 = *D.36658;
          goto <D.36659>;
          <D.36649>:
          iftmp.232 = 0B;
          <D.36659>:
          var2 = iftmp.232;
          D.36660 = var1 == 0B;
          D.36661 = (long int) D.36660;
          D.36662 = __builtin_expect (D.36661, 0);
          if (D.36662 != 0) goto <D.36663>; else goto <D.36664>;
          <D.36663>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9818, "var1");
          <D.36664>:
          D.36665 = var2 == 0B;
          D.36666 = (long int) D.36665;
          D.36667 = __builtin_expect (D.36666, 0);
          if (D.36667 != 0) goto <D.36668>; else goto <D.36669>;
          <D.36668>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9818, "var2");
          <D.36669>:
          D.36670 = var1->flags;
          D.36671 = D.36670 | 16;
          var1->flags = D.36671;
          D.36672 = var2->flags;
          D.36673 = D.36672 | 16;
          var2->flags = D.36673;
        }
        <D.36619>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.36674>; else goto <D.36675>;
        <D.36674>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = ins;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        ins->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        goto <D.36676>;
        <D.36675>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.36676>:
        sp.235 = sp;
        sp = sp.235 + 4;
        *sp.235 = ins;
      }
      goto <D.36678>;
      <D.36562>:
      klass.173 = klass;
      ins = handle_unbox (cfg, klass.173, sp, context_used);
      sp.236 = sp;
      sp = sp.236 + 4;
      *sp.236 = ins;
      <D.36678>:
      ip = ip + 5;
      inline_costs = inline_costs + 2;
      goto <D.27380>;
      <D.27845>:
      <D.27846>:
      <D.27847>:
      <D.27848>:
      <D.27849>:
      <D.27850>:
      {
        struct MonoClassField * field;
        int costs;
        guint foffset;
        gboolean is_instance;
        int op;
        void * addr;
        gboolean is_special_static;
        struct MonoType * ftype;
        struct MonoInst * store_val;
        struct MonoInst * thread_ins;

        addr = 0B;
        store_val = 0B;
        D.31371 = *ip;
        op = (int) D.31371;
        op.237 = (unsigned int) op;
        D.36681 = op.237 + 4294967173;
        D.36682 = D.36681 <= 2;
        is_instance = (gboolean) D.36682;
        if (is_instance != 0) goto <D.36683>; else goto <D.36684>;
        <D.36683>:
        if (op == 125) goto <D.36685>; else goto <D.36686>;
        <D.36685>:
        sp.85 = (int) sp;
        stack_start.86 = (int) stack_start;
        D.31274 = sp.85 - stack_start.86;
        if (D.31274 <= 7) goto <D.36687>; else goto <D.36688>;
        <D.36687>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.36689>; else goto <D.36690>;
        <D.36689>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.36691>; else goto <D.36692>;
        <D.36691>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36692>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36690>:
        D.36693 = mini_get_debug_options ();
        D.36694 = D.36693->break_on_unverified;
        if (D.36694 != 0) goto <D.36695>; else goto unverified;
        <D.36695>:
        __asm__ __volatile__("int $03");
        <D.36688>:
        sp = sp + 4294967288;
        store_val = MEM[(struct MonoInst * *)sp + 4B];
        goto <D.36696>;
        <D.36686>:
        sp.85 = (int) sp;
        stack_start.86 = (int) stack_start;
        D.31274 = sp.85 - stack_start.86;
        if (D.31274 <= 3) goto <D.36697>; else goto <D.36698>;
        <D.36697>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.36699>; else goto <D.36700>;
        <D.36699>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.36701>; else goto <D.36702>;
        <D.36701>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36702>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36700>:
        D.36703 = mini_get_debug_options ();
        D.36704 = D.36703->break_on_unverified;
        if (D.36704 != 0) goto <D.36705>; else goto unverified;
        <D.36705>:
        __asm__ __volatile__("int $03");
        <D.36698>:
        sp = sp + 4294967292;
        <D.36696>:
        D.31489 = *sp;
        D.36706 = D.31489->type;
        D.36707 = D.36706 + 255;
        D.36708 = D.36707 <= 1;
        D.36709 = D.36706 == 4;
        D.36710 = D.36708 | D.36709;
        if (D.36710 != 0) goto <D.36711>; else goto <D.36712>;
        <D.36711>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.36713>; else goto <D.36714>;
        <D.36713>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.36715>; else goto <D.36716>;
        <D.36715>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36716>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36714>:
        D.36717 = mini_get_debug_options ();
        D.36718 = D.36717->break_on_unverified;
        if (D.36718 != 0) goto <D.36719>; else goto unverified;
        <D.36719>:
        __asm__ __volatile__("int $03");
        <D.36712>:
        D.31371 = *ip;
        if (D.31371 != 123) goto <D.36720>; else goto <D.36721>;
        <D.36720>:
        D.31489 = *sp;
        D.32169 = D.31489->type;
        if (D.32169 == 7) goto <D.36722>; else goto <D.36723>;
        <D.36722>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.36724>; else goto <D.36725>;
        <D.36724>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.36726>; else goto <D.36727>;
        <D.36726>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36727>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36725>:
        D.36728 = mini_get_debug_options ();
        D.36729 = D.36728->break_on_unverified;
        if (D.36729 != 0) goto <D.36730>; else goto unverified;
        <D.36730>:
        __asm__ __volatile__("int $03");
        <D.36723>:
        <D.36721>:
        goto <D.36731>;
        <D.36684>:
        if (op == 128) goto <D.36732>; else goto <D.36733>;
        <D.36732>:
        sp.85 = (int) sp;
        stack_start.86 = (int) stack_start;
        D.31274 = sp.85 - stack_start.86;
        if (D.31274 <= 3) goto <D.36734>; else goto <D.36735>;
        <D.36734>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.36736>; else goto <D.36737>;
        <D.36736>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.36738>; else goto <D.36739>;
        <D.36738>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36739>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36737>:
        D.36740 = mini_get_debug_options ();
        D.36741 = D.36740->break_on_unverified;
        if (D.36741 != 0) goto <D.36742>; else goto unverified;
        <D.36742>:
        __asm__ __volatile__("int $03");
        <D.36735>:
        sp = sp + 4294967292;
        store_val = *sp;
        <D.36733>:
        <D.36731>:
        D.31934 = ip + 5;
        if (D.31934 > end) goto <D.36743>; else goto <D.36744>;
        <D.36743>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.36745>; else goto <D.36746>;
        <D.36745>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.36747>; else goto <D.36748>;
        <D.36747>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36748>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36746>:
        D.36749 = mini_get_debug_options ();
        D.36750 = D.36749->break_on_unverified;
        if (D.36750 != 0) goto <D.36751>; else goto unverified;
        <D.36751>:
        __asm__ __volatile__("int $03");
        <D.36744>:
        token = MEM[(const guint32 *)ip + 1B];
        D.30431 = BIT_FIELD_REF <*method, 8, 160>;
        D.30432 = D.30431 & 124;
        if (D.30432 != 0) goto <D.36752>; else goto <D.36753>;
        <D.36752>:
        field = mono_method_get_wrapper_data (method, token);
        klass.238 = field->parent;
        klass = klass.238;
        goto <D.36755>;
        <D.36753>:
        field = mono_field_from_token (image, token, &klass, generic_context);
        <D.36755>:
        if (field == 0B) goto <D.36756>; else goto <D.36757>;
        <D.36756>:
        D.36758 = mini_get_debug_options ();
        D.36759 = D.36758->break_on_unverified;
        if (D.36759 != 0) goto <D.36760>; else goto load_error;
        <D.36760>:
        __asm__ __volatile__("int $03");
        <D.36757>:
        if (dont_verify == 0) goto <D.36761>; else goto <D.36762>;
        <D.36761>:
        D.31276 = BIT_FIELD_REF <*cfg, 8, 3400>;
        D.32407 = D.31276 & 64;
        if (D.32407 == 0) goto <D.36763>; else goto <D.36764>;
        <D.36763>:
        D.36765 = mono_method_can_access_field (method, field);
        if (D.36765 == 0) goto <D.36766>; else goto <D.36767>;
        <D.36766>:
        {
          char * method_fname;
          char * field_fname;

          method_fname = mono_method_full_name (method, 1);
          field_fname = mono_field_full_name (field);
          mono_cfg_set_exception (cfg, 10);
          D.36768 = monoeg_g_strdup_printf ("Field `%s\' is inaccessible from method `%s\'\n", field_fname, method_fname);
          cfg->exception_message = D.36768;
          monoeg_g_free (method_fname);
          monoeg_g_free (field_fname);
          goto exception_exit;
        }
        <D.36767>:
        <D.36764>:
        <D.36762>:
        klass.173 = klass;
        mono_class_init (klass.173);
        if (is_instance != 0) goto <D.36769>; else goto <D.36770>;
        <D.36769>:
        D.31371 = *ip;
        if (D.31371 != 124) goto <D.36771>; else goto <D.36772>;
        <D.36771>:
        D.36773 = is_magic_tls_access (field);
        if (D.36773 != 0) goto <D.36774>; else goto <D.36775>;
        <D.36774>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.36776>; else goto <D.36777>;
        <D.36776>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.36778>; else goto <D.36779>;
        <D.36778>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36779>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36777>:
        D.36780 = mini_get_debug_options ();
        D.36781 = D.36780->break_on_unverified;
        if (D.36781 != 0) goto <D.36782>; else goto unverified;
        <D.36782>:
        __asm__ __volatile__("int $03");
        <D.36775>:
        <D.36772>:
        <D.36770>:
        if (is_instance == 0) goto <D.36783>; else goto <D.36784>;
        <D.36783>:
        D.36785 = mono_security_get_mode ();
        if (D.36785 == 1) goto <D.36786>; else goto <D.36787>;
        <D.36786>:
        bblock.78 = bblock;
        ensure_method_is_allowed_to_access_field (cfg, method, field, bblock.78, ip);
        <D.36787>:
        <D.36784>:
        if (is_instance != 0) goto <D.36788>; else goto <D.36789>;
        <D.36788>:
        D.36790 = field->type;
        D.36791 = D.36790->attrs;
        D.36792 = (int) D.36791;
        D.36793 = D.36792 & 16;
        if (D.36793 != 0) goto <D.36794>; else goto <D.36795>;
        <D.36794>:
        switch (op) <default: <D.27867>, case 123: <D.27863>, case 124: <D.27866>, case 125: <D.27865>>
        <D.27863>:
        op = 126;
        goto <D.27864>;
        <D.27865>:
        op = 128;
        goto <D.27864>;
        <D.27866>:
        op = 127;
        goto <D.27864>;
        <D.27867>:
        monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 9915);
        <D.27864>:
        is_instance = 0;
        <D.36795>:
        <D.36789>:
        klass.173 = klass;
        context_used = mini_class_check_context_used (cfg, klass.173);
        klass.173 = klass;
        D.36797 = BIT_FIELD_REF <*klass.173, 8, 160>;
        D.36798 = D.36797 & 8;
        if (D.36798 != 0) goto <D.36799>; else goto <D.36800>;
        <D.36799>:
        D.36801 = field->offset;
        D.36802 = (unsigned int) D.36801;
        iftmp.239 = D.36802 + 4294967288;
        goto <D.36803>;
        <D.36800>:
        D.36801 = field->offset;
        iftmp.239 = (unsigned int) D.36801;
        <D.36803>:
        foffset = iftmp.239;
        if (op == 125) goto <D.36804>; else goto <D.36805>;
        <D.36804>:
        D.32655 = sp + 4;
        D.32656 = *D.32655;
        D.36790 = field->type;
        D.36806 = target_type_is_incompatible (cfg, D.36790, D.32656);
        if (D.36806 != 0) goto <D.36807>; else goto <D.36808>;
        <D.36807>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.36809>; else goto <D.36810>;
        <D.36809>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.36811>; else goto <D.36812>;
        <D.36811>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36812>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36810>:
        D.36813 = mini_get_debug_options ();
        D.36814 = D.36813->break_on_unverified;
        if (D.36814 != 0) goto <D.36815>; else goto unverified;
        <D.36815>:
        __asm__ __volatile__("int $03");
        <D.36808>:
        klass.173 = klass;
        D.36096 = BIT_FIELD_REF <*klass.173, 8, 176>;
        D.36097 = D.36096 & 64;
        if (D.36097 != 0) goto <D.36820>; else goto <D.36816>;
        <D.36820>:
        D.30459 = cfg->method;
        D.36821 = mono_method_signature (D.30459);
        D.36822 = BIT_FIELD_REF <*D.36821, 8, 80>;
        D.36823 = D.36822 & 64;
        if (D.36823 == 0) goto <D.36817>; else goto <D.36824>;
        <D.36824>:
        D.31489 = *sp;
        D.33287 = D.31489->opcode;
        if (D.33287 != 428) goto <D.36817>; else goto <D.36825>;
        <D.36825>:
        D.31489 = *sp;
        D.36826 = D.31489->sreg1;
        D.31106 = cfg->args;
        D.31107 = *D.31106;
        D.31121 = D.31107->dreg;
        if (D.36826 != D.31121) goto <D.36817>; else goto <D.36816>;
        <D.36816>:
        klass.173 = klass;
        D.36096 = BIT_FIELD_REF <*klass.173, 8, 176>;
        D.36827 = D.36096 & 128;
        if (D.36827 != 0) goto <D.36817>; else goto <D.36828>;
        <D.36828>:
        D.36829 = mono_defaults.marshalbyrefobject_class;
        klass.173 = klass;
        if (D.36829 == klass.173) goto <D.36817>; else goto <D.36818>;
        <D.36817>:
        {
          struct MonoMethod * stfld_wrapper;
          struct MonoInst * iargs[5];

          try
            {
              D.36790 = field->type;
              stfld_wrapper = mono_marshal_get_stfld_wrapper (D.36790);
              D.30637 = cfg->gsharedvt;
              if (D.30637 != 0) goto <D.36830>; else goto <D.36831>;
              <D.36830>:
              D.36832 = mono_opcode_name (op);
              D.32188 = method->signature;
              D.32189 = D.32188->param_count;
              D.32190 = (int) D.32189;
              D.32191 = method->name;
              D.30426 = method->klass;
              D.32192 = D.30426->name;
              D.30426 = method->klass;
              D.32193 = D.30426->name_space;
              D.36833 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.32193, D.32192, D.32191, D.32190, D.36832, "method-to-ir.c", 9933);
              cfg->exception_message = D.36833;
              D.30569 = cfg->verbose_level;
              if (D.30569 > 1) goto <D.36834>; else goto <D.36835>;
              <D.36834>:
              D.32197 = cfg->exception_message;
              printf ("%s\n", D.32197);
              <D.36835>:
              mono_cfg_set_exception (cfg, 11);
              goto exception_exit;
              <D.36831>:
              D.31489 = *sp;
              iargs[0] = D.31489;
              D.30489 = cfg->mempool;
              D.36836 = mono_mempool_alloc (D.30489, 48);
              iargs[1] = D.36836;
              D.36837 = iargs[1];
              D.36837 = iargs[1];
              D.36837->data.op[1].const_val = 0;
              D.36838 = D.36837->data.op[1].const_val;
              D.36837->data.op[0].const_val = D.36838;
              D.36837 = iargs[1];
              D.36837 = iargs[1];
              D.36837->prev = 0B;
              D.36839 = D.36837->prev;
              D.36837->next = D.36839;
              D.36837 = iargs[1];
              D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.30884 = D.30883 & 64;
              if (D.30884 != 0) goto <D.36841>; else goto <D.36842>;
              <D.36841>:
              iftmp.240 = 738;
              goto <D.36843>;
              <D.36842>:
              iftmp.240 = 362;
              <D.36843>:
              D.36837->opcode = iftmp.240;
              D.36837 = iargs[1];
              D.36837->flags = 0;
              D.36837 = iargs[1];
              D.36837->type = 0;
              D.36837 = iargs[1];
              D.36837->dreg = -1;
              D.36837 = iargs[1];
              D.36837 = iargs[1];
              D.36837 = iargs[1];
              D.36837->sreg3 = -1;
              D.36844 = D.36837->sreg3;
              D.36837->sreg2 = D.36844;
              D.36845 = D.36837->sreg2;
              D.36837->sreg1 = D.36845;
              D.36837 = iargs[1];
              D.30712 = cfg->ip;
              D.36837->cil_code = D.30712;
              D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.30884 = D.30883 & 64;
              if (D.30884 != 0) goto <D.36846>; else goto <D.36847>;
              <D.36846>:
              {
                struct MonoInst * group;
                struct MonoInst * got_loc;

                got_loc = mono_get_got_var (cfg);
                D.30489 = cfg->mempool;
                group = mono_mempool_alloc (D.30489, 48);
                group->data.op[1].const_val = 0;
                D.36848 = group->data.op[1].const_val;
                group->data.op[0].const_val = D.36848;
                group->prev = 0B;
                D.36849 = group->prev;
                group->next = D.36849;
                group->opcode = 737;
                group->flags = 0;
                group->type = 0;
                group->dreg = -1;
                group->sreg3 = -1;
                D.36850 = group->sreg3;
                group->sreg2 = D.36850;
                D.36851 = group->sreg2;
                group->sreg1 = D.36851;
                D.30712 = cfg->ip;
                group->cil_code = D.30712;
                klass.173 = klass;
                group->data.op[0].src = klass.173;
                group->data.op[1].src = 11B;
                D.36837 = iargs[1];
                D.36852 = got_loc->dreg;
                D.36837->sreg1 = D.36852;
                D.36837 = iargs[1];
                D.36837->data.op[1].p = group;
              }
              goto <D.36853>;
              <D.36847>:
              D.36837 = iargs[1];
              klass.173 = klass;
              D.36837->data.op[0].p = klass.173;
              D.36837 = iargs[1];
              D.36837->data.op[1].src = 11B;
              <D.36853>:
              D.36837 = iargs[1];
              D.36837->type = 3;
              D.36837 = iargs[1];
              D.36854 = alloc_dreg (cfg, 3);
              D.36855 = (int) D.36854;
              D.36837->dreg = D.36855;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.36856>; else goto <D.36857>;
              <D.36856>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.36837 = iargs[1];
              D.30741->next = D.36837;
              D.36837 = iargs[1];
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.36837->prev = D.30741;
              bblock.127 = cfg->cbb;
              D.36837 = iargs[1];
              bblock.127->last_ins = D.36837;
              goto <D.36858>;
              <D.36857>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              D.36837 = iargs[1];
              bblock.127->last_ins = D.36837;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.36858>:
              D.30489 = cfg->mempool;
              D.36859 = mono_mempool_alloc (D.30489, 48);
              iargs[2] = D.36859;
              D.36860 = iargs[2];
              D.36860 = iargs[2];
              D.36860->data.op[1].const_val = 0;
              D.36861 = D.36860->data.op[1].const_val;
              D.36860->data.op[0].const_val = D.36861;
              D.36860 = iargs[2];
              D.36860 = iargs[2];
              D.36860->prev = 0B;
              D.36862 = D.36860->prev;
              D.36860->next = D.36862;
              D.36860 = iargs[2];
              D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.30884 = D.30883 & 64;
              if (D.30884 != 0) goto <D.36864>; else goto <D.36865>;
              <D.36864>:
              iftmp.241 = 738;
              goto <D.36866>;
              <D.36865>:
              iftmp.241 = 362;
              <D.36866>:
              D.36860->opcode = iftmp.241;
              D.36860 = iargs[2];
              D.36860->flags = 0;
              D.36860 = iargs[2];
              D.36860->type = 0;
              D.36860 = iargs[2];
              D.36860->dreg = -1;
              D.36860 = iargs[2];
              D.36860 = iargs[2];
              D.36860 = iargs[2];
              D.36860->sreg3 = -1;
              D.36867 = D.36860->sreg3;
              D.36860->sreg2 = D.36867;
              D.36868 = D.36860->sreg2;
              D.36860->sreg1 = D.36868;
              D.36860 = iargs[2];
              D.30712 = cfg->ip;
              D.36860->cil_code = D.30712;
              D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.30884 = D.30883 & 64;
              if (D.30884 != 0) goto <D.36869>; else goto <D.36870>;
              <D.36869>:
              {
                struct MonoInst * group;
                struct MonoInst * got_loc;

                got_loc = mono_get_got_var (cfg);
                D.30489 = cfg->mempool;
                group = mono_mempool_alloc (D.30489, 48);
                group->data.op[1].const_val = 0;
                D.36871 = group->data.op[1].const_val;
                group->data.op[0].const_val = D.36871;
                group->prev = 0B;
                D.36872 = group->prev;
                group->next = D.36872;
                group->opcode = 737;
                group->flags = 0;
                group->type = 0;
                group->dreg = -1;
                group->sreg3 = -1;
                D.36873 = group->sreg3;
                group->sreg2 = D.36873;
                D.36874 = group->sreg2;
                group->sreg1 = D.36874;
                D.30712 = cfg->ip;
                group->cil_code = D.30712;
                group->data.op[0].src = field;
                group->data.op[1].src = 13B;
                D.36860 = iargs[2];
                D.36875 = got_loc->dreg;
                D.36860->sreg1 = D.36875;
                D.36860 = iargs[2];
                D.36860->data.op[1].p = group;
              }
              goto <D.36876>;
              <D.36870>:
              D.36860 = iargs[2];
              D.36860->data.op[0].p = field;
              D.36860 = iargs[2];
              D.36860->data.op[1].src = 13B;
              <D.36876>:
              D.36860 = iargs[2];
              D.36860->type = 3;
              D.36860 = iargs[2];
              D.36877 = alloc_dreg (cfg, 3);
              D.36878 = (int) D.36877;
              D.36860->dreg = D.36878;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.36879>; else goto <D.36880>;
              <D.36879>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.36860 = iargs[2];
              D.30741->next = D.36860;
              D.36860 = iargs[2];
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.36860->prev = D.30741;
              bblock.127 = cfg->cbb;
              D.36860 = iargs[2];
              bblock.127->last_ins = D.36860;
              goto <D.36881>;
              <D.36880>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              D.36860 = iargs[2];
              bblock.127->last_ins = D.36860;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.36881>:
              D.30489 = cfg->mempool;
              D.36882 = mono_mempool_alloc (D.30489, 48);
              iargs[3] = D.36882;
              D.36883 = iargs[3];
              D.36883 = iargs[3];
              D.36883->data.op[1].const_val = 0;
              D.36884 = D.36883->data.op[1].const_val;
              D.36883->data.op[0].const_val = D.36884;
              D.36883 = iargs[3];
              D.36883 = iargs[3];
              D.36883->prev = 0B;
              D.36885 = D.36883->prev;
              D.36883->next = D.36885;
              D.36883 = iargs[3];
              D.36883->opcode = 362;
              D.36883 = iargs[3];
              D.36883->flags = 0;
              D.36883 = iargs[3];
              D.36883->type = 0;
              D.36883 = iargs[3];
              D.36883->dreg = -1;
              D.36883 = iargs[3];
              D.36883 = iargs[3];
              D.36883 = iargs[3];
              D.36883->sreg3 = -1;
              D.36886 = D.36883->sreg3;
              D.36883->sreg2 = D.36886;
              D.36887 = D.36883->sreg2;
              D.36883->sreg1 = D.36887;
              D.36883 = iargs[3];
              D.30712 = cfg->ip;
              D.36883->cil_code = D.30712;
              D.36883 = iargs[3];
              klass.173 = klass;
              D.36797 = BIT_FIELD_REF <*klass.173, 8, 160>;
              D.36798 = D.36797 & 8;
              if (D.36798 != 0) goto <D.36889>; else goto <D.36890>;
              <D.36889>:
              D.36801 = field->offset;
              D.36802 = (unsigned int) D.36801;
              D.36891 = D.36802 + 4294967288;
              iftmp.242 = (mgreg_t) D.36891;
              goto <D.36892>;
              <D.36890>:
              iftmp.242 = field->offset;
              <D.36892>:
              D.36883->data.op[0].const_val = iftmp.242;
              D.36883 = iargs[3];
              D.36883->type = 1;
              D.36883 = iargs[3];
              D.36893 = alloc_dreg (cfg, 1);
              D.36894 = (int) D.36893;
              D.36883->dreg = D.36894;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.36895>; else goto <D.36896>;
              <D.36895>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.36883 = iargs[3];
              D.30741->next = D.36883;
              D.36883 = iargs[3];
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.36883->prev = D.30741;
              bblock.127 = cfg->cbb;
              D.36883 = iargs[3];
              bblock.127->last_ins = D.36883;
              goto <D.36897>;
              <D.36896>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              D.36883 = iargs[3];
              bblock.127->last_ins = D.36883;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.36897>:
              D.35755 = MEM[(struct MonoInst * *)sp + 4B];
              iargs[4] = D.35755;
              D.30881 = cfg->opt;
              D.33394 = D.30881 & 4;
              if (D.33394 != 0) goto <D.36898>; else goto <D.36901>;
              <D.36901>:
              D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.30884 = D.30883 & 64;
              if (D.30884 != 0) goto <D.36898>; else goto <D.36899>;
              <D.36898>:
              D.30656 = cfg->real_offset;
              D.36902 = mono_method_signature (stfld_wrapper);
              costs = inline_method (cfg, stfld_wrapper, D.36902, &iargs, ip, D.30656, dont_inline, 1);
              D.31057 = cfg->exception_type;
              if (D.31057 != 0) goto exception_exit; else goto <D.36903>;
              <D.36903>:
              D.36904 = costs <= 0;
              D.36905 = (long int) D.36904;
              D.36906 = __builtin_expect (D.36905, 0);
              if (D.36906 != 0) goto <D.36907>; else goto <D.36908>;
              <D.36907>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9946, "costs > 0");
              <D.36908>:
              D.30656 = cfg->real_offset;
              D.33421 = D.30656 + 5;
              cfg->real_offset = D.33421;
              bblock.127 = cfg->cbb;
              bblock = bblock.127;
              inline_costs = inline_costs + costs;
              goto <D.36900>;
              <D.36899>:
              mono_emit_method_call (cfg, stfld_wrapper, &iargs, 0B);
              <D.36900>:
            }
          finally
            {
              iargs = {CLOBBER};
            }
        }
        goto <D.36819>;
        <D.36818>:
        {
          struct MonoInst * store;

          D.30476 = BIT_FIELD_REF <*cfg, 8, 3424>;
          D.31134 = D.30476 & 64;
          if (D.31134 != 0) goto <D.36909>; else goto <D.36910>;
          <D.36909>:
          {
            struct MonoInst * inst;

            D.30489 = cfg->mempool;
            inst = mono_mempool_alloc (D.30489, 48);
            inst->data.op[1].const_val = 0;
            D.36911 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.36911;
            inst->prev = 0B;
            D.36912 = inst->prev;
            inst->next = D.36912;
            inst->opcode = 323;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.36913 = inst->sreg3;
            inst->sreg2 = D.36913;
            D.36914 = inst->sreg2;
            inst->sreg1 = D.36914;
            D.30712 = cfg->ip;
            inst->cil_code = D.30712;
            inst->dreg = -1;
            D.31489 = *sp;
            D.31682 = D.31489->dreg;
            inst->sreg1 = D.31682;
            inst->data.op[1].const_val = 0;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.36915>; else goto <D.36916>;
            <D.36915>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = inst;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            inst->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            goto <D.36917>;
            <D.36916>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.36917>:
          }
          {
            struct MonoInst * inst;

            D.30489 = cfg->mempool;
            inst = mono_mempool_alloc (D.30489, 48);
            inst->data.op[1].const_val = 0;
            D.36918 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.36918;
            inst->prev = 0B;
            D.36919 = inst->prev;
            inst->next = D.36919;
            inst->opcode = 455;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.36920 = inst->sreg3;
            inst->sreg2 = D.36920;
            D.36921 = inst->sreg2;
            inst->sreg1 = D.36921;
            D.30712 = cfg->ip;
            inst->cil_code = D.30712;
            inst->data.op[1].p = "NullReferenceException";
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.36922>; else goto <D.36923>;
            <D.36922>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = inst;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            inst->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            goto <D.36924>;
            <D.36923>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.36924>:
          }
          goto <D.36925>;
          <D.36910>:
          <D.36925>:
          klass.173 = klass;
          D.36926 = mini_is_gsharedvt_klass (cfg, klass.173);
          if (D.36926 != 0) goto <D.36927>; else goto <D.36928>;
          <D.36927>:
          {
            struct MonoInst * offset_ins;

            klass.173 = klass;
            context_used = mini_class_check_context_used (cfg, klass.173);
            offset_ins = emit_get_gsharedvt_info (cfg, field, 15);
            D.36929 = alloc_ireg_mp (cfg);
            dreg = (int) D.36929;
            D.30489 = cfg->mempool;
            ins = mono_mempool_alloc (D.30489, 48);
            ins->data.op[1].const_val = 0;
            D.30708 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.30708;
            ins->prev = 0B;
            D.30709 = ins->prev;
            ins->next = D.30709;
            ins->opcode = 569;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.30710 = ins->sreg3;
            ins->sreg2 = D.30710;
            D.30711 = ins->sreg2;
            ins->sreg1 = D.30711;
            D.30712 = cfg->ip;
            ins->cil_code = D.30712;
            ins->dreg = dreg;
            D.31489 = *sp;
            D.31682 = D.31489->dreg;
            ins->sreg1 = D.31682;
            D.36930 = offset_ins->dreg;
            ins->sreg2 = D.36930;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.36931>; else goto <D.36932>;
            <D.36931>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = ins;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            ins->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = ins;
            goto <D.36933>;
            <D.36932>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = ins;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.36933>:
            D.30489 = cfg->mempool;
            store = mono_mempool_alloc (D.30489, 48);
            store->data.op[1].const_val = 0;
            D.36934 = store->data.op[1].const_val;
            store->data.op[0].const_val = D.36934;
            store->prev = 0B;
            D.36935 = store->prev;
            store->next = D.36935;
            D.36790 = field->type;
            D.36936 = mono_type_to_store_membase (cfg, D.36790);
            D.36937 = (short unsigned int) D.36936;
            store->opcode = D.36937;
            store->flags = 0;
            store->type = 0;
            store->dreg = -1;
            store->sreg3 = -1;
            D.36938 = store->sreg3;
            store->sreg2 = D.36938;
            D.36939 = store->sreg2;
            store->sreg1 = D.36939;
            D.30712 = cfg->ip;
            store->cil_code = D.30712;
            D.32655 = sp + 4;
            D.32656 = *D.32655;
            D.32657 = D.32656->dreg;
            store->sreg1 = D.32657;
            store->dreg = dreg;
            store->data.op[0].const_val = 0;
            D.36790 = field->type;
            type_to_eval_stack_type (cfg, D.36790, store);
            D.36790 = field->type;
            D.36940 = mono_class_from_mono_type (D.36790);
            store->klass = D.36940;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.36941>; else goto <D.36942>;
            <D.36941>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = store;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            store->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = store;
            goto <D.36943>;
            <D.36942>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = store;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.36943>:
          }
          goto <D.36944>;
          <D.36928>:
          D.30489 = cfg->mempool;
          store = mono_mempool_alloc (D.30489, 48);
          store->data.op[1].const_val = 0;
          D.36934 = store->data.op[1].const_val;
          store->data.op[0].const_val = D.36934;
          store->prev = 0B;
          D.36935 = store->prev;
          store->next = D.36935;
          D.36790 = field->type;
          D.36945 = mono_type_to_store_membase (cfg, D.36790);
          D.36946 = (short unsigned int) D.36945;
          store->opcode = D.36946;
          store->flags = 0;
          store->type = 0;
          store->dreg = -1;
          store->sreg3 = -1;
          D.36938 = store->sreg3;
          store->sreg2 = D.36938;
          D.36939 = store->sreg2;
          store->sreg1 = D.36939;
          D.30712 = cfg->ip;
          store->cil_code = D.30712;
          D.32655 = sp + 4;
          D.32656 = *D.32655;
          D.32657 = D.32656->dreg;
          store->sreg1 = D.32657;
          D.31489 = *sp;
          D.31682 = D.31489->dreg;
          store->dreg = D.31682;
          foffset.243 = (int) foffset;
          store->data.op[0].const_val = foffset.243;
          D.36790 = field->type;
          type_to_eval_stack_type (cfg, D.36790, store);
          D.36790 = field->type;
          D.36948 = mono_class_from_mono_type (D.36790);
          store->klass = D.36948;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.36949>; else goto <D.36950>;
          <D.36949>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = store;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          store->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = store;
          goto <D.36951>;
          <D.36950>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = store;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.36951>:
          <D.36944>:
          D.31489 = *sp;
          D.33287 = D.31489->opcode;
          if (D.33287 != 314) goto <D.36952>; else goto <D.36953>;
          <D.36952>:
          D.36954 = store->flags;
          D.36955 = D.36954 | 32;
          store->flags = D.36955;
          <D.36953>:
          D.33752 = BIT_FIELD_REF <*cfg, 8, 3416>;
          D.33753 = D.33752 & 16;
          if (D.33753 != 0) goto <D.36958>; else goto <D.36959>;
          <D.36958>:
          D.36790 = field->type;
          D.36960 = mini_type_to_stind (cfg, D.36790);
          if (D.36960 == 81) goto <D.36961>; else goto <D.36962>;
          <D.36961>:
          D.32655 = sp + 4;
          D.32656 = *D.32655;
          D.34936 = D.32656->opcode;
          if (D.34936 != 362) goto <D.36956>; else goto <D.36963>;
          <D.36963>:
          D.32655 = sp + 4;
          D.32656 = *D.32655;
          D.34961 = D.32656->data.op[0].const_val;
          if (D.34961 != 0) goto <D.36956>; else goto <D.36957>;
          <D.36956>:
          {
            struct MonoInst * ptr;
            int dreg;

            D.36964 = alloc_ireg_mp (cfg);
            dreg = (int) D.36964;
            D.30489 = cfg->mempool;
            ptr = mono_mempool_alloc (D.30489, 48);
            ptr->data.op[1].const_val = 0;
            D.36965 = ptr->data.op[1].const_val;
            ptr->data.op[0].const_val = D.36965;
            ptr->prev = 0B;
            D.36966 = ptr->prev;
            ptr->next = D.36966;
            ptr->opcode = 629;
            ptr->flags = 0;
            ptr->type = 0;
            ptr->dreg = -1;
            ptr->sreg3 = -1;
            D.36967 = ptr->sreg3;
            ptr->sreg2 = D.36967;
            D.36968 = ptr->sreg2;
            ptr->sreg1 = D.36968;
            D.30712 = cfg->ip;
            ptr->cil_code = D.30712;
            ptr->dreg = dreg;
            D.31489 = *sp;
            D.31682 = D.31489->dreg;
            ptr->sreg1 = D.31682;
            foffset.243 = (int) foffset;
            ptr->data.op[1].const_val = foffset.243;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.36969>; else goto <D.36970>;
            <D.36969>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = ptr;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            ptr->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = ptr;
            goto <D.36971>;
            <D.36970>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = ptr;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.36971>:
            D.32655 = sp + 4;
            D.32656 = *D.32655;
            emit_write_barrier (cfg, ptr, D.32656);
          }
          <D.36957>:
          <D.36962>:
          <D.36959>:
          D.36954 = store->flags;
          D.34902 = (unsigned char) ins_flag;
          D.36972 = D.36954 | D.34902;
          store->flags = D.36972;
        }
        <D.36819>:
        ins_flag = 0;
        ip = ip + 5;
        goto <D.27380>;
        <D.36805>:
        if (is_instance != 0) goto <D.36977>; else goto <D.36973>;
        <D.36977>:
        klass.173 = klass;
        D.36096 = BIT_FIELD_REF <*klass.173, 8, 176>;
        D.36097 = D.36096 & 64;
        if (D.36097 != 0) goto <D.36978>; else goto <D.36974>;
        <D.36978>:
        D.30459 = cfg->method;
        D.36979 = mono_method_signature (D.30459);
        D.36980 = BIT_FIELD_REF <*D.36979, 8, 80>;
        D.36981 = D.36980 & 64;
        if (D.36981 == 0) goto <D.36975>; else goto <D.36982>;
        <D.36982>:
        D.31489 = *sp;
        D.33287 = D.31489->opcode;
        if (D.33287 != 428) goto <D.36975>; else goto <D.36983>;
        <D.36983>:
        D.31489 = *sp;
        D.36826 = D.31489->sreg1;
        D.31106 = cfg->args;
        D.31107 = *D.31106;
        D.31121 = D.31107->dreg;
        if (D.36826 != D.31121) goto <D.36975>; else goto <D.36974>;
        <D.36974>:
        klass.173 = klass;
        D.36096 = BIT_FIELD_REF <*klass.173, 8, 176>;
        D.36827 = D.36096 & 128;
        if (D.36827 != 0) goto <D.36975>; else goto <D.36984>;
        <D.36984>:
        D.36829 = mono_defaults.marshalbyrefobject_class;
        klass.173 = klass;
        if (D.36829 == klass.173) goto <D.36975>; else goto <D.36973>;
        <D.36975>:
        {
          struct MonoMethod * wrapper;
          struct MonoInst * iargs[4];

          try
            {
              if (op == 124) goto <D.36986>; else goto <D.36987>;
              <D.36986>:
              D.36790 = field->type;
              iftmp.244 = mono_marshal_get_ldflda_wrapper (D.36790);
              goto <D.36988>;
              <D.36987>:
              D.36790 = field->type;
              iftmp.244 = mono_marshal_get_ldfld_wrapper (D.36790);
              <D.36988>:
              wrapper = iftmp.244;
              D.30637 = cfg->gsharedvt;
              if (D.30637 != 0) goto <D.36989>; else goto <D.36990>;
              <D.36989>:
              D.36991 = mono_opcode_name (op);
              D.32188 = method->signature;
              D.32189 = D.32188->param_count;
              D.32190 = (int) D.32189;
              D.32191 = method->name;
              D.30426 = method->klass;
              D.32192 = D.30426->name;
              D.30426 = method->klass;
              D.32193 = D.30426->name_space;
              D.36992 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.32193, D.32192, D.32191, D.32190, D.36991, "method-to-ir.c", 10000);
              cfg->exception_message = D.36992;
              D.30569 = cfg->verbose_level;
              if (D.30569 > 1) goto <D.36993>; else goto <D.36994>;
              <D.36993>:
              D.32197 = cfg->exception_message;
              printf ("%s\n", D.32197);
              <D.36994>:
              mono_cfg_set_exception (cfg, 11);
              goto exception_exit;
              <D.36990>:
              D.31489 = *sp;
              iargs[0] = D.31489;
              D.30489 = cfg->mempool;
              D.36995 = mono_mempool_alloc (D.30489, 48);
              iargs[1] = D.36995;
              D.36996 = iargs[1];
              D.36996 = iargs[1];
              D.36996->data.op[1].const_val = 0;
              D.36997 = D.36996->data.op[1].const_val;
              D.36996->data.op[0].const_val = D.36997;
              D.36996 = iargs[1];
              D.36996 = iargs[1];
              D.36996->prev = 0B;
              D.36998 = D.36996->prev;
              D.36996->next = D.36998;
              D.36996 = iargs[1];
              D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.30884 = D.30883 & 64;
              if (D.30884 != 0) goto <D.37000>; else goto <D.37001>;
              <D.37000>:
              iftmp.245 = 738;
              goto <D.37002>;
              <D.37001>:
              iftmp.245 = 362;
              <D.37002>:
              D.36996->opcode = iftmp.245;
              D.36996 = iargs[1];
              D.36996->flags = 0;
              D.36996 = iargs[1];
              D.36996->type = 0;
              D.36996 = iargs[1];
              D.36996->dreg = -1;
              D.36996 = iargs[1];
              D.36996 = iargs[1];
              D.36996 = iargs[1];
              D.36996->sreg3 = -1;
              D.37003 = D.36996->sreg3;
              D.36996->sreg2 = D.37003;
              D.37004 = D.36996->sreg2;
              D.36996->sreg1 = D.37004;
              D.36996 = iargs[1];
              D.30712 = cfg->ip;
              D.36996->cil_code = D.30712;
              D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.30884 = D.30883 & 64;
              if (D.30884 != 0) goto <D.37005>; else goto <D.37006>;
              <D.37005>:
              {
                struct MonoInst * group;
                struct MonoInst * got_loc;

                got_loc = mono_get_got_var (cfg);
                D.30489 = cfg->mempool;
                group = mono_mempool_alloc (D.30489, 48);
                group->data.op[1].const_val = 0;
                D.37007 = group->data.op[1].const_val;
                group->data.op[0].const_val = D.37007;
                group->prev = 0B;
                D.37008 = group->prev;
                group->next = D.37008;
                group->opcode = 737;
                group->flags = 0;
                group->type = 0;
                group->dreg = -1;
                group->sreg3 = -1;
                D.37009 = group->sreg3;
                group->sreg2 = D.37009;
                D.37010 = group->sreg2;
                group->sreg1 = D.37010;
                D.30712 = cfg->ip;
                group->cil_code = D.30712;
                klass.173 = klass;
                group->data.op[0].src = klass.173;
                group->data.op[1].src = 11B;
                D.36996 = iargs[1];
                D.37011 = got_loc->dreg;
                D.36996->sreg1 = D.37011;
                D.36996 = iargs[1];
                D.36996->data.op[1].p = group;
              }
              goto <D.37012>;
              <D.37006>:
              D.36996 = iargs[1];
              klass.173 = klass;
              D.36996->data.op[0].p = klass.173;
              D.36996 = iargs[1];
              D.36996->data.op[1].src = 11B;
              <D.37012>:
              D.36996 = iargs[1];
              D.36996->type = 3;
              D.36996 = iargs[1];
              D.37013 = alloc_dreg (cfg, 3);
              D.37014 = (int) D.37013;
              D.36996->dreg = D.37014;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.37015>; else goto <D.37016>;
              <D.37015>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.36996 = iargs[1];
              D.30741->next = D.36996;
              D.36996 = iargs[1];
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.36996->prev = D.30741;
              bblock.127 = cfg->cbb;
              D.36996 = iargs[1];
              bblock.127->last_ins = D.36996;
              goto <D.37017>;
              <D.37016>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              D.36996 = iargs[1];
              bblock.127->last_ins = D.36996;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.37017>:
              D.30489 = cfg->mempool;
              D.37018 = mono_mempool_alloc (D.30489, 48);
              iargs[2] = D.37018;
              D.37019 = iargs[2];
              D.37019 = iargs[2];
              D.37019->data.op[1].const_val = 0;
              D.37020 = D.37019->data.op[1].const_val;
              D.37019->data.op[0].const_val = D.37020;
              D.37019 = iargs[2];
              D.37019 = iargs[2];
              D.37019->prev = 0B;
              D.37021 = D.37019->prev;
              D.37019->next = D.37021;
              D.37019 = iargs[2];
              D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.30884 = D.30883 & 64;
              if (D.30884 != 0) goto <D.37023>; else goto <D.37024>;
              <D.37023>:
              iftmp.246 = 738;
              goto <D.37025>;
              <D.37024>:
              iftmp.246 = 362;
              <D.37025>:
              D.37019->opcode = iftmp.246;
              D.37019 = iargs[2];
              D.37019->flags = 0;
              D.37019 = iargs[2];
              D.37019->type = 0;
              D.37019 = iargs[2];
              D.37019->dreg = -1;
              D.37019 = iargs[2];
              D.37019 = iargs[2];
              D.37019 = iargs[2];
              D.37019->sreg3 = -1;
              D.37026 = D.37019->sreg3;
              D.37019->sreg2 = D.37026;
              D.37027 = D.37019->sreg2;
              D.37019->sreg1 = D.37027;
              D.37019 = iargs[2];
              D.30712 = cfg->ip;
              D.37019->cil_code = D.30712;
              D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.30884 = D.30883 & 64;
              if (D.30884 != 0) goto <D.37028>; else goto <D.37029>;
              <D.37028>:
              {
                struct MonoInst * group;
                struct MonoInst * got_loc;

                got_loc = mono_get_got_var (cfg);
                D.30489 = cfg->mempool;
                group = mono_mempool_alloc (D.30489, 48);
                group->data.op[1].const_val = 0;
                D.37030 = group->data.op[1].const_val;
                group->data.op[0].const_val = D.37030;
                group->prev = 0B;
                D.37031 = group->prev;
                group->next = D.37031;
                group->opcode = 737;
                group->flags = 0;
                group->type = 0;
                group->dreg = -1;
                group->sreg3 = -1;
                D.37032 = group->sreg3;
                group->sreg2 = D.37032;
                D.37033 = group->sreg2;
                group->sreg1 = D.37033;
                D.30712 = cfg->ip;
                group->cil_code = D.30712;
                group->data.op[0].src = field;
                group->data.op[1].src = 13B;
                D.37019 = iargs[2];
                D.37034 = got_loc->dreg;
                D.37019->sreg1 = D.37034;
                D.37019 = iargs[2];
                D.37019->data.op[1].p = group;
              }
              goto <D.37035>;
              <D.37029>:
              D.37019 = iargs[2];
              D.37019->data.op[0].p = field;
              D.37019 = iargs[2];
              D.37019->data.op[1].src = 13B;
              <D.37035>:
              D.37019 = iargs[2];
              D.37019->type = 3;
              D.37019 = iargs[2];
              D.37036 = alloc_dreg (cfg, 3);
              D.37037 = (int) D.37036;
              D.37019->dreg = D.37037;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.37038>; else goto <D.37039>;
              <D.37038>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.37019 = iargs[2];
              D.30741->next = D.37019;
              D.37019 = iargs[2];
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.37019->prev = D.30741;
              bblock.127 = cfg->cbb;
              D.37019 = iargs[2];
              bblock.127->last_ins = D.37019;
              goto <D.37040>;
              <D.37039>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              D.37019 = iargs[2];
              bblock.127->last_ins = D.37019;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.37040>:
              D.30489 = cfg->mempool;
              D.37041 = mono_mempool_alloc (D.30489, 48);
              iargs[3] = D.37041;
              D.37042 = iargs[3];
              D.37042 = iargs[3];
              D.37042->data.op[1].const_val = 0;
              D.37043 = D.37042->data.op[1].const_val;
              D.37042->data.op[0].const_val = D.37043;
              D.37042 = iargs[3];
              D.37042 = iargs[3];
              D.37042->prev = 0B;
              D.37044 = D.37042->prev;
              D.37042->next = D.37044;
              D.37042 = iargs[3];
              D.37042->opcode = 362;
              D.37042 = iargs[3];
              D.37042->flags = 0;
              D.37042 = iargs[3];
              D.37042->type = 0;
              D.37042 = iargs[3];
              D.37042->dreg = -1;
              D.37042 = iargs[3];
              D.37042 = iargs[3];
              D.37042 = iargs[3];
              D.37042->sreg3 = -1;
              D.37045 = D.37042->sreg3;
              D.37042->sreg2 = D.37045;
              D.37046 = D.37042->sreg2;
              D.37042->sreg1 = D.37046;
              D.37042 = iargs[3];
              D.30712 = cfg->ip;
              D.37042->cil_code = D.30712;
              D.37042 = iargs[3];
              klass.173 = klass;
              D.36797 = BIT_FIELD_REF <*klass.173, 8, 160>;
              D.36798 = D.36797 & 8;
              if (D.36798 != 0) goto <D.37048>; else goto <D.37049>;
              <D.37048>:
              D.36801 = field->offset;
              D.36802 = (unsigned int) D.36801;
              D.36891 = D.36802 + 4294967288;
              iftmp.247 = (mgreg_t) D.36891;
              goto <D.37050>;
              <D.37049>:
              iftmp.247 = field->offset;
              <D.37050>:
              D.37042->data.op[0].const_val = iftmp.247;
              D.37042 = iargs[3];
              D.37042->type = 1;
              D.37042 = iargs[3];
              D.37051 = alloc_dreg (cfg, 1);
              D.37052 = (int) D.37051;
              D.37042->dreg = D.37052;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.37053>; else goto <D.37054>;
              <D.37053>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.37042 = iargs[3];
              D.30741->next = D.37042;
              D.37042 = iargs[3];
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.37042->prev = D.30741;
              bblock.127 = cfg->cbb;
              D.37042 = iargs[3];
              bblock.127->last_ins = D.37042;
              goto <D.37055>;
              <D.37054>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              D.37042 = iargs[3];
              bblock.127->last_ins = D.37042;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.37055>:
              D.30881 = cfg->opt;
              D.33394 = D.30881 & 4;
              if (D.33394 != 0) goto <D.37056>; else goto <D.37059>;
              <D.37059>:
              D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.30884 = D.30883 & 64;
              if (D.30884 != 0) goto <D.37056>; else goto <D.37057>;
              <D.37056>:
              D.30656 = cfg->real_offset;
              D.37060 = mono_method_signature (wrapper);
              costs = inline_method (cfg, wrapper, D.37060, &iargs, ip, D.30656, dont_inline, 1);
              D.31057 = cfg->exception_type;
              if (D.31057 != 0) goto exception_exit; else goto <D.37061>;
              <D.37061>:
              bblock.127 = cfg->cbb;
              bblock = bblock.127;
              D.36904 = costs <= 0;
              D.36905 = (long int) D.36904;
              D.36906 = __builtin_expect (D.36905, 0);
              if (D.36906 != 0) goto <D.37062>; else goto <D.37063>;
              <D.37062>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10011, "costs > 0");
              <D.37063>:
              D.30656 = cfg->real_offset;
              D.33421 = D.30656 + 5;
              cfg->real_offset = D.33421;
              sp.248 = sp;
              sp = sp.248 + 4;
              D.37065 = iargs[0];
              *sp.248 = D.37065;
              inline_costs = inline_costs + costs;
              goto <D.37058>;
              <D.37057>:
              ins = mono_emit_method_call (cfg, wrapper, &iargs, 0B);
              sp.249 = sp;
              sp = sp.249 + 4;
              *sp.249 = ins;
              <D.37058>:
            }
          finally
            {
              iargs = {CLOBBER};
            }
        }
        goto <D.36976>;
        <D.36973>:
        if (is_instance != 0) goto <D.37067>; else goto <D.37068>;
        <D.37067>:
        D.31489 = *sp;
        D.32169 = D.31489->type;
        if (D.32169 == 7) goto <D.37069>; else goto <D.37070>;
        <D.37069>:
        {
          struct MonoInst * var;

          D.31489 = *sp;
          D.31682 = D.31489->dreg;
          D.37072 = (unsigned int) D.31682;
          D.31601 = cfg->vreg_to_inst_len;
          if (D.37072 < D.31601) goto <D.37073>; else goto <D.37074>;
          <D.37073>:
          D.31604 = cfg->vreg_to_inst;
          D.31489 = *sp;
          D.31682 = D.31489->dreg;
          D.37075 = (unsigned int) D.31682;
          D.37076 = D.37075 * 4;
          D.37077 = D.31604 + D.37076;
          iftmp.250 = *D.37077;
          goto <D.37078>;
          <D.37074>:
          iftmp.250 = 0B;
          <D.37078>:
          var = iftmp.250;
          if (var == 0B) goto <D.37079>; else goto <D.37080>;
          <D.37079>:
          D.31489 = *sp;
          D.31682 = D.31489->dreg;
          klass.173 = klass;
          D.35339 = &klass.173->byval_arg;
          var = mono_compile_create_var_for_vreg (cfg, D.35339, 329, D.31682);
          goto <D.37081>;
          <D.37080>:
          D.37082 = var->klass;
          klass.173 = klass;
          D.37083 = D.37082 != klass.173;
          D.37084 = (long int) D.37083;
          D.37085 = __builtin_expect (D.37084, 0);
          if (D.37085 != 0) goto <D.37086>; else goto <D.37087>;
          <D.37086>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10034, "var->klass == klass");
          <D.37087>:
          <D.37081>:
          D.30489 = cfg->mempool;
          ins = mono_mempool_alloc (D.30489, 48);
          ins->data.op[1].const_val = 0;
          D.30708 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.30708;
          ins->prev = 0B;
          D.30709 = ins->prev;
          ins->next = D.30709;
          ins->opcode = 314;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.30710 = ins->sreg3;
          ins->sreg2 = D.30710;
          D.30711 = ins->sreg2;
          ins->sreg1 = D.30711;
          D.30712 = cfg->ip;
          ins->cil_code = D.30712;
          ins->data.op[0].p = var;
          D.37088 = var->flags;
          D.37089 = D.37088 | 16;
          var->flags = D.37089;
          ins->type = 5;
          D.37082 = var->klass;
          ins->klass = D.37082;
          D.37090 = alloc_dreg (cfg, 5);
          D.37091 = (int) D.37090;
          ins->dreg = D.37091;
          cfg->has_indirection = 1;
          D.30637 = cfg->gsharedvt;
          D.31575 = D.30637 != 0;
          D.31576 = (long int) D.31575;
          D.31577 = __builtin_expect (D.31576, 0);
          if (D.31577 != 0) goto <D.37092>; else goto <D.37093>;
          <D.37092>:
          D.37094 = var->data.op[1].vtype;
          D.37095 = mini_is_gsharedvt_variable_type (cfg, D.37094);
          if (D.37095 != 0) goto <D.37096>; else goto <D.37097>;
          <D.37096>:
          handle_gsharedvt_ldaddr (cfg);
          <D.37097>:
          <D.37093>:
          D.37099 = mono_arch_is_soft_float ();
          if (D.37099 != 0) goto <D.37100>; else goto <D.37101>;
          <D.37100>:
          D.37102 = var->type;
          D.37103 = D.37102 == 2;
          D.37104 = D.37102 == 4;
          D.37105 = D.37103 | D.37104;
          D.37106 = (int) D.37105;
          iftmp.251 = (_Bool) D.37106;
          goto <D.37107>;
          <D.37101>:
          D.37108 = var->type;
          iftmp.251 = D.37108 == 2;
          <D.37107>:
          if (iftmp.251 != 0) goto <D.37109>; else goto <D.37110>;
          <D.37109>:
          {
            struct MonoInst * var1;
            struct MonoInst * var2;

            D.37112 = var->dreg;
            D.37113 = D.37112 + 1;
            D.37114 = (unsigned int) D.37113;
            D.31601 = cfg->vreg_to_inst_len;
            if (D.37114 < D.31601) goto <D.37115>; else goto <D.37116>;
            <D.37115>:
            D.31604 = cfg->vreg_to_inst;
            D.37112 = var->dreg;
            D.37117 = (sizetype) D.37112;
            D.37118 = D.37117 + 1;
            D.37119 = D.37118 * 4;
            D.37120 = D.31604 + D.37119;
            iftmp.252 = *D.37120;
            goto <D.37121>;
            <D.37116>:
            iftmp.252 = 0B;
            <D.37121>:
            var1 = iftmp.252;
            D.37112 = var->dreg;
            D.37123 = D.37112 + 2;
            D.37124 = (unsigned int) D.37123;
            D.31601 = cfg->vreg_to_inst_len;
            if (D.37124 < D.31601) goto <D.37125>; else goto <D.37126>;
            <D.37125>:
            D.31604 = cfg->vreg_to_inst;
            D.37112 = var->dreg;
            D.37117 = (sizetype) D.37112;
            D.37127 = D.37117 + 2;
            D.37128 = D.37127 * 4;
            D.37129 = D.31604 + D.37128;
            iftmp.253 = *D.37129;
            goto <D.37130>;
            <D.37126>:
            iftmp.253 = 0B;
            <D.37130>:
            var2 = iftmp.253;
            D.37131 = var1 == 0B;
            D.37132 = (long int) D.37131;
            D.37133 = __builtin_expect (D.37132, 0);
            if (D.37133 != 0) goto <D.37134>; else goto <D.37135>;
            <D.37134>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10036, "var1");
            <D.37135>:
            D.37136 = var2 == 0B;
            D.37137 = (long int) D.37136;
            D.37138 = __builtin_expect (D.37137, 0);
            if (D.37138 != 0) goto <D.37139>; else goto <D.37140>;
            <D.37139>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10036, "var2");
            <D.37140>:
            D.37141 = var1->flags;
            D.37142 = D.37141 | 16;
            var1->flags = D.37142;
            D.37143 = var2->flags;
            D.37144 = D.37143 | 16;
            var2->flags = D.37144;
          }
          <D.37110>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.37145>; else goto <D.37146>;
          <D.37145>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = ins;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          ins->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = ins;
          goto <D.37147>;
          <D.37146>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = ins;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.37147>:
          *sp = ins;
        }
        <D.37070>:
        if (op == 124) goto <D.37148>; else goto <D.37149>;
        <D.37148>:
        D.37150 = is_magic_tls_access (field);
        if (D.37150 != 0) goto <D.37151>; else goto <D.37152>;
        <D.37151>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.37153>; else goto <D.37154>;
        <D.37153>:
        D.31371 = *ip;
        D.31372 = (int) D.31371;
        D.37155 = mono_opcode_name (D.31372);
        D.32188 = method->signature;
        D.32189 = D.32188->param_count;
        D.32190 = (int) D.32189;
        D.32191 = method->name;
        D.30426 = method->klass;
        D.32192 = D.30426->name;
        D.30426 = method->klass;
        D.32193 = D.30426->name_space;
        D.37156 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.32193, D.32192, D.32191, D.32190, D.37155, "method-to-ir.c", 10042);
        cfg->exception_message = D.37156;
        D.30569 = cfg->verbose_level;
        if (D.30569 > 1) goto <D.37157>; else goto <D.37158>;
        <D.37157>:
        D.32197 = cfg->exception_message;
        printf ("%s\n", D.32197);
        <D.37158>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.37154>:
        ins = *sp;
        sp.254 = sp;
        sp = sp.254 + 4;
        D.37160 = create_magic_tls_access (cfg, field, &cached_tls_addr, ins);
        *sp.254 = D.37160;
        goto <D.37161>;
        <D.37152>:
        D.31489 = *sp;
        D.32169 = D.31489->type;
        if (D.32169 == 6) goto <D.37162>; else goto <D.37163>;
        <D.37162>:
        {
          struct MonoInst * inst;

          D.30489 = cfg->mempool;
          inst = mono_mempool_alloc (D.30489, 48);
          inst->data.op[1].const_val = 0;
          D.37164 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.37164;
          inst->prev = 0B;
          D.37165 = inst->prev;
          inst->next = D.37165;
          inst->opcode = 323;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.37166 = inst->sreg3;
          inst->sreg2 = D.37166;
          D.37167 = inst->sreg2;
          inst->sreg1 = D.37167;
          D.30712 = cfg->ip;
          inst->cil_code = D.30712;
          inst->dreg = -1;
          D.31489 = *sp;
          D.31682 = D.31489->dreg;
          inst->sreg1 = D.31682;
          inst->data.op[1].const_val = 0;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.37168>; else goto <D.37169>;
          <D.37168>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = inst;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          inst->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          goto <D.37170>;
          <D.37169>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.37170>:
        }
        {
          struct MonoInst * inst;

          D.30489 = cfg->mempool;
          inst = mono_mempool_alloc (D.30489, 48);
          inst->data.op[1].const_val = 0;
          D.37171 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.37171;
          inst->prev = 0B;
          D.37172 = inst->prev;
          inst->next = D.37172;
          inst->opcode = 455;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.37173 = inst->sreg3;
          inst->sreg2 = D.37173;
          D.37174 = inst->sreg2;
          inst->sreg1 = D.37174;
          D.30712 = cfg->ip;
          inst->cil_code = D.30712;
          inst->data.op[1].p = "NullReferenceException";
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.37175>; else goto <D.37176>;
          <D.37175>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = inst;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          inst->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          goto <D.37177>;
          <D.37176>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.37177>:
        }
        <D.37163>:
        D.37178 = alloc_ireg_mp (cfg);
        dreg = (int) D.37178;
        klass.173 = klass;
        D.37179 = mini_is_gsharedvt_klass (cfg, klass.173);
        if (D.37179 != 0) goto <D.37180>; else goto <D.37181>;
        <D.37180>:
        {
          struct MonoInst * offset_ins;

          offset_ins = emit_get_gsharedvt_info (cfg, field, 15);
          D.30489 = cfg->mempool;
          ins = mono_mempool_alloc (D.30489, 48);
          ins->data.op[1].const_val = 0;
          D.30708 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.30708;
          ins->prev = 0B;
          D.30709 = ins->prev;
          ins->next = D.30709;
          ins->opcode = 569;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.30710 = ins->sreg3;
          ins->sreg2 = D.30710;
          D.30711 = ins->sreg2;
          ins->sreg1 = D.30711;
          D.30712 = cfg->ip;
          ins->cil_code = D.30712;
          ins->dreg = dreg;
          D.31489 = *sp;
          D.31682 = D.31489->dreg;
          ins->sreg1 = D.31682;
          D.37182 = offset_ins->dreg;
          ins->sreg2 = D.37182;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.37183>; else goto <D.37184>;
          <D.37183>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = ins;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          ins->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = ins;
          goto <D.37185>;
          <D.37184>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = ins;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.37185>:
        }
        goto <D.37186>;
        <D.37181>:
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        ins->opcode = 629;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        ins->dreg = dreg;
        D.31489 = *sp;
        D.31682 = D.31489->dreg;
        ins->sreg1 = D.31682;
        foffset.243 = (int) foffset;
        ins->data.op[1].const_val = foffset.243;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.37187>; else goto <D.37188>;
        <D.37187>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = ins;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        ins->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        goto <D.37189>;
        <D.37188>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.37189>:
        <D.37186>:
        D.36790 = field->type;
        D.37190 = mono_class_from_mono_type (D.36790);
        ins->klass = D.37190;
        ins->type = 5;
        sp.255 = sp;
        sp = sp.255 + 4;
        *sp.255 = ins;
        <D.37161>:
        goto <D.37192>;
        <D.37149>:
        {
          struct MonoInst * load;

          D.30476 = BIT_FIELD_REF <*cfg, 8, 3424>;
          D.31134 = D.30476 & 64;
          if (D.31134 != 0) goto <D.37193>; else goto <D.37194>;
          <D.37193>:
          {
            struct MonoInst * inst;

            D.30489 = cfg->mempool;
            inst = mono_mempool_alloc (D.30489, 48);
            inst->data.op[1].const_val = 0;
            D.37195 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.37195;
            inst->prev = 0B;
            D.37196 = inst->prev;
            inst->next = D.37196;
            inst->opcode = 323;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.37197 = inst->sreg3;
            inst->sreg2 = D.37197;
            D.37198 = inst->sreg2;
            inst->sreg1 = D.37198;
            D.30712 = cfg->ip;
            inst->cil_code = D.30712;
            inst->dreg = -1;
            D.31489 = *sp;
            D.31682 = D.31489->dreg;
            inst->sreg1 = D.31682;
            inst->data.op[1].const_val = 0;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.37199>; else goto <D.37200>;
            <D.37199>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = inst;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            inst->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            goto <D.37201>;
            <D.37200>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.37201>:
          }
          {
            struct MonoInst * inst;

            D.30489 = cfg->mempool;
            inst = mono_mempool_alloc (D.30489, 48);
            inst->data.op[1].const_val = 0;
            D.37202 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.37202;
            inst->prev = 0B;
            D.37203 = inst->prev;
            inst->next = D.37203;
            inst->opcode = 455;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.37204 = inst->sreg3;
            inst->sreg2 = D.37204;
            D.37205 = inst->sreg2;
            inst->sreg1 = D.37205;
            D.30712 = cfg->ip;
            inst->cil_code = D.30712;
            inst->data.op[1].p = "NullReferenceException";
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.37206>; else goto <D.37207>;
            <D.37206>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = inst;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            inst->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            goto <D.37208>;
            <D.37207>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.37208>:
          }
          goto <D.37209>;
          <D.37194>:
          <D.37209>:
          klass.173 = klass;
          D.37210 = mini_is_gsharedvt_klass (cfg, klass.173);
          if (D.37210 != 0) goto <D.37211>; else goto <D.37212>;
          <D.37211>:
          {
            struct MonoInst * offset_ins;

            offset_ins = emit_get_gsharedvt_info (cfg, field, 15);
            D.37213 = alloc_ireg_mp (cfg);
            dreg = (int) D.37213;
            D.30489 = cfg->mempool;
            ins = mono_mempool_alloc (D.30489, 48);
            ins->data.op[1].const_val = 0;
            D.30708 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.30708;
            ins->prev = 0B;
            D.30709 = ins->prev;
            ins->next = D.30709;
            ins->opcode = 569;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.30710 = ins->sreg3;
            ins->sreg2 = D.30710;
            D.30711 = ins->sreg2;
            ins->sreg1 = D.30711;
            D.30712 = cfg->ip;
            ins->cil_code = D.30712;
            ins->dreg = dreg;
            D.31489 = *sp;
            D.31682 = D.31489->dreg;
            ins->sreg1 = D.31682;
            D.37214 = offset_ins->dreg;
            ins->sreg2 = D.37214;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.37215>; else goto <D.37216>;
            <D.37215>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = ins;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            ins->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = ins;
            goto <D.37217>;
            <D.37216>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = ins;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.37217>:
            D.30489 = cfg->mempool;
            load = mono_mempool_alloc (D.30489, 48);
            load->data.op[1].const_val = 0;
            D.37218 = load->data.op[1].const_val;
            load->data.op[0].const_val = D.37218;
            load->prev = 0B;
            D.37219 = load->prev;
            load->next = D.37219;
            D.36790 = field->type;
            D.37220 = mono_type_to_load_membase (cfg, D.36790);
            D.37221 = (short unsigned int) D.37220;
            load->opcode = D.37221;
            load->flags = 0;
            load->type = 0;
            load->dreg = -1;
            load->sreg3 = -1;
            D.37222 = load->sreg3;
            load->sreg2 = D.37222;
            D.37223 = load->sreg2;
            load->sreg1 = D.37223;
            D.30712 = cfg->ip;
            load->cil_code = D.30712;
            load->dreg = 0;
            load->sreg1 = dreg;
            load->data.op[0].const_val = 0;
            load->type = 1;
            D.36790 = field->type;
            type_to_eval_stack_type (cfg, D.36790, load);
            D.37224 = load->type;
            D.37225 = (<unnamed type>) D.37224;
            D.37226 = alloc_dreg (cfg, D.37225);
            D.37227 = (int) D.37226;
            load->dreg = D.37227;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.37228>; else goto <D.37229>;
            <D.37228>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = load;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            load->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = load;
            goto <D.37230>;
            <D.37229>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = load;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.37230>:
          }
          goto <D.37231>;
          <D.37212>:
          D.30489 = cfg->mempool;
          load = mono_mempool_alloc (D.30489, 48);
          load->data.op[1].const_val = 0;
          D.37218 = load->data.op[1].const_val;
          load->data.op[0].const_val = D.37218;
          load->prev = 0B;
          D.37219 = load->prev;
          load->next = D.37219;
          D.36790 = field->type;
          D.37232 = mono_type_to_load_membase (cfg, D.36790);
          D.37233 = (short unsigned int) D.37232;
          load->opcode = D.37233;
          load->flags = 0;
          load->type = 0;
          load->dreg = -1;
          load->sreg3 = -1;
          D.37222 = load->sreg3;
          load->sreg2 = D.37222;
          D.37223 = load->sreg2;
          load->sreg1 = D.37223;
          D.30712 = cfg->ip;
          load->cil_code = D.30712;
          load->dreg = 0;
          D.31489 = *sp;
          D.31682 = D.31489->dreg;
          load->sreg1 = D.31682;
          foffset.243 = (int) foffset;
          load->data.op[0].const_val = foffset.243;
          load->type = 1;
          D.36790 = field->type;
          type_to_eval_stack_type (cfg, D.36790, load);
          D.37224 = load->type;
          D.37225 = (<unnamed type>) D.37224;
          D.37234 = alloc_dreg (cfg, D.37225);
          D.37235 = (int) D.37234;
          load->dreg = D.37235;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.37236>; else goto <D.37237>;
          <D.37236>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = load;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          load->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = load;
          goto <D.37238>;
          <D.37237>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = load;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.37238>:
          <D.37231>:
          D.37239 = load->flags;
          D.34902 = (unsigned char) ins_flag;
          D.37240 = D.37239 | D.34902;
          load->flags = D.37240;
          D.31489 = *sp;
          D.33287 = D.31489->opcode;
          if (D.33287 != 314) goto <D.37241>; else goto <D.37242>;
          <D.37241>:
          D.37239 = load->flags;
          D.37243 = D.37239 | 32;
          load->flags = D.37243;
          <D.37242>:
          sp.256 = sp;
          sp = sp.256 + 4;
          *sp.256 = load;
        }
        <D.37192>:
        <D.37068>:
        <D.36976>:
        if (is_instance != 0) goto <D.37245>; else goto <D.37246>;
        <D.37245>:
        ins_flag = 0;
        ip = ip + 5;
        goto <D.27380>;
        <D.37246>:
        klass.173 = klass;
        context_used = mini_class_check_context_used (cfg, klass.173);
        ftype = mono_field_get_type (field);
        D.37247 = ftype->attrs;
        D.37248 = (int) D.37247;
        D.37249 = D.37248 & 64;
        if (D.37249 != 0) goto <D.37250>; else goto <D.37251>;
        <D.37250>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.37252>; else goto <D.37253>;
        <D.37252>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.37254>; else goto <D.37255>;
        <D.37254>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.37255>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.37253>:
        D.37256 = mini_get_debug_options ();
        D.37257 = D.37256->break_on_unverified;
        if (D.37257 != 0) goto <D.37258>; else goto unverified;
        <D.37258>:
        __asm__ __volatile__("int $03");
        <D.37251>:
        if (context_used == 0) goto <D.37259>; else goto <D.37260>;
        <D.37259>:
        D.30881 = cfg->opt;
        D.30882 = D.30881 & 512;
        if (D.30882 == 0) goto <D.37261>; else goto <D.37262>;
        <D.37261>:
        klass.173 = klass;
        D.30513 = cfg->domain;
        mono_class_vtable (D.30513, klass.173);
        klass.173 = klass;
        if (klass.173 == 0B) goto <D.37263>; else goto <D.37265>;
        <D.37265>:
        klass.173 = klass;
        D.35265 = klass.173->exception_type;
        if (D.35265 != 0) goto <D.37263>; else goto <D.37264>;
        <D.37263>:
        klass.173 = klass;
        cfg->exception_ptr = klass.173;
        D.37266 = mini_get_debug_options ();
        D.37267 = D.37266->break_on_unverified;
        if (D.37267 != 0) goto <D.37268>; else goto load_error;
        <D.37268>:
        __asm__ __volatile__("int $03");
        <D.37264>:
        <D.37262>:
        <D.37260>:
        {
          int ret;

          D.30513 = cfg->domain;
          D.37269 = &D.30513->lock.mutex;
          ret = pthread_mutex_lock (D.37269);
          if (ret != 0) goto <D.37270>; else goto <D.37271>;
          <D.37270>:
          monoeg_g_log (0B, 16, "Bad call to mono_mutex_lock result %d", ret);
          <D.37271>:
          D.37272 = ret != 0;
          D.37273 = (long int) D.37272;
          D.37274 = __builtin_expect (D.37273, 0);
          if (D.37274 != 0) goto <D.37275>; else goto <D.37276>;
          <D.37275>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10119, "ret == 0");
          <D.37276>:
        }
        D.30513 = cfg->domain;
        D.37277 = D.30513->special_static_fields;
        if (D.37277 != 0B) goto <D.37278>; else goto <D.37279>;
        <D.37278>:
        D.30513 = cfg->domain;
        D.37277 = D.30513->special_static_fields;
        addr = monoeg_g_hash_table_lookup (D.37277, field);
        <D.37279>:
        {
          int ret;

          D.30513 = cfg->domain;
          D.37269 = &D.30513->lock.mutex;
          ret = pthread_mutex_unlock (D.37269);
          if (ret != 0) goto <D.37280>; else goto <D.37281>;
          <D.37280>:
          monoeg_g_log (0B, 16, "Bad call to mono_mutex_unlock result %d", ret);
          <D.37281>:
          D.37282 = ret != 0;
          D.37283 = (long int) D.37282;
          D.37284 = __builtin_expect (D.37283, 0);
          if (D.37284 != 0) goto <D.37285>; else goto <D.37286>;
          <D.37285>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10122, "ret == 0");
          <D.37286>:
        }
        is_special_static = mono_class_field_is_special_static (field);
        D.37287 = is_special_static != 0;
        addr.257 = (signed int) addr;
        D.37289 = addr.257 >= 0;
        D.37290 = D.37287 & D.37289;
        if (D.37290 != 0) goto <D.37291>; else goto <D.37292>;
        <D.37291>:
        thread_ins = mono_get_thread_intrinsic (cfg);
        goto <D.37293>;
        <D.37292>:
        thread_ins = 0B;
        <D.37293>:
        D.37287 = is_special_static != 0;
        addr.257 = (signed int) addr;
        D.37289 = addr.257 >= 0;
        D.37290 = D.37287 & D.37289;
        if (D.37290 != 0) goto <D.37296>; else goto <D.37294>;
        <D.37296>:
        if (thread_ins != 0B) goto <D.37297>; else goto <D.37294>;
        <D.37297>:
        D.30881 = cfg->opt;
        D.30882 = D.30881 & 512;
        if (D.30882 == 0) goto <D.37298>; else goto <D.37294>;
        <D.37298>:
        if (context_used == 0) goto <D.37299>; else goto <D.37294>;
        <D.37299>:
        {
          guint32 offset;
          int idx;
          int static_data_reg;
          int array_reg;
          int dreg;

          D.30637 = cfg->gsharedvt;
          if (D.30637 != 0) goto <D.37300>; else goto <D.37301>;
          <D.37300>:
          D.37302 = mono_opcode_name (op);
          D.32188 = method->signature;
          D.32189 = D.32188->param_count;
          D.32190 = (int) D.32189;
          D.32191 = method->name;
          D.30426 = method->klass;
          D.32192 = D.30426->name;
          D.30426 = method->klass;
          D.32193 = D.30426->name_space;
          D.37303 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.32193, D.32192, D.32191, D.32190, D.37302, "method-to-ir.c", 10141);
          cfg->exception_message = D.37303;
          D.30569 = cfg->verbose_level;
          if (D.30569 > 1) goto <D.37304>; else goto <D.37305>;
          <D.37304>:
          D.32197 = cfg->exception_message;
          printf ("%s\n", D.32197);
          <D.37305>:
          mono_cfg_set_exception (cfg, 11);
          goto exception_exit;
          <D.37301>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.37306>; else goto <D.37307>;
          <D.37306>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = thread_ins;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          thread_ins->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = thread_ins;
          goto <D.37308>;
          <D.37307>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = thread_ins;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.37308>:
          D.37309 = alloc_ireg (cfg);
          static_data_reg = (int) D.37309;
          {
            struct MonoInst * inst;

            D.30489 = cfg->mempool;
            inst = mono_mempool_alloc (D.30489, 48);
            inst->data.op[1].const_val = 0;
            D.37310 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.37310;
            inst->prev = 0B;
            D.37311 = inst->prev;
            inst->next = D.37311;
            inst->opcode = 391;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.37312 = inst->sreg3;
            inst->sreg2 = D.37312;
            D.37313 = inst->sreg2;
            inst->sreg1 = D.37313;
            D.30712 = cfg->ip;
            inst->cil_code = D.30712;
            inst->dreg = static_data_reg;
            D.37314 = thread_ins->dreg;
            inst->sreg1 = D.37314;
            inst->data.op[0].const_val = 56;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.37315>; else goto <D.37316>;
            <D.37315>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = inst;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            inst->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            goto <D.37317>;
            <D.37316>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.37317>:
          }
          D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.30884 = D.30883 & 64;
          if (D.30884 != 0) goto <D.37318>; else goto <D.37319>;
          <D.37318>:
          {
            int offset_reg;
            int offset2_reg;
            int idx_reg;

            D.30489 = cfg->mempool;
            ins = mono_mempool_alloc (D.30489, 48);
            ins->data.op[1].const_val = 0;
            D.30708 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.30708;
            ins->prev = 0B;
            D.30709 = ins->prev;
            ins->next = D.30709;
            D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.30884 = D.30883 & 64;
            if (D.30884 != 0) goto <D.37321>; else goto <D.37322>;
            <D.37321>:
            iftmp.258 = 738;
            goto <D.37323>;
            <D.37322>:
            iftmp.258 = 362;
            <D.37323>:
            ins->opcode = iftmp.258;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.30710 = ins->sreg3;
            ins->sreg2 = D.30710;
            D.30711 = ins->sreg2;
            ins->sreg1 = D.30711;
            D.30712 = cfg->ip;
            ins->cil_code = D.30712;
            D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.30884 = D.30883 & 64;
            if (D.30884 != 0) goto <D.37324>; else goto <D.37325>;
            <D.37324>:
            {
              struct MonoInst * group;
              struct MonoInst * got_loc;

              got_loc = mono_get_got_var (cfg);
              D.30489 = cfg->mempool;
              group = mono_mempool_alloc (D.30489, 48);
              group->data.op[1].const_val = 0;
              D.37326 = group->data.op[1].const_val;
              group->data.op[0].const_val = D.37326;
              group->prev = 0B;
              D.37327 = group->prev;
              group->next = D.37327;
              group->opcode = 737;
              group->flags = 0;
              group->type = 0;
              group->dreg = -1;
              group->sreg3 = -1;
              D.37328 = group->sreg3;
              group->sreg2 = D.37328;
              D.37329 = group->sreg2;
              group->sreg1 = D.37329;
              D.30712 = cfg->ip;
              group->cil_code = D.30712;
              group->data.op[0].src = field;
              group->data.op[1].src = 16B;
              D.37330 = got_loc->dreg;
              ins->sreg1 = D.37330;
              ins->data.op[1].p = group;
            }
            goto <D.37331>;
            <D.37325>:
            ins->data.op[0].p = field;
            ins->data.op[1].src = 16B;
            <D.37331>:
            ins->type = 3;
            D.37332 = alloc_dreg (cfg, 3);
            D.37333 = (int) D.37332;
            ins->dreg = D.37333;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.37334>; else goto <D.37335>;
            <D.37334>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = ins;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            ins->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = ins;
            goto <D.37336>;
            <D.37335>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = ins;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.37336>:
            offset_reg = ins->dreg;
            {
              struct MonoInst * inst;

              D.30489 = cfg->mempool;
              inst = mono_mempool_alloc (D.30489, 48);
              inst->data.op[1].const_val = 0;
              D.37337 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.37337;
              inst->prev = 0B;
              D.37338 = inst->prev;
              inst->next = D.37338;
              inst->opcode = 636;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.37339 = inst->sreg3;
              inst->sreg2 = D.37339;
              D.37340 = inst->sreg2;
              inst->sreg1 = D.37340;
              D.30712 = cfg->ip;
              inst->cil_code = D.30712;
              inst->dreg = offset_reg;
              inst->sreg1 = offset_reg;
              inst->data.op[1].const_val = 2147483647;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.37341>; else goto <D.37342>;
              <D.37341>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = inst;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              inst->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              goto <D.37343>;
              <D.37342>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.37343>:
            }
            D.37344 = alloc_ireg (cfg);
            idx_reg = (int) D.37344;
            {
              struct MonoInst * inst;

              D.30489 = cfg->mempool;
              inst = mono_mempool_alloc (D.30489, 48);
              inst->data.op[1].const_val = 0;
              D.37345 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.37345;
              inst->prev = 0B;
              D.37346 = inst->prev;
              inst->next = D.37346;
              inst->opcode = 640;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.37347 = inst->sreg3;
              inst->sreg2 = D.37347;
              D.37348 = inst->sreg2;
              inst->sreg1 = D.37348;
              D.30712 = cfg->ip;
              inst->cil_code = D.30712;
              inst->dreg = idx_reg;
              inst->sreg1 = offset_reg;
              inst->data.op[1].const_val = 24;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.37349>; else goto <D.37350>;
              <D.37349>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = inst;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              inst->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              goto <D.37351>;
              <D.37350>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.37351>:
            }
            {
              struct MonoInst * inst;

              D.30489 = cfg->mempool;
              inst = mono_mempool_alloc (D.30489, 48);
              inst->data.op[1].const_val = 0;
              D.37352 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.37352;
              inst->prev = 0B;
              D.37353 = inst->prev;
              inst->next = D.37353;
              inst->opcode = 630;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.37354 = inst->sreg3;
              inst->sreg2 = D.37354;
              D.37355 = inst->sreg2;
              inst->sreg1 = D.37355;
              D.30712 = cfg->ip;
              inst->cil_code = D.30712;
              inst->dreg = idx_reg;
              inst->sreg1 = idx_reg;
              inst->data.op[1].const_val = 1;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.37356>; else goto <D.37357>;
              <D.37356>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = inst;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              inst->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              goto <D.37358>;
              <D.37357>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.37358>:
            }
            {
              struct MonoInst * inst;

              D.30489 = cfg->mempool;
              inst = mono_mempool_alloc (D.30489, 48);
              inst->data.op[1].const_val = 0;
              D.37359 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.37359;
              inst->prev = 0B;
              D.37360 = inst->prev;
              inst->next = D.37360;
              inst->opcode = 639;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.37361 = inst->sreg3;
              inst->sreg2 = D.37361;
              D.37362 = inst->sreg2;
              inst->sreg1 = D.37362;
              D.30712 = cfg->ip;
              inst->cil_code = D.30712;
              inst->dreg = idx_reg;
              inst->sreg1 = idx_reg;
              inst->data.op[1].const_val = 2;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.37363>; else goto <D.37364>;
              <D.37363>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = inst;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              inst->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              goto <D.37365>;
              <D.37364>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.37365>:
            }
            {
              struct MonoInst * inst;

              D.30489 = cfg->mempool;
              inst = mono_mempool_alloc (D.30489, 48);
              inst->data.op[1].const_val = 0;
              D.37366 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.37366;
              inst->prev = 0B;
              D.37367 = inst->prev;
              inst->next = D.37367;
              inst->opcode = 569;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.37368 = inst->sreg3;
              inst->sreg2 = D.37368;
              D.37369 = inst->sreg2;
              inst->sreg1 = D.37369;
              D.30712 = cfg->ip;
              inst->cil_code = D.30712;
              inst->dreg = static_data_reg;
              inst->sreg1 = static_data_reg;
              inst->sreg2 = idx_reg;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.37370>; else goto <D.37371>;
              <D.37370>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = inst;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              inst->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              goto <D.37372>;
              <D.37371>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.37372>:
            }
            D.37373 = alloc_ireg (cfg);
            array_reg = (int) D.37373;
            {
              struct MonoInst * inst;

              D.30489 = cfg->mempool;
              inst = mono_mempool_alloc (D.30489, 48);
              inst->data.op[1].const_val = 0;
              D.37374 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.37374;
              inst->prev = 0B;
              D.37375 = inst->prev;
              inst->next = D.37375;
              inst->opcode = 391;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.37376 = inst->sreg3;
              inst->sreg2 = D.37376;
              D.37377 = inst->sreg2;
              inst->sreg1 = D.37377;
              D.30712 = cfg->ip;
              inst->cil_code = D.30712;
              inst->dreg = array_reg;
              inst->sreg1 = static_data_reg;
              inst->data.op[0].const_val = 0;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.37378>; else goto <D.37379>;
              <D.37378>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = inst;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              inst->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              goto <D.37380>;
              <D.37379>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.37380>:
            }
            D.37381 = alloc_ireg (cfg);
            offset2_reg = (int) D.37381;
            {
              struct MonoInst * inst;

              D.30489 = cfg->mempool;
              inst = mono_mempool_alloc (D.30489, 48);
              inst->data.op[1].const_val = 0;
              D.37382 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.37382;
              inst->prev = 0B;
              D.37383 = inst->prev;
              inst->next = D.37383;
              inst->opcode = 636;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.37384 = inst->sreg3;
              inst->sreg2 = D.37384;
              D.37385 = inst->sreg2;
              inst->sreg1 = D.37385;
              D.30712 = cfg->ip;
              inst->cil_code = D.30712;
              inst->dreg = offset2_reg;
              inst->sreg1 = offset_reg;
              inst->data.op[1].const_val = 16777215;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.37386>; else goto <D.37387>;
              <D.37386>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = inst;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              inst->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              goto <D.37388>;
              <D.37387>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.37388>:
            }
            D.37389 = alloc_ireg (cfg);
            dreg = (int) D.37389;
            D.30489 = cfg->mempool;
            ins = mono_mempool_alloc (D.30489, 48);
            ins->data.op[1].const_val = 0;
            D.30708 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.30708;
            ins->prev = 0B;
            D.30709 = ins->prev;
            ins->next = D.30709;
            ins->opcode = 569;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.30710 = ins->sreg3;
            ins->sreg2 = D.30710;
            D.30711 = ins->sreg2;
            ins->sreg1 = D.30711;
            D.30712 = cfg->ip;
            ins->cil_code = D.30712;
            ins->dreg = dreg;
            ins->sreg1 = array_reg;
            ins->sreg2 = offset2_reg;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.37390>; else goto <D.37391>;
            <D.37390>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = ins;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            ins->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = ins;
            goto <D.37392>;
            <D.37391>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = ins;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.37392>:
          }
          goto <D.37393>;
          <D.37319>:
          addr.259 = (unsigned int) addr;
          offset = addr.259 & 2147483647;
          D.37395 = offset >> 24;
          D.37396 = D.37395 + 4294967295;
          idx = (int) D.37396;
          D.37397 = alloc_ireg (cfg);
          array_reg = (int) D.37397;
          {
            struct MonoInst * inst;

            D.30489 = cfg->mempool;
            inst = mono_mempool_alloc (D.30489, 48);
            inst->data.op[1].const_val = 0;
            D.37398 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.37398;
            inst->prev = 0B;
            D.37399 = inst->prev;
            inst->next = D.37399;
            inst->opcode = 391;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.37400 = inst->sreg3;
            inst->sreg2 = D.37400;
            D.37401 = inst->sreg2;
            inst->sreg1 = D.37401;
            D.30712 = cfg->ip;
            inst->cil_code = D.30712;
            inst->dreg = array_reg;
            inst->sreg1 = static_data_reg;
            idx.260 = (unsigned int) idx;
            D.37403 = idx.260 * 4;
            D.37404 = (int) D.37403;
            inst->data.op[0].const_val = D.37404;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.37405>; else goto <D.37406>;
            <D.37405>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = inst;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            inst->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            goto <D.37407>;
            <D.37406>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.37407>:
          }
          D.37408 = alloc_ireg (cfg);
          dreg = (int) D.37408;
          D.30489 = cfg->mempool;
          ins = mono_mempool_alloc (D.30489, 48);
          ins->data.op[1].const_val = 0;
          D.30708 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.30708;
          ins->prev = 0B;
          D.30709 = ins->prev;
          ins->next = D.30709;
          ins->opcode = 433;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.30710 = ins->sreg3;
          ins->sreg2 = D.30710;
          D.30711 = ins->sreg2;
          ins->sreg1 = D.30711;
          D.30712 = cfg->ip;
          ins->cil_code = D.30712;
          ins->dreg = dreg;
          ins->sreg1 = array_reg;
          offset.261 = (int) offset;
          D.37410 = offset.261 & 16777215;
          ins->data.op[1].const_val = D.37410;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.37411>; else goto <D.37412>;
          <D.37411>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = ins;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          ins->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = ins;
          goto <D.37413>;
          <D.37412>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = ins;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.37413>:
          <D.37393>:
        }
        goto <D.37295>;
        <D.37294>:
        D.30881 = cfg->opt;
        D.30882 = D.30881 & 512;
        if (D.30882 != 0) goto <D.37414>; else goto <D.37418>;
        <D.37418>:
        D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.30884 = D.30883 & 64;
        if (D.30884 != 0) goto <D.37419>; else goto <D.37415>;
        <D.37419>:
        if (is_special_static != 0) goto <D.37414>; else goto <D.37415>;
        <D.37415>:
        D.33575 = context_used != 0;
        D.37287 = is_special_static != 0;
        D.37420 = D.33575 & D.37287;
        if (D.37420 != 0) goto <D.37414>; else goto <D.37416>;
        <D.37414>:
        {
          struct MonoInst * iargs[2];

          try
            {
              klass.238 = field->parent;
              D.37421 = klass.238 == 0B;
              D.37422 = (long int) D.37421;
              D.37423 = __builtin_expect (D.37422, 0);
              if (D.37423 != 0) goto <D.37424>; else goto <D.37425>;
              <D.37424>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10182, "field->parent");
              <D.37425>:
              D.30881 = cfg->opt;
              D.30882 = D.30881 & 512;
              if (D.30882 != 0) goto <D.37426>; else goto <D.37429>;
              <D.37429>:
              D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.30884 = D.30883 & 64;
              if (D.30884 != 0) goto <D.37426>; else goto <D.37427>;
              <D.37426>:
              {
                struct MonoInst * __domain_var;

                __domain_var = mono_get_domainvar (cfg);
                D.30489 = cfg->mempool;
                D.37430 = mono_mempool_alloc (D.30489, 48);
                iargs[0] = D.37430;
                D.37431 = iargs[0];
                D.37431 = iargs[0];
                D.37431->data.op[1].const_val = 0;
                D.37432 = D.37431->data.op[1].const_val;
                D.37431->data.op[0].const_val = D.37432;
                D.37431 = iargs[0];
                D.37431 = iargs[0];
                D.37431->prev = 0B;
                D.37433 = D.37431->prev;
                D.37431->next = D.37433;
                D.37431 = iargs[0];
                D.37431->opcode = 428;
                D.37431 = iargs[0];
                D.37431->flags = 0;
                D.37431 = iargs[0];
                D.37431->type = 0;
                D.37431 = iargs[0];
                D.37431->dreg = -1;
                D.37431 = iargs[0];
                D.37431 = iargs[0];
                D.37431 = iargs[0];
                D.37431->sreg3 = -1;
                D.37434 = D.37431->sreg3;
                D.37431->sreg2 = D.37434;
                D.37435 = D.37431->sreg2;
                D.37431->sreg1 = D.37435;
                D.37431 = iargs[0];
                D.30712 = cfg->ip;
                D.37431->cil_code = D.30712;
                D.37431 = iargs[0];
                D.31239 = cfg->varinfo;
                D.37436 = __domain_var->data.op[0].const_val;
                D.37437 = (unsigned int) D.37436;
                D.37438 = D.37437 * 4;
                D.37439 = D.31239 + D.37438;
                D.37440 = *D.37439;
                D.37441 = D.37440->data.op[1].vtype;
                D.37442 = mono_type_to_regmove (cfg, D.37441);
                D.37443 = (short unsigned int) D.37442;
                D.37431->opcode = D.37443;
                D.37431 = iargs[0];
                D.31239 = cfg->varinfo;
                D.37436 = __domain_var->data.op[0].const_val;
                D.37437 = (unsigned int) D.37436;
                D.37438 = D.37437 * 4;
                D.37439 = D.31239 + D.37438;
                D.37440 = *D.37439;
                D.37441 = D.37440->data.op[1].vtype;
                type_to_eval_stack_type (cfg, D.37441, D.37431);
                D.37431 = iargs[0];
                D.31239 = cfg->varinfo;
                D.37436 = __domain_var->data.op[0].const_val;
                D.37437 = (unsigned int) D.37436;
                D.37438 = D.37437 * 4;
                D.37439 = D.31239 + D.37438;
                D.37440 = *D.37439;
                D.37444 = D.37440->klass;
                D.37431->klass = D.37444;
                D.37431 = iargs[0];
                D.31239 = cfg->varinfo;
                D.37436 = __domain_var->data.op[0].const_val;
                D.37437 = (unsigned int) D.37436;
                D.37438 = D.37437 * 4;
                D.37439 = D.31239 + D.37438;
                D.37440 = *D.37439;
                D.37445 = D.37440->dreg;
                D.37431->sreg1 = D.37445;
                D.37431 = iargs[0];
                D.37431 = iargs[0];
                D.37446 = D.37431->type;
                D.37447 = (<unnamed type>) D.37446;
                D.37448 = alloc_dreg (cfg, D.37447);
                D.37449 = (int) D.37448;
                D.37431->dreg = D.37449;
                D.37431 = iargs[0];
                D.37450 = D.37431->opcode;
                if (D.37450 == 431) goto <D.37451>; else goto <D.37452>;
                <D.37451>:
                D.37431 = iargs[0];
                D.31239 = cfg->varinfo;
                D.37436 = __domain_var->data.op[0].const_val;
                D.37437 = (unsigned int) D.37436;
                D.37438 = D.37437 * 4;
                D.37439 = D.31239 + D.37438;
                D.37440 = *D.37439;
                D.37441 = D.37440->data.op[1].vtype;
                D.37453 = mono_class_from_mono_type (D.37441);
                D.37431->klass = D.37453;
                <D.37452>:
              }
              goto <D.37428>;
              <D.37427>:
              D.30489 = cfg->mempool;
              D.37454 = mono_mempool_alloc (D.30489, 48);
              iargs[0] = D.37454;
              D.37431 = iargs[0];
              D.37431 = iargs[0];
              D.37431->data.op[1].const_val = 0;
              D.37432 = D.37431->data.op[1].const_val;
              D.37431->data.op[0].const_val = D.37432;
              D.37431 = iargs[0];
              D.37431 = iargs[0];
              D.37431->prev = 0B;
              D.37433 = D.37431->prev;
              D.37431->next = D.37433;
              D.37431 = iargs[0];
              D.37431->opcode = 362;
              D.37431 = iargs[0];
              D.37431->flags = 0;
              D.37431 = iargs[0];
              D.37431->type = 0;
              D.37431 = iargs[0];
              D.37431->dreg = -1;
              D.37431 = iargs[0];
              D.37431 = iargs[0];
              D.37431 = iargs[0];
              D.37431->sreg3 = -1;
              D.37434 = D.37431->sreg3;
              D.37431->sreg2 = D.37434;
              D.37435 = D.37431->sreg2;
              D.37431->sreg1 = D.37435;
              D.37431 = iargs[0];
              D.30712 = cfg->ip;
              D.37431->cil_code = D.30712;
              D.37431 = iargs[0];
              D.30513 = cfg->domain;
              D.37431->data.op[0].p = D.30513;
              D.37431 = iargs[0];
              D.37431->type = 3;
              D.37431 = iargs[0];
              D.37455 = alloc_dreg (cfg, 3);
              D.37456 = (int) D.37455;
              D.37431->dreg = D.37456;
              <D.37428>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.37457>; else goto <D.37458>;
              <D.37457>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.37431 = iargs[0];
              D.30741->next = D.37431;
              D.37431 = iargs[0];
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.37431->prev = D.30741;
              bblock.127 = cfg->cbb;
              D.37431 = iargs[0];
              bblock.127->last_ins = D.37431;
              goto <D.37459>;
              <D.37458>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              D.37431 = iargs[0];
              bblock.127->last_ins = D.37431;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.37459>:
              if (context_used != 0) goto <D.37460>; else goto <D.37461>;
              <D.37460>:
              D.37462 = emit_get_rgctx_field (cfg, context_used, field, 7);
              iargs[1] = D.37462;
              goto <D.37463>;
              <D.37461>:
              D.30489 = cfg->mempool;
              D.37464 = mono_mempool_alloc (D.30489, 48);
              iargs[1] = D.37464;
              D.37465 = iargs[1];
              D.37465 = iargs[1];
              D.37465->data.op[1].const_val = 0;
              D.37466 = D.37465->data.op[1].const_val;
              D.37465->data.op[0].const_val = D.37466;
              D.37465 = iargs[1];
              D.37465 = iargs[1];
              D.37465->prev = 0B;
              D.37467 = D.37465->prev;
              D.37465->next = D.37467;
              D.37465 = iargs[1];
              D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.30884 = D.30883 & 64;
              if (D.30884 != 0) goto <D.37469>; else goto <D.37470>;
              <D.37469>:
              iftmp.262 = 738;
              goto <D.37471>;
              <D.37470>:
              iftmp.262 = 362;
              <D.37471>:
              D.37465->opcode = iftmp.262;
              D.37465 = iargs[1];
              D.37465->flags = 0;
              D.37465 = iargs[1];
              D.37465->type = 0;
              D.37465 = iargs[1];
              D.37465->dreg = -1;
              D.37465 = iargs[1];
              D.37465 = iargs[1];
              D.37465 = iargs[1];
              D.37465->sreg3 = -1;
              D.37472 = D.37465->sreg3;
              D.37465->sreg2 = D.37472;
              D.37473 = D.37465->sreg2;
              D.37465->sreg1 = D.37473;
              D.37465 = iargs[1];
              D.30712 = cfg->ip;
              D.37465->cil_code = D.30712;
              D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.30884 = D.30883 & 64;
              if (D.30884 != 0) goto <D.37474>; else goto <D.37475>;
              <D.37474>:
              {
                struct MonoInst * group;
                struct MonoInst * got_loc;

                got_loc = mono_get_got_var (cfg);
                D.30489 = cfg->mempool;
                group = mono_mempool_alloc (D.30489, 48);
                group->data.op[1].const_val = 0;
                D.37476 = group->data.op[1].const_val;
                group->data.op[0].const_val = D.37476;
                group->prev = 0B;
                D.37477 = group->prev;
                group->next = D.37477;
                group->opcode = 737;
                group->flags = 0;
                group->type = 0;
                group->dreg = -1;
                group->sreg3 = -1;
                D.37478 = group->sreg3;
                group->sreg2 = D.37478;
                D.37479 = group->sreg2;
                group->sreg1 = D.37479;
                D.30712 = cfg->ip;
                group->cil_code = D.30712;
                group->data.op[0].src = field;
                group->data.op[1].src = 13B;
                D.37465 = iargs[1];
                D.37480 = got_loc->dreg;
                D.37465->sreg1 = D.37480;
                D.37465 = iargs[1];
                D.37465->data.op[1].p = group;
              }
              goto <D.37481>;
              <D.37475>:
              D.37465 = iargs[1];
              D.37465->data.op[0].p = field;
              D.37465 = iargs[1];
              D.37465->data.op[1].src = 13B;
              <D.37481>:
              D.37465 = iargs[1];
              D.37465->type = 3;
              D.37465 = iargs[1];
              D.37482 = alloc_dreg (cfg, 3);
              D.37483 = (int) D.37482;
              D.37465->dreg = D.37483;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.37484>; else goto <D.37485>;
              <D.37484>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.37465 = iargs[1];
              D.30741->next = D.37465;
              D.37465 = iargs[1];
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.37465->prev = D.30741;
              bblock.127 = cfg->cbb;
              D.37465 = iargs[1];
              bblock.127->last_ins = D.37465;
              goto <D.37486>;
              <D.37485>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              D.37465 = iargs[1];
              bblock.127->last_ins = D.37465;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.37486>:
              <D.37463>:
              ins = mono_emit_jit_icall (cfg, mono_class_static_field_address, &iargs);
            }
          finally
            {
              iargs = {CLOBBER};
            }
        }
        goto <D.37417>;
        <D.37416>:
        if (context_used != 0) goto <D.37487>; else goto <D.37488>;
        <D.37487>:
        {
          struct MonoInst * static_data;

          klass.173 = klass;
          D.37489 = mono_class_needs_cctor_run (klass.173, method);
          if (D.37489 != 0) goto <D.37490>; else goto <D.37491>;
          <D.37490>:
          klass.173 = klass;
          emit_generic_class_init (cfg, klass.173);
          <D.37491>:
          klass.173 = klass;
          static_data = emit_get_rgctx_klass (cfg, context_used, klass.173, 0);
          klass.173 = klass;
          D.37492 = mini_is_gsharedvt_klass (cfg, klass.173);
          if (D.37492 != 0) goto <D.37493>; else goto <D.37494>;
          <D.37493>:
          {
            struct MonoInst * offset_ins;

            offset_ins = emit_get_rgctx_field (cfg, context_used, field, 15);
            D.37495 = alloc_ireg_mp (cfg);
            dreg = (int) D.37495;
            D.30489 = cfg->mempool;
            ins = mono_mempool_alloc (D.30489, 48);
            ins->data.op[1].const_val = 0;
            D.30708 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.30708;
            ins->prev = 0B;
            D.30709 = ins->prev;
            ins->next = D.30709;
            ins->opcode = 569;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.30710 = ins->sreg3;
            ins->sreg2 = D.30710;
            D.30711 = ins->sreg2;
            ins->sreg1 = D.30711;
            D.30712 = cfg->ip;
            ins->cil_code = D.30712;
            ins->dreg = dreg;
            D.37496 = static_data->dreg;
            ins->sreg1 = D.37496;
            D.37497 = offset_ins->dreg;
            ins->sreg2 = D.37497;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.37498>; else goto <D.37499>;
            <D.37498>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = ins;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            ins->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = ins;
            goto <D.37500>;
            <D.37499>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = ins;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.37500>:
          }
          goto <D.37501>;
          <D.37494>:
          D.36801 = field->offset;
          if (D.36801 == 0) goto <D.37502>; else goto <D.37503>;
          <D.37502>:
          ins = static_data;
          goto <D.37504>;
          <D.37503>:
          {
            int addr_reg;

            D.37505 = mono_alloc_preg (cfg);
            addr_reg = (int) D.37505;
            D.30489 = cfg->mempool;
            ins = mono_mempool_alloc (D.30489, 48);
            ins->data.op[1].const_val = 0;
            D.30708 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.30708;
            ins->prev = 0B;
            D.30709 = ins->prev;
            ins->next = D.30709;
            ins->opcode = 629;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.30710 = ins->sreg3;
            ins->sreg2 = D.30710;
            D.30711 = ins->sreg2;
            ins->sreg1 = D.30711;
            D.30712 = cfg->ip;
            ins->cil_code = D.30712;
            ins->dreg = addr_reg;
            D.37496 = static_data->dreg;
            ins->sreg1 = D.37496;
            D.36801 = field->offset;
            ins->data.op[1].const_val = D.36801;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.37506>; else goto <D.37507>;
            <D.37506>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = ins;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            ins->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = ins;
            goto <D.37508>;
            <D.37507>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = ins;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.37508>:
          }
          <D.37504>:
          <D.37501>:
        }
        goto <D.37509>;
        <D.37488>:
        D.30881 = cfg->opt;
        D.30882 = D.30881 & 512;
        if (D.30882 != 0) goto <D.37510>; else goto <D.37513>;
        <D.37513>:
        D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.30884 = D.30883 & 64;
        if (D.30884 != 0) goto <D.37514>; else goto <D.37511>;
        <D.37514>:
        if (addr != 0B) goto <D.37510>; else goto <D.37511>;
        <D.37510>:
        {
          struct MonoInst * iargs[2];

          try
            {
              klass.238 = field->parent;
              D.37421 = klass.238 == 0B;
              D.37422 = (long int) D.37421;
              D.37423 = __builtin_expect (D.37422, 0);
              if (D.37423 != 0) goto <D.37515>; else goto <D.37516>;
              <D.37515>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10226, "field->parent");
              <D.37516>:
              D.30881 = cfg->opt;
              D.30882 = D.30881 & 512;
              if (D.30882 != 0) goto <D.37517>; else goto <D.37520>;
              <D.37520>:
              D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.30884 = D.30883 & 64;
              if (D.30884 != 0) goto <D.37517>; else goto <D.37518>;
              <D.37517>:
              {
                struct MonoInst * __domain_var;

                __domain_var = mono_get_domainvar (cfg);
                D.30489 = cfg->mempool;
                D.37521 = mono_mempool_alloc (D.30489, 48);
                iargs[0] = D.37521;
                D.37522 = iargs[0];
                D.37522 = iargs[0];
                D.37522->data.op[1].const_val = 0;
                D.37523 = D.37522->data.op[1].const_val;
                D.37522->data.op[0].const_val = D.37523;
                D.37522 = iargs[0];
                D.37522 = iargs[0];
                D.37522->prev = 0B;
                D.37524 = D.37522->prev;
                D.37522->next = D.37524;
                D.37522 = iargs[0];
                D.37522->opcode = 428;
                D.37522 = iargs[0];
                D.37522->flags = 0;
                D.37522 = iargs[0];
                D.37522->type = 0;
                D.37522 = iargs[0];
                D.37522->dreg = -1;
                D.37522 = iargs[0];
                D.37522 = iargs[0];
                D.37522 = iargs[0];
                D.37522->sreg3 = -1;
                D.37525 = D.37522->sreg3;
                D.37522->sreg2 = D.37525;
                D.37526 = D.37522->sreg2;
                D.37522->sreg1 = D.37526;
                D.37522 = iargs[0];
                D.30712 = cfg->ip;
                D.37522->cil_code = D.30712;
                D.37522 = iargs[0];
                D.31239 = cfg->varinfo;
                D.37527 = __domain_var->data.op[0].const_val;
                D.37528 = (unsigned int) D.37527;
                D.37529 = D.37528 * 4;
                D.37530 = D.31239 + D.37529;
                D.37531 = *D.37530;
                D.37532 = D.37531->data.op[1].vtype;
                D.37533 = mono_type_to_regmove (cfg, D.37532);
                D.37534 = (short unsigned int) D.37533;
                D.37522->opcode = D.37534;
                D.37522 = iargs[0];
                D.31239 = cfg->varinfo;
                D.37527 = __domain_var->data.op[0].const_val;
                D.37528 = (unsigned int) D.37527;
                D.37529 = D.37528 * 4;
                D.37530 = D.31239 + D.37529;
                D.37531 = *D.37530;
                D.37532 = D.37531->data.op[1].vtype;
                type_to_eval_stack_type (cfg, D.37532, D.37522);
                D.37522 = iargs[0];
                D.31239 = cfg->varinfo;
                D.37527 = __domain_var->data.op[0].const_val;
                D.37528 = (unsigned int) D.37527;
                D.37529 = D.37528 * 4;
                D.37530 = D.31239 + D.37529;
                D.37531 = *D.37530;
                D.37535 = D.37531->klass;
                D.37522->klass = D.37535;
                D.37522 = iargs[0];
                D.31239 = cfg->varinfo;
                D.37527 = __domain_var->data.op[0].const_val;
                D.37528 = (unsigned int) D.37527;
                D.37529 = D.37528 * 4;
                D.37530 = D.31239 + D.37529;
                D.37531 = *D.37530;
                D.37536 = D.37531->dreg;
                D.37522->sreg1 = D.37536;
                D.37522 = iargs[0];
                D.37522 = iargs[0];
                D.37537 = D.37522->type;
                D.37538 = (<unnamed type>) D.37537;
                D.37539 = alloc_dreg (cfg, D.37538);
                D.37540 = (int) D.37539;
                D.37522->dreg = D.37540;
                D.37522 = iargs[0];
                D.37541 = D.37522->opcode;
                if (D.37541 == 431) goto <D.37542>; else goto <D.37543>;
                <D.37542>:
                D.37522 = iargs[0];
                D.31239 = cfg->varinfo;
                D.37527 = __domain_var->data.op[0].const_val;
                D.37528 = (unsigned int) D.37527;
                D.37529 = D.37528 * 4;
                D.37530 = D.31239 + D.37529;
                D.37531 = *D.37530;
                D.37532 = D.37531->data.op[1].vtype;
                D.37544 = mono_class_from_mono_type (D.37532);
                D.37522->klass = D.37544;
                <D.37543>:
              }
              goto <D.37519>;
              <D.37518>:
              D.30489 = cfg->mempool;
              D.37545 = mono_mempool_alloc (D.30489, 48);
              iargs[0] = D.37545;
              D.37522 = iargs[0];
              D.37522 = iargs[0];
              D.37522->data.op[1].const_val = 0;
              D.37523 = D.37522->data.op[1].const_val;
              D.37522->data.op[0].const_val = D.37523;
              D.37522 = iargs[0];
              D.37522 = iargs[0];
              D.37522->prev = 0B;
              D.37524 = D.37522->prev;
              D.37522->next = D.37524;
              D.37522 = iargs[0];
              D.37522->opcode = 362;
              D.37522 = iargs[0];
              D.37522->flags = 0;
              D.37522 = iargs[0];
              D.37522->type = 0;
              D.37522 = iargs[0];
              D.37522->dreg = -1;
              D.37522 = iargs[0];
              D.37522 = iargs[0];
              D.37522 = iargs[0];
              D.37522->sreg3 = -1;
              D.37525 = D.37522->sreg3;
              D.37522->sreg2 = D.37525;
              D.37526 = D.37522->sreg2;
              D.37522->sreg1 = D.37526;
              D.37522 = iargs[0];
              D.30712 = cfg->ip;
              D.37522->cil_code = D.30712;
              D.37522 = iargs[0];
              D.30513 = cfg->domain;
              D.37522->data.op[0].p = D.30513;
              D.37522 = iargs[0];
              D.37522->type = 3;
              D.37522 = iargs[0];
              D.37546 = alloc_dreg (cfg, 3);
              D.37547 = (int) D.37546;
              D.37522->dreg = D.37547;
              <D.37519>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.37548>; else goto <D.37549>;
              <D.37548>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.37522 = iargs[0];
              D.30741->next = D.37522;
              D.37522 = iargs[0];
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.37522->prev = D.30741;
              bblock.127 = cfg->cbb;
              D.37522 = iargs[0];
              bblock.127->last_ins = D.37522;
              goto <D.37550>;
              <D.37549>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              D.37522 = iargs[0];
              bblock.127->last_ins = D.37522;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.37550>:
              D.30489 = cfg->mempool;
              D.37551 = mono_mempool_alloc (D.30489, 48);
              iargs[1] = D.37551;
              D.37552 = iargs[1];
              D.37552 = iargs[1];
              D.37552->data.op[1].const_val = 0;
              D.37553 = D.37552->data.op[1].const_val;
              D.37552->data.op[0].const_val = D.37553;
              D.37552 = iargs[1];
              D.37552 = iargs[1];
              D.37552->prev = 0B;
              D.37554 = D.37552->prev;
              D.37552->next = D.37554;
              D.37552 = iargs[1];
              D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.30884 = D.30883 & 64;
              if (D.30884 != 0) goto <D.37556>; else goto <D.37557>;
              <D.37556>:
              iftmp.263 = 738;
              goto <D.37558>;
              <D.37557>:
              iftmp.263 = 362;
              <D.37558>:
              D.37552->opcode = iftmp.263;
              D.37552 = iargs[1];
              D.37552->flags = 0;
              D.37552 = iargs[1];
              D.37552->type = 0;
              D.37552 = iargs[1];
              D.37552->dreg = -1;
              D.37552 = iargs[1];
              D.37552 = iargs[1];
              D.37552 = iargs[1];
              D.37552->sreg3 = -1;
              D.37559 = D.37552->sreg3;
              D.37552->sreg2 = D.37559;
              D.37560 = D.37552->sreg2;
              D.37552->sreg1 = D.37560;
              D.37552 = iargs[1];
              D.30712 = cfg->ip;
              D.37552->cil_code = D.30712;
              D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.30884 = D.30883 & 64;
              if (D.30884 != 0) goto <D.37561>; else goto <D.37562>;
              <D.37561>:
              {
                struct MonoInst * group;
                struct MonoInst * got_loc;

                got_loc = mono_get_got_var (cfg);
                D.30489 = cfg->mempool;
                group = mono_mempool_alloc (D.30489, 48);
                group->data.op[1].const_val = 0;
                D.37563 = group->data.op[1].const_val;
                group->data.op[0].const_val = D.37563;
                group->prev = 0B;
                D.37564 = group->prev;
                group->next = D.37564;
                group->opcode = 737;
                group->flags = 0;
                group->type = 0;
                group->dreg = -1;
                group->sreg3 = -1;
                D.37565 = group->sreg3;
                group->sreg2 = D.37565;
                D.37566 = group->sreg2;
                group->sreg1 = D.37566;
                D.30712 = cfg->ip;
                group->cil_code = D.30712;
                group->data.op[0].src = field;
                group->data.op[1].src = 13B;
                D.37552 = iargs[1];
                D.37567 = got_loc->dreg;
                D.37552->sreg1 = D.37567;
                D.37552 = iargs[1];
                D.37552->data.op[1].p = group;
              }
              goto <D.37568>;
              <D.37562>:
              D.37552 = iargs[1];
              D.37552->data.op[0].p = field;
              D.37552 = iargs[1];
              D.37552->data.op[1].src = 13B;
              <D.37568>:
              D.37552 = iargs[1];
              D.37552->type = 3;
              D.37552 = iargs[1];
              D.37569 = alloc_dreg (cfg, 3);
              D.37570 = (int) D.37569;
              D.37552->dreg = D.37570;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.37571>; else goto <D.37572>;
              <D.37571>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.37552 = iargs[1];
              D.30741->next = D.37552;
              D.37552 = iargs[1];
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.37552->prev = D.30741;
              bblock.127 = cfg->cbb;
              D.37552 = iargs[1];
              bblock.127->last_ins = D.37552;
              goto <D.37573>;
              <D.37572>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              D.37552 = iargs[1];
              bblock.127->last_ins = D.37552;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.37573>:
              ins = mono_emit_jit_icall (cfg, mono_class_static_field_address, &iargs);
            }
          finally
            {
              iargs = {CLOBBER};
            }
        }
        goto <D.37512>;
        <D.37511>:
        {
          struct MonoVTable * vtable;

          vtable = 0B;
          D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.30884 = D.30883 & 64;
          if (D.30884 == 0) goto <D.37574>; else goto <D.37575>;
          <D.37574>:
          klass.173 = klass;
          D.30513 = cfg->domain;
          vtable = mono_class_vtable (D.30513, klass.173);
          <D.37575>:
          klass.173 = klass;
          if (klass.173 == 0B) goto <D.37576>; else goto <D.37578>;
          <D.37578>:
          klass.173 = klass;
          D.35265 = klass.173->exception_type;
          if (D.35265 != 0) goto <D.37576>; else goto <D.37577>;
          <D.37576>:
          klass.173 = klass;
          cfg->exception_ptr = klass.173;
          D.37579 = mini_get_debug_options ();
          D.37580 = D.37579->break_on_unverified;
          if (D.37580 != 0) goto <D.37581>; else goto load_error;
          <D.37581>:
          __asm__ __volatile__("int $03");
          <D.37577>:
          if (addr == 0B) goto <D.37582>; else goto <D.37583>;
          <D.37582>:
          klass.173 = klass;
          D.37584 = mini_field_access_needs_cctor_run (cfg, method, klass.173, vtable);
          if (D.37584 != 0) goto <D.37585>; else goto <D.37586>;
          <D.37585>:
          klass.173 = klass;
          D.37587 = monoeg_g_slist_find (class_inits, klass.173);
          if (D.37587 == 0B) goto <D.37588>; else goto <D.37589>;
          <D.37588>:
          helper_sig_class_init_trampoline.193 = helper_sig_class_init_trampoline;
          klass.173 = klass;
          mono_emit_abs_call (cfg, 15, klass.173, helper_sig_class_init_trampoline.193, 0B);
          D.30569 = cfg->verbose_level;
          if (D.30569 > 2) goto <D.37590>; else goto <D.37591>;
          <D.37590>:
          D.37592 = mono_field_get_name (field);
          klass.173 = klass;
          D.37593 = klass.173->name;
          klass.173 = klass;
          D.37594 = klass.173->name_space;
          printf ("class %s.%s needs init call for %s\n", D.37594, D.37593, D.37592);
          <D.37591>:
          klass.173 = klass;
          class_inits = monoeg_g_slist_prepend (class_inits, klass.173);
          <D.37589>:
          goto <D.37595>;
          <D.37586>:
          D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.37596 = D.30883 & 16;
          if (D.37596 != 0) goto <D.37597>; else goto <D.37598>;
          <D.37597>:
          {
            struct MonoException * ex;

            D.37599 = vtable == 0B;
            D.37600 = (long int) D.37599;
            D.37601 = __builtin_expect (D.37600, 0);
            if (D.37601 != 0) goto <D.37602>; else goto <D.37603>;
            <D.37602>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10251, "vtable");
            <D.37603>:
            D.37604 = BIT_FIELD_REF <*vtable, 8, 184>;
            D.37605 = D.37604 & 2;
            if (D.37605 == 0) goto <D.37606>; else goto <D.37607>;
            <D.37606>:
            D.30459 = cfg->method;
            if (D.30459 != method) goto <D.37608>; else goto <D.37609>;
            <D.37608>:
            D.30431 = BIT_FIELD_REF <*method, 8, 160>;
            D.30432 = D.30431 & 124;
            if (D.30432 == 0) goto <D.37610>; else goto <D.37611>;
            <D.37610>:
            D.30569 = cfg->verbose_level;
            if (D.30569 > 1) goto <D.37612>; else goto <D.37613>;
            <D.37612>:
            printf ("inline failed: %s\n", "class init");
            <D.37613>:
            goto inline_failure;
            <D.37611>:
            <D.37609>:
            <D.37607>:
            ex = mono_runtime_class_init_full (vtable, 0);
            if (ex != 0B) goto <D.37614>; else goto <D.37615>;
            <D.37614>:
            set_exception_object (cfg, ex);
            goto exception_exit;
            <D.37615>:
          }
          <D.37598>:
          <D.37595>:
          D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.30884 = D.30883 & 64;
          if (D.30884 != 0) goto <D.37616>; else goto <D.37617>;
          <D.37616>:
          D.30489 = cfg->mempool;
          ins = mono_mempool_alloc (D.30489, 48);
          ins->data.op[1].const_val = 0;
          D.30708 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.30708;
          ins->prev = 0B;
          D.30709 = ins->prev;
          ins->next = D.30709;
          D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.30884 = D.30883 & 64;
          if (D.30884 != 0) goto <D.37619>; else goto <D.37620>;
          <D.37619>:
          iftmp.264 = 738;
          goto <D.37621>;
          <D.37620>:
          iftmp.264 = 362;
          <D.37621>:
          ins->opcode = iftmp.264;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.30710 = ins->sreg3;
          ins->sreg2 = D.30710;
          D.30711 = ins->sreg2;
          ins->sreg1 = D.30711;
          D.30712 = cfg->ip;
          ins->cil_code = D.30712;
          D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.30884 = D.30883 & 64;
          if (D.30884 != 0) goto <D.37622>; else goto <D.37623>;
          <D.37622>:
          {
            struct MonoInst * group;
            struct MonoInst * got_loc;

            got_loc = mono_get_got_var (cfg);
            D.30489 = cfg->mempool;
            group = mono_mempool_alloc (D.30489, 48);
            group->data.op[1].const_val = 0;
            D.37624 = group->data.op[1].const_val;
            group->data.op[0].const_val = D.37624;
            group->prev = 0B;
            D.37625 = group->prev;
            group->next = D.37625;
            group->opcode = 737;
            group->flags = 0;
            group->type = 0;
            group->dreg = -1;
            group->sreg3 = -1;
            D.37626 = group->sreg3;
            group->sreg2 = D.37626;
            D.37627 = group->sreg2;
            group->sreg1 = D.37627;
            D.30712 = cfg->ip;
            group->cil_code = D.30712;
            group->data.op[0].src = field;
            group->data.op[1].src = 16B;
            D.37628 = got_loc->dreg;
            ins->sreg1 = D.37628;
            ins->data.op[1].p = group;
          }
          goto <D.37629>;
          <D.37623>:
          ins->data.op[0].p = field;
          ins->data.op[1].src = 16B;
          <D.37629>:
          ins->type = 3;
          D.37630 = alloc_dreg (cfg, 3);
          D.37631 = (int) D.37630;
          ins->dreg = D.37631;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.37632>; else goto <D.37633>;
          <D.37632>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = ins;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          ins->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = ins;
          goto <D.37634>;
          <D.37633>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = ins;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.37634>:
          goto <D.37635>;
          <D.37617>:
          D.37599 = vtable == 0B;
          D.37600 = (long int) D.37599;
          D.37601 = __builtin_expect (D.37600, 0);
          if (D.37601 != 0) goto <D.37636>; else goto <D.37637>;
          <D.37636>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10264, "vtable");
          <D.37637>:
          D.37638 = mono_vtable_get_static_field_data (vtable);
          D.36801 = field->offset;
          D.37639 = (sizetype) D.36801;
          addr = D.37638 + D.37639;
          D.37640 = addr == 0B;
          D.37641 = (long int) D.37640;
          D.37642 = __builtin_expect (D.37641, 0);
          if (D.37642 != 0) goto <D.37643>; else goto <D.37644>;
          <D.37643>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10266, "addr");
          <D.37644>:
          D.30489 = cfg->mempool;
          ins = mono_mempool_alloc (D.30489, 48);
          ins->data.op[1].const_val = 0;
          D.30708 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.30708;
          ins->prev = 0B;
          D.30709 = ins->prev;
          ins->next = D.30709;
          ins->opcode = 362;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.30710 = ins->sreg3;
          ins->sreg2 = D.30710;
          D.30711 = ins->sreg2;
          ins->sreg1 = D.30711;
          D.30712 = cfg->ip;
          ins->cil_code = D.30712;
          ins->data.op[0].p = addr;
          ins->type = 3;
          D.37645 = alloc_dreg (cfg, 3);
          D.37646 = (int) D.37645;
          ins->dreg = D.37646;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.37647>; else goto <D.37648>;
          <D.37647>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = ins;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          ins->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = ins;
          goto <D.37649>;
          <D.37648>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = ins;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.37649>:
          <D.37635>:
          goto <D.37650>;
          <D.37583>:
          {
            struct MonoInst * iargs[1];

            try
              {
                D.30489 = cfg->mempool;
                D.37651 = mono_mempool_alloc (D.30489, 48);
                iargs[0] = D.37651;
                D.37652 = iargs[0];
                D.37652 = iargs[0];
                D.37652->data.op[1].const_val = 0;
                D.37653 = D.37652->data.op[1].const_val;
                D.37652->data.op[0].const_val = D.37653;
                D.37652 = iargs[0];
                D.37652 = iargs[0];
                D.37652->prev = 0B;
                D.37654 = D.37652->prev;
                D.37652->next = D.37654;
                D.37652 = iargs[0];
                D.37652->opcode = 362;
                D.37652 = iargs[0];
                D.37652->flags = 0;
                D.37652 = iargs[0];
                D.37652->type = 0;
                D.37652 = iargs[0];
                D.37652->dreg = -1;
                D.37652 = iargs[0];
                D.37652 = iargs[0];
                D.37652 = iargs[0];
                D.37652->sreg3 = -1;
                D.37655 = D.37652->sreg3;
                D.37652->sreg2 = D.37655;
                D.37656 = D.37652->sreg2;
                D.37652->sreg1 = D.37656;
                D.37652 = iargs[0];
                D.30712 = cfg->ip;
                D.37652->cil_code = D.30712;
                D.37652 = iargs[0];
                addr.265 = (int) addr;
                D.37652->data.op[0].const_val = addr.265;
                D.37652 = iargs[0];
                D.37652->type = 1;
                D.37652 = iargs[0];
                D.37658 = alloc_dreg (cfg, 1);
                D.37659 = (int) D.37658;
                D.37652->dreg = D.37659;
                bblock.127 = cfg->cbb;
                D.30741 = bblock.127->last_ins;
                if (D.30741 != 0B) goto <D.37660>; else goto <D.37661>;
                <D.37660>:
                bblock.127 = cfg->cbb;
                D.30741 = bblock.127->last_ins;
                D.37652 = iargs[0];
                D.30741->next = D.37652;
                D.37652 = iargs[0];
                bblock.127 = cfg->cbb;
                D.30741 = bblock.127->last_ins;
                D.37652->prev = D.30741;
                bblock.127 = cfg->cbb;
                D.37652 = iargs[0];
                bblock.127->last_ins = D.37652;
                goto <D.37662>;
                <D.37661>:
                bblock.127 = cfg->cbb;
                bblock.127 = cfg->cbb;
                D.37652 = iargs[0];
                bblock.127->last_ins = D.37652;
                D.30741 = bblock.127->last_ins;
                bblock.127->code = D.30741;
                <D.37662>:
                ins = mono_emit_jit_icall (cfg, mono_get_special_static_data, &iargs);
              }
            finally
              {
                iargs = {CLOBBER};
              }
          }
          <D.37650>:
        }
        <D.37512>:
        <D.37509>:
        <D.37417>:
        <D.37295>:
        if (op == 127) goto <D.37663>; else goto <D.37664>;
        <D.37663>:
        D.37665 = mono_class_from_mono_type (ftype);
        ins->klass = D.37665;
        ins->type = 3;
        sp.266 = sp;
        sp = sp.266 + 4;
        *sp.266 = ins;
        goto <D.37667>;
        <D.37664>:
        if (op == 128) goto <D.37668>; else goto <D.37669>;
        <D.37668>:
        {
          struct MonoInst * store;

          D.30489 = cfg->mempool;
          store = mono_mempool_alloc (D.30489, 48);
          store->data.op[1].const_val = 0;
          D.37670 = store->data.op[1].const_val;
          store->data.op[0].const_val = D.37670;
          store->prev = 0B;
          D.37671 = store->prev;
          store->next = D.37671;
          D.37672 = mono_type_to_store_membase (cfg, ftype);
          D.37673 = (short unsigned int) D.37672;
          store->opcode = D.37673;
          store->flags = 0;
          store->type = 0;
          store->dreg = -1;
          store->sreg3 = -1;
          D.37674 = store->sreg3;
          store->sreg2 = D.37674;
          D.37675 = store->sreg2;
          store->sreg1 = D.37675;
          D.30712 = cfg->ip;
          store->cil_code = D.30712;
          D.37676 = store_val->dreg;
          store->sreg1 = D.37676;
          D.30903 = ins->dreg;
          store->dreg = D.30903;
          store->data.op[0].const_val = 0;
          type_to_eval_stack_type (cfg, ftype, store);
          D.37677 = mono_class_from_mono_type (ftype);
          store->klass = D.37677;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.37678>; else goto <D.37679>;
          <D.37678>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = store;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          store->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = store;
          goto <D.37680>;
          <D.37679>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = store;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.37680>:
          D.37681 = store->flags;
          D.34902 = (unsigned char) ins_flag;
          D.37682 = D.37681 | D.34902;
          store->flags = D.37682;
        }
        goto <D.37683>;
        <D.37669>:
        {
          gboolean is_const;
          struct MonoVTable * vtable;
          void * addr;

          is_const = 0;
          vtable = 0B;
          addr = 0B;
          if (context_used == 0) goto <D.37684>; else goto <D.37685>;
          <D.37684>:
          klass.173 = klass;
          D.30513 = cfg->domain;
          vtable = mono_class_vtable (D.30513, klass.173);
          klass.173 = klass;
          if (klass.173 == 0B) goto <D.37686>; else goto <D.37688>;
          <D.37688>:
          klass.173 = klass;
          D.35265 = klass.173->exception_type;
          if (D.35265 != 0) goto <D.37686>; else goto <D.37687>;
          <D.37686>:
          klass.173 = klass;
          cfg->exception_ptr = klass.173;
          D.37689 = mini_get_debug_options ();
          D.37690 = D.37689->break_on_unverified;
          if (D.37690 != 0) goto <D.37691>; else goto load_error;
          <D.37691>:
          __asm__ __volatile__("int $03");
          <D.37687>:
          <D.37685>:
          D.37247 = ftype->attrs;
          D.37248 = (int) D.37247;
          D.37694 = D.37248 & 32;
          if (D.37694 != 0) goto <D.37695>; else goto <D.37696>;
          <D.37695>:
          addr = mono_aot_readonly_field_override (field);
          if (addr != 0B) goto <D.37692>; else goto <D.37697>;
          <D.37697>:
          if (context_used == 0) goto <D.37698>; else goto <D.37693>;
          <D.37698>:
          D.30881 = cfg->opt;
          D.30882 = D.30881 & 512;
          if (D.30882 == 0) goto <D.37699>; else goto <D.37693>;
          <D.37699>:
          D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.30884 = D.30883 & 64;
          if (D.30884 == 0) goto <D.37700>; else goto <D.37693>;
          <D.37700>:
          D.37701 = BIT_FIELD_REF <*vtable, 8, 184>;
          D.37702 = D.37701 & 2;
          if (D.37702 != 0) goto <D.37692>; else goto <D.37693>;
          <D.37692>:
          {
            int ro_type;

            D.37703 = ftype->type;
            ro_type = (int) D.37703;
            if (addr == 0B) goto <D.37704>; else goto <D.37705>;
            <D.37704>:
            D.37706 = mono_vtable_get_static_field_data (vtable);
            D.36801 = field->offset;
            D.37639 = (sizetype) D.36801;
            addr = D.37706 + D.37639;
            <D.37705>:
            if (ro_type == 17) goto <D.37707>; else goto <D.37708>;
            <D.37707>:
            D.37709 = ftype->data.klass;
            D.37710 = BIT_FIELD_REF <*D.37709, 8, 160>;
            D.37711 = D.37710 & 16;
            if (D.37711 != 0) goto <D.37712>; else goto <D.37713>;
            <D.37712>:
            D.37709 = ftype->data.klass;
            D.37714 = mono_class_enum_basetype (D.37709);
            D.37715 = D.37714->type;
            ro_type = (int) D.37715;
            <D.37713>:
            <D.37708>:
            D.30637 = cfg->gsharedvt;
            if (D.30637 != 0) goto <D.37716>; else goto <D.37717>;
            <D.37716>:
            D.37718 = mono_opcode_name (op);
            D.32188 = method->signature;
            D.32189 = D.32188->param_count;
            D.32190 = (int) D.32189;
            D.32191 = method->name;
            D.30426 = method->klass;
            D.32192 = D.30426->name;
            D.30426 = method->klass;
            D.32193 = D.30426->name_space;
            D.37719 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.32193, D.32192, D.32191, D.32190, D.37718, "method-to-ir.c", 10305);
            cfg->exception_message = D.37719;
            D.30569 = cfg->verbose_level;
            if (D.30569 > 1) goto <D.37720>; else goto <D.37721>;
            <D.37720>:
            D.32197 = cfg->exception_message;
            printf ("%s\n", D.32197);
            <D.37721>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.37717>:
            is_const = 1;
            switch (ro_type) <default: <D.27961>, case 2: <D.27938>, case 3: <D.27942>, case 4: <D.27941>, case 5: <D.27939>, case 6: <D.27944>, case 7: <D.27943>, case 8: <D.27945>, case 9: <D.27946>, case 10: <D.27956>, case 11: <D.27957>, case 12: <D.27958>, case 13: <D.27959>, case 14: <D.27951>, case 15: <D.27949>, case 17: <D.27960>, case 18: <D.27953>, case 20: <D.27955>, case 24: <D.27947>, case 25: <D.27948>, case 27: <D.27950>, case 28: <D.27952>, case 29: <D.27954>>
            <D.27938>:
            <D.27939>:
            D.30489 = cfg->mempool;
            D.37722 = mono_mempool_alloc (D.30489, 48);
            *sp = D.37722;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489->data.op[1].const_val = 0;
            D.33278 = D.31489->data.op[1].const_val;
            D.31489->data.op[0].const_val = D.33278;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489->prev = 0B;
            D.33279 = D.31489->prev;
            D.31489->next = D.33279;
            D.31489 = *sp;
            D.31489->opcode = 362;
            D.31489 = *sp;
            D.31489->flags = 0;
            D.31489 = *sp;
            D.31489->type = 0;
            D.31489 = *sp;
            D.31489->dreg = -1;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489->sreg3 = -1;
            D.33280 = D.31489->sreg3;
            D.31489->sreg2 = D.33280;
            D.33281 = D.31489->sreg2;
            D.31489->sreg1 = D.33281;
            D.31489 = *sp;
            D.30712 = cfg->ip;
            D.31489->cil_code = D.30712;
            D.31489 = *sp;
            D.37723 = MEM[(guint8 *)addr];
            D.37724 = (int) D.37723;
            D.31489->data.op[0].const_val = D.37724;
            D.31489 = *sp;
            D.31489->type = 1;
            D.31489 = *sp;
            D.37725 = alloc_dreg (cfg, 1);
            D.37726 = (int) D.37725;
            D.31489->dreg = D.37726;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.37727>; else goto <D.37728>;
            <D.37727>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.31489 = *sp;
            D.30741->next = D.31489;
            D.31489 = *sp;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.31489->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.31489 = *sp;
            bblock.127->last_ins = D.31489;
            goto <D.37729>;
            <D.37728>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.31489 = *sp;
            bblock.127->last_ins = D.31489;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.37729>:
            sp = sp + 4;
            goto <D.27940>;
            <D.27941>:
            D.30489 = cfg->mempool;
            D.37730 = mono_mempool_alloc (D.30489, 48);
            *sp = D.37730;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489->data.op[1].const_val = 0;
            D.33278 = D.31489->data.op[1].const_val;
            D.31489->data.op[0].const_val = D.33278;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489->prev = 0B;
            D.33279 = D.31489->prev;
            D.31489->next = D.33279;
            D.31489 = *sp;
            D.31489->opcode = 362;
            D.31489 = *sp;
            D.31489->flags = 0;
            D.31489 = *sp;
            D.31489->type = 0;
            D.31489 = *sp;
            D.31489->dreg = -1;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489->sreg3 = -1;
            D.33280 = D.31489->sreg3;
            D.31489->sreg2 = D.33280;
            D.33281 = D.31489->sreg2;
            D.31489->sreg1 = D.33281;
            D.31489 = *sp;
            D.30712 = cfg->ip;
            D.31489->cil_code = D.30712;
            D.31489 = *sp;
            D.37731 = MEM[(gint8 *)addr];
            D.37732 = (int) D.37731;
            D.31489->data.op[0].const_val = D.37732;
            D.31489 = *sp;
            D.31489->type = 1;
            D.31489 = *sp;
            D.37733 = alloc_dreg (cfg, 1);
            D.37734 = (int) D.37733;
            D.31489->dreg = D.37734;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.37735>; else goto <D.37736>;
            <D.37735>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.31489 = *sp;
            D.30741->next = D.31489;
            D.31489 = *sp;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.31489->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.31489 = *sp;
            bblock.127->last_ins = D.31489;
            goto <D.37737>;
            <D.37736>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.31489 = *sp;
            bblock.127->last_ins = D.31489;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.37737>:
            sp = sp + 4;
            goto <D.27940>;
            <D.27942>:
            <D.27943>:
            D.30489 = cfg->mempool;
            D.37738 = mono_mempool_alloc (D.30489, 48);
            *sp = D.37738;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489->data.op[1].const_val = 0;
            D.33278 = D.31489->data.op[1].const_val;
            D.31489->data.op[0].const_val = D.33278;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489->prev = 0B;
            D.33279 = D.31489->prev;
            D.31489->next = D.33279;
            D.31489 = *sp;
            D.31489->opcode = 362;
            D.31489 = *sp;
            D.31489->flags = 0;
            D.31489 = *sp;
            D.31489->type = 0;
            D.31489 = *sp;
            D.31489->dreg = -1;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489->sreg3 = -1;
            D.33280 = D.31489->sreg3;
            D.31489->sreg2 = D.33280;
            D.33281 = D.31489->sreg2;
            D.31489->sreg1 = D.33281;
            D.31489 = *sp;
            D.30712 = cfg->ip;
            D.31489->cil_code = D.30712;
            D.31489 = *sp;
            D.37739 = MEM[(guint16 *)addr];
            D.37740 = (int) D.37739;
            D.31489->data.op[0].const_val = D.37740;
            D.31489 = *sp;
            D.31489->type = 1;
            D.31489 = *sp;
            D.37741 = alloc_dreg (cfg, 1);
            D.37742 = (int) D.37741;
            D.31489->dreg = D.37742;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.37743>; else goto <D.37744>;
            <D.37743>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.31489 = *sp;
            D.30741->next = D.31489;
            D.31489 = *sp;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.31489->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.31489 = *sp;
            bblock.127->last_ins = D.31489;
            goto <D.37745>;
            <D.37744>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.31489 = *sp;
            bblock.127->last_ins = D.31489;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.37745>:
            sp = sp + 4;
            goto <D.27940>;
            <D.27944>:
            D.30489 = cfg->mempool;
            D.37746 = mono_mempool_alloc (D.30489, 48);
            *sp = D.37746;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489->data.op[1].const_val = 0;
            D.33278 = D.31489->data.op[1].const_val;
            D.31489->data.op[0].const_val = D.33278;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489->prev = 0B;
            D.33279 = D.31489->prev;
            D.31489->next = D.33279;
            D.31489 = *sp;
            D.31489->opcode = 362;
            D.31489 = *sp;
            D.31489->flags = 0;
            D.31489 = *sp;
            D.31489->type = 0;
            D.31489 = *sp;
            D.31489->dreg = -1;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489->sreg3 = -1;
            D.33280 = D.31489->sreg3;
            D.31489->sreg2 = D.33280;
            D.33281 = D.31489->sreg2;
            D.31489->sreg1 = D.33281;
            D.31489 = *sp;
            D.30712 = cfg->ip;
            D.31489->cil_code = D.30712;
            D.31489 = *sp;
            D.37747 = MEM[(gint16 *)addr];
            D.37748 = (int) D.37747;
            D.31489->data.op[0].const_val = D.37748;
            D.31489 = *sp;
            D.31489->type = 1;
            D.31489 = *sp;
            D.37749 = alloc_dreg (cfg, 1);
            D.37750 = (int) D.37749;
            D.31489->dreg = D.37750;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.37751>; else goto <D.37752>;
            <D.37751>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.31489 = *sp;
            D.30741->next = D.31489;
            D.31489 = *sp;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.31489->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.31489 = *sp;
            bblock.127->last_ins = D.31489;
            goto <D.37753>;
            <D.37752>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.31489 = *sp;
            bblock.127->last_ins = D.31489;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.37753>:
            sp = sp + 4;
            goto <D.27940>;
            <D.27945>:
            D.30489 = cfg->mempool;
            D.37754 = mono_mempool_alloc (D.30489, 48);
            *sp = D.37754;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489->data.op[1].const_val = 0;
            D.33278 = D.31489->data.op[1].const_val;
            D.31489->data.op[0].const_val = D.33278;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489->prev = 0B;
            D.33279 = D.31489->prev;
            D.31489->next = D.33279;
            D.31489 = *sp;
            D.31489->opcode = 362;
            D.31489 = *sp;
            D.31489->flags = 0;
            D.31489 = *sp;
            D.31489->type = 0;
            D.31489 = *sp;
            D.31489->dreg = -1;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489->sreg3 = -1;
            D.33280 = D.31489->sreg3;
            D.31489->sreg2 = D.33280;
            D.33281 = D.31489->sreg2;
            D.31489->sreg1 = D.33281;
            D.31489 = *sp;
            D.30712 = cfg->ip;
            D.31489->cil_code = D.30712;
            D.31489 = *sp;
            D.37755 = MEM[(gint32 *)addr];
            D.31489->data.op[0].const_val = D.37755;
            D.31489 = *sp;
            D.31489->type = 1;
            D.31489 = *sp;
            D.37756 = alloc_dreg (cfg, 1);
            D.37757 = (int) D.37756;
            D.31489->dreg = D.37757;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.37758>; else goto <D.37759>;
            <D.37758>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.31489 = *sp;
            D.30741->next = D.31489;
            D.31489 = *sp;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.31489->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.31489 = *sp;
            bblock.127->last_ins = D.31489;
            goto <D.37760>;
            <D.37759>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.31489 = *sp;
            bblock.127->last_ins = D.31489;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.37760>:
            sp = sp + 4;
            goto <D.27940>;
            <D.27946>:
            D.30489 = cfg->mempool;
            D.37761 = mono_mempool_alloc (D.30489, 48);
            *sp = D.37761;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489->data.op[1].const_val = 0;
            D.33278 = D.31489->data.op[1].const_val;
            D.31489->data.op[0].const_val = D.33278;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489->prev = 0B;
            D.33279 = D.31489->prev;
            D.31489->next = D.33279;
            D.31489 = *sp;
            D.31489->opcode = 362;
            D.31489 = *sp;
            D.31489->flags = 0;
            D.31489 = *sp;
            D.31489->type = 0;
            D.31489 = *sp;
            D.31489->dreg = -1;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489->sreg3 = -1;
            D.33280 = D.31489->sreg3;
            D.31489->sreg2 = D.33280;
            D.33281 = D.31489->sreg2;
            D.31489->sreg1 = D.33281;
            D.31489 = *sp;
            D.30712 = cfg->ip;
            D.31489->cil_code = D.30712;
            D.31489 = *sp;
            D.37762 = MEM[(guint32 *)addr];
            D.37763 = (int) D.37762;
            D.31489->data.op[0].const_val = D.37763;
            D.31489 = *sp;
            D.31489->type = 1;
            D.31489 = *sp;
            D.37764 = alloc_dreg (cfg, 1);
            D.37765 = (int) D.37764;
            D.31489->dreg = D.37765;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.37766>; else goto <D.37767>;
            <D.37766>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.31489 = *sp;
            D.30741->next = D.31489;
            D.31489 = *sp;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.31489->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.31489 = *sp;
            bblock.127->last_ins = D.31489;
            goto <D.37768>;
            <D.37767>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.31489 = *sp;
            bblock.127->last_ins = D.31489;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.37768>:
            sp = sp + 4;
            goto <D.27940>;
            <D.27947>:
            <D.27948>:
            <D.27949>:
            <D.27950>:
            D.30489 = cfg->mempool;
            D.37769 = mono_mempool_alloc (D.30489, 48);
            *sp = D.37769;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489->data.op[1].const_val = 0;
            D.33278 = D.31489->data.op[1].const_val;
            D.31489->data.op[0].const_val = D.33278;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489->prev = 0B;
            D.33279 = D.31489->prev;
            D.31489->next = D.33279;
            D.31489 = *sp;
            D.31489->opcode = 362;
            D.31489 = *sp;
            D.31489->flags = 0;
            D.31489 = *sp;
            D.31489->type = 0;
            D.31489 = *sp;
            D.31489->dreg = -1;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489->sreg3 = -1;
            D.33280 = D.31489->sreg3;
            D.31489->sreg2 = D.33280;
            D.33281 = D.31489->sreg2;
            D.31489->sreg1 = D.33281;
            D.31489 = *sp;
            D.30712 = cfg->ip;
            D.31489->cil_code = D.30712;
            D.31489 = *sp;
            D.37770 = MEM[(void * *)addr];
            D.31489->data.op[0].p = D.37770;
            D.31489 = *sp;
            D.31489->type = 3;
            D.31489 = *sp;
            D.37771 = alloc_dreg (cfg, 3);
            D.37772 = (int) D.37771;
            D.31489->dreg = D.37772;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.37773>; else goto <D.37774>;
            <D.37773>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.31489 = *sp;
            D.30741->next = D.31489;
            D.31489 = *sp;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.31489->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.31489 = *sp;
            bblock.127->last_ins = D.31489;
            goto <D.37775>;
            <D.37774>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.31489 = *sp;
            bblock.127->last_ins = D.31489;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.37775>:
            D.31489 = *sp;
            D.36790 = field->type;
            type_to_eval_stack_type (cfg, D.36790, D.31489);
            sp = sp + 4;
            goto <D.27940>;
            <D.27951>:
            <D.27952>:
            <D.27953>:
            <D.27954>:
            <D.27955>:
            D.37776 = mono_gc_is_moving ();
            if (D.37776 == 0) goto <D.37777>; else goto <D.37778>;
            <D.37777>:
            D.30489 = cfg->mempool;
            D.37779 = mono_mempool_alloc (D.30489, 48);
            *sp = D.37779;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489->data.op[1].const_val = 0;
            D.33278 = D.31489->data.op[1].const_val;
            D.31489->data.op[0].const_val = D.33278;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489->prev = 0B;
            D.33279 = D.31489->prev;
            D.31489->next = D.33279;
            D.31489 = *sp;
            D.31489->opcode = 362;
            D.31489 = *sp;
            D.31489->flags = 0;
            D.31489 = *sp;
            D.31489->type = 0;
            D.31489 = *sp;
            D.31489->dreg = -1;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489->sreg3 = -1;
            D.33280 = D.31489->sreg3;
            D.31489->sreg2 = D.33280;
            D.33281 = D.31489->sreg2;
            D.31489->sreg1 = D.33281;
            D.31489 = *sp;
            D.30712 = cfg->ip;
            D.31489->cil_code = D.30712;
            D.31489 = *sp;
            D.37770 = MEM[(void * *)addr];
            D.31489->data.op[0].p = D.37770;
            D.31489 = *sp;
            D.31489->type = 3;
            D.31489 = *sp;
            D.37780 = alloc_dreg (cfg, 3);
            D.37781 = (int) D.37780;
            D.31489->dreg = D.37781;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.37782>; else goto <D.37783>;
            <D.37782>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.31489 = *sp;
            D.30741->next = D.31489;
            D.31489 = *sp;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.31489->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.31489 = *sp;
            bblock.127->last_ins = D.31489;
            goto <D.37784>;
            <D.37783>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.31489 = *sp;
            bblock.127->last_ins = D.31489;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.37784>:
            D.31489 = *sp;
            D.36790 = field->type;
            type_to_eval_stack_type (cfg, D.36790, D.31489);
            sp = sp + 4;
            goto <D.37785>;
            <D.37778>:
            is_const = 0;
            <D.37785>:
            goto <D.27940>;
            <D.27956>:
            <D.27957>:
            D.30489 = cfg->mempool;
            D.37786 = mono_mempool_alloc (D.30489, 48);
            *sp = D.37786;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489->data.op[1].const_val = 0;
            D.33278 = D.31489->data.op[1].const_val;
            D.31489->data.op[0].const_val = D.33278;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489->prev = 0B;
            D.33279 = D.31489->prev;
            D.31489->next = D.33279;
            D.31489 = *sp;
            D.31489->opcode = 363;
            D.31489 = *sp;
            D.31489->flags = 0;
            D.31489 = *sp;
            D.31489->type = 0;
            D.31489 = *sp;
            D.31489->dreg = -1;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489 = *sp;
            D.31489->sreg3 = -1;
            D.33280 = D.31489->sreg3;
            D.31489->sreg2 = D.33280;
            D.33281 = D.31489->sreg2;
            D.31489->sreg1 = D.33281;
            D.31489 = *sp;
            D.30712 = cfg->ip;
            D.31489->cil_code = D.30712;
            D.31489 = *sp;
            D.37787 = alloc_lreg (cfg);
            D.37788 = (int) D.37787;
            D.31489->dreg = D.37788;
            D.31489 = *sp;
            D.31489->type = 2;
            D.31489 = *sp;
            D.37789 = MEM[(gint64 *)addr];
            D.31489->data.i8const = D.37789;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.37790>; else goto <D.37791>;
            <D.37790>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.31489 = *sp;
            D.30741->next = D.31489;
            D.31489 = *sp;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.31489->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.31489 = *sp;
            bblock.127->last_ins = D.31489;
            goto <D.37792>;
            <D.37791>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.31489 = *sp;
            bblock.127->last_ins = D.31489;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.37792>:
            sp = sp + 4;
            goto <D.27940>;
            <D.27958>:
            <D.27959>:
            <D.27960>:
            <D.27961>:
            is_const = 0;
            goto <D.27940>;
            <D.27940>:
          }
          <D.37693>:
          <D.37696>:
          if (is_const == 0) goto <D.37793>; else goto <D.37794>;
          <D.37793>:
          {
            struct MonoInst * load;

            sp.85 = (int) sp;
            stack_start.86 = (int) stack_start;
            D.31274 = sp.85 - stack_start.86;
            D.31275 = D.31274 /[ex] 4;
            D.31188 = header->max_stack;
            D.31189 = (int) D.31188;
            if (D.31275 >= D.31189) goto <D.37795>; else goto <D.37796>;
            <D.37795>:
            D.30637 = cfg->gsharedvt;
            if (D.30637 != 0) goto <D.37797>; else goto <D.37798>;
            <D.37797>:
            D.30569 = cfg->verbose_level;
            if (D.30569 > 2) goto <D.37799>; else goto <D.37800>;
            <D.37799>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.37800>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.37798>:
            D.37801 = mini_get_debug_options ();
            D.37802 = D.37801->break_on_unverified;
            if (D.37802 != 0) goto <D.37803>; else goto unverified;
            <D.37803>:
            __asm__ __volatile__("int $03");
            <D.37796>:
            D.30489 = cfg->mempool;
            load = mono_mempool_alloc (D.30489, 48);
            load->data.op[1].const_val = 0;
            D.37804 = load->data.op[1].const_val;
            load->data.op[0].const_val = D.37804;
            load->prev = 0B;
            D.37805 = load->prev;
            load->next = D.37805;
            D.36790 = field->type;
            D.37806 = mono_type_to_load_membase (cfg, D.36790);
            D.37807 = (short unsigned int) D.37806;
            load->opcode = D.37807;
            load->flags = 0;
            load->type = 0;
            load->dreg = -1;
            load->sreg3 = -1;
            D.37808 = load->sreg3;
            load->sreg2 = D.37808;
            D.37809 = load->sreg2;
            load->sreg1 = D.37809;
            D.30712 = cfg->ip;
            load->cil_code = D.30712;
            load->dreg = 0;
            D.30903 = ins->dreg;
            load->sreg1 = D.30903;
            load->data.op[0].const_val = 0;
            load->type = 1;
            D.36790 = field->type;
            type_to_eval_stack_type (cfg, D.36790, load);
            D.37810 = load->type;
            D.37811 = (<unnamed type>) D.37810;
            D.37812 = alloc_dreg (cfg, D.37811);
            D.37813 = (int) D.37812;
            load->dreg = D.37813;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.37814>; else goto <D.37815>;
            <D.37814>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = load;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            load->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = load;
            goto <D.37816>;
            <D.37815>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = load;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.37816>:
            D.37817 = load->flags;
            D.34902 = (unsigned char) ins_flag;
            D.37818 = D.37817 | D.34902;
            load->flags = D.37818;
            ins_flag = 0;
            sp.267 = sp;
            sp = sp.267 + 4;
            *sp.267 = load;
          }
          <D.37794>:
        }
        <D.37683>:
        <D.37667>:
        ins_flag = 0;
        ip = ip + 5;
        goto <D.27380>;
      }
      <D.27963>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      if (D.31274 <= 7) goto <D.37820>; else goto <D.37821>;
      <D.37820>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.37822>; else goto <D.37823>;
      <D.37822>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.37824>; else goto <D.37825>;
      <D.37824>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.37825>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37823>:
      D.37826 = mini_get_debug_options ();
      D.37827 = D.37826->break_on_unverified;
      if (D.37827 != 0) goto <D.37828>; else goto unverified;
      <D.37828>:
      __asm__ __volatile__("int $03");
      <D.37821>:
      sp = sp + 4294967288;
      D.31934 = ip + 5;
      if (D.31934 > end) goto <D.37829>; else goto <D.37830>;
      <D.37829>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.37831>; else goto <D.37832>;
      <D.37831>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.37833>; else goto <D.37834>;
      <D.37833>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.37834>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37832>:
      D.37835 = mini_get_debug_options ();
      D.37836 = D.37835->break_on_unverified;
      if (D.37836 != 0) goto <D.37837>; else goto unverified;
      <D.37837>:
      __asm__ __volatile__("int $03");
      <D.37830>:
      token = MEM[(const guint32 *)ip + 1B];
      klass.268 = mini_get_class (method, token, generic_context);
      klass = klass.268;
      klass.173 = klass;
      if (klass.173 == 0B) goto <D.37839>; else goto <D.37841>;
      <D.37841>:
      klass.173 = klass;
      D.35265 = klass.173->exception_type;
      if (D.35265 != 0) goto <D.37839>; else goto <D.37840>;
      <D.37839>:
      klass.173 = klass;
      cfg->exception_ptr = klass.173;
      D.37842 = mini_get_debug_options ();
      D.37843 = D.37842->break_on_unverified;
      if (D.37843 != 0) goto <D.37844>; else goto load_error;
      <D.37844>:
      __asm__ __volatile__("int $03");
      <D.37840>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      klass.173 = klass;
      D.35339 = &klass.173->byval_arg;
      D.37845 = mono_type_to_store_membase (cfg, D.35339);
      D.37846 = (short unsigned int) D.37845;
      ins->opcode = D.37846;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      D.32655 = sp + 4;
      D.32656 = *D.32655;
      D.32657 = D.32656->dreg;
      ins->sreg1 = D.32657;
      D.31489 = *sp;
      D.31682 = D.31489->dreg;
      ins->dreg = D.31682;
      ins->data.op[0].const_val = 0;
      klass.173 = klass;
      D.35339 = &klass.173->byval_arg;
      type_to_eval_stack_type (cfg, D.35339, ins);
      klass.173 = klass;
      D.35339 = &klass.173->byval_arg;
      D.37847 = mono_class_from_mono_type (D.35339);
      ins->klass = D.37847;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.37848>; else goto <D.37849>;
      <D.37848>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.37850>;
      <D.37849>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.37850>:
      D.33752 = BIT_FIELD_REF <*cfg, 8, 3416>;
      D.33753 = D.33752 & 16;
      if (D.33753 != 0) goto <D.37851>; else goto <D.37852>;
      <D.37851>:
      D.30459 = cfg->method;
      D.32440 = BIT_FIELD_REF <*D.30459, 8, 160>;
      D.32441 = D.32440 & 124;
      if (D.32441 != 96) goto <D.37853>; else goto <D.37854>;
      <D.37853>:
      klass.173 = klass;
      D.37855 = generic_class_is_reference_type (cfg, klass.173);
      if (D.37855 != 0) goto <D.37856>; else goto <D.37857>;
      <D.37856>:
      D.32655 = sp + 4;
      D.32656 = *D.32655;
      D.31489 = *sp;
      emit_write_barrier (cfg, D.31489, D.32656);
      <D.37857>:
      <D.37854>:
      <D.37852>:
      ins_flag = 0;
      ip = ip + 5;
      inline_costs = inline_costs + 1;
      goto <D.27380>;
      <D.27964>:
      {
        struct MonoInst * len_ins;
        const char * data_ptr;
        int data_size;
        guint32 field_token;

        try
          {
            data_size = 0;
            sp.85 = (int) sp;
            stack_start.86 = (int) stack_start;
            D.31274 = sp.85 - stack_start.86;
            if (D.31274 <= 3) goto <D.37858>; else goto <D.37859>;
            <D.37858>:
            D.30637 = cfg->gsharedvt;
            if (D.30637 != 0) goto <D.37860>; else goto <D.37861>;
            <D.37860>:
            D.30569 = cfg->verbose_level;
            if (D.30569 > 2) goto <D.37862>; else goto <D.37863>;
            <D.37862>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.37863>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.37861>:
            D.37864 = mini_get_debug_options ();
            D.37865 = D.37864->break_on_unverified;
            if (D.37865 != 0) goto <D.37866>; else goto unverified;
            <D.37866>:
            __asm__ __volatile__("int $03");
            <D.37859>:
            sp = sp + 4294967292;
            D.31934 = ip + 5;
            if (D.31934 > end) goto <D.37867>; else goto <D.37868>;
            <D.37867>:
            D.30637 = cfg->gsharedvt;
            if (D.30637 != 0) goto <D.37869>; else goto <D.37870>;
            <D.37869>:
            D.30569 = cfg->verbose_level;
            if (D.30569 > 2) goto <D.37871>; else goto <D.37872>;
            <D.37871>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.37872>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.37870>:
            D.37873 = mini_get_debug_options ();
            D.37874 = D.37873->break_on_unverified;
            if (D.37874 != 0) goto <D.37875>; else goto unverified;
            <D.37875>:
            __asm__ __volatile__("int $03");
            <D.37868>:
            token = MEM[(const guint32 *)ip + 1B];
            klass.269 = mini_get_class (method, token, generic_context);
            klass = klass.269;
            klass.173 = klass;
            if (klass.173 == 0B) goto <D.37877>; else goto <D.37879>;
            <D.37879>:
            klass.173 = klass;
            D.35265 = klass.173->exception_type;
            if (D.35265 != 0) goto <D.37877>; else goto <D.37878>;
            <D.37877>:
            klass.173 = klass;
            cfg->exception_ptr = klass.173;
            D.37880 = mini_get_debug_options ();
            D.37881 = D.37880->break_on_unverified;
            if (D.37881 != 0) goto <D.37882>; else goto load_error;
            <D.37882>:
            __asm__ __volatile__("int $03");
            <D.37878>:
            klass.173 = klass;
            context_used = mini_class_check_context_used (cfg, klass.173);
            D.31489 = *sp;
            D.32169 = D.31489->type;
            if (D.32169 == 2) goto <D.37883>; else goto <D.37884>;
            <D.37883>:
            D.30489 = cfg->mempool;
            ins = mono_mempool_alloc (D.30489, 48);
            ins->data.op[1].const_val = 0;
            D.30708 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.30708;
            ins->prev = 0B;
            D.30709 = ins->prev;
            ins->next = D.30709;
            ins->opcode = 532;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.30710 = ins->sreg3;
            ins->sreg2 = D.30710;
            D.30711 = ins->sreg2;
            ins->sreg1 = D.30711;
            D.30712 = cfg->ip;
            ins->cil_code = D.30712;
            D.31489 = *sp;
            D.31682 = D.31489->dreg;
            ins->sreg1 = D.31682;
            ins->type = 1;
            D.37885 = alloc_ireg (cfg);
            D.37886 = (int) D.37885;
            ins->dreg = D.37886;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.37887>; else goto <D.37888>;
            <D.37887>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = ins;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            ins->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = ins;
            goto <D.37889>;
            <D.37888>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = ins;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.37889>:
            D.37890 = mono_decompose_opcode (cfg, ins);
            *sp = D.37890;
            <D.37884>:
            if (context_used != 0) goto <D.37891>; else goto <D.37892>;
            <D.37891>:
            {
              struct MonoInst * args[3];
              struct MonoClass * array_class;
              struct MonoMethod * managed_alloc;

              try
                {
                  klass.173 = klass;
                  array_class = mono_array_class_get (klass.173, 1);
                  managed_alloc = mono_gc_get_managed_array_allocator (array_class);
                  D.37893 = emit_get_rgctx_klass (cfg, context_used, array_class, 2);
                  args[0] = D.37893;
                  D.31489 = *sp;
                  args[1] = D.31489;
                  if (managed_alloc != 0B) goto <D.37894>; else goto <D.37895>;
                  <D.37894>:
                  ins = mono_emit_method_call (cfg, managed_alloc, &args, 0B);
                  goto <D.37896>;
                  <D.37895>:
                  ins = mono_emit_jit_icall (cfg, mono_array_new_specific, &args);
                  <D.37896>:
                }
              finally
                {
                  args = {CLOBBER};
                }
            }
            goto <D.37897>;
            <D.37892>:
            D.30881 = cfg->opt;
            D.30882 = D.30881 & 512;
            if (D.30882 != 0) goto <D.37898>; else goto <D.37899>;
            <D.37898>:
            {
              struct MonoInst * iargs[3];

              try
                {
                  D.30881 = cfg->opt;
                  D.30882 = D.30881 & 512;
                  if (D.30882 != 0) goto <D.37900>; else goto <D.37903>;
                  <D.37903>:
                  D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
                  D.30884 = D.30883 & 64;
                  if (D.30884 != 0) goto <D.37900>; else goto <D.37901>;
                  <D.37900>:
                  {
                    struct MonoInst * __domain_var;

                    __domain_var = mono_get_domainvar (cfg);
                    D.30489 = cfg->mempool;
                    D.37904 = mono_mempool_alloc (D.30489, 48);
                    iargs[0] = D.37904;
                    D.37905 = iargs[0];
                    D.37905 = iargs[0];
                    D.37905->data.op[1].const_val = 0;
                    D.37906 = D.37905->data.op[1].const_val;
                    D.37905->data.op[0].const_val = D.37906;
                    D.37905 = iargs[0];
                    D.37905 = iargs[0];
                    D.37905->prev = 0B;
                    D.37907 = D.37905->prev;
                    D.37905->next = D.37907;
                    D.37905 = iargs[0];
                    D.37905->opcode = 428;
                    D.37905 = iargs[0];
                    D.37905->flags = 0;
                    D.37905 = iargs[0];
                    D.37905->type = 0;
                    D.37905 = iargs[0];
                    D.37905->dreg = -1;
                    D.37905 = iargs[0];
                    D.37905 = iargs[0];
                    D.37905 = iargs[0];
                    D.37905->sreg3 = -1;
                    D.37908 = D.37905->sreg3;
                    D.37905->sreg2 = D.37908;
                    D.37909 = D.37905->sreg2;
                    D.37905->sreg1 = D.37909;
                    D.37905 = iargs[0];
                    D.30712 = cfg->ip;
                    D.37905->cil_code = D.30712;
                    D.37905 = iargs[0];
                    D.31239 = cfg->varinfo;
                    D.37910 = __domain_var->data.op[0].const_val;
                    D.37911 = (unsigned int) D.37910;
                    D.37912 = D.37911 * 4;
                    D.37913 = D.31239 + D.37912;
                    D.37914 = *D.37913;
                    D.37915 = D.37914->data.op[1].vtype;
                    D.37916 = mono_type_to_regmove (cfg, D.37915);
                    D.37917 = (short unsigned int) D.37916;
                    D.37905->opcode = D.37917;
                    D.37905 = iargs[0];
                    D.31239 = cfg->varinfo;
                    D.37910 = __domain_var->data.op[0].const_val;
                    D.37911 = (unsigned int) D.37910;
                    D.37912 = D.37911 * 4;
                    D.37913 = D.31239 + D.37912;
                    D.37914 = *D.37913;
                    D.37915 = D.37914->data.op[1].vtype;
                    type_to_eval_stack_type (cfg, D.37915, D.37905);
                    D.37905 = iargs[0];
                    D.31239 = cfg->varinfo;
                    D.37910 = __domain_var->data.op[0].const_val;
                    D.37911 = (unsigned int) D.37910;
                    D.37912 = D.37911 * 4;
                    D.37913 = D.31239 + D.37912;
                    D.37914 = *D.37913;
                    D.37918 = D.37914->klass;
                    D.37905->klass = D.37918;
                    D.37905 = iargs[0];
                    D.31239 = cfg->varinfo;
                    D.37910 = __domain_var->data.op[0].const_val;
                    D.37911 = (unsigned int) D.37910;
                    D.37912 = D.37911 * 4;
                    D.37913 = D.31239 + D.37912;
                    D.37914 = *D.37913;
                    D.37919 = D.37914->dreg;
                    D.37905->sreg1 = D.37919;
                    D.37905 = iargs[0];
                    D.37905 = iargs[0];
                    D.37920 = D.37905->type;
                    D.37921 = (<unnamed type>) D.37920;
                    D.37922 = alloc_dreg (cfg, D.37921);
                    D.37923 = (int) D.37922;
                    D.37905->dreg = D.37923;
                    D.37905 = iargs[0];
                    D.37924 = D.37905->opcode;
                    if (D.37924 == 431) goto <D.37925>; else goto <D.37926>;
                    <D.37925>:
                    D.37905 = iargs[0];
                    D.31239 = cfg->varinfo;
                    D.37910 = __domain_var->data.op[0].const_val;
                    D.37911 = (unsigned int) D.37910;
                    D.37912 = D.37911 * 4;
                    D.37913 = D.31239 + D.37912;
                    D.37914 = *D.37913;
                    D.37915 = D.37914->data.op[1].vtype;
                    D.37927 = mono_class_from_mono_type (D.37915);
                    D.37905->klass = D.37927;
                    <D.37926>:
                  }
                  goto <D.37902>;
                  <D.37901>:
                  D.30489 = cfg->mempool;
                  D.37928 = mono_mempool_alloc (D.30489, 48);
                  iargs[0] = D.37928;
                  D.37905 = iargs[0];
                  D.37905 = iargs[0];
                  D.37905->data.op[1].const_val = 0;
                  D.37906 = D.37905->data.op[1].const_val;
                  D.37905->data.op[0].const_val = D.37906;
                  D.37905 = iargs[0];
                  D.37905 = iargs[0];
                  D.37905->prev = 0B;
                  D.37907 = D.37905->prev;
                  D.37905->next = D.37907;
                  D.37905 = iargs[0];
                  D.37905->opcode = 362;
                  D.37905 = iargs[0];
                  D.37905->flags = 0;
                  D.37905 = iargs[0];
                  D.37905->type = 0;
                  D.37905 = iargs[0];
                  D.37905->dreg = -1;
                  D.37905 = iargs[0];
                  D.37905 = iargs[0];
                  D.37905 = iargs[0];
                  D.37905->sreg3 = -1;
                  D.37908 = D.37905->sreg3;
                  D.37905->sreg2 = D.37908;
                  D.37909 = D.37905->sreg2;
                  D.37905->sreg1 = D.37909;
                  D.37905 = iargs[0];
                  D.30712 = cfg->ip;
                  D.37905->cil_code = D.30712;
                  D.37905 = iargs[0];
                  D.30513 = cfg->domain;
                  D.37905->data.op[0].p = D.30513;
                  D.37905 = iargs[0];
                  D.37905->type = 3;
                  D.37905 = iargs[0];
                  D.37929 = alloc_dreg (cfg, 3);
                  D.37930 = (int) D.37929;
                  D.37905->dreg = D.37930;
                  <D.37902>:
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  if (D.30741 != 0B) goto <D.37931>; else goto <D.37932>;
                  <D.37931>:
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.37905 = iargs[0];
                  D.30741->next = D.37905;
                  D.37905 = iargs[0];
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.37905->prev = D.30741;
                  bblock.127 = cfg->cbb;
                  D.37905 = iargs[0];
                  bblock.127->last_ins = D.37905;
                  goto <D.37933>;
                  <D.37932>:
                  bblock.127 = cfg->cbb;
                  bblock.127 = cfg->cbb;
                  D.37905 = iargs[0];
                  bblock.127->last_ins = D.37905;
                  D.30741 = bblock.127->last_ins;
                  bblock.127->code = D.30741;
                  <D.37933>:
                  D.30489 = cfg->mempool;
                  D.37934 = mono_mempool_alloc (D.30489, 48);
                  iargs[1] = D.37934;
                  D.37935 = iargs[1];
                  D.37935 = iargs[1];
                  D.37935->data.op[1].const_val = 0;
                  D.37936 = D.37935->data.op[1].const_val;
                  D.37935->data.op[0].const_val = D.37936;
                  D.37935 = iargs[1];
                  D.37935 = iargs[1];
                  D.37935->prev = 0B;
                  D.37937 = D.37935->prev;
                  D.37935->next = D.37937;
                  D.37935 = iargs[1];
                  D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
                  D.30884 = D.30883 & 64;
                  if (D.30884 != 0) goto <D.37939>; else goto <D.37940>;
                  <D.37939>:
                  iftmp.270 = 738;
                  goto <D.37941>;
                  <D.37940>:
                  iftmp.270 = 362;
                  <D.37941>:
                  D.37935->opcode = iftmp.270;
                  D.37935 = iargs[1];
                  D.37935->flags = 0;
                  D.37935 = iargs[1];
                  D.37935->type = 0;
                  D.37935 = iargs[1];
                  D.37935->dreg = -1;
                  D.37935 = iargs[1];
                  D.37935 = iargs[1];
                  D.37935 = iargs[1];
                  D.37935->sreg3 = -1;
                  D.37942 = D.37935->sreg3;
                  D.37935->sreg2 = D.37942;
                  D.37943 = D.37935->sreg2;
                  D.37935->sreg1 = D.37943;
                  D.37935 = iargs[1];
                  D.30712 = cfg->ip;
                  D.37935->cil_code = D.30712;
                  D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
                  D.30884 = D.30883 & 64;
                  if (D.30884 != 0) goto <D.37944>; else goto <D.37945>;
                  <D.37944>:
                  {
                    struct MonoInst * group;
                    struct MonoInst * got_loc;

                    got_loc = mono_get_got_var (cfg);
                    D.30489 = cfg->mempool;
                    group = mono_mempool_alloc (D.30489, 48);
                    group->data.op[1].const_val = 0;
                    D.37946 = group->data.op[1].const_val;
                    group->data.op[0].const_val = D.37946;
                    group->prev = 0B;
                    D.37947 = group->prev;
                    group->next = D.37947;
                    group->opcode = 737;
                    group->flags = 0;
                    group->type = 0;
                    group->dreg = -1;
                    group->sreg3 = -1;
                    D.37948 = group->sreg3;
                    group->sreg2 = D.37948;
                    D.37949 = group->sreg2;
                    group->sreg1 = D.37949;
                    D.30712 = cfg->ip;
                    group->cil_code = D.30712;
                    klass.173 = klass;
                    group->data.op[0].src = klass.173;
                    group->data.op[1].src = 11B;
                    D.37935 = iargs[1];
                    D.37950 = got_loc->dreg;
                    D.37935->sreg1 = D.37950;
                    D.37935 = iargs[1];
                    D.37935->data.op[1].p = group;
                  }
                  goto <D.37951>;
                  <D.37945>:
                  D.37935 = iargs[1];
                  klass.173 = klass;
                  D.37935->data.op[0].p = klass.173;
                  D.37935 = iargs[1];
                  D.37935->data.op[1].src = 11B;
                  <D.37951>:
                  D.37935 = iargs[1];
                  D.37935->type = 3;
                  D.37935 = iargs[1];
                  D.37952 = alloc_dreg (cfg, 3);
                  D.37953 = (int) D.37952;
                  D.37935->dreg = D.37953;
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  if (D.30741 != 0B) goto <D.37954>; else goto <D.37955>;
                  <D.37954>:
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.37935 = iargs[1];
                  D.30741->next = D.37935;
                  D.37935 = iargs[1];
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.37935->prev = D.30741;
                  bblock.127 = cfg->cbb;
                  D.37935 = iargs[1];
                  bblock.127->last_ins = D.37935;
                  goto <D.37956>;
                  <D.37955>:
                  bblock.127 = cfg->cbb;
                  bblock.127 = cfg->cbb;
                  D.37935 = iargs[1];
                  bblock.127->last_ins = D.37935;
                  D.30741 = bblock.127->last_ins;
                  bblock.127->code = D.30741;
                  <D.37956>:
                  D.31489 = *sp;
                  iargs[2] = D.31489;
                  ins = mono_emit_jit_icall (cfg, mono_array_new, &iargs);
                }
              finally
                {
                  iargs = {CLOBBER};
                }
            }
            goto <D.37957>;
            <D.37899>:
            {
              struct MonoClass * array_type;

              klass.173 = klass;
              array_type = mono_array_class_get (klass.173, 1);
              D.30513 = cfg->domain;
              mono_class_vtable (D.30513, array_type);
              if (array_type == 0B) goto <D.37958>; else goto <D.37960>;
              <D.37960>:
              D.37961 = array_type->exception_type;
              if (D.37961 != 0) goto <D.37958>; else goto <D.37959>;
              <D.37958>:
              cfg->exception_ptr = array_type;
              D.37962 = mini_get_debug_options ();
              D.37963 = D.37962->break_on_unverified;
              if (D.37963 != 0) goto <D.37964>; else goto load_error;
              <D.37964>:
              __asm__ __volatile__("int $03");
              <D.37959>:
              D.30489 = cfg->mempool;
              ins = mono_mempool_alloc (D.30489, 48);
              ins->data.op[1].const_val = 0;
              D.30708 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.30708;
              ins->prev = 0B;
              D.30709 = ins->prev;
              ins->next = D.30709;
              ins->opcode = 786;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.30710 = ins->sreg3;
              ins->sreg2 = D.30710;
              D.30711 = ins->sreg2;
              ins->sreg1 = D.30711;
              D.30712 = cfg->ip;
              ins->cil_code = D.30712;
              D.37965 = alloc_ireg_ref (cfg);
              D.37966 = (int) D.37965;
              ins->dreg = D.37966;
              D.31489 = *sp;
              D.31682 = D.31489->dreg;
              ins->sreg1 = D.31682;
              klass.173 = klass;
              ins->data.op[1].klass = klass.173;
              ins->type = 6;
              ins->klass = array_type;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.37967>; else goto <D.37968>;
              <D.37967>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = ins;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              ins->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              goto <D.37969>;
              <D.37968>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.37969>:
              D.30919 = cfg->flags;
              D.37970 = D.30919 | 256;
              cfg->flags = D.37970;
              bblock.127 = cfg->cbb;
              bblock.127->has_array_access = 1;
              mono_get_got_var (cfg);
            }
            <D.37957>:
            <D.37897>:
            len_ins = *sp;
            ip = ip + 5;
            sp.271 = sp;
            sp = sp.271 + 4;
            *sp.271 = ins;
            inline_costs = inline_costs + 1;
            D.30881 = cfg->opt;
            D.32932 = D.30881 & 2048;
            if (D.32932 != 0) goto <D.37972>; else goto <D.37973>;
            <D.37972>:
            D.35322 = ip + 6;
            if (D.35322 < end) goto <D.37974>; else goto <D.37975>;
            <D.37974>:
            D.37976 = ip + 6;
            bblock.78 = bblock;
            D.37977 = ip_in_bb (cfg, bblock.78, D.37976);
            if (D.37977 != 0) goto <D.37978>; else goto <D.37979>;
            <D.37978>:
            D.37980 = len_ins->opcode;
            if (D.37980 == 362) goto <D.37981>; else goto <D.37982>;
            <D.37981>:
            D.37983 = len_ins->data.op[0].const_val;
            D.37984 = (unsigned int) D.37983;
            klass.173 = klass;
            D.32471 = cfg->compile_aot;
            D.32472 = (int) D.32471;
            data_ptr = initialize_array_data (method, D.32472, ip, klass.173, D.37984, &data_size, &field_token);
            if (data_ptr != 0B) goto <D.37985>; else goto <D.37986>;
            <D.37985>:
            {
              struct MonoMethod * memcpy_method;
              struct MonoInst * iargs[3];
              int add_reg;

              try
                {
                  memcpy_method = get_memcpy_method ();
                  D.37987 = alloc_ireg_mp (cfg);
                  add_reg = (int) D.37987;
                  D.30489 = cfg->mempool;
                  D.37988 = mono_mempool_alloc (D.30489, 48);
                  iargs[0] = D.37988;
                  D.37989 = iargs[0];
                  D.37989 = iargs[0];
                  D.37989->data.op[1].const_val = 0;
                  D.37990 = D.37989->data.op[1].const_val;
                  D.37989->data.op[0].const_val = D.37990;
                  D.37989 = iargs[0];
                  D.37989 = iargs[0];
                  D.37989->prev = 0B;
                  D.37991 = D.37989->prev;
                  D.37989->next = D.37991;
                  D.37989 = iargs[0];
                  D.37989->opcode = 629;
                  D.37989 = iargs[0];
                  D.37989->flags = 0;
                  D.37989 = iargs[0];
                  D.37989->type = 0;
                  D.37989 = iargs[0];
                  D.37989->dreg = -1;
                  D.37989 = iargs[0];
                  D.37989 = iargs[0];
                  D.37989 = iargs[0];
                  D.37989->sreg3 = -1;
                  D.37992 = D.37989->sreg3;
                  D.37989->sreg2 = D.37992;
                  D.37993 = D.37989->sreg2;
                  D.37989->sreg1 = D.37993;
                  D.37989 = iargs[0];
                  D.30712 = cfg->ip;
                  D.37989->cil_code = D.30712;
                  D.37989 = iargs[0];
                  D.37989->dreg = add_reg;
                  D.37989 = iargs[0];
                  D.30903 = ins->dreg;
                  D.37989->sreg1 = D.30903;
                  D.37989 = iargs[0];
                  D.37989->data.op[1].const_val = 16;
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  if (D.30741 != 0B) goto <D.37994>; else goto <D.37995>;
                  <D.37994>:
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.37989 = iargs[0];
                  D.30741->next = D.37989;
                  D.37989 = iargs[0];
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.37989->prev = D.30741;
                  bblock.127 = cfg->cbb;
                  D.37989 = iargs[0];
                  bblock.127->last_ins = D.37989;
                  goto <D.37996>;
                  <D.37995>:
                  bblock.127 = cfg->cbb;
                  bblock.127 = cfg->cbb;
                  D.37989 = iargs[0];
                  bblock.127->last_ins = D.37989;
                  D.30741 = bblock.127->last_ins;
                  bblock.127->code = D.30741;
                  <D.37996>:
                  D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
                  D.30884 = D.30883 & 64;
                  if (D.30884 != 0) goto <D.37997>; else goto <D.37998>;
                  <D.37997>:
                  {
                    struct MonoInst * group;
                    struct MonoInst * got_loc;

                    D.30489 = cfg->mempool;
                    D.37999 = mono_mempool_alloc (D.30489, 48);
                    iargs[1] = D.37999;
                    D.38000 = iargs[1];
                    D.38000 = iargs[1];
                    D.38000->data.op[1].const_val = 0;
                    D.38001 = D.38000->data.op[1].const_val;
                    D.38000->data.op[0].const_val = D.38001;
                    D.38000 = iargs[1];
                    D.38000 = iargs[1];
                    D.38000->prev = 0B;
                    D.38002 = D.38000->prev;
                    D.38000->next = D.38002;
                    D.38000 = iargs[1];
                    D.38000->opcode = 738;
                    D.38000 = iargs[1];
                    D.38000->flags = 0;
                    D.38000 = iargs[1];
                    D.38000->type = 0;
                    D.38000 = iargs[1];
                    D.38000->dreg = -1;
                    D.38000 = iargs[1];
                    D.38000 = iargs[1];
                    D.38000 = iargs[1];
                    D.38000->sreg3 = -1;
                    D.38003 = D.38000->sreg3;
                    D.38000->sreg2 = D.38003;
                    D.38004 = D.38000->sreg2;
                    D.38000->sreg1 = D.38004;
                    D.38000 = iargs[1];
                    D.30712 = cfg->ip;
                    D.38000->cil_code = D.30712;
                    got_loc = mono_get_got_var (cfg);
                    D.30489 = cfg->mempool;
                    group = mono_mempool_alloc (D.30489, 48);
                    group->data.op[1].const_val = 0;
                    D.38005 = group->data.op[1].const_val;
                    group->data.op[0].const_val = D.38005;
                    group->prev = 0B;
                    D.38006 = group->prev;
                    group->next = D.38006;
                    group->opcode = 737;
                    group->flags = 0;
                    group->type = 0;
                    group->dreg = -1;
                    group->sreg3 = -1;
                    D.38007 = group->sreg3;
                    group->sreg2 = D.38007;
                    D.38008 = group->sreg2;
                    group->sreg1 = D.38008;
                    D.30712 = cfg->ip;
                    group->cil_code = D.30712;
                    group->data.op[0].src = 0B;
                    group->data.op[1].src = 29B;
                    field_token.272 = field_token;
                    D.30426 = method->klass;
                    D.30427 = D.30426->image;
                    D.30489 = cfg->mempool;
                    D.38010 = mono_jump_info_token_new2 (D.30489, D.30427, field_token.272, 0B);
                    group->data.op[0].p = D.38010;
                    D.38000 = iargs[1];
                    D.38011 = got_loc->dreg;
                    D.38000->sreg1 = D.38011;
                    D.38000 = iargs[1];
                    D.38000->data.op[1].p = group;
                    D.38000 = iargs[1];
                    D.38000->type = 3;
                    D.38000 = iargs[1];
                    D.38000->klass = 0B;
                    D.38000 = iargs[1];
                    D.38012 = alloc_dreg (cfg, 3);
                    D.38013 = (int) D.38012;
                    D.38000->dreg = D.38013;
                  }
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  if (D.30741 != 0B) goto <D.38014>; else goto <D.38015>;
                  <D.38014>:
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.38000 = iargs[1];
                  D.30741->next = D.38000;
                  D.38000 = iargs[1];
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.38000->prev = D.30741;
                  bblock.127 = cfg->cbb;
                  D.38000 = iargs[1];
                  bblock.127->last_ins = D.38000;
                  goto <D.38016>;
                  <D.38015>:
                  bblock.127 = cfg->cbb;
                  bblock.127 = cfg->cbb;
                  D.38000 = iargs[1];
                  bblock.127->last_ins = D.38000;
                  D.30741 = bblock.127->last_ins;
                  bblock.127->code = D.30741;
                  <D.38016>:
                  goto <D.38017>;
                  <D.37998>:
                  D.30489 = cfg->mempool;
                  D.38018 = mono_mempool_alloc (D.30489, 48);
                  iargs[1] = D.38018;
                  D.38000 = iargs[1];
                  D.38000 = iargs[1];
                  D.38000->data.op[1].const_val = 0;
                  D.38001 = D.38000->data.op[1].const_val;
                  D.38000->data.op[0].const_val = D.38001;
                  D.38000 = iargs[1];
                  D.38000 = iargs[1];
                  D.38000->prev = 0B;
                  D.38002 = D.38000->prev;
                  D.38000->next = D.38002;
                  D.38000 = iargs[1];
                  D.38000->opcode = 362;
                  D.38000 = iargs[1];
                  D.38000->flags = 0;
                  D.38000 = iargs[1];
                  D.38000->type = 0;
                  D.38000 = iargs[1];
                  D.38000->dreg = -1;
                  D.38000 = iargs[1];
                  D.38000 = iargs[1];
                  D.38000 = iargs[1];
                  D.38000->sreg3 = -1;
                  D.38003 = D.38000->sreg3;
                  D.38000->sreg2 = D.38003;
                  D.38004 = D.38000->sreg2;
                  D.38000->sreg1 = D.38004;
                  D.38000 = iargs[1];
                  D.30712 = cfg->ip;
                  D.38000->cil_code = D.30712;
                  D.38000 = iargs[1];
                  D.38000->data.op[0].p = data_ptr;
                  D.38000 = iargs[1];
                  D.38000->type = 3;
                  D.38000 = iargs[1];
                  D.38019 = alloc_dreg (cfg, 3);
                  D.38020 = (int) D.38019;
                  D.38000->dreg = D.38020;
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  if (D.30741 != 0B) goto <D.38021>; else goto <D.38022>;
                  <D.38021>:
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.38000 = iargs[1];
                  D.30741->next = D.38000;
                  D.38000 = iargs[1];
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.38000->prev = D.30741;
                  bblock.127 = cfg->cbb;
                  D.38000 = iargs[1];
                  bblock.127->last_ins = D.38000;
                  goto <D.38023>;
                  <D.38022>:
                  bblock.127 = cfg->cbb;
                  bblock.127 = cfg->cbb;
                  D.38000 = iargs[1];
                  bblock.127->last_ins = D.38000;
                  D.30741 = bblock.127->last_ins;
                  bblock.127->code = D.30741;
                  <D.38023>:
                  <D.38017>:
                  D.30489 = cfg->mempool;
                  D.38024 = mono_mempool_alloc (D.30489, 48);
                  iargs[2] = D.38024;
                  D.38025 = iargs[2];
                  D.38025 = iargs[2];
                  D.38025->data.op[1].const_val = 0;
                  D.38026 = D.38025->data.op[1].const_val;
                  D.38025->data.op[0].const_val = D.38026;
                  D.38025 = iargs[2];
                  D.38025 = iargs[2];
                  D.38025->prev = 0B;
                  D.38027 = D.38025->prev;
                  D.38025->next = D.38027;
                  D.38025 = iargs[2];
                  D.38025->opcode = 362;
                  D.38025 = iargs[2];
                  D.38025->flags = 0;
                  D.38025 = iargs[2];
                  D.38025->type = 0;
                  D.38025 = iargs[2];
                  D.38025->dreg = -1;
                  D.38025 = iargs[2];
                  D.38025 = iargs[2];
                  D.38025 = iargs[2];
                  D.38025->sreg3 = -1;
                  D.38028 = D.38025->sreg3;
                  D.38025->sreg2 = D.38028;
                  D.38029 = D.38025->sreg2;
                  D.38025->sreg1 = D.38029;
                  D.38025 = iargs[2];
                  D.30712 = cfg->ip;
                  D.38025->cil_code = D.30712;
                  D.38025 = iargs[2];
                  data_size.273 = data_size;
                  D.38025->data.op[0].const_val = data_size.273;
                  D.38025 = iargs[2];
                  D.38025->type = 1;
                  D.38025 = iargs[2];
                  D.38031 = alloc_dreg (cfg, 1);
                  D.38032 = (int) D.38031;
                  D.38025->dreg = D.38032;
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  if (D.30741 != 0B) goto <D.38033>; else goto <D.38034>;
                  <D.38033>:
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.38025 = iargs[2];
                  D.30741->next = D.38025;
                  D.38025 = iargs[2];
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.38025->prev = D.30741;
                  bblock.127 = cfg->cbb;
                  D.38025 = iargs[2];
                  bblock.127->last_ins = D.38025;
                  goto <D.38035>;
                  <D.38034>:
                  bblock.127 = cfg->cbb;
                  bblock.127 = cfg->cbb;
                  D.38025 = iargs[2];
                  bblock.127->last_ins = D.38025;
                  D.30741 = bblock.127->last_ins;
                  bblock.127->code = D.30741;
                  <D.38035>:
                  mono_emit_method_call (cfg, memcpy_method, &iargs, 0B);
                  ip = ip + 11;
                }
              finally
                {
                  iargs = {CLOBBER};
                }
            }
            <D.37986>:
            <D.37982>:
            <D.37979>:
            <D.37975>:
            <D.37973>:
            goto <D.27380>;
          }
        finally
          {
            data_size = {CLOBBER};
            field_token = {CLOBBER};
          }
      }
      <D.27982>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      if (D.31274 <= 3) goto <D.38036>; else goto <D.38037>;
      <D.38036>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.38038>; else goto <D.38039>;
      <D.38038>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.38040>; else goto <D.38041>;
      <D.38040>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38041>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38039>:
      D.38042 = mini_get_debug_options ();
      D.38043 = D.38042->break_on_unverified;
      if (D.38043 != 0) goto <D.38044>; else goto unverified;
      <D.38044>:
      __asm__ __volatile__("int $03");
      <D.38037>:
      sp = sp + 4294967292;
      D.31489 = *sp;
      D.32169 = D.31489->type;
      if (D.32169 != 6) goto <D.38045>; else goto <D.38046>;
      <D.38045>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.38047>; else goto <D.38048>;
      <D.38047>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.38049>; else goto <D.38050>;
      <D.38049>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38050>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38048>:
      D.38051 = mini_get_debug_options ();
      D.38052 = D.38051->break_on_unverified;
      if (D.38052 != 0) goto <D.38053>; else goto unverified;
      <D.38053>:
      __asm__ __volatile__("int $03");
      <D.38046>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 787;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      D.38054 = alloc_preg (cfg);
      D.38055 = (int) D.38054;
      ins->dreg = D.38055;
      D.31489 = *sp;
      D.31682 = D.31489->dreg;
      ins->sreg1 = D.31682;
      ins->type = 1;
      D.31348 = ins->flags;
      D.38056 = D.31348 | 32;
      ins->flags = D.38056;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.38057>; else goto <D.38058>;
      <D.38057>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.38059>;
      <D.38058>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.38059>:
      D.30919 = cfg->flags;
      D.37970 = D.30919 | 256;
      cfg->flags = D.37970;
      bblock.127 = cfg->cbb;
      bblock.127->has_array_access = 1;
      ip = ip + 1;
      sp.274 = sp;
      sp = sp.274 + 4;
      *sp.274 = ins;
      goto <D.27380>;
      <D.27983>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      if (D.31274 <= 7) goto <D.38061>; else goto <D.38062>;
      <D.38061>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.38063>; else goto <D.38064>;
      <D.38063>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.38065>; else goto <D.38066>;
      <D.38065>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38066>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38064>:
      D.38067 = mini_get_debug_options ();
      D.38068 = D.38067->break_on_unverified;
      if (D.38068 != 0) goto <D.38069>; else goto unverified;
      <D.38069>:
      __asm__ __volatile__("int $03");
      <D.38062>:
      sp = sp + 4294967288;
      D.31934 = ip + 5;
      if (D.31934 > end) goto <D.38070>; else goto <D.38071>;
      <D.38070>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.38072>; else goto <D.38073>;
      <D.38072>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.38074>; else goto <D.38075>;
      <D.38074>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38075>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38073>:
      D.38076 = mini_get_debug_options ();
      D.38077 = D.38076->break_on_unverified;
      if (D.38077 != 0) goto <D.38078>; else goto unverified;
      <D.38078>:
      __asm__ __volatile__("int $03");
      <D.38071>:
      D.31489 = *sp;
      D.32169 = D.31489->type;
      if (D.32169 != 6) goto <D.38079>; else goto <D.38080>;
      <D.38079>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.38081>; else goto <D.38082>;
      <D.38081>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.38083>; else goto <D.38084>;
      <D.38083>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38084>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38082>:
      D.38085 = mini_get_debug_options ();
      D.38086 = D.38085->break_on_unverified;
      if (D.38086 != 0) goto <D.38087>; else goto unverified;
      <D.38087>:
      __asm__ __volatile__("int $03");
      <D.38080>:
      D.30919 = cfg->flags;
      D.38088 = D.30919 | 4;
      cfg->flags = D.38088;
      D.31953 = ip + 1;
      D.31954 = *D.31953;
      klass.275 = mini_get_class (method, D.31954, generic_context);
      klass = klass.275;
      klass.173 = klass;
      if (klass.173 == 0B) goto <D.38090>; else goto <D.38092>;
      <D.38092>:
      klass.173 = klass;
      D.35265 = klass.173->exception_type;
      if (D.35265 != 0) goto <D.38090>; else goto <D.38091>;
      <D.38090>:
      klass.173 = klass;
      cfg->exception_ptr = klass.173;
      D.38093 = mini_get_debug_options ();
      D.38094 = D.38093->break_on_unverified;
      if (D.38094 != 0) goto <D.38095>; else goto load_error;
      <D.38095>:
      __asm__ __volatile__("int $03");
      <D.38091>:
      klass.173 = klass;
      D.36797 = BIT_FIELD_REF <*klass.173, 8, 160>;
      D.36798 = D.36797 & 8;
      if (D.36798 == 0) goto <D.38096>; else goto <D.38097>;
      <D.38096>:
      D.30431 = BIT_FIELD_REF <*method, 8, 160>;
      D.30432 = D.30431 & 124;
      if (D.30432 == 0) goto <D.38098>; else goto <D.38099>;
      <D.38098>:
      if (readonly == 0) goto <D.38100>; else goto <D.38101>;
      <D.38100>:
      {
        struct MonoClass * array_class;

        klass.173 = klass;
        array_class = mono_array_class_get (klass.173, 1);
        D.31489 = *sp;
        mini_emit_check_array_type (cfg, D.31489, array_class);
        if (array_class == 0B) goto <D.38102>; else goto <D.38104>;
        <D.38104>:
        D.38105 = array_class->exception_type;
        if (D.38105 != 0) goto <D.38102>; else goto <D.38103>;
        <D.38102>:
        cfg->exception_ptr = array_class;
        D.38106 = mini_get_debug_options ();
        D.38107 = D.38106->break_on_unverified;
        if (D.38107 != 0) goto <D.38108>; else goto load_error;
        <D.38108>:
        __asm__ __volatile__("int $03");
        <D.38103>:
      }
      <D.38101>:
      <D.38099>:
      <D.38097>:
      readonly = 0;
      D.32655 = sp + 4;
      D.32656 = *D.32655;
      D.31489 = *sp;
      klass.173 = klass;
      ins = mini_emit_ldelema_1_ins (cfg, klass.173, D.31489, D.32656, 1);
      sp.276 = sp;
      sp = sp.276 + 4;
      *sp.276 = ins;
      ip = ip + 5;
      goto <D.27380>;
      <D.27985>:
      <D.27986>:
      <D.27987>:
      <D.27988>:
      <D.27989>:
      <D.27990>:
      <D.27991>:
      <D.27992>:
      <D.27993>:
      <D.27994>:
      <D.27995>:
      <D.27996>:
      {
        struct MonoInst * addr;

        sp.85 = (int) sp;
        stack_start.86 = (int) stack_start;
        D.31274 = sp.85 - stack_start.86;
        if (D.31274 <= 7) goto <D.38110>; else goto <D.38111>;
        <D.38110>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.38112>; else goto <D.38113>;
        <D.38112>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.38114>; else goto <D.38115>;
        <D.38114>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38115>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38113>:
        D.38116 = mini_get_debug_options ();
        D.38117 = D.38116->break_on_unverified;
        if (D.38117 != 0) goto <D.38118>; else goto unverified;
        <D.38118>:
        __asm__ __volatile__("int $03");
        <D.38111>:
        sp = sp + 4294967288;
        D.31371 = *ip;
        if (D.31371 == 163) goto <D.38119>; else goto <D.38120>;
        <D.38119>:
        D.31934 = ip + 5;
        if (D.31934 > end) goto <D.38121>; else goto <D.38122>;
        <D.38121>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.38123>; else goto <D.38124>;
        <D.38123>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.38125>; else goto <D.38126>;
        <D.38125>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38126>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38124>:
        D.38127 = mini_get_debug_options ();
        D.38128 = D.38127->break_on_unverified;
        if (D.38128 != 0) goto <D.38129>; else goto unverified;
        <D.38129>:
        __asm__ __volatile__("int $03");
        <D.38122>:
        token = MEM[(const guint32 *)ip + 1B];
        klass.277 = mini_get_class (method, token, generic_context);
        klass = klass.277;
        klass.173 = klass;
        if (klass.173 == 0B) goto <D.38131>; else goto <D.38133>;
        <D.38133>:
        klass.173 = klass;
        D.35265 = klass.173->exception_type;
        if (D.35265 != 0) goto <D.38131>; else goto <D.38132>;
        <D.38131>:
        klass.173 = klass;
        cfg->exception_ptr = klass.173;
        D.38134 = mini_get_debug_options ();
        D.38135 = D.38134->break_on_unverified;
        if (D.38135 != 0) goto <D.38136>; else goto load_error;
        <D.38136>:
        __asm__ __volatile__("int $03");
        <D.38132>:
        klass.173 = klass;
        mono_class_init (klass.173);
        goto <D.38137>;
        <D.38120>:
        D.31371 = *ip;
        D.31372 = (int) D.31371;
        klass.278 = array_access_to_klass (D.31372);
        klass = klass.278;
        <D.38137>:
        D.31489 = *sp;
        D.32169 = D.31489->type;
        if (D.32169 != 6) goto <D.38139>; else goto <D.38140>;
        <D.38139>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.38141>; else goto <D.38142>;
        <D.38141>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.38143>; else goto <D.38144>;
        <D.38143>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38144>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38142>:
        D.38145 = mini_get_debug_options ();
        D.38146 = D.38145->break_on_unverified;
        if (D.38146 != 0) goto <D.38147>; else goto unverified;
        <D.38147>:
        __asm__ __volatile__("int $03");
        <D.38140>:
        D.30919 = cfg->flags;
        D.38088 = D.30919 | 4;
        cfg->flags = D.38088;
        klass.173 = klass;
        D.38148 = mini_is_gsharedvt_variable_klass (cfg, klass.173);
        if (D.38148 != 0) goto <D.38149>; else goto <D.38150>;
        <D.38149>:
        D.32655 = sp + 4;
        D.32656 = *D.32655;
        D.31489 = *sp;
        klass.173 = klass;
        addr = mini_emit_ldelema_1_ins (cfg, klass.173, D.31489, D.32656, 1);
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        klass.173 = klass;
        D.35339 = &klass.173->byval_arg;
        D.38151 = mono_type_to_load_membase (cfg, D.35339);
        D.38152 = (short unsigned int) D.38151;
        ins->opcode = D.38152;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        ins->dreg = 0;
        D.38153 = addr->dreg;
        ins->sreg1 = D.38153;
        ins->data.op[0].const_val = 0;
        ins->type = 1;
        klass.173 = klass;
        D.35339 = &klass.173->byval_arg;
        type_to_eval_stack_type (cfg, D.35339, ins);
        D.31249 = ins->type;
        D.31250 = (<unnamed type>) D.31249;
        D.38154 = alloc_dreg (cfg, D.31250);
        D.38155 = (int) D.38154;
        ins->dreg = D.38155;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.38156>; else goto <D.38157>;
        <D.38156>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = ins;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        ins->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        goto <D.38158>;
        <D.38157>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.38158>:
        ins->opcode = 403;
        goto <D.38159>;
        <D.38150>:
        D.32655 = sp + 4;
        D.32656 = *D.32655;
        D.34936 = D.32656->opcode;
        if (D.34936 == 362) goto <D.38160>; else goto <D.38161>;
        <D.38160>:
        {
          int array_reg;
          int index_reg;
          int offset;

          D.31489 = *sp;
          array_reg = D.31489->dreg;
          D.32655 = sp + 4;
          D.32656 = *D.32655;
          index_reg = D.32656->dreg;
          klass.173 = klass;
          D.38162 = mono_class_array_element_size (klass.173);
          D.32655 = sp + 4;
          D.32656 = *D.32655;
          D.34961 = D.32656->data.op[0].const_val;
          D.38163 = D.38162 * D.34961;
          D.38164 = (unsigned int) D.38163;
          D.38165 = D.38164 + 16;
          offset = (int) D.38165;
          D.30881 = cfg->opt;
          D.38166 = D.30881 & 134217728;
          if (D.38166 == 0) goto <D.38167>; else goto <D.38168>;
          <D.38167>:
          D.30881 = cfg->opt;
          D.38169 = D.30881 & 262144;
          if (D.38169 == 0) goto <D.38170>; else goto <D.38171>;
          <D.38170>:
          D.30476 = BIT_FIELD_REF <*cfg, 8, 3424>;
          D.31134 = D.30476 & 64;
          if (D.31134 != 0) goto <D.38172>; else goto <D.38173>;
          <D.38172>:
          {
            struct MonoInst * inst;

            D.30489 = cfg->mempool;
            inst = mono_mempool_alloc (D.30489, 48);
            inst->data.op[1].const_val = 0;
            D.38174 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.38174;
            inst->prev = 0B;
            D.38175 = inst->prev;
            inst->next = D.38175;
            inst->opcode = 323;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.38176 = inst->sreg3;
            inst->sreg2 = D.38176;
            D.38177 = inst->sreg2;
            inst->sreg1 = D.38177;
            D.30712 = cfg->ip;
            inst->cil_code = D.30712;
            inst->dreg = -1;
            inst->sreg1 = array_reg;
            inst->data.op[1].const_val = 0;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.38178>; else goto <D.38179>;
            <D.38178>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = inst;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            inst->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            goto <D.38180>;
            <D.38179>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.38180>:
          }
          {
            struct MonoInst * inst;

            D.30489 = cfg->mempool;
            inst = mono_mempool_alloc (D.30489, 48);
            inst->data.op[1].const_val = 0;
            D.38181 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.38181;
            inst->prev = 0B;
            D.38182 = inst->prev;
            inst->next = D.38182;
            inst->opcode = 455;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.38183 = inst->sreg3;
            inst->sreg2 = D.38183;
            D.38184 = inst->sreg2;
            inst->sreg1 = D.38184;
            D.30712 = cfg->ip;
            inst->cil_code = D.30712;
            inst->data.op[1].p = "NullReferenceException";
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.38185>; else goto <D.38186>;
            <D.38185>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = inst;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            inst->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            goto <D.38187>;
            <D.38186>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.38187>:
          }
          goto <D.38188>;
          <D.38173>:
          <D.38188>:
          if (0 != 0) goto <D.38189>; else goto <D.38190>;
          <D.38189>:
          {
            int _length_reg;

            D.38191 = alloc_ireg (cfg);
            _length_reg = (int) D.38191;
            if (1 != 0) goto <D.38192>; else goto <D.38193>;
            <D.38192>:
            {
              struct MonoInst * inst;
              int __ins_flags;

              __ins_flags = 32;
              D.38194 = __ins_flags & 32;
              if (D.38194 != 0) goto <D.38195>; else goto <D.38196>;
              <D.38195>:
              D.30476 = BIT_FIELD_REF <*cfg, 8, 3424>;
              D.31134 = D.30476 & 64;
              if (D.31134 != 0) goto <D.38197>; else goto <D.38198>;
              <D.38197>:
              {
                struct MonoInst * inst;

                D.30489 = cfg->mempool;
                inst = mono_mempool_alloc (D.30489, 48);
                inst->data.op[1].const_val = 0;
                D.38199 = inst->data.op[1].const_val;
                inst->data.op[0].const_val = D.38199;
                inst->prev = 0B;
                D.38200 = inst->prev;
                inst->next = D.38200;
                inst->opcode = 323;
                inst->flags = 0;
                inst->type = 0;
                inst->dreg = -1;
                inst->sreg3 = -1;
                D.38201 = inst->sreg3;
                inst->sreg2 = D.38201;
                D.38202 = inst->sreg2;
                inst->sreg1 = D.38202;
                D.30712 = cfg->ip;
                inst->cil_code = D.30712;
                inst->dreg = -1;
                inst->sreg1 = array_reg;
                inst->data.op[1].const_val = 0;
                bblock.127 = cfg->cbb;
                D.30741 = bblock.127->last_ins;
                if (D.30741 != 0B) goto <D.38203>; else goto <D.38204>;
                <D.38203>:
                bblock.127 = cfg->cbb;
                D.30741 = bblock.127->last_ins;
                D.30741->next = inst;
                bblock.127 = cfg->cbb;
                D.30741 = bblock.127->last_ins;
                inst->prev = D.30741;
                bblock.127 = cfg->cbb;
                bblock.127->last_ins = inst;
                goto <D.38205>;
                <D.38204>:
                bblock.127 = cfg->cbb;
                bblock.127 = cfg->cbb;
                bblock.127->last_ins = inst;
                D.30741 = bblock.127->last_ins;
                bblock.127->code = D.30741;
                <D.38205>:
              }
              {
                struct MonoInst * inst;

                D.30489 = cfg->mempool;
                inst = mono_mempool_alloc (D.30489, 48);
                inst->data.op[1].const_val = 0;
                D.38206 = inst->data.op[1].const_val;
                inst->data.op[0].const_val = D.38206;
                inst->prev = 0B;
                D.38207 = inst->prev;
                inst->next = D.38207;
                inst->opcode = 455;
                inst->flags = 0;
                inst->type = 0;
                inst->dreg = -1;
                inst->sreg3 = -1;
                D.38208 = inst->sreg3;
                inst->sreg2 = D.38208;
                D.38209 = inst->sreg2;
                inst->sreg1 = D.38209;
                D.30712 = cfg->ip;
                inst->cil_code = D.30712;
                inst->data.op[1].p = "NullReferenceException";
                bblock.127 = cfg->cbb;
                D.30741 = bblock.127->last_ins;
                if (D.30741 != 0B) goto <D.38210>; else goto <D.38211>;
                <D.38210>:
                bblock.127 = cfg->cbb;
                D.30741 = bblock.127->last_ins;
                D.30741->next = inst;
                bblock.127 = cfg->cbb;
                D.30741 = bblock.127->last_ins;
                inst->prev = D.30741;
                bblock.127 = cfg->cbb;
                bblock.127->last_ins = inst;
                goto <D.38212>;
                <D.38211>:
                bblock.127 = cfg->cbb;
                bblock.127 = cfg->cbb;
                bblock.127->last_ins = inst;
                D.30741 = bblock.127->last_ins;
                bblock.127->code = D.30741;
                <D.38212>:
              }
              goto <D.38213>;
              <D.38198>:
              <D.38213>:
              <D.38196>:
              D.30489 = cfg->mempool;
              inst = mono_mempool_alloc (D.30489, 48);
              inst->data.op[1].const_val = 0;
              D.38214 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.38214;
              inst->prev = 0B;
              D.38215 = inst->prev;
              inst->next = D.38215;
              inst->opcode = 396;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.38216 = inst->sreg3;
              inst->sreg2 = D.38216;
              D.38217 = inst->sreg2;
              inst->sreg1 = D.38217;
              D.30712 = cfg->ip;
              inst->cil_code = D.30712;
              inst->dreg = _length_reg;
              inst->sreg1 = array_reg;
              inst->data.op[0].const_val = 12;
              inst->type = 1;
              D.38218 = (unsigned char) __ins_flags;
              inst->flags = D.38218;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.38219>; else goto <D.38220>;
              <D.38219>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = inst;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              inst->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              goto <D.38221>;
              <D.38220>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.38221>:
            }
            goto <D.38222>;
            <D.38193>:
            {
              struct MonoInst * inst;
              int __ins_flags;

              __ins_flags = 64;
              D.38223 = __ins_flags & 32;
              if (D.38223 != 0) goto <D.38224>; else goto <D.38225>;
              <D.38224>:
              D.30476 = BIT_FIELD_REF <*cfg, 8, 3424>;
              D.31134 = D.30476 & 64;
              if (D.31134 != 0) goto <D.38226>; else goto <D.38227>;
              <D.38226>:
              {
                struct MonoInst * inst;

                D.30489 = cfg->mempool;
                inst = mono_mempool_alloc (D.30489, 48);
                inst->data.op[1].const_val = 0;
                D.38228 = inst->data.op[1].const_val;
                inst->data.op[0].const_val = D.38228;
                inst->prev = 0B;
                D.38229 = inst->prev;
                inst->next = D.38229;
                inst->opcode = 323;
                inst->flags = 0;
                inst->type = 0;
                inst->dreg = -1;
                inst->sreg3 = -1;
                D.38230 = inst->sreg3;
                inst->sreg2 = D.38230;
                D.38231 = inst->sreg2;
                inst->sreg1 = D.38231;
                D.30712 = cfg->ip;
                inst->cil_code = D.30712;
                inst->dreg = -1;
                inst->sreg1 = array_reg;
                inst->data.op[1].const_val = 0;
                bblock.127 = cfg->cbb;
                D.30741 = bblock.127->last_ins;
                if (D.30741 != 0B) goto <D.38232>; else goto <D.38233>;
                <D.38232>:
                bblock.127 = cfg->cbb;
                D.30741 = bblock.127->last_ins;
                D.30741->next = inst;
                bblock.127 = cfg->cbb;
                D.30741 = bblock.127->last_ins;
                inst->prev = D.30741;
                bblock.127 = cfg->cbb;
                bblock.127->last_ins = inst;
                goto <D.38234>;
                <D.38233>:
                bblock.127 = cfg->cbb;
                bblock.127 = cfg->cbb;
                bblock.127->last_ins = inst;
                D.30741 = bblock.127->last_ins;
                bblock.127->code = D.30741;
                <D.38234>:
              }
              {
                struct MonoInst * inst;

                D.30489 = cfg->mempool;
                inst = mono_mempool_alloc (D.30489, 48);
                inst->data.op[1].const_val = 0;
                D.38235 = inst->data.op[1].const_val;
                inst->data.op[0].const_val = D.38235;
                inst->prev = 0B;
                D.38236 = inst->prev;
                inst->next = D.38236;
                inst->opcode = 455;
                inst->flags = 0;
                inst->type = 0;
                inst->dreg = -1;
                inst->sreg3 = -1;
                D.38237 = inst->sreg3;
                inst->sreg2 = D.38237;
                D.38238 = inst->sreg2;
                inst->sreg1 = D.38238;
                D.30712 = cfg->ip;
                inst->cil_code = D.30712;
                inst->data.op[1].p = "NullReferenceException";
                bblock.127 = cfg->cbb;
                D.30741 = bblock.127->last_ins;
                if (D.30741 != 0B) goto <D.38239>; else goto <D.38240>;
                <D.38239>:
                bblock.127 = cfg->cbb;
                D.30741 = bblock.127->last_ins;
                D.30741->next = inst;
                bblock.127 = cfg->cbb;
                D.30741 = bblock.127->last_ins;
                inst->prev = D.30741;
                bblock.127 = cfg->cbb;
                bblock.127->last_ins = inst;
                goto <D.38241>;
                <D.38240>:
                bblock.127 = cfg->cbb;
                bblock.127 = cfg->cbb;
                bblock.127->last_ins = inst;
                D.30741 = bblock.127->last_ins;
                bblock.127->code = D.30741;
                <D.38241>:
              }
              goto <D.38242>;
              <D.38227>:
              <D.38242>:
              <D.38225>:
              D.30489 = cfg->mempool;
              inst = mono_mempool_alloc (D.30489, 48);
              inst->data.op[1].const_val = 0;
              D.38243 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.38243;
              inst->prev = 0B;
              D.38244 = inst->prev;
              inst->next = D.38244;
              inst->opcode = 396;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.38245 = inst->sreg3;
              inst->sreg2 = D.38245;
              D.38246 = inst->sreg2;
              inst->sreg1 = D.38246;
              D.30712 = cfg->ip;
              inst->cil_code = D.30712;
              inst->dreg = _length_reg;
              inst->sreg1 = array_reg;
              inst->data.op[0].const_val = 12;
              inst->type = 1;
              D.38247 = (unsigned char) __ins_flags;
              inst->flags = D.38247;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.38248>; else goto <D.38249>;
              <D.38248>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = inst;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              inst->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              goto <D.38250>;
              <D.38249>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.38250>:
            }
            <D.38222>:
            {
              struct MonoInst * inst;

              D.30489 = cfg->mempool;
              inst = mono_mempool_alloc (D.30489, 48);
              inst->data.op[1].const_val = 0;
              D.38251 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.38251;
              inst->prev = 0B;
              D.38252 = inst->prev;
              inst->next = D.38252;
              inst->opcode = 322;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.38253 = inst->sreg3;
              inst->sreg2 = D.38253;
              D.38254 = inst->sreg2;
              inst->sreg1 = D.38254;
              D.30712 = cfg->ip;
              inst->cil_code = D.30712;
              inst->dreg = -1;
              inst->sreg1 = _length_reg;
              inst->sreg2 = index_reg;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.38255>; else goto <D.38256>;
              <D.38255>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = inst;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              inst->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              goto <D.38257>;
              <D.38256>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.38257>:
            }
            {
              struct MonoInst * inst;

              D.30489 = cfg->mempool;
              inst = mono_mempool_alloc (D.30489, 48);
              inst->data.op[1].const_val = 0;
              D.38258 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.38258;
              inst->prev = 0B;
              D.38259 = inst->prev;
              inst->next = D.38259;
              inst->opcode = 463;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.38260 = inst->sreg3;
              inst->sreg2 = D.38260;
              D.38261 = inst->sreg2;
              inst->sreg1 = D.38261;
              D.30712 = cfg->ip;
              inst->cil_code = D.30712;
              inst->data.op[1].p = "IndexOutOfRangeException";
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.38262>; else goto <D.38263>;
              <D.38262>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = inst;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              inst->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              goto <D.38264>;
              <D.38263>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.38264>:
            }
          }
          goto <D.38265>;
          <D.38190>:
          {
            struct MonoInst * inst;

            D.30489 = cfg->mempool;
            inst = mono_mempool_alloc (D.30489, 48);
            inst->data.op[1].const_val = 0;
            D.38266 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.38266;
            inst->prev = 0B;
            D.38267 = inst->prev;
            inst->next = D.38267;
            inst->opcode = 1006;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.38268 = inst->sreg3;
            inst->sreg2 = D.38268;
            D.38269 = inst->sreg2;
            inst->sreg1 = D.38269;
            D.30712 = cfg->ip;
            inst->cil_code = D.30712;
            inst->sreg1 = array_reg;
            inst->data.op[0].const_val = 12;
            inst->sreg2 = index_reg;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.38270>; else goto <D.38271>;
            <D.38270>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = inst;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            inst->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            goto <D.38272>;
            <D.38271>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.38272>:
            {
              struct MonoInst * inst;

              D.30489 = cfg->mempool;
              inst = mono_mempool_alloc (D.30489, 48);
              inst->data.op[1].const_val = 0;
              D.38273 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.38273;
              inst->prev = 0B;
              D.38274 = inst->prev;
              inst->next = D.38274;
              inst->opcode = 463;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.38275 = inst->sreg3;
              inst->sreg2 = D.38275;
              D.38276 = inst->sreg2;
              inst->sreg1 = D.38276;
              D.30712 = cfg->ip;
              inst->cil_code = D.30712;
              inst->data.op[1].p = "IndexOutOfRangeException";
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.38277>; else goto <D.38278>;
              <D.38277>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = inst;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              inst->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              goto <D.38279>;
              <D.38278>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.38279>:
            }
          }
          <D.38265>:
          goto <D.38280>;
          <D.38171>:
          {
            struct MonoInst * ins;

            D.30489 = cfg->mempool;
            ins = mono_mempool_alloc (D.30489, 48);
            ins->data.op[1].const_val = 0;
            D.38281 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.38281;
            ins->prev = 0B;
            D.38282 = ins->prev;
            ins->next = D.38282;
            ins->opcode = 788;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.38283 = ins->sreg3;
            ins->sreg2 = D.38283;
            D.38284 = ins->sreg2;
            ins->sreg1 = D.38284;
            D.30712 = cfg->ip;
            ins->cil_code = D.30712;
            ins->sreg1 = array_reg;
            ins->sreg2 = index_reg;
            ins->data.op[1].const_val = 12;
            D.38285 = ins->flags;
            D.38286 = D.38285 | 32;
            ins->flags = D.38286;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.38287>; else goto <D.38288>;
            <D.38287>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = ins;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            ins->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = ins;
            goto <D.38289>;
            <D.38288>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = ins;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.38289>:
            D.30919 = cfg->flags;
            D.37970 = D.30919 | 256;
            cfg->flags = D.37970;
            bblock.127 = cfg->cbb;
            bblock.127->has_array_access = 1;
          }
          <D.38280>:
          <D.38168>:
          D.30489 = cfg->mempool;
          ins = mono_mempool_alloc (D.30489, 48);
          ins->data.op[1].const_val = 0;
          D.30708 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.30708;
          ins->prev = 0B;
          D.30709 = ins->prev;
          ins->next = D.30709;
          klass.173 = klass;
          D.35339 = &klass.173->byval_arg;
          D.38290 = mono_type_to_load_membase (cfg, D.35339);
          D.38291 = (short unsigned int) D.38290;
          ins->opcode = D.38291;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.30710 = ins->sreg3;
          ins->sreg2 = D.30710;
          D.30711 = ins->sreg2;
          ins->sreg1 = D.30711;
          D.30712 = cfg->ip;
          ins->cil_code = D.30712;
          ins->dreg = 0;
          ins->sreg1 = array_reg;
          ins->data.op[0].const_val = offset;
          ins->type = 1;
          klass.173 = klass;
          D.35339 = &klass.173->byval_arg;
          type_to_eval_stack_type (cfg, D.35339, ins);
          D.31249 = ins->type;
          D.31250 = (<unnamed type>) D.31249;
          D.38292 = alloc_dreg (cfg, D.31250);
          D.38293 = (int) D.38292;
          ins->dreg = D.38293;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.38294>; else goto <D.38295>;
          <D.38294>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = ins;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          ins->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = ins;
          goto <D.38296>;
          <D.38295>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = ins;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.38296>:
        }
        goto <D.38297>;
        <D.38161>:
        D.32655 = sp + 4;
        D.32656 = *D.32655;
        D.31489 = *sp;
        klass.173 = klass;
        addr = mini_emit_ldelema_1_ins (cfg, klass.173, D.31489, D.32656, 1);
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        klass.173 = klass;
        D.35339 = &klass.173->byval_arg;
        D.38298 = mono_type_to_load_membase (cfg, D.35339);
        D.38299 = (short unsigned int) D.38298;
        ins->opcode = D.38299;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        ins->dreg = 0;
        D.38153 = addr->dreg;
        ins->sreg1 = D.38153;
        ins->data.op[0].const_val = 0;
        ins->type = 1;
        klass.173 = klass;
        D.35339 = &klass.173->byval_arg;
        type_to_eval_stack_type (cfg, D.35339, ins);
        D.31249 = ins->type;
        D.31250 = (<unnamed type>) D.31249;
        D.38300 = alloc_dreg (cfg, D.31250);
        D.38301 = (int) D.38300;
        ins->dreg = D.38301;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.38302>; else goto <D.38303>;
        <D.38302>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = ins;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        ins->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        goto <D.38304>;
        <D.38303>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.38304>:
        <D.38297>:
        <D.38159>:
        sp.279 = sp;
        sp = sp.279 + 4;
        *sp.279 = ins;
        D.31371 = *ip;
        if (D.31371 == 163) goto <D.38306>; else goto <D.38307>;
        <D.38306>:
        ip = ip + 5;
        goto <D.38308>;
        <D.38307>:
        ip = ip + 1;
        <D.38308>:
        goto <D.27380>;
      }
      <D.28017>:
      <D.28018>:
      <D.28019>:
      <D.28020>:
      <D.28021>:
      <D.28022>:
      <D.28023>:
      <D.28024>:
      <D.28025>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      if (D.31274 <= 11) goto <D.38309>; else goto <D.38310>;
      <D.38309>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.38311>; else goto <D.38312>;
      <D.38311>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.38313>; else goto <D.38314>;
      <D.38313>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38314>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38312>:
      D.38315 = mini_get_debug_options ();
      D.38316 = D.38315->break_on_unverified;
      if (D.38316 != 0) goto <D.38317>; else goto unverified;
      <D.38317>:
      __asm__ __volatile__("int $03");
      <D.38310>:
      sp = sp + 4294967284;
      D.30919 = cfg->flags;
      D.38088 = D.30919 | 4;
      cfg->flags = D.38088;
      D.31371 = *ip;
      if (D.31371 == 164) goto <D.38318>; else goto <D.38319>;
      <D.38318>:
      D.31934 = ip + 5;
      if (D.31934 > end) goto <D.38320>; else goto <D.38321>;
      <D.38320>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.38322>; else goto <D.38323>;
      <D.38322>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.38324>; else goto <D.38325>;
      <D.38324>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38325>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38323>:
      D.38326 = mini_get_debug_options ();
      D.38327 = D.38326->break_on_unverified;
      if (D.38327 != 0) goto <D.38328>; else goto unverified;
      <D.38328>:
      __asm__ __volatile__("int $03");
      <D.38321>:
      token = MEM[(const guint32 *)ip + 1B];
      klass.280 = mini_get_class (method, token, generic_context);
      klass = klass.280;
      klass.173 = klass;
      if (klass.173 == 0B) goto <D.38330>; else goto <D.38332>;
      <D.38332>:
      klass.173 = klass;
      D.35265 = klass.173->exception_type;
      if (D.35265 != 0) goto <D.38330>; else goto <D.38331>;
      <D.38330>:
      klass.173 = klass;
      cfg->exception_ptr = klass.173;
      D.38333 = mini_get_debug_options ();
      D.38334 = D.38333->break_on_unverified;
      if (D.38334 != 0) goto <D.38335>; else goto load_error;
      <D.38335>:
      __asm__ __volatile__("int $03");
      <D.38331>:
      klass.173 = klass;
      mono_class_init (klass.173);
      goto <D.38336>;
      <D.38319>:
      D.31371 = *ip;
      D.31372 = (int) D.31371;
      klass.281 = array_access_to_klass (D.31372);
      klass = klass.281;
      <D.38336>:
      D.31489 = *sp;
      D.32169 = D.31489->type;
      if (D.32169 != 6) goto <D.38338>; else goto <D.38339>;
      <D.38338>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.38340>; else goto <D.38341>;
      <D.38340>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.38342>; else goto <D.38343>;
      <D.38342>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38343>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38341>:
      D.38344 = mini_get_debug_options ();
      D.38345 = D.38344->break_on_unverified;
      if (D.38345 != 0) goto <D.38346>; else goto unverified;
      <D.38346>:
      __asm__ __volatile__("int $03");
      <D.38339>:
      klass.173 = klass;
      emit_array_store (cfg, klass.173, sp, 1);
      D.31371 = *ip;
      if (D.31371 == 164) goto <D.38347>; else goto <D.38348>;
      <D.38347>:
      ip = ip + 5;
      goto <D.38349>;
      <D.38348>:
      ip = ip + 1;
      <D.38349>:
      inline_costs = inline_costs + 1;
      goto <D.27380>;
      <D.28026>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      if (D.31274 <= 3) goto <D.38350>; else goto <D.38351>;
      <D.38350>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.38352>; else goto <D.38353>;
      <D.38352>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.38354>; else goto <D.38355>;
      <D.38354>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38355>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38353>:
      D.38356 = mini_get_debug_options ();
      D.38357 = D.38356->break_on_unverified;
      if (D.38357 != 0) goto <D.38358>; else goto unverified;
      <D.38358>:
      __asm__ __volatile__("int $03");
      <D.38351>:
      sp = sp + 4294967292;
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 732;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      D.31489 = *sp;
      D.31682 = D.31489->dreg;
      ins->sreg1 = D.31682;
      D.38359 = alloc_freg (cfg);
      D.38360 = (int) D.38359;
      ins->dreg = D.38360;
      ins->type = 4;
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      if (D.30826 != 0B) goto <D.38361>; else goto <D.38362>;
      <D.38361>:
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      D.30826->next = ins;
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      ins->prev = D.30826;
      bblock.78 = bblock;
      bblock.78->last_ins = ins;
      goto <D.38363>;
      <D.38362>:
      bblock.78 = bblock;
      bblock.78 = bblock;
      bblock.78->last_ins = ins;
      D.30826 = bblock.78->last_ins;
      bblock.78->code = D.30826;
      <D.38363>:
      sp.282 = sp;
      sp = sp.282 + 4;
      D.38365 = mono_decompose_opcode (cfg, ins);
      *sp.282 = D.38365;
      ip = ip + 1;
      goto <D.27380>;
      <D.28027>:
      {
        struct MonoInst * src_var;
        struct MonoInst * src;
        int klass_reg;
        int dreg;

        D.38366 = alloc_preg (cfg);
        klass_reg = (int) D.38366;
        D.38367 = alloc_preg (cfg);
        dreg = (int) D.38367;
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.38368>; else goto <D.38369>;
        <D.38368>:
        D.31371 = *ip;
        D.31372 = (int) D.31371;
        D.38370 = mono_opcode_name (D.31372);
        D.32188 = method->signature;
        D.32189 = D.32188->param_count;
        D.32190 = (int) D.32189;
        D.32191 = method->name;
        D.30426 = method->klass;
        D.32192 = D.30426->name;
        D.30426 = method->klass;
        D.32193 = D.30426->name_space;
        D.38371 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.32193, D.32192, D.32191, D.32190, D.38370, "method-to-ir.c", 10668);
        cfg->exception_message = D.38371;
        D.30569 = cfg->verbose_level;
        if (D.30569 > 1) goto <D.38372>; else goto <D.38373>;
        <D.38372>:
        D.32197 = cfg->exception_message;
        printf ("%s\n", D.32197);
        <D.38373>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38369>:
        sp.85 = (int) sp;
        stack_start.86 = (int) stack_start;
        D.31274 = sp.85 - stack_start.86;
        if (D.31274 <= 3) goto <D.38374>; else goto <D.38375>;
        <D.38374>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.38376>; else goto <D.38377>;
        <D.38376>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.38378>; else goto <D.38379>;
        <D.38378>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38379>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38377>:
        D.38380 = mini_get_debug_options ();
        D.38381 = D.38380->break_on_unverified;
        if (D.38381 != 0) goto <D.38382>; else goto unverified;
        <D.38382>:
        __asm__ __volatile__("int $03");
        <D.38375>:
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        D.31371 = *ip;
        D.34234 = (short unsigned int) D.31371;
        ins->opcode = D.34234;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        sp = sp + 4294967292;
        D.31934 = ip + 5;
        if (D.31934 > end) goto <D.38383>; else goto <D.38384>;
        <D.38383>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.38385>; else goto <D.38386>;
        <D.38385>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.38387>; else goto <D.38388>;
        <D.38387>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38388>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38386>:
        D.38389 = mini_get_debug_options ();
        D.38390 = D.38389->break_on_unverified;
        if (D.38390 != 0) goto <D.38391>; else goto unverified;
        <D.38391>:
        __asm__ __volatile__("int $03");
        <D.38384>:
        D.31953 = ip + 1;
        D.31954 = *D.31953;
        klass.283 = mono_class_get_full (image, D.31954, generic_context);
        klass = klass.283;
        klass.173 = klass;
        if (klass.173 == 0B) goto <D.38393>; else goto <D.38395>;
        <D.38395>:
        klass.173 = klass;
        D.35265 = klass.173->exception_type;
        if (D.35265 != 0) goto <D.38393>; else goto <D.38394>;
        <D.38393>:
        klass.173 = klass;
        cfg->exception_ptr = klass.173;
        D.38396 = mini_get_debug_options ();
        D.38397 = D.38396->break_on_unverified;
        if (D.38397 != 0) goto <D.38398>; else goto load_error;
        <D.38398>:
        __asm__ __volatile__("int $03");
        <D.38394>:
        klass.173 = klass;
        mono_class_init (klass.173);
        klass.173 = klass;
        context_used = mini_class_check_context_used (cfg, klass.173);
        D.31489 = *sp;
        D.31682 = D.31489->dreg;
        D.37072 = (unsigned int) D.31682;
        D.31601 = cfg->vreg_to_inst_len;
        if (D.37072 < D.31601) goto <D.38400>; else goto <D.38401>;
        <D.38400>:
        D.31604 = cfg->vreg_to_inst;
        D.31489 = *sp;
        D.31682 = D.31489->dreg;
        D.37075 = (unsigned int) D.31682;
        D.37076 = D.37075 * 4;
        D.37077 = D.31604 + D.37076;
        iftmp.284 = *D.37077;
        goto <D.38402>;
        <D.38401>:
        iftmp.284 = 0B;
        <D.38402>:
        src_var = iftmp.284;
        if (src_var == 0B) goto <D.38403>; else goto <D.38404>;
        <D.38403>:
        D.31489 = *sp;
        D.31682 = D.31489->dreg;
        D.38405 = mono_defaults.typed_reference_class;
        D.38406 = &D.38405->byval_arg;
        src_var = mono_compile_create_var_for_vreg (cfg, D.38406, 329, D.31682);
        <D.38404>:
        D.30489 = cfg->mempool;
        src = mono_mempool_alloc (D.30489, 48);
        src->data.op[1].const_val = 0;
        D.38407 = src->data.op[1].const_val;
        src->data.op[0].const_val = D.38407;
        src->prev = 0B;
        D.38408 = src->prev;
        src->next = D.38408;
        src->opcode = 314;
        src->flags = 0;
        src->type = 0;
        src->dreg = -1;
        src->sreg3 = -1;
        D.38409 = src->sreg3;
        src->sreg2 = D.38409;
        D.38410 = src->sreg2;
        src->sreg1 = D.38410;
        D.30712 = cfg->ip;
        src->cil_code = D.30712;
        src->data.op[0].p = src_var;
        D.38411 = src_var->flags;
        D.38412 = D.38411 | 16;
        src_var->flags = D.38412;
        src->type = 5;
        D.38413 = src_var->klass;
        src->klass = D.38413;
        D.38414 = alloc_dreg (cfg, 5);
        D.38415 = (int) D.38414;
        src->dreg = D.38415;
        cfg->has_indirection = 1;
        D.30637 = cfg->gsharedvt;
        D.31575 = D.30637 != 0;
        D.31576 = (long int) D.31575;
        D.31577 = __builtin_expect (D.31576, 0);
        if (D.31577 != 0) goto <D.38416>; else goto <D.38417>;
        <D.38416>:
        D.38418 = src_var->data.op[1].vtype;
        D.38419 = mini_is_gsharedvt_variable_type (cfg, D.38418);
        if (D.38419 != 0) goto <D.38420>; else goto <D.38421>;
        <D.38420>:
        handle_gsharedvt_ldaddr (cfg);
        <D.38421>:
        <D.38417>:
        D.38423 = mono_arch_is_soft_float ();
        if (D.38423 != 0) goto <D.38424>; else goto <D.38425>;
        <D.38424>:
        D.38426 = src_var->type;
        D.38427 = D.38426 == 2;
        D.38428 = D.38426 == 4;
        D.38429 = D.38427 | D.38428;
        D.38430 = (int) D.38429;
        iftmp.285 = (_Bool) D.38430;
        goto <D.38431>;
        <D.38425>:
        D.38432 = src_var->type;
        iftmp.285 = D.38432 == 2;
        <D.38431>:
        if (iftmp.285 != 0) goto <D.38433>; else goto <D.38434>;
        <D.38433>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.38436 = src_var->dreg;
          D.38437 = D.38436 + 1;
          D.38438 = (unsigned int) D.38437;
          D.31601 = cfg->vreg_to_inst_len;
          if (D.38438 < D.31601) goto <D.38439>; else goto <D.38440>;
          <D.38439>:
          D.31604 = cfg->vreg_to_inst;
          D.38436 = src_var->dreg;
          D.38441 = (sizetype) D.38436;
          D.38442 = D.38441 + 1;
          D.38443 = D.38442 * 4;
          D.38444 = D.31604 + D.38443;
          iftmp.286 = *D.38444;
          goto <D.38445>;
          <D.38440>:
          iftmp.286 = 0B;
          <D.38445>:
          var1 = iftmp.286;
          D.38436 = src_var->dreg;
          D.38447 = D.38436 + 2;
          D.38448 = (unsigned int) D.38447;
          D.31601 = cfg->vreg_to_inst_len;
          if (D.38448 < D.31601) goto <D.38449>; else goto <D.38450>;
          <D.38449>:
          D.31604 = cfg->vreg_to_inst;
          D.38436 = src_var->dreg;
          D.38441 = (sizetype) D.38436;
          D.38451 = D.38441 + 2;
          D.38452 = D.38451 * 4;
          D.38453 = D.31604 + D.38452;
          iftmp.287 = *D.38453;
          goto <D.38454>;
          <D.38450>:
          iftmp.287 = 0B;
          <D.38454>:
          var2 = iftmp.287;
          D.38455 = var1 == 0B;
          D.38456 = (long int) D.38455;
          D.38457 = __builtin_expect (D.38456, 0);
          if (D.38457 != 0) goto <D.38458>; else goto <D.38459>;
          <D.38458>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10684, "var1");
          <D.38459>:
          D.38460 = var2 == 0B;
          D.38461 = (long int) D.38460;
          D.38462 = __builtin_expect (D.38461, 0);
          if (D.38462 != 0) goto <D.38463>; else goto <D.38464>;
          <D.38463>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10684, "var2");
          <D.38464>:
          D.38465 = var1->flags;
          D.38466 = D.38465 | 16;
          var1->flags = D.38466;
          D.38467 = var2->flags;
          D.38468 = D.38467 | 16;
          var2->flags = D.38468;
        }
        <D.38434>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.38469>; else goto <D.38470>;
        <D.38469>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = src;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        src->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = src;
        goto <D.38471>;
        <D.38470>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = src;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.38471>:
        {
          struct MonoInst * inst;

          D.30489 = cfg->mempool;
          inst = mono_mempool_alloc (D.30489, 48);
          inst->data.op[1].const_val = 0;
          D.38472 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.38472;
          inst->prev = 0B;
          D.38473 = inst->prev;
          inst->next = D.38473;
          inst->opcode = 391;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.38474 = inst->sreg3;
          inst->sreg2 = D.38474;
          D.38475 = inst->sreg2;
          inst->sreg1 = D.38475;
          D.30712 = cfg->ip;
          inst->cil_code = D.30712;
          inst->dreg = klass_reg;
          D.38476 = src->dreg;
          inst->sreg1 = D.38476;
          inst->data.op[0].const_val = 8;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.38477>; else goto <D.38478>;
          <D.38477>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = inst;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          inst->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          goto <D.38479>;
          <D.38478>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.38479>:
        }
        if (context_used != 0) goto <D.38480>; else goto <D.38481>;
        <D.38480>:
        {
          struct MonoInst * klass_ins;

          klass.173 = klass;
          klass_ins = emit_get_rgctx_klass (cfg, context_used, klass.173, 1);
          {
            struct MonoInst * inst;

            D.30489 = cfg->mempool;
            inst = mono_mempool_alloc (D.30489, 48);
            inst->data.op[1].const_val = 0;
            D.38482 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.38482;
            inst->prev = 0B;
            D.38483 = inst->prev;
            inst->next = D.38483;
            inst->opcode = 322;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.38484 = inst->sreg3;
            inst->sreg2 = D.38484;
            D.38485 = inst->sreg2;
            inst->sreg1 = D.38485;
            D.30712 = cfg->ip;
            inst->cil_code = D.30712;
            inst->dreg = -1;
            inst->sreg1 = klass_reg;
            D.38486 = klass_ins->dreg;
            inst->sreg2 = D.38486;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.38487>; else goto <D.38488>;
            <D.38487>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = inst;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            inst->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            goto <D.38489>;
            <D.38488>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.38489>:
          }
          {
            struct MonoInst * inst;

            D.30489 = cfg->mempool;
            inst = mono_mempool_alloc (D.30489, 48);
            inst->data.op[1].const_val = 0;
            D.38490 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.38490;
            inst->prev = 0B;
            D.38491 = inst->prev;
            inst->next = D.38491;
            inst->opcode = 460;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.38492 = inst->sreg3;
            inst->sreg2 = D.38492;
            D.38493 = inst->sreg2;
            inst->sreg1 = D.38493;
            D.30712 = cfg->ip;
            inst->cil_code = D.30712;
            inst->data.op[1].p = "InvalidCastException";
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.38494>; else goto <D.38495>;
            <D.38494>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = inst;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            inst->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            goto <D.38496>;
            <D.38495>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.38496>:
          }
        }
        goto <D.38497>;
        <D.38481>:
        klass.173 = klass;
        mini_emit_class_check (cfg, klass_reg, klass.173);
        <D.38497>:
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        ins->opcode = 391;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        ins->dreg = dreg;
        D.38476 = src->dreg;
        ins->sreg1 = D.38476;
        ins->data.op[0].const_val = 4;
        ins->type = 1;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.38498>; else goto <D.38499>;
        <D.38498>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = ins;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        ins->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        goto <D.38500>;
        <D.38499>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.38500>:
        ins->type = 5;
        sp.288 = sp;
        sp = sp.288 + 4;
        *sp.288 = ins;
        ip = ip + 5;
        goto <D.27380>;
      }
      <D.28038>:
      {
        struct MonoInst * loc;
        struct MonoInst * addr;

        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.38502>; else goto <D.38503>;
        <D.38502>:
        D.31371 = *ip;
        D.31372 = (int) D.31371;
        D.38504 = mono_opcode_name (D.31372);
        D.32188 = method->signature;
        D.32189 = D.32188->param_count;
        D.32190 = (int) D.32189;
        D.32191 = method->name;
        D.30426 = method->klass;
        D.32192 = D.30426->name;
        D.30426 = method->klass;
        D.32193 = D.30426->name_space;
        D.38505 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.32193, D.32192, D.32191, D.32190, D.38504, "method-to-ir.c", 10708);
        cfg->exception_message = D.38505;
        D.30569 = cfg->verbose_level;
        if (D.30569 > 1) goto <D.38506>; else goto <D.38507>;
        <D.38506>:
        D.32197 = cfg->exception_message;
        printf ("%s\n", D.32197);
        <D.38507>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38503>:
        sp.85 = (int) sp;
        stack_start.86 = (int) stack_start;
        D.31274 = sp.85 - stack_start.86;
        if (D.31274 <= 3) goto <D.38508>; else goto <D.38509>;
        <D.38508>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.38510>; else goto <D.38511>;
        <D.38510>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.38512>; else goto <D.38513>;
        <D.38512>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38513>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38511>:
        D.38514 = mini_get_debug_options ();
        D.38515 = D.38514->break_on_unverified;
        if (D.38515 != 0) goto <D.38516>; else goto unverified;
        <D.38516>:
        __asm__ __volatile__("int $03");
        <D.38509>:
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        D.31371 = *ip;
        D.34234 = (short unsigned int) D.31371;
        ins->opcode = D.34234;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        sp = sp + 4294967292;
        D.31934 = ip + 5;
        if (D.31934 > end) goto <D.38517>; else goto <D.38518>;
        <D.38517>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.38519>; else goto <D.38520>;
        <D.38519>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.38521>; else goto <D.38522>;
        <D.38521>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38522>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38520>:
        D.38523 = mini_get_debug_options ();
        D.38524 = D.38523->break_on_unverified;
        if (D.38524 != 0) goto <D.38525>; else goto unverified;
        <D.38525>:
        __asm__ __volatile__("int $03");
        <D.38518>:
        D.31953 = ip + 1;
        D.31954 = *D.31953;
        klass.289 = mono_class_get_full (image, D.31954, generic_context);
        klass = klass.289;
        klass.173 = klass;
        if (klass.173 == 0B) goto <D.38527>; else goto <D.38529>;
        <D.38529>:
        klass.173 = klass;
        D.35265 = klass.173->exception_type;
        if (D.35265 != 0) goto <D.38527>; else goto <D.38528>;
        <D.38527>:
        klass.173 = klass;
        cfg->exception_ptr = klass.173;
        D.38530 = mini_get_debug_options ();
        D.38531 = D.38530->break_on_unverified;
        if (D.38531 != 0) goto <D.38532>; else goto load_error;
        <D.38532>:
        __asm__ __volatile__("int $03");
        <D.38528>:
        klass.173 = klass;
        mono_class_init (klass.173);
        klass.173 = klass;
        context_used = mini_class_check_context_used (cfg, klass.173);
        D.38405 = mono_defaults.typed_reference_class;
        D.38406 = &D.38405->byval_arg;
        loc = mono_compile_create_var (cfg, D.38406, 329);
        D.30489 = cfg->mempool;
        addr = mono_mempool_alloc (D.30489, 48);
        addr->data.op[1].const_val = 0;
        D.38533 = addr->data.op[1].const_val;
        addr->data.op[0].const_val = D.38533;
        addr->prev = 0B;
        D.38534 = addr->prev;
        addr->next = D.38534;
        addr->opcode = 314;
        addr->flags = 0;
        addr->type = 0;
        addr->dreg = -1;
        addr->sreg3 = -1;
        D.38535 = addr->sreg3;
        addr->sreg2 = D.38535;
        D.38536 = addr->sreg2;
        addr->sreg1 = D.38536;
        D.30712 = cfg->ip;
        addr->cil_code = D.30712;
        D.31239 = cfg->varinfo;
        D.38537 = loc->data.op[0].const_val;
        D.38538 = (unsigned int) D.38537;
        D.38539 = D.38538 * 4;
        D.38540 = D.31239 + D.38539;
        D.38541 = *D.38540;
        addr->data.op[0].p = D.38541;
        D.31239 = cfg->varinfo;
        D.38537 = loc->data.op[0].const_val;
        D.38538 = (unsigned int) D.38537;
        D.38539 = D.38538 * 4;
        D.38540 = D.31239 + D.38539;
        D.38541 = *D.38540;
        D.31239 = cfg->varinfo;
        D.38537 = loc->data.op[0].const_val;
        D.38538 = (unsigned int) D.38537;
        D.38539 = D.38538 * 4;
        D.38540 = D.31239 + D.38539;
        D.38541 = *D.38540;
        D.38542 = D.38541->flags;
        D.38543 = D.38542 | 16;
        D.38541->flags = D.38543;
        addr->type = 5;
        D.31239 = cfg->varinfo;
        D.38537 = loc->data.op[0].const_val;
        D.38538 = (unsigned int) D.38537;
        D.38539 = D.38538 * 4;
        D.38540 = D.31239 + D.38539;
        D.38541 = *D.38540;
        D.38544 = D.38541->klass;
        addr->klass = D.38544;
        D.38545 = alloc_dreg (cfg, 5);
        D.38546 = (int) D.38545;
        addr->dreg = D.38546;
        cfg->has_indirection = 1;
        D.30637 = cfg->gsharedvt;
        D.31575 = D.30637 != 0;
        D.31576 = (long int) D.31575;
        D.31577 = __builtin_expect (D.31576, 0);
        if (D.31577 != 0) goto <D.38547>; else goto <D.38548>;
        <D.38547>:
        D.31239 = cfg->varinfo;
        D.38537 = loc->data.op[0].const_val;
        D.38538 = (unsigned int) D.38537;
        D.38539 = D.38538 * 4;
        D.38540 = D.31239 + D.38539;
        D.38541 = *D.38540;
        D.38549 = D.38541->data.op[1].vtype;
        D.38550 = mini_is_gsharedvt_variable_type (cfg, D.38549);
        if (D.38550 != 0) goto <D.38551>; else goto <D.38552>;
        <D.38551>:
        handle_gsharedvt_ldaddr (cfg);
        <D.38552>:
        <D.38548>:
        D.38554 = mono_arch_is_soft_float ();
        if (D.38554 != 0) goto <D.38555>; else goto <D.38556>;
        <D.38555>:
        D.31239 = cfg->varinfo;
        D.38537 = loc->data.op[0].const_val;
        D.38538 = (unsigned int) D.38537;
        D.38539 = D.38538 * 4;
        D.38540 = D.31239 + D.38539;
        D.38541 = *D.38540;
        D.38557 = D.38541->type;
        D.38558 = D.38557 == 2;
        D.38559 = D.38557 == 4;
        D.38560 = D.38558 | D.38559;
        D.38561 = (int) D.38560;
        iftmp.290 = (_Bool) D.38561;
        goto <D.38562>;
        <D.38556>:
        D.31239 = cfg->varinfo;
        D.38537 = loc->data.op[0].const_val;
        D.38538 = (unsigned int) D.38537;
        D.38539 = D.38538 * 4;
        D.38540 = D.31239 + D.38539;
        D.38541 = *D.38540;
        D.38563 = D.38541->type;
        iftmp.290 = D.38563 == 2;
        <D.38562>:
        if (iftmp.290 != 0) goto <D.38564>; else goto <D.38565>;
        <D.38564>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.31239 = cfg->varinfo;
          D.38537 = loc->data.op[0].const_val;
          D.38538 = (unsigned int) D.38537;
          D.38539 = D.38538 * 4;
          D.38540 = D.31239 + D.38539;
          D.38541 = *D.38540;
          D.38567 = D.38541->dreg;
          D.38568 = D.38567 + 1;
          D.38569 = (unsigned int) D.38568;
          D.31601 = cfg->vreg_to_inst_len;
          if (D.38569 < D.31601) goto <D.38570>; else goto <D.38571>;
          <D.38570>:
          D.31604 = cfg->vreg_to_inst;
          D.31239 = cfg->varinfo;
          D.38537 = loc->data.op[0].const_val;
          D.38538 = (unsigned int) D.38537;
          D.38539 = D.38538 * 4;
          D.38540 = D.31239 + D.38539;
          D.38541 = *D.38540;
          D.38567 = D.38541->dreg;
          D.38572 = (sizetype) D.38567;
          D.38573 = D.38572 + 1;
          D.38574 = D.38573 * 4;
          D.38575 = D.31604 + D.38574;
          iftmp.291 = *D.38575;
          goto <D.38576>;
          <D.38571>:
          iftmp.291 = 0B;
          <D.38576>:
          var1 = iftmp.291;
          D.31239 = cfg->varinfo;
          D.38537 = loc->data.op[0].const_val;
          D.38538 = (unsigned int) D.38537;
          D.38539 = D.38538 * 4;
          D.38540 = D.31239 + D.38539;
          D.38541 = *D.38540;
          D.38567 = D.38541->dreg;
          D.38578 = D.38567 + 2;
          D.38579 = (unsigned int) D.38578;
          D.31601 = cfg->vreg_to_inst_len;
          if (D.38579 < D.31601) goto <D.38580>; else goto <D.38581>;
          <D.38580>:
          D.31604 = cfg->vreg_to_inst;
          D.31239 = cfg->varinfo;
          D.38537 = loc->data.op[0].const_val;
          D.38538 = (unsigned int) D.38537;
          D.38539 = D.38538 * 4;
          D.38540 = D.31239 + D.38539;
          D.38541 = *D.38540;
          D.38567 = D.38541->dreg;
          D.38572 = (sizetype) D.38567;
          D.38582 = D.38572 + 2;
          D.38583 = D.38582 * 4;
          D.38584 = D.31604 + D.38583;
          iftmp.292 = *D.38584;
          goto <D.38585>;
          <D.38581>:
          iftmp.292 = 0B;
          <D.38585>:
          var2 = iftmp.292;
          D.38586 = var1 == 0B;
          D.38587 = (long int) D.38586;
          D.38588 = __builtin_expect (D.38587, 0);
          if (D.38588 != 0) goto <D.38589>; else goto <D.38590>;
          <D.38589>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10721, "var1");
          <D.38590>:
          D.38591 = var2 == 0B;
          D.38592 = (long int) D.38591;
          D.38593 = __builtin_expect (D.38592, 0);
          if (D.38593 != 0) goto <D.38594>; else goto <D.38595>;
          <D.38594>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10721, "var2");
          <D.38595>:
          D.38596 = var1->flags;
          D.38597 = D.38596 | 16;
          var1->flags = D.38597;
          D.38598 = var2->flags;
          D.38599 = D.38598 | 16;
          var2->flags = D.38599;
        }
        <D.38565>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.38600>; else goto <D.38601>;
        <D.38600>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = addr;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        addr->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = addr;
        goto <D.38602>;
        <D.38601>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = addr;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.38602>:
        if (context_used != 0) goto <D.38603>; else goto <D.38604>;
        <D.38603>:
        {
          struct MonoInst * const_ins;
          int type_reg;

          D.38605 = alloc_preg (cfg);
          type_reg = (int) D.38605;
          klass.173 = klass;
          const_ins = emit_get_rgctx_klass (cfg, context_used, klass.173, 1);
          {
            struct MonoInst * inst;

            D.30489 = cfg->mempool;
            inst = mono_mempool_alloc (D.30489, 48);
            inst->data.op[1].const_val = 0;
            D.38606 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.38606;
            inst->prev = 0B;
            D.38607 = inst->prev;
            inst->next = D.38607;
            inst->opcode = 377;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.38608 = inst->sreg3;
            inst->sreg2 = D.38608;
            D.38609 = inst->sreg2;
            inst->sreg1 = D.38609;
            D.30712 = cfg->ip;
            inst->cil_code = D.30712;
            D.38610 = const_ins->dreg;
            inst->sreg1 = D.38610;
            D.38611 = addr->dreg;
            inst->dreg = D.38611;
            inst->data.op[0].const_val = 8;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.38612>; else goto <D.38613>;
            <D.38612>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = inst;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            inst->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            goto <D.38614>;
            <D.38613>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.38614>:
          }
          {
            struct MonoInst * inst;

            D.30489 = cfg->mempool;
            inst = mono_mempool_alloc (D.30489, 48);
            inst->data.op[1].const_val = 0;
            D.38615 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.38615;
            inst->prev = 0B;
            D.38616 = inst->prev;
            inst->next = D.38616;
            inst->opcode = 433;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.38617 = inst->sreg3;
            inst->sreg2 = D.38617;
            D.38618 = inst->sreg2;
            inst->sreg1 = D.38618;
            D.30712 = cfg->ip;
            inst->cil_code = D.30712;
            inst->dreg = type_reg;
            D.38610 = const_ins->dreg;
            inst->sreg1 = D.38610;
            inst->data.op[1].const_val = 128;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.38619>; else goto <D.38620>;
            <D.38619>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = inst;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            inst->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            goto <D.38621>;
            <D.38620>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.38621>:
          }
          {
            struct MonoInst * inst;

            D.30489 = cfg->mempool;
            inst = mono_mempool_alloc (D.30489, 48);
            inst->data.op[1].const_val = 0;
            D.38622 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.38622;
            inst->prev = 0B;
            D.38623 = inst->prev;
            inst->next = D.38623;
            inst->opcode = 377;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.38624 = inst->sreg3;
            inst->sreg2 = D.38624;
            D.38625 = inst->sreg2;
            inst->sreg1 = D.38625;
            D.30712 = cfg->ip;
            inst->cil_code = D.30712;
            inst->sreg1 = type_reg;
            D.38611 = addr->dreg;
            inst->dreg = D.38611;
            inst->data.op[0].const_val = 0;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.38626>; else goto <D.38627>;
            <D.38626>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = inst;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            inst->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            goto <D.38628>;
            <D.38627>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.38628>:
          }
        }
        goto <D.38629>;
        <D.38604>:
        D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.30884 = D.30883 & 64;
        if (D.30884 != 0) goto <D.38630>; else goto <D.38631>;
        <D.38630>:
        {
          int const_reg;
          int type_reg;

          D.38632 = alloc_preg (cfg);
          const_reg = (int) D.38632;
          D.38633 = alloc_preg (cfg);
          type_reg = (int) D.38633;
          {
            struct MonoInst * inst;

            D.30489 = cfg->mempool;
            inst = mono_mempool_alloc (D.30489, 48);
            inst->data.op[1].const_val = 0;
            D.38634 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.38634;
            inst->prev = 0B;
            D.38635 = inst->prev;
            inst->next = D.38635;
            D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.30884 = D.30883 & 64;
            if (D.30884 != 0) goto <D.38637>; else goto <D.38638>;
            <D.38637>:
            iftmp.293 = 738;
            goto <D.38639>;
            <D.38638>:
            iftmp.293 = 362;
            <D.38639>:
            inst->opcode = iftmp.293;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.38640 = inst->sreg3;
            inst->sreg2 = D.38640;
            D.38641 = inst->sreg2;
            inst->sreg1 = D.38641;
            D.30712 = cfg->ip;
            inst->cil_code = D.30712;
            D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.30884 = D.30883 & 64;
            if (D.30884 != 0) goto <D.38642>; else goto <D.38643>;
            <D.38642>:
            {
              struct MonoInst * group;
              struct MonoInst * got_loc;

              got_loc = mono_get_got_var (cfg);
              D.30489 = cfg->mempool;
              group = mono_mempool_alloc (D.30489, 48);
              group->data.op[1].const_val = 0;
              D.38644 = group->data.op[1].const_val;
              group->data.op[0].const_val = D.38644;
              group->prev = 0B;
              D.38645 = group->prev;
              group->next = D.38645;
              group->opcode = 737;
              group->flags = 0;
              group->type = 0;
              group->dreg = -1;
              group->sreg3 = -1;
              D.38646 = group->sreg3;
              group->sreg2 = D.38646;
              D.38647 = group->sreg2;
              group->sreg1 = D.38647;
              D.30712 = cfg->ip;
              group->cil_code = D.30712;
              klass.173 = klass;
              group->data.op[0].src = klass.173;
              group->data.op[1].src = 11B;
              D.38648 = got_loc->dreg;
              inst->sreg1 = D.38648;
              inst->data.op[1].p = group;
            }
            goto <D.38649>;
            <D.38643>:
            klass.173 = klass;
            inst->data.op[0].p = klass.173;
            inst->data.op[1].src = 11B;
            <D.38649>:
            inst->type = 3;
            D.38650 = alloc_dreg (cfg, 3);
            D.38651 = (int) D.38650;
            inst->dreg = D.38651;
            inst->dreg = const_reg;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.38652>; else goto <D.38653>;
            <D.38652>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = inst;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            inst->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            goto <D.38654>;
            <D.38653>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.38654>:
          }
          {
            struct MonoInst * inst;

            D.30489 = cfg->mempool;
            inst = mono_mempool_alloc (D.30489, 48);
            inst->data.op[1].const_val = 0;
            D.38655 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.38655;
            inst->prev = 0B;
            D.38656 = inst->prev;
            inst->next = D.38656;
            inst->opcode = 377;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.38657 = inst->sreg3;
            inst->sreg2 = D.38657;
            D.38658 = inst->sreg2;
            inst->sreg1 = D.38658;
            D.30712 = cfg->ip;
            inst->cil_code = D.30712;
            inst->sreg1 = const_reg;
            D.38611 = addr->dreg;
            inst->dreg = D.38611;
            inst->data.op[0].const_val = 8;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.38659>; else goto <D.38660>;
            <D.38659>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = inst;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            inst->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            goto <D.38661>;
            <D.38660>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.38661>:
          }
          {
            struct MonoInst * inst;

            D.30489 = cfg->mempool;
            inst = mono_mempool_alloc (D.30489, 48);
            inst->data.op[1].const_val = 0;
            D.38662 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.38662;
            inst->prev = 0B;
            D.38663 = inst->prev;
            inst->next = D.38663;
            inst->opcode = 433;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.38664 = inst->sreg3;
            inst->sreg2 = D.38664;
            D.38665 = inst->sreg2;
            inst->sreg1 = D.38665;
            D.30712 = cfg->ip;
            inst->cil_code = D.30712;
            inst->dreg = type_reg;
            inst->sreg1 = const_reg;
            inst->data.op[1].const_val = 128;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.38666>; else goto <D.38667>;
            <D.38666>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = inst;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            inst->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            goto <D.38668>;
            <D.38667>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.38668>:
          }
          {
            struct MonoInst * inst;

            D.30489 = cfg->mempool;
            inst = mono_mempool_alloc (D.30489, 48);
            inst->data.op[1].const_val = 0;
            D.38669 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.38669;
            inst->prev = 0B;
            D.38670 = inst->prev;
            inst->next = D.38670;
            inst->opcode = 377;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.38671 = inst->sreg3;
            inst->sreg2 = D.38671;
            D.38672 = inst->sreg2;
            inst->sreg1 = D.38672;
            D.30712 = cfg->ip;
            inst->cil_code = D.30712;
            inst->sreg1 = type_reg;
            D.38611 = addr->dreg;
            inst->dreg = D.38611;
            inst->data.op[0].const_val = 0;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.38673>; else goto <D.38674>;
            <D.38673>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = inst;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            inst->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            goto <D.38675>;
            <D.38674>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = inst;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.38675>:
          }
        }
        goto <D.38676>;
        <D.38631>:
        {
          struct MonoInst * inst;

          D.30489 = cfg->mempool;
          inst = mono_mempool_alloc (D.30489, 48);
          inst->data.op[1].const_val = 0;
          D.38677 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.38677;
          inst->prev = 0B;
          D.38678 = inst->prev;
          inst->next = D.38678;
          inst->opcode = 387;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.38679 = inst->sreg3;
          inst->sreg2 = D.38679;
          D.38680 = inst->sreg2;
          inst->sreg1 = D.38680;
          D.30712 = cfg->ip;
          inst->cil_code = D.30712;
          D.38611 = addr->dreg;
          inst->dreg = D.38611;
          inst->data.op[0].const_val = 0;
          klass.173 = klass;
          D.35339 = &klass.173->byval_arg;
          D.38681 = (int) D.35339;
          inst->data.op[1].const_val = D.38681;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.38682>; else goto <D.38683>;
          <D.38682>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = inst;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          inst->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          goto <D.38684>;
          <D.38683>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.38684>:
        }
        {
          struct MonoInst * inst;

          D.30489 = cfg->mempool;
          inst = mono_mempool_alloc (D.30489, 48);
          inst->data.op[1].const_val = 0;
          D.38685 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.38685;
          inst->prev = 0B;
          D.38686 = inst->prev;
          inst->next = D.38686;
          inst->opcode = 387;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.38687 = inst->sreg3;
          inst->sreg2 = D.38687;
          D.38688 = inst->sreg2;
          inst->sreg1 = D.38688;
          D.30712 = cfg->ip;
          inst->cil_code = D.30712;
          D.38611 = addr->dreg;
          inst->dreg = D.38611;
          inst->data.op[0].const_val = 8;
          klass.173 = klass;
          klass.294 = (int) klass.173;
          inst->data.op[1].const_val = klass.294;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.38690>; else goto <D.38691>;
          <D.38690>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = inst;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          inst->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          goto <D.38692>;
          <D.38691>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.38692>:
        }
        <D.38676>:
        <D.38629>:
        {
          struct MonoInst * inst;

          D.30489 = cfg->mempool;
          inst = mono_mempool_alloc (D.30489, 48);
          inst->data.op[1].const_val = 0;
          D.38693 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.38693;
          inst->prev = 0B;
          D.38694 = inst->prev;
          inst->next = D.38694;
          inst->opcode = 377;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.38695 = inst->sreg3;
          inst->sreg2 = D.38695;
          D.38696 = inst->sreg2;
          inst->sreg1 = D.38696;
          D.30712 = cfg->ip;
          inst->cil_code = D.30712;
          D.31489 = *sp;
          D.31682 = D.31489->dreg;
          inst->sreg1 = D.31682;
          D.38611 = addr->dreg;
          inst->dreg = D.38611;
          inst->data.op[0].const_val = 4;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.38697>; else goto <D.38698>;
          <D.38697>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = inst;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          inst->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          goto <D.38699>;
          <D.38698>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.38699>:
        }
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        ins->opcode = 428;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        D.31239 = cfg->varinfo;
        D.38537 = loc->data.op[0].const_val;
        D.38538 = (unsigned int) D.38537;
        D.38539 = D.38538 * 4;
        D.38540 = D.31239 + D.38539;
        D.38541 = *D.38540;
        D.38549 = D.38541->data.op[1].vtype;
        D.38700 = mono_type_to_regmove (cfg, D.38549);
        D.38701 = (short unsigned int) D.38700;
        ins->opcode = D.38701;
        D.31239 = cfg->varinfo;
        D.38537 = loc->data.op[0].const_val;
        D.38538 = (unsigned int) D.38537;
        D.38539 = D.38538 * 4;
        D.38540 = D.31239 + D.38539;
        D.38541 = *D.38540;
        D.38549 = D.38541->data.op[1].vtype;
        type_to_eval_stack_type (cfg, D.38549, ins);
        D.31239 = cfg->varinfo;
        D.38537 = loc->data.op[0].const_val;
        D.38538 = (unsigned int) D.38537;
        D.38539 = D.38538 * 4;
        D.38540 = D.31239 + D.38539;
        D.38541 = *D.38540;
        D.38544 = D.38541->klass;
        ins->klass = D.38544;
        D.31239 = cfg->varinfo;
        D.38537 = loc->data.op[0].const_val;
        D.38538 = (unsigned int) D.38537;
        D.38539 = D.38538 * 4;
        D.38540 = D.31239 + D.38539;
        D.38541 = *D.38540;
        D.38567 = D.38541->dreg;
        ins->sreg1 = D.38567;
        D.31249 = ins->type;
        D.31250 = (<unnamed type>) D.31249;
        D.38702 = alloc_dreg (cfg, D.31250);
        D.38703 = (int) D.38702;
        ins->dreg = D.38703;
        D.31253 = ins->opcode;
        if (D.31253 == 431) goto <D.38704>; else goto <D.38705>;
        <D.38704>:
        D.31239 = cfg->varinfo;
        D.38537 = loc->data.op[0].const_val;
        D.38538 = (unsigned int) D.38537;
        D.38539 = D.38538 * 4;
        D.38540 = D.31239 + D.38539;
        D.38541 = *D.38540;
        D.38549 = D.38541->data.op[1].vtype;
        D.38706 = mono_class_from_mono_type (D.38549);
        ins->klass = D.38706;
        <D.38705>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.38707>; else goto <D.38708>;
        <D.38707>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = ins;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        ins->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        goto <D.38709>;
        <D.38708>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.38709>:
        ins->type = 7;
        D.38405 = mono_defaults.typed_reference_class;
        ins->klass = D.38405;
        sp.295 = sp;
        sp = sp.295 + 4;
        *sp.295 = ins;
        ip = ip + 5;
        goto <D.27380>;
      }
      <D.28059>:
      {
        void * handle;
        struct MonoClass * handle_class;

        try
          {
            sp.85 = (int) sp;
            stack_start.86 = (int) stack_start;
            D.31274 = sp.85 - stack_start.86;
            D.31275 = D.31274 /[ex] 4;
            D.31188 = header->max_stack;
            D.31189 = (int) D.31188;
            if (D.31275 >= D.31189) goto <D.38711>; else goto <D.38712>;
            <D.38711>:
            D.30637 = cfg->gsharedvt;
            if (D.30637 != 0) goto <D.38713>; else goto <D.38714>;
            <D.38713>:
            D.30569 = cfg->verbose_level;
            if (D.30569 > 2) goto <D.38715>; else goto <D.38716>;
            <D.38715>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.38716>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.38714>:
            D.38717 = mini_get_debug_options ();
            D.38718 = D.38717->break_on_unverified;
            if (D.38718 != 0) goto <D.38719>; else goto unverified;
            <D.38719>:
            __asm__ __volatile__("int $03");
            <D.38712>:
            D.31934 = ip + 5;
            if (D.31934 > end) goto <D.38720>; else goto <D.38721>;
            <D.38720>:
            D.30637 = cfg->gsharedvt;
            if (D.30637 != 0) goto <D.38722>; else goto <D.38723>;
            <D.38722>:
            D.30569 = cfg->verbose_level;
            if (D.30569 > 2) goto <D.38724>; else goto <D.38725>;
            <D.38724>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.38725>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.38723>:
            D.38726 = mini_get_debug_options ();
            D.38727 = D.38726->break_on_unverified;
            if (D.38727 != 0) goto <D.38728>; else goto unverified;
            <D.38728>:
            __asm__ __volatile__("int $03");
            <D.38721>:
            D.31953 = ip + 1;
            D.31954 = *D.31953;
            n = (int) D.31954;
            D.30431 = BIT_FIELD_REF <*method, 8, 160>;
            D.38729 = D.30431 & 124;
            D.38730 = D.38729 == 68;
            D.38731 = D.38729 == 64;
            D.38732 = D.38730 | D.38731;
            if (D.38732 != 0) goto <D.38733>; else goto <D.38734>;
            <D.38733>:
            n.178 = (unsigned int) n;
            handle = mono_method_get_wrapper_data (method, n.178);
            D.38735 = n + 1;
            D.38736 = (unsigned int) D.38735;
            handle_class.296 = mono_method_get_wrapper_data (method, D.38736);
            handle_class = handle_class.296;
            D.38738 = mono_defaults.typehandle_class;
            handle_class.297 = handle_class;
            if (D.38738 == handle_class.297) goto <D.38740>; else goto <D.38741>;
            <D.38740>:
            handle = &MEM[(struct MonoClass *)handle].byval_arg;
            <D.38741>:
            goto <D.38742>;
            <D.38734>:
            n.181 = (unsigned int) n;
            handle = mono_ldtoken (image, n.181, &handle_class, generic_context);
            <D.38742>:
            if (handle == 0B) goto <D.38743>; else goto <D.38744>;
            <D.38743>:
            D.38745 = mini_get_debug_options ();
            D.38746 = D.38745->break_on_unverified;
            if (D.38746 != 0) goto <D.38747>; else goto load_error;
            <D.38747>:
            __asm__ __volatile__("int $03");
            <D.38744>:
            handle_class.297 = handle_class;
            mono_class_init (handle_class.297);
            D.30524 = cfg->generic_sharing_context;
            if (D.30524 != 0B) goto <D.38748>; else goto <D.38749>;
            <D.38748>:
            D.38750 = n >> 24;
            D.38751 = (unsigned int) D.38750;
            D.38752 = D.38751 + 4294967295;
            if (D.38752 <= 1) goto <D.38753>; else goto <D.38754>;
            <D.38753>:
            context_used = 0;
            goto <D.38755>;
            <D.38754>:
            D.38738 = mono_defaults.typehandle_class;
            handle_class.297 = handle_class;
            if (D.38738 == handle_class.297) goto <D.38756>; else goto <D.38757>;
            <D.38756>:
            D.38758 = mono_type_get_type (handle);
            if (D.38758 == 18) goto <D.38759>; else goto <D.38760>;
            <D.38759>:
            context_used = 0;
            goto <D.38761>;
            <D.38760>:
            D.38762 = mono_class_from_mono_type (handle);
            context_used = mini_class_check_context_used (cfg, D.38762);
            <D.38761>:
            goto <D.38763>;
            <D.38757>:
            D.38764 = mono_defaults.fieldhandle_class;
            handle_class.297 = handle_class;
            if (D.38764 == handle_class.297) goto <D.38765>; else goto <D.38766>;
            <D.38765>:
            D.38767 = MEM[(struct MonoClassField *)handle].parent;
            context_used = mini_class_check_context_used (cfg, D.38767);
            goto <D.38768>;
            <D.38766>:
            D.38769 = mono_defaults.methodhandle_class;
            handle_class.297 = handle_class;
            if (D.38769 == handle_class.297) goto <D.38770>; else goto <D.38771>;
            <D.38770>:
            context_used = mini_method_check_context_used (cfg, handle);
            goto <D.38772>;
            <D.38771>:
            monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 10795);
            <D.38772>:
            <D.38768>:
            <D.38763>:
            <D.38755>:
            <D.38749>:
            D.30881 = cfg->opt;
            D.30882 = D.30881 & 512;
            if (D.30882 != 0) goto <D.38775>; else goto <D.38773>;
            <D.38775>:
            D.30431 = BIT_FIELD_REF <*method, 8, 160>;
            D.30432 = D.30431 & 124;
            if (D.30432 != 68) goto <D.38776>; else goto <D.38773>;
            <D.38776>:
            D.30431 = BIT_FIELD_REF <*method, 8, 160>;
            D.30432 = D.30431 & 124;
            if (D.30432 != 64) goto <D.38777>; else goto <D.38773>;
            <D.38777>:
            {
              struct MonoInst * addr;
              struct MonoInst * vtvar;
              struct MonoInst * iargs[3];
              int method_context_used;

              try
                {
                  method_context_used = mini_method_check_context_used (cfg, method);
                  handle_class.297 = handle_class;
                  D.38778 = &handle_class.297->byval_arg;
                  vtvar = mono_compile_create_var (cfg, D.38778, 329);
                  D.30489 = cfg->mempool;
                  D.38779 = mono_mempool_alloc (D.30489, 48);
                  iargs[0] = D.38779;
                  D.38780 = iargs[0];
                  D.38780 = iargs[0];
                  D.38780->data.op[1].const_val = 0;
                  D.38781 = D.38780->data.op[1].const_val;
                  D.38780->data.op[0].const_val = D.38781;
                  D.38780 = iargs[0];
                  D.38780 = iargs[0];
                  D.38780->prev = 0B;
                  D.38782 = D.38780->prev;
                  D.38780->next = D.38782;
                  D.38780 = iargs[0];
                  D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
                  D.30884 = D.30883 & 64;
                  if (D.30884 != 0) goto <D.38784>; else goto <D.38785>;
                  <D.38784>:
                  iftmp.298 = 738;
                  goto <D.38786>;
                  <D.38785>:
                  iftmp.298 = 362;
                  <D.38786>:
                  D.38780->opcode = iftmp.298;
                  D.38780 = iargs[0];
                  D.38780->flags = 0;
                  D.38780 = iargs[0];
                  D.38780->type = 0;
                  D.38780 = iargs[0];
                  D.38780->dreg = -1;
                  D.38780 = iargs[0];
                  D.38780 = iargs[0];
                  D.38780 = iargs[0];
                  D.38780->sreg3 = -1;
                  D.38787 = D.38780->sreg3;
                  D.38780->sreg2 = D.38787;
                  D.38788 = D.38780->sreg2;
                  D.38780->sreg1 = D.38788;
                  D.38780 = iargs[0];
                  D.30712 = cfg->ip;
                  D.38780->cil_code = D.30712;
                  D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
                  D.30884 = D.30883 & 64;
                  if (D.30884 != 0) goto <D.38789>; else goto <D.38790>;
                  <D.38789>:
                  {
                    struct MonoInst * group;
                    struct MonoInst * got_loc;

                    got_loc = mono_get_got_var (cfg);
                    D.30489 = cfg->mempool;
                    group = mono_mempool_alloc (D.30489, 48);
                    group->data.op[1].const_val = 0;
                    D.38791 = group->data.op[1].const_val;
                    group->data.op[0].const_val = D.38791;
                    group->prev = 0B;
                    D.38792 = group->prev;
                    group->next = D.38792;
                    group->opcode = 737;
                    group->flags = 0;
                    group->type = 0;
                    group->dreg = -1;
                    group->sreg3 = -1;
                    D.38793 = group->sreg3;
                    group->sreg2 = D.38793;
                    D.38794 = group->sreg2;
                    group->sreg1 = D.38794;
                    D.30712 = cfg->ip;
                    group->cil_code = D.30712;
                    group->data.op[0].src = image;
                    group->data.op[1].src = 12B;
                    D.38780 = iargs[0];
                    D.38795 = got_loc->dreg;
                    D.38780->sreg1 = D.38795;
                    D.38780 = iargs[0];
                    D.38780->data.op[1].p = group;
                  }
                  goto <D.38796>;
                  <D.38790>:
                  D.38780 = iargs[0];
                  D.38780->data.op[0].p = image;
                  D.38780 = iargs[0];
                  D.38780->data.op[1].src = 12B;
                  <D.38796>:
                  D.38780 = iargs[0];
                  D.38780->type = 3;
                  D.38780 = iargs[0];
                  D.38797 = alloc_dreg (cfg, 3);
                  D.38798 = (int) D.38797;
                  D.38780->dreg = D.38798;
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  if (D.30741 != 0B) goto <D.38799>; else goto <D.38800>;
                  <D.38799>:
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.38780 = iargs[0];
                  D.30741->next = D.38780;
                  D.38780 = iargs[0];
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.38780->prev = D.30741;
                  bblock.127 = cfg->cbb;
                  D.38780 = iargs[0];
                  bblock.127->last_ins = D.38780;
                  goto <D.38801>;
                  <D.38800>:
                  bblock.127 = cfg->cbb;
                  bblock.127 = cfg->cbb;
                  D.38780 = iargs[0];
                  bblock.127->last_ins = D.38780;
                  D.30741 = bblock.127->last_ins;
                  bblock.127->code = D.30741;
                  <D.38801>:
                  D.30489 = cfg->mempool;
                  D.38802 = mono_mempool_alloc (D.30489, 48);
                  iargs[1] = D.38802;
                  D.38803 = iargs[1];
                  D.38803 = iargs[1];
                  D.38803->data.op[1].const_val = 0;
                  D.38804 = D.38803->data.op[1].const_val;
                  D.38803->data.op[0].const_val = D.38804;
                  D.38803 = iargs[1];
                  D.38803 = iargs[1];
                  D.38803->prev = 0B;
                  D.38805 = D.38803->prev;
                  D.38803->next = D.38805;
                  D.38803 = iargs[1];
                  D.38803->opcode = 362;
                  D.38803 = iargs[1];
                  D.38803->flags = 0;
                  D.38803 = iargs[1];
                  D.38803->type = 0;
                  D.38803 = iargs[1];
                  D.38803->dreg = -1;
                  D.38803 = iargs[1];
                  D.38803 = iargs[1];
                  D.38803 = iargs[1];
                  D.38803->sreg3 = -1;
                  D.38806 = D.38803->sreg3;
                  D.38803->sreg2 = D.38806;
                  D.38807 = D.38803->sreg2;
                  D.38803->sreg1 = D.38807;
                  D.38803 = iargs[1];
                  D.30712 = cfg->ip;
                  D.38803->cil_code = D.30712;
                  D.38803 = iargs[1];
                  D.38803->data.op[0].const_val = n;
                  D.38803 = iargs[1];
                  D.38803->type = 1;
                  D.38803 = iargs[1];
                  D.38808 = alloc_dreg (cfg, 1);
                  D.38809 = (int) D.38808;
                  D.38803->dreg = D.38809;
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  if (D.30741 != 0B) goto <D.38810>; else goto <D.38811>;
                  <D.38810>:
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.38803 = iargs[1];
                  D.30741->next = D.38803;
                  D.38803 = iargs[1];
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.38803->prev = D.30741;
                  bblock.127 = cfg->cbb;
                  D.38803 = iargs[1];
                  bblock.127->last_ins = D.38803;
                  goto <D.38812>;
                  <D.38811>:
                  bblock.127 = cfg->cbb;
                  bblock.127 = cfg->cbb;
                  D.38803 = iargs[1];
                  bblock.127->last_ins = D.38803;
                  D.30741 = bblock.127->last_ins;
                  bblock.127->code = D.30741;
                  <D.38812>:
                  if (method_context_used != 0) goto <D.38813>; else goto <D.38814>;
                  <D.38813>:
                  D.38815 = emit_get_rgctx_method (cfg, method_context_used, method, 5);
                  iargs[2] = D.38815;
                  ins = mono_emit_jit_icall (cfg, mono_ldtoken_wrapper_generic_shared, &iargs);
                  goto <D.38816>;
                  <D.38814>:
                  D.30489 = cfg->mempool;
                  D.38817 = mono_mempool_alloc (D.30489, 48);
                  iargs[2] = D.38817;
                  D.38818 = iargs[2];
                  D.38818 = iargs[2];
                  D.38818->data.op[1].const_val = 0;
                  D.38819 = D.38818->data.op[1].const_val;
                  D.38818->data.op[0].const_val = D.38819;
                  D.38818 = iargs[2];
                  D.38818 = iargs[2];
                  D.38818->prev = 0B;
                  D.38820 = D.38818->prev;
                  D.38818->next = D.38820;
                  D.38818 = iargs[2];
                  D.38818->opcode = 362;
                  D.38818 = iargs[2];
                  D.38818->flags = 0;
                  D.38818 = iargs[2];
                  D.38818->type = 0;
                  D.38818 = iargs[2];
                  D.38818->dreg = -1;
                  D.38818 = iargs[2];
                  D.38818 = iargs[2];
                  D.38818 = iargs[2];
                  D.38818->sreg3 = -1;
                  D.38821 = D.38818->sreg3;
                  D.38818->sreg2 = D.38821;
                  D.38822 = D.38818->sreg2;
                  D.38818->sreg1 = D.38822;
                  D.38818 = iargs[2];
                  D.30712 = cfg->ip;
                  D.38818->cil_code = D.30712;
                  D.38818 = iargs[2];
                  D.38818->data.op[0].p = generic_context;
                  D.38818 = iargs[2];
                  D.38818->type = 3;
                  D.38818 = iargs[2];
                  D.38823 = alloc_dreg (cfg, 3);
                  D.38824 = (int) D.38823;
                  D.38818->dreg = D.38824;
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  if (D.30741 != 0B) goto <D.38825>; else goto <D.38826>;
                  <D.38825>:
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.38818 = iargs[2];
                  D.30741->next = D.38818;
                  D.38818 = iargs[2];
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.38818->prev = D.30741;
                  bblock.127 = cfg->cbb;
                  D.38818 = iargs[2];
                  bblock.127->last_ins = D.38818;
                  goto <D.38827>;
                  <D.38826>:
                  bblock.127 = cfg->cbb;
                  bblock.127 = cfg->cbb;
                  D.38818 = iargs[2];
                  bblock.127->last_ins = D.38818;
                  D.30741 = bblock.127->last_ins;
                  bblock.127->code = D.30741;
                  <D.38827>:
                  ins = mono_emit_jit_icall (cfg, mono_ldtoken_wrapper, &iargs);
                  <D.38816>:
                  D.30489 = cfg->mempool;
                  addr = mono_mempool_alloc (D.30489, 48);
                  addr->data.op[1].const_val = 0;
                  D.38828 = addr->data.op[1].const_val;
                  addr->data.op[0].const_val = D.38828;
                  addr->prev = 0B;
                  D.38829 = addr->prev;
                  addr->next = D.38829;
                  addr->opcode = 314;
                  addr->flags = 0;
                  addr->type = 0;
                  addr->dreg = -1;
                  addr->sreg3 = -1;
                  D.38830 = addr->sreg3;
                  addr->sreg2 = D.38830;
                  D.38831 = addr->sreg2;
                  addr->sreg1 = D.38831;
                  D.30712 = cfg->ip;
                  addr->cil_code = D.30712;
                  D.31239 = cfg->varinfo;
                  D.38832 = vtvar->data.op[0].const_val;
                  D.38833 = (unsigned int) D.38832;
                  D.38834 = D.38833 * 4;
                  D.38835 = D.31239 + D.38834;
                  D.38836 = *D.38835;
                  addr->data.op[0].p = D.38836;
                  D.31239 = cfg->varinfo;
                  D.38832 = vtvar->data.op[0].const_val;
                  D.38833 = (unsigned int) D.38832;
                  D.38834 = D.38833 * 4;
                  D.38835 = D.31239 + D.38834;
                  D.38836 = *D.38835;
                  D.31239 = cfg->varinfo;
                  D.38832 = vtvar->data.op[0].const_val;
                  D.38833 = (unsigned int) D.38832;
                  D.38834 = D.38833 * 4;
                  D.38835 = D.31239 + D.38834;
                  D.38836 = *D.38835;
                  D.38837 = D.38836->flags;
                  D.38838 = D.38837 | 16;
                  D.38836->flags = D.38838;
                  addr->type = 5;
                  D.31239 = cfg->varinfo;
                  D.38832 = vtvar->data.op[0].const_val;
                  D.38833 = (unsigned int) D.38832;
                  D.38834 = D.38833 * 4;
                  D.38835 = D.31239 + D.38834;
                  D.38836 = *D.38835;
                  D.38839 = D.38836->klass;
                  addr->klass = D.38839;
                  D.38840 = alloc_dreg (cfg, 5);
                  D.38841 = (int) D.38840;
                  addr->dreg = D.38841;
                  cfg->has_indirection = 1;
                  D.30637 = cfg->gsharedvt;
                  D.31575 = D.30637 != 0;
                  D.31576 = (long int) D.31575;
                  D.31577 = __builtin_expect (D.31576, 0);
                  if (D.31577 != 0) goto <D.38842>; else goto <D.38843>;
                  <D.38842>:
                  D.31239 = cfg->varinfo;
                  D.38832 = vtvar->data.op[0].const_val;
                  D.38833 = (unsigned int) D.38832;
                  D.38834 = D.38833 * 4;
                  D.38835 = D.31239 + D.38834;
                  D.38836 = *D.38835;
                  D.38844 = D.38836->data.op[1].vtype;
                  D.38845 = mini_is_gsharedvt_variable_type (cfg, D.38844);
                  if (D.38845 != 0) goto <D.38846>; else goto <D.38847>;
                  <D.38846>:
                  handle_gsharedvt_ldaddr (cfg);
                  <D.38847>:
                  <D.38843>:
                  D.38849 = mono_arch_is_soft_float ();
                  if (D.38849 != 0) goto <D.38850>; else goto <D.38851>;
                  <D.38850>:
                  D.31239 = cfg->varinfo;
                  D.38832 = vtvar->data.op[0].const_val;
                  D.38833 = (unsigned int) D.38832;
                  D.38834 = D.38833 * 4;
                  D.38835 = D.31239 + D.38834;
                  D.38836 = *D.38835;
                  D.38852 = D.38836->type;
                  D.38853 = D.38852 == 2;
                  D.38854 = D.38852 == 4;
                  D.38855 = D.38853 | D.38854;
                  D.38856 = (int) D.38855;
                  iftmp.299 = (_Bool) D.38856;
                  goto <D.38857>;
                  <D.38851>:
                  D.31239 = cfg->varinfo;
                  D.38832 = vtvar->data.op[0].const_val;
                  D.38833 = (unsigned int) D.38832;
                  D.38834 = D.38833 * 4;
                  D.38835 = D.31239 + D.38834;
                  D.38836 = *D.38835;
                  D.38858 = D.38836->type;
                  iftmp.299 = D.38858 == 2;
                  <D.38857>:
                  if (iftmp.299 != 0) goto <D.38859>; else goto <D.38860>;
                  <D.38859>:
                  {
                    struct MonoInst * var1;
                    struct MonoInst * var2;

                    D.31239 = cfg->varinfo;
                    D.38832 = vtvar->data.op[0].const_val;
                    D.38833 = (unsigned int) D.38832;
                    D.38834 = D.38833 * 4;
                    D.38835 = D.31239 + D.38834;
                    D.38836 = *D.38835;
                    D.38862 = D.38836->dreg;
                    D.38863 = D.38862 + 1;
                    D.38864 = (unsigned int) D.38863;
                    D.31601 = cfg->vreg_to_inst_len;
                    if (D.38864 < D.31601) goto <D.38865>; else goto <D.38866>;
                    <D.38865>:
                    D.31604 = cfg->vreg_to_inst;
                    D.31239 = cfg->varinfo;
                    D.38832 = vtvar->data.op[0].const_val;
                    D.38833 = (unsigned int) D.38832;
                    D.38834 = D.38833 * 4;
                    D.38835 = D.31239 + D.38834;
                    D.38836 = *D.38835;
                    D.38862 = D.38836->dreg;
                    D.38867 = (sizetype) D.38862;
                    D.38868 = D.38867 + 1;
                    D.38869 = D.38868 * 4;
                    D.38870 = D.31604 + D.38869;
                    iftmp.300 = *D.38870;
                    goto <D.38871>;
                    <D.38866>:
                    iftmp.300 = 0B;
                    <D.38871>:
                    var1 = iftmp.300;
                    D.31239 = cfg->varinfo;
                    D.38832 = vtvar->data.op[0].const_val;
                    D.38833 = (unsigned int) D.38832;
                    D.38834 = D.38833 * 4;
                    D.38835 = D.31239 + D.38834;
                    D.38836 = *D.38835;
                    D.38862 = D.38836->dreg;
                    D.38873 = D.38862 + 2;
                    D.38874 = (unsigned int) D.38873;
                    D.31601 = cfg->vreg_to_inst_len;
                    if (D.38874 < D.31601) goto <D.38875>; else goto <D.38876>;
                    <D.38875>:
                    D.31604 = cfg->vreg_to_inst;
                    D.31239 = cfg->varinfo;
                    D.38832 = vtvar->data.op[0].const_val;
                    D.38833 = (unsigned int) D.38832;
                    D.38834 = D.38833 * 4;
                    D.38835 = D.31239 + D.38834;
                    D.38836 = *D.38835;
                    D.38862 = D.38836->dreg;
                    D.38867 = (sizetype) D.38862;
                    D.38877 = D.38867 + 2;
                    D.38878 = D.38877 * 4;
                    D.38879 = D.31604 + D.38878;
                    iftmp.301 = *D.38879;
                    goto <D.38880>;
                    <D.38876>:
                    iftmp.301 = 0B;
                    <D.38880>:
                    var2 = iftmp.301;
                    D.38881 = var1 == 0B;
                    D.38882 = (long int) D.38881;
                    D.38883 = __builtin_expect (D.38882, 0);
                    if (D.38883 != 0) goto <D.38884>; else goto <D.38885>;
                    <D.38884>:
                    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10818, "var1");
                    <D.38885>:
                    D.38886 = var2 == 0B;
                    D.38887 = (long int) D.38886;
                    D.38888 = __builtin_expect (D.38887, 0);
                    if (D.38888 != 0) goto <D.38889>; else goto <D.38890>;
                    <D.38889>:
                    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10818, "var2");
                    <D.38890>:
                    D.38891 = var1->flags;
                    D.38892 = D.38891 | 16;
                    var1->flags = D.38892;
                    D.38893 = var2->flags;
                    D.38894 = D.38893 | 16;
                    var2->flags = D.38894;
                  }
                  <D.38860>:
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  if (D.30741 != 0B) goto <D.38895>; else goto <D.38896>;
                  <D.38895>:
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.30741->next = addr;
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  addr->prev = D.30741;
                  bblock.127 = cfg->cbb;
                  bblock.127->last_ins = addr;
                  goto <D.38897>;
                  <D.38896>:
                  bblock.127 = cfg->cbb;
                  bblock.127 = cfg->cbb;
                  bblock.127->last_ins = addr;
                  D.30741 = bblock.127->last_ins;
                  bblock.127->code = D.30741;
                  <D.38897>:
                  {
                    struct MonoInst * inst;

                    D.30489 = cfg->mempool;
                    inst = mono_mempool_alloc (D.30489, 48);
                    inst->data.op[1].const_val = 0;
                    D.38898 = inst->data.op[1].const_val;
                    inst->data.op[0].const_val = D.38898;
                    inst->prev = 0B;
                    D.38899 = inst->prev;
                    inst->next = D.38899;
                    inst->opcode = 374;
                    inst->flags = 0;
                    inst->type = 0;
                    inst->dreg = -1;
                    inst->sreg3 = -1;
                    D.38900 = inst->sreg3;
                    inst->sreg2 = D.38900;
                    D.38901 = inst->sreg2;
                    inst->sreg1 = D.38901;
                    D.30712 = cfg->ip;
                    inst->cil_code = D.30712;
                    D.30903 = ins->dreg;
                    inst->sreg1 = D.30903;
                    D.38902 = addr->dreg;
                    inst->dreg = D.38902;
                    inst->data.op[0].const_val = 0;
                    bblock.127 = cfg->cbb;
                    D.30741 = bblock.127->last_ins;
                    if (D.30741 != 0B) goto <D.38903>; else goto <D.38904>;
                    <D.38903>:
                    bblock.127 = cfg->cbb;
                    D.30741 = bblock.127->last_ins;
                    D.30741->next = inst;
                    bblock.127 = cfg->cbb;
                    D.30741 = bblock.127->last_ins;
                    inst->prev = D.30741;
                    bblock.127 = cfg->cbb;
                    bblock.127->last_ins = inst;
                    goto <D.38905>;
                    <D.38904>:
                    bblock.127 = cfg->cbb;
                    bblock.127 = cfg->cbb;
                    bblock.127->last_ins = inst;
                    D.30741 = bblock.127->last_ins;
                    bblock.127->code = D.30741;
                    <D.38905>:
                  }
                  D.30489 = cfg->mempool;
                  ins = mono_mempool_alloc (D.30489, 48);
                  ins->data.op[1].const_val = 0;
                  D.30708 = ins->data.op[1].const_val;
                  ins->data.op[0].const_val = D.30708;
                  ins->prev = 0B;
                  D.30709 = ins->prev;
                  ins->next = D.30709;
                  ins->opcode = 428;
                  ins->flags = 0;
                  ins->type = 0;
                  ins->dreg = -1;
                  ins->sreg3 = -1;
                  D.30710 = ins->sreg3;
                  ins->sreg2 = D.30710;
                  D.30711 = ins->sreg2;
                  ins->sreg1 = D.30711;
                  D.30712 = cfg->ip;
                  ins->cil_code = D.30712;
                  D.31239 = cfg->varinfo;
                  D.38832 = vtvar->data.op[0].const_val;
                  D.38833 = (unsigned int) D.38832;
                  D.38834 = D.38833 * 4;
                  D.38835 = D.31239 + D.38834;
                  D.38836 = *D.38835;
                  D.38844 = D.38836->data.op[1].vtype;
                  D.38906 = mono_type_to_regmove (cfg, D.38844);
                  D.38907 = (short unsigned int) D.38906;
                  ins->opcode = D.38907;
                  D.31239 = cfg->varinfo;
                  D.38832 = vtvar->data.op[0].const_val;
                  D.38833 = (unsigned int) D.38832;
                  D.38834 = D.38833 * 4;
                  D.38835 = D.31239 + D.38834;
                  D.38836 = *D.38835;
                  D.38844 = D.38836->data.op[1].vtype;
                  type_to_eval_stack_type (cfg, D.38844, ins);
                  D.31239 = cfg->varinfo;
                  D.38832 = vtvar->data.op[0].const_val;
                  D.38833 = (unsigned int) D.38832;
                  D.38834 = D.38833 * 4;
                  D.38835 = D.31239 + D.38834;
                  D.38836 = *D.38835;
                  D.38839 = D.38836->klass;
                  ins->klass = D.38839;
                  D.31239 = cfg->varinfo;
                  D.38832 = vtvar->data.op[0].const_val;
                  D.38833 = (unsigned int) D.38832;
                  D.38834 = D.38833 * 4;
                  D.38835 = D.31239 + D.38834;
                  D.38836 = *D.38835;
                  D.38862 = D.38836->dreg;
                  ins->sreg1 = D.38862;
                  D.31249 = ins->type;
                  D.31250 = (<unnamed type>) D.31249;
                  D.38908 = alloc_dreg (cfg, D.31250);
                  D.38909 = (int) D.38908;
                  ins->dreg = D.38909;
                  D.31253 = ins->opcode;
                  if (D.31253 == 431) goto <D.38910>; else goto <D.38911>;
                  <D.38910>:
                  D.31239 = cfg->varinfo;
                  D.38832 = vtvar->data.op[0].const_val;
                  D.38833 = (unsigned int) D.38832;
                  D.38834 = D.38833 * 4;
                  D.38835 = D.31239 + D.38834;
                  D.38836 = *D.38835;
                  D.38844 = D.38836->data.op[1].vtype;
                  D.38912 = mono_class_from_mono_type (D.38844);
                  ins->klass = D.38912;
                  <D.38911>:
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  if (D.30741 != 0B) goto <D.38913>; else goto <D.38914>;
                  <D.38913>:
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.30741->next = ins;
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  ins->prev = D.30741;
                  bblock.127 = cfg->cbb;
                  bblock.127->last_ins = ins;
                  goto <D.38915>;
                  <D.38914>:
                  bblock.127 = cfg->cbb;
                  bblock.127 = cfg->cbb;
                  bblock.127->last_ins = ins;
                  D.30741 = bblock.127->last_ins;
                  bblock.127->code = D.30741;
                  <D.38915>:
                }
              finally
                {
                  iargs = {CLOBBER};
                }
            }
            goto <D.38774>;
            <D.38773>:
            D.31934 = ip + 5;
            if (D.31934 < end) goto <D.38918>; else goto <D.38916>;
            <D.38918>:
            D.33474 = ip + 5;
            bblock.78 = bblock;
            D.38919 = ip_in_bb (cfg, bblock.78, D.33474);
            if (D.38919 != 0) goto <D.38920>; else goto <D.38916>;
            <D.38920>:
            D.31934 = ip + 5;
            D.38921 = *D.31934;
            D.38922 = D.38921 == 40;
            D.38923 = D.38921 == 111;
            D.38924 = D.38922 | D.38923;
            if (D.38924 != 0) goto <D.38925>; else goto <D.38916>;
            <D.38925>:
            D.35357 = ip + 6;
            D.35358 = *D.35357;
            cmethod = mini_get_method (cfg, method, D.35358, 0B, generic_context);
            if (cmethod != 0B) goto <D.38926>; else goto <D.38916>;
            <D.38926>:
            D.32390 = cmethod->klass;
            D.38927 = mono_defaults.systemtype_class;
            if (D.32390 == D.38927) goto <D.38928>; else goto <D.38916>;
            <D.38928>:
            {
              size_t __s1_len;
              size_t __s2_len;

              __s2_len = 17;
              if (__s2_len <= 3) goto <D.38930>; else goto <D.38931>;
              <D.38930>:
              {
                const unsigned char * __s2;
                int __result;

                __s2 = cmethod->name;
                D.38932 = "GetTypeFromHandle";
                D.38933 = MEM[(const unsigned char *)D.38932];
                D.38934 = (int) D.38933;
                D.38935 = *__s2;
                D.38936 = (int) D.38935;
                __result = D.38934 - D.38936;
                {
                  D.38937 = __s2_len != 0;
                  D.38938 = __result == 0;
                  D.38939 = D.38937 & D.38938;
                  if (D.38939 != 0) goto <D.38940>; else goto <D.38941>;
                  <D.38940>:
                  D.38942 = &MEM[(void *)"GetTypeFromHandle" + 1B];
                  D.38943 = *D.38942;
                  D.38944 = (int) D.38943;
                  D.38945 = __s2 + 1;
                  D.38946 = *D.38945;
                  D.38947 = (int) D.38946;
                  __result = D.38944 - D.38947;
                  D.38948 = __s2_len > 1;
                  D.38938 = __result == 0;
                  D.38949 = D.38948 & D.38938;
                  if (D.38949 != 0) goto <D.38950>; else goto <D.38951>;
                  <D.38950>:
                  D.38952 = &MEM[(void *)"GetTypeFromHandle" + 2B];
                  D.38953 = *D.38952;
                  D.38954 = (int) D.38953;
                  D.38955 = __s2 + 2;
                  D.38956 = *D.38955;
                  D.38957 = (int) D.38956;
                  __result = D.38954 - D.38957;
                  D.38958 = __s2_len > 2;
                  D.38938 = __result == 0;
                  D.38959 = D.38958 & D.38938;
                  if (D.38959 != 0) goto <D.38960>; else goto <D.38961>;
                  <D.38960>:
                  D.38962 = &MEM[(void *)"GetTypeFromHandle" + 3B];
                  D.38963 = *D.38962;
                  D.38964 = (int) D.38963;
                  D.38965 = __s2 + 3;
                  D.38966 = *D.38965;
                  D.38967 = (int) D.38966;
                  __result = D.38964 - D.38967;
                  <D.38961>:
                  <D.38951>:
                  <D.38941>:
                }
                D.28078 = __result;
              }
              iftmp.302 = -D.28078;
              goto <D.38968>;
              <D.38931>:
              D.32927 = cmethod->name;
              iftmp.302 = __builtin_strcmp (D.32927, "GetTypeFromHandle");
              <D.38968>:
              D.28079 = iftmp.302;
            }
            if (D.28079 == 0) goto <D.38969>; else goto <D.38916>;
            <D.38969>:
            {
              struct MonoClass * tclass;

              tclass = mono_class_from_mono_type (handle);
              mono_class_init (tclass);
              if (context_used != 0) goto <D.38970>; else goto <D.38971>;
              <D.38970>:
              ins = emit_get_rgctx_klass (cfg, context_used, tclass, 4);
              goto <D.38972>;
              <D.38971>:
              D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.30884 = D.30883 & 64;
              if (D.30884 != 0) goto <D.38973>; else goto <D.38974>;
              <D.38973>:
              D.30431 = BIT_FIELD_REF <*method, 8, 160>;
              D.30432 = D.30431 & 124;
              if (D.30432 != 0) goto <D.38975>; else goto <D.38976>;
              <D.38975>:
              D.38979 = tclass->type_token;
              D.38980 = tclass->image;
              D.38981 = mono_class_get (D.38980, D.38979);
              if (D.38981 == tclass) goto <D.38982>; else goto <D.38977>;
              <D.38982>:
              if (generic_context == 0B) goto <D.38983>; else goto <D.38977>;
              <D.38983>:
              {
                struct MonoInst * group;
                struct MonoInst * got_loc;

                D.30489 = cfg->mempool;
                ins = mono_mempool_alloc (D.30489, 48);
                ins->data.op[1].const_val = 0;
                D.30708 = ins->data.op[1].const_val;
                ins->data.op[0].const_val = D.30708;
                ins->prev = 0B;
                D.30709 = ins->prev;
                ins->next = D.30709;
                ins->opcode = 738;
                ins->flags = 0;
                ins->type = 0;
                ins->dreg = -1;
                ins->sreg3 = -1;
                D.30710 = ins->sreg3;
                ins->sreg2 = D.30710;
                D.30711 = ins->sreg2;
                ins->sreg1 = D.30711;
                D.30712 = cfg->ip;
                ins->cil_code = D.30712;
                got_loc = mono_get_got_var (cfg);
                D.30489 = cfg->mempool;
                group = mono_mempool_alloc (D.30489, 48);
                group->data.op[1].const_val = 0;
                D.38984 = group->data.op[1].const_val;
                group->data.op[0].const_val = D.38984;
                group->prev = 0B;
                D.38985 = group->prev;
                group->next = D.38985;
                group->opcode = 737;
                group->flags = 0;
                group->type = 0;
                group->dreg = -1;
                group->sreg3 = -1;
                D.38986 = group->sreg3;
                group->sreg2 = D.38986;
                D.38987 = group->sreg2;
                group->sreg1 = D.38987;
                D.30712 = cfg->ip;
                group->cil_code = D.30712;
                group->data.op[0].src = 0B;
                group->data.op[1].src = 19B;
                D.38979 = tclass->type_token;
                D.38980 = tclass->image;
                D.30489 = cfg->mempool;
                D.38988 = mono_jump_info_token_new2 (D.30489, D.38980, D.38979, generic_context);
                group->data.op[0].p = D.38988;
                D.38989 = got_loc->dreg;
                ins->sreg1 = D.38989;
                ins->data.op[1].p = group;
                ins->type = 6;
                D.38990 = mono_defaults.monotype_class;
                ins->klass = D.38990;
                D.38991 = alloc_dreg (cfg, 6);
                D.38992 = (int) D.38991;
                ins->dreg = D.38992;
              }
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.38993>; else goto <D.38994>;
              <D.38993>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = ins;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              ins->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              goto <D.38995>;
              <D.38994>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.38995>:
              goto <D.38978>;
              <D.38977>:
              D.30569 = cfg->verbose_level;
              if (D.30569 > 1) goto <D.38996>; else goto <D.38997>;
              <D.38996>:
              printf ("AOT disabled: %s:%d\n", "method-to-ir.c", 10842);
              <D.38997>:
              cfg->disable_aot = 1;
              D.30489 = cfg->mempool;
              ins = mono_mempool_alloc (D.30489, 48);
              ins->data.op[1].const_val = 0;
              D.30708 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.30708;
              ins->prev = 0B;
              D.30709 = ins->prev;
              ins->next = D.30709;
              ins->opcode = 362;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.30710 = ins->sreg3;
              ins->sreg2 = D.30710;
              D.30711 = ins->sreg2;
              ins->sreg1 = D.30711;
              D.30712 = cfg->ip;
              ins->cil_code = D.30712;
              ins->data.op[0].p = 0B;
              ins->type = 3;
              D.38998 = alloc_dreg (cfg, 3);
              D.38999 = (int) D.38998;
              ins->dreg = D.38999;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.39000>; else goto <D.39001>;
              <D.39000>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = ins;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              ins->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              goto <D.39002>;
              <D.39001>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.39002>:
              <D.38978>:
              goto <D.39003>;
              <D.38976>:
              {
                struct MonoInst * group;
                struct MonoInst * got_loc;

                D.30489 = cfg->mempool;
                ins = mono_mempool_alloc (D.30489, 48);
                ins->data.op[1].const_val = 0;
                D.30708 = ins->data.op[1].const_val;
                ins->data.op[0].const_val = D.30708;
                ins->prev = 0B;
                D.30709 = ins->prev;
                ins->next = D.30709;
                ins->opcode = 738;
                ins->flags = 0;
                ins->type = 0;
                ins->dreg = -1;
                ins->sreg3 = -1;
                D.30710 = ins->sreg3;
                ins->sreg2 = D.30710;
                D.30711 = ins->sreg2;
                ins->sreg1 = D.30711;
                D.30712 = cfg->ip;
                ins->cil_code = D.30712;
                got_loc = mono_get_got_var (cfg);
                D.30489 = cfg->mempool;
                group = mono_mempool_alloc (D.30489, 48);
                group->data.op[1].const_val = 0;
                D.39004 = group->data.op[1].const_val;
                group->data.op[0].const_val = D.39004;
                group->prev = 0B;
                D.39005 = group->prev;
                group->next = D.39005;
                group->opcode = 737;
                group->flags = 0;
                group->type = 0;
                group->dreg = -1;
                group->sreg3 = -1;
                D.39006 = group->sreg3;
                group->sreg2 = D.39006;
                D.39007 = group->sreg2;
                group->sreg1 = D.39007;
                D.30712 = cfg->ip;
                group->cil_code = D.30712;
                group->data.op[0].src = 0B;
                group->data.op[1].src = 19B;
                n.178 = (unsigned int) n;
                D.30489 = cfg->mempool;
                D.39008 = mono_jump_info_token_new2 (D.30489, image, n.178, generic_context);
                group->data.op[0].p = D.39008;
                D.39009 = got_loc->dreg;
                ins->sreg1 = D.39009;
                ins->data.op[1].p = group;
                ins->type = 6;
                D.38990 = mono_defaults.monotype_class;
                ins->klass = D.38990;
                D.39010 = alloc_dreg (cfg, 6);
                D.39011 = (int) D.39010;
                ins->dreg = D.39011;
              }
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.39012>; else goto <D.39013>;
              <D.39012>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = ins;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              ins->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              goto <D.39014>;
              <D.39013>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.39014>:
              <D.39003>:
              goto <D.39015>;
              <D.38974>:
              D.30489 = cfg->mempool;
              ins = mono_mempool_alloc (D.30489, 48);
              ins->data.op[1].const_val = 0;
              D.30708 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.30708;
              ins->prev = 0B;
              D.30709 = ins->prev;
              ins->next = D.30709;
              ins->opcode = 362;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.30710 = ins->sreg3;
              ins->sreg2 = D.30710;
              D.30711 = ins->sreg2;
              ins->sreg1 = D.30711;
              D.30712 = cfg->ip;
              ins->cil_code = D.30712;
              D.30513 = cfg->domain;
              D.39016 = mono_type_get_object (D.30513, handle);
              ins->data.op[0].p = D.39016;
              ins->type = 3;
              D.39017 = alloc_dreg (cfg, 3);
              D.39018 = (int) D.39017;
              ins->dreg = D.39018;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.39019>; else goto <D.39020>;
              <D.39019>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = ins;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              ins->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              goto <D.39021>;
              <D.39020>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.39021>:
              <D.39015>:
              <D.38972>:
              ins->type = 6;
              D.32390 = cmethod->klass;
              ins->klass = D.32390;
              ip = ip + 5;
            }
            goto <D.38917>;
            <D.38916>:
            {
              struct MonoInst * addr;
              struct MonoInst * vtvar;

              handle_class.297 = handle_class;
              D.38778 = &handle_class.297->byval_arg;
              vtvar = mono_compile_create_var (cfg, D.38778, 329);
              if (context_used != 0) goto <D.39022>; else goto <D.39023>;
              <D.39022>:
              D.38738 = mono_defaults.typehandle_class;
              handle_class.297 = handle_class;
              if (D.38738 == handle_class.297) goto <D.39024>; else goto <D.39025>;
              <D.39024>:
              D.39026 = mono_class_from_mono_type (handle);
              ins = emit_get_rgctx_klass (cfg, context_used, D.39026, 3);
              goto <D.39027>;
              <D.39025>:
              D.38769 = mono_defaults.methodhandle_class;
              handle_class.297 = handle_class;
              if (D.38769 == handle_class.297) goto <D.39028>; else goto <D.39029>;
              <D.39028>:
              ins = emit_get_rgctx_method (cfg, context_used, handle, 5);
              goto <D.39030>;
              <D.39029>:
              D.38764 = mono_defaults.fieldhandle_class;
              handle_class.297 = handle_class;
              if (D.38764 == handle_class.297) goto <D.39031>; else goto <D.39032>;
              <D.39031>:
              ins = emit_get_rgctx_field (cfg, context_used, handle, 7);
              goto <D.39033>;
              <D.39032>:
              monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 10871);
              <D.39033>:
              <D.39030>:
              <D.39027>:
              goto <D.39034>;
              <D.39023>:
              D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.30884 = D.30883 & 64;
              if (D.30884 != 0) goto <D.39035>; else goto <D.39036>;
              <D.39035>:
              {
                struct MonoInst * group;
                struct MonoInst * got_loc;

                D.30489 = cfg->mempool;
                ins = mono_mempool_alloc (D.30489, 48);
                ins->data.op[1].const_val = 0;
                D.30708 = ins->data.op[1].const_val;
                ins->data.op[0].const_val = D.30708;
                ins->prev = 0B;
                D.30709 = ins->prev;
                ins->next = D.30709;
                ins->opcode = 738;
                ins->flags = 0;
                ins->type = 0;
                ins->dreg = -1;
                ins->sreg3 = -1;
                D.30710 = ins->sreg3;
                ins->sreg2 = D.30710;
                D.30711 = ins->sreg2;
                ins->sreg1 = D.30711;
                D.30712 = cfg->ip;
                ins->cil_code = D.30712;
                got_loc = mono_get_got_var (cfg);
                D.30489 = cfg->mempool;
                group = mono_mempool_alloc (D.30489, 48);
                group->data.op[1].const_val = 0;
                D.39037 = group->data.op[1].const_val;
                group->data.op[0].const_val = D.39037;
                group->prev = 0B;
                D.39038 = group->prev;
                group->next = D.39038;
                group->opcode = 737;
                group->flags = 0;
                group->type = 0;
                group->dreg = -1;
                group->sreg3 = -1;
                D.39039 = group->sreg3;
                group->sreg2 = D.39039;
                D.39040 = group->sreg2;
                group->sreg1 = D.39040;
                D.30712 = cfg->ip;
                group->cil_code = D.30712;
                group->data.op[0].src = 0B;
                group->data.op[1].src = 18B;
                n.178 = (unsigned int) n;
                D.30489 = cfg->mempool;
                D.39041 = mono_jump_info_token_new2 (D.30489, image, n.178, generic_context);
                group->data.op[0].p = D.39041;
                D.39042 = got_loc->dreg;
                ins->sreg1 = D.39042;
                ins->data.op[1].p = group;
                ins->type = 3;
                ins->klass = 0B;
                D.39043 = alloc_dreg (cfg, 3);
                D.39044 = (int) D.39043;
                ins->dreg = D.39044;
              }
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.39045>; else goto <D.39046>;
              <D.39045>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = ins;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              ins->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              goto <D.39047>;
              <D.39046>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.39047>:
              goto <D.39048>;
              <D.39036>:
              D.30489 = cfg->mempool;
              ins = mono_mempool_alloc (D.30489, 48);
              ins->data.op[1].const_val = 0;
              D.30708 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.30708;
              ins->prev = 0B;
              D.30709 = ins->prev;
              ins->next = D.30709;
              ins->opcode = 362;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.30710 = ins->sreg3;
              ins->sreg2 = D.30710;
              D.30711 = ins->sreg2;
              ins->sreg1 = D.30711;
              D.30712 = cfg->ip;
              ins->cil_code = D.30712;
              ins->data.op[0].p = handle;
              ins->type = 3;
              D.39049 = alloc_dreg (cfg, 3);
              D.39050 = (int) D.39049;
              ins->dreg = D.39050;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.39051>; else goto <D.39052>;
              <D.39051>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = ins;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              ins->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              goto <D.39053>;
              <D.39052>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.39053>:
              <D.39048>:
              <D.39034>:
              D.30489 = cfg->mempool;
              addr = mono_mempool_alloc (D.30489, 48);
              addr->data.op[1].const_val = 0;
              D.39054 = addr->data.op[1].const_val;
              addr->data.op[0].const_val = D.39054;
              addr->prev = 0B;
              D.39055 = addr->prev;
              addr->next = D.39055;
              addr->opcode = 314;
              addr->flags = 0;
              addr->type = 0;
              addr->dreg = -1;
              addr->sreg3 = -1;
              D.39056 = addr->sreg3;
              addr->sreg2 = D.39056;
              D.39057 = addr->sreg2;
              addr->sreg1 = D.39057;
              D.30712 = cfg->ip;
              addr->cil_code = D.30712;
              D.31239 = cfg->varinfo;
              D.39058 = vtvar->data.op[0].const_val;
              D.39059 = (unsigned int) D.39058;
              D.39060 = D.39059 * 4;
              D.39061 = D.31239 + D.39060;
              D.39062 = *D.39061;
              addr->data.op[0].p = D.39062;
              D.31239 = cfg->varinfo;
              D.39058 = vtvar->data.op[0].const_val;
              D.39059 = (unsigned int) D.39058;
              D.39060 = D.39059 * 4;
              D.39061 = D.31239 + D.39060;
              D.39062 = *D.39061;
              D.31239 = cfg->varinfo;
              D.39058 = vtvar->data.op[0].const_val;
              D.39059 = (unsigned int) D.39058;
              D.39060 = D.39059 * 4;
              D.39061 = D.31239 + D.39060;
              D.39062 = *D.39061;
              D.39063 = D.39062->flags;
              D.39064 = D.39063 | 16;
              D.39062->flags = D.39064;
              addr->type = 5;
              D.31239 = cfg->varinfo;
              D.39058 = vtvar->data.op[0].const_val;
              D.39059 = (unsigned int) D.39058;
              D.39060 = D.39059 * 4;
              D.39061 = D.31239 + D.39060;
              D.39062 = *D.39061;
              D.39065 = D.39062->klass;
              addr->klass = D.39065;
              D.39066 = alloc_dreg (cfg, 5);
              D.39067 = (int) D.39066;
              addr->dreg = D.39067;
              cfg->has_indirection = 1;
              D.30637 = cfg->gsharedvt;
              D.31575 = D.30637 != 0;
              D.31576 = (long int) D.31575;
              D.31577 = __builtin_expect (D.31576, 0);
              if (D.31577 != 0) goto <D.39068>; else goto <D.39069>;
              <D.39068>:
              D.31239 = cfg->varinfo;
              D.39058 = vtvar->data.op[0].const_val;
              D.39059 = (unsigned int) D.39058;
              D.39060 = D.39059 * 4;
              D.39061 = D.31239 + D.39060;
              D.39062 = *D.39061;
              D.39070 = D.39062->data.op[1].vtype;
              D.39071 = mini_is_gsharedvt_variable_type (cfg, D.39070);
              if (D.39071 != 0) goto <D.39072>; else goto <D.39073>;
              <D.39072>:
              handle_gsharedvt_ldaddr (cfg);
              <D.39073>:
              <D.39069>:
              D.39075 = mono_arch_is_soft_float ();
              if (D.39075 != 0) goto <D.39076>; else goto <D.39077>;
              <D.39076>:
              D.31239 = cfg->varinfo;
              D.39058 = vtvar->data.op[0].const_val;
              D.39059 = (unsigned int) D.39058;
              D.39060 = D.39059 * 4;
              D.39061 = D.31239 + D.39060;
              D.39062 = *D.39061;
              D.39078 = D.39062->type;
              D.39079 = D.39078 == 2;
              D.39080 = D.39078 == 4;
              D.39081 = D.39079 | D.39080;
              D.39082 = (int) D.39081;
              iftmp.303 = (_Bool) D.39082;
              goto <D.39083>;
              <D.39077>:
              D.31239 = cfg->varinfo;
              D.39058 = vtvar->data.op[0].const_val;
              D.39059 = (unsigned int) D.39058;
              D.39060 = D.39059 * 4;
              D.39061 = D.31239 + D.39060;
              D.39062 = *D.39061;
              D.39084 = D.39062->type;
              iftmp.303 = D.39084 == 2;
              <D.39083>:
              if (iftmp.303 != 0) goto <D.39085>; else goto <D.39086>;
              <D.39085>:
              {
                struct MonoInst * var1;
                struct MonoInst * var2;

                D.31239 = cfg->varinfo;
                D.39058 = vtvar->data.op[0].const_val;
                D.39059 = (unsigned int) D.39058;
                D.39060 = D.39059 * 4;
                D.39061 = D.31239 + D.39060;
                D.39062 = *D.39061;
                D.39088 = D.39062->dreg;
                D.39089 = D.39088 + 1;
                D.39090 = (unsigned int) D.39089;
                D.31601 = cfg->vreg_to_inst_len;
                if (D.39090 < D.31601) goto <D.39091>; else goto <D.39092>;
                <D.39091>:
                D.31604 = cfg->vreg_to_inst;
                D.31239 = cfg->varinfo;
                D.39058 = vtvar->data.op[0].const_val;
                D.39059 = (unsigned int) D.39058;
                D.39060 = D.39059 * 4;
                D.39061 = D.31239 + D.39060;
                D.39062 = *D.39061;
                D.39088 = D.39062->dreg;
                D.39093 = (sizetype) D.39088;
                D.39094 = D.39093 + 1;
                D.39095 = D.39094 * 4;
                D.39096 = D.31604 + D.39095;
                iftmp.304 = *D.39096;
                goto <D.39097>;
                <D.39092>:
                iftmp.304 = 0B;
                <D.39097>:
                var1 = iftmp.304;
                D.31239 = cfg->varinfo;
                D.39058 = vtvar->data.op[0].const_val;
                D.39059 = (unsigned int) D.39058;
                D.39060 = D.39059 * 4;
                D.39061 = D.31239 + D.39060;
                D.39062 = *D.39061;
                D.39088 = D.39062->dreg;
                D.39099 = D.39088 + 2;
                D.39100 = (unsigned int) D.39099;
                D.31601 = cfg->vreg_to_inst_len;
                if (D.39100 < D.31601) goto <D.39101>; else goto <D.39102>;
                <D.39101>:
                D.31604 = cfg->vreg_to_inst;
                D.31239 = cfg->varinfo;
                D.39058 = vtvar->data.op[0].const_val;
                D.39059 = (unsigned int) D.39058;
                D.39060 = D.39059 * 4;
                D.39061 = D.31239 + D.39060;
                D.39062 = *D.39061;
                D.39088 = D.39062->dreg;
                D.39093 = (sizetype) D.39088;
                D.39103 = D.39093 + 2;
                D.39104 = D.39103 * 4;
                D.39105 = D.31604 + D.39104;
                iftmp.305 = *D.39105;
                goto <D.39106>;
                <D.39102>:
                iftmp.305 = 0B;
                <D.39106>:
                var2 = iftmp.305;
                D.39107 = var1 == 0B;
                D.39108 = (long int) D.39107;
                D.39109 = __builtin_expect (D.39108, 0);
                if (D.39109 != 0) goto <D.39110>; else goto <D.39111>;
                <D.39110>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10878, "var1");
                <D.39111>:
                D.39112 = var2 == 0B;
                D.39113 = (long int) D.39112;
                D.39114 = __builtin_expect (D.39113, 0);
                if (D.39114 != 0) goto <D.39115>; else goto <D.39116>;
                <D.39115>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10878, "var2");
                <D.39116>:
                D.39117 = var1->flags;
                D.39118 = D.39117 | 16;
                var1->flags = D.39118;
                D.39119 = var2->flags;
                D.39120 = D.39119 | 16;
                var2->flags = D.39120;
              }
              <D.39086>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.39121>; else goto <D.39122>;
              <D.39121>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = addr;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              addr->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = addr;
              goto <D.39123>;
              <D.39122>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = addr;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.39123>:
              {
                struct MonoInst * inst;

                D.30489 = cfg->mempool;
                inst = mono_mempool_alloc (D.30489, 48);
                inst->data.op[1].const_val = 0;
                D.39124 = inst->data.op[1].const_val;
                inst->data.op[0].const_val = D.39124;
                inst->prev = 0B;
                D.39125 = inst->prev;
                inst->next = D.39125;
                inst->opcode = 374;
                inst->flags = 0;
                inst->type = 0;
                inst->dreg = -1;
                inst->sreg3 = -1;
                D.39126 = inst->sreg3;
                inst->sreg2 = D.39126;
                D.39127 = inst->sreg2;
                inst->sreg1 = D.39127;
                D.30712 = cfg->ip;
                inst->cil_code = D.30712;
                D.30903 = ins->dreg;
                inst->sreg1 = D.30903;
                D.39128 = addr->dreg;
                inst->dreg = D.39128;
                inst->data.op[0].const_val = 0;
                bblock.127 = cfg->cbb;
                D.30741 = bblock.127->last_ins;
                if (D.30741 != 0B) goto <D.39129>; else goto <D.39130>;
                <D.39129>:
                bblock.127 = cfg->cbb;
                D.30741 = bblock.127->last_ins;
                D.30741->next = inst;
                bblock.127 = cfg->cbb;
                D.30741 = bblock.127->last_ins;
                inst->prev = D.30741;
                bblock.127 = cfg->cbb;
                bblock.127->last_ins = inst;
                goto <D.39131>;
                <D.39130>:
                bblock.127 = cfg->cbb;
                bblock.127 = cfg->cbb;
                bblock.127->last_ins = inst;
                D.30741 = bblock.127->last_ins;
                bblock.127->code = D.30741;
                <D.39131>:
              }
              D.30489 = cfg->mempool;
              ins = mono_mempool_alloc (D.30489, 48);
              ins->data.op[1].const_val = 0;
              D.30708 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.30708;
              ins->prev = 0B;
              D.30709 = ins->prev;
              ins->next = D.30709;
              ins->opcode = 428;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.30710 = ins->sreg3;
              ins->sreg2 = D.30710;
              D.30711 = ins->sreg2;
              ins->sreg1 = D.30711;
              D.30712 = cfg->ip;
              ins->cil_code = D.30712;
              D.31239 = cfg->varinfo;
              D.39058 = vtvar->data.op[0].const_val;
              D.39059 = (unsigned int) D.39058;
              D.39060 = D.39059 * 4;
              D.39061 = D.31239 + D.39060;
              D.39062 = *D.39061;
              D.39070 = D.39062->data.op[1].vtype;
              D.39132 = mono_type_to_regmove (cfg, D.39070);
              D.39133 = (short unsigned int) D.39132;
              ins->opcode = D.39133;
              D.31239 = cfg->varinfo;
              D.39058 = vtvar->data.op[0].const_val;
              D.39059 = (unsigned int) D.39058;
              D.39060 = D.39059 * 4;
              D.39061 = D.31239 + D.39060;
              D.39062 = *D.39061;
              D.39070 = D.39062->data.op[1].vtype;
              type_to_eval_stack_type (cfg, D.39070, ins);
              D.31239 = cfg->varinfo;
              D.39058 = vtvar->data.op[0].const_val;
              D.39059 = (unsigned int) D.39058;
              D.39060 = D.39059 * 4;
              D.39061 = D.31239 + D.39060;
              D.39062 = *D.39061;
              D.39065 = D.39062->klass;
              ins->klass = D.39065;
              D.31239 = cfg->varinfo;
              D.39058 = vtvar->data.op[0].const_val;
              D.39059 = (unsigned int) D.39058;
              D.39060 = D.39059 * 4;
              D.39061 = D.31239 + D.39060;
              D.39062 = *D.39061;
              D.39088 = D.39062->dreg;
              ins->sreg1 = D.39088;
              D.31249 = ins->type;
              D.31250 = (<unnamed type>) D.31249;
              D.39134 = alloc_dreg (cfg, D.31250);
              D.39135 = (int) D.39134;
              ins->dreg = D.39135;
              D.31253 = ins->opcode;
              if (D.31253 == 431) goto <D.39136>; else goto <D.39137>;
              <D.39136>:
              D.31239 = cfg->varinfo;
              D.39058 = vtvar->data.op[0].const_val;
              D.39059 = (unsigned int) D.39058;
              D.39060 = D.39059 * 4;
              D.39061 = D.31239 + D.39060;
              D.39062 = *D.39061;
              D.39070 = D.39062->data.op[1].vtype;
              D.39138 = mono_class_from_mono_type (D.39070);
              ins->klass = D.39138;
              <D.39137>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.39139>; else goto <D.39140>;
              <D.39139>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = ins;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              ins->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              goto <D.39141>;
              <D.39140>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.39141>:
            }
            <D.38917>:
            <D.38774>:
            sp.306 = sp;
            sp = sp.306 + 4;
            *sp.306 = ins;
            ip = ip + 5;
            goto <D.27380>;
          }
        finally
          {
            handle_class = {CLOBBER};
          }
      }
      <D.28092>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      if (D.31274 <= 3) goto <D.39143>; else goto <D.39144>;
      <D.39143>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.39145>; else goto <D.39146>;
      <D.39145>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.39147>; else goto <D.39148>;
      <D.39147>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39148>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39146>:
      D.39149 = mini_get_debug_options ();
      D.39150 = D.39149->break_on_unverified;
      if (D.39150 != 0) goto <D.39151>; else goto unverified;
      <D.39151>:
      __asm__ __volatile__("int $03");
      <D.39144>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 371;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      sp = sp + 4294967292;
      D.31489 = *sp;
      D.31682 = D.31489->dreg;
      ins->sreg1 = D.31682;
      ip = ip + 1;
      bblock.78 = bblock;
      bblock.78->out_of_line = 1;
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      if (D.30826 != 0B) goto <D.39152>; else goto <D.39153>;
      <D.39152>:
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      D.30826->next = ins;
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      ins->prev = D.30826;
      bblock.78 = bblock;
      bblock.78->last_ins = ins;
      goto <D.39154>;
      <D.39153>:
      bblock.78 = bblock;
      bblock.78 = bblock;
      bblock.78->last_ins = ins;
      D.30826 = bblock.78->last_ins;
      bblock.78->code = D.30826;
      <D.39154>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 802;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      if (D.30826 != 0B) goto <D.39155>; else goto <D.39156>;
      <D.39155>:
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      D.30826->next = ins;
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      ins->prev = D.30826;
      bblock.78 = bblock;
      bblock.78->last_ins = ins;
      goto <D.39157>;
      <D.39156>:
      bblock.78 = bblock;
      bblock.78 = bblock;
      bblock.78->last_ins = ins;
      D.30826 = bblock.78->last_ins;
      bblock.78->code = D.30826;
      <D.39157>:
      sp = stack_start;
      bblock.78 = bblock;
      link_bblock (cfg, bblock.78, end_bblock);
      start_new_bblock = 1;
      goto <D.27380>;
      <D.28093>:
      if (sp != stack_start) goto <D.39158>; else goto <D.39159>;
      <D.39158>:
      emit_seq_point (cfg, method, ip, 0, 0);
      <D.39159>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 742;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      if (D.30826 != 0B) goto <D.39160>; else goto <D.39161>;
      <D.39160>:
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      D.30826->next = ins;
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      ins->prev = D.30826;
      bblock.78 = bblock;
      bblock.78->last_ins = ins;
      goto <D.39162>;
      <D.39161>:
      bblock.78 = bblock;
      bblock.78 = bblock;
      bblock.78->last_ins = ins;
      D.30826 = bblock.78->last_ins;
      bblock.78->code = D.30826;
      <D.39162>:
      ip = ip + 1;
      start_new_bblock = 1;
      goto <D.28095>;
      <D.28094>:
      sp = sp + 4294967292;
      <D.28095>:
      if (sp != stack_start) goto <D.28094>; else goto <D.28096>;
      <D.28096>:
      goto <D.27380>;
      <D.28097>:
      <D.28098>:
      {
        struct GList * handlers;

        D.31371 = *ip;
        if (D.31371 == 221) goto <D.39163>; else goto <D.39164>;
        <D.39163>:
        D.31934 = ip + 5;
        if (D.31934 > end) goto <D.39165>; else goto <D.39166>;
        <D.39165>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.39167>; else goto <D.39168>;
        <D.39167>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.39169>; else goto <D.39170>;
        <D.39169>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.39170>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39168>:
        D.39171 = mini_get_debug_options ();
        D.39172 = D.39171->break_on_unverified;
        if (D.39172 != 0) goto <D.39173>; else goto unverified;
        <D.39173>:
        __asm__ __volatile__("int $03");
        <D.39166>:
        D.31953 = ip + 1;
        D.31954 = *D.31953;
        D.39174 = D.31954 + 5;
        target = ip + D.39174;
        goto <D.39175>;
        <D.39164>:
        D.31500 = ip + 2;
        if (D.31500 > end) goto <D.39176>; else goto <D.39177>;
        <D.39176>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.39178>; else goto <D.39179>;
        <D.39178>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.39180>; else goto <D.39181>;
        <D.39180>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.39181>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39179>:
        D.39182 = mini_get_debug_options ();
        D.39183 = D.39182->break_on_unverified;
        if (D.39183 != 0) goto <D.39184>; else goto unverified;
        <D.39184>:
        __asm__ __volatile__("int $03");
        <D.39177>:
        D.31519 = ip + 1;
        D.31520 = *D.31519;
        D.39185 = (signed char) D.31520;
        D.39186 = (sizetype) D.39185;
        D.39187 = D.39186 + 2;
        target = ip + D.39187;
        <D.39175>:
        goto <D.28101>;
        <D.28100>:
        sp = sp + 4294967292;
        <D.28101>:
        if (sp != stack_start) goto <D.28100>; else goto <D.28102>;
        <D.28102>:
        i = 0;
        goto <D.28111>;
        <D.28110>:
        {
          struct MonoExceptionClause * clause;

          D.30617 = header->clauses;
          i.76 = (unsigned int) i;
          D.30619 = i.76 * 24;
          clause = D.30617 + D.30619;
          D.39188 = clause->handler_offset;
          ip.83 = (int) ip;
          D.30636 = header->code;
          D.31196 = (int) D.30636;
          D.31197 = ip.83 - D.31196;
          D.39189 = (unsigned int) D.31197;
          if (D.39188 <= D.39189) goto <D.39190>; else goto <D.39191>;
          <D.39190>:
          ip.83 = (int) ip;
          D.30636 = header->code;
          D.31196 = (int) D.30636;
          D.31197 = ip.83 - D.31196;
          D.39189 = (unsigned int) D.31197;
          D.39188 = clause->handler_offset;
          D.39192 = clause->handler_len;
          D.39193 = D.39188 + D.39192;
          if (D.39189 < D.39193) goto <D.39194>; else goto <D.39195>;
          <D.39194>:
          D.39196 = clause->flags;
          if (D.39196 == 0) goto <D.39197>; else goto <D.39198>;
          <D.39197>:
          ip.83 = (int) ip;
          D.30636 = header->code;
          D.31196 = (int) D.30636;
          D.31197 = ip.83 - D.31196;
          D.31371 = *ip;
          if (D.31371 == 221) goto <D.39200>; else goto <D.39201>;
          <D.39200>:
          iftmp.307 = 5;
          goto <D.39202>;
          <D.39201>:
          iftmp.307 = 2;
          <D.39202>:
          D.39203 = D.31197 + iftmp.307;
          D.39204 = (unsigned int) D.39203;
          D.39188 = clause->handler_offset;
          D.39192 = clause->handler_len;
          D.39193 = D.39188 + D.39192;
          if (D.39204 <= D.39193) goto <D.39205>; else goto <D.39206>;
          <D.39205>:
          D.30431 = BIT_FIELD_REF <*method, 8, 160>;
          D.30432 = D.30431 & 124;
          if (D.30432 != 16) goto <D.39207>; else goto <D.39208>;
          <D.39207>:
          {
            struct MonoInst * exc_ins;
            struct MonoBasicBlock * dont_throw;

            exc_ins = mono_emit_jit_icall (cfg, mono_thread_get_undeniable_exception, 0B);
            D.30489 = cfg->mempool;
            dont_throw = mono_mempool_alloc0 (D.30489, 172);
            D.30597 = cfg->num_bblocks;
            D.39209 = D.30597;
            D.39210 = D.39209 + 1;
            cfg->num_bblocks = D.39210;
            D.39211 = (int) D.39209;
            dont_throw->block_num = D.39211;
            {
              struct MonoInst * inst;

              D.30489 = cfg->mempool;
              inst = mono_mempool_alloc (D.30489, 48);
              inst->data.op[1].const_val = 0;
              D.39212 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.39212;
              inst->prev = 0B;
              D.39213 = inst->prev;
              inst->next = D.39213;
              inst->opcode = 323;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.39214 = inst->sreg3;
              inst->sreg2 = D.39214;
              D.39215 = inst->sreg2;
              inst->sreg1 = D.39215;
              D.30712 = cfg->ip;
              inst->cil_code = D.30712;
              inst->dreg = -1;
              D.39216 = exc_ins->dreg;
              inst->sreg1 = D.39216;
              inst->data.op[1].const_val = 0;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.39217>; else goto <D.39218>;
              <D.39217>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = inst;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              inst->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              goto <D.39219>;
              <D.39218>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.39219>:
            }
            {
              struct MonoInst * ins;
              struct MonoBasicBlock * falsebb;

              D.30489 = cfg->mempool;
              ins = mono_mempool_alloc (D.30489, 48);
              ins->data.op[1].const_val = 0;
              D.39220 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.39220;
              ins->prev = 0B;
              D.39221 = ins->prev;
              ins->next = D.39221;
              ins->opcode = 652;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.39222 = ins->sreg3;
              ins->sreg2 = D.39222;
              D.39223 = ins->sreg2;
              ins->sreg1 = D.39223;
              D.30712 = cfg->ip;
              ins->cil_code = D.30712;
              if (0 != 0) goto <D.39224>; else goto <D.39225>;
              <D.39224>:
              D.30489 = cfg->mempool;
              falsebb = mono_mempool_alloc0 (D.30489, 172);
              D.30597 = cfg->num_bblocks;
              D.39226 = D.30597;
              D.39227 = D.39226 + 1;
              cfg->num_bblocks = D.39227;
              D.39228 = (int) D.39226;
              falsebb->block_num = D.39228;
              ins->data.op[0].target_block = dont_throw;
              bblock.127 = cfg->cbb;
              mono_link_bblock (cfg, bblock.127, dont_throw);
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.39229>; else goto <D.39230>;
              <D.39229>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = ins;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              ins->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              goto <D.39231>;
              <D.39230>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.39231>:
              D.39232 = falsebb->cil_code;
              if (D.39232 != 0B) goto <D.39233>; else goto <D.39234>;
              <D.39233>:
              D.30620 = cfg->cil_offset_to_bb;
              D.39232 = falsebb->cil_code;
              D.39235 = (int) D.39232;
              D.30624 = cfg->cil_start;
              D.30625 = (int) D.30624;
              D.39236 = D.39235 - D.30625;
              D.39237 = (unsigned int) D.39236;
              D.39238 = D.39237 * 4;
              D.39239 = D.30620 + D.39238;
              *D.39239 = falsebb;
              <D.39234>:
              D.30656 = cfg->real_offset;
              falsebb->real_offset = D.30656;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.39243>; else goto <D.39240>;
              <D.39243>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.39244 = D.30741->opcode;
              D.39245 = D.39244 + 64981;
              D.39246 = D.39245 <= 9;
              D.39247 = D.39244 + 64874;
              D.39248 = D.39247 <= 9;
              D.39249 = D.39246 | D.39248;
              if (D.39249 != 0) goto <D.39241>; else goto <D.39250>;
              <D.39250>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.34746 = D.30741->opcode;
              D.34747 = D.34746 + 64884;
              if (D.34747 <= 9) goto <D.39241>; else goto <D.39240>;
              <D.39241>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.34748 = D.30741->data.op[1].many_blocks;
              D.34749 = D.34748 + 4;
              D.34750 = *D.34749;
              if (D.34750 == 0B) goto <D.39251>; else goto <D.39240>;
              <D.39251>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.34748 = D.30741->data.op[1].many_blocks;
              D.34749 = D.34748 + 4;
              *D.34749 = falsebb;
              bblock.127 = cfg->cbb;
              mono_link_bblock (cfg, bblock.127, falsebb);
              goto <D.39242>;
              <D.39240>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 == 0B) goto <D.39252>; else goto <D.39254>;
              <D.39254>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.39255 = D.30741->opcode;
              D.39256 = D.39255 != 446;
              D.39257 = D.39255 != 763;
              D.39258 = D.39256 & D.39257;
              if (D.39258 != 0) goto <D.39259>; else goto <D.39253>;
              <D.39259>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.39260 = D.30741->opcode;
              D.39261 = D.39260 + 64981;
              D.39262 = D.39261 > 9;
              D.39263 = D.39260 + 64874;
              D.39264 = D.39263 > 9;
              D.39265 = D.39262 & D.39264;
              if (D.39265 != 0) goto <D.39266>; else goto <D.39253>;
              <D.39266>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.34746 = D.30741->opcode;
              D.34747 = D.34746 + 64884;
              if (D.34747 > 9) goto <D.39252>; else goto <D.39253>;
              <D.39252>:
              bblock.127 = cfg->cbb;
              mono_link_bblock (cfg, bblock.127, falsebb);
              <D.39253>:
              <D.39242>:
              bblock.127 = cfg->cbb;
              bblock.127->next_bb = falsebb;
              cfg->cbb = falsebb;
              goto <D.39267>;
              <D.39225>:
              D.30489 = cfg->mempool;
              D.39268 = mono_mempool_alloc (D.30489, 8);
              ins->data.op[1].many_blocks = D.39268;
              D.39269 = ins->data.op[1].many_blocks;
              *D.39269 = dont_throw;
              D.39269 = ins->data.op[1].many_blocks;
              D.39270 = D.39269 + 4;
              *D.39270 = 0B;
              bblock.127 = cfg->cbb;
              mono_link_bblock (cfg, bblock.127, dont_throw);
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.39271>; else goto <D.39272>;
              <D.39271>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = ins;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              ins->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              goto <D.39273>;
              <D.39272>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.39273>:
              D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.34774 = D.30883 & 8;
              if (D.34774 == 0) goto <D.39274>; else goto <D.39275>;
              <D.39274>:
              D.30489 = cfg->mempool;
              falsebb = mono_mempool_alloc0 (D.30489, 172);
              D.30597 = cfg->num_bblocks;
              D.39276 = D.30597;
              D.39277 = D.39276 + 1;
              cfg->num_bblocks = D.39277;
              D.39278 = (int) D.39276;
              falsebb->block_num = D.39278;
              D.39269 = ins->data.op[1].many_blocks;
              D.39270 = D.39269 + 4;
              *D.39270 = falsebb;
              bblock.127 = cfg->cbb;
              mono_link_bblock (cfg, bblock.127, falsebb);
              D.39232 = falsebb->cil_code;
              if (D.39232 != 0B) goto <D.39279>; else goto <D.39280>;
              <D.39279>:
              D.30620 = cfg->cil_offset_to_bb;
              D.39232 = falsebb->cil_code;
              D.39235 = (int) D.39232;
              D.30624 = cfg->cil_start;
              D.30625 = (int) D.30624;
              D.39236 = D.39235 - D.30625;
              D.39237 = (unsigned int) D.39236;
              D.39238 = D.39237 * 4;
              D.39239 = D.30620 + D.39238;
              *D.39239 = falsebb;
              <D.39280>:
              D.30656 = cfg->real_offset;
              falsebb->real_offset = D.30656;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.39284>; else goto <D.39281>;
              <D.39284>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.39285 = D.30741->opcode;
              D.39286 = D.39285 + 64981;
              D.39287 = D.39286 <= 9;
              D.39288 = D.39285 + 64874;
              D.39289 = D.39288 <= 9;
              D.39290 = D.39287 | D.39289;
              if (D.39290 != 0) goto <D.39282>; else goto <D.39291>;
              <D.39291>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.34746 = D.30741->opcode;
              D.34747 = D.34746 + 64884;
              if (D.34747 <= 9) goto <D.39282>; else goto <D.39281>;
              <D.39282>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.34748 = D.30741->data.op[1].many_blocks;
              D.34749 = D.34748 + 4;
              D.34750 = *D.34749;
              if (D.34750 == 0B) goto <D.39292>; else goto <D.39281>;
              <D.39292>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.34748 = D.30741->data.op[1].many_blocks;
              D.34749 = D.34748 + 4;
              *D.34749 = falsebb;
              bblock.127 = cfg->cbb;
              mono_link_bblock (cfg, bblock.127, falsebb);
              goto <D.39283>;
              <D.39281>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 == 0B) goto <D.39293>; else goto <D.39295>;
              <D.39295>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.39296 = D.30741->opcode;
              D.39297 = D.39296 != 446;
              D.39298 = D.39296 != 763;
              D.39299 = D.39297 & D.39298;
              if (D.39299 != 0) goto <D.39300>; else goto <D.39294>;
              <D.39300>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.39301 = D.30741->opcode;
              D.39302 = D.39301 + 64981;
              D.39303 = D.39302 > 9;
              D.39304 = D.39301 + 64874;
              D.39305 = D.39304 > 9;
              D.39306 = D.39303 & D.39305;
              if (D.39306 != 0) goto <D.39307>; else goto <D.39294>;
              <D.39307>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.34746 = D.30741->opcode;
              D.34747 = D.34746 + 64884;
              if (D.34747 > 9) goto <D.39293>; else goto <D.39294>;
              <D.39293>:
              bblock.127 = cfg->cbb;
              mono_link_bblock (cfg, bblock.127, falsebb);
              <D.39294>:
              <D.39283>:
              bblock.127 = cfg->cbb;
              bblock.127->next_bb = falsebb;
              cfg->cbb = falsebb;
              goto <D.39308>;
              <D.39275>:
              bblock.127 = cfg->cbb;
              bblock.127->extended = 1;
              <D.39308>:
              <D.39267>:
            }
            {
              struct MonoInst * inst;

              D.30489 = cfg->mempool;
              inst = mono_mempool_alloc (D.30489, 48);
              inst->data.op[1].const_val = 0;
              D.39309 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.39309;
              inst->prev = 0B;
              D.39310 = inst->prev;
              inst->next = D.39310;
              inst->opcode = 371;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.39311 = inst->sreg3;
              inst->sreg2 = D.39311;
              D.39312 = inst->sreg2;
              inst->sreg1 = D.39312;
              D.30712 = cfg->ip;
              inst->cil_code = D.30712;
              inst->dreg = -1;
              D.39216 = exc_ins->dreg;
              inst->sreg1 = D.39216;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.39313>; else goto <D.39314>;
              <D.39313>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = inst;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              inst->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              goto <D.39315>;
              <D.39314>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.39315>:
            }
            D.39316 = dont_throw->cil_code;
            if (D.39316 != 0B) goto <D.39317>; else goto <D.39318>;
            <D.39317>:
            D.30620 = cfg->cil_offset_to_bb;
            D.39316 = dont_throw->cil_code;
            D.39319 = (int) D.39316;
            D.30624 = cfg->cil_start;
            D.30625 = (int) D.30624;
            D.39320 = D.39319 - D.30625;
            D.39321 = (unsigned int) D.39320;
            D.39322 = D.39321 * 4;
            D.39323 = D.30620 + D.39322;
            *D.39323 = dont_throw;
            <D.39318>:
            D.30656 = cfg->real_offset;
            dont_throw->real_offset = D.30656;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.39327>; else goto <D.39324>;
            <D.39327>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.39328 = D.30741->opcode;
            D.39329 = D.39328 + 64981;
            D.39330 = D.39329 <= 9;
            D.39331 = D.39328 + 64874;
            D.39332 = D.39331 <= 9;
            D.39333 = D.39330 | D.39332;
            if (D.39333 != 0) goto <D.39325>; else goto <D.39334>;
            <D.39334>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.34746 = D.30741->opcode;
            D.34747 = D.34746 + 64884;
            if (D.34747 <= 9) goto <D.39325>; else goto <D.39324>;
            <D.39325>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.34748 = D.30741->data.op[1].many_blocks;
            D.34749 = D.34748 + 4;
            D.34750 = *D.34749;
            if (D.34750 == 0B) goto <D.39335>; else goto <D.39324>;
            <D.39335>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.34748 = D.30741->data.op[1].many_blocks;
            D.34749 = D.34748 + 4;
            *D.34749 = dont_throw;
            bblock.127 = cfg->cbb;
            mono_link_bblock (cfg, bblock.127, dont_throw);
            goto <D.39326>;
            <D.39324>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 == 0B) goto <D.39336>; else goto <D.39338>;
            <D.39338>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.39339 = D.30741->opcode;
            D.39340 = D.39339 != 446;
            D.39341 = D.39339 != 763;
            D.39342 = D.39340 & D.39341;
            if (D.39342 != 0) goto <D.39343>; else goto <D.39337>;
            <D.39343>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.39344 = D.30741->opcode;
            D.39345 = D.39344 + 64981;
            D.39346 = D.39345 > 9;
            D.39347 = D.39344 + 64874;
            D.39348 = D.39347 > 9;
            D.39349 = D.39346 & D.39348;
            if (D.39349 != 0) goto <D.39350>; else goto <D.39337>;
            <D.39350>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.34746 = D.30741->opcode;
            D.34747 = D.34746 + 64884;
            if (D.34747 > 9) goto <D.39336>; else goto <D.39337>;
            <D.39336>:
            bblock.127 = cfg->cbb;
            mono_link_bblock (cfg, bblock.127, dont_throw);
            <D.39337>:
            <D.39326>:
            bblock.127 = cfg->cbb;
            bblock.127->next_bb = dont_throw;
            cfg->cbb = dont_throw;
            bblock.127 = cfg->cbb;
            bblock = bblock.127;
          }
          <D.39208>:
          <D.39206>:
          <D.39198>:
          <D.39195>:
          <D.39191>:
        }
        i = i + 1;
        <D.28111>:
        D.30806 = header->num_clauses;
        D.30807 = (int) D.30806;
        if (D.30807 > i) goto <D.28110>; else goto <D.28112>;
        <D.28112>:
        handlers = mono_find_final_block (cfg, ip, target, 2);
        if (handlers != 0B) goto <D.39351>; else goto <D.39352>;
        <D.39351>:
        {
          struct GList * tmp;
          struct MonoExceptionClause * clause;

          tmp = handlers;
          goto <D.28117>;
          <D.28116>:
          clause = tmp->data;
          D.30620 = cfg->cil_offset_to_bb;
          D.39353 = clause->handler_offset;
          D.39354 = D.39353 * 4;
          D.39355 = D.30620 + D.39354;
          tblock = *D.39355;
          D.39356 = tblock == 0B;
          D.39357 = (long int) D.39356;
          D.39358 = __builtin_expect (D.39357, 0);
          if (D.39358 != 0) goto <D.39359>; else goto <D.39360>;
          <D.39359>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10988, "tblock");
          <D.39360>:
          bblock.78 = bblock;
          link_bblock (cfg, bblock.78, tblock);
          D.30489 = cfg->mempool;
          ins = mono_mempool_alloc (D.30489, 48);
          ins->data.op[1].const_val = 0;
          D.30708 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.30708;
          ins->prev = 0B;
          D.30709 = ins->prev;
          ins->next = D.30709;
          ins->opcode = 739;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.30710 = ins->sreg3;
          ins->sreg2 = D.30710;
          D.30711 = ins->sreg2;
          ins->sreg1 = D.30711;
          D.30712 = cfg->ip;
          ins->cil_code = D.30712;
          ins->data.op[0].target_block = tblock;
          ins->data.op[1].exception_clause = clause;
          bblock.78 = bblock;
          D.30826 = bblock.78->last_ins;
          if (D.30826 != 0B) goto <D.39361>; else goto <D.39362>;
          <D.39361>:
          bblock.78 = bblock;
          D.30826 = bblock.78->last_ins;
          D.30826->next = ins;
          bblock.78 = bblock;
          D.30826 = bblock.78->last_ins;
          ins->prev = D.30826;
          bblock.78 = bblock;
          bblock.78->last_ins = ins;
          goto <D.39363>;
          <D.39362>:
          bblock.78 = bblock;
          bblock.78 = bblock;
          bblock.78->last_ins = ins;
          D.30826 = bblock.78->last_ins;
          bblock.78->code = D.30826;
          <D.39363>:
          bblock.78 = bblock;
          bblock.78->has_call_handler = 1;
          if (0 != 0) goto <D.39364>; else goto <D.39365>;
          <D.39364>:
          {
            struct MonoBasicBlock * target_bb;

            D.30620 = cfg->cil_offset_to_bb;
            target.152 = (int) target;
            D.30624 = cfg->cil_start;
            D.30625 = (int) D.30624;
            D.34181 = target.152 - D.30625;
            D.34182 = (unsigned int) D.34181;
            D.34183 = D.34182 * 4;
            D.34184 = D.30620 + D.34183;
            target_bb = *D.34184;
            if (target_bb == 0B) goto <D.39366>; else goto <D.39367>;
            <D.39366>:
            if (target >= end) goto <D.39368>; else goto <D.39370>;
            <D.39370>:
            D.30636 = header->code;
            if (D.30636 > target) goto <D.39368>; else goto <D.39369>;
            <D.39368>:
            D.30637 = cfg->gsharedvt;
            if (D.30637 != 0) goto <D.39371>; else goto <D.39372>;
            <D.39371>:
            D.30569 = cfg->verbose_level;
            if (D.30569 > 2) goto <D.39373>; else goto <D.39374>;
            <D.39373>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.39374>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.39372>:
            D.39375 = mini_get_debug_options ();
            D.39376 = D.39375->break_on_unverified;
            if (D.39376 != 0) goto <D.39377>; else goto unverified;
            <D.39377>:
            __asm__ __volatile__("int $03");
            <D.39369>:
            D.30489 = cfg->mempool;
            target_bb = mono_mempool_alloc0 (D.30489, 172);
            D.30597 = cfg->num_bblocks;
            D.39378 = D.30597;
            D.39379 = D.39378 + 1;
            cfg->num_bblocks = D.39379;
            D.39380 = (int) D.39378;
            target_bb->block_num = D.39380;
            target_bb->cil_code = target;
            D.39381 = target_bb->cil_code;
            if (D.39381 != 0B) goto <D.39382>; else goto <D.39383>;
            <D.39382>:
            D.30620 = cfg->cil_offset_to_bb;
            D.39381 = target_bb->cil_code;
            D.39384 = (int) D.39381;
            D.30624 = cfg->cil_start;
            D.30625 = (int) D.30624;
            D.39385 = D.39384 - D.30625;
            D.39386 = (unsigned int) D.39385;
            D.39387 = D.39386 * 4;
            D.39388 = D.30620 + D.39387;
            *D.39388 = target_bb;
            <D.39383>:
            D.30656 = cfg->real_offset;
            target_bb->real_offset = D.30656;
            <D.39367>:
            link_bblock (cfg, tblock, target_bb);
          }
          <D.39365>:
          tmp = tmp->next;
          <D.28117>:
          if (tmp != 0B) goto <D.28116>; else goto <D.28118>;
          <D.28118>:
          monoeg_g_list_free (handlers);
        }
        <D.39352>:
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        ins->opcode = 446;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        if (D.30826 != 0B) goto <D.39389>; else goto <D.39390>;
        <D.39389>:
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        D.30826->next = ins;
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        ins->prev = D.30826;
        bblock.78 = bblock;
        bblock.78->last_ins = ins;
        goto <D.39391>;
        <D.39390>:
        bblock.78 = bblock;
        bblock.78 = bblock;
        bblock.78->last_ins = ins;
        D.30826 = bblock.78->last_ins;
        bblock.78->code = D.30826;
        <D.39391>:
        D.30620 = cfg->cil_offset_to_bb;
        target.152 = (int) target;
        D.30624 = cfg->cil_start;
        D.30625 = (int) D.30624;
        D.34181 = target.152 - D.30625;
        D.34182 = (unsigned int) D.34181;
        D.34183 = D.34182 * 4;
        D.34184 = D.30620 + D.34183;
        tblock = *D.34184;
        if (tblock == 0B) goto <D.39392>; else goto <D.39393>;
        <D.39392>:
        if (target >= end) goto <D.39394>; else goto <D.39396>;
        <D.39396>:
        D.30636 = header->code;
        if (D.30636 > target) goto <D.39394>; else goto <D.39395>;
        <D.39394>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.39397>; else goto <D.39398>;
        <D.39397>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.39399>; else goto <D.39400>;
        <D.39399>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.39400>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39398>:
        D.39401 = mini_get_debug_options ();
        D.39402 = D.39401->break_on_unverified;
        if (D.39402 != 0) goto <D.39403>; else goto unverified;
        <D.39403>:
        __asm__ __volatile__("int $03");
        <D.39395>:
        D.30489 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.30489, 172);
        D.30597 = cfg->num_bblocks;
        D.39404 = D.30597;
        D.39405 = D.39404 + 1;
        cfg->num_bblocks = D.39405;
        D.39406 = (int) D.39404;
        tblock->block_num = D.39406;
        tblock->cil_code = target;
        D.30685 = tblock->cil_code;
        if (D.30685 != 0B) goto <D.39407>; else goto <D.39408>;
        <D.39407>:
        D.30620 = cfg->cil_offset_to_bb;
        D.30685 = tblock->cil_code;
        D.30688 = (int) D.30685;
        D.30624 = cfg->cil_start;
        D.30625 = (int) D.30624;
        D.30689 = D.30688 - D.30625;
        D.30690 = (unsigned int) D.30689;
        D.30691 = D.30690 * 4;
        D.30692 = D.30620 + D.30691;
        *D.30692 = tblock;
        <D.39408>:
        D.30656 = cfg->real_offset;
        tblock->real_offset = D.30656;
        <D.39393>:
        bblock.78 = bblock;
        link_bblock (cfg, bblock.78, tblock);
        ins->data.op[0].target_block = tblock;
        start_new_bblock = 1;
        D.31371 = *ip;
        if (D.31371 == 221) goto <D.39409>; else goto <D.39410>;
        <D.39409>:
        ip = ip + 5;
        goto <D.39411>;
        <D.39410>:
        ip = ip + 2;
        <D.39411>:
        goto <D.27380>;
      }
      <D.28119>:
      D.30431 = BIT_FIELD_REF <*method, 8, 160>;
      D.30432 = D.30431 & 124;
      D.39412 = D.30432 == 0;
      D.39413 = (long int) D.39412;
      D.39414 = __builtin_expect (D.39413, 0);
      if (D.39414 != 0) goto <D.39415>; else goto <D.39416>;
      <D.39415>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11030, "method->wrapper_type != MONO_WRAPPER_NONE");
      <D.39416>:
      D.31500 = ip + 2;
      if (D.31500 > end) goto <D.39417>; else goto <D.39418>;
      <D.39417>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.39419>; else goto <D.39420>;
      <D.39419>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.39421>; else goto <D.39422>;
      <D.39421>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39422>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39420>:
      D.39423 = mini_get_debug_options ();
      D.39424 = D.39423->break_on_unverified;
      if (D.39424 != 0) goto <D.39425>; else goto unverified;
      <D.39425>:
      __asm__ __volatile__("int $03");
      <D.39418>:
      D.31519 = ip + 1;
      D.31520 = *D.31519;
      D.31850 = (int) D.31520;
      switch (D.31850) <default: <D.28188>, case 0: <D.28120>, case 1: <D.28149>, case 2: <D.28125>, case 3: <D.28139>, case 4: <D.28144>, case 5: <D.28156>, case 6: <D.28150>, case 7: <D.28159>, case 8: <D.28160>, case 9: <D.28162>, case 10: <D.28163>, case 11: <D.28164>, case 12: <D.28167>, case 13: <D.28168>, case 14: <D.28134>, case 15: <D.28170>, case 16: <D.28172>, case 17: <D.28173>, case 18: <D.28186>, case 19: <D.28129>>
      <D.28120>:
      {
        void * func;
        struct MonoJitICallInfo * info;

        token = MEM[(const guint32 *)ip + 2B];
        func = mono_method_get_wrapper_data (method, token);
        info = mono_find_jit_icall_by_addr (func);
        if (info == 0B) goto <D.39426>; else goto <D.39427>;
        <D.39426>:
        D.39428 = mono_method_full_name (method, 1);
        monoeg_g_log (0B, 4, "Could not find icall address in wrapper %s", D.39428);
        <D.28123>:
        goto <D.28123>;
        <D.39427>:
        D.39429 = info == 0B;
        D.39430 = (long int) D.39429;
        D.39431 = __builtin_expect (D.39430, 0);
        if (D.39431 != 0) goto <D.39432>; else goto <D.39433>;
        <D.39432>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11043, "info");
        <D.39433>:
        sp.85 = (int) sp;
        stack_start.86 = (int) stack_start;
        D.31274 = sp.85 - stack_start.86;
        D.31275 = D.31274 /[ex] 4;
        D.39434 = info->sig;
        D.39435 = D.39434->param_count;
        D.39436 = (int) D.39435;
        if (D.31275 < D.39436) goto <D.39437>; else goto <D.39438>;
        <D.39437>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.39439>; else goto <D.39440>;
        <D.39439>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.39441>; else goto <D.39442>;
        <D.39441>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.39442>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39440>:
        D.39443 = mini_get_debug_options ();
        D.39444 = D.39443->break_on_unverified;
        if (D.39444 != 0) goto <D.39445>; else goto unverified;
        <D.39445>:
        __asm__ __volatile__("int $03");
        <D.39438>:
        D.39434 = info->sig;
        D.39435 = D.39434->param_count;
        D.39446 = (unsigned int) D.39435;
        D.39447 = D.39446 * 4;
        D.39448 = -D.39447;
        sp = sp + D.39448;
        D.39449 = info->func;
        ins = mono_emit_jit_icall (cfg, D.39449, sp);
        D.39434 = info->sig;
        D.39450 = D.39434->ret;
        D.39451 = mono_type_is_void (D.39450);
        if (D.39451 == 0) goto <D.39452>; else goto <D.39453>;
        <D.39452>:
        sp.308 = sp;
        sp = sp.308 + 4;
        *sp.308 = ins;
        <D.39453>:
        ip = ip + 6;
        num_calls.309 = num_calls;
        num_calls = num_calls.309 + 1;
        D.39456 = num_calls.309 * 10;
        inline_costs = D.39456 + inline_costs;
        goto <D.28124>;
      }
      <D.28125>:
      {
        void * ptr;

        sp.85 = (int) sp;
        stack_start.86 = (int) stack_start;
        D.31274 = sp.85 - stack_start.86;
        D.31275 = D.31274 /[ex] 4;
        D.31188 = header->max_stack;
        D.31189 = (int) D.31188;
        if (D.31275 >= D.31189) goto <D.39457>; else goto <D.39458>;
        <D.39457>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.39459>; else goto <D.39460>;
        <D.39459>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.39461>; else goto <D.39462>;
        <D.39461>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.39462>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39460>:
        D.39463 = mini_get_debug_options ();
        D.39464 = D.39463->break_on_unverified;
        if (D.39464 != 0) goto <D.39465>; else goto unverified;
        <D.39465>:
        __asm__ __volatile__("int $03");
        <D.39458>:
        D.35322 = ip + 6;
        if (D.35322 > end) goto <D.39466>; else goto <D.39467>;
        <D.39466>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.39468>; else goto <D.39469>;
        <D.39468>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.39470>; else goto <D.39471>;
        <D.39470>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.39471>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39469>:
        D.39472 = mini_get_debug_options ();
        D.39473 = D.39472->break_on_unverified;
        if (D.39473 != 0) goto <D.39474>; else goto unverified;
        <D.39474>:
        __asm__ __volatile__("int $03");
        <D.39467>:
        token = MEM[(const guint32 *)ip + 2B];
        ptr = mono_method_get_wrapper_data (method, token);
        D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.30884 = D.30883 & 64;
        if (D.30884 != 0) goto <D.39475>; else goto <D.39476>;
        <D.39475>:
        D.39477 = mono_thread_interruption_request_flag ();
        if (D.39477 == ptr) goto <D.39478>; else goto <D.39479>;
        <D.39478>:
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.30884 = D.30883 & 64;
        if (D.30884 != 0) goto <D.39481>; else goto <D.39482>;
        <D.39481>:
        iftmp.310 = 738;
        goto <D.39483>;
        <D.39482>:
        iftmp.310 = 362;
        <D.39483>:
        ins->opcode = iftmp.310;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.30884 = D.30883 & 64;
        if (D.30884 != 0) goto <D.39484>; else goto <D.39485>;
        <D.39484>:
        {
          struct MonoInst * group;
          struct MonoInst * got_loc;

          got_loc = mono_get_got_var (cfg);
          D.30489 = cfg->mempool;
          group = mono_mempool_alloc (D.30489, 48);
          group->data.op[1].const_val = 0;
          D.39486 = group->data.op[1].const_val;
          group->data.op[0].const_val = D.39486;
          group->prev = 0B;
          D.39487 = group->prev;
          group->next = D.39487;
          group->opcode = 737;
          group->flags = 0;
          group->type = 0;
          group->dreg = -1;
          group->sreg3 = -1;
          D.39488 = group->sreg3;
          group->sreg2 = D.39488;
          D.39489 = group->sreg2;
          group->sreg1 = D.39489;
          D.30712 = cfg->ip;
          group->cil_code = D.30712;
          group->data.op[0].src = 0B;
          group->data.op[1].src = 33B;
          D.39490 = got_loc->dreg;
          ins->sreg1 = D.39490;
          ins->data.op[1].p = group;
        }
        goto <D.39491>;
        <D.39485>:
        ins->data.op[0].p = 0B;
        ins->data.op[1].src = 33B;
        <D.39491>:
        ins->type = 3;
        D.39492 = alloc_dreg (cfg, 3);
        D.39493 = (int) D.39492;
        ins->dreg = D.39493;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.39494>; else goto <D.39495>;
        <D.39494>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = ins;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        ins->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        goto <D.39496>;
        <D.39495>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.39496>:
        sp.311 = sp;
        sp = sp.311 + 4;
        *sp.311 = ins;
        ip = ip + 6;
        goto <D.28124>;
        <D.39479>:
        <D.39476>:
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        ins->opcode = 362;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        ins->data.op[0].p = ptr;
        ins->type = 3;
        D.39498 = alloc_dreg (cfg, 3);
        D.39499 = (int) D.39498;
        ins->dreg = D.39499;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.39500>; else goto <D.39501>;
        <D.39500>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = ins;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        ins->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        goto <D.39502>;
        <D.39501>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.39502>:
        sp.312 = sp;
        sp = sp.312 + 4;
        *sp.312 = ins;
        ip = ip + 6;
        num_calls.313 = num_calls;
        num_calls = num_calls.313 + 1;
        D.39505 = num_calls.313 * 10;
        inline_costs = D.39505 + inline_costs;
        D.30569 = cfg->verbose_level;
        if (D.30569 > 1) goto <D.39506>; else goto <D.39507>;
        <D.39506>:
        printf ("AOT disabled: %s:%d\n", "method-to-ir.c", 11077);
        <D.39507>:
        cfg->disable_aot = 1;
        goto <D.28124>;
      }
      <D.28129>:
      {
        struct MonoJitICallInfo * callinfo;
        void * ptr;

        sp.85 = (int) sp;
        stack_start.86 = (int) stack_start;
        D.31274 = sp.85 - stack_start.86;
        D.31275 = D.31274 /[ex] 4;
        D.31188 = header->max_stack;
        D.31189 = (int) D.31188;
        if (D.31275 >= D.31189) goto <D.39508>; else goto <D.39509>;
        <D.39508>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.39510>; else goto <D.39511>;
        <D.39510>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.39512>; else goto <D.39513>;
        <D.39512>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.39513>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39511>:
        D.39514 = mini_get_debug_options ();
        D.39515 = D.39514->break_on_unverified;
        if (D.39515 != 0) goto <D.39516>; else goto unverified;
        <D.39516>:
        __asm__ __volatile__("int $03");
        <D.39509>:
        D.35322 = ip + 6;
        if (D.35322 > end) goto <D.39517>; else goto <D.39518>;
        <D.39517>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.39519>; else goto <D.39520>;
        <D.39519>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.39521>; else goto <D.39522>;
        <D.39521>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.39522>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39520>:
        D.39523 = mini_get_debug_options ();
        D.39524 = D.39523->break_on_unverified;
        if (D.39524 != 0) goto <D.39525>; else goto unverified;
        <D.39525>:
        __asm__ __volatile__("int $03");
        <D.39518>:
        token = MEM[(const guint32 *)ip + 2B];
        ptr = mono_method_get_wrapper_data (method, token);
        callinfo = mono_find_jit_icall_by_addr (ptr);
        D.39526 = callinfo == 0B;
        D.39527 = (long int) D.39526;
        D.39528 = __builtin_expect (D.39527, 0);
        if (D.39528 != 0) goto <D.39529>; else goto <D.39530>;
        <D.39529>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11090, "callinfo");
        <D.39530>:
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.30884 = D.30883 & 64;
        if (D.30884 != 0) goto <D.39532>; else goto <D.39533>;
        <D.39532>:
        iftmp.314 = 738;
        goto <D.39534>;
        <D.39533>:
        iftmp.314 = 362;
        <D.39534>:
        ins->opcode = iftmp.314;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.30884 = D.30883 & 64;
        if (D.30884 != 0) goto <D.39535>; else goto <D.39536>;
        <D.39535>:
        {
          struct MonoInst * group;
          struct MonoInst * got_loc;

          got_loc = mono_get_got_var (cfg);
          D.30489 = cfg->mempool;
          group = mono_mempool_alloc (D.30489, 48);
          group->data.op[1].const_val = 0;
          D.39537 = group->data.op[1].const_val;
          group->data.op[0].const_val = D.39537;
          group->prev = 0B;
          D.39538 = group->prev;
          group->next = D.39538;
          group->opcode = 737;
          group->flags = 0;
          group->type = 0;
          group->dreg = -1;
          group->sreg3 = -1;
          D.39539 = group->sreg3;
          group->sreg2 = D.39539;
          D.39540 = group->sreg2;
          group->sreg1 = D.39540;
          D.30712 = cfg->ip;
          group->cil_code = D.30712;
          D.39541 = callinfo->name;
          group->data.op[0].src = D.39541;
          group->data.op[1].src = 32B;
          D.39542 = got_loc->dreg;
          ins->sreg1 = D.39542;
          ins->data.op[1].p = group;
        }
        goto <D.39543>;
        <D.39536>:
        D.39541 = callinfo->name;
        ins->data.op[0].p = D.39541;
        ins->data.op[1].src = 32B;
        <D.39543>:
        ins->type = 3;
        D.39544 = alloc_dreg (cfg, 3);
        D.39545 = (int) D.39544;
        ins->dreg = D.39545;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.39546>; else goto <D.39547>;
        <D.39546>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = ins;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        ins->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        goto <D.39548>;
        <D.39547>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.39548>:
        sp.315 = sp;
        sp = sp.315 + 4;
        *sp.315 = ins;
        ip = ip + 6;
        num_calls.316 = num_calls;
        num_calls = num_calls.316 + 1;
        D.39551 = num_calls.316 * 10;
        inline_costs = D.39551 + inline_costs;
        goto <D.28124>;
      }
      <D.28134>:
      {
        struct MonoMethod * cmethod;
        void * ptr;

        sp.85 = (int) sp;
        stack_start.86 = (int) stack_start;
        D.31274 = sp.85 - stack_start.86;
        D.31275 = D.31274 /[ex] 4;
        D.31188 = header->max_stack;
        D.31189 = (int) D.31188;
        if (D.31275 >= D.31189) goto <D.39552>; else goto <D.39553>;
        <D.39552>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.39554>; else goto <D.39555>;
        <D.39554>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.39556>; else goto <D.39557>;
        <D.39556>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.39557>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39555>:
        D.39558 = mini_get_debug_options ();
        D.39559 = D.39558->break_on_unverified;
        if (D.39559 != 0) goto <D.39560>; else goto unverified;
        <D.39560>:
        __asm__ __volatile__("int $03");
        <D.39553>:
        D.35322 = ip + 6;
        if (D.35322 > end) goto <D.39561>; else goto <D.39562>;
        <D.39561>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.39563>; else goto <D.39564>;
        <D.39563>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.39565>; else goto <D.39566>;
        <D.39565>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.39566>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39564>:
        D.39567 = mini_get_debug_options ();
        D.39568 = D.39567->break_on_unverified;
        if (D.39568 != 0) goto <D.39569>; else goto unverified;
        <D.39569>:
        __asm__ __volatile__("int $03");
        <D.39562>:
        token = MEM[(const guint32 *)ip + 2B];
        cmethod = mono_method_get_wrapper_data (method, token);
        D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.30884 = D.30883 & 64;
        if (D.30884 != 0) goto <D.39570>; else goto <D.39571>;
        <D.39570>:
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.30884 = D.30883 & 64;
        if (D.30884 != 0) goto <D.39573>; else goto <D.39574>;
        <D.39573>:
        iftmp.317 = 738;
        goto <D.39575>;
        <D.39574>:
        iftmp.317 = 362;
        <D.39575>:
        ins->opcode = iftmp.317;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.30884 = D.30883 & 64;
        if (D.30884 != 0) goto <D.39576>; else goto <D.39577>;
        <D.39576>:
        {
          struct MonoInst * group;
          struct MonoInst * got_loc;

          got_loc = mono_get_got_var (cfg);
          D.30489 = cfg->mempool;
          group = mono_mempool_alloc (D.30489, 48);
          group->data.op[1].const_val = 0;
          D.39578 = group->data.op[1].const_val;
          group->data.op[0].const_val = D.39578;
          group->prev = 0B;
          D.39579 = group->prev;
          group->next = D.39579;
          group->opcode = 737;
          group->flags = 0;
          group->type = 0;
          group->dreg = -1;
          group->sreg3 = -1;
          D.39580 = group->sreg3;
          group->sreg2 = D.39580;
          D.39581 = group->sreg2;
          group->sreg1 = D.39581;
          D.30712 = cfg->ip;
          group->cil_code = D.30712;
          group->data.op[0].src = cmethod;
          group->data.op[1].src = 31B;
          D.39582 = got_loc->dreg;
          ins->sreg1 = D.39582;
          ins->data.op[1].p = group;
        }
        goto <D.39583>;
        <D.39577>:
        ins->data.op[0].p = cmethod;
        ins->data.op[1].src = 31B;
        <D.39583>:
        ins->type = 3;
        D.39584 = alloc_dreg (cfg, 3);
        D.39585 = (int) D.39584;
        ins->dreg = D.39585;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.39586>; else goto <D.39587>;
        <D.39586>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = ins;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        ins->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        goto <D.39588>;
        <D.39587>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.39588>:
        goto <D.39589>;
        <D.39571>:
        ptr = mono_lookup_internal_call (cmethod);
        D.39590 = ptr == 0B;
        D.39591 = (long int) D.39590;
        D.39592 = __builtin_expect (D.39591, 0);
        if (D.39592 != 0) goto <D.39593>; else goto <D.39594>;
        <D.39593>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11111, "ptr");
        <D.39594>:
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        ins->opcode = 362;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        ins->data.op[0].p = ptr;
        ins->type = 3;
        D.39595 = alloc_dreg (cfg, 3);
        D.39596 = (int) D.39595;
        ins->dreg = D.39596;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.39597>; else goto <D.39598>;
        <D.39597>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = ins;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        ins->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        goto <D.39599>;
        <D.39598>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.39599>:
        <D.39589>:
        sp.318 = sp;
        sp = sp.318 + 4;
        *sp.318 = ins;
        ip = ip + 6;
        goto <D.28124>;
      }
      <D.28139>:
      {
        struct MonoInst * src_var;
        struct MonoInst * src;

        sp.85 = (int) sp;
        stack_start.86 = (int) stack_start;
        D.31274 = sp.85 - stack_start.86;
        if (D.31274 <= 3) goto <D.39601>; else goto <D.39602>;
        <D.39601>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.39603>; else goto <D.39604>;
        <D.39603>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.39605>; else goto <D.39606>;
        <D.39605>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.39606>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39604>:
        D.39607 = mini_get_debug_options ();
        D.39608 = D.39607->break_on_unverified;
        if (D.39608 != 0) goto <D.39609>; else goto unverified;
        <D.39609>:
        __asm__ __volatile__("int $03");
        <D.39602>:
        sp = sp + 4294967292;
        D.31489 = *sp;
        D.31682 = D.31489->dreg;
        D.37072 = (unsigned int) D.31682;
        D.31601 = cfg->vreg_to_inst_len;
        if (D.37072 < D.31601) goto <D.39611>; else goto <D.39612>;
        <D.39611>:
        D.31604 = cfg->vreg_to_inst;
        D.31489 = *sp;
        D.31682 = D.31489->dreg;
        D.37075 = (unsigned int) D.31682;
        D.37076 = D.37075 * 4;
        D.37077 = D.31604 + D.37076;
        iftmp.319 = *D.37077;
        goto <D.39613>;
        <D.39612>:
        iftmp.319 = 0B;
        <D.39613>:
        src_var = iftmp.319;
        D.30489 = cfg->mempool;
        src = mono_mempool_alloc (D.30489, 48);
        src->data.op[1].const_val = 0;
        D.39614 = src->data.op[1].const_val;
        src->data.op[0].const_val = D.39614;
        src->prev = 0B;
        D.39615 = src->prev;
        src->next = D.39615;
        src->opcode = 314;
        src->flags = 0;
        src->type = 0;
        src->dreg = -1;
        src->sreg3 = -1;
        D.39616 = src->sreg3;
        src->sreg2 = D.39616;
        D.39617 = src->sreg2;
        src->sreg1 = D.39617;
        D.30712 = cfg->ip;
        src->cil_code = D.30712;
        src->data.op[0].p = src_var;
        D.39618 = src_var->flags;
        D.39619 = D.39618 | 16;
        src_var->flags = D.39619;
        src->type = 5;
        D.39620 = src_var->klass;
        src->klass = D.39620;
        D.39621 = alloc_dreg (cfg, 5);
        D.39622 = (int) D.39621;
        src->dreg = D.39622;
        cfg->has_indirection = 1;
        D.30637 = cfg->gsharedvt;
        D.31575 = D.30637 != 0;
        D.31576 = (long int) D.31575;
        D.31577 = __builtin_expect (D.31576, 0);
        if (D.31577 != 0) goto <D.39623>; else goto <D.39624>;
        <D.39623>:
        D.39625 = src_var->data.op[1].vtype;
        D.39626 = mini_is_gsharedvt_variable_type (cfg, D.39625);
        if (D.39626 != 0) goto <D.39627>; else goto <D.39628>;
        <D.39627>:
        handle_gsharedvt_ldaddr (cfg);
        <D.39628>:
        <D.39624>:
        D.39630 = mono_arch_is_soft_float ();
        if (D.39630 != 0) goto <D.39631>; else goto <D.39632>;
        <D.39631>:
        D.39633 = src_var->type;
        D.39634 = D.39633 == 2;
        D.39635 = D.39633 == 4;
        D.39636 = D.39634 | D.39635;
        D.39637 = (int) D.39636;
        iftmp.320 = (_Bool) D.39637;
        goto <D.39638>;
        <D.39632>:
        D.39639 = src_var->type;
        iftmp.320 = D.39639 == 2;
        <D.39638>:
        if (iftmp.320 != 0) goto <D.39640>; else goto <D.39641>;
        <D.39640>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.39643 = src_var->dreg;
          D.39644 = D.39643 + 1;
          D.39645 = (unsigned int) D.39644;
          D.31601 = cfg->vreg_to_inst_len;
          if (D.39645 < D.31601) goto <D.39646>; else goto <D.39647>;
          <D.39646>:
          D.31604 = cfg->vreg_to_inst;
          D.39643 = src_var->dreg;
          D.39648 = (sizetype) D.39643;
          D.39649 = D.39648 + 1;
          D.39650 = D.39649 * 4;
          D.39651 = D.31604 + D.39650;
          iftmp.321 = *D.39651;
          goto <D.39652>;
          <D.39647>:
          iftmp.321 = 0B;
          <D.39652>:
          var1 = iftmp.321;
          D.39643 = src_var->dreg;
          D.39654 = D.39643 + 2;
          D.39655 = (unsigned int) D.39654;
          D.31601 = cfg->vreg_to_inst_len;
          if (D.39655 < D.31601) goto <D.39656>; else goto <D.39657>;
          <D.39656>:
          D.31604 = cfg->vreg_to_inst;
          D.39643 = src_var->dreg;
          D.39648 = (sizetype) D.39643;
          D.39658 = D.39648 + 2;
          D.39659 = D.39658 * 4;
          D.39660 = D.31604 + D.39659;
          iftmp.322 = *D.39660;
          goto <D.39661>;
          <D.39657>:
          iftmp.322 = 0B;
          <D.39661>:
          var2 = iftmp.322;
          D.39662 = var1 == 0B;
          D.39663 = (long int) D.39662;
          D.39664 = __builtin_expect (D.39663, 0);
          if (D.39664 != 0) goto <D.39665>; else goto <D.39666>;
          <D.39665>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11126, "var1");
          <D.39666>:
          D.39667 = var2 == 0B;
          D.39668 = (long int) D.39667;
          D.39669 = __builtin_expect (D.39668, 0);
          if (D.39669 != 0) goto <D.39670>; else goto <D.39671>;
          <D.39670>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11126, "var2");
          <D.39671>:
          D.39672 = var1->flags;
          D.39673 = D.39672 | 16;
          var1->flags = D.39673;
          D.39674 = var2->flags;
          D.39675 = D.39674 | 16;
          var2->flags = D.39675;
        }
        <D.39641>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.39676>; else goto <D.39677>;
        <D.39676>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = src;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        src->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = src;
        goto <D.39678>;
        <D.39677>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = src;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.39678>:
        sp.323 = sp;
        sp = sp.323 + 4;
        *sp.323 = src;
        ip = ip + 2;
        goto <D.28124>;
      }
      <D.28144>:
      {
        struct MonoInst * iargs[2];

        try
          {
            sp.85 = (int) sp;
            stack_start.86 = (int) stack_start;
            D.31274 = sp.85 - stack_start.86;
            D.31275 = D.31274 /[ex] 4;
            D.31188 = header->max_stack;
            D.31189 = (int) D.31188;
            if (D.31275 >= D.31189) goto <D.39680>; else goto <D.39681>;
            <D.39680>:
            D.30637 = cfg->gsharedvt;
            if (D.30637 != 0) goto <D.39682>; else goto <D.39683>;
            <D.39682>:
            D.30569 = cfg->verbose_level;
            if (D.30569 > 2) goto <D.39684>; else goto <D.39685>;
            <D.39684>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.39685>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.39683>:
            D.39686 = mini_get_debug_options ();
            D.39687 = D.39686->break_on_unverified;
            if (D.39687 != 0) goto <D.39688>; else goto unverified;
            <D.39688>:
            __asm__ __volatile__("int $03");
            <D.39681>:
            D.35322 = ip + 6;
            if (D.35322 > end) goto <D.39689>; else goto <D.39690>;
            <D.39689>:
            D.30637 = cfg->gsharedvt;
            if (D.30637 != 0) goto <D.39691>; else goto <D.39692>;
            <D.39691>:
            D.30569 = cfg->verbose_level;
            if (D.30569 > 2) goto <D.39693>; else goto <D.39694>;
            <D.39693>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.39694>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.39692>:
            D.39695 = mini_get_debug_options ();
            D.39696 = D.39695->break_on_unverified;
            if (D.39696 != 0) goto <D.39697>; else goto unverified;
            <D.39697>:
            __asm__ __volatile__("int $03");
            <D.39690>:
            token = MEM[(const guint32 *)ip + 2B];
            klass.324 = mono_method_get_wrapper_data (method, token);
            klass = klass.324;
            klass.173 = klass;
            mono_class_init (klass.173);
            D.30881 = cfg->opt;
            D.30882 = D.30881 & 512;
            if (D.30882 != 0) goto <D.39699>; else goto <D.39702>;
            <D.39702>:
            D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.30884 = D.30883 & 64;
            if (D.30884 != 0) goto <D.39699>; else goto <D.39700>;
            <D.39699>:
            {
              struct MonoInst * __domain_var;

              __domain_var = mono_get_domainvar (cfg);
              D.30489 = cfg->mempool;
              D.39703 = mono_mempool_alloc (D.30489, 48);
              iargs[0] = D.39703;
              D.39704 = iargs[0];
              D.39704 = iargs[0];
              D.39704->data.op[1].const_val = 0;
              D.39705 = D.39704->data.op[1].const_val;
              D.39704->data.op[0].const_val = D.39705;
              D.39704 = iargs[0];
              D.39704 = iargs[0];
              D.39704->prev = 0B;
              D.39706 = D.39704->prev;
              D.39704->next = D.39706;
              D.39704 = iargs[0];
              D.39704->opcode = 428;
              D.39704 = iargs[0];
              D.39704->flags = 0;
              D.39704 = iargs[0];
              D.39704->type = 0;
              D.39704 = iargs[0];
              D.39704->dreg = -1;
              D.39704 = iargs[0];
              D.39704 = iargs[0];
              D.39704 = iargs[0];
              D.39704->sreg3 = -1;
              D.39707 = D.39704->sreg3;
              D.39704->sreg2 = D.39707;
              D.39708 = D.39704->sreg2;
              D.39704->sreg1 = D.39708;
              D.39704 = iargs[0];
              D.30712 = cfg->ip;
              D.39704->cil_code = D.30712;
              D.39704 = iargs[0];
              D.31239 = cfg->varinfo;
              D.39709 = __domain_var->data.op[0].const_val;
              D.39710 = (unsigned int) D.39709;
              D.39711 = D.39710 * 4;
              D.39712 = D.31239 + D.39711;
              D.39713 = *D.39712;
              D.39714 = D.39713->data.op[1].vtype;
              D.39715 = mono_type_to_regmove (cfg, D.39714);
              D.39716 = (short unsigned int) D.39715;
              D.39704->opcode = D.39716;
              D.39704 = iargs[0];
              D.31239 = cfg->varinfo;
              D.39709 = __domain_var->data.op[0].const_val;
              D.39710 = (unsigned int) D.39709;
              D.39711 = D.39710 * 4;
              D.39712 = D.31239 + D.39711;
              D.39713 = *D.39712;
              D.39714 = D.39713->data.op[1].vtype;
              type_to_eval_stack_type (cfg, D.39714, D.39704);
              D.39704 = iargs[0];
              D.31239 = cfg->varinfo;
              D.39709 = __domain_var->data.op[0].const_val;
              D.39710 = (unsigned int) D.39709;
              D.39711 = D.39710 * 4;
              D.39712 = D.31239 + D.39711;
              D.39713 = *D.39712;
              D.39717 = D.39713->klass;
              D.39704->klass = D.39717;
              D.39704 = iargs[0];
              D.31239 = cfg->varinfo;
              D.39709 = __domain_var->data.op[0].const_val;
              D.39710 = (unsigned int) D.39709;
              D.39711 = D.39710 * 4;
              D.39712 = D.31239 + D.39711;
              D.39713 = *D.39712;
              D.39718 = D.39713->dreg;
              D.39704->sreg1 = D.39718;
              D.39704 = iargs[0];
              D.39704 = iargs[0];
              D.39719 = D.39704->type;
              D.39720 = (<unnamed type>) D.39719;
              D.39721 = alloc_dreg (cfg, D.39720);
              D.39722 = (int) D.39721;
              D.39704->dreg = D.39722;
              D.39704 = iargs[0];
              D.39723 = D.39704->opcode;
              if (D.39723 == 431) goto <D.39724>; else goto <D.39725>;
              <D.39724>:
              D.39704 = iargs[0];
              D.31239 = cfg->varinfo;
              D.39709 = __domain_var->data.op[0].const_val;
              D.39710 = (unsigned int) D.39709;
              D.39711 = D.39710 * 4;
              D.39712 = D.31239 + D.39711;
              D.39713 = *D.39712;
              D.39714 = D.39713->data.op[1].vtype;
              D.39726 = mono_class_from_mono_type (D.39714);
              D.39704->klass = D.39726;
              <D.39725>:
            }
            goto <D.39701>;
            <D.39700>:
            D.30489 = cfg->mempool;
            D.39727 = mono_mempool_alloc (D.30489, 48);
            iargs[0] = D.39727;
            D.39704 = iargs[0];
            D.39704 = iargs[0];
            D.39704->data.op[1].const_val = 0;
            D.39705 = D.39704->data.op[1].const_val;
            D.39704->data.op[0].const_val = D.39705;
            D.39704 = iargs[0];
            D.39704 = iargs[0];
            D.39704->prev = 0B;
            D.39706 = D.39704->prev;
            D.39704->next = D.39706;
            D.39704 = iargs[0];
            D.39704->opcode = 362;
            D.39704 = iargs[0];
            D.39704->flags = 0;
            D.39704 = iargs[0];
            D.39704->type = 0;
            D.39704 = iargs[0];
            D.39704->dreg = -1;
            D.39704 = iargs[0];
            D.39704 = iargs[0];
            D.39704 = iargs[0];
            D.39704->sreg3 = -1;
            D.39707 = D.39704->sreg3;
            D.39704->sreg2 = D.39707;
            D.39708 = D.39704->sreg2;
            D.39704->sreg1 = D.39708;
            D.39704 = iargs[0];
            D.30712 = cfg->ip;
            D.39704->cil_code = D.30712;
            D.39704 = iargs[0];
            D.30513 = cfg->domain;
            D.39704->data.op[0].p = D.30513;
            D.39704 = iargs[0];
            D.39704->type = 3;
            D.39704 = iargs[0];
            D.39728 = alloc_dreg (cfg, 3);
            D.39729 = (int) D.39728;
            D.39704->dreg = D.39729;
            <D.39701>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.39730>; else goto <D.39731>;
            <D.39730>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.39704 = iargs[0];
            D.30741->next = D.39704;
            D.39704 = iargs[0];
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.39704->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.39704 = iargs[0];
            bblock.127->last_ins = D.39704;
            goto <D.39732>;
            <D.39731>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.39704 = iargs[0];
            bblock.127->last_ins = D.39704;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.39732>:
            D.30489 = cfg->mempool;
            D.39733 = mono_mempool_alloc (D.30489, 48);
            iargs[1] = D.39733;
            D.39734 = iargs[1];
            D.39734 = iargs[1];
            D.39734->data.op[1].const_val = 0;
            D.39735 = D.39734->data.op[1].const_val;
            D.39734->data.op[0].const_val = D.39735;
            D.39734 = iargs[1];
            D.39734 = iargs[1];
            D.39734->prev = 0B;
            D.39736 = D.39734->prev;
            D.39734->next = D.39736;
            D.39734 = iargs[1];
            D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.30884 = D.30883 & 64;
            if (D.30884 != 0) goto <D.39738>; else goto <D.39739>;
            <D.39738>:
            iftmp.325 = 738;
            goto <D.39740>;
            <D.39739>:
            iftmp.325 = 362;
            <D.39740>:
            D.39734->opcode = iftmp.325;
            D.39734 = iargs[1];
            D.39734->flags = 0;
            D.39734 = iargs[1];
            D.39734->type = 0;
            D.39734 = iargs[1];
            D.39734->dreg = -1;
            D.39734 = iargs[1];
            D.39734 = iargs[1];
            D.39734 = iargs[1];
            D.39734->sreg3 = -1;
            D.39741 = D.39734->sreg3;
            D.39734->sreg2 = D.39741;
            D.39742 = D.39734->sreg2;
            D.39734->sreg1 = D.39742;
            D.39734 = iargs[1];
            D.30712 = cfg->ip;
            D.39734->cil_code = D.30712;
            D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.30884 = D.30883 & 64;
            if (D.30884 != 0) goto <D.39743>; else goto <D.39744>;
            <D.39743>:
            {
              struct MonoInst * group;
              struct MonoInst * got_loc;

              got_loc = mono_get_got_var (cfg);
              D.30489 = cfg->mempool;
              group = mono_mempool_alloc (D.30489, 48);
              group->data.op[1].const_val = 0;
              D.39745 = group->data.op[1].const_val;
              group->data.op[0].const_val = D.39745;
              group->prev = 0B;
              D.39746 = group->prev;
              group->next = D.39746;
              group->opcode = 737;
              group->flags = 0;
              group->type = 0;
              group->dreg = -1;
              group->sreg3 = -1;
              D.39747 = group->sreg3;
              group->sreg2 = D.39747;
              D.39748 = group->sreg2;
              group->sreg1 = D.39748;
              D.30712 = cfg->ip;
              group->cil_code = D.30712;
              klass.173 = klass;
              group->data.op[0].src = klass.173;
              group->data.op[1].src = 11B;
              D.39734 = iargs[1];
              D.39749 = got_loc->dreg;
              D.39734->sreg1 = D.39749;
              D.39734 = iargs[1];
              D.39734->data.op[1].p = group;
            }
            goto <D.39750>;
            <D.39744>:
            D.39734 = iargs[1];
            klass.173 = klass;
            D.39734->data.op[0].p = klass.173;
            D.39734 = iargs[1];
            D.39734->data.op[1].src = 11B;
            <D.39750>:
            D.39734 = iargs[1];
            D.39734->type = 3;
            D.39734 = iargs[1];
            D.39751 = alloc_dreg (cfg, 3);
            D.39752 = (int) D.39751;
            D.39734->dreg = D.39752;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.39753>; else goto <D.39754>;
            <D.39753>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.39734 = iargs[1];
            D.30741->next = D.39734;
            D.39734 = iargs[1];
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.39734->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.39734 = iargs[1];
            bblock.127->last_ins = D.39734;
            goto <D.39755>;
            <D.39754>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.39734 = iargs[1];
            bblock.127->last_ins = D.39734;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.39755>:
            sp.326 = sp;
            sp = sp.326 + 4;
            D.39757 = mono_emit_jit_icall (cfg, mono_object_new, &iargs);
            *sp.326 = D.39757;
            ip = ip + 6;
            num_calls.327 = num_calls;
            num_calls = num_calls.327 + 1;
            D.39759 = num_calls.327 * 10;
            inline_costs = D.39759 + inline_costs;
            goto <D.28124>;
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      <D.28149>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      if (D.31274 <= 3) goto <D.39760>; else goto <D.39761>;
      <D.39760>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.39762>; else goto <D.39763>;
      <D.39762>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.39764>; else goto <D.39765>;
      <D.39764>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39765>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39763>:
      D.39766 = mini_get_debug_options ();
      D.39767 = D.39766->break_on_unverified;
      if (D.39767 != 0) goto <D.39768>; else goto unverified;
      <D.39768>:
      __asm__ __volatile__("int $03");
      <D.39761>:
      sp = sp + 4294967292;
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 428;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      D.39769 = alloc_ireg_mp (cfg);
      D.39770 = (int) D.39769;
      ins->dreg = D.39770;
      D.31489 = *sp;
      D.31682 = D.31489->dreg;
      ins->sreg1 = D.31682;
      ins->type = 5;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.39771>; else goto <D.39772>;
      <D.39771>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.39773>;
      <D.39772>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.39773>:
      sp.328 = sp;
      sp = sp.328 + 4;
      *sp.328 = ins;
      ip = ip + 2;
      goto <D.28124>;
      <D.28150>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      if (D.31274 <= 3) goto <D.39775>; else goto <D.39776>;
      <D.39775>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.39777>; else goto <D.39778>;
      <D.39777>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.39779>; else goto <D.39780>;
      <D.39779>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39780>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39778>:
      D.39781 = mini_get_debug_options ();
      D.39782 = D.39781->break_on_unverified;
      if (D.39782 != 0) goto <D.39783>; else goto unverified;
      <D.39783>:
      __asm__ __volatile__("int $03");
      <D.39776>:
      D.35322 = ip + 6;
      if (D.35322 > end) goto <D.39784>; else goto <D.39785>;
      <D.39784>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.39786>; else goto <D.39787>;
      <D.39786>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.39788>; else goto <D.39789>;
      <D.39788>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39789>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39787>:
      D.39790 = mini_get_debug_options ();
      D.39791 = D.39790->break_on_unverified;
      if (D.39791 != 0) goto <D.39792>; else goto unverified;
      <D.39792>:
      __asm__ __volatile__("int $03");
      <D.39785>:
      sp = sp + 4294967292;
      token = MEM[(const guint32 *)ip + 2B];
      klass.329 = mono_method_get_wrapper_data (method, token);
      klass = klass.329;
      klass.173 = klass;
      D.36797 = BIT_FIELD_REF <*klass.173, 8, 160>;
      D.36798 = D.36797 & 8;
      D.39794 = D.36798 == 0;
      D.39795 = (long int) D.39794;
      D.39796 = __builtin_expect (D.39795, 0);
      if (D.39796 != 0) goto <D.39797>; else goto <D.39798>;
      <D.39797>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11169, "klass->valuetype");
      <D.39798>:
      klass.173 = klass;
      mono_class_init (klass.173);
      {
        struct MonoInst * src;
        struct MonoInst * dest;
        struct MonoInst * temp;

        src = *sp;
        klass.173 = klass;
        D.35339 = &klass.173->byval_arg;
        temp = mono_compile_create_var (cfg, D.35339, 329);
        temp->backend.is_pinvoke = 1;
        D.30489 = cfg->mempool;
        dest = mono_mempool_alloc (D.30489, 48);
        dest->data.op[1].const_val = 0;
        D.39799 = dest->data.op[1].const_val;
        dest->data.op[0].const_val = D.39799;
        dest->prev = 0B;
        D.39800 = dest->prev;
        dest->next = D.39800;
        dest->opcode = 314;
        dest->flags = 0;
        dest->type = 0;
        dest->dreg = -1;
        dest->sreg3 = -1;
        D.39801 = dest->sreg3;
        dest->sreg2 = D.39801;
        D.39802 = dest->sreg2;
        dest->sreg1 = D.39802;
        D.30712 = cfg->ip;
        dest->cil_code = D.30712;
        D.31239 = cfg->varinfo;
        D.39803 = temp->data.op[0].const_val;
        D.39804 = (unsigned int) D.39803;
        D.39805 = D.39804 * 4;
        D.39806 = D.31239 + D.39805;
        D.39807 = *D.39806;
        dest->data.op[0].p = D.39807;
        D.31239 = cfg->varinfo;
        D.39803 = temp->data.op[0].const_val;
        D.39804 = (unsigned int) D.39803;
        D.39805 = D.39804 * 4;
        D.39806 = D.31239 + D.39805;
        D.39807 = *D.39806;
        D.31239 = cfg->varinfo;
        D.39803 = temp->data.op[0].const_val;
        D.39804 = (unsigned int) D.39803;
        D.39805 = D.39804 * 4;
        D.39806 = D.31239 + D.39805;
        D.39807 = *D.39806;
        D.39808 = D.39807->flags;
        D.39809 = D.39808 | 16;
        D.39807->flags = D.39809;
        dest->type = 5;
        D.31239 = cfg->varinfo;
        D.39803 = temp->data.op[0].const_val;
        D.39804 = (unsigned int) D.39803;
        D.39805 = D.39804 * 4;
        D.39806 = D.31239 + D.39805;
        D.39807 = *D.39806;
        D.39810 = D.39807->klass;
        dest->klass = D.39810;
        D.39811 = alloc_dreg (cfg, 5);
        D.39812 = (int) D.39811;
        dest->dreg = D.39812;
        cfg->has_indirection = 1;
        D.30637 = cfg->gsharedvt;
        D.31575 = D.30637 != 0;
        D.31576 = (long int) D.31575;
        D.31577 = __builtin_expect (D.31576, 0);
        if (D.31577 != 0) goto <D.39813>; else goto <D.39814>;
        <D.39813>:
        D.31239 = cfg->varinfo;
        D.39803 = temp->data.op[0].const_val;
        D.39804 = (unsigned int) D.39803;
        D.39805 = D.39804 * 4;
        D.39806 = D.31239 + D.39805;
        D.39807 = *D.39806;
        D.39815 = D.39807->data.op[1].vtype;
        D.39816 = mini_is_gsharedvt_variable_type (cfg, D.39815);
        if (D.39816 != 0) goto <D.39817>; else goto <D.39818>;
        <D.39817>:
        handle_gsharedvt_ldaddr (cfg);
        <D.39818>:
        <D.39814>:
        D.39820 = mono_arch_is_soft_float ();
        if (D.39820 != 0) goto <D.39821>; else goto <D.39822>;
        <D.39821>:
        D.31239 = cfg->varinfo;
        D.39803 = temp->data.op[0].const_val;
        D.39804 = (unsigned int) D.39803;
        D.39805 = D.39804 * 4;
        D.39806 = D.31239 + D.39805;
        D.39807 = *D.39806;
        D.39823 = D.39807->type;
        D.39824 = D.39823 == 2;
        D.39825 = D.39823 == 4;
        D.39826 = D.39824 | D.39825;
        D.39827 = (int) D.39826;
        iftmp.330 = (_Bool) D.39827;
        goto <D.39828>;
        <D.39822>:
        D.31239 = cfg->varinfo;
        D.39803 = temp->data.op[0].const_val;
        D.39804 = (unsigned int) D.39803;
        D.39805 = D.39804 * 4;
        D.39806 = D.31239 + D.39805;
        D.39807 = *D.39806;
        D.39829 = D.39807->type;
        iftmp.330 = D.39829 == 2;
        <D.39828>:
        if (iftmp.330 != 0) goto <D.39830>; else goto <D.39831>;
        <D.39830>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.31239 = cfg->varinfo;
          D.39803 = temp->data.op[0].const_val;
          D.39804 = (unsigned int) D.39803;
          D.39805 = D.39804 * 4;
          D.39806 = D.31239 + D.39805;
          D.39807 = *D.39806;
          D.39833 = D.39807->dreg;
          D.39834 = D.39833 + 1;
          D.39835 = (unsigned int) D.39834;
          D.31601 = cfg->vreg_to_inst_len;
          if (D.39835 < D.31601) goto <D.39836>; else goto <D.39837>;
          <D.39836>:
          D.31604 = cfg->vreg_to_inst;
          D.31239 = cfg->varinfo;
          D.39803 = temp->data.op[0].const_val;
          D.39804 = (unsigned int) D.39803;
          D.39805 = D.39804 * 4;
          D.39806 = D.31239 + D.39805;
          D.39807 = *D.39806;
          D.39833 = D.39807->dreg;
          D.39838 = (sizetype) D.39833;
          D.39839 = D.39838 + 1;
          D.39840 = D.39839 * 4;
          D.39841 = D.31604 + D.39840;
          iftmp.331 = *D.39841;
          goto <D.39842>;
          <D.39837>:
          iftmp.331 = 0B;
          <D.39842>:
          var1 = iftmp.331;
          D.31239 = cfg->varinfo;
          D.39803 = temp->data.op[0].const_val;
          D.39804 = (unsigned int) D.39803;
          D.39805 = D.39804 * 4;
          D.39806 = D.31239 + D.39805;
          D.39807 = *D.39806;
          D.39833 = D.39807->dreg;
          D.39844 = D.39833 + 2;
          D.39845 = (unsigned int) D.39844;
          D.31601 = cfg->vreg_to_inst_len;
          if (D.39845 < D.31601) goto <D.39846>; else goto <D.39847>;
          <D.39846>:
          D.31604 = cfg->vreg_to_inst;
          D.31239 = cfg->varinfo;
          D.39803 = temp->data.op[0].const_val;
          D.39804 = (unsigned int) D.39803;
          D.39805 = D.39804 * 4;
          D.39806 = D.31239 + D.39805;
          D.39807 = *D.39806;
          D.39833 = D.39807->dreg;
          D.39838 = (sizetype) D.39833;
          D.39848 = D.39838 + 2;
          D.39849 = D.39848 * 4;
          D.39850 = D.31604 + D.39849;
          iftmp.332 = *D.39850;
          goto <D.39851>;
          <D.39847>:
          iftmp.332 = 0B;
          <D.39851>:
          var2 = iftmp.332;
          D.39852 = var1 == 0B;
          D.39853 = (long int) D.39852;
          D.39854 = __builtin_expect (D.39853, 0);
          if (D.39854 != 0) goto <D.39855>; else goto <D.39856>;
          <D.39855>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11178, "var1");
          <D.39856>:
          D.39857 = var2 == 0B;
          D.39858 = (long int) D.39857;
          D.39859 = __builtin_expect (D.39858, 0);
          if (D.39859 != 0) goto <D.39860>; else goto <D.39861>;
          <D.39860>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11178, "var2");
          <D.39861>:
          D.39862 = var1->flags;
          D.39863 = D.39862 | 16;
          var1->flags = D.39863;
          D.39864 = var2->flags;
          D.39865 = D.39864 | 16;
          var2->flags = D.39865;
        }
        <D.39831>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.39866>; else goto <D.39867>;
        <D.39866>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = dest;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        dest->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = dest;
        goto <D.39868>;
        <D.39867>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = dest;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.39868>:
        klass.173 = klass;
        mini_emit_stobj (cfg, dest, src, klass.173, 1);
        D.30489 = cfg->mempool;
        dest = mono_mempool_alloc (D.30489, 48);
        dest->data.op[1].const_val = 0;
        D.39799 = dest->data.op[1].const_val;
        dest->data.op[0].const_val = D.39799;
        dest->prev = 0B;
        D.39800 = dest->prev;
        dest->next = D.39800;
        dest->opcode = 428;
        dest->flags = 0;
        dest->type = 0;
        dest->dreg = -1;
        dest->sreg3 = -1;
        D.39801 = dest->sreg3;
        dest->sreg2 = D.39801;
        D.39802 = dest->sreg2;
        dest->sreg1 = D.39802;
        D.30712 = cfg->ip;
        dest->cil_code = D.30712;
        D.31239 = cfg->varinfo;
        D.39803 = temp->data.op[0].const_val;
        D.39804 = (unsigned int) D.39803;
        D.39805 = D.39804 * 4;
        D.39806 = D.31239 + D.39805;
        D.39807 = *D.39806;
        D.39815 = D.39807->data.op[1].vtype;
        D.39869 = mono_type_to_regmove (cfg, D.39815);
        D.39870 = (short unsigned int) D.39869;
        dest->opcode = D.39870;
        D.31239 = cfg->varinfo;
        D.39803 = temp->data.op[0].const_val;
        D.39804 = (unsigned int) D.39803;
        D.39805 = D.39804 * 4;
        D.39806 = D.31239 + D.39805;
        D.39807 = *D.39806;
        D.39815 = D.39807->data.op[1].vtype;
        type_to_eval_stack_type (cfg, D.39815, dest);
        D.31239 = cfg->varinfo;
        D.39803 = temp->data.op[0].const_val;
        D.39804 = (unsigned int) D.39803;
        D.39805 = D.39804 * 4;
        D.39806 = D.31239 + D.39805;
        D.39807 = *D.39806;
        D.39810 = D.39807->klass;
        dest->klass = D.39810;
        D.31239 = cfg->varinfo;
        D.39803 = temp->data.op[0].const_val;
        D.39804 = (unsigned int) D.39803;
        D.39805 = D.39804 * 4;
        D.39806 = D.31239 + D.39805;
        D.39807 = *D.39806;
        D.39833 = D.39807->dreg;
        dest->sreg1 = D.39833;
        D.39871 = dest->type;
        D.39872 = (<unnamed type>) D.39871;
        D.39873 = alloc_dreg (cfg, D.39872);
        D.39874 = (int) D.39873;
        dest->dreg = D.39874;
        D.39875 = dest->opcode;
        if (D.39875 == 431) goto <D.39876>; else goto <D.39877>;
        <D.39876>:
        D.31239 = cfg->varinfo;
        D.39803 = temp->data.op[0].const_val;
        D.39804 = (unsigned int) D.39803;
        D.39805 = D.39804 * 4;
        D.39806 = D.31239 + D.39805;
        D.39807 = *D.39806;
        D.39815 = D.39807->data.op[1].vtype;
        D.39878 = mono_class_from_mono_type (D.39815);
        dest->klass = D.39878;
        <D.39877>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.39879>; else goto <D.39880>;
        <D.39879>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = dest;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        dest->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = dest;
        goto <D.39881>;
        <D.39880>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = dest;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.39881>:
        dest->type = 7;
        klass.173 = klass;
        dest->klass = klass.173;
        sp.333 = sp;
        sp = sp.333 + 4;
        *sp.333 = dest;
        ip = ip + 6;
      }
      goto <D.28124>;
      <D.28156>:
      D.34076 = cfg->ret;
      D.39883 = D.34076 == 0B;
      D.39884 = (long int) D.39883;
      D.39885 = __builtin_expect (D.39884, 0);
      if (D.39885 != 0) goto <D.39886>; else goto <D.39887>;
      <D.39886>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11194, "cfg->ret");
      <D.39887>:
      D.39888 = mono_method_signature (method);
      D.39889 = BIT_FIELD_REF <*D.39888, 8, 88>;
      D.39890 = D.39889 & 1;
      D.39891 = D.39890 == 0;
      D.39892 = (long int) D.39891;
      D.39893 = __builtin_expect (D.39892, 0);
      if (D.39893 != 0) goto <D.39894>; else goto <D.39895>;
      <D.39894>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11195, "mono_method_signature (method)->pinvoke");
      <D.39895>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      if (D.31274 <= 3) goto <D.39896>; else goto <D.39897>;
      <D.39896>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.39898>; else goto <D.39899>;
      <D.39898>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.39900>; else goto <D.39901>;
      <D.39900>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39901>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39899>:
      D.39902 = mini_get_debug_options ();
      D.39903 = D.39902->break_on_unverified;
      if (D.39903 != 0) goto <D.39904>; else goto unverified;
      <D.39904>:
      __asm__ __volatile__("int $03");
      <D.39897>:
      sp = sp + 4294967292;
      D.35322 = ip + 6;
      if (D.35322 > end) goto <D.39905>; else goto <D.39906>;
      <D.39905>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.39907>; else goto <D.39908>;
      <D.39907>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.39909>; else goto <D.39910>;
      <D.39909>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39910>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39908>:
      D.39911 = mini_get_debug_options ();
      D.39912 = D.39911->break_on_unverified;
      if (D.39912 != 0) goto <D.39913>; else goto unverified;
      <D.39913>:
      __asm__ __volatile__("int $03");
      <D.39906>:
      token = MEM[(const guint32 *)ip + 2B];
      klass.334 = mono_method_get_wrapper_data (method, token);
      klass = klass.334;
      D.34119 = cfg->vret_addr;
      if (D.34119 == 0B) goto <D.39915>; else goto <D.39916>;
      <D.39915>:
      D.31276 = BIT_FIELD_REF <*cfg, 8, 3400>;
      D.39917 = D.31276 & 4;
      D.39918 = D.39917 == 0;
      D.39919 = (long int) D.39918;
      D.39920 = __builtin_expect (D.39919, 0);
      if (D.39920 != 0) goto <D.39921>; else goto <D.39922>;
      <D.39921>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11204, "cfg->ret_var_is_local");
      <D.39922>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 314;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      D.34076 = cfg->ret;
      ins->data.op[0].p = D.34076;
      D.34076 = cfg->ret;
      D.34076 = cfg->ret;
      D.39923 = D.34076->flags;
      D.39924 = D.39923 | 16;
      D.34076->flags = D.39924;
      ins->type = 5;
      D.34076 = cfg->ret;
      D.34128 = D.34076->klass;
      ins->klass = D.34128;
      D.39925 = alloc_dreg (cfg, 5);
      D.39926 = (int) D.39925;
      ins->dreg = D.39926;
      cfg->has_indirection = 1;
      D.30637 = cfg->gsharedvt;
      D.31575 = D.30637 != 0;
      D.31576 = (long int) D.31575;
      D.31577 = __builtin_expect (D.31576, 0);
      if (D.31577 != 0) goto <D.39927>; else goto <D.39928>;
      <D.39927>:
      D.34076 = cfg->ret;
      D.39929 = D.34076->data.op[1].vtype;
      D.39930 = mini_is_gsharedvt_variable_type (cfg, D.39929);
      if (D.39930 != 0) goto <D.39931>; else goto <D.39932>;
      <D.39931>:
      handle_gsharedvt_ldaddr (cfg);
      <D.39932>:
      <D.39928>:
      D.39934 = mono_arch_is_soft_float ();
      if (D.39934 != 0) goto <D.39935>; else goto <D.39936>;
      <D.39935>:
      D.34076 = cfg->ret;
      D.39937 = D.34076->type;
      D.39938 = D.39937 == 2;
      D.39939 = D.39937 == 4;
      D.39940 = D.39938 | D.39939;
      D.39941 = (int) D.39940;
      iftmp.335 = (_Bool) D.39941;
      goto <D.39942>;
      <D.39936>:
      D.34076 = cfg->ret;
      D.39943 = D.34076->type;
      iftmp.335 = D.39943 == 2;
      <D.39942>:
      if (iftmp.335 != 0) goto <D.39944>; else goto <D.39945>;
      <D.39944>:
      {
        struct MonoInst * var1;
        struct MonoInst * var2;

        D.34076 = cfg->ret;
        D.34129 = D.34076->dreg;
        D.39947 = D.34129 + 1;
        D.39948 = (unsigned int) D.39947;
        D.31601 = cfg->vreg_to_inst_len;
        if (D.39948 < D.31601) goto <D.39949>; else goto <D.39950>;
        <D.39949>:
        D.31604 = cfg->vreg_to_inst;
        D.34076 = cfg->ret;
        D.34129 = D.34076->dreg;
        D.39951 = (sizetype) D.34129;
        D.39952 = D.39951 + 1;
        D.39953 = D.39952 * 4;
        D.39954 = D.31604 + D.39953;
        iftmp.336 = *D.39954;
        goto <D.39955>;
        <D.39950>:
        iftmp.336 = 0B;
        <D.39955>:
        var1 = iftmp.336;
        D.34076 = cfg->ret;
        D.34129 = D.34076->dreg;
        D.39957 = D.34129 + 2;
        D.39958 = (unsigned int) D.39957;
        D.31601 = cfg->vreg_to_inst_len;
        if (D.39958 < D.31601) goto <D.39959>; else goto <D.39960>;
        <D.39959>:
        D.31604 = cfg->vreg_to_inst;
        D.34076 = cfg->ret;
        D.34129 = D.34076->dreg;
        D.39951 = (sizetype) D.34129;
        D.39961 = D.39951 + 2;
        D.39962 = D.39961 * 4;
        D.39963 = D.31604 + D.39962;
        iftmp.337 = *D.39963;
        goto <D.39964>;
        <D.39960>:
        iftmp.337 = 0B;
        <D.39964>:
        var2 = iftmp.337;
        D.39965 = var1 == 0B;
        D.39966 = (long int) D.39965;
        D.39967 = __builtin_expect (D.39966, 0);
        if (D.39967 != 0) goto <D.39968>; else goto <D.39969>;
        <D.39968>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11206, "var1");
        <D.39969>:
        D.39970 = var2 == 0B;
        D.39971 = (long int) D.39970;
        D.39972 = __builtin_expect (D.39971, 0);
        if (D.39972 != 0) goto <D.39973>; else goto <D.39974>;
        <D.39973>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11206, "var2");
        <D.39974>:
        D.39975 = var1->flags;
        D.39976 = D.39975 | 16;
        var1->flags = D.39976;
        D.39977 = var2->flags;
        D.39978 = D.39977 | 16;
        var2->flags = D.39978;
      }
      <D.39945>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.39979>; else goto <D.39980>;
      <D.39979>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.39981>;
      <D.39980>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.39981>:
      goto <D.39982>;
      <D.39916>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 428;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      ins->type = 5;
      D.34076 = cfg->ret;
      D.34128 = D.34076->klass;
      ins->klass = D.34128;
      D.34119 = cfg->vret_addr;
      D.34142 = D.34119->dreg;
      ins->sreg1 = D.34142;
      D.31249 = ins->type;
      D.31250 = (<unnamed type>) D.31249;
      D.39983 = alloc_dreg (cfg, D.31250);
      D.39984 = (int) D.39983;
      ins->dreg = D.39984;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.39985>; else goto <D.39986>;
      <D.39985>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.39987>;
      <D.39986>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.39987>:
      <D.39982>:
      klass.173 = klass;
      D.31489 = *sp;
      mini_emit_stobj (cfg, ins, D.31489, klass.173, 1);
      if (sp != stack_start) goto <D.39988>; else goto <D.39989>;
      <D.39988>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.39990>; else goto <D.39991>;
      <D.39990>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.39992>; else goto <D.39993>;
      <D.39992>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39993>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39991>:
      D.39994 = mini_get_debug_options ();
      D.39995 = D.39994->break_on_unverified;
      if (D.39995 != 0) goto <D.39996>; else goto unverified;
      <D.39996>:
      __asm__ __volatile__("int $03");
      <D.39989>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 446;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      ins->data.op[0].target_block = end_bblock;
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      if (D.30826 != 0B) goto <D.39997>; else goto <D.39998>;
      <D.39997>:
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      D.30826->next = ins;
      bblock.78 = bblock;
      D.30826 = bblock.78->last_ins;
      ins->prev = D.30826;
      bblock.78 = bblock;
      bblock.78->last_ins = ins;
      goto <D.39999>;
      <D.39998>:
      bblock.78 = bblock;
      bblock.78 = bblock;
      bblock.78->last_ins = ins;
      D.30826 = bblock.78->last_ins;
      bblock.78->code = D.30826;
      <D.39999>:
      bblock.78 = bblock;
      link_bblock (cfg, bblock.78, end_bblock);
      start_new_bblock = 1;
      ip = ip + 6;
      goto <D.28124>;
      <D.28159>:
      <D.28160>:
      {
        int token;

        sp.85 = (int) sp;
        stack_start.86 = (int) stack_start;
        D.31274 = sp.85 - stack_start.86;
        if (D.31274 <= 3) goto <D.40000>; else goto <D.40001>;
        <D.40000>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.40002>; else goto <D.40003>;
        <D.40002>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.40004>; else goto <D.40005>;
        <D.40004>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.40005>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.40003>:
        D.40006 = mini_get_debug_options ();
        D.40007 = D.40006->break_on_unverified;
        if (D.40007 != 0) goto <D.40008>; else goto unverified;
        <D.40008>:
        __asm__ __volatile__("int $03");
        <D.40001>:
        sp = sp + 4294967292;
        D.35322 = ip + 6;
        if (D.35322 > end) goto <D.40009>; else goto <D.40010>;
        <D.40009>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.40011>; else goto <D.40012>;
        <D.40011>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.40013>; else goto <D.40014>;
        <D.40013>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.40014>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.40012>:
        D.40015 = mini_get_debug_options ();
        D.40016 = D.40015->break_on_unverified;
        if (D.40016 != 0) goto <D.40017>; else goto unverified;
        <D.40017>:
        __asm__ __volatile__("int $03");
        <D.40010>:
        D.40018 = ip + 2;
        D.40019 = *D.40018;
        token = (int) D.40019;
        token.338 = (unsigned int) token;
        klass.339 = mono_method_get_wrapper_data (method, token.338);
        klass = klass.339;
        D.31519 = ip + 1;
        D.31520 = *D.31519;
        if (D.31520 == 7) goto <D.40022>; else goto <D.40023>;
        <D.40022>:
        D.31489 = *sp;
        klass.173 = klass;
        ins = handle_cisinst (cfg, klass.173, D.31489);
        goto <D.40024>;
        <D.40023>:
        D.31489 = *sp;
        klass.173 = klass;
        ins = handle_ccastclass (cfg, klass.173, D.31489);
        <D.40024>:
        bblock.127 = cfg->cbb;
        bblock = bblock.127;
        sp.340 = sp;
        sp = sp.340 + 4;
        *sp.340 = ins;
        ip = ip + 6;
        goto <D.28124>;
      }
      <D.28162>:
      <D.28163>:
      ip = ip + 2;
      goto <D.28124>;
      <D.28164>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      D.31275 = D.31274 /[ex] 4;
      D.31188 = header->max_stack;
      D.31189 = (int) D.31188;
      if (D.31275 >= D.31189) goto <D.40026>; else goto <D.40027>;
      <D.40026>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.40028>; else goto <D.40029>;
      <D.40028>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.40030>; else goto <D.40031>;
      <D.40030>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40031>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40029>:
      D.40032 = mini_get_debug_options ();
      D.40033 = D.40032->break_on_unverified;
      if (D.40033 != 0) goto <D.40034>; else goto unverified;
      <D.40034>:
      __asm__ __volatile__("int $03");
      <D.40027>:
      D.35322 = ip + 6;
      if (D.35322 > end) goto <D.40035>; else goto <D.40036>;
      <D.40035>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.40037>; else goto <D.40038>;
      <D.40037>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.40039>; else goto <D.40040>;
      <D.40039>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40040>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40038>:
      D.40041 = mini_get_debug_options ();
      D.40042 = D.40041->break_on_unverified;
      if (D.40042 != 0) goto <D.40043>; else goto unverified;
      <D.40043>:
      __asm__ __volatile__("int $03");
      <D.40036>:
      token = MEM[(const guint32 *)ip + 2B];
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.30884 = D.30883 & 64;
      if (D.30884 != 0) goto <D.40045>; else goto <D.40046>;
      <D.40045>:
      iftmp.341 = 738;
      goto <D.40047>;
      <D.40046>:
      iftmp.341 = 362;
      <D.40047>:
      ins->opcode = iftmp.341;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.30884 = D.30883 & 64;
      if (D.30884 != 0) goto <D.40048>; else goto <D.40049>;
      <D.40048>:
      {
        struct MonoInst * group;
        struct MonoInst * got_loc;

        got_loc = mono_get_got_var (cfg);
        D.30489 = cfg->mempool;
        group = mono_mempool_alloc (D.30489, 48);
        group->data.op[1].const_val = 0;
        D.40050 = group->data.op[1].const_val;
        group->data.op[0].const_val = D.40050;
        group->prev = 0B;
        D.40051 = group->prev;
        group->next = D.40051;
        group->opcode = 737;
        group->flags = 0;
        group->type = 0;
        group->dreg = -1;
        group->sreg3 = -1;
        D.40052 = group->sreg3;
        group->sreg2 = D.40052;
        D.40053 = group->sreg2;
        group->sreg1 = D.40053;
        D.30712 = cfg->ip;
        group->cil_code = D.30712;
        D.40054 = mono_method_get_wrapper_data (method, token);
        group->data.op[0].src = D.40054;
        group->data.op[1].src = 11B;
        D.40055 = got_loc->dreg;
        ins->sreg1 = D.40055;
        ins->data.op[1].p = group;
      }
      goto <D.40056>;
      <D.40049>:
      D.40057 = mono_method_get_wrapper_data (method, token);
      ins->data.op[0].p = D.40057;
      ins->data.op[1].src = 11B;
      <D.40056>:
      ins->type = 3;
      D.40058 = alloc_dreg (cfg, 3);
      D.40059 = (int) D.40058;
      ins->dreg = D.40059;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.40060>; else goto <D.40061>;
      <D.40060>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.40062>;
      <D.40061>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.40062>:
      sp.342 = sp;
      sp = sp.342 + 4;
      *sp.342 = ins;
      ip = ip + 6;
      num_calls.343 = num_calls;
      num_calls = num_calls.343 + 1;
      D.40065 = num_calls.343 * 10;
      inline_costs = D.40065 + inline_costs;
      goto <D.28124>;
      <D.28167>:
      bblock.78 = bblock;
      bblock.78->out_of_line = 1;
      ip = ip + 2;
      goto <D.28124>;
      <D.28168>:
      {
        int key;

        sp.85 = (int) sp;
        stack_start.86 = (int) stack_start;
        D.31274 = sp.85 - stack_start.86;
        D.31275 = D.31274 /[ex] 4;
        D.31188 = header->max_stack;
        D.31189 = (int) D.31188;
        if (D.31275 >= D.31189) goto <D.40066>; else goto <D.40067>;
        <D.40066>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.40068>; else goto <D.40069>;
        <D.40068>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.40070>; else goto <D.40071>;
        <D.40070>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.40071>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.40069>:
        D.40072 = mini_get_debug_options ();
        D.40073 = D.40072->break_on_unverified;
        if (D.40073 != 0) goto <D.40074>; else goto unverified;
        <D.40074>:
        __asm__ __volatile__("int $03");
        <D.40067>:
        D.35322 = ip + 6;
        if (D.35322 > end) goto <D.40075>; else goto <D.40076>;
        <D.40075>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.40077>; else goto <D.40078>;
        <D.40077>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.40079>; else goto <D.40080>;
        <D.40079>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.40080>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.40078>:
        D.40081 = mini_get_debug_options ();
        D.40082 = D.40081->break_on_unverified;
        if (D.40082 != 0) goto <D.40083>; else goto unverified;
        <D.40083>:
        __asm__ __volatile__("int $03");
        <D.40076>:
        D.40018 = ip + 2;
        D.40019 = *D.40018;
        key = (int) D.40019;
        D.40084 = key > 8;
        D.40085 = (long int) D.40084;
        D.40086 = __builtin_expect (D.40085, 0);
        if (D.40086 != 0) goto <D.40087>; else goto <D.40088>;
        <D.40087>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11268, "key < TLS_KEY_NUM");
        <D.40088>:
        key.344 = (<unnamed type>) key;
        ins = mono_create_tls_get (cfg, key.344);
        if (ins == 0B) goto <D.40090>; else goto <D.40091>;
        <D.40090>:
        D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.30884 = D.30883 & 64;
        if (D.30884 != 0) goto <D.40092>; else goto <D.40093>;
        <D.40092>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 1) goto <D.40094>; else goto <D.40095>;
        <D.40094>:
        printf ("AOT disabled: %s:%d\n", "method-to-ir.c", 11273);
        <D.40095>:
        cfg->disable_aot = 1;
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        ins->opcode = 795;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        D.40096 = alloc_preg (cfg);
        D.40097 = (int) D.40096;
        ins->dreg = D.40097;
        ins->type = 3;
        goto <D.40098>;
        <D.40093>:
        monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 11278);
        <D.40098>:
        <D.40091>:
        ins->type = 3;
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        if (D.30826 != 0B) goto <D.40099>; else goto <D.40100>;
        <D.40099>:
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        D.30826->next = ins;
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        ins->prev = D.30826;
        bblock.78 = bblock;
        bblock.78->last_ins = ins;
        goto <D.40101>;
        <D.40100>:
        bblock.78 = bblock;
        bblock.78 = bblock;
        bblock.78->last_ins = ins;
        D.30826 = bblock.78->last_ins;
        bblock.78->code = D.30826;
        <D.40101>:
        sp.345 = sp;
        sp = sp.345 + 4;
        *sp.345 = ins;
        ip = ip + 6;
        goto <D.28124>;
      }
      <D.28170>:
      {
        struct MonoCallInst * call;

        D.40103 = cfg->dyn_call_var;
        if (D.40103 == 0B) goto <D.40104>; else goto <D.40105>;
        <D.40104>:
        D.30895 = mono_defaults.int_class;
        D.30896 = &D.30895->byval_arg;
        D.40106 = mono_compile_create_var (cfg, D.30896, 329);
        cfg->dyn_call_var = D.40106;
        D.40103 = cfg->dyn_call_var;
        D.40103 = cfg->dyn_call_var;
        D.40107 = D.40103->flags;
        D.40108 = D.40107 | 4;
        D.40103->flags = D.40108;
        <D.40105>:
        D.30489 = cfg->mempool;
        call = mono_mempool_alloc0 (D.30489, 108);
        call->inst.opcode = 361;
        call->inst.dreg = -1;
        call->inst.sreg3 = -1;
        D.40109 = call->inst.sreg3;
        call->inst.sreg2 = D.40109;
        D.40110 = call->inst.sreg2;
        call->inst.sreg1 = D.40110;
        D.30712 = cfg->ip;
        call->inst.cil_code = D.30712;
        ins = call;
        sp = sp + 4294967288;
        D.31489 = *sp;
        D.31682 = D.31489->dreg;
        ins->sreg1 = D.31682;
        D.32655 = sp + 4;
        D.32656 = *D.32655;
        D.32657 = D.32656->dreg;
        ins->sreg2 = D.32657;
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        if (D.30826 != 0B) goto <D.40111>; else goto <D.40112>;
        <D.40111>:
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        D.30826->next = ins;
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        ins->prev = D.30826;
        bblock.78 = bblock;
        bblock.78->last_ins = ins;
        goto <D.40113>;
        <D.40112>:
        bblock.78 = bblock;
        bblock.78 = bblock;
        bblock.78->last_ins = ins;
        D.30826 = bblock.78->last_ins;
        bblock.78->code = D.30826;
        <D.40113>:
        D.40114 = cfg->param_area;
        cfg->param_area = D.40114;
        ip = ip + 2;
        num_calls.346 = num_calls;
        num_calls = num_calls.346 + 1;
        D.40116 = num_calls.346 * 10;
        inline_costs = D.40116 + inline_costs;
        goto <D.28124>;
      }
      <D.28172>:
      D.31934 = ip + 5;
      if (D.31934 > end) goto <D.40117>; else goto <D.40118>;
      <D.40117>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.40119>; else goto <D.40120>;
      <D.40119>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.40121>; else goto <D.40122>;
      <D.40121>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40122>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40120>:
      D.40123 = mini_get_debug_options ();
      D.40124 = D.40123->break_on_unverified;
      if (D.40124 != 0) goto <D.40125>; else goto unverified;
      <D.40125>:
      __asm__ __volatile__("int $03");
      <D.40118>:
      D.31953 = ip + 1;
      D.31954 = *D.31953;
      D.31955 = (int) D.31954;
      emit_memory_barrier (cfg, D.31955);
      ip = ip + 5;
      goto <D.28124>;
      <D.28173>:
      {
        struct MonoInst * args[16];
        struct MonoInst * ad_ins;
        struct MonoInst * lmf_ins;
        struct MonoBasicBlock * next_bb;

        try
          {
            next_bb = 0B;
            D.30895 = mono_defaults.int_class;
            D.30896 = &D.30895->byval_arg;
            D.40126 = mono_compile_create_var (cfg, D.30896, 329);
            cfg->orig_domain_var = D.40126;
            D.30489 = cfg->mempool;
            ins = mono_mempool_alloc (D.30489, 48);
            ins->data.op[1].const_val = 0;
            D.30708 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.30708;
            ins->prev = 0B;
            D.30709 = ins->prev;
            ins->next = D.30709;
            ins->opcode = 362;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.30710 = ins->sreg3;
            ins->sreg2 = D.30710;
            D.30711 = ins->sreg2;
            ins->sreg1 = D.30711;
            D.30712 = cfg->ip;
            ins->cil_code = D.30712;
            ins->data.op[0].p = 0B;
            ins->type = 3;
            D.40127 = alloc_dreg (cfg, 3);
            D.40128 = (int) D.40127;
            ins->dreg = D.40128;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.40129>; else goto <D.40130>;
            <D.40129>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = ins;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            ins->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = ins;
            goto <D.40131>;
            <D.40130>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = ins;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.40131>:
            {
              struct MonoInst * inst;

              D.30489 = cfg->mempool;
              inst = mono_mempool_alloc (D.30489, 48);
              inst->data.op[1].const_val = 0;
              D.40132 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.40132;
              inst->prev = 0B;
              D.40133 = inst->prev;
              inst->next = D.40133;
              inst->opcode = 428;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.40134 = inst->sreg3;
              inst->sreg2 = D.40134;
              D.40135 = inst->sreg2;
              inst->sreg1 = D.40135;
              D.30712 = cfg->ip;
              inst->cil_code = D.30712;
              D.40136 = cfg->orig_domain_var;
              D.40137 = D.40136->dreg;
              inst->dreg = D.40137;
              D.30903 = ins->dreg;
              inst->sreg1 = D.30903;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.40138>; else goto <D.40139>;
              <D.40138>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = inst;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              inst->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              goto <D.40140>;
              <D.40139>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.40140>:
            }
            ad_ins = mono_get_domain_intrinsic (cfg);
            lmf_ins = mono_get_lmf_intrinsic (cfg);
            D.40141 = mono_x86_have_tls_get ();
            if (D.40141 != 0) goto <D.40142>; else goto <D.40143>;
            <D.40142>:
            D.40144 = ad_ins != 0B;
            D.40145 = lmf_ins != 0B;
            D.40146 = D.40144 & D.40145;
            if (D.40146 != 0) goto <D.40147>; else goto <D.40148>;
            <D.40147>:
            D.30489 = cfg->mempool;
            next_bb = mono_mempool_alloc0 (D.30489, 172);
            D.30597 = cfg->num_bblocks;
            D.40149 = D.30597;
            D.40150 = D.40149 + 1;
            cfg->num_bblocks = D.40150;
            D.40151 = (int) D.40149;
            next_bb->block_num = D.40151;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.40152>; else goto <D.40153>;
            <D.40152>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = ad_ins;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            ad_ins->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = ad_ins;
            goto <D.40154>;
            <D.40153>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = ad_ins;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.40154>:
            {
              struct MonoInst * inst;

              D.30489 = cfg->mempool;
              inst = mono_mempool_alloc (D.30489, 48);
              inst->data.op[1].const_val = 0;
              D.40155 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.40155;
              inst->prev = 0B;
              D.40156 = inst->prev;
              inst->next = D.40156;
              inst->opcode = 323;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.40157 = inst->sreg3;
              inst->sreg2 = D.40157;
              D.40158 = inst->sreg2;
              inst->sreg1 = D.40158;
              D.30712 = cfg->ip;
              inst->cil_code = D.30712;
              inst->dreg = -1;
              D.40159 = ad_ins->dreg;
              inst->sreg1 = D.40159;
              inst->data.op[1].const_val = 0;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.40160>; else goto <D.40161>;
              <D.40160>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = inst;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              inst->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              goto <D.40162>;
              <D.40161>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.40162>:
            }
            {
              struct MonoInst * ins;
              struct MonoBasicBlock * falsebb;

              D.30489 = cfg->mempool;
              ins = mono_mempool_alloc (D.30489, 48);
              ins->data.op[1].const_val = 0;
              D.40163 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.40163;
              ins->prev = 0B;
              D.40164 = ins->prev;
              ins->next = D.40164;
              ins->opcode = 657;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.40165 = ins->sreg3;
              ins->sreg2 = D.40165;
              D.40166 = ins->sreg2;
              ins->sreg1 = D.40166;
              D.30712 = cfg->ip;
              ins->cil_code = D.30712;
              if (0 != 0) goto <D.40167>; else goto <D.40168>;
              <D.40167>:
              D.30489 = cfg->mempool;
              falsebb = mono_mempool_alloc0 (D.30489, 172);
              D.30597 = cfg->num_bblocks;
              D.40169 = D.30597;
              D.40170 = D.40169 + 1;
              cfg->num_bblocks = D.40170;
              D.40171 = (int) D.40169;
              falsebb->block_num = D.40171;
              ins->data.op[0].target_block = next_bb;
              bblock.127 = cfg->cbb;
              mono_link_bblock (cfg, bblock.127, next_bb);
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.40172>; else goto <D.40173>;
              <D.40172>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = ins;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              ins->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              goto <D.40174>;
              <D.40173>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.40174>:
              D.40175 = falsebb->cil_code;
              if (D.40175 != 0B) goto <D.40176>; else goto <D.40177>;
              <D.40176>:
              D.30620 = cfg->cil_offset_to_bb;
              D.40175 = falsebb->cil_code;
              D.40178 = (int) D.40175;
              D.30624 = cfg->cil_start;
              D.30625 = (int) D.30624;
              D.40179 = D.40178 - D.30625;
              D.40180 = (unsigned int) D.40179;
              D.40181 = D.40180 * 4;
              D.40182 = D.30620 + D.40181;
              *D.40182 = falsebb;
              <D.40177>:
              D.30656 = cfg->real_offset;
              falsebb->real_offset = D.30656;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.40186>; else goto <D.40183>;
              <D.40186>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.40187 = D.30741->opcode;
              D.40188 = D.40187 + 64981;
              D.40189 = D.40188 <= 9;
              D.40190 = D.40187 + 64874;
              D.40191 = D.40190 <= 9;
              D.40192 = D.40189 | D.40191;
              if (D.40192 != 0) goto <D.40184>; else goto <D.40193>;
              <D.40193>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.34746 = D.30741->opcode;
              D.34747 = D.34746 + 64884;
              if (D.34747 <= 9) goto <D.40184>; else goto <D.40183>;
              <D.40184>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.34748 = D.30741->data.op[1].many_blocks;
              D.34749 = D.34748 + 4;
              D.34750 = *D.34749;
              if (D.34750 == 0B) goto <D.40194>; else goto <D.40183>;
              <D.40194>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.34748 = D.30741->data.op[1].many_blocks;
              D.34749 = D.34748 + 4;
              *D.34749 = falsebb;
              bblock.127 = cfg->cbb;
              mono_link_bblock (cfg, bblock.127, falsebb);
              goto <D.40185>;
              <D.40183>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 == 0B) goto <D.40195>; else goto <D.40197>;
              <D.40197>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.40198 = D.30741->opcode;
              D.40199 = D.40198 != 446;
              D.40200 = D.40198 != 763;
              D.40201 = D.40199 & D.40200;
              if (D.40201 != 0) goto <D.40202>; else goto <D.40196>;
              <D.40202>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.40203 = D.30741->opcode;
              D.40204 = D.40203 + 64981;
              D.40205 = D.40204 > 9;
              D.40206 = D.40203 + 64874;
              D.40207 = D.40206 > 9;
              D.40208 = D.40205 & D.40207;
              if (D.40208 != 0) goto <D.40209>; else goto <D.40196>;
              <D.40209>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.34746 = D.30741->opcode;
              D.34747 = D.34746 + 64884;
              if (D.34747 > 9) goto <D.40195>; else goto <D.40196>;
              <D.40195>:
              bblock.127 = cfg->cbb;
              mono_link_bblock (cfg, bblock.127, falsebb);
              <D.40196>:
              <D.40185>:
              bblock.127 = cfg->cbb;
              bblock.127->next_bb = falsebb;
              cfg->cbb = falsebb;
              goto <D.40210>;
              <D.40168>:
              D.30489 = cfg->mempool;
              D.40211 = mono_mempool_alloc (D.30489, 8);
              ins->data.op[1].many_blocks = D.40211;
              D.40212 = ins->data.op[1].many_blocks;
              *D.40212 = next_bb;
              D.40212 = ins->data.op[1].many_blocks;
              D.40213 = D.40212 + 4;
              *D.40213 = 0B;
              bblock.127 = cfg->cbb;
              mono_link_bblock (cfg, bblock.127, next_bb);
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.40214>; else goto <D.40215>;
              <D.40214>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = ins;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              ins->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              goto <D.40216>;
              <D.40215>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.40216>:
              D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.34774 = D.30883 & 8;
              if (D.34774 == 0) goto <D.40217>; else goto <D.40218>;
              <D.40217>:
              D.30489 = cfg->mempool;
              falsebb = mono_mempool_alloc0 (D.30489, 172);
              D.30597 = cfg->num_bblocks;
              D.40219 = D.30597;
              D.40220 = D.40219 + 1;
              cfg->num_bblocks = D.40220;
              D.40221 = (int) D.40219;
              falsebb->block_num = D.40221;
              D.40212 = ins->data.op[1].many_blocks;
              D.40213 = D.40212 + 4;
              *D.40213 = falsebb;
              bblock.127 = cfg->cbb;
              mono_link_bblock (cfg, bblock.127, falsebb);
              D.40175 = falsebb->cil_code;
              if (D.40175 != 0B) goto <D.40222>; else goto <D.40223>;
              <D.40222>:
              D.30620 = cfg->cil_offset_to_bb;
              D.40175 = falsebb->cil_code;
              D.40178 = (int) D.40175;
              D.30624 = cfg->cil_start;
              D.30625 = (int) D.30624;
              D.40179 = D.40178 - D.30625;
              D.40180 = (unsigned int) D.40179;
              D.40181 = D.40180 * 4;
              D.40182 = D.30620 + D.40181;
              *D.40182 = falsebb;
              <D.40223>:
              D.30656 = cfg->real_offset;
              falsebb->real_offset = D.30656;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.40227>; else goto <D.40224>;
              <D.40227>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.40228 = D.30741->opcode;
              D.40229 = D.40228 + 64981;
              D.40230 = D.40229 <= 9;
              D.40231 = D.40228 + 64874;
              D.40232 = D.40231 <= 9;
              D.40233 = D.40230 | D.40232;
              if (D.40233 != 0) goto <D.40225>; else goto <D.40234>;
              <D.40234>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.34746 = D.30741->opcode;
              D.34747 = D.34746 + 64884;
              if (D.34747 <= 9) goto <D.40225>; else goto <D.40224>;
              <D.40225>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.34748 = D.30741->data.op[1].many_blocks;
              D.34749 = D.34748 + 4;
              D.34750 = *D.34749;
              if (D.34750 == 0B) goto <D.40235>; else goto <D.40224>;
              <D.40235>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.34748 = D.30741->data.op[1].many_blocks;
              D.34749 = D.34748 + 4;
              *D.34749 = falsebb;
              bblock.127 = cfg->cbb;
              mono_link_bblock (cfg, bblock.127, falsebb);
              goto <D.40226>;
              <D.40224>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 == 0B) goto <D.40236>; else goto <D.40238>;
              <D.40238>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.40239 = D.30741->opcode;
              D.40240 = D.40239 != 446;
              D.40241 = D.40239 != 763;
              D.40242 = D.40240 & D.40241;
              if (D.40242 != 0) goto <D.40243>; else goto <D.40237>;
              <D.40243>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.40244 = D.30741->opcode;
              D.40245 = D.40244 + 64981;
              D.40246 = D.40245 > 9;
              D.40247 = D.40244 + 64874;
              D.40248 = D.40247 > 9;
              D.40249 = D.40246 & D.40248;
              if (D.40249 != 0) goto <D.40250>; else goto <D.40237>;
              <D.40250>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.34746 = D.30741->opcode;
              D.34747 = D.34746 + 64884;
              if (D.34747 > 9) goto <D.40236>; else goto <D.40237>;
              <D.40236>:
              bblock.127 = cfg->cbb;
              mono_link_bblock (cfg, bblock.127, falsebb);
              <D.40237>:
              <D.40226>:
              bblock.127 = cfg->cbb;
              bblock.127->next_bb = falsebb;
              cfg->cbb = falsebb;
              goto <D.40251>;
              <D.40218>:
              bblock.127 = cfg->cbb;
              bblock.127->extended = 1;
              <D.40251>:
              <D.40210>:
            }
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.40252>; else goto <D.40253>;
            <D.40252>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = lmf_ins;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            lmf_ins->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = lmf_ins;
            goto <D.40254>;
            <D.40253>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = lmf_ins;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.40254>:
            {
              struct MonoInst * inst;

              D.30489 = cfg->mempool;
              inst = mono_mempool_alloc (D.30489, 48);
              inst->data.op[1].const_val = 0;
              D.40255 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.40255;
              inst->prev = 0B;
              D.40256 = inst->prev;
              inst->next = D.40256;
              inst->opcode = 323;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.40257 = inst->sreg3;
              inst->sreg2 = D.40257;
              D.40258 = inst->sreg2;
              inst->sreg1 = D.40258;
              D.30712 = cfg->ip;
              inst->cil_code = D.30712;
              inst->dreg = -1;
              D.40259 = lmf_ins->dreg;
              inst->sreg1 = D.40259;
              inst->data.op[1].const_val = 0;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.40260>; else goto <D.40261>;
              <D.40260>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = inst;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              inst->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              goto <D.40262>;
              <D.40261>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.40262>:
            }
            {
              struct MonoInst * ins;
              struct MonoBasicBlock * falsebb;

              D.30489 = cfg->mempool;
              ins = mono_mempool_alloc (D.30489, 48);
              ins->data.op[1].const_val = 0;
              D.40263 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.40263;
              ins->prev = 0B;
              D.40264 = ins->prev;
              ins->next = D.40264;
              ins->opcode = 657;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.40265 = ins->sreg3;
              ins->sreg2 = D.40265;
              D.40266 = ins->sreg2;
              ins->sreg1 = D.40266;
              D.30712 = cfg->ip;
              ins->cil_code = D.30712;
              if (0 != 0) goto <D.40267>; else goto <D.40268>;
              <D.40267>:
              D.30489 = cfg->mempool;
              falsebb = mono_mempool_alloc0 (D.30489, 172);
              D.30597 = cfg->num_bblocks;
              D.40269 = D.30597;
              D.40270 = D.40269 + 1;
              cfg->num_bblocks = D.40270;
              D.40271 = (int) D.40269;
              falsebb->block_num = D.40271;
              ins->data.op[0].target_block = next_bb;
              bblock.127 = cfg->cbb;
              mono_link_bblock (cfg, bblock.127, next_bb);
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.40272>; else goto <D.40273>;
              <D.40272>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = ins;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              ins->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              goto <D.40274>;
              <D.40273>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.40274>:
              D.40275 = falsebb->cil_code;
              if (D.40275 != 0B) goto <D.40276>; else goto <D.40277>;
              <D.40276>:
              D.30620 = cfg->cil_offset_to_bb;
              D.40275 = falsebb->cil_code;
              D.40278 = (int) D.40275;
              D.30624 = cfg->cil_start;
              D.30625 = (int) D.30624;
              D.40279 = D.40278 - D.30625;
              D.40280 = (unsigned int) D.40279;
              D.40281 = D.40280 * 4;
              D.40282 = D.30620 + D.40281;
              *D.40282 = falsebb;
              <D.40277>:
              D.30656 = cfg->real_offset;
              falsebb->real_offset = D.30656;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.40286>; else goto <D.40283>;
              <D.40286>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.40287 = D.30741->opcode;
              D.40288 = D.40287 + 64981;
              D.40289 = D.40288 <= 9;
              D.40290 = D.40287 + 64874;
              D.40291 = D.40290 <= 9;
              D.40292 = D.40289 | D.40291;
              if (D.40292 != 0) goto <D.40284>; else goto <D.40293>;
              <D.40293>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.34746 = D.30741->opcode;
              D.34747 = D.34746 + 64884;
              if (D.34747 <= 9) goto <D.40284>; else goto <D.40283>;
              <D.40284>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.34748 = D.30741->data.op[1].many_blocks;
              D.34749 = D.34748 + 4;
              D.34750 = *D.34749;
              if (D.34750 == 0B) goto <D.40294>; else goto <D.40283>;
              <D.40294>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.34748 = D.30741->data.op[1].many_blocks;
              D.34749 = D.34748 + 4;
              *D.34749 = falsebb;
              bblock.127 = cfg->cbb;
              mono_link_bblock (cfg, bblock.127, falsebb);
              goto <D.40285>;
              <D.40283>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 == 0B) goto <D.40295>; else goto <D.40297>;
              <D.40297>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.40298 = D.30741->opcode;
              D.40299 = D.40298 != 446;
              D.40300 = D.40298 != 763;
              D.40301 = D.40299 & D.40300;
              if (D.40301 != 0) goto <D.40302>; else goto <D.40296>;
              <D.40302>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.40303 = D.30741->opcode;
              D.40304 = D.40303 + 64981;
              D.40305 = D.40304 > 9;
              D.40306 = D.40303 + 64874;
              D.40307 = D.40306 > 9;
              D.40308 = D.40305 & D.40307;
              if (D.40308 != 0) goto <D.40309>; else goto <D.40296>;
              <D.40309>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.34746 = D.30741->opcode;
              D.34747 = D.34746 + 64884;
              if (D.34747 > 9) goto <D.40295>; else goto <D.40296>;
              <D.40295>:
              bblock.127 = cfg->cbb;
              mono_link_bblock (cfg, bblock.127, falsebb);
              <D.40296>:
              <D.40285>:
              bblock.127 = cfg->cbb;
              bblock.127->next_bb = falsebb;
              cfg->cbb = falsebb;
              goto <D.40310>;
              <D.40268>:
              D.30489 = cfg->mempool;
              D.40311 = mono_mempool_alloc (D.30489, 8);
              ins->data.op[1].many_blocks = D.40311;
              D.40312 = ins->data.op[1].many_blocks;
              *D.40312 = next_bb;
              D.40312 = ins->data.op[1].many_blocks;
              D.40313 = D.40312 + 4;
              *D.40313 = 0B;
              bblock.127 = cfg->cbb;
              mono_link_bblock (cfg, bblock.127, next_bb);
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.40314>; else goto <D.40315>;
              <D.40314>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = ins;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              ins->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              goto <D.40316>;
              <D.40315>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = ins;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.40316>:
              D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.34774 = D.30883 & 8;
              if (D.34774 == 0) goto <D.40317>; else goto <D.40318>;
              <D.40317>:
              D.30489 = cfg->mempool;
              falsebb = mono_mempool_alloc0 (D.30489, 172);
              D.30597 = cfg->num_bblocks;
              D.40319 = D.30597;
              D.40320 = D.40319 + 1;
              cfg->num_bblocks = D.40320;
              D.40321 = (int) D.40319;
              falsebb->block_num = D.40321;
              D.40312 = ins->data.op[1].many_blocks;
              D.40313 = D.40312 + 4;
              *D.40313 = falsebb;
              bblock.127 = cfg->cbb;
              mono_link_bblock (cfg, bblock.127, falsebb);
              D.40275 = falsebb->cil_code;
              if (D.40275 != 0B) goto <D.40322>; else goto <D.40323>;
              <D.40322>:
              D.30620 = cfg->cil_offset_to_bb;
              D.40275 = falsebb->cil_code;
              D.40278 = (int) D.40275;
              D.30624 = cfg->cil_start;
              D.30625 = (int) D.30624;
              D.40279 = D.40278 - D.30625;
              D.40280 = (unsigned int) D.40279;
              D.40281 = D.40280 * 4;
              D.40282 = D.30620 + D.40281;
              *D.40282 = falsebb;
              <D.40323>:
              D.30656 = cfg->real_offset;
              falsebb->real_offset = D.30656;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.40327>; else goto <D.40324>;
              <D.40327>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.40328 = D.30741->opcode;
              D.40329 = D.40328 + 64981;
              D.40330 = D.40329 <= 9;
              D.40331 = D.40328 + 64874;
              D.40332 = D.40331 <= 9;
              D.40333 = D.40330 | D.40332;
              if (D.40333 != 0) goto <D.40325>; else goto <D.40334>;
              <D.40334>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.34746 = D.30741->opcode;
              D.34747 = D.34746 + 64884;
              if (D.34747 <= 9) goto <D.40325>; else goto <D.40324>;
              <D.40325>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.34748 = D.30741->data.op[1].many_blocks;
              D.34749 = D.34748 + 4;
              D.34750 = *D.34749;
              if (D.34750 == 0B) goto <D.40335>; else goto <D.40324>;
              <D.40335>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.34748 = D.30741->data.op[1].many_blocks;
              D.34749 = D.34748 + 4;
              *D.34749 = falsebb;
              bblock.127 = cfg->cbb;
              mono_link_bblock (cfg, bblock.127, falsebb);
              goto <D.40326>;
              <D.40324>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 == 0B) goto <D.40336>; else goto <D.40338>;
              <D.40338>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.40339 = D.30741->opcode;
              D.40340 = D.40339 != 446;
              D.40341 = D.40339 != 763;
              D.40342 = D.40340 & D.40341;
              if (D.40342 != 0) goto <D.40343>; else goto <D.40337>;
              <D.40343>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.40344 = D.30741->opcode;
              D.40345 = D.40344 + 64981;
              D.40346 = D.40345 > 9;
              D.40347 = D.40344 + 64874;
              D.40348 = D.40347 > 9;
              D.40349 = D.40346 & D.40348;
              if (D.40349 != 0) goto <D.40350>; else goto <D.40337>;
              <D.40350>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.34746 = D.30741->opcode;
              D.34747 = D.34746 + 64884;
              if (D.34747 > 9) goto <D.40336>; else goto <D.40337>;
              <D.40336>:
              bblock.127 = cfg->cbb;
              mono_link_bblock (cfg, bblock.127, falsebb);
              <D.40337>:
              <D.40326>:
              bblock.127 = cfg->cbb;
              bblock.127->next_bb = falsebb;
              cfg->cbb = falsebb;
              goto <D.40351>;
              <D.40318>:
              bblock.127 = cfg->cbb;
              bblock.127->extended = 1;
              <D.40351>:
              <D.40310>:
            }
            <D.40148>:
            <D.40143>:
            D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.30884 = D.30883 & 64;
            if (D.30884 != 0) goto <D.40352>; else goto <D.40353>;
            <D.40352>:
            D.30489 = cfg->mempool;
            D.40354 = mono_mempool_alloc (D.30489, 48);
            args[0] = D.40354;
            D.40355 = args[0];
            D.40355 = args[0];
            D.40355->data.op[1].const_val = 0;
            D.40356 = D.40355->data.op[1].const_val;
            D.40355->data.op[0].const_val = D.40356;
            D.40355 = args[0];
            D.40355 = args[0];
            D.40355->prev = 0B;
            D.40357 = D.40355->prev;
            D.40355->next = D.40357;
            D.40355 = args[0];
            D.40355->opcode = 362;
            D.40355 = args[0];
            D.40355->flags = 0;
            D.40355 = args[0];
            D.40355->type = 0;
            D.40355 = args[0];
            D.40355->dreg = -1;
            D.40355 = args[0];
            D.40355 = args[0];
            D.40355 = args[0];
            D.40355->sreg3 = -1;
            D.40358 = D.40355->sreg3;
            D.40355->sreg2 = D.40358;
            D.40359 = D.40355->sreg2;
            D.40355->sreg1 = D.40359;
            D.40355 = args[0];
            D.30712 = cfg->ip;
            D.40355->cil_code = D.30712;
            D.40355 = args[0];
            D.40355->data.op[0].p = 0B;
            D.40355 = args[0];
            D.40355->type = 3;
            D.40355 = args[0];
            D.40360 = alloc_dreg (cfg, 3);
            D.40361 = (int) D.40360;
            D.40355->dreg = D.40361;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.40362>; else goto <D.40363>;
            <D.40362>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.40355 = args[0];
            D.30741->next = D.40355;
            D.40355 = args[0];
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.40355->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.40355 = args[0];
            bblock.127->last_ins = D.40355;
            goto <D.40364>;
            <D.40363>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.40355 = args[0];
            bblock.127->last_ins = D.40355;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.40364>:
            goto <D.40365>;
            <D.40353>:
            D.30489 = cfg->mempool;
            D.40366 = mono_mempool_alloc (D.30489, 48);
            args[0] = D.40366;
            D.40355 = args[0];
            D.40355 = args[0];
            D.40355->data.op[1].const_val = 0;
            D.40356 = D.40355->data.op[1].const_val;
            D.40355->data.op[0].const_val = D.40356;
            D.40355 = args[0];
            D.40355 = args[0];
            D.40355->prev = 0B;
            D.40357 = D.40355->prev;
            D.40355->next = D.40357;
            D.40355 = args[0];
            D.40355->opcode = 362;
            D.40355 = args[0];
            D.40355->flags = 0;
            D.40355 = args[0];
            D.40355->type = 0;
            D.40355 = args[0];
            D.40355->dreg = -1;
            D.40355 = args[0];
            D.40355 = args[0];
            D.40355 = args[0];
            D.40355->sreg3 = -1;
            D.40358 = D.40355->sreg3;
            D.40355->sreg2 = D.40358;
            D.40359 = D.40355->sreg2;
            D.40355->sreg1 = D.40359;
            D.40355 = args[0];
            D.30712 = cfg->ip;
            D.40355->cil_code = D.30712;
            D.40355 = args[0];
            D.30513 = cfg->domain;
            D.40355->data.op[0].p = D.30513;
            D.40355 = args[0];
            D.40355->type = 3;
            D.40355 = args[0];
            D.40367 = alloc_dreg (cfg, 3);
            D.40368 = (int) D.40367;
            D.40355->dreg = D.40368;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.40369>; else goto <D.40370>;
            <D.40369>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.40355 = args[0];
            D.30741->next = D.40355;
            D.40355 = args[0];
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.40355->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.40355 = args[0];
            bblock.127->last_ins = D.40355;
            goto <D.40371>;
            <D.40370>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.40355 = args[0];
            bblock.127->last_ins = D.40355;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.40371>:
            <D.40365>:
            ins = mono_emit_jit_icall (cfg, mono_jit_thread_attach, &args);
            {
              struct MonoInst * inst;

              D.30489 = cfg->mempool;
              inst = mono_mempool_alloc (D.30489, 48);
              inst->data.op[1].const_val = 0;
              D.40372 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.40372;
              inst->prev = 0B;
              D.40373 = inst->prev;
              inst->next = D.40373;
              inst->opcode = 428;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.40374 = inst->sreg3;
              inst->sreg2 = D.40374;
              D.40375 = inst->sreg2;
              inst->sreg1 = D.40375;
              D.30712 = cfg->ip;
              inst->cil_code = D.30712;
              D.40136 = cfg->orig_domain_var;
              D.40137 = D.40136->dreg;
              inst->dreg = D.40137;
              D.30903 = ins->dreg;
              inst->sreg1 = D.30903;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              if (D.30741 != 0B) goto <D.40376>; else goto <D.40377>;
              <D.40376>:
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              D.30741->next = inst;
              bblock.127 = cfg->cbb;
              D.30741 = bblock.127->last_ins;
              inst->prev = D.30741;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              goto <D.40378>;
              <D.40377>:
              bblock.127 = cfg->cbb;
              bblock.127 = cfg->cbb;
              bblock.127->last_ins = inst;
              D.30741 = bblock.127->last_ins;
              bblock.127->code = D.30741;
              <D.40378>:
            }
            if (next_bb != 0B) goto <D.40379>; else goto <D.40380>;
            <D.40379>:
            D.40381 = next_bb->cil_code;
            if (D.40381 != 0B) goto <D.40382>; else goto <D.40383>;
            <D.40382>:
            D.30620 = cfg->cil_offset_to_bb;
            D.40381 = next_bb->cil_code;
            D.40384 = (int) D.40381;
            D.30624 = cfg->cil_start;
            D.30625 = (int) D.30624;
            D.40385 = D.40384 - D.30625;
            D.40386 = (unsigned int) D.40385;
            D.40387 = D.40386 * 4;
            D.40388 = D.30620 + D.40387;
            *D.40388 = next_bb;
            <D.40383>:
            D.30656 = cfg->real_offset;
            next_bb->real_offset = D.30656;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.40392>; else goto <D.40389>;
            <D.40392>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.40393 = D.30741->opcode;
            D.40394 = D.40393 + 64981;
            D.40395 = D.40394 <= 9;
            D.40396 = D.40393 + 64874;
            D.40397 = D.40396 <= 9;
            D.40398 = D.40395 | D.40397;
            if (D.40398 != 0) goto <D.40390>; else goto <D.40399>;
            <D.40399>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.34746 = D.30741->opcode;
            D.34747 = D.34746 + 64884;
            if (D.34747 <= 9) goto <D.40390>; else goto <D.40389>;
            <D.40390>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.34748 = D.30741->data.op[1].many_blocks;
            D.34749 = D.34748 + 4;
            D.34750 = *D.34749;
            if (D.34750 == 0B) goto <D.40400>; else goto <D.40389>;
            <D.40400>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.34748 = D.30741->data.op[1].many_blocks;
            D.34749 = D.34748 + 4;
            *D.34749 = next_bb;
            bblock.127 = cfg->cbb;
            mono_link_bblock (cfg, bblock.127, next_bb);
            goto <D.40391>;
            <D.40389>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 == 0B) goto <D.40401>; else goto <D.40403>;
            <D.40403>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.40404 = D.30741->opcode;
            D.40405 = D.40404 != 446;
            D.40406 = D.40404 != 763;
            D.40407 = D.40405 & D.40406;
            if (D.40407 != 0) goto <D.40408>; else goto <D.40402>;
            <D.40408>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.40409 = D.30741->opcode;
            D.40410 = D.40409 + 64981;
            D.40411 = D.40410 > 9;
            D.40412 = D.40409 + 64874;
            D.40413 = D.40412 > 9;
            D.40414 = D.40411 & D.40413;
            if (D.40414 != 0) goto <D.40415>; else goto <D.40402>;
            <D.40415>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.34746 = D.30741->opcode;
            D.34747 = D.34746 + 64884;
            if (D.34747 > 9) goto <D.40401>; else goto <D.40402>;
            <D.40401>:
            bblock.127 = cfg->cbb;
            mono_link_bblock (cfg, bblock.127, next_bb);
            <D.40402>:
            <D.40391>:
            bblock.127 = cfg->cbb;
            bblock.127->next_bb = next_bb;
            cfg->cbb = next_bb;
            bblock.127 = cfg->cbb;
            bblock = bblock.127;
            <D.40380>:
            ip = ip + 2;
            goto <D.28124>;
          }
        finally
          {
            args = {CLOBBER};
          }
      }
      <D.28186>:
      {
        struct MonoInst * args[16];

        try
          {
            D.40416 = alloc_ireg (cfg);
            dreg = (int) D.40416;
            D.30489 = cfg->mempool;
            D.40417 = mono_mempool_alloc (D.30489, 48);
            args[0] = D.40417;
            D.40418 = args[0];
            D.40418 = args[0];
            D.40418->data.op[1].const_val = 0;
            D.40419 = D.40418->data.op[1].const_val;
            D.40418->data.op[0].const_val = D.40419;
            D.40418 = args[0];
            D.40418 = args[0];
            D.40418->prev = 0B;
            D.40420 = D.40418->prev;
            D.40418->next = D.40420;
            D.40418 = args[0];
            D.40418->opcode = 428;
            D.40418 = args[0];
            D.40418->flags = 0;
            D.40418 = args[0];
            D.40418->type = 0;
            D.40418 = args[0];
            D.40418->dreg = -1;
            D.40418 = args[0];
            D.40418 = args[0];
            D.40418 = args[0];
            D.40418->sreg3 = -1;
            D.40421 = D.40418->sreg3;
            D.40418->sreg2 = D.40421;
            D.40422 = D.40418->sreg2;
            D.40418->sreg1 = D.40422;
            D.40418 = args[0];
            D.30712 = cfg->ip;
            D.40418->cil_code = D.30712;
            D.40418 = args[0];
            D.40418->dreg = dreg;
            D.40418 = args[0];
            D.40136 = cfg->orig_domain_var;
            D.40137 = D.40136->dreg;
            D.40418->sreg1 = D.40137;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.40423>; else goto <D.40424>;
            <D.40423>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.40418 = args[0];
            D.30741->next = D.40418;
            D.40418 = args[0];
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.40418->prev = D.30741;
            bblock.127 = cfg->cbb;
            D.40418 = args[0];
            bblock.127->last_ins = D.40418;
            goto <D.40425>;
            <D.40424>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            D.40418 = args[0];
            bblock.127->last_ins = D.40418;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.40425>:
            mono_emit_jit_icall (cfg, mono_jit_set_domain, &args);
            ip = ip + 2;
            goto <D.28124>;
          }
        finally
          {
            args = {CLOBBER};
          }
      }
      <D.28188>:
      D.31519 = ip + 1;
      D.31520 = *D.31519;
      D.31850 = (int) D.31520;
      monoeg_g_log (0B, 4, "opcode 0x%02x 0x%02x not handled", 240, D.31850);
      <D.28189>:
      goto <D.28189>;
      <D.28124>:
      goto <D.27380>;
      <D.28190>:
      D.31500 = ip + 2;
      if (D.31500 > end) goto <D.40426>; else goto <D.40427>;
      <D.40426>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.40428>; else goto <D.40429>;
      <D.40428>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.40430>; else goto <D.40431>;
      <D.40430>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40431>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40429>:
      D.40432 = mini_get_debug_options ();
      D.40433 = D.40432->break_on_unverified;
      if (D.40433 != 0) goto <D.40434>; else goto unverified;
      <D.40434>:
      __asm__ __volatile__("int $03");
      <D.40427>:
      D.31519 = ip + 1;
      D.31520 = *D.31519;
      D.31850 = (int) D.31520;
      switch (D.31850) <default: <D.28271>, case 0: <D.28191>, case 1: <D.28197>, case 2: <D.28198>, case 3: <D.28199>, case 4: <D.28200>, case 5: <D.28201>, case 6: <D.28203>, case 7: <D.28214>, case 8: <D.28266>, case 9: <D.28216>, case 10: <D.28217>, case 11: <D.28220>, case 12: <D.28221>, case 13: <D.28222>, case 14: <D.28226>, case 15: <D.28227>, case 16: <D.28267>, case 17: <D.28228>, case 18: <D.28236>, case 19: <D.28237>, case 20: <D.28238>, case 21: <D.28239>, case 22: <D.28241>, case 23: <D.28242>, case 24: <D.28243>, case 25: <D.28247>, case 26: <D.28248>, case 27: <D.28269>, case 28: <D.28255>, case 29: <D.28260>, case 30: <D.28265>, case 34: <D.28268>, case 36: <D.28270>>
      <D.28191>:
      {
        struct MonoInst * addr;
        struct MonoInst * vtvar;

        sp.85 = (int) sp;
        stack_start.86 = (int) stack_start;
        D.31274 = sp.85 - stack_start.86;
        D.31275 = D.31274 /[ex] 4;
        D.31188 = header->max_stack;
        D.31189 = (int) D.31188;
        if (D.31275 >= D.31189) goto <D.40435>; else goto <D.40436>;
        <D.40435>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.40437>; else goto <D.40438>;
        <D.40437>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.40439>; else goto <D.40440>;
        <D.40439>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.40440>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.40438>:
        D.40441 = mini_get_debug_options ();
        D.40442 = D.40441->break_on_unverified;
        if (D.40442 != 0) goto <D.40443>; else goto unverified;
        <D.40443>:
        __asm__ __volatile__("int $03");
        <D.40436>:
        D.40444 = mono_defaults.argumenthandle_class;
        D.40445 = &D.40444->byval_arg;
        vtvar = mono_compile_create_var (cfg, D.40445, 329);
        D.30489 = cfg->mempool;
        addr = mono_mempool_alloc (D.30489, 48);
        addr->data.op[1].const_val = 0;
        D.40446 = addr->data.op[1].const_val;
        addr->data.op[0].const_val = D.40446;
        addr->prev = 0B;
        D.40447 = addr->prev;
        addr->next = D.40447;
        addr->opcode = 314;
        addr->flags = 0;
        addr->type = 0;
        addr->dreg = -1;
        addr->sreg3 = -1;
        D.40448 = addr->sreg3;
        addr->sreg2 = D.40448;
        D.40449 = addr->sreg2;
        addr->sreg1 = D.40449;
        D.30712 = cfg->ip;
        addr->cil_code = D.30712;
        D.31239 = cfg->varinfo;
        D.40450 = vtvar->data.op[0].const_val;
        D.40451 = (unsigned int) D.40450;
        D.40452 = D.40451 * 4;
        D.40453 = D.31239 + D.40452;
        D.40454 = *D.40453;
        addr->data.op[0].p = D.40454;
        D.31239 = cfg->varinfo;
        D.40450 = vtvar->data.op[0].const_val;
        D.40451 = (unsigned int) D.40450;
        D.40452 = D.40451 * 4;
        D.40453 = D.31239 + D.40452;
        D.40454 = *D.40453;
        D.31239 = cfg->varinfo;
        D.40450 = vtvar->data.op[0].const_val;
        D.40451 = (unsigned int) D.40450;
        D.40452 = D.40451 * 4;
        D.40453 = D.31239 + D.40452;
        D.40454 = *D.40453;
        D.40455 = D.40454->flags;
        D.40456 = D.40455 | 16;
        D.40454->flags = D.40456;
        addr->type = 5;
        D.31239 = cfg->varinfo;
        D.40450 = vtvar->data.op[0].const_val;
        D.40451 = (unsigned int) D.40450;
        D.40452 = D.40451 * 4;
        D.40453 = D.31239 + D.40452;
        D.40454 = *D.40453;
        D.40457 = D.40454->klass;
        addr->klass = D.40457;
        D.40458 = alloc_dreg (cfg, 5);
        D.40459 = (int) D.40458;
        addr->dreg = D.40459;
        cfg->has_indirection = 1;
        D.30637 = cfg->gsharedvt;
        D.31575 = D.30637 != 0;
        D.31576 = (long int) D.31575;
        D.31577 = __builtin_expect (D.31576, 0);
        if (D.31577 != 0) goto <D.40460>; else goto <D.40461>;
        <D.40460>:
        D.31239 = cfg->varinfo;
        D.40450 = vtvar->data.op[0].const_val;
        D.40451 = (unsigned int) D.40450;
        D.40452 = D.40451 * 4;
        D.40453 = D.31239 + D.40452;
        D.40454 = *D.40453;
        D.40462 = D.40454->data.op[1].vtype;
        D.40463 = mini_is_gsharedvt_variable_type (cfg, D.40462);
        if (D.40463 != 0) goto <D.40464>; else goto <D.40465>;
        <D.40464>:
        handle_gsharedvt_ldaddr (cfg);
        <D.40465>:
        <D.40461>:
        D.40467 = mono_arch_is_soft_float ();
        if (D.40467 != 0) goto <D.40468>; else goto <D.40469>;
        <D.40468>:
        D.31239 = cfg->varinfo;
        D.40450 = vtvar->data.op[0].const_val;
        D.40451 = (unsigned int) D.40450;
        D.40452 = D.40451 * 4;
        D.40453 = D.31239 + D.40452;
        D.40454 = *D.40453;
        D.40470 = D.40454->type;
        D.40471 = D.40470 == 2;
        D.40472 = D.40470 == 4;
        D.40473 = D.40471 | D.40472;
        D.40474 = (int) D.40473;
        iftmp.347 = (_Bool) D.40474;
        goto <D.40475>;
        <D.40469>:
        D.31239 = cfg->varinfo;
        D.40450 = vtvar->data.op[0].const_val;
        D.40451 = (unsigned int) D.40450;
        D.40452 = D.40451 * 4;
        D.40453 = D.31239 + D.40452;
        D.40454 = *D.40453;
        D.40476 = D.40454->type;
        iftmp.347 = D.40476 == 2;
        <D.40475>:
        if (iftmp.347 != 0) goto <D.40477>; else goto <D.40478>;
        <D.40477>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.31239 = cfg->varinfo;
          D.40450 = vtvar->data.op[0].const_val;
          D.40451 = (unsigned int) D.40450;
          D.40452 = D.40451 * 4;
          D.40453 = D.31239 + D.40452;
          D.40454 = *D.40453;
          D.40480 = D.40454->dreg;
          D.40481 = D.40480 + 1;
          D.40482 = (unsigned int) D.40481;
          D.31601 = cfg->vreg_to_inst_len;
          if (D.40482 < D.31601) goto <D.40483>; else goto <D.40484>;
          <D.40483>:
          D.31604 = cfg->vreg_to_inst;
          D.31239 = cfg->varinfo;
          D.40450 = vtvar->data.op[0].const_val;
          D.40451 = (unsigned int) D.40450;
          D.40452 = D.40451 * 4;
          D.40453 = D.31239 + D.40452;
          D.40454 = *D.40453;
          D.40480 = D.40454->dreg;
          D.40485 = (sizetype) D.40480;
          D.40486 = D.40485 + 1;
          D.40487 = D.40486 * 4;
          D.40488 = D.31604 + D.40487;
          iftmp.348 = *D.40488;
          goto <D.40489>;
          <D.40484>:
          iftmp.348 = 0B;
          <D.40489>:
          var1 = iftmp.348;
          D.31239 = cfg->varinfo;
          D.40450 = vtvar->data.op[0].const_val;
          D.40451 = (unsigned int) D.40450;
          D.40452 = D.40451 * 4;
          D.40453 = D.31239 + D.40452;
          D.40454 = *D.40453;
          D.40480 = D.40454->dreg;
          D.40491 = D.40480 + 2;
          D.40492 = (unsigned int) D.40491;
          D.31601 = cfg->vreg_to_inst_len;
          if (D.40492 < D.31601) goto <D.40493>; else goto <D.40494>;
          <D.40493>:
          D.31604 = cfg->vreg_to_inst;
          D.31239 = cfg->varinfo;
          D.40450 = vtvar->data.op[0].const_val;
          D.40451 = (unsigned int) D.40450;
          D.40452 = D.40451 * 4;
          D.40453 = D.31239 + D.40452;
          D.40454 = *D.40453;
          D.40480 = D.40454->dreg;
          D.40485 = (sizetype) D.40480;
          D.40495 = D.40485 + 2;
          D.40496 = D.40495 * 4;
          D.40497 = D.31604 + D.40496;
          iftmp.349 = *D.40497;
          goto <D.40498>;
          <D.40494>:
          iftmp.349 = 0B;
          <D.40498>:
          var2 = iftmp.349;
          D.40499 = var1 == 0B;
          D.40500 = (long int) D.40499;
          D.40501 = __builtin_expect (D.40500, 0);
          if (D.40501 != 0) goto <D.40502>; else goto <D.40503>;
          <D.40502>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11394, "var1");
          <D.40503>:
          D.40504 = var2 == 0B;
          D.40505 = (long int) D.40504;
          D.40506 = __builtin_expect (D.40505, 0);
          if (D.40506 != 0) goto <D.40507>; else goto <D.40508>;
          <D.40507>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11394, "var2");
          <D.40508>:
          D.40509 = var1->flags;
          D.40510 = D.40509 | 16;
          var1->flags = D.40510;
          D.40511 = var2->flags;
          D.40512 = D.40511 | 16;
          var2->flags = D.40512;
        }
        <D.40478>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.40513>; else goto <D.40514>;
        <D.40513>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = addr;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        addr->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = addr;
        goto <D.40515>;
        <D.40514>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = addr;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.40515>:
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        ins->opcode = 373;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        ins->dreg = -1;
        D.40516 = addr->dreg;
        ins->sreg1 = D.40516;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.40517>; else goto <D.40518>;
        <D.40517>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = ins;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        ins->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        goto <D.40519>;
        <D.40518>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.40519>:
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        ins->opcode = 428;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        D.31239 = cfg->varinfo;
        D.40450 = vtvar->data.op[0].const_val;
        D.40451 = (unsigned int) D.40450;
        D.40452 = D.40451 * 4;
        D.40453 = D.31239 + D.40452;
        D.40454 = *D.40453;
        D.40462 = D.40454->data.op[1].vtype;
        D.40520 = mono_type_to_regmove (cfg, D.40462);
        D.40521 = (short unsigned int) D.40520;
        ins->opcode = D.40521;
        D.31239 = cfg->varinfo;
        D.40450 = vtvar->data.op[0].const_val;
        D.40451 = (unsigned int) D.40450;
        D.40452 = D.40451 * 4;
        D.40453 = D.31239 + D.40452;
        D.40454 = *D.40453;
        D.40462 = D.40454->data.op[1].vtype;
        type_to_eval_stack_type (cfg, D.40462, ins);
        D.31239 = cfg->varinfo;
        D.40450 = vtvar->data.op[0].const_val;
        D.40451 = (unsigned int) D.40450;
        D.40452 = D.40451 * 4;
        D.40453 = D.31239 + D.40452;
        D.40454 = *D.40453;
        D.40457 = D.40454->klass;
        ins->klass = D.40457;
        D.31239 = cfg->varinfo;
        D.40450 = vtvar->data.op[0].const_val;
        D.40451 = (unsigned int) D.40450;
        D.40452 = D.40451 * 4;
        D.40453 = D.31239 + D.40452;
        D.40454 = *D.40453;
        D.40480 = D.40454->dreg;
        ins->sreg1 = D.40480;
        D.31249 = ins->type;
        D.31250 = (<unnamed type>) D.31249;
        D.40522 = alloc_dreg (cfg, D.31250);
        D.40523 = (int) D.40522;
        ins->dreg = D.40523;
        D.31253 = ins->opcode;
        if (D.31253 == 431) goto <D.40524>; else goto <D.40525>;
        <D.40524>:
        D.31239 = cfg->varinfo;
        D.40450 = vtvar->data.op[0].const_val;
        D.40451 = (unsigned int) D.40450;
        D.40452 = D.40451 * 4;
        D.40453 = D.31239 + D.40452;
        D.40454 = *D.40453;
        D.40462 = D.40454->data.op[1].vtype;
        D.40526 = mono_class_from_mono_type (D.40462);
        ins->klass = D.40526;
        <D.40525>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.40527>; else goto <D.40528>;
        <D.40527>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = ins;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        ins->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        goto <D.40529>;
        <D.40528>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.40529>:
        ins->type = 7;
        D.40444 = mono_defaults.argumenthandle_class;
        ins->klass = D.40444;
        sp.350 = sp;
        sp = sp.350 + 4;
        *sp.350 = ins;
        ip = ip + 2;
        goto <D.28196>;
      }
      <D.28197>:
      <D.28198>:
      <D.28199>:
      <D.28200>:
      <D.28201>:
      {
        struct MonoInst * cmp;

        sp.85 = (int) sp;
        stack_start.86 = (int) stack_start;
        D.31274 = sp.85 - stack_start.86;
        if (D.31274 <= 7) goto <D.40531>; else goto <D.40532>;
        <D.40531>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.40533>; else goto <D.40534>;
        <D.40533>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.40535>; else goto <D.40536>;
        <D.40535>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.40536>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.40534>:
        D.40537 = mini_get_debug_options ();
        D.40538 = D.40537->break_on_unverified;
        if (D.40538 != 0) goto <D.40539>; else goto unverified;
        <D.40539>:
        __asm__ __volatile__("int $03");
        <D.40532>:
        D.30489 = cfg->mempool;
        cmp = mono_mempool_alloc (D.30489, 48);
        cmp->data.op[1].const_val = 0;
        D.40540 = cmp->data.op[1].const_val;
        cmp->data.op[0].const_val = D.40540;
        cmp->prev = 0B;
        D.40541 = cmp->prev;
        cmp->next = D.40541;
        D.31519 = ip + 1;
        D.31520 = *D.31519;
        D.40542 = (short unsigned int) D.31520;
        D.40543 = D.40542 + 449;
        cmp->opcode = D.40543;
        cmp->flags = 0;
        cmp->type = 0;
        cmp->dreg = -1;
        cmp->sreg3 = -1;
        D.40544 = cmp->sreg3;
        cmp->sreg2 = D.40544;
        D.40545 = cmp->sreg2;
        cmp->sreg1 = D.40545;
        D.30712 = cfg->ip;
        cmp->cil_code = D.30712;
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        D.40546 = cmp->opcode;
        ins->opcode = D.40546;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        sp = sp + 4294967288;
        D.31489 = *sp;
        D.31682 = D.31489->dreg;
        cmp->sreg1 = D.31682;
        D.32655 = sp + 4;
        D.32656 = *D.32655;
        D.32657 = D.32656->dreg;
        cmp->sreg2 = D.32657;
        D.32655 = sp + 4;
        D.32656 = *D.32655;
        D.31489 = *sp;
        type_from_op (cmp, D.31489, D.32656);
        D.40547 = cmp->type;
        if (D.40547 == 0) goto <D.40548>; else goto <D.40549>;
        <D.40548>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.40550>; else goto <D.40551>;
        <D.40550>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.40552>; else goto <D.40553>;
        <D.40552>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.40553>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.40551>:
        D.40554 = mini_get_debug_options ();
        D.40555 = D.40554->break_on_unverified;
        if (D.40555 != 0) goto <D.40556>; else goto unverified;
        <D.40556>:
        __asm__ __volatile__("int $03");
        <D.40549>:
        D.31489 = *sp;
        D.32169 = D.31489->type;
        if (D.32169 == 2) goto <D.40557>; else goto <D.40558>;
        <D.40557>:
        cmp->opcode = 325;
        goto <D.40559>;
        <D.40558>:
        D.31489 = *sp;
        D.32169 = D.31489->type;
        if (D.32169 == 4) goto <D.40560>; else goto <D.40561>;
        <D.40560>:
        cmp->opcode = 324;
        goto <D.40562>;
        <D.40561>:
        cmp->opcode = 326;
        <D.40562>:
        <D.40559>:
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        if (D.30826 != 0B) goto <D.40563>; else goto <D.40564>;
        <D.40563>:
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        D.30826->next = cmp;
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        cmp->prev = D.30826;
        bblock.78 = bblock;
        bblock.78->last_ins = cmp;
        goto <D.40565>;
        <D.40564>:
        bblock.78 = bblock;
        bblock.78 = bblock;
        bblock.78->last_ins = cmp;
        D.30826 = bblock.78->last_ins;
        bblock.78->code = D.30826;
        <D.40565>:
        ins->type = 1;
        D.31249 = ins->type;
        D.31250 = (<unnamed type>) D.31249;
        D.40566 = alloc_dreg (cfg, D.31250);
        D.40567 = (int) D.40566;
        ins->dreg = D.40567;
        D.32655 = sp + 4;
        D.32656 = *D.32655;
        D.31489 = *sp;
        type_from_op (ins, D.31489, D.32656);
        D.40546 = cmp->opcode;
        if (D.40546 == 324) goto <D.40568>; else goto <D.40569>;
        <D.40568>:
        cmp->opcode = 316;
        D.40570 = cmp->sreg1;
        ins->sreg1 = D.40570;
        D.40545 = cmp->sreg2;
        ins->sreg2 = D.40545;
        <D.40569>:
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        if (D.30826 != 0B) goto <D.40571>; else goto <D.40572>;
        <D.40571>:
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        D.30826->next = ins;
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        ins->prev = D.30826;
        bblock.78 = bblock;
        bblock.78->last_ins = ins;
        goto <D.40573>;
        <D.40572>:
        bblock.78 = bblock;
        bblock.78 = bblock;
        bblock.78->last_ins = ins;
        D.30826 = bblock.78->last_ins;
        bblock.78->code = D.30826;
        <D.40573>:
        sp.351 = sp;
        sp = sp.351 + 4;
        *sp.351 = ins;
        ip = ip + 2;
        goto <D.28196>;
      }
      <D.28203>:
      {
        struct MonoInst * argconst;
        struct MonoMethod * cil_method;

        try
          {
            sp.85 = (int) sp;
            stack_start.86 = (int) stack_start;
            D.31274 = sp.85 - stack_start.86;
            D.31275 = D.31274 /[ex] 4;
            D.31188 = header->max_stack;
            D.31189 = (int) D.31188;
            if (D.31275 >= D.31189) goto <D.40575>; else goto <D.40576>;
            <D.40575>:
            D.30637 = cfg->gsharedvt;
            if (D.30637 != 0) goto <D.40577>; else goto <D.40578>;
            <D.40577>:
            D.30569 = cfg->verbose_level;
            if (D.30569 > 2) goto <D.40579>; else goto <D.40580>;
            <D.40579>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.40580>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.40578>:
            D.40581 = mini_get_debug_options ();
            D.40582 = D.40581->break_on_unverified;
            if (D.40582 != 0) goto <D.40583>; else goto unverified;
            <D.40583>:
            __asm__ __volatile__("int $03");
            <D.40576>:
            D.35322 = ip + 6;
            if (D.35322 > end) goto <D.40584>; else goto <D.40585>;
            <D.40584>:
            D.30637 = cfg->gsharedvt;
            if (D.30637 != 0) goto <D.40586>; else goto <D.40587>;
            <D.40586>:
            D.30569 = cfg->verbose_level;
            if (D.30569 > 2) goto <D.40588>; else goto <D.40589>;
            <D.40588>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.40589>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.40587>:
            D.40590 = mini_get_debug_options ();
            D.40591 = D.40590->break_on_unverified;
            if (D.40591 != 0) goto <D.40592>; else goto unverified;
            <D.40592>:
            __asm__ __volatile__("int $03");
            <D.40585>:
            D.40018 = ip + 2;
            D.40019 = *D.40018;
            n = (int) D.40019;
            n.178 = (unsigned int) n;
            cmethod = mini_get_method (cfg, method, n.178, 0B, generic_context);
            if (cmethod == 0B) goto <D.40593>; else goto <D.40595>;
            <D.40595>:
            D.40596 = mono_loader_get_last_error ();
            if (D.40596 != 0B) goto <D.40593>; else goto <D.40594>;
            <D.40593>:
            D.40597 = mini_get_debug_options ();
            D.40598 = D.40597->break_on_unverified;
            if (D.40598 != 0) goto <D.40599>; else goto load_error;
            <D.40599>:
            __asm__ __volatile__("int $03");
            <D.40594>:
            D.32390 = cmethod->klass;
            mono_class_init (D.32390);
            n.178 = (unsigned int) n;
            mono_save_token_info (cfg, image, n.178, cmethod);
            context_used = mini_method_check_context_used (cfg, cmethod);
            cil_method = cmethod;
            if (dont_verify == 0) goto <D.40600>; else goto <D.40601>;
            <D.40600>:
            D.31276 = BIT_FIELD_REF <*cfg, 8, 3400>;
            D.32407 = D.31276 & 64;
            if (D.32407 == 0) goto <D.40602>; else goto <D.40603>;
            <D.40602>:
            D.40604 = mono_method_can_access_method (method, cmethod);
            if (D.40604 == 0) goto <D.40605>; else goto <D.40606>;
            <D.40605>:
            {
              char * method_fname;
              char * cil_method_fname;

              method_fname = mono_method_full_name (method, 1);
              cil_method_fname = mono_method_full_name (cil_method, 1);
              mono_cfg_set_exception (cfg, 9);
              D.40607 = monoeg_g_strdup_printf ("Method `%s\' is inaccessible from method `%s\'\n", cil_method_fname, method_fname);
              cfg->exception_message = D.40607;
              monoeg_g_free (method_fname);
              monoeg_g_free (cil_method_fname);
              goto exception_exit;
            }
            <D.40606>:
            <D.40603>:
            <D.40601>:
            D.40608 = mono_security_get_mode ();
            if (D.40608 == 2) goto <D.40609>; else goto <D.40610>;
            <D.40609>:
            D.40611 = check_linkdemand (cfg, method, cmethod);
            if (D.40611 != 0) goto <D.40612>; else goto <D.40613>;
            <D.40612>:
            D.30459 = cfg->method;
            if (D.30459 != method) goto <D.40614>; else goto <D.40615>;
            <D.40614>:
            D.30431 = BIT_FIELD_REF <*method, 8, 160>;
            D.30432 = D.30431 & 124;
            if (D.30432 == 0) goto <D.40616>; else goto <D.40617>;
            <D.40616>:
            D.30569 = cfg->verbose_level;
            if (D.30569 > 1) goto <D.40618>; else goto <D.40619>;
            <D.40618>:
            printf ("inline failed: %s\n", "linkdemand");
            <D.40619>:
            goto inline_failure;
            <D.40617>:
            <D.40615>:
            <D.40613>:
            D.31057 = cfg->exception_type;
            if (D.31057 != 0) goto exception_exit; else goto <D.40620>;
            <D.40620>:
            goto <D.40621>;
            <D.40610>:
            D.40622 = mono_security_get_mode ();
            if (D.40622 == 1) goto <D.40623>; else goto <D.40624>;
            <D.40623>:
            bblock.78 = bblock;
            ensure_method_is_allowed_to_call_method (cfg, method, cmethod, bblock.78, ip);
            <D.40624>:
            <D.40621>:
            if (sp > stack_start) goto <D.40625>; else goto <D.40626>;
            <D.40625>:
            D.40627 = ip + 11;
            if (D.40627 < end) goto <D.40628>; else goto <D.40629>;
            <D.40628>:
            D.37976 = ip + 6;
            bblock.78 = bblock;
            D.40630 = ip_in_bb (cfg, bblock.78, D.37976);
            if (D.40630 != 0) goto <D.40631>; else goto <D.40632>;
            <D.40631>:
            D.35322 = ip + 6;
            D.35323 = *D.35322;
            if (D.35323 == 115) goto <D.40633>; else goto <D.40634>;
            <D.40633>:
            {
              struct MonoMethod * ctor_method;

              D.40635 = ip + 7;
              D.40636 = *D.40635;
              ctor_method = mini_get_method (cfg, method, D.40636, 0B, generic_context);
              if (ctor_method != 0B) goto <D.40637>; else goto <D.40638>;
              <D.40637>:
              D.40639 = ctor_method->klass;
              D.40640 = D.40639->parent;
              D.32884 = mono_defaults.multicastdelegate_class;
              if (D.40640 == D.32884) goto <D.40641>; else goto <D.40642>;
              <D.40641>:
              {
                struct MonoInst * target_ins;
                struct MonoMethod * invoke;
                int invoke_context_used;

                D.40639 = ctor_method->klass;
                invoke = mono_get_delegate_invoke (D.40639);
                if (invoke == 0B) goto <D.40643>; else goto <D.40645>;
                <D.40645>:
                D.40646 = mono_method_signature (invoke);
                if (D.40646 == 0B) goto <D.40643>; else goto <D.40644>;
                <D.40643>:
                D.40647 = mini_get_debug_options ();
                D.40648 = D.40647->break_on_unverified;
                if (D.40648 != 0) goto <D.40649>; else goto load_error;
                <D.40649>:
                __asm__ __volatile__("int $03");
                <D.40644>:
                invoke_context_used = mini_method_check_context_used (cfg, invoke);
                target_ins = MEM[(struct MonoInst * *)sp + 4294967292B];
                D.40650 = mono_security_get_mode ();
                if (D.40650 == 1) goto <D.40651>; else goto <D.40652>;
                <D.40651>:
                bblock.78 = bblock;
                ensure_method_is_allowed_to_call_method (cfg, method, ctor_method, bblock.78, ip);
                <D.40652>:
                D.32426 = cmethod->flags;
                D.32427 = (int) D.32426;
                D.40653 = D.32427 & 16;
                if (D.40653 == 0) goto <D.40654>; else goto <D.40655>;
                <D.40654>:
                D.40656 = mono_method_signature (invoke);
                D.40657 = D.40656->param_count;
                D.40658 = mono_method_signature (cmethod);
                D.40659 = D.40658->param_count;
                if (D.40657 == D.40659) goto <D.40660>; else goto <D.40661>;
                <D.40660>:
                {
                  struct MonoInst * inst;

                  D.30489 = cfg->mempool;
                  inst = mono_mempool_alloc (D.30489, 48);
                  inst->data.op[1].const_val = 0;
                  D.40662 = inst->data.op[1].const_val;
                  inst->data.op[0].const_val = D.40662;
                  inst->prev = 0B;
                  D.40663 = inst->prev;
                  inst->next = D.40663;
                  inst->opcode = 323;
                  inst->flags = 0;
                  inst->type = 0;
                  inst->dreg = -1;
                  inst->sreg3 = -1;
                  D.40664 = inst->sreg3;
                  inst->sreg2 = D.40664;
                  D.40665 = inst->sreg2;
                  inst->sreg1 = D.40665;
                  D.30712 = cfg->ip;
                  inst->cil_code = D.30712;
                  inst->dreg = -1;
                  D.40666 = target_ins->dreg;
                  inst->sreg1 = D.40666;
                  inst->data.op[1].const_val = 0;
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  if (D.30741 != 0B) goto <D.40667>; else goto <D.40668>;
                  <D.40667>:
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.30741->next = inst;
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  inst->prev = D.30741;
                  bblock.127 = cfg->cbb;
                  bblock.127->last_ins = inst;
                  goto <D.40669>;
                  <D.40668>:
                  bblock.127 = cfg->cbb;
                  bblock.127 = cfg->cbb;
                  bblock.127->last_ins = inst;
                  D.30741 = bblock.127->last_ins;
                  bblock.127->code = D.30741;
                  <D.40669>:
                }
                {
                  struct MonoInst * inst;

                  D.30489 = cfg->mempool;
                  inst = mono_mempool_alloc (D.30489, 48);
                  inst->data.op[1].const_val = 0;
                  D.40670 = inst->data.op[1].const_val;
                  inst->data.op[0].const_val = D.40670;
                  inst->prev = 0B;
                  D.40671 = inst->prev;
                  inst->next = D.40671;
                  inst->opcode = 455;
                  inst->flags = 0;
                  inst->type = 0;
                  inst->dreg = -1;
                  inst->sreg3 = -1;
                  D.40672 = inst->sreg3;
                  inst->sreg2 = D.40672;
                  D.40673 = inst->sreg2;
                  inst->sreg1 = D.40673;
                  D.30712 = cfg->ip;
                  inst->cil_code = D.30712;
                  inst->data.op[1].p = "ArgumentException";
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  if (D.30741 != 0B) goto <D.40674>; else goto <D.40675>;
                  <D.40674>:
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  D.30741->next = inst;
                  bblock.127 = cfg->cbb;
                  D.30741 = bblock.127->last_ins;
                  inst->prev = D.30741;
                  bblock.127 = cfg->cbb;
                  bblock.127->last_ins = inst;
                  goto <D.40676>;
                  <D.40675>:
                  bblock.127 = cfg->cbb;
                  bblock.127 = cfg->cbb;
                  bblock.127->last_ins = inst;
                  D.30741 = bblock.127->last_ins;
                  bblock.127->code = D.30741;
                  <D.40676>:
                }
                <D.40661>:
                <D.40655>:
                if (invoke_context_used == 0) goto <D.40677>; else goto <D.40678>;
                <D.40677>:
                ip = ip + 6;
                D.30569 = cfg->verbose_level;
                if (D.30569 > 3) goto <D.40679>; else goto <D.40680>;
                <D.40679>:
                D.40681 = mono_disasm_code_one (0B, method, ip, 0B);
                sp.85 = (int) sp;
                stack_start.86 = (int) stack_start;
                D.31274 = sp.85 - stack_start.86;
                D.31275 = D.31274 /[ex] 4;
                bblock.78 = bblock;
                D.31370 = bblock.78->block_num;
                monoeg_g_print ("converting (in B%d: stack: %d) %s", D.31370, D.31275, D.40681);
                <D.40680>:
                sp = sp + 4294967292;
                D.40639 = ctor_method->klass;
                D.40682 = handle_delegate_ctor (cfg, D.40639, target_ins, cmethod, context_used);
                *sp = D.40682;
                D.31057 = cfg->exception_type;
                if (D.31057 != 0) goto exception_exit; else goto <D.40683>;
                <D.40683>:
                ip = ip + 5;
                sp = sp + 4;
                goto <D.28196>;
                <D.40678>:
              }
              <D.40642>:
              <D.40638>:
            }
            <D.40634>:
            <D.40632>:
            <D.40629>:
            <D.40626>:
            argconst.352 = emit_get_rgctx_method (cfg, context_used, cmethod, 5);
            argconst = argconst.352;
            ins = mono_emit_jit_icall (cfg, mono_ldftn, &argconst);
            sp.353 = sp;
            sp = sp.353 + 4;
            *sp.353 = ins;
            ip = ip + 6;
            num_calls.354 = num_calls;
            num_calls = num_calls.354 + 1;
            D.40687 = num_calls.354 * 10;
            inline_costs = D.40687 + inline_costs;
            goto <D.28196>;
          }
        finally
          {
            argconst = {CLOBBER};
          }
      }
      <D.28214>:
      {
        struct MonoInst * args[2];

        try
          {
            sp.85 = (int) sp;
            stack_start.86 = (int) stack_start;
            D.31274 = sp.85 - stack_start.86;
            if (D.31274 <= 3) goto <D.40688>; else goto <D.40689>;
            <D.40688>:
            D.30637 = cfg->gsharedvt;
            if (D.30637 != 0) goto <D.40690>; else goto <D.40691>;
            <D.40690>:
            D.30569 = cfg->verbose_level;
            if (D.30569 > 2) goto <D.40692>; else goto <D.40693>;
            <D.40692>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.40693>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.40691>:
            D.40694 = mini_get_debug_options ();
            D.40695 = D.40694->break_on_unverified;
            if (D.40695 != 0) goto <D.40696>; else goto unverified;
            <D.40696>:
            __asm__ __volatile__("int $03");
            <D.40689>:
            D.35322 = ip + 6;
            if (D.35322 > end) goto <D.40697>; else goto <D.40698>;
            <D.40697>:
            D.30637 = cfg->gsharedvt;
            if (D.30637 != 0) goto <D.40699>; else goto <D.40700>;
            <D.40699>:
            D.30569 = cfg->verbose_level;
            if (D.30569 > 2) goto <D.40701>; else goto <D.40702>;
            <D.40701>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.40702>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.40700>:
            D.40703 = mini_get_debug_options ();
            D.40704 = D.40703->break_on_unverified;
            if (D.40704 != 0) goto <D.40705>; else goto unverified;
            <D.40705>:
            __asm__ __volatile__("int $03");
            <D.40698>:
            D.40018 = ip + 2;
            D.40019 = *D.40018;
            n = (int) D.40019;
            n.178 = (unsigned int) n;
            cmethod = mini_get_method (cfg, method, n.178, 0B, generic_context);
            if (cmethod == 0B) goto <D.40706>; else goto <D.40708>;
            <D.40708>:
            D.40709 = mono_loader_get_last_error ();
            if (D.40709 != 0B) goto <D.40706>; else goto <D.40707>;
            <D.40706>:
            D.40710 = mini_get_debug_options ();
            D.40711 = D.40710->break_on_unverified;
            if (D.40711 != 0) goto <D.40712>; else goto load_error;
            <D.40712>:
            __asm__ __volatile__("int $03");
            <D.40707>:
            D.32390 = cmethod->klass;
            mono_class_init (D.32390);
            context_used = mini_method_check_context_used (cfg, cmethod);
            D.40713 = mono_security_get_mode ();
            if (D.40713 == 2) goto <D.40714>; else goto <D.40715>;
            <D.40714>:
            D.40716 = check_linkdemand (cfg, method, cmethod);
            if (D.40716 != 0) goto <D.40717>; else goto <D.40718>;
            <D.40717>:
            D.30459 = cfg->method;
            if (D.30459 != method) goto <D.40719>; else goto <D.40720>;
            <D.40719>:
            D.30431 = BIT_FIELD_REF <*method, 8, 160>;
            D.30432 = D.30431 & 124;
            if (D.30432 == 0) goto <D.40721>; else goto <D.40722>;
            <D.40721>:
            D.30569 = cfg->verbose_level;
            if (D.30569 > 1) goto <D.40723>; else goto <D.40724>;
            <D.40723>:
            printf ("inline failed: %s\n", "linkdemand");
            <D.40724>:
            goto inline_failure;
            <D.40722>:
            <D.40720>:
            <D.40718>:
            D.31057 = cfg->exception_type;
            if (D.31057 != 0) goto exception_exit; else goto <D.40725>;
            <D.40725>:
            goto <D.40726>;
            <D.40715>:
            D.40727 = mono_security_get_mode ();
            if (D.40727 == 1) goto <D.40728>; else goto <D.40729>;
            <D.40728>:
            bblock.78 = bblock;
            ensure_method_is_allowed_to_call_method (cfg, method, cmethod, bblock.78, ip);
            <D.40729>:
            <D.40726>:
            sp = sp + 4294967292;
            D.31489 = *sp;
            args[0] = D.31489;
            D.40730 = emit_get_rgctx_method (cfg, context_used, cmethod, 5);
            args[1] = D.40730;
            if (context_used != 0) goto <D.40731>; else goto <D.40732>;
            <D.40731>:
            sp.355 = sp;
            sp = sp.355 + 4;
            D.40734 = mono_emit_jit_icall (cfg, mono_ldvirtfn_gshared, &args);
            *sp.355 = D.40734;
            goto <D.40735>;
            <D.40732>:
            sp.356 = sp;
            sp = sp.356 + 4;
            D.40737 = mono_emit_jit_icall (cfg, mono_ldvirtfn, &args);
            *sp.356 = D.40737;
            <D.40735>:
            ip = ip + 6;
            num_calls.357 = num_calls;
            num_calls = num_calls.357 + 1;
            D.40739 = num_calls.357 * 10;
            inline_costs = D.40739 + inline_costs;
            goto <D.28196>;
          }
        finally
          {
            args = {CLOBBER};
          }
      }
      <D.28216>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      D.31275 = D.31274 /[ex] 4;
      D.31188 = header->max_stack;
      D.31189 = (int) D.31188;
      if (D.31275 >= D.31189) goto <D.40740>; else goto <D.40741>;
      <D.40740>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.40742>; else goto <D.40743>;
      <D.40742>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.40744>; else goto <D.40745>;
      <D.40744>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40745>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40743>:
      D.40746 = mini_get_debug_options ();
      D.40747 = D.40746->break_on_unverified;
      if (D.40747 != 0) goto <D.40748>; else goto unverified;
      <D.40748>:
      __asm__ __volatile__("int $03");
      <D.40741>:
      D.40749 = ip + 4;
      if (D.40749 > end) goto <D.40750>; else goto <D.40751>;
      <D.40750>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.40752>; else goto <D.40753>;
      <D.40752>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.40754>; else goto <D.40755>;
      <D.40754>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40755>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40753>:
      D.40756 = mini_get_debug_options ();
      D.40757 = D.40756->break_on_unverified;
      if (D.40757 != 0) goto <D.40758>; else goto unverified;
      <D.40758>:
      __asm__ __volatile__("int $03");
      <D.40751>:
      D.40759 = ip + 2;
      D.40760 = *D.40759;
      n = (int) D.40760;
      n.90 = (unsigned int) n;
      if (n.90 >= num_args) goto <D.40761>; else goto <D.40762>;
      <D.40761>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.40763>; else goto <D.40764>;
      <D.40763>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.40765>; else goto <D.40766>;
      <D.40765>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40766>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40764>:
      D.40767 = mini_get_debug_options ();
      D.40768 = D.40767->break_on_unverified;
      if (D.40768 != 0) goto <D.40769>; else goto unverified;
      <D.40769>:
      __asm__ __volatile__("int $03");
      <D.40762>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 428;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      D.31116 = cfg->arg_types;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31417 = D.31116 + D.31416;
      D.31418 = *D.31417;
      D.40770 = mono_type_to_regmove (cfg, D.31418);
      D.40771 = (short unsigned int) D.40770;
      ins->opcode = D.40771;
      D.31116 = cfg->arg_types;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31417 = D.31116 + D.31416;
      D.31418 = *D.31417;
      type_to_eval_stack_type (cfg, D.31418, ins);
      D.31106 = cfg->args;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31421 = D.31106 + D.31416;
      D.31422 = *D.31421;
      D.31423 = D.31422->klass;
      ins->klass = D.31423;
      D.31106 = cfg->args;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31421 = D.31106 + D.31416;
      D.31422 = *D.31421;
      D.31424 = D.31422->dreg;
      ins->sreg1 = D.31424;
      D.31249 = ins->type;
      D.31250 = (<unnamed type>) D.31249;
      D.40772 = alloc_dreg (cfg, D.31250);
      D.40773 = (int) D.40772;
      ins->dreg = D.40773;
      D.31253 = ins->opcode;
      if (D.31253 == 431) goto <D.40774>; else goto <D.40775>;
      <D.40774>:
      D.31116 = cfg->arg_types;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31417 = D.31116 + D.31416;
      D.31418 = *D.31417;
      D.40776 = mono_class_from_mono_type (D.31418);
      ins->klass = D.40776;
      <D.40775>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.40777>; else goto <D.40778>;
      <D.40777>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.40779>;
      <D.40778>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.40779>:
      sp.358 = sp;
      sp = sp.358 + 4;
      *sp.358 = ins;
      ip = ip + 4;
      goto <D.28196>;
      <D.28217>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      D.31275 = D.31274 /[ex] 4;
      D.31188 = header->max_stack;
      D.31189 = (int) D.31188;
      if (D.31275 >= D.31189) goto <D.40781>; else goto <D.40782>;
      <D.40781>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.40783>; else goto <D.40784>;
      <D.40783>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.40785>; else goto <D.40786>;
      <D.40785>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40786>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40784>:
      D.40787 = mini_get_debug_options ();
      D.40788 = D.40787->break_on_unverified;
      if (D.40788 != 0) goto <D.40789>; else goto unverified;
      <D.40789>:
      __asm__ __volatile__("int $03");
      <D.40782>:
      D.40749 = ip + 4;
      if (D.40749 > end) goto <D.40790>; else goto <D.40791>;
      <D.40790>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.40792>; else goto <D.40793>;
      <D.40792>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.40794>; else goto <D.40795>;
      <D.40794>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40795>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40793>:
      D.40796 = mini_get_debug_options ();
      D.40797 = D.40796->break_on_unverified;
      if (D.40797 != 0) goto <D.40798>; else goto unverified;
      <D.40798>:
      __asm__ __volatile__("int $03");
      <D.40791>:
      D.40759 = ip + 2;
      D.40760 = *D.40759;
      n = (int) D.40760;
      n.90 = (unsigned int) n;
      if (n.90 >= num_args) goto <D.40799>; else goto <D.40800>;
      <D.40799>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.40801>; else goto <D.40802>;
      <D.40801>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.40803>; else goto <D.40804>;
      <D.40803>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40804>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40802>:
      D.40805 = mini_get_debug_options ();
      D.40806 = D.40805->break_on_unverified;
      if (D.40806 != 0) goto <D.40807>; else goto unverified;
      <D.40807>:
      __asm__ __volatile__("int $03");
      <D.40800>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 314;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31568 = arg_array + D.31416;
      D.31569 = *D.31568;
      ins->data.op[0].p = D.31569;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31568 = arg_array + D.31416;
      D.31569 = *D.31568;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31568 = arg_array + D.31416;
      D.31569 = *D.31568;
      D.31570 = D.31569->flags;
      D.31571 = D.31570 | 16;
      D.31569->flags = D.31571;
      ins->type = 5;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31568 = arg_array + D.31416;
      D.31569 = *D.31568;
      D.31572 = D.31569->klass;
      ins->klass = D.31572;
      D.40808 = alloc_dreg (cfg, 5);
      D.40809 = (int) D.40808;
      ins->dreg = D.40809;
      cfg->has_indirection = 1;
      D.30637 = cfg->gsharedvt;
      D.31575 = D.30637 != 0;
      D.31576 = (long int) D.31575;
      D.31577 = __builtin_expect (D.31576, 0);
      if (D.31577 != 0) goto <D.40810>; else goto <D.40811>;
      <D.40810>:
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31568 = arg_array + D.31416;
      D.31569 = *D.31568;
      D.31580 = D.31569->data.op[1].vtype;
      D.40812 = mini_is_gsharedvt_variable_type (cfg, D.31580);
      if (D.40812 != 0) goto <D.40813>; else goto <D.40814>;
      <D.40813>:
      handle_gsharedvt_ldaddr (cfg);
      <D.40814>:
      <D.40811>:
      D.40816 = mono_arch_is_soft_float ();
      if (D.40816 != 0) goto <D.40817>; else goto <D.40818>;
      <D.40817>:
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31568 = arg_array + D.31416;
      D.31569 = *D.31568;
      D.40819 = D.31569->type;
      D.40820 = D.40819 == 2;
      D.40821 = D.40819 == 4;
      D.40822 = D.40820 | D.40821;
      D.40823 = (int) D.40822;
      iftmp.359 = (_Bool) D.40823;
      goto <D.40824>;
      <D.40818>:
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31568 = arg_array + D.31416;
      D.31569 = *D.31568;
      D.31594 = D.31569->type;
      iftmp.359 = D.31594 == 2;
      <D.40824>:
      if (iftmp.359 != 0) goto <D.40825>; else goto <D.40826>;
      <D.40825>:
      {
        struct MonoInst * var1;
        struct MonoInst * var2;

        n.90 = (unsigned int) n;
        D.31416 = n.90 * 4;
        D.31568 = arg_array + D.31416;
        D.31569 = *D.31568;
        D.31598 = D.31569->dreg;
        D.31599 = D.31598 + 1;
        D.31600 = (unsigned int) D.31599;
        D.31601 = cfg->vreg_to_inst_len;
        if (D.31600 < D.31601) goto <D.40828>; else goto <D.40829>;
        <D.40828>:
        D.31604 = cfg->vreg_to_inst;
        n.90 = (unsigned int) n;
        D.31416 = n.90 * 4;
        D.31568 = arg_array + D.31416;
        D.31569 = *D.31568;
        D.31598 = D.31569->dreg;
        D.31605 = (sizetype) D.31598;
        D.31606 = D.31605 + 1;
        D.31607 = D.31606 * 4;
        D.31608 = D.31604 + D.31607;
        iftmp.360 = *D.31608;
        goto <D.40830>;
        <D.40829>:
        iftmp.360 = 0B;
        <D.40830>:
        var1 = iftmp.360;
        n.90 = (unsigned int) n;
        D.31416 = n.90 * 4;
        D.31568 = arg_array + D.31416;
        D.31569 = *D.31568;
        D.31598 = D.31569->dreg;
        D.31611 = D.31598 + 2;
        D.31612 = (unsigned int) D.31611;
        D.31601 = cfg->vreg_to_inst_len;
        if (D.31612 < D.31601) goto <D.40832>; else goto <D.40833>;
        <D.40832>:
        D.31604 = cfg->vreg_to_inst;
        n.90 = (unsigned int) n;
        D.31416 = n.90 * 4;
        D.31568 = arg_array + D.31416;
        D.31569 = *D.31568;
        D.31598 = D.31569->dreg;
        D.31605 = (sizetype) D.31598;
        D.31615 = D.31605 + 2;
        D.31616 = D.31615 * 4;
        D.31617 = D.31604 + D.31616;
        iftmp.361 = *D.31617;
        goto <D.40834>;
        <D.40833>:
        iftmp.361 = 0B;
        <D.40834>:
        var2 = iftmp.361;
        D.40835 = var1 == 0B;
        D.40836 = (long int) D.40835;
        D.40837 = __builtin_expect (D.40836, 0);
        if (D.40837 != 0) goto <D.40838>; else goto <D.40839>;
        <D.40838>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11584, "var1");
        <D.40839>:
        D.40840 = var2 == 0B;
        D.40841 = (long int) D.40840;
        D.40842 = __builtin_expect (D.40841, 0);
        if (D.40842 != 0) goto <D.40843>; else goto <D.40844>;
        <D.40843>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11584, "var2");
        <D.40844>:
        D.40845 = var1->flags;
        D.40846 = D.40845 | 16;
        var1->flags = D.40846;
        D.40847 = var2->flags;
        D.40848 = D.40847 | 16;
        var2->flags = D.40848;
      }
      <D.40826>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.40849>; else goto <D.40850>;
      <D.40849>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.40851>;
      <D.40850>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.40851>:
      sp.362 = sp;
      sp = sp.362 + 4;
      *sp.362 = ins;
      ip = ip + 4;
      goto <D.28196>;
      <D.28220>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      if (D.31274 <= 3) goto <D.40853>; else goto <D.40854>;
      <D.40853>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.40855>; else goto <D.40856>;
      <D.40855>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.40857>; else goto <D.40858>;
      <D.40857>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40858>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40856>:
      D.40859 = mini_get_debug_options ();
      D.40860 = D.40859->break_on_unverified;
      if (D.40860 != 0) goto <D.40861>; else goto unverified;
      <D.40861>:
      __asm__ __volatile__("int $03");
      <D.40854>:
      sp = sp + 4294967292;
      D.40749 = ip + 4;
      if (D.40749 > end) goto <D.40862>; else goto <D.40863>;
      <D.40862>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.40864>; else goto <D.40865>;
      <D.40864>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.40866>; else goto <D.40867>;
      <D.40866>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40867>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40865>:
      D.40868 = mini_get_debug_options ();
      D.40869 = D.40868->break_on_unverified;
      if (D.40869 != 0) goto <D.40870>; else goto unverified;
      <D.40870>:
      __asm__ __volatile__("int $03");
      <D.40863>:
      D.40759 = ip + 2;
      D.40760 = *D.40759;
      n = (int) D.40760;
      n.90 = (unsigned int) n;
      if (n.90 >= num_args) goto <D.40871>; else goto <D.40872>;
      <D.40871>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.40873>; else goto <D.40874>;
      <D.40873>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.40875>; else goto <D.40876>;
      <D.40875>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40876>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40874>:
      D.40877 = mini_get_debug_options ();
      D.40878 = D.40877->break_on_unverified;
      if (D.40878 != 0) goto <D.40879>; else goto unverified;
      <D.40879>:
      __asm__ __volatile__("int $03");
      <D.40872>:
      if (dont_verify_stloc == 0) goto <D.40880>; else goto <D.40881>;
      <D.40880>:
      D.31489 = *sp;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.40882 = param_types + D.31416;
      D.40883 = *D.40882;
      D.40884 = target_type_is_incompatible (cfg, D.40883, D.31489);
      if (D.40884 != 0) goto <D.40885>; else goto <D.40886>;
      <D.40885>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.40887>; else goto <D.40888>;
      <D.40887>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.40889>; else goto <D.40890>;
      <D.40889>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40890>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40888>:
      D.40891 = mini_get_debug_options ();
      D.40892 = D.40891->break_on_unverified;
      if (D.40892 != 0) goto <D.40893>; else goto unverified;
      <D.40893>:
      __asm__ __volatile__("int $03");
      <D.40886>:
      <D.40881>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 428;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      D.31116 = cfg->arg_types;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31417 = D.31116 + D.31416;
      D.31418 = *D.31417;
      D.40894 = mono_type_to_regmove (cfg, D.31418);
      D.40895 = (short unsigned int) D.40894;
      ins->opcode = D.40895;
      D.31106 = cfg->args;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31421 = D.31106 + D.31416;
      D.31422 = *D.31421;
      D.31423 = D.31422->klass;
      ins->klass = D.31423;
      D.31489 = *sp;
      D.31682 = D.31489->dreg;
      ins->sreg1 = D.31682;
      D.31106 = cfg->args;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31421 = D.31106 + D.31416;
      D.31422 = *D.31421;
      D.31424 = D.31422->dreg;
      ins->dreg = D.31424;
      D.31253 = ins->opcode;
      if (D.31253 == 431) goto <D.40896>; else goto <D.40897>;
      <D.40896>:
      D.31116 = cfg->arg_types;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31417 = D.31116 + D.31416;
      D.31418 = *D.31417;
      D.40898 = mono_class_from_mono_type (D.31418);
      ins->klass = D.40898;
      <D.40897>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.40899>; else goto <D.40900>;
      <D.40899>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.40901>;
      <D.40900>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.40901>:
      ip = ip + 4;
      goto <D.28196>;
      <D.28221>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      D.31275 = D.31274 /[ex] 4;
      D.31188 = header->max_stack;
      D.31189 = (int) D.31188;
      if (D.31275 >= D.31189) goto <D.40902>; else goto <D.40903>;
      <D.40902>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.40904>; else goto <D.40905>;
      <D.40904>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.40906>; else goto <D.40907>;
      <D.40906>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40907>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40905>:
      D.40908 = mini_get_debug_options ();
      D.40909 = D.40908->break_on_unverified;
      if (D.40909 != 0) goto <D.40910>; else goto unverified;
      <D.40910>:
      __asm__ __volatile__("int $03");
      <D.40903>:
      D.40749 = ip + 4;
      if (D.40749 > end) goto <D.40911>; else goto <D.40912>;
      <D.40911>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.40913>; else goto <D.40914>;
      <D.40913>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.40915>; else goto <D.40916>;
      <D.40915>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40916>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40914>:
      D.40917 = mini_get_debug_options ();
      D.40918 = D.40917->break_on_unverified;
      if (D.40918 != 0) goto <D.40919>; else goto unverified;
      <D.40919>:
      __asm__ __volatile__("int $03");
      <D.40912>:
      D.40759 = ip + 2;
      D.40760 = *D.40759;
      n = (int) D.40760;
      n.90 = (unsigned int) n;
      D.31093 = header->num_locals;
      D.31443 = (unsigned int) D.31093;
      if (n.90 >= D.31443) goto <D.40920>; else goto <D.40921>;
      <D.40920>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.40922>; else goto <D.40923>;
      <D.40922>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.40924>; else goto <D.40925>;
      <D.40924>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40925>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40923>:
      D.40926 = mini_get_debug_options ();
      D.40927 = D.40926->break_on_unverified;
      if (D.40927 != 0) goto <D.40928>; else goto unverified;
      <D.40928>:
      __asm__ __volatile__("int $03");
      <D.40921>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 428;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      D.31081 = header->locals[n];
      D.40929 = mono_type_to_regmove (cfg, D.31081);
      D.40930 = (short unsigned int) D.40929;
      ins->opcode = D.40930;
      D.31081 = header->locals[n];
      type_to_eval_stack_type (cfg, D.31081, ins);
      D.31455 = cfg->locals;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31456 = D.31455 + D.31416;
      D.31457 = *D.31456;
      D.31458 = D.31457->klass;
      ins->klass = D.31458;
      D.31455 = cfg->locals;
      n.90 = (unsigned int) n;
      D.31416 = n.90 * 4;
      D.31456 = D.31455 + D.31416;
      D.31457 = *D.31456;
      D.31459 = D.31457->dreg;
      ins->sreg1 = D.31459;
      D.31249 = ins->type;
      D.31250 = (<unnamed type>) D.31249;
      D.40931 = alloc_dreg (cfg, D.31250);
      D.40932 = (int) D.40931;
      ins->dreg = D.40932;
      D.31253 = ins->opcode;
      if (D.31253 == 431) goto <D.40933>; else goto <D.40934>;
      <D.40933>:
      D.31081 = header->locals[n];
      D.40935 = mono_class_from_mono_type (D.31081);
      ins->klass = D.40935;
      <D.40934>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.40936>; else goto <D.40937>;
      <D.40936>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.40938>;
      <D.40937>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.40938>:
      sp.363 = sp;
      sp = sp.363 + 4;
      *sp.363 = ins;
      ip = ip + 4;
      goto <D.28196>;
      <D.28222>:
      {
        unsigned char * tmp_ip;

        sp.85 = (int) sp;
        stack_start.86 = (int) stack_start;
        D.31274 = sp.85 - stack_start.86;
        D.31275 = D.31274 /[ex] 4;
        D.31188 = header->max_stack;
        D.31189 = (int) D.31188;
        if (D.31275 >= D.31189) goto <D.40940>; else goto <D.40941>;
        <D.40940>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.40942>; else goto <D.40943>;
        <D.40942>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.40944>; else goto <D.40945>;
        <D.40944>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.40945>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.40943>:
        D.40946 = mini_get_debug_options ();
        D.40947 = D.40946->break_on_unverified;
        if (D.40947 != 0) goto <D.40948>; else goto unverified;
        <D.40948>:
        __asm__ __volatile__("int $03");
        <D.40941>:
        D.40749 = ip + 4;
        if (D.40749 > end) goto <D.40949>; else goto <D.40950>;
        <D.40949>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.40951>; else goto <D.40952>;
        <D.40951>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.40953>; else goto <D.40954>;
        <D.40953>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.40954>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.40952>:
        D.40955 = mini_get_debug_options ();
        D.40956 = D.40955->break_on_unverified;
        if (D.40956 != 0) goto <D.40957>; else goto unverified;
        <D.40957>:
        __asm__ __volatile__("int $03");
        <D.40950>:
        D.40759 = ip + 2;
        D.40760 = *D.40759;
        n = (int) D.40760;
        n.90 = (unsigned int) n;
        D.31093 = header->num_locals;
        D.31443 = (unsigned int) D.31093;
        if (n.90 >= D.31443) goto <D.40958>; else goto <D.40959>;
        <D.40958>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.40960>; else goto <D.40961>;
        <D.40960>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.40962>; else goto <D.40963>;
        <D.40962>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.40963>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.40961>:
        D.40964 = mini_get_debug_options ();
        D.40965 = D.40964->break_on_unverified;
        if (D.40965 != 0) goto <D.40966>; else goto unverified;
        <D.40966>:
        __asm__ __volatile__("int $03");
        <D.40959>:
        tmp_ip = emit_optimized_ldloca_ir (cfg, ip, end, 2);
        if (tmp_ip != 0B) goto <D.40967>; else goto <D.40968>;
        <D.40967>:
        ip = tmp_ip;
        inline_costs = inline_costs + 1;
        goto <D.28196>;
        <D.40968>:
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        ins->opcode = 314;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        D.31455 = cfg->locals;
        n.90 = (unsigned int) n;
        D.31416 = n.90 * 4;
        D.31456 = D.31455 + D.31416;
        D.31457 = *D.31456;
        ins->data.op[0].p = D.31457;
        D.31455 = cfg->locals;
        n.90 = (unsigned int) n;
        D.31416 = n.90 * 4;
        D.31456 = D.31455 + D.31416;
        D.31457 = *D.31456;
        D.31455 = cfg->locals;
        n.90 = (unsigned int) n;
        D.31416 = n.90 * 4;
        D.31456 = D.31455 + D.31416;
        D.31457 = *D.31456;
        D.40969 = D.31457->flags;
        D.40970 = D.40969 | 16;
        D.31457->flags = D.40970;
        ins->type = 5;
        D.31455 = cfg->locals;
        n.90 = (unsigned int) n;
        D.31416 = n.90 * 4;
        D.31456 = D.31455 + D.31416;
        D.31457 = *D.31456;
        D.31458 = D.31457->klass;
        ins->klass = D.31458;
        D.40971 = alloc_dreg (cfg, 5);
        D.40972 = (int) D.40971;
        ins->dreg = D.40972;
        cfg->has_indirection = 1;
        D.30637 = cfg->gsharedvt;
        D.31575 = D.30637 != 0;
        D.31576 = (long int) D.31575;
        D.31577 = __builtin_expect (D.31576, 0);
        if (D.31577 != 0) goto <D.40973>; else goto <D.40974>;
        <D.40973>:
        D.31455 = cfg->locals;
        n.90 = (unsigned int) n;
        D.31416 = n.90 * 4;
        D.31456 = D.31455 + D.31416;
        D.31457 = *D.31456;
        D.40975 = D.31457->data.op[1].vtype;
        D.40976 = mini_is_gsharedvt_variable_type (cfg, D.40975);
        if (D.40976 != 0) goto <D.40977>; else goto <D.40978>;
        <D.40977>:
        handle_gsharedvt_ldaddr (cfg);
        <D.40978>:
        <D.40974>:
        D.40980 = mono_arch_is_soft_float ();
        if (D.40980 != 0) goto <D.40981>; else goto <D.40982>;
        <D.40981>:
        D.31455 = cfg->locals;
        n.90 = (unsigned int) n;
        D.31416 = n.90 * 4;
        D.31456 = D.31455 + D.31416;
        D.31457 = *D.31456;
        D.40983 = D.31457->type;
        D.40984 = D.40983 == 2;
        D.40985 = D.40983 == 4;
        D.40986 = D.40984 | D.40985;
        D.40987 = (int) D.40986;
        iftmp.364 = (_Bool) D.40987;
        goto <D.40988>;
        <D.40982>:
        D.31455 = cfg->locals;
        n.90 = (unsigned int) n;
        D.31416 = n.90 * 4;
        D.31456 = D.31455 + D.31416;
        D.31457 = *D.31456;
        D.40989 = D.31457->type;
        iftmp.364 = D.40989 == 2;
        <D.40988>:
        if (iftmp.364 != 0) goto <D.40990>; else goto <D.40991>;
        <D.40990>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.31455 = cfg->locals;
          n.90 = (unsigned int) n;
          D.31416 = n.90 * 4;
          D.31456 = D.31455 + D.31416;
          D.31457 = *D.31456;
          D.31459 = D.31457->dreg;
          D.40993 = D.31459 + 1;
          D.40994 = (unsigned int) D.40993;
          D.31601 = cfg->vreg_to_inst_len;
          if (D.40994 < D.31601) goto <D.40995>; else goto <D.40996>;
          <D.40995>:
          D.31604 = cfg->vreg_to_inst;
          D.31455 = cfg->locals;
          n.90 = (unsigned int) n;
          D.31416 = n.90 * 4;
          D.31456 = D.31455 + D.31416;
          D.31457 = *D.31456;
          D.31459 = D.31457->dreg;
          D.40997 = (sizetype) D.31459;
          D.40998 = D.40997 + 1;
          D.40999 = D.40998 * 4;
          D.41000 = D.31604 + D.40999;
          iftmp.365 = *D.41000;
          goto <D.41001>;
          <D.40996>:
          iftmp.365 = 0B;
          <D.41001>:
          var1 = iftmp.365;
          D.31455 = cfg->locals;
          n.90 = (unsigned int) n;
          D.31416 = n.90 * 4;
          D.31456 = D.31455 + D.31416;
          D.31457 = *D.31456;
          D.31459 = D.31457->dreg;
          D.41003 = D.31459 + 2;
          D.41004 = (unsigned int) D.41003;
          D.31601 = cfg->vreg_to_inst_len;
          if (D.41004 < D.31601) goto <D.41005>; else goto <D.41006>;
          <D.41005>:
          D.31604 = cfg->vreg_to_inst;
          D.31455 = cfg->locals;
          n.90 = (unsigned int) n;
          D.31416 = n.90 * 4;
          D.31456 = D.31455 + D.31416;
          D.31457 = *D.31456;
          D.31459 = D.31457->dreg;
          D.40997 = (sizetype) D.31459;
          D.41007 = D.40997 + 2;
          D.41008 = D.41007 * 4;
          D.41009 = D.31604 + D.41008;
          iftmp.366 = *D.41009;
          goto <D.41010>;
          <D.41006>:
          iftmp.366 = 0B;
          <D.41010>:
          var2 = iftmp.366;
          D.41011 = var1 == 0B;
          D.41012 = (long int) D.41011;
          D.41013 = __builtin_expect (D.41012, 0);
          if (D.41013 != 0) goto <D.41014>; else goto <D.41015>;
          <D.41014>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11622, "var1");
          <D.41015>:
          D.41016 = var2 == 0B;
          D.41017 = (long int) D.41016;
          D.41018 = __builtin_expect (D.41017, 0);
          if (D.41018 != 0) goto <D.41019>; else goto <D.41020>;
          <D.41019>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11622, "var2");
          <D.41020>:
          D.41021 = var1->flags;
          D.41022 = D.41021 | 16;
          var1->flags = D.41022;
          D.41023 = var2->flags;
          D.41024 = D.41023 | 16;
          var2->flags = D.41024;
        }
        <D.40991>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.41025>; else goto <D.41026>;
        <D.41025>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = ins;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        ins->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        goto <D.41027>;
        <D.41026>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.41027>:
        sp.367 = sp;
        sp = sp.367 + 4;
        *sp.367 = ins;
        ip = ip + 4;
        goto <D.28196>;
      }
      <D.28226>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      if (D.31274 <= 3) goto <D.41029>; else goto <D.41030>;
      <D.41029>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.41031>; else goto <D.41032>;
      <D.41031>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.41033>; else goto <D.41034>;
      <D.41033>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41034>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41032>:
      D.41035 = mini_get_debug_options ();
      D.41036 = D.41035->break_on_unverified;
      if (D.41036 != 0) goto <D.41037>; else goto unverified;
      <D.41037>:
      __asm__ __volatile__("int $03");
      <D.41030>:
      sp = sp + 4294967292;
      D.40749 = ip + 4;
      if (D.40749 > end) goto <D.41038>; else goto <D.41039>;
      <D.41038>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.41040>; else goto <D.41041>;
      <D.41040>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.41042>; else goto <D.41043>;
      <D.41042>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41043>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41041>:
      D.41044 = mini_get_debug_options ();
      D.41045 = D.41044->break_on_unverified;
      if (D.41045 != 0) goto <D.41046>; else goto unverified;
      <D.41046>:
      __asm__ __volatile__("int $03");
      <D.41039>:
      D.40759 = ip + 2;
      D.40760 = *D.40759;
      n = (int) D.40760;
      n.90 = (unsigned int) n;
      D.31093 = header->num_locals;
      D.31443 = (unsigned int) D.31093;
      if (n.90 >= D.31443) goto <D.41047>; else goto <D.41048>;
      <D.41047>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.41049>; else goto <D.41050>;
      <D.41049>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.41051>; else goto <D.41052>;
      <D.41051>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41052>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41050>:
      D.41053 = mini_get_debug_options ();
      D.41054 = D.41053->break_on_unverified;
      if (D.41054 != 0) goto <D.41055>; else goto unverified;
      <D.41055>:
      __asm__ __volatile__("int $03");
      <D.41048>:
      if (dont_verify_stloc == 0) goto <D.41056>; else goto <D.41057>;
      <D.41056>:
      D.31489 = *sp;
      D.31081 = header->locals[n];
      D.41058 = target_type_is_incompatible (cfg, D.31081, D.31489);
      if (D.41058 != 0) goto <D.41059>; else goto <D.41060>;
      <D.41059>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.41061>; else goto <D.41062>;
      <D.41061>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.41063>; else goto <D.41064>;
      <D.41063>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41064>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41062>:
      D.41065 = mini_get_debug_options ();
      D.41066 = D.41065->break_on_unverified;
      if (D.41066 != 0) goto <D.41067>; else goto unverified;
      <D.41067>:
      __asm__ __volatile__("int $03");
      <D.41060>:
      <D.41057>:
      emit_stloc_ir (cfg, sp, header, n);
      ip = ip + 4;
      inline_costs = inline_costs + 1;
      goto <D.28196>;
      <D.28227>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      if (D.31274 <= 3) goto <D.41068>; else goto <D.41069>;
      <D.41068>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.41070>; else goto <D.41071>;
      <D.41070>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.41072>; else goto <D.41073>;
      <D.41072>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41073>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41071>:
      D.41074 = mini_get_debug_options ();
      D.41075 = D.41074->break_on_unverified;
      if (D.41075 != 0) goto <D.41076>; else goto unverified;
      <D.41076>:
      __asm__ __volatile__("int $03");
      <D.41069>:
      sp = sp + 4294967292;
      if (sp != stack_start) goto <D.41077>; else goto <D.41078>;
      <D.41077>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.41079>; else goto <D.41080>;
      <D.41079>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.41081>; else goto <D.41082>;
      <D.41081>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41082>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41080>:
      D.41083 = mini_get_debug_options ();
      D.41084 = D.41083->break_on_unverified;
      if (D.41084 != 0) goto <D.41085>; else goto unverified;
      <D.41085>:
      __asm__ __volatile__("int $03");
      <D.41078>:
      D.30459 = cfg->method;
      if (D.30459 != method) goto inline_failure; else goto <D.41086>;
      <D.41086>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 338;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      D.41087 = alloc_preg (cfg);
      D.41088 = (int) D.41087;
      ins->dreg = D.41088;
      D.31489 = *sp;
      D.31682 = D.31489->dreg;
      ins->sreg1 = D.31682;
      ins->type = 3;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      if (D.30741 != 0B) goto <D.41089>; else goto <D.41090>;
      <D.41089>:
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      D.30741->next = ins;
      bblock.127 = cfg->cbb;
      D.30741 = bblock.127->last_ins;
      ins->prev = D.30741;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      goto <D.41091>;
      <D.41090>:
      bblock.127 = cfg->cbb;
      bblock.127 = cfg->cbb;
      bblock.127->last_ins = ins;
      D.30741 = bblock.127->last_ins;
      bblock.127->code = D.30741;
      <D.41091>:
      D.30919 = cfg->flags;
      D.30920 = D.30919 | 1;
      cfg->flags = D.30920;
      if (init_locals != 0) goto <D.41092>; else goto <D.41093>;
      <D.41092>:
      D.31348 = ins->flags;
      D.41094 = D.31348 | 1;
      ins->flags = D.41094;
      <D.41093>:
      sp.368 = sp;
      sp = sp.368 + 4;
      *sp.368 = ins;
      ip = ip + 2;
      goto <D.28196>;
      <D.28228>:
      {
        struct MonoExceptionClause * clause;
        struct MonoExceptionClause * nearest;
        int cc;
        int nearest_num;

        sp.85 = (int) sp;
        stack_start.86 = (int) stack_start;
        D.31274 = sp.85 - stack_start.86;
        if (D.31274 <= 3) goto <D.41096>; else goto <D.41097>;
        <D.41096>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.41098>; else goto <D.41099>;
        <D.41098>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.41100>; else goto <D.41101>;
        <D.41100>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.41101>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.41099>:
        D.41102 = mini_get_debug_options ();
        D.41103 = D.41102->break_on_unverified;
        if (D.41103 != 0) goto <D.41104>; else goto unverified;
        <D.41104>:
        __asm__ __volatile__("int $03");
        <D.41097>:
        sp = sp + 4294967292;
        if (sp != stack_start) goto <D.41105>; else goto <D.41107>;
        <D.41107>:
        D.31489 = *sp;
        D.32169 = D.31489->type;
        if (D.32169 != 1) goto <D.41105>; else goto <D.41106>;
        <D.41105>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.41108>; else goto <D.41109>;
        <D.41108>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.41110>; else goto <D.41111>;
        <D.41110>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.41111>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.41109>:
        D.41112 = mini_get_debug_options ();
        D.41113 = D.41112->break_on_unverified;
        if (D.41113 != 0) goto <D.41114>; else goto unverified;
        <D.41114>:
        __asm__ __volatile__("int $03");
        <D.41106>:
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        ins->opcode = 741;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        D.31489 = *sp;
        D.31682 = D.31489->dreg;
        ins->sreg1 = D.31682;
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        if (D.30826 != 0B) goto <D.41115>; else goto <D.41116>;
        <D.41115>:
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        D.30826->next = ins;
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        ins->prev = D.30826;
        bblock.78 = bblock;
        bblock.78->last_ins = ins;
        goto <D.41117>;
        <D.41116>:
        bblock.78 = bblock;
        bblock.78 = bblock;
        bblock.78->last_ins = ins;
        D.30826 = bblock.78->last_ins;
        bblock.78->code = D.30826;
        <D.41117>:
        start_new_bblock = 1;
        ip = ip + 2;
        nearest = 0B;
        nearest_num = 0;
        cc = 0;
        goto <D.28234>;
        <D.28233>:
        D.30617 = header->clauses;
        cc.369 = (unsigned int) cc;
        D.41119 = cc.369 * 24;
        clause = D.30617 + D.41119;
        D.41122 = clause->flags;
        D.41123 = D.41122 & 1;
        if (D.41123 != 0) goto <D.41124>; else goto <D.41125>;
        <D.41124>:
        ip.83 = (int) ip;
        D.30636 = header->code;
        D.31196 = (int) D.30636;
        D.31197 = ip.83 - D.31196;
        D.39189 = (unsigned int) D.31197;
        D.41126 = clause->data.filter_offset;
        if (D.39189 > D.41126) goto <D.41127>; else goto <D.41128>;
        <D.41127>:
        ip.83 = (int) ip;
        D.30636 = header->code;
        D.31196 = (int) D.30636;
        D.31197 = ip.83 - D.31196;
        D.39189 = (unsigned int) D.31197;
        D.41129 = clause->handler_offset;
        if (D.39189 <= D.41129) goto <D.41130>; else goto <D.41131>;
        <D.41130>:
        if (nearest == 0B) goto <D.41120>; else goto <D.41132>;
        <D.41132>:
        D.41126 = clause->data.filter_offset;
        D.41133 = nearest->data.filter_offset;
        if (D.41126 < D.41133) goto <D.41120>; else goto <D.41121>;
        <D.41120>:
        nearest = clause;
        nearest_num = cc;
        <D.41121>:
        <D.41131>:
        <D.41128>:
        <D.41125>:
        cc = cc + 1;
        <D.28234>:
        D.30806 = header->num_clauses;
        D.30807 = (int) D.30806;
        if (D.30807 > cc) goto <D.28233>; else goto <D.28235>;
        <D.28235>:
        D.41134 = nearest == 0B;
        D.41135 = (long int) D.41134;
        D.41136 = __builtin_expect (D.41135, 0);
        if (D.41136 != 0) goto <D.41137>; else goto <D.41138>;
        <D.41137>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11690, "nearest");
        <D.41138>:
        ip.83 = (int) ip;
        D.30636 = header->code;
        D.31196 = (int) D.30636;
        D.31197 = ip.83 - D.31196;
        D.39189 = (unsigned int) D.31197;
        D.41139 = nearest->handler_offset;
        if (D.39189 != D.41139) goto <D.41140>; else goto <D.41141>;
        <D.41140>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.41142>; else goto <D.41143>;
        <D.41142>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.41144>; else goto <D.41145>;
        <D.41144>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.41145>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.41143>:
        D.41146 = mini_get_debug_options ();
        D.41147 = D.41146->break_on_unverified;
        if (D.41147 != 0) goto <D.41148>; else goto unverified;
        <D.41148>:
        __asm__ __volatile__("int $03");
        <D.41141>:
        goto <D.28196>;
      }
      <D.28236>:
      ins_flag = ins_flag | 8;
      D.41149 = ip + 3;
      if (D.41149 > end) goto <D.41150>; else goto <D.41151>;
      <D.41150>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.41152>; else goto <D.41153>;
      <D.41152>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.41154>; else goto <D.41155>;
      <D.41154>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41155>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41153>:
      D.41156 = mini_get_debug_options ();
      D.41157 = D.41156->break_on_unverified;
      if (D.41157 != 0) goto <D.41158>; else goto unverified;
      <D.41158>:
      __asm__ __volatile__("int $03");
      <D.41151>:
      ip = ip + 3;
      goto <D.28196>;
      <D.28237>:
      ins_flag = ins_flag | 4;
      ip = ip + 2;
      goto <D.28196>;
      <D.28238>:
      ins_flag = ins_flag | 4;
      D.30919 = cfg->flags;
      D.41159 = D.30919 | 16;
      cfg->flags = D.41159;
      inline_costs = inline_costs + 100000;
      ip = ip + 2;
      goto <D.28196>;
      <D.28239>:
      sp.85 = (int) sp;
      stack_start.86 = (int) stack_start;
      D.31274 = sp.85 - stack_start.86;
      if (D.31274 <= 3) goto <D.41160>; else goto <D.41161>;
      <D.41160>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.41162>; else goto <D.41163>;
      <D.41162>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.41164>; else goto <D.41165>;
      <D.41164>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41165>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41163>:
      D.41166 = mini_get_debug_options ();
      D.41167 = D.41166->break_on_unverified;
      if (D.41167 != 0) goto <D.41168>; else goto unverified;
      <D.41168>:
      __asm__ __volatile__("int $03");
      <D.41161>:
      sp = sp + 4294967292;
      D.35322 = ip + 6;
      if (D.35322 > end) goto <D.41169>; else goto <D.41170>;
      <D.41169>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.41171>; else goto <D.41172>;
      <D.41171>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.41173>; else goto <D.41174>;
      <D.41173>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41174>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41172>:
      D.41175 = mini_get_debug_options ();
      D.41176 = D.41175->break_on_unverified;
      if (D.41176 != 0) goto <D.41177>; else goto unverified;
      <D.41177>:
      __asm__ __volatile__("int $03");
      <D.41170>:
      token = MEM[(const guint32 *)ip + 2B];
      klass.370 = mini_get_class (method, token, generic_context);
      klass = klass.370;
      klass.173 = klass;
      if (klass.173 == 0B) goto <D.41179>; else goto <D.41181>;
      <D.41181>:
      klass.173 = klass;
      D.35265 = klass.173->exception_type;
      if (D.35265 != 0) goto <D.41179>; else goto <D.41180>;
      <D.41179>:
      klass.173 = klass;
      cfg->exception_ptr = klass.173;
      D.41182 = mini_get_debug_options ();
      D.41183 = D.41182->break_on_unverified;
      if (D.41183 != 0) goto <D.41184>; else goto load_error;
      <D.41184>:
      __asm__ __volatile__("int $03");
      <D.41180>:
      klass.173 = klass;
      D.41185 = generic_class_is_reference_type (cfg, klass.173);
      if (D.41185 != 0) goto <D.41186>; else goto <D.41187>;
      <D.41186>:
      {
        struct MonoInst * inst;

        D.30489 = cfg->mempool;
        inst = mono_mempool_alloc (D.30489, 48);
        inst->data.op[1].const_val = 0;
        D.41188 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.41188;
        inst->prev = 0B;
        D.41189 = inst->prev;
        inst->next = D.41189;
        inst->opcode = 384;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.41190 = inst->sreg3;
        inst->sreg2 = D.41190;
        D.41191 = inst->sreg2;
        inst->sreg1 = D.41191;
        D.30712 = cfg->ip;
        inst->cil_code = D.30712;
        D.31489 = *sp;
        D.31682 = D.31489->dreg;
        inst->dreg = D.31682;
        inst->data.op[0].const_val = 0;
        inst->data.op[1].const_val = 0;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.41192>; else goto <D.41193>;
        <D.41192>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = inst;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        inst->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = inst;
        goto <D.41194>;
        <D.41193>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = inst;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.41194>:
      }
      goto <D.41195>;
      <D.41187>:
      klass.173 = klass;
      D.31489 = *sp;
      mini_emit_initobj (cfg, D.31489, 0B, klass.173);
      <D.41195>:
      ip = ip + 6;
      inline_costs = inline_costs + 1;
      goto <D.28196>;
      <D.28241>:
      D.35322 = ip + 6;
      if (D.35322 > end) goto <D.41196>; else goto <D.41197>;
      <D.41196>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.41198>; else goto <D.41199>;
      <D.41198>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.41200>; else goto <D.41201>;
      <D.41200>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41201>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41199>:
      D.41202 = mini_get_debug_options ();
      D.41203 = D.41202->break_on_unverified;
      if (D.41203 != 0) goto <D.41204>; else goto unverified;
      <D.41204>:
      __asm__ __volatile__("int $03");
      <D.41197>:
      token = MEM[(const guint32 *)ip + 2B];
      constrained_call = mini_get_class (method, token, generic_context);
      if (constrained_call == 0B) goto <D.41205>; else goto <D.41207>;
      <D.41207>:
      D.32834 = constrained_call->exception_type;
      if (D.32834 != 0) goto <D.41205>; else goto <D.41206>;
      <D.41205>:
      cfg->exception_ptr = constrained_call;
      D.41208 = mini_get_debug_options ();
      D.41209 = D.41208->break_on_unverified;
      if (D.41209 != 0) goto <D.41210>; else goto load_error;
      <D.41210>:
      __asm__ __volatile__("int $03");
      <D.41206>:
      ip = ip + 6;
      goto <D.28196>;
      <D.28242>:
      <D.28243>:
      {
        struct MonoInst * iargs[3];

        try
          {
            sp.85 = (int) sp;
            stack_start.86 = (int) stack_start;
            D.31274 = sp.85 - stack_start.86;
            if (D.31274 <= 11) goto <D.41211>; else goto <D.41212>;
            <D.41211>:
            D.30637 = cfg->gsharedvt;
            if (D.30637 != 0) goto <D.41213>; else goto <D.41214>;
            <D.41213>:
            D.30569 = cfg->verbose_level;
            if (D.30569 > 2) goto <D.41215>; else goto <D.41216>;
            <D.41215>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.41216>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.41214>:
            D.41217 = mini_get_debug_options ();
            D.41218 = D.41217->break_on_unverified;
            if (D.41218 != 0) goto <D.41219>; else goto unverified;
            <D.41219>:
            __asm__ __volatile__("int $03");
            <D.41212>:
            sp = sp + 4294967284;
            D.31519 = ip + 1;
            D.31520 = *D.31519;
            if (D.31520 == 23) goto <D.41222>; else goto <D.41220>;
            <D.41222>:
            D.30881 = cfg->opt;
            D.32932 = D.30881 & 2048;
            if (D.32932 != 0) goto <D.41223>; else goto <D.41220>;
            <D.41223>:
            D.41224 = sp + 8;
            D.41225 = *D.41224;
            D.41226 = D.41225->opcode;
            if (D.41226 == 362) goto <D.41227>; else goto <D.41220>;
            <D.41227>:
            D.41224 = sp + 8;
            D.41225 = *D.41224;
            n = D.41225->data.op[0].const_val;
            n.90 = (unsigned int) n;
            if (n.90 <= 20) goto <D.41228>; else goto <D.41220>;
            <D.41228>:
            D.41224 = sp + 8;
            D.41225 = *D.41224;
            D.41229 = D.41225->data.op[0].const_val;
            D.32655 = sp + 4;
            D.32656 = *D.32655;
            D.32657 = D.32656->dreg;
            D.31489 = *sp;
            D.31682 = D.31489->dreg;
            mini_emit_memcpy (cfg, D.31682, 0, D.32657, 0, D.41229, 0);
            goto <D.41221>;
            <D.41220>:
            D.31519 = ip + 1;
            D.31520 = *D.31519;
            if (D.31520 == 24) goto <D.41232>; else goto <D.41230>;
            <D.41232>:
            D.30881 = cfg->opt;
            D.32932 = D.30881 & 2048;
            if (D.32932 != 0) goto <D.41233>; else goto <D.41230>;
            <D.41233>:
            D.41224 = sp + 8;
            D.41225 = *D.41224;
            D.41226 = D.41225->opcode;
            if (D.41226 == 362) goto <D.41234>; else goto <D.41230>;
            <D.41234>:
            D.41224 = sp + 8;
            D.41225 = *D.41224;
            n = D.41225->data.op[0].const_val;
            n.90 = (unsigned int) n;
            if (n.90 <= 20) goto <D.41235>; else goto <D.41230>;
            <D.41235>:
            D.32655 = sp + 4;
            D.32656 = *D.32655;
            D.34936 = D.32656->opcode;
            if (D.34936 == 362) goto <D.41236>; else goto <D.41230>;
            <D.41236>:
            D.32655 = sp + 4;
            D.32656 = *D.32655;
            D.34961 = D.32656->data.op[0].const_val;
            if (D.34961 == 0) goto <D.41237>; else goto <D.41230>;
            <D.41237>:
            D.32655 = sp + 4;
            D.32656 = *D.32655;
            D.34961 = D.32656->data.op[0].const_val;
            D.41224 = sp + 8;
            D.41225 = *D.41224;
            D.41229 = D.41225->data.op[0].const_val;
            D.31489 = *sp;
            D.31682 = D.31489->dreg;
            mini_emit_memset (cfg, D.31682, 0, D.41229, D.34961, 0);
            goto <D.41231>;
            <D.41230>:
            D.31489 = *sp;
            iargs[0] = D.31489;
            D.35755 = MEM[(struct MonoInst * *)sp + 4B];
            iargs[1] = D.35755;
            D.41238 = MEM[(struct MonoInst * *)sp + 8B];
            iargs[2] = D.41238;
            D.31519 = ip + 1;
            D.31520 = *D.31519;
            if (D.31520 == 23) goto <D.41239>; else goto <D.41240>;
            <D.41239>:
            {
              struct MonoMethod * memcpy_method;

              memcpy_method = get_memcpy_method ();
              mono_emit_method_call (cfg, memcpy_method, &iargs, 0B);
            }
            goto <D.41241>;
            <D.41240>:
            {
              struct MonoMethod * memset_method;

              memset_method = get_memset_method ();
              mono_emit_method_call (cfg, memset_method, &iargs, 0B);
            }
            <D.41241>:
            <D.41231>:
            <D.41221>:
            ip = ip + 2;
            inline_costs = inline_costs + 1;
            goto <D.28196>;
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      <D.28247>:
      D.41149 = ip + 3;
      if (D.41149 > end) goto <D.41242>; else goto <D.41243>;
      <D.41242>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.41244>; else goto <D.41245>;
      <D.41244>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.41246>; else goto <D.41247>;
      <D.41246>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41247>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41245>:
      D.41248 = mini_get_debug_options ();
      D.41249 = D.41248->break_on_unverified;
      if (D.41249 != 0) goto <D.41250>; else goto unverified;
      <D.41250>:
      __asm__ __volatile__("int $03");
      <D.41243>:
      D.31500 = ip + 2;
      D.41251 = *D.31500;
      D.41252 = (int) D.41251;
      D.41253 = D.41252 & 1;
      if (D.41253 != 0) goto <D.41254>; else goto <D.41255>;
      <D.41254>:
      ins_flag = ins_flag | 4;
      <D.41255>:
      D.31500 = ip + 2;
      D.41251 = *D.31500;
      D.41252 = (int) D.41251;
      D.41256 = D.41252 & 2;
      if (D.41256 != 0) goto <D.41257>; else goto <D.41258>;
      <D.41257>:
      ins_flag = ins_flag | 16;
      <D.41258>:
      ip = ip + 3;
      goto <D.28196>;
      <D.28248>:
      {
        struct MonoInst * load;
        int handler_offset;

        handler_offset = -1;
        i = 0;
        goto <D.28254>;
        <D.28253>:
        {
          struct MonoExceptionClause * clause;

          D.30617 = header->clauses;
          i.76 = (unsigned int) i;
          D.30619 = i.76 * 24;
          clause = D.30617 + D.30619;
          D.41259 = clause->handler_offset;
          ip.83 = (int) ip;
          D.30636 = header->code;
          D.31196 = (int) D.30636;
          D.31197 = ip.83 - D.31196;
          D.39189 = (unsigned int) D.31197;
          if (D.41259 <= D.39189) goto <D.41260>; else goto <D.41261>;
          <D.41260>:
          ip.83 = (int) ip;
          D.30636 = header->code;
          D.31196 = (int) D.30636;
          D.31197 = ip.83 - D.31196;
          D.39189 = (unsigned int) D.31197;
          D.41259 = clause->handler_offset;
          D.41262 = clause->handler_len;
          D.41263 = D.41259 + D.41262;
          if (D.39189 < D.41263) goto <D.41264>; else goto <D.41265>;
          <D.41264>:
          D.41266 = clause->flags;
          D.41267 = D.41266 & 2;
          if (D.41267 == 0) goto <D.41268>; else goto <D.41269>;
          <D.41268>:
          D.41259 = clause->handler_offset;
          handler_offset = (int) D.41259;
          goto <D.28252>;
          <D.41269>:
          <D.41265>:
          <D.41261>:
        }
        i = i + 1;
        <D.28254>:
        D.30806 = header->num_clauses;
        D.30807 = (int) D.30806;
        if (D.30807 > i) goto <D.28253>; else goto <D.28252>;
        <D.28252>:
        bblock.78 = bblock;
        bblock.78 = bblock;
        D.41270 = bblock.78->flags;
        D.41271 = D.41270 | 8;
        bblock.78->flags = D.41271;
        D.41272 = handler_offset == -1;
        D.41273 = (long int) D.41272;
        D.41274 = __builtin_expect (D.41273, 0);
        if (D.41274 != 0) goto <D.41275>; else goto <D.41276>;
        <D.41275>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11786, "handler_offset != -1");
        <D.41276>:
        D.30489 = cfg->mempool;
        load = mono_mempool_alloc (D.30489, 48);
        load->data.op[1].const_val = 0;
        D.41277 = load->data.op[1].const_val;
        load->data.op[0].const_val = D.41277;
        load->prev = 0B;
        D.41278 = load->prev;
        load->next = D.41278;
        load->opcode = 428;
        load->flags = 0;
        load->type = 0;
        load->dreg = -1;
        load->sreg3 = -1;
        D.41279 = load->sreg3;
        load->sreg2 = D.41279;
        D.41280 = load->sreg2;
        load->sreg1 = D.41280;
        D.30712 = cfg->ip;
        load->cil_code = D.30712;
        D.31239 = cfg->varinfo;
        D.41281 = mono_find_exvar_for_offset (cfg, handler_offset);
        D.41282 = D.41281->data.op[0].const_val;
        D.41283 = (unsigned int) D.41282;
        D.41284 = D.41283 * 4;
        D.41285 = D.31239 + D.41284;
        D.41286 = *D.41285;
        D.41287 = D.41286->data.op[1].vtype;
        D.41288 = mono_type_to_regmove (cfg, D.41287);
        D.41289 = (short unsigned int) D.41288;
        load->opcode = D.41289;
        D.31239 = cfg->varinfo;
        D.41290 = mono_find_exvar_for_offset (cfg, handler_offset);
        D.41291 = D.41290->data.op[0].const_val;
        D.41292 = (unsigned int) D.41291;
        D.41293 = D.41292 * 4;
        D.41294 = D.31239 + D.41293;
        D.41295 = *D.41294;
        D.41296 = D.41295->data.op[1].vtype;
        type_to_eval_stack_type (cfg, D.41296, load);
        D.31239 = cfg->varinfo;
        D.41297 = mono_find_exvar_for_offset (cfg, handler_offset);
        D.41298 = D.41297->data.op[0].const_val;
        D.41299 = (unsigned int) D.41298;
        D.41300 = D.41299 * 4;
        D.41301 = D.31239 + D.41300;
        D.41302 = *D.41301;
        D.41303 = D.41302->klass;
        load->klass = D.41303;
        D.31239 = cfg->varinfo;
        D.41304 = mono_find_exvar_for_offset (cfg, handler_offset);
        D.41305 = D.41304->data.op[0].const_val;
        D.41306 = (unsigned int) D.41305;
        D.41307 = D.41306 * 4;
        D.41308 = D.31239 + D.41307;
        D.41309 = *D.41308;
        D.41310 = D.41309->dreg;
        load->sreg1 = D.41310;
        D.41311 = load->type;
        D.41312 = (<unnamed type>) D.41311;
        D.41313 = alloc_dreg (cfg, D.41312);
        D.41314 = (int) D.41313;
        load->dreg = D.41314;
        D.41315 = load->opcode;
        if (D.41315 == 431) goto <D.41316>; else goto <D.41317>;
        <D.41316>:
        D.31239 = cfg->varinfo;
        D.41318 = mono_find_exvar_for_offset (cfg, handler_offset);
        D.41319 = D.41318->data.op[0].const_val;
        D.41320 = (unsigned int) D.41319;
        D.41321 = D.41320 * 4;
        D.41322 = D.31239 + D.41321;
        D.41323 = *D.41322;
        D.41324 = D.41323->data.op[1].vtype;
        D.41325 = mono_class_from_mono_type (D.41324);
        load->klass = D.41325;
        <D.41317>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.41326>; else goto <D.41327>;
        <D.41326>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = load;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        load->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = load;
        goto <D.41328>;
        <D.41327>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = load;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.41328>:
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        ins->opcode = 372;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        D.41329 = load->dreg;
        ins->sreg1 = D.41329;
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        if (D.30826 != 0B) goto <D.41330>; else goto <D.41331>;
        <D.41330>:
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        D.30826->next = ins;
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        ins->prev = D.30826;
        bblock.78 = bblock;
        bblock.78->last_ins = ins;
        goto <D.41332>;
        <D.41331>:
        bblock.78 = bblock;
        bblock.78 = bblock;
        bblock.78->last_ins = ins;
        D.30826 = bblock.78->last_ins;
        bblock.78->code = D.30826;
        <D.41332>:
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        ins->opcode = 802;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        if (D.30826 != 0B) goto <D.41333>; else goto <D.41334>;
        <D.41333>:
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        D.30826->next = ins;
        bblock.78 = bblock;
        D.30826 = bblock.78->last_ins;
        ins->prev = D.30826;
        bblock.78 = bblock;
        bblock.78->last_ins = ins;
        goto <D.41335>;
        <D.41334>:
        bblock.78 = bblock;
        bblock.78 = bblock;
        bblock.78->last_ins = ins;
        D.30826 = bblock.78->last_ins;
        bblock.78->code = D.30826;
        <D.41335>:
        sp = stack_start;
        bblock.78 = bblock;
        link_bblock (cfg, bblock.78, end_bblock);
        start_new_bblock = 1;
        ip = ip + 2;
        goto <D.28196>;
      }
      <D.28255>:
      {
        guint32 val;
        int ialign;

        try
          {
            D.30637 = cfg->gsharedvt;
            if (D.30637 != 0) goto <D.41336>; else goto <D.41337>;
            <D.41336>:
            D.31371 = *ip;
            D.31372 = (int) D.31371;
            D.41338 = mono_opcode_name (D.31372);
            D.32188 = method->signature;
            D.32189 = D.32188->param_count;
            D.32190 = (int) D.32189;
            D.32191 = method->name;
            D.30426 = method->klass;
            D.32192 = D.30426->name;
            D.30426 = method->klass;
            D.32193 = D.30426->name_space;
            D.41339 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.32193, D.32192, D.32191, D.32190, D.41338, "method-to-ir.c", 11806);
            cfg->exception_message = D.41339;
            D.30569 = cfg->verbose_level;
            if (D.30569 > 1) goto <D.41340>; else goto <D.41341>;
            <D.41340>:
            D.32197 = cfg->exception_message;
            printf ("%s\n", D.32197);
            <D.41341>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.41337>:
            sp.85 = (int) sp;
            stack_start.86 = (int) stack_start;
            D.31274 = sp.85 - stack_start.86;
            D.31275 = D.31274 /[ex] 4;
            D.31188 = header->max_stack;
            D.31189 = (int) D.31188;
            if (D.31275 >= D.31189) goto <D.41342>; else goto <D.41343>;
            <D.41342>:
            D.30637 = cfg->gsharedvt;
            if (D.30637 != 0) goto <D.41344>; else goto <D.41345>;
            <D.41344>:
            D.30569 = cfg->verbose_level;
            if (D.30569 > 2) goto <D.41346>; else goto <D.41347>;
            <D.41346>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.41347>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.41345>:
            D.41348 = mini_get_debug_options ();
            D.41349 = D.41348->break_on_unverified;
            if (D.41349 != 0) goto <D.41350>; else goto unverified;
            <D.41350>:
            __asm__ __volatile__("int $03");
            <D.41343>:
            D.35322 = ip + 6;
            if (D.35322 > end) goto <D.41351>; else goto <D.41352>;
            <D.41351>:
            D.30637 = cfg->gsharedvt;
            if (D.30637 != 0) goto <D.41353>; else goto <D.41354>;
            <D.41353>:
            D.30569 = cfg->verbose_level;
            if (D.30569 > 2) goto <D.41355>; else goto <D.41356>;
            <D.41355>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.41356>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.41354>:
            D.41357 = mini_get_debug_options ();
            D.41358 = D.41357->break_on_unverified;
            if (D.41358 != 0) goto <D.41359>; else goto unverified;
            <D.41359>:
            __asm__ __volatile__("int $03");
            <D.41352>:
            token = MEM[(const guint32 *)ip + 2B];
            D.41362 = token >> 24;
            if (D.41362 == 27) goto <D.41363>; else goto <D.41360>;
            <D.41363>:
            D.30426 = method->klass;
            D.30427 = D.30426->image;
            D.41364 = BIT_FIELD_REF <*D.30427, 8, 128>;
            D.41365 = D.41364 & 8;
            if (D.41365 == 0) goto <D.41366>; else goto <D.41360>;
            <D.41366>:
            if (generic_context == 0B) goto <D.41367>; else goto <D.41360>;
            <D.41367>:
            {
              struct MonoType * type;

              type = mono_type_create_from_typespec (image, token);
              D.41368 = mono_type_size (type, &ialign);
              val = (guint32) D.41368;
            }
            goto <D.41361>;
            <D.41360>:
            {
              struct MonoClass * klass;

              klass = mono_class_get_full (image, token, generic_context);
              if (klass == 0B) goto <D.41369>; else goto <D.41371>;
              <D.41371>:
              D.41372 = klass->exception_type;
              if (D.41372 != 0) goto <D.41369>; else goto <D.41370>;
              <D.41369>:
              cfg->exception_ptr = klass;
              D.41373 = mini_get_debug_options ();
              D.41374 = D.41373->break_on_unverified;
              if (D.41374 != 0) goto <D.41375>; else goto load_error;
              <D.41375>:
              __asm__ __volatile__("int $03");
              <D.41370>:
              mono_class_init (klass);
              D.41376 = &klass->byval_arg;
              D.41377 = mono_type_size (D.41376, &ialign);
              val = (guint32) D.41377;
            }
            <D.41361>:
            D.30489 = cfg->mempool;
            ins = mono_mempool_alloc (D.30489, 48);
            ins->data.op[1].const_val = 0;
            D.30708 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.30708;
            ins->prev = 0B;
            D.30709 = ins->prev;
            ins->next = D.30709;
            ins->opcode = 362;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.30710 = ins->sreg3;
            ins->sreg2 = D.30710;
            D.30711 = ins->sreg2;
            ins->sreg1 = D.30711;
            D.30712 = cfg->ip;
            ins->cil_code = D.30712;
            val.371 = (int) val;
            ins->data.op[0].const_val = val.371;
            ins->type = 1;
            D.41379 = alloc_dreg (cfg, 1);
            D.41380 = (int) D.41379;
            ins->dreg = D.41380;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            if (D.30741 != 0B) goto <D.41381>; else goto <D.41382>;
            <D.41381>:
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            D.30741->next = ins;
            bblock.127 = cfg->cbb;
            D.30741 = bblock.127->last_ins;
            ins->prev = D.30741;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = ins;
            goto <D.41383>;
            <D.41382>:
            bblock.127 = cfg->cbb;
            bblock.127 = cfg->cbb;
            bblock.127->last_ins = ins;
            D.30741 = bblock.127->last_ins;
            bblock.127->code = D.30741;
            <D.41383>:
            sp.372 = sp;
            sp = sp.372 + 4;
            *sp.372 = ins;
            ip = ip + 6;
            goto <D.28196>;
          }
        finally
          {
            ialign = {CLOBBER};
          }
      }
      <D.28260>:
      {
        struct MonoInst * src_var;
        struct MonoInst * src;

        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.41385>; else goto <D.41386>;
        <D.41385>:
        D.31371 = *ip;
        D.31372 = (int) D.31371;
        D.41387 = mono_opcode_name (D.31372);
        D.32188 = method->signature;
        D.32189 = D.32188->param_count;
        D.32190 = (int) D.32189;
        D.32191 = method->name;
        D.30426 = method->klass;
        D.32192 = D.30426->name;
        D.30426 = method->klass;
        D.32193 = D.30426->name_space;
        D.41388 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.32193, D.32192, D.32191, D.32190, D.41387, "method-to-ir.c", 11828);
        cfg->exception_message = D.41388;
        D.30569 = cfg->verbose_level;
        if (D.30569 > 1) goto <D.41389>; else goto <D.41390>;
        <D.41389>:
        D.32197 = cfg->exception_message;
        printf ("%s\n", D.32197);
        <D.41390>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.41386>:
        sp.85 = (int) sp;
        stack_start.86 = (int) stack_start;
        D.31274 = sp.85 - stack_start.86;
        if (D.31274 <= 3) goto <D.41391>; else goto <D.41392>;
        <D.41391>:
        D.30637 = cfg->gsharedvt;
        if (D.30637 != 0) goto <D.41393>; else goto <D.41394>;
        <D.41393>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.41395>; else goto <D.41396>;
        <D.41395>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.41396>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.41394>:
        D.41397 = mini_get_debug_options ();
        D.41398 = D.41397->break_on_unverified;
        if (D.41398 != 0) goto <D.41399>; else goto unverified;
        <D.41399>:
        __asm__ __volatile__("int $03");
        <D.41392>:
        sp = sp + 4294967292;
        D.31489 = *sp;
        D.31682 = D.31489->dreg;
        D.37072 = (unsigned int) D.31682;
        D.31601 = cfg->vreg_to_inst_len;
        if (D.37072 < D.31601) goto <D.41401>; else goto <D.41402>;
        <D.41401>:
        D.31604 = cfg->vreg_to_inst;
        D.31489 = *sp;
        D.31682 = D.31489->dreg;
        D.37075 = (unsigned int) D.31682;
        D.37076 = D.37075 * 4;
        D.37077 = D.31604 + D.37076;
        iftmp.373 = *D.37077;
        goto <D.41403>;
        <D.41402>:
        iftmp.373 = 0B;
        <D.41403>:
        src_var = iftmp.373;
        if (src_var == 0B) goto <D.41404>; else goto <D.41405>;
        <D.41404>:
        D.31489 = *sp;
        D.31682 = D.31489->dreg;
        D.38405 = mono_defaults.typed_reference_class;
        D.38406 = &D.38405->byval_arg;
        src_var = mono_compile_create_var_for_vreg (cfg, D.38406, 329, D.31682);
        <D.41405>:
        D.30489 = cfg->mempool;
        src = mono_mempool_alloc (D.30489, 48);
        src->data.op[1].const_val = 0;
        D.41406 = src->data.op[1].const_val;
        src->data.op[0].const_val = D.41406;
        src->prev = 0B;
        D.41407 = src->prev;
        src->next = D.41407;
        src->opcode = 314;
        src->flags = 0;
        src->type = 0;
        src->dreg = -1;
        src->sreg3 = -1;
        D.41408 = src->sreg3;
        src->sreg2 = D.41408;
        D.41409 = src->sreg2;
        src->sreg1 = D.41409;
        D.30712 = cfg->ip;
        src->cil_code = D.30712;
        src->data.op[0].p = src_var;
        D.41410 = src_var->flags;
        D.41411 = D.41410 | 16;
        src_var->flags = D.41411;
        src->type = 5;
        D.41412 = src_var->klass;
        src->klass = D.41412;
        D.41413 = alloc_dreg (cfg, 5);
        D.41414 = (int) D.41413;
        src->dreg = D.41414;
        cfg->has_indirection = 1;
        D.30637 = cfg->gsharedvt;
        D.31575 = D.30637 != 0;
        D.31576 = (long int) D.31575;
        D.31577 = __builtin_expect (D.31576, 0);
        if (D.31577 != 0) goto <D.41415>; else goto <D.41416>;
        <D.41415>:
        D.41417 = src_var->data.op[1].vtype;
        D.41418 = mini_is_gsharedvt_variable_type (cfg, D.41417);
        if (D.41418 != 0) goto <D.41419>; else goto <D.41420>;
        <D.41419>:
        handle_gsharedvt_ldaddr (cfg);
        <D.41420>:
        <D.41416>:
        D.41422 = mono_arch_is_soft_float ();
        if (D.41422 != 0) goto <D.41423>; else goto <D.41424>;
        <D.41423>:
        D.41425 = src_var->type;
        D.41426 = D.41425 == 2;
        D.41427 = D.41425 == 4;
        D.41428 = D.41426 | D.41427;
        D.41429 = (int) D.41428;
        iftmp.374 = (_Bool) D.41429;
        goto <D.41430>;
        <D.41424>:
        D.41431 = src_var->type;
        iftmp.374 = D.41431 == 2;
        <D.41430>:
        if (iftmp.374 != 0) goto <D.41432>; else goto <D.41433>;
        <D.41432>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.41435 = src_var->dreg;
          D.41436 = D.41435 + 1;
          D.41437 = (unsigned int) D.41436;
          D.31601 = cfg->vreg_to_inst_len;
          if (D.41437 < D.31601) goto <D.41438>; else goto <D.41439>;
          <D.41438>:
          D.31604 = cfg->vreg_to_inst;
          D.41435 = src_var->dreg;
          D.41440 = (sizetype) D.41435;
          D.41441 = D.41440 + 1;
          D.41442 = D.41441 * 4;
          D.41443 = D.31604 + D.41442;
          iftmp.375 = *D.41443;
          goto <D.41444>;
          <D.41439>:
          iftmp.375 = 0B;
          <D.41444>:
          var1 = iftmp.375;
          D.41435 = src_var->dreg;
          D.41446 = D.41435 + 2;
          D.41447 = (unsigned int) D.41446;
          D.31601 = cfg->vreg_to_inst_len;
          if (D.41447 < D.31601) goto <D.41448>; else goto <D.41449>;
          <D.41448>:
          D.31604 = cfg->vreg_to_inst;
          D.41435 = src_var->dreg;
          D.41440 = (sizetype) D.41435;
          D.41450 = D.41440 + 2;
          D.41451 = D.41450 * 4;
          D.41452 = D.31604 + D.41451;
          iftmp.376 = *D.41452;
          goto <D.41453>;
          <D.41449>:
          iftmp.376 = 0B;
          <D.41453>:
          var2 = iftmp.376;
          D.41454 = var1 == 0B;
          D.41455 = (long int) D.41454;
          D.41456 = __builtin_expect (D.41455, 0);
          if (D.41456 != 0) goto <D.41457>; else goto <D.41458>;
          <D.41457>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11837, "var1");
          <D.41458>:
          D.41459 = var2 == 0B;
          D.41460 = (long int) D.41459;
          D.41461 = __builtin_expect (D.41460, 0);
          if (D.41461 != 0) goto <D.41462>; else goto <D.41463>;
          <D.41462>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11837, "var2");
          <D.41463>:
          D.41464 = var1->flags;
          D.41465 = D.41464 | 16;
          var1->flags = D.41465;
          D.41466 = var2->flags;
          D.41467 = D.41466 | 16;
          var2->flags = D.41467;
        }
        <D.41433>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.41468>; else goto <D.41469>;
        <D.41468>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = src;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        src->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = src;
        goto <D.41470>;
        <D.41469>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = src;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.41470>:
        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.30708 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30708;
        ins->prev = 0B;
        D.30709 = ins->prev;
        ins->next = D.30709;
        D.38738 = mono_defaults.typehandle_class;
        D.41471 = &D.38738->byval_arg;
        D.41472 = mono_type_to_load_membase (cfg, D.41471);
        D.41473 = (short unsigned int) D.41472;
        ins->opcode = D.41473;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30710 = ins->sreg3;
        ins->sreg2 = D.30710;
        D.30711 = ins->sreg2;
        ins->sreg1 = D.30711;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        ins->dreg = 0;
        D.41474 = src->dreg;
        ins->sreg1 = D.41474;
        ins->data.op[0].const_val = 0;
        ins->type = 1;
        D.38738 = mono_defaults.typehandle_class;
        D.41471 = &D.38738->byval_arg;
        type_to_eval_stack_type (cfg, D.41471, ins);
        D.31249 = ins->type;
        D.31250 = (<unnamed type>) D.31249;
        D.41475 = alloc_dreg (cfg, D.31250);
        D.41476 = (int) D.41475;
        ins->dreg = D.41476;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.41477>; else goto <D.41478>;
        <D.41477>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = ins;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        ins->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        goto <D.41479>;
        <D.41478>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = ins;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.41479>:
        sp.377 = sp;
        sp = sp.377 + 4;
        *sp.377 = ins;
        ip = ip + 2;
        goto <D.28196>;
      }
      <D.28265>:
      readonly = 1;
      ip = ip + 2;
      goto <D.28196>;
      <D.28266>:
      <D.28267>:
      <D.28268>:
      <D.28269>:
      <D.28270>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.41481>; else goto <D.41482>;
      <D.41481>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.41483>; else goto <D.41484>;
      <D.41483>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41484>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41482>:
      D.41485 = mini_get_debug_options ();
      D.41486 = D.41485->break_on_unverified;
      if (D.41486 != 0) goto <D.41487>; else goto unverified;
      <D.41487>:
      __asm__ __volatile__("int $03");
      <D.28271>:
      D.31519 = ip + 1;
      D.31520 = *D.31519;
      D.31850 = (int) D.31520;
      monoeg_g_log (0B, 16, "opcode 0xfe 0x%02x not handled", D.31850);
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.41488>; else goto <D.41489>;
      <D.41488>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.41490>; else goto <D.41491>;
      <D.41490>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41491>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41489>:
      D.41492 = mini_get_debug_options ();
      D.41493 = D.41492->break_on_unverified;
      if (D.41493 != 0) goto <D.41494>; else goto unverified;
      <D.41494>:
      __asm__ __volatile__("int $03");
      <D.28196>:
      goto <D.27380>;
      <D.28272>:
      <D.28273>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.41495>; else goto <D.41496>;
      <D.41495>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.41497>; else goto <D.41498>;
      <D.41497>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41498>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41496>:
      D.41499 = mini_get_debug_options ();
      D.41500 = D.41499->break_on_unverified;
      if (D.41500 != 0) goto <D.41501>; else goto unverified;
      <D.41501>:
      __asm__ __volatile__("int $03");
      <D.28274>:
      D.31371 = *ip;
      D.31372 = (int) D.31371;
      monoeg_g_log (0B, 16, "opcode 0x%02x not handled", D.31372);
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.41502>; else goto <D.41503>;
      <D.41502>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.41504>; else goto <D.41505>;
      <D.41504>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41505>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41503>:
      D.41506 = mini_get_debug_options ();
      D.41507 = D.41506->break_on_unverified;
      if (D.41507 != 0) goto <D.41508>; else goto unverified;
      <D.41508>:
      __asm__ __volatile__("int $03");
      <D.27380>:
      <D.27376>:
      if (ip < end) goto <D.28275>; else goto <D.28276>;
      <D.28276>:
      if (start_new_bblock != 1) goto <D.41509>; else goto <D.41510>;
      <D.41509>:
      D.30637 = cfg->gsharedvt;
      if (D.30637 != 0) goto <D.41511>; else goto <D.41512>;
      <D.41511>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.41513>; else goto <D.41514>;
      <D.41513>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41514>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41512>:
      D.41515 = mini_get_debug_options ();
      D.41516 = D.41515->break_on_unverified;
      if (D.41516 != 0) goto <D.41517>; else goto unverified;
      <D.41517>:
      __asm__ __volatile__("int $03");
      <D.41510>:
      bblock.78 = bblock;
      ip.83 = (int) ip;
      bblock.78 = bblock;
      D.30814 = bblock.78->cil_code;
      D.30817 = (int) D.30814;
      D.31202 = ip.83 - D.30817;
      bblock.78->cil_length = D.31202;
      bblock.78 = bblock;
      D.41518 = bblock.78->next_bb;
      if (D.41518 != 0B) goto <D.41519>; else goto <D.41520>;
      <D.41519>:
      {
        struct MonoBasicBlock * bb;

        bb = bblock;
        goto <D.28279>;
        <D.28278>:
        bb = bb->next_bb;
        <D.28279>:
        D.41521 = bb->next_bb;
        if (D.41521 != 0B) goto <D.28278>; else goto <D.28280>;
        <D.28280>:
        bb->next_bb = end_bblock;
      }
      goto <D.41522>;
      <D.41520>:
      bblock.78 = bblock;
      bblock.78->next_bb = end_bblock;
      <D.41522>:
      D.30459 = cfg->method;
      if (D.30459 == method) goto <D.41523>; else goto <D.41524>;
      <D.41523>:
      D.41525 = cfg->domainvar;
      if (D.41525 != 0B) goto <D.41526>; else goto <D.41527>;
      <D.41526>:
      {
        struct MonoInst * store;
        struct MonoInst * get_domain;

        cfg->cbb = init_localsbb;
        get_domain = mono_get_domain_intrinsic (cfg);
        if (get_domain != 0B) goto <D.41528>; else goto <D.41529>;
        <D.41528>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.41530>; else goto <D.41531>;
        <D.41530>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = get_domain;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        get_domain->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = get_domain;
        goto <D.41532>;
        <D.41531>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = get_domain;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.41532>:
        goto <D.41533>;
        <D.41529>:
        get_domain = mono_emit_jit_icall (cfg, mono_domain_get, 0B);
        <D.41533>:
        D.30489 = cfg->mempool;
        store = mono_mempool_alloc (D.30489, 48);
        store->data.op[1].const_val = 0;
        D.41534 = store->data.op[1].const_val;
        store->data.op[0].const_val = D.41534;
        store->prev = 0B;
        D.41535 = store->prev;
        store->next = D.41535;
        store->opcode = 428;
        store->flags = 0;
        store->type = 0;
        store->dreg = -1;
        store->sreg3 = -1;
        D.41536 = store->sreg3;
        store->sreg2 = D.41536;
        D.41537 = store->sreg2;
        store->sreg1 = D.41537;
        D.30712 = cfg->ip;
        store->cil_code = D.30712;
        D.31239 = cfg->varinfo;
        D.41525 = cfg->domainvar;
        D.41538 = D.41525->data.op[0].const_val;
        D.41539 = (unsigned int) D.41538;
        D.41540 = D.41539 * 4;
        D.41541 = D.31239 + D.41540;
        D.41542 = *D.41541;
        D.41543 = D.41542->data.op[1].vtype;
        D.41544 = mono_type_to_regmove (cfg, D.41543);
        D.41545 = (short unsigned int) D.41544;
        store->opcode = D.41545;
        D.31239 = cfg->varinfo;
        D.41525 = cfg->domainvar;
        D.41538 = D.41525->data.op[0].const_val;
        D.41539 = (unsigned int) D.41538;
        D.41540 = D.41539 * 4;
        D.41541 = D.31239 + D.41540;
        D.41542 = *D.41541;
        D.41546 = D.41542->klass;
        store->klass = D.41546;
        D.41547 = get_domain->dreg;
        store->sreg1 = D.41547;
        D.31239 = cfg->varinfo;
        D.41525 = cfg->domainvar;
        D.41538 = D.41525->data.op[0].const_val;
        D.41539 = (unsigned int) D.41538;
        D.41540 = D.41539 * 4;
        D.41541 = D.31239 + D.41540;
        D.41542 = *D.41541;
        D.41548 = D.41542->dreg;
        store->dreg = D.41548;
        D.41549 = store->opcode;
        if (D.41549 == 431) goto <D.41550>; else goto <D.41551>;
        <D.41550>:
        D.31239 = cfg->varinfo;
        D.41525 = cfg->domainvar;
        D.41538 = D.41525->data.op[0].const_val;
        D.41539 = (unsigned int) D.41538;
        D.41540 = D.41539 * 4;
        D.41541 = D.31239 + D.41540;
        D.41542 = *D.41541;
        D.41543 = D.41542->data.op[1].vtype;
        D.41552 = mono_class_from_mono_type (D.41543);
        store->klass = D.41552;
        <D.41551>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        if (D.30741 != 0B) goto <D.41553>; else goto <D.41554>;
        <D.41553>:
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        D.30741->next = store;
        bblock.127 = cfg->cbb;
        D.30741 = bblock.127->last_ins;
        store->prev = D.30741;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = store;
        goto <D.41555>;
        <D.41554>:
        bblock.127 = cfg->cbb;
        bblock.127 = cfg->cbb;
        bblock.127->last_ins = store;
        D.30741 = bblock.127->last_ins;
        bblock.127->code = D.30741;
        <D.41555>:
      }
      <D.41527>:
      <D.41524>:
      D.30883 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.30884 = D.30883 & 64;
      if (D.30884 != 0) goto <D.41556>; else goto <D.41557>;
      <D.41556>:
      mono_get_got_var (cfg);
      <D.41557>:
      D.30459 = cfg->method;
      if (D.30459 == method) goto <D.41558>; else goto <D.41559>;
      <D.41558>:
      D.41560 = cfg->got_var;
      if (D.41560 != 0B) goto <D.41561>; else goto <D.41562>;
      <D.41561>:
      mono_emit_load_got_addr (cfg);
      <D.41562>:
      <D.41559>:
      if (init_locals != 0) goto <D.41563>; else goto <D.41564>;
      <D.41563>:
      cfg->cbb = init_localsbb;
      cfg->ip = 0B;
      i = 0;
      goto <D.28284>;
      <D.28283>:
      D.41565 = header->locals[i];
      emit_init_local (cfg, i, D.41565);
      i = i + 1;
      <D.28284>:
      D.31093 = header->num_locals;
      D.31094 = (int) D.31093;
      if (D.31094 > i) goto <D.28283>; else goto <D.28285>;
      <D.28285>:
      <D.41564>:
      D.33752 = BIT_FIELD_REF <*cfg, 8, 3416>;
      D.41566 = D.33752 & 32;
      if (D.41566 != 0) goto <D.41567>; else goto <D.41568>;
      <D.41567>:
      D.30459 = cfg->method;
      if (D.30459 == method) goto <D.41569>; else goto <D.41570>;
      <D.41569>:
      i = 0;
      goto <D.28289>;
      <D.28288>:
      {
        struct MonoInst * ins;

        D.31239 = cfg->varinfo;
        i.76 = (unsigned int) i;
        D.31235 = i.76 * 4;
        D.41571 = D.31239 + D.31235;
        ins = *D.41571;
        D.41572 = BIT_FIELD_REF <*ins, 32, 0>;
        D.41573 = D.41572 & 16777215;
        if (D.41573 == 393545) goto <D.41574>; else goto <D.41575>;
        <D.41574>:
        {
          struct MonoInst * inst;

          D.30489 = cfg->mempool;
          inst = mono_mempool_alloc (D.30489, 48);
          inst->data.op[1].const_val = 0;
          D.41576 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.41576;
          inst->prev = 0B;
          D.41577 = inst->prev;
          inst->next = D.41577;
          inst->opcode = 362;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.41578 = inst->sreg3;
          inst->sreg2 = D.41578;
          D.41579 = inst->sreg2;
          inst->sreg1 = D.41579;
          D.30712 = cfg->ip;
          inst->cil_code = D.30712;
          D.41580 = ins->dreg;
          inst->dreg = D.41580;
          inst->data.op[0].p = 0B;
          inst->type = 3;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          if (D.30741 != 0B) goto <D.41581>; else goto <D.41582>;
          <D.41581>:
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          D.30741->next = inst;
          bblock.127 = cfg->cbb;
          D.30741 = bblock.127->last_ins;
          inst->prev = D.30741;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          goto <D.41583>;
          <D.41582>:
          bblock.127 = cfg->cbb;
          bblock.127 = cfg->cbb;
          bblock.127->last_ins = inst;
          D.30741 = bblock.127->last_ins;
          bblock.127->code = D.30741;
          <D.41583>:
        }
        <D.41575>:
      }
      i = i + 1;
      <D.28289>:
      i.117 = (unsigned int) i;
      D.41584 = cfg->num_varinfo;
      if (i.117 < D.41584) goto <D.28288>; else goto <D.28290>;
      <D.28290>:
      <D.41570>:
      <D.41568>:
      D.34071 = cfg->lmf_var;
      if (D.34071 != 0B) goto <D.41585>; else goto <D.41586>;
      <D.41585>:
      D.30459 = cfg->method;
      if (D.30459 == method) goto <D.41587>; else goto <D.41588>;
      <D.41587>:
      cfg->cbb = init_localsbb;
      emit_push_lmf (cfg);
      <D.41588>:
      <D.41586>:
      if (seq_points != 0) goto <D.41589>; else goto <D.41590>;
      <D.41589>:
      {
        struct MonoBasicBlock * bb;

        bb = cfg->bb_entry;
        goto <D.28293>;
        <D.28292>:
        D.41591 = bb->code;
        if (D.41591 != 0B) goto <D.41592>; else goto <D.41593>;
        <D.41592>:
        D.41594 = bb->in_count;
        if (D.41594 > 1) goto <D.41595>; else goto <D.41596>;
        <D.41595>:
        D.41591 = bb->code;
        D.41597 = D.41591->opcode;
        if (D.41597 == 341) goto <D.41598>; else goto <D.41599>;
        <D.41598>:
        D.41591 = bb->code;
        D.41591 = bb->code;
        D.41600 = D.41591->flags;
        D.41601 = D.41600 | 1;
        D.41591->flags = D.41601;
        <D.41599>:
        <D.41596>:
        <D.41593>:
        bb = bb->next_bb;
        <D.28293>:
        if (bb != 0B) goto <D.28292>; else goto <D.28294>;
        <D.28294>:
      }
      <D.41590>:
      if (seq_points != 0) goto <D.41602>; else goto <D.41603>;
      <D.41602>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 341;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      ins->data.op[1].const_val = -1;
      ins->flags = 0;
      D.41604 = init_localsbb->last_ins;
      if (D.41604 != 0B) goto <D.41605>; else goto <D.41606>;
      <D.41605>:
      D.41604 = init_localsbb->last_ins;
      D.41604->next = ins;
      D.41604 = init_localsbb->last_ins;
      ins->prev = D.41604;
      init_localsbb->last_ins = ins;
      goto <D.41607>;
      <D.41606>:
      init_localsbb->last_ins = ins;
      D.41604 = init_localsbb->last_ins;
      init_localsbb->code = D.41604;
      <D.41607>:
      D.30489 = cfg->mempool;
      ins = mono_mempool_alloc (D.30489, 48);
      ins->data.op[1].const_val = 0;
      D.30708 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30708;
      ins->prev = 0B;
      D.30709 = ins->prev;
      ins->next = D.30709;
      ins->opcode = 341;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30710 = ins->sreg3;
      ins->sreg2 = D.30710;
      D.30711 = ins->sreg2;
      ins->sreg1 = D.30711;
      D.30712 = cfg->ip;
      ins->cil_code = D.30712;
      ins->data.op[1].const_val = 16777215;
      ins->flags = 0;
      D.41608 = cfg->bb_exit;
      D.41609 = D.41608->last_ins;
      if (D.41609 != 0B) goto <D.41610>; else goto <D.41611>;
      <D.41610>:
      D.41608 = cfg->bb_exit;
      D.41609 = D.41608->last_ins;
      D.41609->next = ins;
      D.41608 = cfg->bb_exit;
      D.41609 = D.41608->last_ins;
      ins->prev = D.41609;
      D.41608 = cfg->bb_exit;
      D.41608->last_ins = ins;
      goto <D.41612>;
      <D.41611>:
      D.41608 = cfg->bb_exit;
      D.41608 = cfg->bb_exit;
      D.41608->last_ins = ins;
      D.41609 = D.41608->last_ins;
      D.41608->code = D.41609;
      <D.41612>:
      <D.41603>:
      if (sym_seq_points != 0) goto <D.41613>; else goto <D.41614>;
      <D.41613>:
      i = 0;
      goto <D.28297>;
      <D.28296>:
      i.76 = (unsigned int) i;
      D.41615 = i.76 / 32;
      D.41616 = seq_point_locs->data[D.41615];
      D.41617 = i & 31;
      D.41618 = 1 << D.41617;
      D.41619 = D.41616 & D.41618;
      if (D.41619 != 0) goto <D.41620>; else goto <D.41621>;
      <D.41620>:
      i.76 = (unsigned int) i;
      D.41615 = i.76 / 32;
      D.41622 = seq_point_set_locs->data[D.41615];
      D.41617 = i & 31;
      D.41618 = 1 << D.41617;
      D.41623 = D.41622 & D.41618;
      if (D.41623 == 0) goto <D.41624>; else goto <D.41625>;
      <D.41624>:
      {
        struct MonoInst * ins;

        D.30489 = cfg->mempool;
        ins = mono_mempool_alloc (D.30489, 48);
        ins->data.op[1].const_val = 0;
        D.41626 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.41626;
        ins->prev = 0B;
        D.41627 = ins->prev;
        ins->next = D.41627;
        ins->opcode = 341;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.41628 = ins->sreg3;
        ins->sreg2 = D.41628;
        D.41629 = ins->sreg2;
        ins->sreg1 = D.41629;
        D.30712 = cfg->ip;
        ins->cil_code = D.30712;
        ins->data.op[1].const_val = i;
        ins->flags = 0;
        mono_add_seq_point (cfg, 0B, ins, -1);
      }
      <D.41625>:
      <D.41621>:
      i = i + 1;
      <D.28297>:
      i.378 = (unsigned int) i;
      D.30467 = header->code_size;
      if (i.378 < D.30467) goto <D.28296>; else goto <D.28298>;
      <D.28298>:
      <D.41614>:
      cfg->ip = 0B;
      D.30459 = cfg->method;
      if (D.30459 == method) goto <D.41631>; else goto <D.41632>;
      <D.41631>:
      {
        struct MonoBasicBlock * bb;

        bb = cfg->bb_entry;
        goto <D.28301>;
        <D.28300>:
        D.41633 = bb->real_offset;
        D.41634 = (int) D.41633;
        D.41635 = mono_find_block_region (cfg, D.41634);
        D.41636 = (unsigned int) D.41635;
        bb->region = D.41636;
        D.41637 = cfg->spvars;
        if (D.41637 != 0B) goto <D.41638>; else goto <D.41639>;
        <D.41638>:
        D.41640 = bb->region;
        D.41641 = (int) D.41640;
        mono_create_spvar_for_region (cfg, D.41641);
        <D.41639>:
        D.30569 = cfg->verbose_level;
        if (D.30569 > 2) goto <D.41642>; else goto <D.41643>;
        <D.41642>:
        D.41640 = bb->region;
        D.41633 = bb->real_offset;
        D.41644 = bb->block_num;
        printf ("REGION BB%d IL_%04x ID_%08X\n", D.41644, D.41633, D.41640);
        <D.41643>:
        bb = bb->next_bb;
        <D.28301>:
        if (bb != 0B) goto <D.28300>; else goto <D.28302>;
        <D.28302>:
      }
      <D.41632>:
      monoeg_g_slist_free (class_inits);
      dont_inline = monoeg_g_list_remove (dont_inline, method);
      if (inline_costs < 0) goto <D.41645>; else goto <D.41646>;
      <D.41645>:
      {
        char * mname;

        mname = mono_method_full_name (method, 1);
        mono_cfg_set_exception (cfg, 3);
        D.41647 = monoeg_g_strdup_printf ("Method %s is too complex.", mname);
        cfg->exception_message = D.41647;
        monoeg_g_free (mname);
        D.41648 = cfg->headers_to_free;
        D.30489 = cfg->mempool;
        D.41649 = g_slist_prepend_mempool (D.30489, D.41648, header);
        cfg->headers_to_free = D.41649;
        mono_basic_block_free (original_bb);
        D.41650 = -1;
        return D.41650;
      }
      <D.41646>:
      D.30569 = cfg->verbose_level;
      if (D.30569 > 2) goto <D.41651>; else goto <D.41652>;
      <D.41651>:
      D.30459 = cfg->method;
      if (D.30459 == method) goto <D.41653>; else goto <D.41654>;
      <D.41653>:
      mono_print_code (cfg, "AFTER METHOD-TO-IR");
      <D.41654>:
      <D.41652>:
      D.41648 = cfg->headers_to_free;
      D.30489 = cfg->mempool;
      D.41655 = g_slist_prepend_mempool (D.30489, D.41648, header);
      cfg->headers_to_free = D.41655;
      mono_basic_block_free (original_bb);
      D.41650 = inline_costs;
      return D.41650;
      exception_exit:
      D.31057 = cfg->exception_type;
      D.41656 = D.31057 == 0;
      D.41657 = (long int) D.41656;
      D.41658 = __builtin_expect (D.41657, 0);
      if (D.41658 != 0) goto <D.41659>; else goto <D.41660>;
      <D.41659>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12004, "cfg->exception_type != MONO_EXCEPTION_NONE");
      <D.41660>:
      goto cleanup;
      inline_failure:
      goto cleanup;
      load_error:
      mono_cfg_set_exception (cfg, 7);
      goto cleanup;
      unverified:
      set_exception_type_from_invalid_il (cfg, method, ip);
      goto cleanup;
      cleanup:
      monoeg_g_slist_free (class_inits);
      mono_basic_block_free (original_bb);
      dont_inline = monoeg_g_list_remove (dont_inline, method);
      D.41648 = cfg->headers_to_free;
      D.30489 = cfg->mempool;
      D.41661 = g_slist_prepend_mempool (D.30489, D.41648, header);
      cfg->headers_to_free = D.41661;
      D.41650 = -1;
      return D.41650;
    }
  finally
    {
      error = {CLOBBER};
      bblock = {CLOBBER};
      klass = {CLOBBER};
      err_pos = {CLOBBER};
      actions = {CLOBBER};
      cached_tls_addr = {CLOBBER};
    }
}


is_jit_optimizer_disabled (struct MonoMethod * m)
{
  struct MonoClass * D.41724;
  struct MonoImage * D.41725;
  _Bool D.41726;
  long int D.41727;
  long int D.41728;
  unsigned char D.41731;
  gboolean D.41734;
  unsigned char D.41735;
  struct MonoClass * klass.379;
  struct MonoImage * D.41739;
  struct MonoClass * klass.380;
  struct MonoMethod * D.41747;
  struct MonoClass * D.41749;
  unsigned int D.41750;
  short unsigned int D.41751;
  _Bool D.41752;
  long int D.41753;
  long int D.41754;
  short unsigned int D.41759;
  struct MonoType * D.41761;
  unsigned char D.41762;
  struct MonoType * D.41764;
  unsigned char D.41765;
  char D.41766;
  int D.41767;
  unsigned char D.41768;
  struct MonoAssembly * ass;
  struct MonoCustomAttrInfo * attrs;
  static struct MonoClass * klass;
  int i;
  gboolean val;

  D.41724 = m->klass;
  D.41725 = D.41724->image;
  ass = D.41725->assembly;
  val = 0;
  D.41726 = ass == 0B;
  D.41727 = (long int) D.41726;
  D.41728 = __builtin_expect (D.41727, 0);
  if (D.41728 != 0) goto <D.41729>; else goto <D.41730>;
  <D.41729>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6422, "ass");
  <D.41730>:
  D.41731 = ass->jit_optimizer_disabled_inited;
  if (D.41731 != 0) goto <D.41732>; else goto <D.41733>;
  <D.41732>:
  D.41735 = ass->jit_optimizer_disabled;
  D.41734 = (gboolean) D.41735;
  return D.41734;
  <D.41733>:
  klass.379 = klass;
  if (klass.379 == 0B) goto <D.41737>; else goto <D.41738>;
  <D.41737>:
  D.41739 = mono_defaults.corlib;
  klass.380 = mono_class_from_name (D.41739, "System.Diagnostics", "DebuggableAttribute");
  klass = klass.380;
  <D.41738>:
  klass.379 = klass;
  if (klass.379 == 0B) goto <D.41741>; else goto <D.41742>;
  <D.41741>:
  ass->jit_optimizer_disabled = 0;
  mono_memory_barrier ();
  ass->jit_optimizer_disabled_inited = 1;
  D.41734 = 0;
  return D.41734;
  <D.41742>:
  attrs = mono_custom_attrs_from_assembly (ass);
  if (attrs != 0B) goto <D.41743>; else goto <D.41744>;
  <D.41743>:
  i = 0;
  goto <D.27188>;
  <D.27187>:
  {
    struct MonoCustomAttrEntry * attr;
    const gchar * p;
    int len;
    struct MonoMethodSignature * sig;

    attr = &attrs->attrs[i];
    D.41747 = attr->ctor;
    if (D.41747 == 0B) goto <D.41745>; else goto <D.41748>;
    <D.41748>:
    D.41747 = attr->ctor;
    D.41749 = D.41747->klass;
    klass.379 = klass;
    if (D.41749 != klass.379) goto <D.41745>; else goto <D.41746>;
    <D.41745>:
    // predicted unlikely by continue predictor.
    goto <D.27186>;
    <D.41746>:
    D.41750 = attr->data_size;
    len = (int) D.41750;
    p = attr->data;
    D.41751 = MEM[(const guint16 *)p];
    D.41752 = D.41751 != 1;
    D.41753 = (long int) D.41752;
    D.41754 = __builtin_expect (D.41753, 0);
    if (D.41754 != 0) goto <D.41755>; else goto <D.41756>;
    <D.41755>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6449, "read16 (p) == 0x0001");
    <D.41756>:
    p = p + 2;
    D.41747 = attr->ctor;
    sig = mono_method_signature (D.41747);
    D.41759 = sig->param_count;
    if (D.41759 != 2) goto <D.41757>; else goto <D.41760>;
    <D.41760>:
    D.41761 = sig->params[0];
    D.41762 = D.41761->type;
    if (D.41762 != 2) goto <D.41757>; else goto <D.41763>;
    <D.41763>:
    D.41764 = sig->params[1];
    D.41765 = D.41764->type;
    if (D.41765 != 2) goto <D.41757>; else goto <D.41758>;
    <D.41757>:
    // predicted unlikely by continue predictor.
    goto <D.27186>;
    <D.41758>:
    p = p + 1;
    D.41766 = *p;
    val = (gboolean) D.41766;
  }
  <D.27186>:
  i = i + 1;
  <D.27188>:
  D.41767 = attrs->num_attrs;
  if (D.41767 > i) goto <D.27187>; else goto <D.27189>;
  <D.27189>:
  mono_custom_attrs_free (attrs);
  <D.41744>:
  D.41768 = (unsigned char) val;
  ass->jit_optimizer_disabled = D.41768;
  mono_memory_barrier ();
  ass->jit_optimizer_disabled_inited = 1;
  D.41734 = val;
  return D.41734;
}


mono_memory_barrier ()
{
  __sync_synchronize ();
}


mono_create_exvar_for_offset (struct MonoCompile * cfg, int offset)
{
  const void * offset.381;
  struct GHashTable * D.41771;
  struct MonoInst * D.41774;
  struct MonoClass * D.41775;
  struct MonoType * D.41776;
  unsigned char D.41777;
  unsigned char D.41778;
  void * offset.382;
  struct MonoInst * var;

  offset.381 = (const void *) offset;
  D.41771 = cfg->exvars;
  var = monoeg_g_hash_table_lookup (D.41771, offset.381);
  if (var != 0B) goto <D.41772>; else goto <D.41773>;
  <D.41772>:
  D.41774 = var;
  return D.41774;
  <D.41773>:
  D.41775 = mono_defaults.object_class;
  D.41776 = &D.41775->byval_arg;
  var = mono_compile_create_var (cfg, D.41776, 329);
  D.41777 = var->flags;
  D.41778 = D.41777 | 4;
  var->flags = D.41778;
  offset.382 = (void *) offset;
  D.41771 = cfg->exvars;
  monoeg_g_hash_table_insert_replace (D.41771, offset.382, var, 0);
  D.41774 = var;
  return D.41774;
}


mono_save_args (struct MonoCompile * cfg, struct MonoMethodSignature * sig, struct MonoInst * * sp)
{
  struct MonoType * iftmp.383;
  unsigned char D.41784;
  unsigned char D.41785;
  struct MonoInst * D.41788;
  <unnamed-unsigned:1> D.41789;
  int D.41790;
  int D.41791;
  struct MonoInst * * D.41792;
  unsigned int i.384;
  unsigned int D.41794;
  struct MonoInst * * D.41795;
  struct MonoMemPool * D.41796;
  int D.41797;
  struct MonoInst * D.41798;
  int D.41799;
  int D.41800;
  const unsigned char * D.41801;
  struct MonoType * * D.41802;
  struct MonoType * * D.41803;
  struct MonoType * D.41804;
  unsigned int D.41805;
  short unsigned int D.41806;
  struct MonoInst * D.41807;
  struct MonoClass * D.41808;
  int D.41809;
  int D.41810;
  short unsigned int D.41811;
  struct MonoClass * D.41814;
  struct MonoBasicBlock * D.41815;
  struct MonoInst * D.41816;
  const unsigned char * D.41820;
  short unsigned int D.41821;
  int D.41822;
  int D.41823;
  struct MonoInst * store;
  struct MonoInst * temp;
  int i;

  i = 0;
  goto <D.26868>;
  <D.26867>:
  {
    struct MonoType * argtype;

    D.41784 = BIT_FIELD_REF <*sig, 8, 80>;
    D.41785 = D.41784 & 64;
    if (D.41785 != 0) goto <D.41786>; else goto <D.41782>;
    <D.41786>:
    if (i == 0) goto <D.41787>; else goto <D.41782>;
    <D.41787>:
    D.41788 = *sp;
    iftmp.383 = type_from_stack_type (D.41788);
    goto <D.41783>;
    <D.41782>:
    D.41789 = sig->hasthis;
    D.41790 = (int) D.41789;
    D.41791 = i - D.41790;
    iftmp.383 = sig->params[D.41791];
    <D.41783>:
    argtype = iftmp.383;
    temp = mono_compile_create_var (cfg, argtype, 329);
    D.41792 = cfg->args;
    i.384 = (unsigned int) i;
    D.41794 = i.384 * 4;
    D.41795 = D.41792 + D.41794;
    *D.41795 = temp;
    D.41796 = cfg->mempool;
    store = mono_mempool_alloc (D.41796, 48);
    store->data.op[1].const_val = 0;
    D.41797 = store->data.op[1].const_val;
    store->data.op[0].const_val = D.41797;
    store->prev = 0B;
    D.41798 = store->prev;
    store->next = D.41798;
    store->opcode = 428;
    store->flags = 0;
    store->type = 0;
    store->dreg = -1;
    store->sreg3 = -1;
    D.41799 = store->sreg3;
    store->sreg2 = D.41799;
    D.41800 = store->sreg2;
    store->sreg1 = D.41800;
    D.41801 = cfg->ip;
    store->cil_code = D.41801;
    D.41802 = cfg->arg_types;
    i.384 = (unsigned int) i;
    D.41794 = i.384 * 4;
    D.41803 = D.41802 + D.41794;
    D.41804 = *D.41803;
    D.41805 = mono_type_to_regmove (cfg, D.41804);
    D.41806 = (short unsigned int) D.41805;
    store->opcode = D.41806;
    D.41792 = cfg->args;
    i.384 = (unsigned int) i;
    D.41794 = i.384 * 4;
    D.41795 = D.41792 + D.41794;
    D.41807 = *D.41795;
    D.41808 = D.41807->klass;
    store->klass = D.41808;
    D.41788 = *sp;
    D.41809 = D.41788->dreg;
    store->sreg1 = D.41809;
    D.41792 = cfg->args;
    i.384 = (unsigned int) i;
    D.41794 = i.384 * 4;
    D.41795 = D.41792 + D.41794;
    D.41807 = *D.41795;
    D.41810 = D.41807->dreg;
    store->dreg = D.41810;
    D.41811 = store->opcode;
    if (D.41811 == 431) goto <D.41812>; else goto <D.41813>;
    <D.41812>:
    D.41802 = cfg->arg_types;
    i.384 = (unsigned int) i;
    D.41794 = i.384 * 4;
    D.41803 = D.41802 + D.41794;
    D.41804 = *D.41803;
    D.41814 = mono_class_from_mono_type (D.41804);
    store->klass = D.41814;
    <D.41813>:
    D.41815 = cfg->cbb;
    D.41816 = D.41815->last_ins;
    if (D.41816 != 0B) goto <D.41817>; else goto <D.41818>;
    <D.41817>:
    D.41815 = cfg->cbb;
    D.41816 = D.41815->last_ins;
    D.41816->next = store;
    D.41815 = cfg->cbb;
    D.41816 = D.41815->last_ins;
    store->prev = D.41816;
    D.41815 = cfg->cbb;
    D.41815->last_ins = store;
    goto <D.41819>;
    <D.41818>:
    D.41815 = cfg->cbb;
    D.41815 = cfg->cbb;
    D.41815->last_ins = store;
    D.41816 = D.41815->last_ins;
    D.41815->code = D.41816;
    <D.41819>:
    D.41788 = *sp;
    D.41820 = D.41788->cil_code;
    store->cil_code = D.41820;
    sp = sp + 4;
  }
  i = i + 1;
  <D.26868>:
  D.41821 = sig->param_count;
  D.41822 = (int) D.41821;
  D.41789 = sig->hasthis;
  D.41790 = (int) D.41789;
  D.41823 = D.41822 + D.41790;
  if (D.41823 > i) goto <D.26867>; else goto <D.26869>;
  <D.26869>:
}


emit_get_rgctx_gsharedvt_method (struct MonoCompile * cfg, int context_used, struct MonoMethod * cmethod, struct MonoGSharedVtMethodInfo * info)
{
  int D.41824;
  struct MonoMethod * D.41825;
  struct MonoMemPool * D.41826;
  struct MonoInst * D.41827;
  struct MonoJumpInfoRgctxEntry * entry;
  struct MonoInst * rgctx;

  D.41824 = context_used & 2;
  D.41825 = cfg->current_method;
  D.41826 = cfg->mempool;
  entry = mono_patch_info_rgctx_entry_new (D.41826, D.41825, D.41824, 46, info, 20);
  D.41825 = cfg->current_method;
  rgctx = emit_get_rgctx (cfg, D.41825, context_used);
  D.41827 = emit_rgctx_fetch (cfg, rgctx, entry);
  return D.41827;
}


emit_throw_exception (struct MonoCompile * cfg, struct MonoException * ex)
{
  struct MonoMemPool * D.41829;
  void * D.41830;
  struct MonoInst * D.41831;
  int D.41832;
  struct MonoInst * D.41833;
  int D.41834;
  int D.41835;
  const unsigned char * D.41836;
  unsigned int D.41837;
  int D.41838;
  struct MonoBasicBlock * D.41839;
  struct MonoInst * D.41840;
  struct MonoMethod * thrower;
  struct MonoInst * args[1];

  try
    {
      thrower = throw_exception ();
      D.41829 = cfg->mempool;
      D.41830 = mono_mempool_alloc (D.41829, 48);
      args[0] = D.41830;
      D.41831 = args[0];
      D.41831 = args[0];
      D.41831->data.op[1].const_val = 0;
      D.41832 = D.41831->data.op[1].const_val;
      D.41831->data.op[0].const_val = D.41832;
      D.41831 = args[0];
      D.41831 = args[0];
      D.41831->prev = 0B;
      D.41833 = D.41831->prev;
      D.41831->next = D.41833;
      D.41831 = args[0];
      D.41831->opcode = 362;
      D.41831 = args[0];
      D.41831->flags = 0;
      D.41831 = args[0];
      D.41831->type = 0;
      D.41831 = args[0];
      D.41831->dreg = -1;
      D.41831 = args[0];
      D.41831 = args[0];
      D.41831 = args[0];
      D.41831->sreg3 = -1;
      D.41834 = D.41831->sreg3;
      D.41831->sreg2 = D.41834;
      D.41835 = D.41831->sreg2;
      D.41831->sreg1 = D.41835;
      D.41831 = args[0];
      D.41836 = cfg->ip;
      D.41831->cil_code = D.41836;
      D.41831 = args[0];
      D.41831->data.op[0].p = ex;
      D.41831 = args[0];
      D.41831->type = 3;
      D.41831 = args[0];
      D.41837 = alloc_dreg (cfg, 3);
      D.41838 = (int) D.41837;
      D.41831->dreg = D.41838;
      D.41839 = cfg->cbb;
      D.41840 = D.41839->last_ins;
      if (D.41840 != 0B) goto <D.41841>; else goto <D.41842>;
      <D.41841>:
      D.41839 = cfg->cbb;
      D.41840 = D.41839->last_ins;
      D.41831 = args[0];
      D.41840->next = D.41831;
      D.41831 = args[0];
      D.41839 = cfg->cbb;
      D.41840 = D.41839->last_ins;
      D.41831->prev = D.41840;
      D.41839 = cfg->cbb;
      D.41831 = args[0];
      D.41839->last_ins = D.41831;
      goto <D.41843>;
      <D.41842>:
      D.41839 = cfg->cbb;
      D.41839 = cfg->cbb;
      D.41831 = args[0];
      D.41839->last_ins = D.41831;
      D.41840 = D.41839->last_ins;
      D.41839->code = D.41840;
      <D.41843>:
      mono_emit_method_call (cfg, thrower, &args, 0B);
    }
  finally
    {
      args = {CLOBBER};
    }
}


throw_exception ()
{
  struct MonoMethod * method.385;
  struct MonoClass * D.41847;
  struct MonoMethod * method.386;
  _Bool D.41849;
  long int D.41850;
  long int D.41851;
  struct MonoMethod * D.41854;
  static struct MonoMethod * method = 0B;

  method.385 = method;
  if (method.385 == 0B) goto <D.41845>; else goto <D.41846>;
  <D.41845>:
  {
    struct MonoSecurityManager * secman;

    secman = mono_security_manager_get_methods ();
    D.41847 = secman->securitymanager;
    method.386 = mono_class_get_method_from_name (D.41847, "ThrowException", 1);
    method = method.386;
  }
  <D.41846>:
  method.385 = method;
  D.41849 = method.385 == 0B;
  D.41850 = (long int) D.41849;
  D.41851 = __builtin_expect (D.41850, 0);
  if (D.41851 != 0) goto <D.41852>; else goto <D.41853>;
  <D.41852>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6187, "method");
  <D.41853>:
  D.41854 = method;
  return D.41854;
}


get_basic_blocks (struct MonoCompile * cfg, struct MonoMethodHeader * header, guint real_offset, unsigned char * start, unsigned char * end, unsigned char * * pos)
{
  unsigned char * ip.387;
  int ip.388;
  int start.389;
  int D.41859;
  <unnamed type> D.41860;
  int D.41863;
  unsigned int D.41866;
  struct MonoDebugOptions * D.41869;
  int D.41870;
  unsigned char D.41872;
  int D.41873;
  unsigned char * ip.390;
  unsigned char * ip.391;
  unsigned char * ip.392;
  unsigned char * ip.393;
  unsigned char D.41878;
  signed char D.41879;
  sizetype D.41880;
  sizetype D.41881;
  sizetype D.41882;
  struct MonoBasicBlock * * D.41883;
  int target.394;
  unsigned char * D.41885;
  int D.41886;
  int D.41887;
  unsigned int D.41888;
  unsigned int D.41889;
  struct MonoBasicBlock * * D.41890;
  const unsigned char * D.41896;
  struct MonoDebugOptions * D.41901;
  int D.41902;
  struct MonoMemPool * D.41904;
  unsigned int D.41905;
  unsigned int D.41906;
  unsigned int D.41907;
  int D.41908;
  unsigned char * D.41909;
  int D.41912;
  int D.41913;
  unsigned int D.41914;
  unsigned int D.41915;
  struct MonoBasicBlock * * D.41916;
  unsigned int D.41917;
  int D.41920;
  unsigned int D.41921;
  unsigned int D.41922;
  struct MonoBasicBlock * * D.41923;
  struct MonoDebugOptions * D.41933;
  int D.41934;
  unsigned int D.41936;
  unsigned int D.41937;
  int D.41938;
  const guint32 * D.41941;
  unsigned int D.41942;
  sizetype D.41943;
  sizetype D.41944;
  struct MonoDebugOptions * D.41954;
  int D.41955;
  unsigned int D.41957;
  unsigned int D.41958;
  int D.41959;
  struct MonoDebugOptions * D.41973;
  int D.41974;
  unsigned int D.41976;
  unsigned int D.41977;
  int D.41978;
  unsigned int D.41981;
  unsigned int D.41982;
  struct MonoDebugOptions * D.41992;
  int D.41993;
  unsigned int D.41995;
  unsigned int D.41996;
  int D.41997;
  unsigned int D.42000;
  sizetype D.42001;
  struct MonoDebugOptions * D.42011;
  int D.42012;
  unsigned int D.42014;
  unsigned int D.42015;
  int D.42016;
  unsigned char * ip.395;
  unsigned char * ip.396;
  int bb_start.397;
  int D.42024;
  unsigned int D.42025;
  unsigned int D.42026;
  struct MonoBasicBlock * * D.42027;
  _Bool D.42028;
  _Bool D.42029;
  _Bool D.42030;
  int D.42033;
  unsigned char * ip;
  unsigned char * target;
  int i;
  guint cli_addr;
  struct MonoBasicBlock * bblock;
  const struct MonoOpcode * opcode;
  void exception_exit = <<< error >>>;
  void unverified = <<< error >>>;

  try
    {
      ip = start;
      goto <D.27016>;
      <D.27015>:
      ip.387 = ip;
      ip.388 = (int) ip.387;
      start.389 = (int) start;
      D.41859 = ip.388 - start.389;
      cli_addr = (guint) D.41859;
      D.41860 = mono_opcode_value (&ip, end);
      i = (int) D.41860;
      if (i < 0) goto <D.41861>; else goto <D.41862>;
      <D.41861>:
      D.41863 = cfg->gsharedvt;
      if (D.41863 != 0) goto <D.41864>; else goto <D.41865>;
      <D.41864>:
      D.41866 = cfg->verbose_level;
      if (D.41866 > 2) goto <D.41867>; else goto <D.41868>;
      <D.41867>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41868>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41865>:
      D.41869 = mini_get_debug_options ();
      D.41870 = D.41869->break_on_unverified;
      if (D.41870 != 0) goto <D.41871>; else goto unverified;
      <D.41871>:
      __asm__ __volatile__("int $03");
      <D.41862>:
      opcode = &mono_opcodes[i];
      D.41872 = opcode->argument;
      D.41873 = (int) D.41872;
      switch (D.41873) <default: <D.27010>, case 0: <D.26987>, case 1: <D.26990>, case 2: <D.26991>, case 3: <D.26992>, case 4: <D.26993>, case 5: <D.26989>, case 6: <D.26994>, case 7: <D.26997>, case 8: <D.26998>, case 9: <D.27001>, case 10: <D.27000>, case 11: <D.27002>, case 12: <D.27008>, case 13: <D.26995>, case 14: <D.26996>, case 15: <D.26999>, case 16: <D.27009>>
      <D.26987>:
      ip.387 = ip;
      ip.390 = ip.387 + 1;
      ip = ip.390;
      goto <D.26988>;
      <D.26989>:
      <D.26990>:
      <D.26991>:
      <D.26992>:
      <D.26993>:
      <D.26994>:
      <D.26995>:
      <D.26996>:
      ip.387 = ip;
      ip.391 = ip.387 + 5;
      ip = ip.391;
      goto <D.26988>;
      <D.26997>:
      ip.387 = ip;
      ip.392 = ip.387 + 3;
      ip = ip.392;
      goto <D.26988>;
      <D.26998>:
      <D.26999>:
      ip.387 = ip;
      ip.393 = ip.387 + 2;
      ip = ip.393;
      goto <D.26988>;
      <D.27000>:
      ip.387 = ip;
      ip.390 = ip.387 + 1;
      D.41878 = *ip.390;
      D.41879 = (signed char) D.41878;
      D.41880 = (sizetype) D.41879;
      D.41881 = D.41880 + cli_addr;
      D.41882 = D.41881 + 2;
      target = start + D.41882;
      D.41883 = cfg->cil_offset_to_bb;
      target.394 = (int) target;
      D.41885 = cfg->cil_start;
      D.41886 = (int) D.41885;
      D.41887 = target.394 - D.41886;
      D.41888 = (unsigned int) D.41887;
      D.41889 = D.41888 * 4;
      D.41890 = D.41883 + D.41889;
      bblock = *D.41890;
      if (bblock == 0B) goto <D.41891>; else goto <D.41892>;
      <D.41891>:
      if (target >= end) goto <D.41893>; else goto <D.41895>;
      <D.41895>:
      D.41896 = header->code;
      if (D.41896 > target) goto <D.41893>; else goto <D.41894>;
      <D.41893>:
      D.41863 = cfg->gsharedvt;
      if (D.41863 != 0) goto <D.41897>; else goto <D.41898>;
      <D.41897>:
      D.41866 = cfg->verbose_level;
      if (D.41866 > 2) goto <D.41899>; else goto <D.41900>;
      <D.41899>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41900>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41898>:
      D.41901 = mini_get_debug_options ();
      D.41902 = D.41901->break_on_unverified;
      if (D.41902 != 0) goto <D.41903>; else goto unverified;
      <D.41903>:
      __asm__ __volatile__("int $03");
      <D.41894>:
      D.41904 = cfg->mempool;
      bblock = mono_mempool_alloc0 (D.41904, 172);
      D.41905 = cfg->num_bblocks;
      D.41906 = D.41905;
      D.41907 = D.41906 + 1;
      cfg->num_bblocks = D.41907;
      D.41908 = (int) D.41906;
      bblock->block_num = D.41908;
      bblock->cil_code = target;
      D.41909 = bblock->cil_code;
      if (D.41909 != 0B) goto <D.41910>; else goto <D.41911>;
      <D.41910>:
      D.41883 = cfg->cil_offset_to_bb;
      D.41909 = bblock->cil_code;
      D.41912 = (int) D.41909;
      D.41885 = cfg->cil_start;
      D.41886 = (int) D.41885;
      D.41913 = D.41912 - D.41886;
      D.41914 = (unsigned int) D.41913;
      D.41915 = D.41914 * 4;
      D.41916 = D.41883 + D.41915;
      *D.41916 = bblock;
      <D.41911>:
      D.41917 = cfg->real_offset;
      bblock->real_offset = D.41917;
      <D.41892>:
      ip.387 = ip;
      ip.393 = ip.387 + 2;
      ip = ip.393;
      ip.387 = ip;
      if (ip.387 < end) goto <D.41918>; else goto <D.41919>;
      <D.41918>:
      D.41883 = cfg->cil_offset_to_bb;
      ip.387 = ip;
      ip.388 = (int) ip.387;
      D.41885 = cfg->cil_start;
      D.41886 = (int) D.41885;
      D.41920 = ip.388 - D.41886;
      D.41921 = (unsigned int) D.41920;
      D.41922 = D.41921 * 4;
      D.41923 = D.41883 + D.41922;
      bblock = *D.41923;
      if (bblock == 0B) goto <D.41924>; else goto <D.41925>;
      <D.41924>:
      ip.387 = ip;
      if (ip.387 >= end) goto <D.41926>; else goto <D.41928>;
      <D.41928>:
      D.41896 = header->code;
      ip.387 = ip;
      if (D.41896 > ip.387) goto <D.41926>; else goto <D.41927>;
      <D.41926>:
      D.41863 = cfg->gsharedvt;
      if (D.41863 != 0) goto <D.41929>; else goto <D.41930>;
      <D.41929>:
      D.41866 = cfg->verbose_level;
      if (D.41866 > 2) goto <D.41931>; else goto <D.41932>;
      <D.41931>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41932>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41930>:
      D.41933 = mini_get_debug_options ();
      D.41934 = D.41933->break_on_unverified;
      if (D.41934 != 0) goto <D.41935>; else goto unverified;
      <D.41935>:
      __asm__ __volatile__("int $03");
      <D.41927>:
      D.41904 = cfg->mempool;
      bblock = mono_mempool_alloc0 (D.41904, 172);
      D.41905 = cfg->num_bblocks;
      D.41936 = D.41905;
      D.41937 = D.41936 + 1;
      cfg->num_bblocks = D.41937;
      D.41938 = (int) D.41936;
      bblock->block_num = D.41938;
      ip.387 = ip;
      bblock->cil_code = ip.387;
      D.41909 = bblock->cil_code;
      if (D.41909 != 0B) goto <D.41939>; else goto <D.41940>;
      <D.41939>:
      D.41883 = cfg->cil_offset_to_bb;
      D.41909 = bblock->cil_code;
      D.41912 = (int) D.41909;
      D.41885 = cfg->cil_start;
      D.41886 = (int) D.41885;
      D.41913 = D.41912 - D.41886;
      D.41914 = (unsigned int) D.41913;
      D.41915 = D.41914 * 4;
      D.41916 = D.41883 + D.41915;
      *D.41916 = bblock;
      <D.41940>:
      D.41917 = cfg->real_offset;
      bblock->real_offset = D.41917;
      <D.41925>:
      <D.41919>:
      goto <D.26988>;
      <D.27001>:
      ip.387 = ip;
      D.41941 = ip.387 + 1;
      D.41942 = *D.41941;
      D.41943 = D.41942 + cli_addr;
      D.41944 = D.41943 + 5;
      target = start + D.41944;
      D.41883 = cfg->cil_offset_to_bb;
      target.394 = (int) target;
      D.41885 = cfg->cil_start;
      D.41886 = (int) D.41885;
      D.41887 = target.394 - D.41886;
      D.41888 = (unsigned int) D.41887;
      D.41889 = D.41888 * 4;
      D.41890 = D.41883 + D.41889;
      bblock = *D.41890;
      if (bblock == 0B) goto <D.41945>; else goto <D.41946>;
      <D.41945>:
      if (target >= end) goto <D.41947>; else goto <D.41949>;
      <D.41949>:
      D.41896 = header->code;
      if (D.41896 > target) goto <D.41947>; else goto <D.41948>;
      <D.41947>:
      D.41863 = cfg->gsharedvt;
      if (D.41863 != 0) goto <D.41950>; else goto <D.41951>;
      <D.41950>:
      D.41866 = cfg->verbose_level;
      if (D.41866 > 2) goto <D.41952>; else goto <D.41953>;
      <D.41952>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41953>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41951>:
      D.41954 = mini_get_debug_options ();
      D.41955 = D.41954->break_on_unverified;
      if (D.41955 != 0) goto <D.41956>; else goto unverified;
      <D.41956>:
      __asm__ __volatile__("int $03");
      <D.41948>:
      D.41904 = cfg->mempool;
      bblock = mono_mempool_alloc0 (D.41904, 172);
      D.41905 = cfg->num_bblocks;
      D.41957 = D.41905;
      D.41958 = D.41957 + 1;
      cfg->num_bblocks = D.41958;
      D.41959 = (int) D.41957;
      bblock->block_num = D.41959;
      bblock->cil_code = target;
      D.41909 = bblock->cil_code;
      if (D.41909 != 0B) goto <D.41960>; else goto <D.41961>;
      <D.41960>:
      D.41883 = cfg->cil_offset_to_bb;
      D.41909 = bblock->cil_code;
      D.41912 = (int) D.41909;
      D.41885 = cfg->cil_start;
      D.41886 = (int) D.41885;
      D.41913 = D.41912 - D.41886;
      D.41914 = (unsigned int) D.41913;
      D.41915 = D.41914 * 4;
      D.41916 = D.41883 + D.41915;
      *D.41916 = bblock;
      <D.41961>:
      D.41917 = cfg->real_offset;
      bblock->real_offset = D.41917;
      <D.41946>:
      ip.387 = ip;
      ip.391 = ip.387 + 5;
      ip = ip.391;
      ip.387 = ip;
      if (ip.387 < end) goto <D.41962>; else goto <D.41963>;
      <D.41962>:
      D.41883 = cfg->cil_offset_to_bb;
      ip.387 = ip;
      ip.388 = (int) ip.387;
      D.41885 = cfg->cil_start;
      D.41886 = (int) D.41885;
      D.41920 = ip.388 - D.41886;
      D.41921 = (unsigned int) D.41920;
      D.41922 = D.41921 * 4;
      D.41923 = D.41883 + D.41922;
      bblock = *D.41923;
      if (bblock == 0B) goto <D.41964>; else goto <D.41965>;
      <D.41964>:
      ip.387 = ip;
      if (ip.387 >= end) goto <D.41966>; else goto <D.41968>;
      <D.41968>:
      D.41896 = header->code;
      ip.387 = ip;
      if (D.41896 > ip.387) goto <D.41966>; else goto <D.41967>;
      <D.41966>:
      D.41863 = cfg->gsharedvt;
      if (D.41863 != 0) goto <D.41969>; else goto <D.41970>;
      <D.41969>:
      D.41866 = cfg->verbose_level;
      if (D.41866 > 2) goto <D.41971>; else goto <D.41972>;
      <D.41971>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41972>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41970>:
      D.41973 = mini_get_debug_options ();
      D.41974 = D.41973->break_on_unverified;
      if (D.41974 != 0) goto <D.41975>; else goto unverified;
      <D.41975>:
      __asm__ __volatile__("int $03");
      <D.41967>:
      D.41904 = cfg->mempool;
      bblock = mono_mempool_alloc0 (D.41904, 172);
      D.41905 = cfg->num_bblocks;
      D.41976 = D.41905;
      D.41977 = D.41976 + 1;
      cfg->num_bblocks = D.41977;
      D.41978 = (int) D.41976;
      bblock->block_num = D.41978;
      ip.387 = ip;
      bblock->cil_code = ip.387;
      D.41909 = bblock->cil_code;
      if (D.41909 != 0B) goto <D.41979>; else goto <D.41980>;
      <D.41979>:
      D.41883 = cfg->cil_offset_to_bb;
      D.41909 = bblock->cil_code;
      D.41912 = (int) D.41909;
      D.41885 = cfg->cil_start;
      D.41886 = (int) D.41885;
      D.41913 = D.41912 - D.41886;
      D.41914 = (unsigned int) D.41913;
      D.41915 = D.41914 * 4;
      D.41916 = D.41883 + D.41915;
      *D.41916 = bblock;
      <D.41980>:
      D.41917 = cfg->real_offset;
      bblock->real_offset = D.41917;
      <D.41965>:
      <D.41963>:
      goto <D.26988>;
      <D.27002>:
      {
        guint32 n;
        guint32 j;

        ip.387 = ip;
        n = MEM[(const guint32 *)ip.387 + 1B];
        ip.387 = ip;
        ip.391 = ip.387 + 5;
        ip = ip.391;
        D.41981 = n * 4;
        D.41982 = D.41981 + cli_addr;
        cli_addr = D.41982 + 5;
        target = start + cli_addr;
        D.41883 = cfg->cil_offset_to_bb;
        target.394 = (int) target;
        D.41885 = cfg->cil_start;
        D.41886 = (int) D.41885;
        D.41887 = target.394 - D.41886;
        D.41888 = (unsigned int) D.41887;
        D.41889 = D.41888 * 4;
        D.41890 = D.41883 + D.41889;
        bblock = *D.41890;
        if (bblock == 0B) goto <D.41983>; else goto <D.41984>;
        <D.41983>:
        if (target >= end) goto <D.41985>; else goto <D.41987>;
        <D.41987>:
        D.41896 = header->code;
        if (D.41896 > target) goto <D.41985>; else goto <D.41986>;
        <D.41985>:
        D.41863 = cfg->gsharedvt;
        if (D.41863 != 0) goto <D.41988>; else goto <D.41989>;
        <D.41988>:
        D.41866 = cfg->verbose_level;
        if (D.41866 > 2) goto <D.41990>; else goto <D.41991>;
        <D.41990>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.41991>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.41989>:
        D.41992 = mini_get_debug_options ();
        D.41993 = D.41992->break_on_unverified;
        if (D.41993 != 0) goto <D.41994>; else goto unverified;
        <D.41994>:
        __asm__ __volatile__("int $03");
        <D.41986>:
        D.41904 = cfg->mempool;
        bblock = mono_mempool_alloc0 (D.41904, 172);
        D.41905 = cfg->num_bblocks;
        D.41995 = D.41905;
        D.41996 = D.41995 + 1;
        cfg->num_bblocks = D.41996;
        D.41997 = (int) D.41995;
        bblock->block_num = D.41997;
        bblock->cil_code = target;
        D.41909 = bblock->cil_code;
        if (D.41909 != 0B) goto <D.41998>; else goto <D.41999>;
        <D.41998>:
        D.41883 = cfg->cil_offset_to_bb;
        D.41909 = bblock->cil_code;
        D.41912 = (int) D.41909;
        D.41885 = cfg->cil_start;
        D.41886 = (int) D.41885;
        D.41913 = D.41912 - D.41886;
        D.41914 = (unsigned int) D.41913;
        D.41915 = D.41914 * 4;
        D.41916 = D.41883 + D.41915;
        *D.41916 = bblock;
        <D.41999>:
        D.41917 = cfg->real_offset;
        bblock->real_offset = D.41917;
        <D.41984>:
        j = 0;
        goto <D.27006>;
        <D.27005>:
        ip.387 = ip;
        D.42000 = MEM[(const guint32 *)ip.387];
        D.42001 = D.42000 + cli_addr;
        target = start + D.42001;
        D.41883 = cfg->cil_offset_to_bb;
        target.394 = (int) target;
        D.41885 = cfg->cil_start;
        D.41886 = (int) D.41885;
        D.41887 = target.394 - D.41886;
        D.41888 = (unsigned int) D.41887;
        D.41889 = D.41888 * 4;
        D.41890 = D.41883 + D.41889;
        bblock = *D.41890;
        if (bblock == 0B) goto <D.42002>; else goto <D.42003>;
        <D.42002>:
        if (target >= end) goto <D.42004>; else goto <D.42006>;
        <D.42006>:
        D.41896 = header->code;
        if (D.41896 > target) goto <D.42004>; else goto <D.42005>;
        <D.42004>:
        D.41863 = cfg->gsharedvt;
        if (D.41863 != 0) goto <D.42007>; else goto <D.42008>;
        <D.42007>:
        D.41866 = cfg->verbose_level;
        if (D.41866 > 2) goto <D.42009>; else goto <D.42010>;
        <D.42009>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.42010>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.42008>:
        D.42011 = mini_get_debug_options ();
        D.42012 = D.42011->break_on_unverified;
        if (D.42012 != 0) goto <D.42013>; else goto unverified;
        <D.42013>:
        __asm__ __volatile__("int $03");
        <D.42005>:
        D.41904 = cfg->mempool;
        bblock = mono_mempool_alloc0 (D.41904, 172);
        D.41905 = cfg->num_bblocks;
        D.42014 = D.41905;
        D.42015 = D.42014 + 1;
        cfg->num_bblocks = D.42015;
        D.42016 = (int) D.42014;
        bblock->block_num = D.42016;
        bblock->cil_code = target;
        D.41909 = bblock->cil_code;
        if (D.41909 != 0B) goto <D.42017>; else goto <D.42018>;
        <D.42017>:
        D.41883 = cfg->cil_offset_to_bb;
        D.41909 = bblock->cil_code;
        D.41912 = (int) D.41909;
        D.41885 = cfg->cil_start;
        D.41886 = (int) D.41885;
        D.41913 = D.41912 - D.41886;
        D.41914 = (unsigned int) D.41913;
        D.41915 = D.41914 * 4;
        D.41916 = D.41883 + D.41915;
        *D.41916 = bblock;
        <D.42018>:
        D.41917 = cfg->real_offset;
        bblock->real_offset = D.41917;
        <D.42003>:
        ip.387 = ip;
        ip.395 = ip.387 + 4;
        ip = ip.395;
        j = j + 1;
        <D.27006>:
        if (j < n) goto <D.27005>; else goto <D.27007>;
        <D.27007>:
        goto <D.26988>;
      }
      <D.27008>:
      <D.27009>:
      ip.387 = ip;
      ip.396 = ip.387 + 9;
      ip = ip.396;
      goto <D.26988>;
      <D.27010>:
      monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 6056);
      <D.26988>:
      if (i == 122) goto <D.42021>; else goto <D.42022>;
      <D.42021>:
      {
        unsigned char * bb_start;

        ip.387 = ip;
        bb_start = ip.387 + 4294967295;
        bblock = 0B;
        goto <D.27013>;
        <D.27012>:
        D.41883 = cfg->cil_offset_to_bb;
        bb_start.397 = (int) bb_start;
        start.389 = (int) start;
        D.42024 = bb_start.397 - start.389;
        D.42025 = (unsigned int) D.42024;
        D.42026 = D.42025 * 4;
        D.42027 = D.41883 + D.42026;
        bblock = *D.42027;
        bb_start = bb_start + 4294967295;
        <D.27013>:
        D.42028 = bb_start >= start;
        D.42029 = bblock == 0B;
        D.42030 = D.42028 & D.42029;
        if (D.42030 != 0) goto <D.27012>; else goto <D.27014>;
        <D.27014>:
        if (bblock != 0B) goto <D.42031>; else goto <D.42032>;
        <D.42031>:
        bblock->out_of_line = 1;
        <D.42032>:
      }
      <D.42022>:
      <D.27016>:
      ip.387 = ip;
      if (ip.387 < end) goto <D.27015>; else goto <D.27017>;
      <D.27017>:
      D.42033 = 0;
      return D.42033;
      unverified:
      exception_exit:
      ip.387 = ip;
      *pos = ip.387;
      D.42033 = 1;
      return D.42033;
    }
  finally
    {
      ip = {CLOBBER};
    }
}


should_insert_brekpoint (struct MonoMethod * method)
{
  MonoBreakPolicy (*<T34e4>) (struct MonoMethod *) break_policy_func.398;
  <unnamed type> D.42037;
  gboolean D.42038;

  break_policy_func.398 = break_policy_func;
  D.42037 = break_policy_func.398 (method);
  switch (D.42037) <default: <D.26282>, case 0: <D.26279>, case 1: <D.26280>, case 2: <D.26281>>
  <D.26279>:
  D.42038 = 1;
  return D.42038;
  <D.26280>:
  D.42038 = 0;
  return D.42038;
  <D.26281>:
  monoeg_g_log (0B, 16, "mdb no longer supported");
  D.42038 = 0;
  return D.42038;
  <D.26282>:
  monoeg_g_log (0B, 16, "Incorrect value returned from break policy callback");
  D.42038 = 0;
  return D.42038;
}


mini_get_signature (struct MonoMethod * method, guint32 token, struct MonoGenericContext * context)
{
  unsigned char D.42040;
  unsigned char D.42041;
  int D.42046;
  _Bool D.42047;
  long int D.42048;
  long int D.42049;
  struct MonoClass * D.42053;
  struct MonoImage * D.42054;
  struct MonoMethodSignature * D.42055;
  struct MonoMethodSignature * fsig;

  D.42040 = BIT_FIELD_REF <*method, 8, 160>;
  D.42041 = D.42040 & 124;
  if (D.42041 != 0) goto <D.42042>; else goto <D.42043>;
  <D.42042>:
  {
    struct MonoError error;

    try
      {
        fsig = mono_method_get_wrapper_data (method, token);
        if (context != 0B) goto <D.42044>; else goto <D.42045>;
        <D.42044>:
        fsig = mono_inflate_generic_signature (fsig, context, &error);
        D.42046 = mono_error_ok (&error);
        D.42047 = D.42046 == 0;
        D.42048 = (long int) D.42047;
        D.42049 = __builtin_expect (D.42048, 0);
        if (D.42049 != 0) goto <D.42050>; else goto <D.42051>;
        <D.42050>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6135, "mono_error_ok (&error)");
        <D.42051>:
        <D.42045>:
      }
    finally
      {
        error = {CLOBBER};
      }
  }
  goto <D.42052>;
  <D.42043>:
  D.42053 = method->klass;
  D.42054 = D.42053->image;
  fsig = mono_metadata_parse_signature (D.42054, token);
  <D.42052>:
  D.42055 = fsig;
  return D.42055;
}


mini_get_method_allow_open (struct MonoMethod * m, guint32 token, struct MonoClass * klass, struct MonoGenericContext * context)
{
  unsigned char D.42057;
  unsigned char D.42058;
  struct MonoClass * D.42064;
  struct MonoImage * D.42065;
  struct MonoMethod * D.42066;
  struct MonoMethod * method;

  D.42057 = BIT_FIELD_REF <*m, 8, 160>;
  D.42058 = D.42057 & 124;
  if (D.42058 != 0) goto <D.42059>; else goto <D.42060>;
  <D.42059>:
  method = mono_method_get_wrapper_data (m, token);
  if (context != 0B) goto <D.42061>; else goto <D.42062>;
  <D.42061>:
  method = mono_class_inflate_generic_method (method, context);
  <D.42062>:
  goto <D.42063>;
  <D.42060>:
  D.42064 = m->klass;
  D.42065 = D.42064->image;
  method = mono_get_method_full (D.42065, token, klass, context);
  <D.42063>:
  D.42066 = method;
  return D.42066;
}


mini_emit_inst_for_sharable_method (struct MonoCompile * cfg, struct MonoMethod * cmethod, struct MonoMethodSignature * fsig, struct MonoInst * * args)
{
  struct MonoClass * D.42068;
  struct MonoClass * D.42069;
  int D.26427;
  int iftmp.399;
  int D.26426;
  const char[12] * D.42075;
  unsigned char D.42076;
  int D.42077;
  unsigned char D.42078;
  int D.42079;
  _Bool D.42080;
  _Bool D.42081;
  _Bool D.42082;
  const unsigned char * D.42085;
  unsigned char D.42086;
  int D.42087;
  const unsigned char * D.42088;
  unsigned char D.42089;
  int D.42090;
  _Bool D.42091;
  _Bool D.42092;
  const unsigned char * D.42095;
  unsigned char D.42096;
  int D.42097;
  const unsigned char * D.42098;
  unsigned char D.42099;
  int D.42100;
  _Bool D.42101;
  _Bool D.42102;
  const unsigned char * D.42105;
  unsigned char D.42106;
  int D.42107;
  const unsigned char * D.42108;
  unsigned char D.42109;
  int D.42110;
  const char * D.42112;
  struct MonoInst * D.42115;
  int D.26436;
  int iftmp.400;
  int D.26435;
  const char[11] * D.42119;
  unsigned char D.42120;
  int D.42121;
  unsigned char D.42122;
  int D.42123;
  _Bool D.42124;
  _Bool D.42125;
  _Bool D.42126;
  const unsigned char * D.42129;
  unsigned char D.42130;
  int D.42131;
  const unsigned char * D.42132;
  unsigned char D.42133;
  int D.42134;
  _Bool D.42135;
  _Bool D.42136;
  const unsigned char * D.42139;
  unsigned char D.42140;
  int D.42141;
  const unsigned char * D.42142;
  unsigned char D.42143;
  int D.42144;
  _Bool D.42145;
  _Bool D.42146;
  const unsigned char * D.42149;
  unsigned char D.42150;
  int D.42151;
  const unsigned char * D.42152;
  unsigned char D.42153;
  int D.42154;

  D.42068 = cmethod->klass;
  D.42069 = mono_defaults.array_class;
  if (D.42068 == D.42069) goto <D.42070>; else goto <D.42071>;
  <D.42070>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 11;
    if (__s2_len <= 3) goto <D.42073>; else goto <D.42074>;
    <D.42073>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = cmethod->name;
      D.42075 = "UnsafeStore";
      D.42076 = MEM[(const unsigned char *)D.42075];
      D.42077 = (int) D.42076;
      D.42078 = *__s2;
      D.42079 = (int) D.42078;
      __result = D.42077 - D.42079;
      {
        D.42080 = __s2_len != 0;
        D.42081 = __result == 0;
        D.42082 = D.42080 & D.42081;
        if (D.42082 != 0) goto <D.42083>; else goto <D.42084>;
        <D.42083>:
        D.42085 = &MEM[(void *)"UnsafeStore" + 1B];
        D.42086 = *D.42085;
        D.42087 = (int) D.42086;
        D.42088 = __s2 + 1;
        D.42089 = *D.42088;
        D.42090 = (int) D.42089;
        __result = D.42087 - D.42090;
        D.42091 = __s2_len > 1;
        D.42081 = __result == 0;
        D.42092 = D.42091 & D.42081;
        if (D.42092 != 0) goto <D.42093>; else goto <D.42094>;
        <D.42093>:
        D.42095 = &MEM[(void *)"UnsafeStore" + 2B];
        D.42096 = *D.42095;
        D.42097 = (int) D.42096;
        D.42098 = __s2 + 2;
        D.42099 = *D.42098;
        D.42100 = (int) D.42099;
        __result = D.42097 - D.42100;
        D.42101 = __s2_len > 2;
        D.42081 = __result == 0;
        D.42102 = D.42101 & D.42081;
        if (D.42102 != 0) goto <D.42103>; else goto <D.42104>;
        <D.42103>:
        D.42105 = &MEM[(void *)"UnsafeStore" + 3B];
        D.42106 = *D.42105;
        D.42107 = (int) D.42106;
        D.42108 = __s2 + 3;
        D.42109 = *D.42108;
        D.42110 = (int) D.42109;
        __result = D.42107 - D.42110;
        <D.42104>:
        <D.42094>:
        <D.42084>:
      }
      D.26426 = __result;
    }
    iftmp.399 = -D.26426;
    goto <D.42111>;
    <D.42074>:
    D.42112 = cmethod->name;
    iftmp.399 = __builtin_strcmp (D.42112, "UnsafeStore");
    <D.42111>:
    D.26427 = iftmp.399;
  }
  if (D.26427 == 0) goto <D.42113>; else goto <D.42114>;
  <D.42113>:
  D.42115 = emit_array_unsafe_access (cfg, fsig, args, 1);
  return D.42115;
  <D.42114>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 10;
    if (__s2_len <= 3) goto <D.42117>; else goto <D.42118>;
    <D.42117>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = cmethod->name;
      D.42119 = "UnsafeLoad";
      D.42120 = MEM[(const unsigned char *)D.42119];
      D.42121 = (int) D.42120;
      D.42122 = *__s2;
      D.42123 = (int) D.42122;
      __result = D.42121 - D.42123;
      {
        D.42124 = __s2_len != 0;
        D.42125 = __result == 0;
        D.42126 = D.42124 & D.42125;
        if (D.42126 != 0) goto <D.42127>; else goto <D.42128>;
        <D.42127>:
        D.42129 = &MEM[(void *)"UnsafeLoad" + 1B];
        D.42130 = *D.42129;
        D.42131 = (int) D.42130;
        D.42132 = __s2 + 1;
        D.42133 = *D.42132;
        D.42134 = (int) D.42133;
        __result = D.42131 - D.42134;
        D.42135 = __s2_len > 1;
        D.42125 = __result == 0;
        D.42136 = D.42135 & D.42125;
        if (D.42136 != 0) goto <D.42137>; else goto <D.42138>;
        <D.42137>:
        D.42139 = &MEM[(void *)"UnsafeLoad" + 2B];
        D.42140 = *D.42139;
        D.42141 = (int) D.42140;
        D.42142 = __s2 + 2;
        D.42143 = *D.42142;
        D.42144 = (int) D.42143;
        __result = D.42141 - D.42144;
        D.42145 = __s2_len > 2;
        D.42125 = __result == 0;
        D.42146 = D.42145 & D.42125;
        if (D.42146 != 0) goto <D.42147>; else goto <D.42148>;
        <D.42147>:
        D.42149 = &MEM[(void *)"UnsafeLoad" + 3B];
        D.42150 = *D.42149;
        D.42151 = (int) D.42150;
        D.42152 = __s2 + 3;
        D.42153 = *D.42152;
        D.42154 = (int) D.42153;
        __result = D.42151 - D.42154;
        <D.42148>:
        <D.42138>:
        <D.42128>:
      }
      D.26435 = __result;
    }
    iftmp.400 = -D.26435;
    goto <D.42155>;
    <D.42118>:
    D.42112 = cmethod->name;
    iftmp.400 = __builtin_strcmp (D.42112, "UnsafeLoad");
    <D.42155>:
    D.26436 = iftmp.400;
  }
  if (D.26436 == 0) goto <D.42156>; else goto <D.42157>;
  <D.42156>:
  D.42115 = emit_array_unsafe_access (cfg, fsig, args, 0);
  return D.42115;
  <D.42157>:
  <D.42071>:
  D.42115 = 0B;
  return D.42115;
}


emit_array_unsafe_access (struct MonoCompile * cfg, struct MonoMethodSignature * fsig, struct MonoInst * * args, int is_set)
{
  struct MonoType * D.42161;
  struct MonoType * D.42163;
  struct MonoInst * D.42166;
  struct MonoInst * * D.42167;
  struct MonoInst * D.42168;
  struct MonoInst * D.42169;
  struct MonoMemPool * D.42170;
  int D.42171;
  struct MonoInst * D.42172;
  struct MonoType * D.42173;
  unsigned int D.42174;
  short unsigned int D.42175;
  int D.42176;
  int D.42177;
  const unsigned char * D.42178;
  int D.42179;
  unsigned char D.42180;
  <unnamed type> D.42181;
  unsigned int D.42182;
  int D.42183;
  struct MonoBasicBlock * D.42184;
  struct MonoInst * D.42185;
  struct MonoClass * eklass;

  if (is_set != 0) goto <D.42159>; else goto <D.42160>;
  <D.42159>:
  D.42161 = fsig->params[2];
  eklass = mono_class_from_mono_type (D.42161);
  goto <D.42162>;
  <D.42160>:
  D.42163 = fsig->ret;
  eklass = mono_class_from_mono_type (D.42163);
  <D.42162>:
  if (is_set != 0) goto <D.42164>; else goto <D.42165>;
  <D.42164>:
  D.42166 = emit_array_store (cfg, eklass, args, 0);
  return D.42166;
  <D.42165>:
  {
    struct MonoInst * ins;
    struct MonoInst * addr;

    D.42167 = args + 4;
    D.42168 = *D.42167;
    D.42169 = *args;
    addr = mini_emit_ldelema_1_ins (cfg, eklass, D.42169, D.42168, 0);
    D.42170 = cfg->mempool;
    ins = mono_mempool_alloc (D.42170, 48);
    ins->data.op[1].const_val = 0;
    D.42171 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.42171;
    ins->prev = 0B;
    D.42172 = ins->prev;
    ins->next = D.42172;
    D.42173 = &eklass->byval_arg;
    D.42174 = mono_type_to_load_membase (cfg, D.42173);
    D.42175 = (short unsigned int) D.42174;
    ins->opcode = D.42175;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.42176 = ins->sreg3;
    ins->sreg2 = D.42176;
    D.42177 = ins->sreg2;
    ins->sreg1 = D.42177;
    D.42178 = cfg->ip;
    ins->cil_code = D.42178;
    ins->dreg = 0;
    D.42179 = addr->dreg;
    ins->sreg1 = D.42179;
    ins->data.op[0].const_val = 0;
    ins->type = 1;
    D.42173 = &eklass->byval_arg;
    type_to_eval_stack_type (cfg, D.42173, ins);
    D.42180 = ins->type;
    D.42181 = (<unnamed type>) D.42180;
    D.42182 = alloc_dreg (cfg, D.42181);
    D.42183 = (int) D.42182;
    ins->dreg = D.42183;
    D.42184 = cfg->cbb;
    D.42185 = D.42184->last_ins;
    if (D.42185 != 0B) goto <D.42186>; else goto <D.42187>;
    <D.42186>:
    D.42184 = cfg->cbb;
    D.42185 = D.42184->last_ins;
    D.42185->next = ins;
    D.42184 = cfg->cbb;
    D.42185 = D.42184->last_ins;
    ins->prev = D.42185;
    D.42184 = cfg->cbb;
    D.42184->last_ins = ins;
    goto <D.42188>;
    <D.42187>:
    D.42184 = cfg->cbb;
    D.42184 = cfg->cbb;
    D.42184->last_ins = ins;
    D.42185 = D.42184->last_ins;
    D.42184->code = D.42185;
    <D.42188>:
    D.42166 = ins;
    return D.42166;
  }
}


check_method_sharing (struct MonoCompile * cfg, struct MonoMethod * cmethod, gboolean * out_pass_vtable, gboolean * out_pass_mrgctx)
{
  short unsigned int D.42193;
  int D.42194;
  int D.42195;
  struct MonoClass * D.42197;
  unsigned char D.42198;
  unsigned char D.42199;
  struct MonoGenericClass * D.42200;
  struct MonoGenericContainer * D.42202;
  int D.42203;
  _Bool D.42207;
  _Bool D.42208;
  _Bool D.42209;
  struct MonoGenericContext * D.42214;
  struct MonoGenericContext * D.42216;
  struct MonoGenericInst * D.42217;
  struct MonoGenericContext * D.42218;
  struct MonoGenericContext * D.42221;
  struct MonoGenericInst * D.42222;
  _Bool D.42225;
  long int D.42226;
  long int D.42227;
  int D.42230;
  _Bool D.42234;
  _Bool D.42235;
  _Bool D.42236;
  int D.42239;
  struct MonoMethodSignature * D.42242;
  int D.42243;
  gboolean pass_vtable;
  gboolean pass_mrgctx;

  pass_vtable = 0;
  pass_mrgctx = 0;
  D.42193 = cmethod->flags;
  D.42194 = (int) D.42193;
  D.42195 = D.42194 & 16;
  if (D.42195 != 0) goto <D.42192>; else goto <D.42196>;
  <D.42196>:
  D.42197 = cmethod->klass;
  D.42198 = BIT_FIELD_REF <*D.42197, 8, 160>;
  D.42199 = D.42198 & 8;
  if (D.42199 != 0) goto <D.42192>; else goto <D.42191>;
  <D.42192>:
  D.42197 = cmethod->klass;
  D.42200 = D.42197->generic_class;
  if (D.42200 != 0B) goto <D.42190>; else goto <D.42201>;
  <D.42201>:
  D.42197 = cmethod->klass;
  D.42202 = D.42197->generic_container;
  if (D.42202 != 0B) goto <D.42190>; else goto <D.42191>;
  <D.42190>:
  {
    gboolean sharable;

    sharable = 0;
    D.42203 = mono_method_is_generic_sharable (cmethod, 1);
    if (D.42203 != 0) goto <D.42204>; else goto <D.42205>;
    <D.42204>:
    sharable = 1;
    goto <D.42206>;
    <D.42205>:
    {
      gboolean sharing_enabled;
      struct MonoGenericContext * context;
      gboolean context_sharable;

      D.42197 = cmethod->klass;
      sharing_enabled = mono_class_generic_sharing_enabled (D.42197);
      D.42197 = cmethod->klass;
      context = mini_class_get_context (D.42197);
      context_sharable = mono_generic_context_is_sharable (context, 1);
      D.42207 = sharing_enabled != 0;
      D.42208 = context_sharable != 0;
      D.42209 = D.42207 & D.42208;
      sharable = (gboolean) D.42209;
    }
    <D.42206>:
    if (sharable != 0) goto <D.42212>; else goto <D.42213>;
    <D.42212>:
    D.42214 = mini_method_get_context (cmethod);
    if (D.42214 == 0B) goto <D.42210>; else goto <D.42215>;
    <D.42215>:
    D.42216 = mini_method_get_context (cmethod);
    D.42217 = D.42216->method_inst;
    if (D.42217 == 0B) goto <D.42210>; else goto <D.42211>;
    <D.42210>:
    pass_vtable = 1;
    <D.42211>:
    <D.42213>:
  }
  <D.42191>:
  D.42218 = mini_method_get_context (cmethod);
  if (D.42218 != 0B) goto <D.42219>; else goto <D.42220>;
  <D.42219>:
  D.42221 = mini_method_get_context (cmethod);
  D.42222 = D.42221->method_inst;
  if (D.42222 != 0B) goto <D.42223>; else goto <D.42224>;
  <D.42223>:
  D.42225 = pass_vtable != 0;
  D.42226 = (long int) D.42225;
  D.42227 = __builtin_expect (D.42226, 0);
  if (D.42227 != 0) goto <D.42228>; else goto <D.42229>;
  <D.42228>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 2418, "!pass_vtable");
  <D.42229>:
  D.42230 = mono_method_is_generic_sharable (cmethod, 1);
  if (D.42230 != 0) goto <D.42231>; else goto <D.42232>;
  <D.42231>:
  pass_mrgctx = 1;
  goto <D.42233>;
  <D.42232>:
  {
    gboolean sharing_enabled;
    struct MonoGenericContext * context;
    gboolean context_sharable;

    D.42197 = cmethod->klass;
    sharing_enabled = mono_class_generic_sharing_enabled (D.42197);
    context = mini_method_get_context (cmethod);
    context_sharable = mono_generic_context_is_sharable (context, 1);
    D.42234 = sharing_enabled != 0;
    D.42235 = context_sharable != 0;
    D.42236 = D.42234 & D.42235;
    if (D.42236 != 0) goto <D.42237>; else goto <D.42238>;
    <D.42237>:
    pass_mrgctx = 1;
    <D.42238>:
    D.42239 = cfg->gsharedvt;
    if (D.42239 != 0) goto <D.42240>; else goto <D.42241>;
    <D.42240>:
    D.42242 = mono_method_signature (cmethod);
    D.42243 = mini_is_gsharedvt_signature (cfg, D.42242);
    if (D.42243 != 0) goto <D.42244>; else goto <D.42245>;
    <D.42244>:
    pass_mrgctx = 1;
    <D.42245>:
    <D.42241>:
  }
  <D.42233>:
  <D.42224>:
  <D.42220>:
  if (out_pass_vtable != 0B) goto <D.42246>; else goto <D.42247>;
  <D.42246>:
  *out_pass_vtable = pass_vtable;
  <D.42247>:
  if (out_pass_mrgctx != 0B) goto <D.42248>; else goto <D.42249>;
  <D.42248>:
  *out_pass_mrgctx = pass_mrgctx;
  <D.42249>:
}


type_from_stack_type (struct MonoInst * ins)
{
  unsigned char D.42250;
  int D.42251;
  struct MonoType * D.42252;
  struct MonoClass * D.42253;
  struct MonoClass * D.42254;
  struct MonoClass * D.42255;
  struct MonoClass * D.42256;
  struct MonoClass * D.42257;
  struct MonoClass * D.42258;

  D.42250 = ins->type;
  D.42251 = (int) D.42250;
  switch (D.42251) <default: <D.24775>, case 1: <D.24768>, case 2: <D.24769>, case 3: <D.24770>, case 4: <D.24771>, case 5: <D.24772>, case 6: <D.24773>, case 7: <D.24774>>
  <D.24768>:
  D.42253 = mono_defaults.int32_class;
  D.42252 = &D.42253->byval_arg;
  return D.42252;
  <D.24769>:
  D.42254 = mono_defaults.int64_class;
  D.42252 = &D.42254->byval_arg;
  return D.42252;
  <D.24770>:
  D.42255 = mono_defaults.int_class;
  D.42252 = &D.42255->byval_arg;
  return D.42252;
  <D.24771>:
  D.42256 = mono_defaults.double_class;
  D.42252 = &D.42256->byval_arg;
  return D.42252;
  <D.24772>:
  D.42257 = ins->klass;
  D.42252 = &D.42257->this_arg;
  return D.42252;
  <D.24773>:
  D.42258 = mono_defaults.object_class;
  D.42252 = &D.42258->byval_arg;
  return D.42252;
  <D.24774>:
  D.42257 = ins->klass;
  D.42252 = &D.42257->byval_arg;
  return D.42252;
  <D.24775>:
  D.42250 = ins->type;
  D.42251 = (int) D.42250;
  monoeg_g_log (0B, 4, "stack type %d to monotype not handled\n", D.42251);
  <D.24776>:
  goto <D.24776>;
  D.42252 = 0B;
  return D.42252;
}


mini_emit_inst_for_method (struct MonoCompile * cfg, struct MonoMethod * cmethod, struct MonoMethodSignature * fsig, struct MonoInst * * args)
{
  struct MonoClass * runtime_helpers_class.401;
  struct MonoImage * D.42263;
  struct MonoClass * runtime_helpers_class.402;
  struct MonoClass * D.42265;
  struct MonoClass * D.42266;
  int D.26453;
  int iftmp.403;
  int D.26452;
  const char[10] * D.42272;
  unsigned char D.42273;
  int D.42274;
  unsigned char D.42275;
  int D.42276;
  _Bool D.42277;
  _Bool D.42278;
  _Bool D.42279;
  const unsigned char * D.42282;
  unsigned char D.42283;
  int D.42284;
  const unsigned char * D.42285;
  unsigned char D.42286;
  int D.42287;
  _Bool D.42288;
  _Bool D.42289;
  const unsigned char * D.42292;
  unsigned char D.42293;
  int D.42294;
  const unsigned char * D.42295;
  unsigned char D.42296;
  int D.42297;
  _Bool D.42298;
  _Bool D.42299;
  const unsigned char * D.42302;
  unsigned char D.42303;
  int D.42304;
  const unsigned char * D.42305;
  unsigned char D.42306;
  int D.42307;
  const char * D.42309;
  unsigned int D.42312;
  unsigned int D.42313;
  unsigned int D.42314;
  unsigned int D.42315;
  struct MonoInst * * D.42316;
  struct MonoInst * D.42317;
  unsigned int D.42318;
  unsigned int D.42319;
  unsigned int D.42322;
  unsigned char D.42325;
  unsigned char D.42326;
  struct MonoMemPool * D.42329;
  int D.42330;
  struct MonoInst * D.42331;
  int D.42332;
  int D.42333;
  const unsigned char * D.42334;
  struct MonoInst * D.42335;
  int D.42336;
  struct MonoBasicBlock * D.42337;
  struct MonoInst * D.42338;
  int D.42342;
  struct MonoInst * D.42343;
  int D.42344;
  int D.42345;
  unsigned int D.42352;
  int D.42355;
  int D.42360;
  struct MonoInst * D.42361;
  int D.42362;
  int D.42363;
  int D.42367;
  struct MonoInst * D.42368;
  int D.42369;
  int D.42370;
  int D.42375;
  struct MonoInst * D.42376;
  int D.42377;
  int D.42378;
  unsigned char D.42379;
  int D.42384;
  int D.42389;
  struct MonoInst * D.42390;
  int D.42391;
  int D.42392;
  int D.42396;
  struct MonoInst * D.42397;
  int D.42398;
  int D.42399;
  int D.42404;
  struct MonoInst * D.42405;
  int D.42406;
  int D.42407;
  unsigned char D.42408;
  int D.42412;
  struct MonoInst * D.42413;
  int D.42414;
  int D.42415;
  int D.42419;
  struct MonoInst * D.42420;
  int D.42421;
  int D.42422;
  int D.42427;
  struct MonoInst * D.42428;
  int D.42429;
  int D.42430;
  int D.42434;
  struct MonoInst * D.42435;
  int D.42436;
  int D.42437;
  int D.42442;
  struct MonoInst * D.42443;
  int D.42444;
  int D.42445;
  unsigned char D.42446;
  unsigned char D.42447;
  unsigned int D.42451;
  unsigned int D.42452;
  int D.42453;
  struct MonoInst * D.42454;
  int D.42455;
  int D.42456;
  unsigned int D.42457;
  int D.42458;
  struct MonoInst * D.42465;
  int D.26482;
  int iftmp.404;
  int D.26481;
  const char[11] * D.42469;
  unsigned char D.42470;
  int D.42471;
  unsigned char D.42472;
  int D.42473;
  _Bool D.42474;
  _Bool D.42475;
  _Bool D.42476;
  const unsigned char * D.42479;
  unsigned char D.42480;
  int D.42481;
  const unsigned char * D.42482;
  unsigned char D.42483;
  int D.42484;
  _Bool D.42485;
  _Bool D.42486;
  const unsigned char * D.42489;
  unsigned char D.42490;
  int D.42491;
  const unsigned char * D.42492;
  unsigned char D.42493;
  int D.42494;
  _Bool D.42495;
  _Bool D.42496;
  const unsigned char * D.42499;
  unsigned char D.42500;
  int D.42501;
  const unsigned char * D.42502;
  unsigned char D.42503;
  int D.42504;
  unsigned int D.42508;
  unsigned char D.42512;
  unsigned char D.42513;
  int D.26492;
  int iftmp.405;
  int D.26491;
  const char[16] * D.42517;
  unsigned char D.42518;
  int D.42519;
  unsigned char D.42520;
  int D.42521;
  _Bool D.42522;
  _Bool D.42523;
  _Bool D.42524;
  const unsigned char * D.42527;
  unsigned char D.42528;
  int D.42529;
  const unsigned char * D.42530;
  unsigned char D.42531;
  int D.42532;
  _Bool D.42533;
  _Bool D.42534;
  const unsigned char * D.42537;
  unsigned char D.42538;
  int D.42539;
  const unsigned char * D.42540;
  unsigned char D.42541;
  int D.42542;
  _Bool D.42543;
  _Bool D.42544;
  const unsigned char * D.42547;
  unsigned char D.42548;
  int D.42549;
  const unsigned char * D.42550;
  unsigned char D.42551;
  int D.42552;
  unsigned int D.42556;
  unsigned int D.42557;
  int D.42558;
  struct MonoInst * D.42559;
  int D.42560;
  int D.42561;
  int D.42562;
  int D.42566;
  struct MonoInst * D.42567;
  int D.42568;
  int D.42569;
  int D.42573;
  struct MonoInst * D.42574;
  int D.42575;
  int D.42576;
  struct MonoInst * * D.42577;
  struct MonoInst * D.42578;
  int D.42579;
  struct MonoClass * D.42583;
  int D.26506;
  int iftmp.406;
  int D.26505;
  const char[8] * D.42589;
  unsigned char D.42590;
  int D.42591;
  unsigned char D.42592;
  int D.42593;
  _Bool D.42594;
  _Bool D.42595;
  _Bool D.42596;
  const unsigned char * D.42599;
  unsigned char D.42600;
  int D.42601;
  const unsigned char * D.42602;
  unsigned char D.42603;
  int D.42604;
  _Bool D.42605;
  _Bool D.42606;
  const unsigned char * D.42609;
  unsigned char D.42610;
  int D.42611;
  const unsigned char * D.42612;
  unsigned char D.42613;
  int D.42614;
  _Bool D.42615;
  _Bool D.42616;
  const unsigned char * D.42619;
  unsigned char D.42620;
  int D.42621;
  const unsigned char * D.42622;
  unsigned char D.42623;
  int D.42624;
  unsigned int D.42628;
  unsigned int D.42629;
  int D.42630;
  int D.42635;
  struct MonoInst * D.42636;
  int D.42637;
  int D.42638;
  int D.42642;
  struct MonoInst * D.42643;
  int D.42644;
  int D.42645;
  int D.42650;
  struct MonoInst * D.42651;
  int D.42652;
  int D.42653;
  unsigned char D.42654;
  int D.26521;
  int iftmp.407;
  int D.26520;
  const char[20] * D.42665;
  unsigned char D.42666;
  int D.42667;
  unsigned char D.42668;
  int D.42669;
  _Bool D.42670;
  _Bool D.42671;
  _Bool D.42672;
  const unsigned char * D.42675;
  unsigned char D.42676;
  int D.42677;
  const unsigned char * D.42678;
  unsigned char D.42679;
  int D.42680;
  _Bool D.42681;
  _Bool D.42682;
  const unsigned char * D.42685;
  unsigned char D.42686;
  int D.42687;
  const unsigned char * D.42688;
  unsigned char D.42689;
  int D.42690;
  _Bool D.42691;
  _Bool D.42692;
  const unsigned char * D.42695;
  unsigned char D.42696;
  int D.42697;
  const unsigned char * D.42698;
  unsigned char D.42699;
  int D.42700;
  int D.42703;
  unsigned int D.42705;
  unsigned int D.42706;
  int D.42707;
  struct MonoInst * D.42708;
  int D.42709;
  int D.42710;
  int D.26533;
  int iftmp.408;
  int D.26532;
  const char[6] * D.42720;
  unsigned char D.42721;
  int D.42722;
  unsigned char D.42723;
  int D.42724;
  _Bool D.42725;
  _Bool D.42726;
  _Bool D.42727;
  const unsigned char * D.42730;
  unsigned char D.42731;
  int D.42732;
  const unsigned char * D.42733;
  unsigned char D.42734;
  int D.42735;
  _Bool D.42736;
  _Bool D.42737;
  const unsigned char * D.42740;
  unsigned char D.42741;
  int D.42742;
  const unsigned char * D.42743;
  unsigned char D.42744;
  int D.42745;
  _Bool D.42746;
  _Bool D.42747;
  const unsigned char * D.42750;
  unsigned char D.42751;
  int D.42752;
  const unsigned char * D.42753;
  unsigned char D.42754;
  int D.42755;
  struct MonoClass * D.42762;
  int D.42765;
  int D.26542;
  int iftmp.409;
  int D.26541;
  const char[19] * D.42771;
  unsigned char D.42772;
  int D.42773;
  unsigned char D.42774;
  int D.42775;
  _Bool D.42776;
  _Bool D.42777;
  _Bool D.42778;
  const unsigned char * D.42781;
  unsigned char D.42782;
  int D.42783;
  const unsigned char * D.42784;
  unsigned char D.42785;
  int D.42786;
  _Bool D.42787;
  _Bool D.42788;
  const unsigned char * D.42791;
  unsigned char D.42792;
  int D.42793;
  const unsigned char * D.42794;
  unsigned char D.42795;
  int D.42796;
  _Bool D.42797;
  _Bool D.42798;
  const unsigned char * D.42801;
  unsigned char D.42802;
  int D.42803;
  const unsigned char * D.42804;
  unsigned char D.42805;
  int D.42806;
  const char * D.42808;
  char D.42811;
  _Bool D.42812;
  int D.42813;
  int D.26551;
  int iftmp.410;
  int D.26550;
  const char[10] * D.42819;
  unsigned char D.42820;
  int D.42821;
  unsigned char D.42822;
  int D.42823;
  _Bool D.42824;
  _Bool D.42825;
  _Bool D.42826;
  const unsigned char * D.42829;
  unsigned char D.42830;
  int D.42831;
  const unsigned char * D.42832;
  unsigned char D.42833;
  int D.42834;
  _Bool D.42835;
  _Bool D.42836;
  const unsigned char * D.42839;
  unsigned char D.42840;
  int D.42841;
  const unsigned char * D.42842;
  unsigned char D.42843;
  int D.42844;
  _Bool D.42845;
  _Bool D.42846;
  const unsigned char * D.42849;
  unsigned char D.42850;
  int D.42851;
  const unsigned char * D.42852;
  unsigned char D.42853;
  int D.42854;
  int D.26560;
  int iftmp.411;
  int D.26559;
  const char[14] * D.42860;
  unsigned char D.42861;
  int D.42862;
  unsigned char D.42863;
  int D.42864;
  _Bool D.42865;
  _Bool D.42866;
  _Bool D.42867;
  const unsigned char * D.42870;
  unsigned char D.42871;
  int D.42872;
  const unsigned char * D.42873;
  unsigned char D.42874;
  int D.42875;
  _Bool D.42876;
  _Bool D.42877;
  const unsigned char * D.42880;
  unsigned char D.42881;
  int D.42882;
  const unsigned char * D.42883;
  unsigned char D.42884;
  int D.42885;
  _Bool D.42886;
  _Bool D.42887;
  const unsigned char * D.42890;
  unsigned char D.42891;
  int D.42892;
  const unsigned char * D.42893;
  unsigned char D.42894;
  int D.42895;
  short unsigned int D.42897;
  int D.42900;
  unsigned int D.42903;
  unsigned int D.42904;
  int D.26574;
  int iftmp.412;
  int D.26573;
  unsigned char D.42908;
  int D.42909;
  _Bool D.42910;
  _Bool D.42911;
  _Bool D.42912;
  const unsigned char * D.42915;
  unsigned char D.42916;
  int D.42917;
  _Bool D.42918;
  _Bool D.42919;
  const unsigned char * D.42922;
  unsigned char D.42923;
  int D.42924;
  _Bool D.42925;
  _Bool D.42926;
  const unsigned char * D.42929;
  unsigned char D.42930;
  int D.42931;
  _Bool D.42933;
  unsigned int D.42934;
  unsigned int D.42935;
  unsigned int D.42936;
  int D.42937;
  unsigned int D.42938;
  unsigned int D.42939;
  int D.42940;
  int D.42941;
  int D.42946;
  struct MonoInst * D.42947;
  int D.42948;
  int D.42949;
  int D.42953;
  struct MonoInst * D.42954;
  int D.42955;
  int D.42956;
  unsigned char D.42961;
  int D.42965;
  struct MonoInst * D.42966;
  int D.42967;
  int D.42968;
  int D.42972;
  struct MonoInst * D.42973;
  int D.42974;
  int D.42975;
  unsigned int D.42978;
  unsigned int D.42979;
  int D.42980;
  unsigned char * D.42984;
  struct MonoBasicBlock * * D.42987;
  int D.42988;
  unsigned char * D.42989;
  int D.42990;
  int D.42991;
  unsigned int D.42992;
  unsigned int D.42993;
  struct MonoBasicBlock * * D.42994;
  unsigned int D.42995;
  short unsigned int D.43000;
  short unsigned int D.43001;
  _Bool D.43002;
  short unsigned int D.43003;
  _Bool D.43004;
  _Bool D.43005;
  short unsigned int D.43007;
  short unsigned int D.43008;
  struct MonoBasicBlock * * D.43009;
  struct MonoBasicBlock * * D.43010;
  struct MonoBasicBlock * D.43011;
  short unsigned int D.43016;
  _Bool D.43017;
  _Bool D.43018;
  _Bool D.43019;
  short unsigned int D.43021;
  short unsigned int D.43022;
  _Bool D.43023;
  short unsigned int D.43024;
  _Bool D.43025;
  _Bool D.43026;
  void * D.43029;
  struct MonoBasicBlock * * D.43030;
  struct MonoBasicBlock * * D.43031;
  unsigned char D.43035;
  unsigned char D.43036;
  unsigned int D.43039;
  unsigned int D.43040;
  int D.43041;
  short unsigned int D.43048;
  short unsigned int D.43049;
  _Bool D.43050;
  short unsigned int D.43051;
  _Bool D.43052;
  _Bool D.43053;
  short unsigned int D.43059;
  _Bool D.43060;
  _Bool D.43061;
  _Bool D.43062;
  short unsigned int D.43064;
  short unsigned int D.43065;
  _Bool D.43066;
  short unsigned int D.43067;
  _Bool D.43068;
  _Bool D.43069;
  int D.43081;
  struct MonoInst * D.43082;
  int D.43083;
  int D.43084;
  unsigned int D.43087;
  unsigned int D.43088;
  int D.43089;
  unsigned char * D.43093;
  int D.43096;
  int D.43097;
  unsigned int D.43098;
  unsigned int D.43099;
  struct MonoBasicBlock * * D.43100;
  short unsigned int D.43105;
  short unsigned int D.43106;
  _Bool D.43107;
  short unsigned int D.43108;
  _Bool D.43109;
  _Bool D.43110;
  short unsigned int D.43116;
  _Bool D.43117;
  _Bool D.43118;
  _Bool D.43119;
  short unsigned int D.43121;
  short unsigned int D.43122;
  _Bool D.43123;
  short unsigned int D.43124;
  _Bool D.43125;
  _Bool D.43126;
  void * D.43129;
  struct MonoBasicBlock * * D.43130;
  struct MonoBasicBlock * * D.43131;
  unsigned int D.43137;
  unsigned int D.43138;
  int D.43139;
  short unsigned int D.43146;
  short unsigned int D.43147;
  _Bool D.43148;
  short unsigned int D.43149;
  _Bool D.43150;
  _Bool D.43151;
  short unsigned int D.43157;
  _Bool D.43158;
  _Bool D.43159;
  _Bool D.43160;
  short unsigned int D.43162;
  short unsigned int D.43163;
  _Bool D.43164;
  short unsigned int D.43165;
  _Bool D.43166;
  _Bool D.43167;
  unsigned char * D.43170;
  int D.43173;
  int D.43174;
  unsigned int D.43175;
  unsigned int D.43176;
  struct MonoBasicBlock * * D.43177;
  short unsigned int D.43182;
  short unsigned int D.43183;
  _Bool D.43184;
  short unsigned int D.43185;
  _Bool D.43186;
  _Bool D.43187;
  short unsigned int D.43193;
  _Bool D.43194;
  _Bool D.43195;
  _Bool D.43196;
  short unsigned int D.43198;
  short unsigned int D.43199;
  _Bool D.43200;
  short unsigned int D.43201;
  _Bool D.43202;
  _Bool D.43203;
  int D.43211;
  struct MonoInst * D.43212;
  int D.43213;
  int D.43214;
  unsigned char * D.43218;
  int D.43221;
  int D.43222;
  unsigned int D.43223;
  unsigned int D.43224;
  struct MonoBasicBlock * * D.43225;
  short unsigned int D.43230;
  short unsigned int D.43231;
  _Bool D.43232;
  short unsigned int D.43233;
  _Bool D.43234;
  _Bool D.43235;
  short unsigned int D.43241;
  _Bool D.43242;
  _Bool D.43243;
  _Bool D.43244;
  short unsigned int D.43246;
  short unsigned int D.43247;
  _Bool D.43248;
  short unsigned int D.43249;
  _Bool D.43250;
  _Bool D.43251;
  int D.26592;
  int iftmp.413;
  int D.26591;
  const char[9] * D.43261;
  unsigned char D.43262;
  int D.43263;
  unsigned char D.43264;
  int D.43265;
  _Bool D.43266;
  _Bool D.43267;
  _Bool D.43268;
  const unsigned char * D.43271;
  unsigned char D.43272;
  int D.43273;
  const unsigned char * D.43274;
  unsigned char D.43275;
  int D.43276;
  _Bool D.43277;
  _Bool D.43278;
  const unsigned char * D.43281;
  unsigned char D.43282;
  int D.43283;
  const unsigned char * D.43284;
  unsigned char D.43285;
  int D.43286;
  _Bool D.43287;
  _Bool D.43288;
  const unsigned char * D.43291;
  unsigned char D.43292;
  int D.43293;
  const unsigned char * D.43294;
  unsigned char D.43295;
  int D.43296;
  unsigned int D.43300;
  unsigned int D.43301;
  int D.43302;
  int D.43307;
  struct MonoInst * D.43308;
  int D.43309;
  int D.43310;
  int D.43314;
  struct MonoInst * D.43315;
  int D.43316;
  int D.43317;
  int D.43322;
  struct MonoInst * D.43323;
  int D.43324;
  int D.43325;
  unsigned char D.43326;
  int D.26607;
  int iftmp.414;
  int D.26606;
  unsigned char D.43336;
  int D.43337;
  _Bool D.43338;
  _Bool D.43339;
  _Bool D.43340;
  const unsigned char * D.43343;
  unsigned char D.43344;
  int D.43345;
  _Bool D.43346;
  _Bool D.43347;
  const unsigned char * D.43350;
  unsigned char D.43351;
  int D.43352;
  _Bool D.43353;
  _Bool D.43354;
  const unsigned char * D.43357;
  unsigned char D.43358;
  int D.43359;
  unsigned int D.43363;
  int D.43364;
  int D.43369;
  struct MonoInst * D.43370;
  int D.43371;
  int D.43372;
  int D.43376;
  struct MonoInst * D.43377;
  int D.43378;
  int D.43379;
  unsigned char D.43384;
  int D.26620;
  int iftmp.415;
  int D.26619;
  const char[23] * D.43393;
  unsigned char D.43394;
  int D.43395;
  unsigned char D.43396;
  int D.43397;
  _Bool D.43398;
  _Bool D.43399;
  _Bool D.43400;
  const unsigned char * D.43403;
  unsigned char D.43404;
  int D.43405;
  const unsigned char * D.43406;
  unsigned char D.43407;
  int D.43408;
  _Bool D.43409;
  _Bool D.43410;
  const unsigned char * D.43413;
  unsigned char D.43414;
  int D.43415;
  const unsigned char * D.43416;
  unsigned char D.43417;
  int D.43418;
  _Bool D.43419;
  _Bool D.43420;
  const unsigned char * D.43423;
  unsigned char D.43424;
  int D.43425;
  const unsigned char * D.43426;
  unsigned char D.43427;
  int D.43428;
  unsigned int D.43432;
  int D.43433;
  struct MonoClass * D.43437;
  int D.26629;
  int iftmp.416;
  int D.26628;
  const char[13] * D.43443;
  unsigned char D.43444;
  int D.43445;
  unsigned char D.43446;
  int D.43447;
  _Bool D.43448;
  _Bool D.43449;
  _Bool D.43450;
  const unsigned char * D.43453;
  unsigned char D.43454;
  int D.43455;
  const unsigned char * D.43456;
  unsigned char D.43457;
  int D.43458;
  _Bool D.43459;
  _Bool D.43460;
  const unsigned char * D.43463;
  unsigned char D.43464;
  int D.43465;
  const unsigned char * D.43466;
  unsigned char D.43467;
  int D.43468;
  _Bool D.43469;
  _Bool D.43470;
  const unsigned char * D.43473;
  unsigned char D.43474;
  int D.43475;
  const unsigned char * D.43476;
  unsigned char D.43477;
  int D.43478;
  int D.26638;
  int iftmp.417;
  int D.26637;
  const char[14] * D.43488;
  unsigned char D.43489;
  int D.43490;
  unsigned char D.43491;
  int D.43492;
  _Bool D.43493;
  _Bool D.43494;
  _Bool D.43495;
  const unsigned char * D.43498;
  unsigned char D.43499;
  int D.43500;
  const unsigned char * D.43501;
  unsigned char D.43502;
  int D.43503;
  _Bool D.43504;
  _Bool D.43505;
  const unsigned char * D.43508;
  unsigned char D.43509;
  int D.43510;
  const unsigned char * D.43511;
  unsigned char D.43512;
  int D.43513;
  _Bool D.43514;
  _Bool D.43515;
  const unsigned char * D.43518;
  unsigned char D.43519;
  int D.43520;
  const unsigned char * D.43521;
  unsigned char D.43522;
  int D.43523;
  struct MonoClass * D.43528;
  int D.26647;
  int iftmp.418;
  int D.26646;
  const char[6] * D.43534;
  unsigned char D.43535;
  int D.43536;
  unsigned char D.43537;
  int D.43538;
  _Bool D.43539;
  _Bool D.43540;
  _Bool D.43541;
  const unsigned char * D.43544;
  unsigned char D.43545;
  int D.43546;
  const unsigned char * D.43547;
  unsigned char D.43548;
  int D.43549;
  _Bool D.43550;
  _Bool D.43551;
  const unsigned char * D.43554;
  unsigned char D.43555;
  int D.43556;
  const unsigned char * D.43557;
  unsigned char D.43558;
  int D.43559;
  _Bool D.43560;
  _Bool D.43561;
  const unsigned char * D.43564;
  unsigned char D.43565;
  int D.43566;
  const unsigned char * D.43567;
  unsigned char D.43568;
  int D.43569;
  short unsigned int D.43573;
  struct MonoMethod * D.43576;
  unsigned char D.43577;
  unsigned char D.43578;
  int D.26657;
  int iftmp.419;
  int D.26656;
  const char[19] * D.43584;
  unsigned char D.43585;
  int D.43586;
  unsigned char D.43587;
  int D.43588;
  _Bool D.43589;
  _Bool D.43590;
  _Bool D.43591;
  const unsigned char * D.43594;
  unsigned char D.43595;
  int D.43596;
  const unsigned char * D.43597;
  unsigned char D.43598;
  int D.43599;
  _Bool D.43600;
  _Bool D.43601;
  const unsigned char * D.43604;
  unsigned char D.43605;
  int D.43606;
  const unsigned char * D.43607;
  unsigned char D.43608;
  int D.43609;
  _Bool D.43610;
  _Bool D.43611;
  const unsigned char * D.43614;
  unsigned char D.43615;
  int D.43616;
  const unsigned char * D.43617;
  unsigned char D.43618;
  int D.43619;
  const char * D.43621;
  int D.26666;
  int iftmp.420;
  int D.26665;
  unsigned char D.43630;
  int D.43631;
  _Bool D.43632;
  _Bool D.43633;
  _Bool D.43634;
  const unsigned char * D.43637;
  unsigned char D.43638;
  int D.43639;
  _Bool D.43640;
  _Bool D.43641;
  const unsigned char * D.43644;
  unsigned char D.43645;
  int D.43646;
  _Bool D.43647;
  _Bool D.43648;
  const unsigned char * D.43651;
  unsigned char D.43652;
  int D.43653;
  struct MonoMethodSignature * helper_sig_monitor_enter_exit_trampoline_llvm.421;
  struct MonoMethodSignature * helper_sig_monitor_enter_exit_trampoline.422;
  int D.26676;
  int iftmp.423;
  int D.26675;
  const char[5] * D.43665;
  unsigned char D.43666;
  int D.43667;
  unsigned char D.43668;
  int D.43669;
  _Bool D.43670;
  _Bool D.43671;
  _Bool D.43672;
  const unsigned char * D.43675;
  unsigned char D.43676;
  int D.43677;
  const unsigned char * D.43678;
  unsigned char D.43679;
  int D.43680;
  _Bool D.43681;
  _Bool D.43682;
  const unsigned char * D.43685;
  unsigned char D.43686;
  int D.43687;
  const unsigned char * D.43688;
  unsigned char D.43689;
  int D.43690;
  _Bool D.43691;
  _Bool D.43692;
  const unsigned char * D.43695;
  unsigned char D.43696;
  int D.43697;
  const unsigned char * D.43698;
  unsigned char D.43699;
  int D.43700;
  struct MonoImage * D.43710;
  int D.26686;
  int iftmp.424;
  int D.26685;
  const char[17] * D.43715;
  unsigned char D.43716;
  int D.43717;
  unsigned char D.43718;
  int D.43719;
  _Bool D.43720;
  _Bool D.43721;
  _Bool D.43722;
  const unsigned char * D.43725;
  unsigned char D.43726;
  int D.43727;
  const unsigned char * D.43728;
  unsigned char D.43729;
  int D.43730;
  _Bool D.43731;
  _Bool D.43732;
  const unsigned char * D.43735;
  unsigned char D.43736;
  int D.43737;
  const unsigned char * D.43738;
  unsigned char D.43739;
  int D.43740;
  _Bool D.43741;
  _Bool D.43742;
  const unsigned char * D.43745;
  unsigned char D.43746;
  int D.43747;
  const unsigned char * D.43748;
  unsigned char D.43749;
  int D.43750;
  const char * D.43752;
  int D.26695;
  int iftmp.425;
  int D.26694;
  const char[12] * D.43757;
  unsigned char D.43758;
  int D.43759;
  unsigned char D.43760;
  int D.43761;
  _Bool D.43762;
  _Bool D.43763;
  _Bool D.43764;
  const unsigned char * D.43767;
  unsigned char D.43768;
  int D.43769;
  const unsigned char * D.43770;
  unsigned char D.43771;
  int D.43772;
  _Bool D.43773;
  _Bool D.43774;
  const unsigned char * D.43777;
  unsigned char D.43778;
  int D.43779;
  const unsigned char * D.43780;
  unsigned char D.43781;
  int D.43782;
  _Bool D.43783;
  _Bool D.43784;
  const unsigned char * D.43787;
  unsigned char D.43788;
  int D.43789;
  const unsigned char * D.43790;
  unsigned char D.43791;
  int D.43792;
  const char * D.43794;
  int D.26704;
  int iftmp.426;
  int D.26703;
  const char[10] * D.43799;
  unsigned char D.43800;
  int D.43801;
  unsigned char D.43802;
  int D.43803;
  _Bool D.43804;
  _Bool D.43805;
  _Bool D.43806;
  const unsigned char * D.43809;
  unsigned char D.43810;
  int D.43811;
  const unsigned char * D.43812;
  unsigned char D.43813;
  int D.43814;
  _Bool D.43815;
  _Bool D.43816;
  const unsigned char * D.43819;
  unsigned char D.43820;
  int D.43821;
  const unsigned char * D.43822;
  unsigned char D.43823;
  int D.43824;
  _Bool D.43825;
  _Bool D.43826;
  const unsigned char * D.43829;
  unsigned char D.43830;
  int D.43831;
  const unsigned char * D.43832;
  unsigned char D.43833;
  int D.43834;
  struct MonoType * D.43838;
  unsigned char D.43839;
  int D.43844;
  struct MonoInst * D.43845;
  int D.43846;
  int D.43847;
  unsigned int D.43848;
  int D.43849;
  short unsigned int D.43853;
  unsigned int D.43854;
  int D.43855;
  int D.43856;
  guint8 iftmp.427;
  int D.26715;
  int iftmp.428;
  int D.26714;
  const char[10] * D.43868;
  unsigned char D.43869;
  int D.43870;
  unsigned char D.43871;
  int D.43872;
  _Bool D.43873;
  _Bool D.43874;
  _Bool D.43875;
  const unsigned char * D.43878;
  unsigned char D.43879;
  int D.43880;
  const unsigned char * D.43881;
  unsigned char D.43882;
  int D.43883;
  _Bool D.43884;
  _Bool D.43885;
  const unsigned char * D.43888;
  unsigned char D.43889;
  int D.43890;
  const unsigned char * D.43891;
  unsigned char D.43892;
  int D.43893;
  _Bool D.43894;
  _Bool D.43895;
  const unsigned char * D.43898;
  unsigned char D.43899;
  int D.43900;
  const unsigned char * D.43901;
  unsigned char D.43902;
  int D.43903;
  int D.43911;
  struct MonoInst * D.43912;
  int D.43913;
  int D.43914;
  unsigned int D.43915;
  int D.43916;
  short unsigned int D.43920;
  unsigned int D.43921;
  int D.43922;
  int D.43923;
  guint8 iftmp.429;
  int D.26726;
  int iftmp.430;
  int D.26725;
  const char[4] * D.43935;
  unsigned char D.43936;
  int D.43937;
  unsigned char D.43938;
  int D.43939;
  _Bool D.43940;
  _Bool D.43941;
  _Bool D.43942;
  const unsigned char * D.43945;
  unsigned char D.43946;
  int D.43947;
  const unsigned char * D.43948;
  unsigned char D.43949;
  int D.43950;
  _Bool D.43951;
  _Bool D.43952;
  const unsigned char * D.43955;
  unsigned char D.43956;
  int D.43957;
  const unsigned char * D.43958;
  unsigned char D.43959;
  int D.43960;
  _Bool D.43961;
  _Bool D.43962;
  const unsigned char * D.43965;
  unsigned char D.43966;
  int D.43967;
  const unsigned char * D.43968;
  unsigned char D.43969;
  int D.43970;
  short unsigned int D.43978;
  unsigned int D.43979;
  int D.43980;
  guint8 iftmp.431;
  int D.26736;
  int iftmp.432;
  int D.26735;
  const char[9] * D.43991;
  unsigned char D.43992;
  int D.43993;
  unsigned char D.43994;
  int D.43995;
  _Bool D.43996;
  _Bool D.43997;
  _Bool D.43998;
  const unsigned char * D.44001;
  unsigned char D.44002;
  int D.44003;
  const unsigned char * D.44004;
  unsigned char D.44005;
  int D.44006;
  _Bool D.44007;
  _Bool D.44008;
  const unsigned char * D.44011;
  unsigned char D.44012;
  int D.44013;
  const unsigned char * D.44014;
  unsigned char D.44015;
  int D.44016;
  _Bool D.44017;
  _Bool D.44018;
  const unsigned char * D.44021;
  unsigned char D.44022;
  int D.44023;
  const unsigned char * D.44024;
  unsigned char D.44025;
  int D.44026;
  _Bool D.44030;
  short unsigned int D.44038;
  gint32 iftmp.433;
  unsigned int D.44042;
  unsigned int D.44044;
  int D.44048;
  unsigned char D.44049;
  unsigned char D.44050;
  int D.26753;
  int iftmp.434;
  int D.26752;
  const char[16] * D.44058;
  unsigned char D.44059;
  int D.44060;
  unsigned char D.44061;
  int D.44062;
  _Bool D.44063;
  _Bool D.44064;
  _Bool D.44065;
  const unsigned char * D.44068;
  unsigned char D.44069;
  int D.44070;
  const unsigned char * D.44071;
  unsigned char D.44072;
  int D.44073;
  _Bool D.44074;
  _Bool D.44075;
  const unsigned char * D.44078;
  unsigned char D.44079;
  int D.44080;
  const unsigned char * D.44081;
  unsigned char D.44082;
  int D.44083;
  _Bool D.44084;
  _Bool D.44085;
  const unsigned char * D.44088;
  unsigned char D.44089;
  int D.44090;
  const unsigned char * D.44091;
  unsigned char D.44092;
  int D.44093;
  struct MonoType * D.44097;
  unsigned char D.44098;
  gint32 iftmp.435;
  unsigned int D.44113;
  unsigned int D.44115;
  gint32 iftmp.436;
  unsigned int D.44125;
  unsigned int D.44127;
  int D.26764;
  int iftmp.437;
  int D.26763;
  unsigned char D.44139;
  int D.44140;
  _Bool D.44141;
  _Bool D.44142;
  _Bool D.44143;
  const unsigned char * D.44146;
  unsigned char D.44147;
  int D.44148;
  _Bool D.44149;
  _Bool D.44150;
  const unsigned char * D.44153;
  unsigned char D.44154;
  int D.44155;
  _Bool D.44156;
  _Bool D.44157;
  const unsigned char * D.44160;
  unsigned char D.44161;
  int D.44162;
  int D.26773;
  int iftmp.438;
  int D.26772;
  const char[6] * D.44175;
  unsigned char D.44176;
  int D.44177;
  unsigned char D.44178;
  int D.44179;
  _Bool D.44180;
  _Bool D.44181;
  _Bool D.44182;
  const unsigned char * D.44185;
  unsigned char D.44186;
  int D.44187;
  const unsigned char * D.44188;
  unsigned char D.44189;
  int D.44190;
  _Bool D.44191;
  _Bool D.44192;
  const unsigned char * D.44195;
  unsigned char D.44196;
  int D.44197;
  const unsigned char * D.44198;
  unsigned char D.44199;
  int D.44200;
  _Bool D.44201;
  _Bool D.44202;
  const unsigned char * D.44205;
  unsigned char D.44206;
  int D.44207;
  const unsigned char * D.44208;
  unsigned char D.44209;
  int D.44210;
  int D.26782;
  int iftmp.439;
  int D.26781;
  const char[9] * D.44217;
  unsigned char D.44218;
  int D.44219;
  unsigned char D.44220;
  int D.44221;
  _Bool D.44222;
  _Bool D.44223;
  _Bool D.44224;
  const unsigned char * D.44227;
  unsigned char D.44228;
  int D.44229;
  const unsigned char * D.44230;
  unsigned char D.44231;
  int D.44232;
  _Bool D.44233;
  _Bool D.44234;
  const unsigned char * D.44237;
  unsigned char D.44238;
  int D.44239;
  const unsigned char * D.44240;
  unsigned char D.44241;
  int D.44242;
  _Bool D.44243;
  _Bool D.44244;
  const unsigned char * D.44247;
  unsigned char D.44248;
  int D.44249;
  const unsigned char * D.44250;
  unsigned char D.44251;
  int D.44252;
  int D.44256;
  int D.26791;
  int iftmp.440;
  int D.26790;
  const char[23] * D.44268;
  unsigned char D.44269;
  int D.44270;
  unsigned char D.44271;
  int D.44272;
  _Bool D.44273;
  _Bool D.44274;
  _Bool D.44275;
  const unsigned char * D.44278;
  unsigned char D.44279;
  int D.44280;
  const unsigned char * D.44281;
  unsigned char D.44282;
  int D.44283;
  _Bool D.44284;
  _Bool D.44285;
  const unsigned char * D.44288;
  unsigned char D.44289;
  int D.44290;
  const unsigned char * D.44291;
  unsigned char D.44292;
  int D.44293;
  _Bool D.44294;
  _Bool D.44295;
  const unsigned char * D.44298;
  unsigned char D.44299;
  int D.44300;
  const unsigned char * D.44301;
  unsigned char D.44302;
  int D.44303;
  int D.26800;
  int iftmp.441;
  int D.26799;
  const char[12] * D.44310;
  unsigned char D.44311;
  int D.44312;
  unsigned char D.44313;
  int D.44314;
  _Bool D.44315;
  _Bool D.44316;
  _Bool D.44317;
  const unsigned char * D.44320;
  unsigned char D.44321;
  int D.44322;
  const unsigned char * D.44323;
  unsigned char D.44324;
  int D.44325;
  _Bool D.44326;
  _Bool D.44327;
  const unsigned char * D.44330;
  unsigned char D.44331;
  int D.44332;
  const unsigned char * D.44333;
  unsigned char D.44334;
  int D.44335;
  _Bool D.44336;
  _Bool D.44337;
  const unsigned char * D.44340;
  unsigned char D.44341;
  int D.44342;
  const unsigned char * D.44343;
  unsigned char D.44344;
  int D.44345;
  unsigned int D.44349;
  int D.44350;
  struct MonoClass * D.44355;
  int D.26809;
  int iftmp.442;
  int D.26808;
  struct MonoAssembly * D.44364;
  const char[8] * D.44365;
  unsigned char D.44366;
  int D.44367;
  unsigned char D.44368;
  int D.44369;
  _Bool D.44370;
  _Bool D.44371;
  _Bool D.44372;
  const unsigned char * D.44375;
  unsigned char D.44376;
  int D.44377;
  const unsigned char * D.44378;
  unsigned char D.44379;
  int D.44380;
  _Bool D.44381;
  _Bool D.44382;
  const unsigned char * D.44385;
  unsigned char D.44386;
  int D.44387;
  const unsigned char * D.44388;
  unsigned char D.44389;
  int D.44390;
  _Bool D.44391;
  _Bool D.44392;
  const unsigned char * D.44395;
  unsigned char D.44396;
  int D.44397;
  const unsigned char * D.44398;
  unsigned char D.44399;
  int D.44400;
  const char * D.44402;
  int D.26818;
  int iftmp.443;
  int D.26817;
  const char[10] * D.44407;
  unsigned char D.44408;
  int D.44409;
  unsigned char D.44410;
  int D.44411;
  _Bool D.44412;
  _Bool D.44413;
  _Bool D.44414;
  const unsigned char * D.44417;
  unsigned char D.44418;
  int D.44419;
  const unsigned char * D.44420;
  unsigned char D.44421;
  int D.44422;
  _Bool D.44423;
  _Bool D.44424;
  const unsigned char * D.44427;
  unsigned char D.44428;
  int D.44429;
  const unsigned char * D.44430;
  unsigned char D.44431;
  int D.44432;
  _Bool D.44433;
  _Bool D.44434;
  const unsigned char * D.44437;
  unsigned char D.44438;
  int D.44439;
  const unsigned char * D.44440;
  unsigned char D.44441;
  int D.44442;
  int D.26827;
  int iftmp.444;
  int D.26826;
  const char[9] * D.44447;
  unsigned char D.44448;
  int D.44449;
  unsigned char D.44450;
  int D.44451;
  _Bool D.44452;
  _Bool D.44453;
  _Bool D.44454;
  const unsigned char * D.44457;
  unsigned char D.44458;
  int D.44459;
  const unsigned char * D.44460;
  unsigned char D.44461;
  int D.44462;
  _Bool D.44463;
  _Bool D.44464;
  const unsigned char * D.44467;
  unsigned char D.44468;
  int D.44469;
  const unsigned char * D.44470;
  unsigned char D.44471;
  int D.44472;
  _Bool D.44473;
  _Bool D.44474;
  const unsigned char * D.44477;
  unsigned char D.44478;
  int D.44479;
  const unsigned char * D.44480;
  unsigned char D.44481;
  int D.44482;
  int D.26836;
  int iftmp.445;
  int D.26835;
  const char[10] * D.44489;
  unsigned char D.44490;
  int D.44491;
  unsigned char D.44492;
  int D.44493;
  _Bool D.44494;
  _Bool D.44495;
  _Bool D.44496;
  const unsigned char * D.44499;
  unsigned char D.44500;
  int D.44501;
  const unsigned char * D.44502;
  unsigned char D.44503;
  int D.44504;
  _Bool D.44505;
  _Bool D.44506;
  const unsigned char * D.44509;
  unsigned char D.44510;
  int D.44511;
  const unsigned char * D.44512;
  unsigned char D.44513;
  int D.44514;
  _Bool D.44515;
  _Bool D.44516;
  const unsigned char * D.44519;
  unsigned char D.44520;
  int D.44521;
  const unsigned char * D.44522;
  unsigned char D.44523;
  int D.44524;
  unsigned char D.44528;
  short unsigned int D.44531;
  _Bool D.44532;
  _Bool D.44533;
  _Bool D.44534;
  unsigned int D.44537;
  struct MonoInst * ins;
  static struct MonoClass * runtime_helpers_class = 0B;

  ins = 0B;
  runtime_helpers_class.401 = runtime_helpers_class;
  if (runtime_helpers_class.401 == 0B) goto <D.42261>; else goto <D.42262>;
  <D.42261>:
  D.42263 = mono_defaults.corlib;
  runtime_helpers_class.402 = mono_class_from_name (D.42263, "System.Runtime.CompilerServices", "RuntimeHelpers");
  runtime_helpers_class = runtime_helpers_class.402;
  <D.42262>:
  D.42265 = cmethod->klass;
  D.42266 = mono_defaults.string_class;
  if (D.42265 == D.42266) goto <D.42267>; else goto <D.42268>;
  <D.42267>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 9;
    if (__s2_len <= 3) goto <D.42270>; else goto <D.42271>;
    <D.42270>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = cmethod->name;
      D.42272 = "get_Chars";
      D.42273 = MEM[(const unsigned char *)D.42272];
      D.42274 = (int) D.42273;
      D.42275 = *__s2;
      D.42276 = (int) D.42275;
      __result = D.42274 - D.42276;
      {
        D.42277 = __s2_len != 0;
        D.42278 = __result == 0;
        D.42279 = D.42277 & D.42278;
        if (D.42279 != 0) goto <D.42280>; else goto <D.42281>;
        <D.42280>:
        D.42282 = &MEM[(void *)"get_Chars" + 1B];
        D.42283 = *D.42282;
        D.42284 = (int) D.42283;
        D.42285 = __s2 + 1;
        D.42286 = *D.42285;
        D.42287 = (int) D.42286;
        __result = D.42284 - D.42287;
        D.42288 = __s2_len > 1;
        D.42278 = __result == 0;
        D.42289 = D.42288 & D.42278;
        if (D.42289 != 0) goto <D.42290>; else goto <D.42291>;
        <D.42290>:
        D.42292 = &MEM[(void *)"get_Chars" + 2B];
        D.42293 = *D.42292;
        D.42294 = (int) D.42293;
        D.42295 = __s2 + 2;
        D.42296 = *D.42295;
        D.42297 = (int) D.42296;
        __result = D.42294 - D.42297;
        D.42298 = __s2_len > 2;
        D.42278 = __result == 0;
        D.42299 = D.42298 & D.42278;
        if (D.42299 != 0) goto <D.42300>; else goto <D.42301>;
        <D.42300>:
        D.42302 = &MEM[(void *)"get_Chars" + 3B];
        D.42303 = *D.42302;
        D.42304 = (int) D.42303;
        D.42305 = __s2 + 3;
        D.42306 = *D.42305;
        D.42307 = (int) D.42306;
        __result = D.42304 - D.42307;
        <D.42301>:
        <D.42291>:
        <D.42281>:
      }
      D.26452 = __result;
    }
    iftmp.403 = -D.26452;
    goto <D.42308>;
    <D.42271>:
    D.42309 = cmethod->name;
    iftmp.403 = __builtin_strcmp (D.42309, "get_Chars");
    <D.42308>:
    D.26453 = iftmp.403;
  }
  if (D.26453 == 0) goto <D.42310>; else goto <D.42311>;
  <D.42310>:
  {
    int dreg;
    int index_reg;
    int mult_reg;
    int add_reg;

    D.42312 = alloc_ireg (cfg);
    dreg = (int) D.42312;
    D.42313 = alloc_preg (cfg);
    index_reg = (int) D.42313;
    D.42314 = alloc_preg (cfg);
    mult_reg = (int) D.42314;
    D.42315 = alloc_preg (cfg);
    add_reg = (int) D.42315;
    D.42316 = args + 4;
    D.42317 = *D.42316;
    index_reg = D.42317->dreg;
    D.42318 = cfg->opt;
    D.42319 = D.42318 & 134217728;
    if (D.42319 == 0) goto <D.42320>; else goto <D.42321>;
    <D.42320>:
    D.42318 = cfg->opt;
    D.42322 = D.42318 & 262144;
    if (D.42322 == 0) goto <D.42323>; else goto <D.42324>;
    <D.42323>:
    D.42325 = BIT_FIELD_REF <*cfg, 8, 3424>;
    D.42326 = D.42325 & 64;
    if (D.42326 != 0) goto <D.42327>; else goto <D.42328>;
    <D.42327>:
    {
      struct MonoInst * inst;

      D.42329 = cfg->mempool;
      inst = mono_mempool_alloc (D.42329, 48);
      inst->data.op[1].const_val = 0;
      D.42330 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.42330;
      inst->prev = 0B;
      D.42331 = inst->prev;
      inst->next = D.42331;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.42332 = inst->sreg3;
      inst->sreg2 = D.42332;
      D.42333 = inst->sreg2;
      inst->sreg1 = D.42333;
      D.42334 = cfg->ip;
      inst->cil_code = D.42334;
      inst->dreg = -1;
      D.42335 = *args;
      D.42336 = D.42335->dreg;
      inst->sreg1 = D.42336;
      inst->data.op[1].const_val = 0;
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      if (D.42338 != 0B) goto <D.42339>; else goto <D.42340>;
      <D.42339>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.42338->next = inst;
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      inst->prev = D.42338;
      D.42337 = cfg->cbb;
      D.42337->last_ins = inst;
      goto <D.42341>;
      <D.42340>:
      D.42337 = cfg->cbb;
      D.42337 = cfg->cbb;
      D.42337->last_ins = inst;
      D.42338 = D.42337->last_ins;
      D.42337->code = D.42338;
      <D.42341>:
    }
    {
      struct MonoInst * inst;

      D.42329 = cfg->mempool;
      inst = mono_mempool_alloc (D.42329, 48);
      inst->data.op[1].const_val = 0;
      D.42342 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.42342;
      inst->prev = 0B;
      D.42343 = inst->prev;
      inst->next = D.42343;
      inst->opcode = 455;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.42344 = inst->sreg3;
      inst->sreg2 = D.42344;
      D.42345 = inst->sreg2;
      inst->sreg1 = D.42345;
      D.42334 = cfg->ip;
      inst->cil_code = D.42334;
      inst->data.op[1].p = "NullReferenceException";
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      if (D.42338 != 0B) goto <D.42346>; else goto <D.42347>;
      <D.42346>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.42338->next = inst;
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      inst->prev = D.42338;
      D.42337 = cfg->cbb;
      D.42337->last_ins = inst;
      goto <D.42348>;
      <D.42347>:
      D.42337 = cfg->cbb;
      D.42337 = cfg->cbb;
      D.42337->last_ins = inst;
      D.42338 = D.42337->last_ins;
      D.42337->code = D.42338;
      <D.42348>:
    }
    goto <D.42349>;
    <D.42328>:
    <D.42349>:
    if (0 != 0) goto <D.42350>; else goto <D.42351>;
    <D.42350>:
    {
      int _length_reg;

      D.42352 = alloc_ireg (cfg);
      _length_reg = (int) D.42352;
      if (1 != 0) goto <D.42353>; else goto <D.42354>;
      <D.42353>:
      {
        struct MonoInst * inst;
        int __ins_flags;

        __ins_flags = 32;
        D.42355 = __ins_flags & 32;
        if (D.42355 != 0) goto <D.42356>; else goto <D.42357>;
        <D.42356>:
        D.42325 = BIT_FIELD_REF <*cfg, 8, 3424>;
        D.42326 = D.42325 & 64;
        if (D.42326 != 0) goto <D.42358>; else goto <D.42359>;
        <D.42358>:
        {
          struct MonoInst * inst;

          D.42329 = cfg->mempool;
          inst = mono_mempool_alloc (D.42329, 48);
          inst->data.op[1].const_val = 0;
          D.42360 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.42360;
          inst->prev = 0B;
          D.42361 = inst->prev;
          inst->next = D.42361;
          inst->opcode = 323;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.42362 = inst->sreg3;
          inst->sreg2 = D.42362;
          D.42363 = inst->sreg2;
          inst->sreg1 = D.42363;
          D.42334 = cfg->ip;
          inst->cil_code = D.42334;
          inst->dreg = -1;
          D.42335 = *args;
          D.42336 = D.42335->dreg;
          inst->sreg1 = D.42336;
          inst->data.op[1].const_val = 0;
          D.42337 = cfg->cbb;
          D.42338 = D.42337->last_ins;
          if (D.42338 != 0B) goto <D.42364>; else goto <D.42365>;
          <D.42364>:
          D.42337 = cfg->cbb;
          D.42338 = D.42337->last_ins;
          D.42338->next = inst;
          D.42337 = cfg->cbb;
          D.42338 = D.42337->last_ins;
          inst->prev = D.42338;
          D.42337 = cfg->cbb;
          D.42337->last_ins = inst;
          goto <D.42366>;
          <D.42365>:
          D.42337 = cfg->cbb;
          D.42337 = cfg->cbb;
          D.42337->last_ins = inst;
          D.42338 = D.42337->last_ins;
          D.42337->code = D.42338;
          <D.42366>:
        }
        {
          struct MonoInst * inst;

          D.42329 = cfg->mempool;
          inst = mono_mempool_alloc (D.42329, 48);
          inst->data.op[1].const_val = 0;
          D.42367 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.42367;
          inst->prev = 0B;
          D.42368 = inst->prev;
          inst->next = D.42368;
          inst->opcode = 455;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.42369 = inst->sreg3;
          inst->sreg2 = D.42369;
          D.42370 = inst->sreg2;
          inst->sreg1 = D.42370;
          D.42334 = cfg->ip;
          inst->cil_code = D.42334;
          inst->data.op[1].p = "NullReferenceException";
          D.42337 = cfg->cbb;
          D.42338 = D.42337->last_ins;
          if (D.42338 != 0B) goto <D.42371>; else goto <D.42372>;
          <D.42371>:
          D.42337 = cfg->cbb;
          D.42338 = D.42337->last_ins;
          D.42338->next = inst;
          D.42337 = cfg->cbb;
          D.42338 = D.42337->last_ins;
          inst->prev = D.42338;
          D.42337 = cfg->cbb;
          D.42337->last_ins = inst;
          goto <D.42373>;
          <D.42372>:
          D.42337 = cfg->cbb;
          D.42337 = cfg->cbb;
          D.42337->last_ins = inst;
          D.42338 = D.42337->last_ins;
          D.42337->code = D.42338;
          <D.42373>:
        }
        goto <D.42374>;
        <D.42359>:
        <D.42374>:
        <D.42357>:
        D.42329 = cfg->mempool;
        inst = mono_mempool_alloc (D.42329, 48);
        inst->data.op[1].const_val = 0;
        D.42375 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.42375;
        inst->prev = 0B;
        D.42376 = inst->prev;
        inst->next = D.42376;
        inst->opcode = 396;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.42377 = inst->sreg3;
        inst->sreg2 = D.42377;
        D.42378 = inst->sreg2;
        inst->sreg1 = D.42378;
        D.42334 = cfg->ip;
        inst->cil_code = D.42334;
        inst->dreg = _length_reg;
        D.42335 = *args;
        D.42336 = D.42335->dreg;
        inst->sreg1 = D.42336;
        inst->data.op[0].const_val = 8;
        inst->type = 1;
        D.42379 = (unsigned char) __ins_flags;
        inst->flags = D.42379;
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        if (D.42338 != 0B) goto <D.42380>; else goto <D.42381>;
        <D.42380>:
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        D.42338->next = inst;
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        inst->prev = D.42338;
        D.42337 = cfg->cbb;
        D.42337->last_ins = inst;
        goto <D.42382>;
        <D.42381>:
        D.42337 = cfg->cbb;
        D.42337 = cfg->cbb;
        D.42337->last_ins = inst;
        D.42338 = D.42337->last_ins;
        D.42337->code = D.42338;
        <D.42382>:
      }
      goto <D.42383>;
      <D.42354>:
      {
        struct MonoInst * inst;
        int __ins_flags;

        __ins_flags = 64;
        D.42384 = __ins_flags & 32;
        if (D.42384 != 0) goto <D.42385>; else goto <D.42386>;
        <D.42385>:
        D.42325 = BIT_FIELD_REF <*cfg, 8, 3424>;
        D.42326 = D.42325 & 64;
        if (D.42326 != 0) goto <D.42387>; else goto <D.42388>;
        <D.42387>:
        {
          struct MonoInst * inst;

          D.42329 = cfg->mempool;
          inst = mono_mempool_alloc (D.42329, 48);
          inst->data.op[1].const_val = 0;
          D.42389 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.42389;
          inst->prev = 0B;
          D.42390 = inst->prev;
          inst->next = D.42390;
          inst->opcode = 323;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.42391 = inst->sreg3;
          inst->sreg2 = D.42391;
          D.42392 = inst->sreg2;
          inst->sreg1 = D.42392;
          D.42334 = cfg->ip;
          inst->cil_code = D.42334;
          inst->dreg = -1;
          D.42335 = *args;
          D.42336 = D.42335->dreg;
          inst->sreg1 = D.42336;
          inst->data.op[1].const_val = 0;
          D.42337 = cfg->cbb;
          D.42338 = D.42337->last_ins;
          if (D.42338 != 0B) goto <D.42393>; else goto <D.42394>;
          <D.42393>:
          D.42337 = cfg->cbb;
          D.42338 = D.42337->last_ins;
          D.42338->next = inst;
          D.42337 = cfg->cbb;
          D.42338 = D.42337->last_ins;
          inst->prev = D.42338;
          D.42337 = cfg->cbb;
          D.42337->last_ins = inst;
          goto <D.42395>;
          <D.42394>:
          D.42337 = cfg->cbb;
          D.42337 = cfg->cbb;
          D.42337->last_ins = inst;
          D.42338 = D.42337->last_ins;
          D.42337->code = D.42338;
          <D.42395>:
        }
        {
          struct MonoInst * inst;

          D.42329 = cfg->mempool;
          inst = mono_mempool_alloc (D.42329, 48);
          inst->data.op[1].const_val = 0;
          D.42396 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.42396;
          inst->prev = 0B;
          D.42397 = inst->prev;
          inst->next = D.42397;
          inst->opcode = 455;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.42398 = inst->sreg3;
          inst->sreg2 = D.42398;
          D.42399 = inst->sreg2;
          inst->sreg1 = D.42399;
          D.42334 = cfg->ip;
          inst->cil_code = D.42334;
          inst->data.op[1].p = "NullReferenceException";
          D.42337 = cfg->cbb;
          D.42338 = D.42337->last_ins;
          if (D.42338 != 0B) goto <D.42400>; else goto <D.42401>;
          <D.42400>:
          D.42337 = cfg->cbb;
          D.42338 = D.42337->last_ins;
          D.42338->next = inst;
          D.42337 = cfg->cbb;
          D.42338 = D.42337->last_ins;
          inst->prev = D.42338;
          D.42337 = cfg->cbb;
          D.42337->last_ins = inst;
          goto <D.42402>;
          <D.42401>:
          D.42337 = cfg->cbb;
          D.42337 = cfg->cbb;
          D.42337->last_ins = inst;
          D.42338 = D.42337->last_ins;
          D.42337->code = D.42338;
          <D.42402>:
        }
        goto <D.42403>;
        <D.42388>:
        <D.42403>:
        <D.42386>:
        D.42329 = cfg->mempool;
        inst = mono_mempool_alloc (D.42329, 48);
        inst->data.op[1].const_val = 0;
        D.42404 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.42404;
        inst->prev = 0B;
        D.42405 = inst->prev;
        inst->next = D.42405;
        inst->opcode = 396;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.42406 = inst->sreg3;
        inst->sreg2 = D.42406;
        D.42407 = inst->sreg2;
        inst->sreg1 = D.42407;
        D.42334 = cfg->ip;
        inst->cil_code = D.42334;
        inst->dreg = _length_reg;
        D.42335 = *args;
        D.42336 = D.42335->dreg;
        inst->sreg1 = D.42336;
        inst->data.op[0].const_val = 8;
        inst->type = 1;
        D.42408 = (unsigned char) __ins_flags;
        inst->flags = D.42408;
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        if (D.42338 != 0B) goto <D.42409>; else goto <D.42410>;
        <D.42409>:
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        D.42338->next = inst;
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        inst->prev = D.42338;
        D.42337 = cfg->cbb;
        D.42337->last_ins = inst;
        goto <D.42411>;
        <D.42410>:
        D.42337 = cfg->cbb;
        D.42337 = cfg->cbb;
        D.42337->last_ins = inst;
        D.42338 = D.42337->last_ins;
        D.42337->code = D.42338;
        <D.42411>:
      }
      <D.42383>:
      {
        struct MonoInst * inst;

        D.42329 = cfg->mempool;
        inst = mono_mempool_alloc (D.42329, 48);
        inst->data.op[1].const_val = 0;
        D.42412 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.42412;
        inst->prev = 0B;
        D.42413 = inst->prev;
        inst->next = D.42413;
        inst->opcode = 322;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.42414 = inst->sreg3;
        inst->sreg2 = D.42414;
        D.42415 = inst->sreg2;
        inst->sreg1 = D.42415;
        D.42334 = cfg->ip;
        inst->cil_code = D.42334;
        inst->dreg = -1;
        inst->sreg1 = _length_reg;
        inst->sreg2 = index_reg;
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        if (D.42338 != 0B) goto <D.42416>; else goto <D.42417>;
        <D.42416>:
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        D.42338->next = inst;
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        inst->prev = D.42338;
        D.42337 = cfg->cbb;
        D.42337->last_ins = inst;
        goto <D.42418>;
        <D.42417>:
        D.42337 = cfg->cbb;
        D.42337 = cfg->cbb;
        D.42337->last_ins = inst;
        D.42338 = D.42337->last_ins;
        D.42337->code = D.42338;
        <D.42418>:
      }
      {
        struct MonoInst * inst;

        D.42329 = cfg->mempool;
        inst = mono_mempool_alloc (D.42329, 48);
        inst->data.op[1].const_val = 0;
        D.42419 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.42419;
        inst->prev = 0B;
        D.42420 = inst->prev;
        inst->next = D.42420;
        inst->opcode = 463;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.42421 = inst->sreg3;
        inst->sreg2 = D.42421;
        D.42422 = inst->sreg2;
        inst->sreg1 = D.42422;
        D.42334 = cfg->ip;
        inst->cil_code = D.42334;
        inst->data.op[1].p = "IndexOutOfRangeException";
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        if (D.42338 != 0B) goto <D.42423>; else goto <D.42424>;
        <D.42423>:
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        D.42338->next = inst;
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        inst->prev = D.42338;
        D.42337 = cfg->cbb;
        D.42337->last_ins = inst;
        goto <D.42425>;
        <D.42424>:
        D.42337 = cfg->cbb;
        D.42337 = cfg->cbb;
        D.42337->last_ins = inst;
        D.42338 = D.42337->last_ins;
        D.42337->code = D.42338;
        <D.42425>:
      }
    }
    goto <D.42426>;
    <D.42351>:
    {
      struct MonoInst * inst;

      D.42329 = cfg->mempool;
      inst = mono_mempool_alloc (D.42329, 48);
      inst->data.op[1].const_val = 0;
      D.42427 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.42427;
      inst->prev = 0B;
      D.42428 = inst->prev;
      inst->next = D.42428;
      inst->opcode = 1006;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.42429 = inst->sreg3;
      inst->sreg2 = D.42429;
      D.42430 = inst->sreg2;
      inst->sreg1 = D.42430;
      D.42334 = cfg->ip;
      inst->cil_code = D.42334;
      D.42335 = *args;
      D.42336 = D.42335->dreg;
      inst->sreg1 = D.42336;
      inst->data.op[0].const_val = 8;
      inst->sreg2 = index_reg;
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      if (D.42338 != 0B) goto <D.42431>; else goto <D.42432>;
      <D.42431>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.42338->next = inst;
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      inst->prev = D.42338;
      D.42337 = cfg->cbb;
      D.42337->last_ins = inst;
      goto <D.42433>;
      <D.42432>:
      D.42337 = cfg->cbb;
      D.42337 = cfg->cbb;
      D.42337->last_ins = inst;
      D.42338 = D.42337->last_ins;
      D.42337->code = D.42338;
      <D.42433>:
      {
        struct MonoInst * inst;

        D.42329 = cfg->mempool;
        inst = mono_mempool_alloc (D.42329, 48);
        inst->data.op[1].const_val = 0;
        D.42434 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.42434;
        inst->prev = 0B;
        D.42435 = inst->prev;
        inst->next = D.42435;
        inst->opcode = 463;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.42436 = inst->sreg3;
        inst->sreg2 = D.42436;
        D.42437 = inst->sreg2;
        inst->sreg1 = D.42437;
        D.42334 = cfg->ip;
        inst->cil_code = D.42334;
        inst->data.op[1].p = "IndexOutOfRangeException";
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        if (D.42338 != 0B) goto <D.42438>; else goto <D.42439>;
        <D.42438>:
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        D.42338->next = inst;
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        inst->prev = D.42338;
        D.42337 = cfg->cbb;
        D.42337->last_ins = inst;
        goto <D.42440>;
        <D.42439>:
        D.42337 = cfg->cbb;
        D.42337 = cfg->cbb;
        D.42337->last_ins = inst;
        D.42338 = D.42337->last_ins;
        D.42337->code = D.42338;
        <D.42440>:
      }
    }
    <D.42426>:
    goto <D.42441>;
    <D.42324>:
    {
      struct MonoInst * ins;

      D.42329 = cfg->mempool;
      ins = mono_mempool_alloc (D.42329, 48);
      ins->data.op[1].const_val = 0;
      D.42442 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.42442;
      ins->prev = 0B;
      D.42443 = ins->prev;
      ins->next = D.42443;
      ins->opcode = 788;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.42444 = ins->sreg3;
      ins->sreg2 = D.42444;
      D.42445 = ins->sreg2;
      ins->sreg1 = D.42445;
      D.42334 = cfg->ip;
      ins->cil_code = D.42334;
      D.42335 = *args;
      D.42336 = D.42335->dreg;
      ins->sreg1 = D.42336;
      ins->sreg2 = index_reg;
      ins->data.op[1].const_val = 8;
      D.42446 = ins->flags;
      D.42447 = D.42446 | 32;
      ins->flags = D.42447;
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      if (D.42338 != 0B) goto <D.42448>; else goto <D.42449>;
      <D.42448>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.42338->next = ins;
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      ins->prev = D.42338;
      D.42337 = cfg->cbb;
      D.42337->last_ins = ins;
      goto <D.42450>;
      <D.42449>:
      D.42337 = cfg->cbb;
      D.42337 = cfg->cbb;
      D.42337->last_ins = ins;
      D.42338 = D.42337->last_ins;
      D.42337->code = D.42338;
      <D.42450>:
      D.42451 = cfg->flags;
      D.42452 = D.42451 | 256;
      cfg->flags = D.42452;
      D.42337 = cfg->cbb;
      D.42337->has_array_access = 1;
    }
    <D.42441>:
    <D.42321>:
    D.42329 = cfg->mempool;
    ins = mono_mempool_alloc (D.42329, 48);
    ins->data.op[1].const_val = 0;
    D.42453 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.42453;
    ins->prev = 0B;
    D.42454 = ins->prev;
    ins->next = D.42454;
    ins->opcode = 1037;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.42455 = ins->sreg3;
    ins->sreg2 = D.42455;
    D.42456 = ins->sreg2;
    ins->sreg1 = D.42456;
    D.42334 = cfg->ip;
    ins->cil_code = D.42334;
    D.42457 = alloc_ireg_mp (cfg);
    D.42458 = (int) D.42457;
    ins->dreg = D.42458;
    D.42335 = *args;
    D.42336 = D.42335->dreg;
    ins->sreg1 = D.42336;
    ins->sreg2 = index_reg;
    ins->data.op[1].const_val = 12;
    ins->backend.shift_amount = 1;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    if (D.42338 != 0B) goto <D.42459>; else goto <D.42460>;
    <D.42459>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    D.42338->next = ins;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    ins->prev = D.42338;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    goto <D.42461>;
    <D.42460>:
    D.42337 = cfg->cbb;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    D.42338 = D.42337->last_ins;
    D.42337->code = D.42338;
    <D.42461>:
    add_reg = ins->dreg;
    mult_reg = 0;
    D.42329 = cfg->mempool;
    ins = mono_mempool_alloc (D.42329, 48);
    ins->data.op[1].const_val = 0;
    D.42453 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.42453;
    ins->prev = 0B;
    D.42454 = ins->prev;
    ins->next = D.42454;
    ins->opcode = 395;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.42455 = ins->sreg3;
    ins->sreg2 = D.42455;
    D.42456 = ins->sreg2;
    ins->sreg1 = D.42456;
    D.42334 = cfg->ip;
    ins->cil_code = D.42334;
    ins->dreg = dreg;
    ins->sreg1 = add_reg;
    ins->data.op[0].const_val = 0;
    ins->type = 1;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    if (D.42338 != 0B) goto <D.42462>; else goto <D.42463>;
    <D.42462>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    D.42338->next = ins;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    ins->prev = D.42338;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    goto <D.42464>;
    <D.42463>:
    D.42337 = cfg->cbb;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    D.42338 = D.42337->last_ins;
    D.42337->code = D.42338;
    <D.42464>:
    type_from_op (ins, 0B, 0B);
    D.42465 = ins;
    return D.42465;
  }
  <D.42311>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 10;
    if (__s2_len <= 3) goto <D.42467>; else goto <D.42468>;
    <D.42467>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = cmethod->name;
      D.42469 = "get_Length";
      D.42470 = MEM[(const unsigned char *)D.42469];
      D.42471 = (int) D.42470;
      D.42472 = *__s2;
      D.42473 = (int) D.42472;
      __result = D.42471 - D.42473;
      {
        D.42474 = __s2_len != 0;
        D.42475 = __result == 0;
        D.42476 = D.42474 & D.42475;
        if (D.42476 != 0) goto <D.42477>; else goto <D.42478>;
        <D.42477>:
        D.42479 = &MEM[(void *)"get_Length" + 1B];
        D.42480 = *D.42479;
        D.42481 = (int) D.42480;
        D.42482 = __s2 + 1;
        D.42483 = *D.42482;
        D.42484 = (int) D.42483;
        __result = D.42481 - D.42484;
        D.42485 = __s2_len > 1;
        D.42475 = __result == 0;
        D.42486 = D.42485 & D.42475;
        if (D.42486 != 0) goto <D.42487>; else goto <D.42488>;
        <D.42487>:
        D.42489 = &MEM[(void *)"get_Length" + 2B];
        D.42490 = *D.42489;
        D.42491 = (int) D.42490;
        D.42492 = __s2 + 2;
        D.42493 = *D.42492;
        D.42494 = (int) D.42493;
        __result = D.42491 - D.42494;
        D.42495 = __s2_len > 2;
        D.42475 = __result == 0;
        D.42496 = D.42495 & D.42475;
        if (D.42496 != 0) goto <D.42497>; else goto <D.42498>;
        <D.42497>:
        D.42499 = &MEM[(void *)"get_Length" + 3B];
        D.42500 = *D.42499;
        D.42501 = (int) D.42500;
        D.42502 = __s2 + 3;
        D.42503 = *D.42502;
        D.42504 = (int) D.42503;
        __result = D.42501 - D.42504;
        <D.42498>:
        <D.42488>:
        <D.42478>:
      }
      D.26481 = __result;
    }
    iftmp.404 = -D.26481;
    goto <D.42505>;
    <D.42468>:
    D.42309 = cmethod->name;
    iftmp.404 = __builtin_strcmp (D.42309, "get_Length");
    <D.42505>:
    D.26482 = iftmp.404;
  }
  if (D.26482 == 0) goto <D.42506>; else goto <D.42507>;
  <D.42506>:
  {
    int dreg;

    D.42508 = alloc_ireg (cfg);
    dreg = (int) D.42508;
    D.42329 = cfg->mempool;
    ins = mono_mempool_alloc (D.42329, 48);
    ins->data.op[1].const_val = 0;
    D.42453 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.42453;
    ins->prev = 0B;
    D.42454 = ins->prev;
    ins->next = D.42454;
    ins->opcode = 785;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.42455 = ins->sreg3;
    ins->sreg2 = D.42455;
    D.42456 = ins->sreg2;
    ins->sreg1 = D.42456;
    D.42334 = cfg->ip;
    ins->cil_code = D.42334;
    ins->dreg = dreg;
    D.42335 = *args;
    D.42336 = D.42335->dreg;
    ins->sreg1 = D.42336;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    if (D.42338 != 0B) goto <D.42509>; else goto <D.42510>;
    <D.42509>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    D.42338->next = ins;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    ins->prev = D.42338;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    goto <D.42511>;
    <D.42510>:
    D.42337 = cfg->cbb;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    D.42338 = D.42337->last_ins;
    D.42337->code = D.42338;
    <D.42511>:
    ins->type = 1;
    D.42512 = ins->flags;
    D.42513 = D.42512 | 32;
    ins->flags = D.42513;
    D.42337 = cfg->cbb;
    D.42337->has_array_access = 1;
    D.42451 = cfg->flags;
    D.42452 = D.42451 | 256;
    cfg->flags = D.42452;
    D.42465 = ins;
    return D.42465;
  }
  <D.42507>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 15;
    if (__s2_len <= 3) goto <D.42515>; else goto <D.42516>;
    <D.42515>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = cmethod->name;
      D.42517 = "InternalSetChar";
      D.42518 = MEM[(const unsigned char *)D.42517];
      D.42519 = (int) D.42518;
      D.42520 = *__s2;
      D.42521 = (int) D.42520;
      __result = D.42519 - D.42521;
      {
        D.42522 = __s2_len != 0;
        D.42523 = __result == 0;
        D.42524 = D.42522 & D.42523;
        if (D.42524 != 0) goto <D.42525>; else goto <D.42526>;
        <D.42525>:
        D.42527 = &MEM[(void *)"InternalSetChar" + 1B];
        D.42528 = *D.42527;
        D.42529 = (int) D.42528;
        D.42530 = __s2 + 1;
        D.42531 = *D.42530;
        D.42532 = (int) D.42531;
        __result = D.42529 - D.42532;
        D.42533 = __s2_len > 1;
        D.42523 = __result == 0;
        D.42534 = D.42533 & D.42523;
        if (D.42534 != 0) goto <D.42535>; else goto <D.42536>;
        <D.42535>:
        D.42537 = &MEM[(void *)"InternalSetChar" + 2B];
        D.42538 = *D.42537;
        D.42539 = (int) D.42538;
        D.42540 = __s2 + 2;
        D.42541 = *D.42540;
        D.42542 = (int) D.42541;
        __result = D.42539 - D.42542;
        D.42543 = __s2_len > 2;
        D.42523 = __result == 0;
        D.42544 = D.42543 & D.42523;
        if (D.42544 != 0) goto <D.42545>; else goto <D.42546>;
        <D.42545>:
        D.42547 = &MEM[(void *)"InternalSetChar" + 3B];
        D.42548 = *D.42547;
        D.42549 = (int) D.42548;
        D.42550 = __s2 + 3;
        D.42551 = *D.42550;
        D.42552 = (int) D.42551;
        __result = D.42549 - D.42552;
        <D.42546>:
        <D.42536>:
        <D.42526>:
      }
      D.26491 = __result;
    }
    iftmp.405 = -D.26491;
    goto <D.42553>;
    <D.42516>:
    D.42309 = cmethod->name;
    iftmp.405 = __builtin_strcmp (D.42309, "InternalSetChar");
    <D.42553>:
    D.26492 = iftmp.405;
  }
  if (D.26492 == 0) goto <D.42554>; else goto <D.42555>;
  <D.42554>:
  {
    int mult_reg;
    int add_reg;

    D.42556 = alloc_preg (cfg);
    mult_reg = (int) D.42556;
    D.42557 = alloc_preg (cfg);
    add_reg = (int) D.42557;
    {
      struct MonoInst * inst;

      D.42329 = cfg->mempool;
      inst = mono_mempool_alloc (D.42329, 48);
      inst->data.op[1].const_val = 0;
      D.42558 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.42558;
      inst->prev = 0B;
      D.42559 = inst->prev;
      inst->next = D.42559;
      inst->opcode = 443;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.42560 = inst->sreg3;
      inst->sreg2 = D.42560;
      D.42561 = inst->sreg2;
      inst->sreg1 = D.42561;
      D.42334 = cfg->ip;
      inst->cil_code = D.42334;
      inst->dreg = mult_reg;
      D.42316 = args + 4;
      D.42317 = *D.42316;
      D.42562 = D.42317->dreg;
      inst->sreg1 = D.42562;
      inst->data.op[1].const_val = 1;
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      if (D.42338 != 0B) goto <D.42563>; else goto <D.42564>;
      <D.42563>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.42338->next = inst;
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      inst->prev = D.42338;
      D.42337 = cfg->cbb;
      D.42337->last_ins = inst;
      goto <D.42565>;
      <D.42564>:
      D.42337 = cfg->cbb;
      D.42337 = cfg->cbb;
      D.42337->last_ins = inst;
      D.42338 = D.42337->last_ins;
      D.42337->code = D.42338;
      <D.42565>:
    }
    {
      struct MonoInst * inst;

      D.42329 = cfg->mempool;
      inst = mono_mempool_alloc (D.42329, 48);
      inst->data.op[1].const_val = 0;
      D.42566 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.42566;
      inst->prev = 0B;
      D.42567 = inst->prev;
      inst->next = D.42567;
      inst->opcode = 569;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.42568 = inst->sreg3;
      inst->sreg2 = D.42568;
      D.42569 = inst->sreg2;
      inst->sreg1 = D.42569;
      D.42334 = cfg->ip;
      inst->cil_code = D.42334;
      inst->dreg = add_reg;
      inst->sreg1 = mult_reg;
      D.42335 = *args;
      D.42336 = D.42335->dreg;
      inst->sreg2 = D.42336;
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      if (D.42338 != 0B) goto <D.42570>; else goto <D.42571>;
      <D.42570>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.42338->next = inst;
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      inst->prev = D.42338;
      D.42337 = cfg->cbb;
      D.42337->last_ins = inst;
      goto <D.42572>;
      <D.42571>:
      D.42337 = cfg->cbb;
      D.42337 = cfg->cbb;
      D.42337->last_ins = inst;
      D.42338 = D.42337->last_ins;
      D.42337->code = D.42338;
      <D.42572>:
    }
    {
      struct MonoInst * inst;

      D.42329 = cfg->mempool;
      inst = mono_mempool_alloc (D.42329, 48);
      inst->data.op[1].const_val = 0;
      D.42573 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.42573;
      inst->prev = 0B;
      D.42574 = inst->prev;
      inst->next = D.42574;
      inst->opcode = 376;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.42575 = inst->sreg3;
      inst->sreg2 = D.42575;
      D.42576 = inst->sreg2;
      inst->sreg1 = D.42576;
      D.42334 = cfg->ip;
      inst->cil_code = D.42334;
      D.42577 = args + 8;
      D.42578 = *D.42577;
      D.42579 = D.42578->dreg;
      inst->sreg1 = D.42579;
      inst->dreg = add_reg;
      inst->data.op[0].const_val = 12;
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      if (D.42338 != 0B) goto <D.42580>; else goto <D.42581>;
      <D.42580>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.42338->next = inst;
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      inst->prev = D.42338;
      D.42337 = cfg->cbb;
      D.42337->last_ins = inst;
      goto <D.42582>;
      <D.42581>:
      D.42337 = cfg->cbb;
      D.42337 = cfg->cbb;
      D.42337->last_ins = inst;
      D.42338 = D.42337->last_ins;
      D.42337->code = D.42338;
      <D.42582>:
    }
    D.42337 = cfg->cbb;
    D.42465 = D.42337->last_ins;
    return D.42465;
  }
  <D.42555>:
  D.42465 = 0B;
  return D.42465;
  <D.42268>:
  D.42265 = cmethod->klass;
  D.42583 = mono_defaults.object_class;
  if (D.42265 == D.42583) goto <D.42584>; else goto <D.42585>;
  <D.42584>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 7;
    if (__s2_len <= 3) goto <D.42587>; else goto <D.42588>;
    <D.42587>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = cmethod->name;
      D.42589 = "GetType";
      D.42590 = MEM[(const unsigned char *)D.42589];
      D.42591 = (int) D.42590;
      D.42592 = *__s2;
      D.42593 = (int) D.42592;
      __result = D.42591 - D.42593;
      {
        D.42594 = __s2_len != 0;
        D.42595 = __result == 0;
        D.42596 = D.42594 & D.42595;
        if (D.42596 != 0) goto <D.42597>; else goto <D.42598>;
        <D.42597>:
        D.42599 = &MEM[(void *)"GetType" + 1B];
        D.42600 = *D.42599;
        D.42601 = (int) D.42600;
        D.42602 = __s2 + 1;
        D.42603 = *D.42602;
        D.42604 = (int) D.42603;
        __result = D.42601 - D.42604;
        D.42605 = __s2_len > 1;
        D.42595 = __result == 0;
        D.42606 = D.42605 & D.42595;
        if (D.42606 != 0) goto <D.42607>; else goto <D.42608>;
        <D.42607>:
        D.42609 = &MEM[(void *)"GetType" + 2B];
        D.42610 = *D.42609;
        D.42611 = (int) D.42610;
        D.42612 = __s2 + 2;
        D.42613 = *D.42612;
        D.42614 = (int) D.42613;
        __result = D.42611 - D.42614;
        D.42615 = __s2_len > 2;
        D.42595 = __result == 0;
        D.42616 = D.42615 & D.42595;
        if (D.42616 != 0) goto <D.42617>; else goto <D.42618>;
        <D.42617>:
        D.42619 = &MEM[(void *)"GetType" + 3B];
        D.42620 = *D.42619;
        D.42621 = (int) D.42620;
        D.42622 = __s2 + 3;
        D.42623 = *D.42622;
        D.42624 = (int) D.42623;
        __result = D.42621 - D.42624;
        <D.42618>:
        <D.42608>:
        <D.42598>:
      }
      D.26505 = __result;
    }
    iftmp.406 = -D.26505;
    goto <D.42625>;
    <D.42588>:
    D.42309 = cmethod->name;
    iftmp.406 = __builtin_strcmp (D.42309, "GetType");
    <D.42625>:
    D.26506 = iftmp.406;
  }
  if (D.26506 == 0) goto <D.42626>; else goto <D.42627>;
  <D.42626>:
  {
    int dreg;
    int vt_reg;

    D.42628 = alloc_ireg_ref (cfg);
    dreg = (int) D.42628;
    D.42629 = alloc_preg (cfg);
    vt_reg = (int) D.42629;
    {
      struct MonoInst * inst;
      int __ins_flags;

      __ins_flags = 32;
      D.42630 = __ins_flags & 32;
      if (D.42630 != 0) goto <D.42631>; else goto <D.42632>;
      <D.42631>:
      D.42325 = BIT_FIELD_REF <*cfg, 8, 3424>;
      D.42326 = D.42325 & 64;
      if (D.42326 != 0) goto <D.42633>; else goto <D.42634>;
      <D.42633>:
      {
        struct MonoInst * inst;

        D.42329 = cfg->mempool;
        inst = mono_mempool_alloc (D.42329, 48);
        inst->data.op[1].const_val = 0;
        D.42635 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.42635;
        inst->prev = 0B;
        D.42636 = inst->prev;
        inst->next = D.42636;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.42637 = inst->sreg3;
        inst->sreg2 = D.42637;
        D.42638 = inst->sreg2;
        inst->sreg1 = D.42638;
        D.42334 = cfg->ip;
        inst->cil_code = D.42334;
        inst->dreg = -1;
        D.42335 = *args;
        D.42336 = D.42335->dreg;
        inst->sreg1 = D.42336;
        inst->data.op[1].const_val = 0;
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        if (D.42338 != 0B) goto <D.42639>; else goto <D.42640>;
        <D.42639>:
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        D.42338->next = inst;
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        inst->prev = D.42338;
        D.42337 = cfg->cbb;
        D.42337->last_ins = inst;
        goto <D.42641>;
        <D.42640>:
        D.42337 = cfg->cbb;
        D.42337 = cfg->cbb;
        D.42337->last_ins = inst;
        D.42338 = D.42337->last_ins;
        D.42337->code = D.42338;
        <D.42641>:
      }
      {
        struct MonoInst * inst;

        D.42329 = cfg->mempool;
        inst = mono_mempool_alloc (D.42329, 48);
        inst->data.op[1].const_val = 0;
        D.42642 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.42642;
        inst->prev = 0B;
        D.42643 = inst->prev;
        inst->next = D.42643;
        inst->opcode = 455;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.42644 = inst->sreg3;
        inst->sreg2 = D.42644;
        D.42645 = inst->sreg2;
        inst->sreg1 = D.42645;
        D.42334 = cfg->ip;
        inst->cil_code = D.42334;
        inst->data.op[1].p = "NullReferenceException";
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        if (D.42338 != 0B) goto <D.42646>; else goto <D.42647>;
        <D.42646>:
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        D.42338->next = inst;
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        inst->prev = D.42338;
        D.42337 = cfg->cbb;
        D.42337->last_ins = inst;
        goto <D.42648>;
        <D.42647>:
        D.42337 = cfg->cbb;
        D.42337 = cfg->cbb;
        D.42337->last_ins = inst;
        D.42338 = D.42337->last_ins;
        D.42337->code = D.42338;
        <D.42648>:
      }
      goto <D.42649>;
      <D.42634>:
      <D.42649>:
      <D.42632>:
      D.42329 = cfg->mempool;
      inst = mono_mempool_alloc (D.42329, 48);
      inst->data.op[1].const_val = 0;
      D.42650 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.42650;
      inst->prev = 0B;
      D.42651 = inst->prev;
      inst->next = D.42651;
      inst->opcode = 391;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.42652 = inst->sreg3;
      inst->sreg2 = D.42652;
      D.42653 = inst->sreg2;
      inst->sreg1 = D.42653;
      D.42334 = cfg->ip;
      inst->cil_code = D.42334;
      inst->dreg = vt_reg;
      D.42335 = *args;
      D.42336 = D.42335->dreg;
      inst->sreg1 = D.42336;
      inst->data.op[0].const_val = 0;
      inst->type = 1;
      D.42654 = (unsigned char) __ins_flags;
      inst->flags = D.42654;
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      if (D.42338 != 0B) goto <D.42655>; else goto <D.42656>;
      <D.42655>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.42338->next = inst;
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      inst->prev = D.42338;
      D.42337 = cfg->cbb;
      D.42337->last_ins = inst;
      goto <D.42657>;
      <D.42656>:
      D.42337 = cfg->cbb;
      D.42337 = cfg->cbb;
      D.42337->last_ins = inst;
      D.42338 = D.42337->last_ins;
      D.42337->code = D.42338;
      <D.42657>:
    }
    D.42329 = cfg->mempool;
    ins = mono_mempool_alloc (D.42329, 48);
    ins->data.op[1].const_val = 0;
    D.42453 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.42453;
    ins->prev = 0B;
    D.42454 = ins->prev;
    ins->next = D.42454;
    ins->opcode = 391;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.42455 = ins->sreg3;
    ins->sreg2 = D.42455;
    D.42456 = ins->sreg2;
    ins->sreg1 = D.42456;
    D.42334 = cfg->ip;
    ins->cil_code = D.42334;
    ins->dreg = dreg;
    ins->sreg1 = vt_reg;
    ins->data.op[0].const_val = 12;
    ins->type = 1;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    if (D.42338 != 0B) goto <D.42658>; else goto <D.42659>;
    <D.42658>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    D.42338->next = ins;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    ins->prev = D.42338;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    goto <D.42660>;
    <D.42659>:
    D.42337 = cfg->cbb;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    D.42338 = D.42337->last_ins;
    D.42337->code = D.42338;
    <D.42660>:
    type_from_op (ins, 0B, 0B);
    D.42465 = ins;
    return D.42465;
  }
  <D.42627>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 19;
    if (__s2_len <= 3) goto <D.42663>; else goto <D.42664>;
    <D.42663>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = cmethod->name;
      D.42665 = "InternalGetHashCode";
      D.42666 = MEM[(const unsigned char *)D.42665];
      D.42667 = (int) D.42666;
      D.42668 = *__s2;
      D.42669 = (int) D.42668;
      __result = D.42667 - D.42669;
      {
        D.42670 = __s2_len != 0;
        D.42671 = __result == 0;
        D.42672 = D.42670 & D.42671;
        if (D.42672 != 0) goto <D.42673>; else goto <D.42674>;
        <D.42673>:
        D.42675 = &MEM[(void *)"InternalGetHashCode" + 1B];
        D.42676 = *D.42675;
        D.42677 = (int) D.42676;
        D.42678 = __s2 + 1;
        D.42679 = *D.42678;
        D.42680 = (int) D.42679;
        __result = D.42677 - D.42680;
        D.42681 = __s2_len > 1;
        D.42671 = __result == 0;
        D.42682 = D.42681 & D.42671;
        if (D.42682 != 0) goto <D.42683>; else goto <D.42684>;
        <D.42683>:
        D.42685 = &MEM[(void *)"InternalGetHashCode" + 2B];
        D.42686 = *D.42685;
        D.42687 = (int) D.42686;
        D.42688 = __s2 + 2;
        D.42689 = *D.42688;
        D.42690 = (int) D.42689;
        __result = D.42687 - D.42690;
        D.42691 = __s2_len > 2;
        D.42671 = __result == 0;
        D.42692 = D.42691 & D.42671;
        if (D.42692 != 0) goto <D.42693>; else goto <D.42694>;
        <D.42693>:
        D.42695 = &MEM[(void *)"InternalGetHashCode" + 3B];
        D.42696 = *D.42695;
        D.42697 = (int) D.42696;
        D.42698 = __s2 + 3;
        D.42699 = *D.42698;
        D.42700 = (int) D.42699;
        __result = D.42697 - D.42700;
        <D.42694>:
        <D.42684>:
        <D.42674>:
      }
      D.26520 = __result;
    }
    iftmp.407 = -D.26520;
    goto <D.42701>;
    <D.42664>:
    D.42309 = cmethod->name;
    iftmp.407 = __builtin_strcmp (D.42309, "InternalGetHashCode");
    <D.42701>:
    D.26521 = iftmp.407;
  }
  if (D.26521 == 0) goto <D.42702>; else goto <D.42661>;
  <D.42702>:
  D.42703 = mono_gc_is_moving ();
  if (D.42703 == 0) goto <D.42704>; else goto <D.42661>;
  <D.42704>:
  {
    int dreg;
    int t1;

    D.42705 = alloc_ireg (cfg);
    dreg = (int) D.42705;
    D.42706 = alloc_ireg (cfg);
    t1 = (int) D.42706;
    {
      struct MonoInst * inst;

      D.42329 = cfg->mempool;
      inst = mono_mempool_alloc (D.42329, 48);
      inst->data.op[1].const_val = 0;
      D.42707 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.42707;
      inst->prev = 0B;
      D.42708 = inst->prev;
      inst->next = D.42708;
      inst->opcode = 443;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.42709 = inst->sreg3;
      inst->sreg2 = D.42709;
      D.42710 = inst->sreg2;
      inst->sreg1 = D.42710;
      D.42334 = cfg->ip;
      inst->cil_code = D.42334;
      inst->dreg = t1;
      D.42335 = *args;
      D.42336 = D.42335->dreg;
      inst->sreg1 = D.42336;
      inst->data.op[1].const_val = 3;
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      if (D.42338 != 0B) goto <D.42711>; else goto <D.42712>;
      <D.42711>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.42338->next = inst;
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      inst->prev = D.42338;
      D.42337 = cfg->cbb;
      D.42337->last_ins = inst;
      goto <D.42713>;
      <D.42712>:
      D.42337 = cfg->cbb;
      D.42337 = cfg->cbb;
      D.42337->last_ins = inst;
      D.42338 = D.42337->last_ins;
      D.42337->code = D.42338;
      <D.42713>:
    }
    D.42329 = cfg->mempool;
    ins = mono_mempool_alloc (D.42329, 48);
    ins->data.op[1].const_val = 0;
    D.42453 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.42453;
    ins->prev = 0B;
    D.42454 = ins->prev;
    ins->next = D.42454;
    ins->opcode = 435;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.42455 = ins->sreg3;
    ins->sreg2 = D.42455;
    D.42456 = ins->sreg2;
    ins->sreg1 = D.42456;
    D.42334 = cfg->ip;
    ins->cil_code = D.42334;
    ins->dreg = dreg;
    ins->sreg1 = t1;
    ins->data.op[1].const_val = -1640531535;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    if (D.42338 != 0B) goto <D.42714>; else goto <D.42715>;
    <D.42714>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    D.42338->next = ins;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    ins->prev = D.42338;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    goto <D.42716>;
    <D.42715>:
    D.42337 = cfg->cbb;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    D.42338 = D.42337->last_ins;
    D.42337->code = D.42338;
    <D.42716>:
    ins->type = 1;
    D.42465 = ins;
    return D.42465;
  }
  <D.42661>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 5;
    if (__s2_len <= 3) goto <D.42718>; else goto <D.42719>;
    <D.42718>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = cmethod->name;
      D.42720 = ".ctor";
      D.42721 = MEM[(const unsigned char *)D.42720];
      D.42722 = (int) D.42721;
      D.42723 = *__s2;
      D.42724 = (int) D.42723;
      __result = D.42722 - D.42724;
      {
        D.42725 = __s2_len != 0;
        D.42726 = __result == 0;
        D.42727 = D.42725 & D.42726;
        if (D.42727 != 0) goto <D.42728>; else goto <D.42729>;
        <D.42728>:
        D.42730 = &MEM[(void *)".ctor" + 1B];
        D.42731 = *D.42730;
        D.42732 = (int) D.42731;
        D.42733 = __s2 + 1;
        D.42734 = *D.42733;
        D.42735 = (int) D.42734;
        __result = D.42732 - D.42735;
        D.42736 = __s2_len > 1;
        D.42726 = __result == 0;
        D.42737 = D.42736 & D.42726;
        if (D.42737 != 0) goto <D.42738>; else goto <D.42739>;
        <D.42738>:
        D.42740 = &MEM[(void *)".ctor" + 2B];
        D.42741 = *D.42740;
        D.42742 = (int) D.42741;
        D.42743 = __s2 + 2;
        D.42744 = *D.42743;
        D.42745 = (int) D.42744;
        __result = D.42742 - D.42745;
        D.42746 = __s2_len > 2;
        D.42726 = __result == 0;
        D.42747 = D.42746 & D.42726;
        if (D.42747 != 0) goto <D.42748>; else goto <D.42749>;
        <D.42748>:
        D.42750 = &MEM[(void *)".ctor" + 3B];
        D.42751 = *D.42750;
        D.42752 = (int) D.42751;
        D.42753 = __s2 + 3;
        D.42754 = *D.42753;
        D.42755 = (int) D.42754;
        __result = D.42752 - D.42755;
        <D.42749>:
        <D.42739>:
        <D.42729>:
      }
      D.26532 = __result;
    }
    iftmp.408 = -D.26532;
    goto <D.42756>;
    <D.42719>:
    D.42309 = cmethod->name;
    iftmp.408 = __builtin_strcmp (D.42309, ".ctor");
    <D.42756>:
    D.26533 = iftmp.408;
  }
  if (D.26533 == 0) goto <D.42757>; else goto <D.42758>;
  <D.42757>:
  D.42329 = cfg->mempool;
  ins = mono_mempool_alloc (D.42329, 48);
  ins->data.op[1].const_val = 0;
  D.42453 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.42453;
  ins->prev = 0B;
  D.42454 = ins->prev;
  ins->next = D.42454;
  ins->opcode = 316;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.42455 = ins->sreg3;
  ins->sreg2 = D.42455;
  D.42456 = ins->sreg2;
  ins->sreg1 = D.42456;
  D.42334 = cfg->ip;
  ins->cil_code = D.42334;
  D.42337 = cfg->cbb;
  D.42338 = D.42337->last_ins;
  if (D.42338 != 0B) goto <D.42759>; else goto <D.42760>;
  <D.42759>:
  D.42337 = cfg->cbb;
  D.42338 = D.42337->last_ins;
  D.42338->next = ins;
  D.42337 = cfg->cbb;
  D.42338 = D.42337->last_ins;
  ins->prev = D.42338;
  D.42337 = cfg->cbb;
  D.42337->last_ins = ins;
  goto <D.42761>;
  <D.42760>:
  D.42337 = cfg->cbb;
  D.42337 = cfg->cbb;
  D.42337->last_ins = ins;
  D.42338 = D.42337->last_ins;
  D.42337->code = D.42338;
  <D.42761>:
  D.42465 = ins;
  return D.42465;
  <D.42758>:
  D.42465 = 0B;
  return D.42465;
  <D.42585>:
  D.42265 = cmethod->klass;
  D.42762 = mono_defaults.array_class;
  if (D.42265 == D.42762) goto <D.42763>; else goto <D.42764>;
  <D.42763>:
  D.42765 = cfg->gsharedvt;
  if (D.42765 == 0) goto <D.42766>; else goto <D.42767>;
  <D.42766>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 18;
    if (__s2_len <= 3) goto <D.42769>; else goto <D.42770>;
    <D.42769>:
    {
      const unsigned char * __s2;
      int __result;

      D.42309 = cmethod->name;
      __s2 = D.42309 + 1;
      D.42771 = "etGenericValueImpl";
      D.42772 = MEM[(const unsigned char *)D.42771];
      D.42773 = (int) D.42772;
      D.42774 = *__s2;
      D.42775 = (int) D.42774;
      __result = D.42773 - D.42775;
      {
        D.42776 = __s2_len != 0;
        D.42777 = __result == 0;
        D.42778 = D.42776 & D.42777;
        if (D.42778 != 0) goto <D.42779>; else goto <D.42780>;
        <D.42779>:
        D.42781 = &MEM[(void *)"etGenericValueImpl" + 1B];
        D.42782 = *D.42781;
        D.42783 = (int) D.42782;
        D.42784 = __s2 + 1;
        D.42785 = *D.42784;
        D.42786 = (int) D.42785;
        __result = D.42783 - D.42786;
        D.42787 = __s2_len > 1;
        D.42777 = __result == 0;
        D.42788 = D.42787 & D.42777;
        if (D.42788 != 0) goto <D.42789>; else goto <D.42790>;
        <D.42789>:
        D.42791 = &MEM[(void *)"etGenericValueImpl" + 2B];
        D.42792 = *D.42791;
        D.42793 = (int) D.42792;
        D.42794 = __s2 + 2;
        D.42795 = *D.42794;
        D.42796 = (int) D.42795;
        __result = D.42793 - D.42796;
        D.42797 = __s2_len > 2;
        D.42777 = __result == 0;
        D.42798 = D.42797 & D.42777;
        if (D.42798 != 0) goto <D.42799>; else goto <D.42800>;
        <D.42799>:
        D.42801 = &MEM[(void *)"etGenericValueImpl" + 3B];
        D.42802 = *D.42801;
        D.42803 = (int) D.42802;
        D.42804 = __s2 + 3;
        D.42805 = *D.42804;
        D.42806 = (int) D.42805;
        __result = D.42803 - D.42806;
        <D.42800>:
        <D.42790>:
        <D.42780>:
      }
      D.26541 = __result;
    }
    iftmp.409 = -D.26541;
    goto <D.42807>;
    <D.42770>:
    D.42309 = cmethod->name;
    D.42808 = D.42309 + 1;
    iftmp.409 = __builtin_strcmp (D.42808, "etGenericValueImpl");
    <D.42807>:
    D.26542 = iftmp.409;
  }
  if (D.26542 == 0) goto <D.42809>; else goto <D.42810>;
  <D.42809>:
  D.42309 = cmethod->name;
  D.42811 = *D.42309;
  D.42812 = D.42811 == 83;
  D.42813 = (int) D.42812;
  D.42465 = emit_array_generic_access (cfg, fsig, args, D.42813);
  return D.42465;
  <D.42810>:
  <D.42767>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 9;
    if (__s2_len <= 3) goto <D.42817>; else goto <D.42818>;
    <D.42817>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = cmethod->name;
      D.42819 = "GetLength";
      D.42820 = MEM[(const unsigned char *)D.42819];
      D.42821 = (int) D.42820;
      D.42822 = *__s2;
      D.42823 = (int) D.42822;
      __result = D.42821 - D.42823;
      {
        D.42824 = __s2_len != 0;
        D.42825 = __result == 0;
        D.42826 = D.42824 & D.42825;
        if (D.42826 != 0) goto <D.42827>; else goto <D.42828>;
        <D.42827>:
        D.42829 = &MEM[(void *)"GetLength" + 1B];
        D.42830 = *D.42829;
        D.42831 = (int) D.42830;
        D.42832 = __s2 + 1;
        D.42833 = *D.42832;
        D.42834 = (int) D.42833;
        __result = D.42831 - D.42834;
        D.42835 = __s2_len > 1;
        D.42825 = __result == 0;
        D.42836 = D.42835 & D.42825;
        if (D.42836 != 0) goto <D.42837>; else goto <D.42838>;
        <D.42837>:
        D.42839 = &MEM[(void *)"GetLength" + 2B];
        D.42840 = *D.42839;
        D.42841 = (int) D.42840;
        D.42842 = __s2 + 2;
        D.42843 = *D.42842;
        D.42844 = (int) D.42843;
        __result = D.42841 - D.42844;
        D.42845 = __s2_len > 2;
        D.42825 = __result == 0;
        D.42846 = D.42845 & D.42825;
        if (D.42846 != 0) goto <D.42847>; else goto <D.42848>;
        <D.42847>:
        D.42849 = &MEM[(void *)"GetLength" + 3B];
        D.42850 = *D.42849;
        D.42851 = (int) D.42850;
        D.42852 = __s2 + 3;
        D.42853 = *D.42852;
        D.42854 = (int) D.42853;
        __result = D.42851 - D.42854;
        <D.42848>:
        <D.42838>:
        <D.42828>:
      }
      D.26550 = __result;
    }
    iftmp.410 = -D.26550;
    goto <D.42855>;
    <D.42818>:
    D.42309 = cmethod->name;
    iftmp.410 = __builtin_strcmp (D.42309, "GetLength");
    <D.42855>:
    D.26551 = iftmp.410;
  }
  if (D.26551 == 0) goto <D.42814>; else goto <D.42856>;
  <D.42856>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 13;
    if (__s2_len <= 3) goto <D.42858>; else goto <D.42859>;
    <D.42858>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = cmethod->name;
      D.42860 = "GetLowerBound";
      D.42861 = MEM[(const unsigned char *)D.42860];
      D.42862 = (int) D.42861;
      D.42863 = *__s2;
      D.42864 = (int) D.42863;
      __result = D.42862 - D.42864;
      {
        D.42865 = __s2_len != 0;
        D.42866 = __result == 0;
        D.42867 = D.42865 & D.42866;
        if (D.42867 != 0) goto <D.42868>; else goto <D.42869>;
        <D.42868>:
        D.42870 = &MEM[(void *)"GetLowerBound" + 1B];
        D.42871 = *D.42870;
        D.42872 = (int) D.42871;
        D.42873 = __s2 + 1;
        D.42874 = *D.42873;
        D.42875 = (int) D.42874;
        __result = D.42872 - D.42875;
        D.42876 = __s2_len > 1;
        D.42866 = __result == 0;
        D.42877 = D.42876 & D.42866;
        if (D.42877 != 0) goto <D.42878>; else goto <D.42879>;
        <D.42878>:
        D.42880 = &MEM[(void *)"GetLowerBound" + 2B];
        D.42881 = *D.42880;
        D.42882 = (int) D.42881;
        D.42883 = __s2 + 2;
        D.42884 = *D.42883;
        D.42885 = (int) D.42884;
        __result = D.42882 - D.42885;
        D.42886 = __s2_len > 2;
        D.42866 = __result == 0;
        D.42887 = D.42886 & D.42866;
        if (D.42887 != 0) goto <D.42888>; else goto <D.42889>;
        <D.42888>:
        D.42890 = &MEM[(void *)"GetLowerBound" + 3B];
        D.42891 = *D.42890;
        D.42892 = (int) D.42891;
        D.42893 = __s2 + 3;
        D.42894 = *D.42893;
        D.42895 = (int) D.42894;
        __result = D.42892 - D.42895;
        <D.42889>:
        <D.42879>:
        <D.42869>:
      }
      D.26559 = __result;
    }
    iftmp.411 = -D.26559;
    goto <D.42896>;
    <D.42859>:
    D.42309 = cmethod->name;
    iftmp.411 = __builtin_strcmp (D.42309, "GetLowerBound");
    <D.42896>:
    D.26560 = iftmp.411;
  }
  if (D.26560 == 0) goto <D.42814>; else goto <D.42815>;
  <D.42814>:
  D.42316 = args + 4;
  D.42317 = *D.42316;
  D.42897 = D.42317->opcode;
  if (D.42897 == 362) goto <D.42898>; else goto <D.42899>;
  <D.42898>:
  D.42316 = args + 4;
  D.42317 = *D.42316;
  D.42900 = D.42317->data.op[0].const_val;
  if (D.42900 == 0) goto <D.42901>; else goto <D.42902>;
  <D.42901>:
  {
    int dreg;
    int bounds_reg;
    struct MonoBasicBlock * end_bb;
    struct MonoBasicBlock * szarray_bb;
    gboolean get_length;

    D.42903 = alloc_ireg (cfg);
    dreg = (int) D.42903;
    D.42904 = alloc_ireg_mp (cfg);
    bounds_reg = (int) D.42904;
    {
      size_t __s1_len;
      size_t __s2_len;

      __s2_len = 9;
      if (__s2_len <= 3) goto <D.42906>; else goto <D.42907>;
      <D.42906>:
      {
        const unsigned char * __s2;
        int __result;

        __s2 = cmethod->name;
        D.42819 = "GetLength";
        D.42820 = MEM[(const unsigned char *)D.42819];
        D.42821 = (int) D.42820;
        D.42908 = *__s2;
        D.42909 = (int) D.42908;
        __result = D.42821 - D.42909;
        {
          D.42910 = __s2_len != 0;
          D.42911 = __result == 0;
          D.42912 = D.42910 & D.42911;
          if (D.42912 != 0) goto <D.42913>; else goto <D.42914>;
          <D.42913>:
          D.42829 = &MEM[(void *)"GetLength" + 1B];
          D.42830 = *D.42829;
          D.42831 = (int) D.42830;
          D.42915 = __s2 + 1;
          D.42916 = *D.42915;
          D.42917 = (int) D.42916;
          __result = D.42831 - D.42917;
          D.42918 = __s2_len > 1;
          D.42911 = __result == 0;
          D.42919 = D.42918 & D.42911;
          if (D.42919 != 0) goto <D.42920>; else goto <D.42921>;
          <D.42920>:
          D.42839 = &MEM[(void *)"GetLength" + 2B];
          D.42840 = *D.42839;
          D.42841 = (int) D.42840;
          D.42922 = __s2 + 2;
          D.42923 = *D.42922;
          D.42924 = (int) D.42923;
          __result = D.42841 - D.42924;
          D.42925 = __s2_len > 2;
          D.42911 = __result == 0;
          D.42926 = D.42925 & D.42911;
          if (D.42926 != 0) goto <D.42927>; else goto <D.42928>;
          <D.42927>:
          D.42849 = &MEM[(void *)"GetLength" + 3B];
          D.42850 = *D.42849;
          D.42851 = (int) D.42850;
          D.42929 = __s2 + 3;
          D.42930 = *D.42929;
          D.42931 = (int) D.42930;
          __result = D.42851 - D.42931;
          <D.42928>:
          <D.42921>:
          <D.42914>:
        }
        D.26573 = __result;
      }
      iftmp.412 = -D.26573;
      goto <D.42932>;
      <D.42907>:
      D.42309 = cmethod->name;
      iftmp.412 = __builtin_strcmp (D.42309, "GetLength");
      <D.42932>:
      D.26574 = iftmp.412;
    }
    D.42933 = D.26574 == 0;
    get_length = (gboolean) D.42933;
    D.42329 = cfg->mempool;
    end_bb = mono_mempool_alloc0 (D.42329, 172);
    D.42934 = cfg->num_bblocks;
    D.42935 = D.42934;
    D.42936 = D.42935 + 1;
    cfg->num_bblocks = D.42936;
    D.42937 = (int) D.42935;
    end_bb->block_num = D.42937;
    D.42329 = cfg->mempool;
    szarray_bb = mono_mempool_alloc0 (D.42329, 172);
    D.42934 = cfg->num_bblocks;
    D.42938 = D.42934;
    D.42939 = D.42938 + 1;
    cfg->num_bblocks = D.42939;
    D.42940 = (int) D.42938;
    szarray_bb->block_num = D.42940;
    {
      int __ins_flags;

      __ins_flags = 32;
      D.42941 = __ins_flags & 32;
      if (D.42941 != 0) goto <D.42942>; else goto <D.42943>;
      <D.42942>:
      D.42325 = BIT_FIELD_REF <*cfg, 8, 3424>;
      D.42326 = D.42325 & 64;
      if (D.42326 != 0) goto <D.42944>; else goto <D.42945>;
      <D.42944>:
      {
        struct MonoInst * inst;

        D.42329 = cfg->mempool;
        inst = mono_mempool_alloc (D.42329, 48);
        inst->data.op[1].const_val = 0;
        D.42946 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.42946;
        inst->prev = 0B;
        D.42947 = inst->prev;
        inst->next = D.42947;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.42948 = inst->sreg3;
        inst->sreg2 = D.42948;
        D.42949 = inst->sreg2;
        inst->sreg1 = D.42949;
        D.42334 = cfg->ip;
        inst->cil_code = D.42334;
        inst->dreg = -1;
        D.42335 = *args;
        D.42336 = D.42335->dreg;
        inst->sreg1 = D.42336;
        inst->data.op[1].const_val = 0;
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        if (D.42338 != 0B) goto <D.42950>; else goto <D.42951>;
        <D.42950>:
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        D.42338->next = inst;
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        inst->prev = D.42338;
        D.42337 = cfg->cbb;
        D.42337->last_ins = inst;
        goto <D.42952>;
        <D.42951>:
        D.42337 = cfg->cbb;
        D.42337 = cfg->cbb;
        D.42337->last_ins = inst;
        D.42338 = D.42337->last_ins;
        D.42337->code = D.42338;
        <D.42952>:
      }
      {
        struct MonoInst * inst;

        D.42329 = cfg->mempool;
        inst = mono_mempool_alloc (D.42329, 48);
        inst->data.op[1].const_val = 0;
        D.42953 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.42953;
        inst->prev = 0B;
        D.42954 = inst->prev;
        inst->next = D.42954;
        inst->opcode = 455;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.42955 = inst->sreg3;
        inst->sreg2 = D.42955;
        D.42956 = inst->sreg2;
        inst->sreg1 = D.42956;
        D.42334 = cfg->ip;
        inst->cil_code = D.42334;
        inst->data.op[1].p = "NullReferenceException";
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        if (D.42338 != 0B) goto <D.42957>; else goto <D.42958>;
        <D.42957>:
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        D.42338->next = inst;
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        inst->prev = D.42338;
        D.42337 = cfg->cbb;
        D.42337->last_ins = inst;
        goto <D.42959>;
        <D.42958>:
        D.42337 = cfg->cbb;
        D.42337 = cfg->cbb;
        D.42337->last_ins = inst;
        D.42338 = D.42337->last_ins;
        D.42337->code = D.42338;
        <D.42959>:
      }
      goto <D.42960>;
      <D.42945>:
      <D.42960>:
      <D.42943>:
      D.42329 = cfg->mempool;
      ins = mono_mempool_alloc (D.42329, 48);
      ins->data.op[1].const_val = 0;
      D.42453 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.42453;
      ins->prev = 0B;
      D.42454 = ins->prev;
      ins->next = D.42454;
      ins->opcode = 391;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.42455 = ins->sreg3;
      ins->sreg2 = D.42455;
      D.42456 = ins->sreg2;
      ins->sreg1 = D.42456;
      D.42334 = cfg->ip;
      ins->cil_code = D.42334;
      ins->dreg = bounds_reg;
      D.42335 = *args;
      D.42336 = D.42335->dreg;
      ins->sreg1 = D.42336;
      ins->data.op[0].const_val = 8;
      ins->type = 1;
      D.42961 = (unsigned char) __ins_flags;
      ins->flags = D.42961;
    }
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    if (D.42338 != 0B) goto <D.42962>; else goto <D.42963>;
    <D.42962>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    D.42338->next = ins;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    ins->prev = D.42338;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    goto <D.42964>;
    <D.42963>:
    D.42337 = cfg->cbb;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    D.42338 = D.42337->last_ins;
    D.42337->code = D.42338;
    <D.42964>:
    {
      struct MonoInst * inst;

      D.42329 = cfg->mempool;
      inst = mono_mempool_alloc (D.42329, 48);
      inst->data.op[1].const_val = 0;
      D.42965 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.42965;
      inst->prev = 0B;
      D.42966 = inst->prev;
      inst->next = D.42966;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.42967 = inst->sreg3;
      inst->sreg2 = D.42967;
      D.42968 = inst->sreg2;
      inst->sreg1 = D.42968;
      D.42334 = cfg->ip;
      inst->cil_code = D.42334;
      inst->dreg = -1;
      inst->sreg1 = bounds_reg;
      inst->data.op[1].const_val = 0;
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      if (D.42338 != 0B) goto <D.42969>; else goto <D.42970>;
      <D.42969>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.42338->next = inst;
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      inst->prev = D.42338;
      D.42337 = cfg->cbb;
      D.42337->last_ins = inst;
      goto <D.42971>;
      <D.42970>:
      D.42337 = cfg->cbb;
      D.42337 = cfg->cbb;
      D.42337->last_ins = inst;
      D.42338 = D.42337->last_ins;
      D.42337->code = D.42338;
      <D.42971>:
    }
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.42329 = cfg->mempool;
      ins = mono_mempool_alloc (D.42329, 48);
      ins->data.op[1].const_val = 0;
      D.42972 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.42972;
      ins->prev = 0B;
      D.42973 = ins->prev;
      ins->next = D.42973;
      ins->opcode = 652;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.42974 = ins->sreg3;
      ins->sreg2 = D.42974;
      D.42975 = ins->sreg2;
      ins->sreg1 = D.42975;
      D.42334 = cfg->ip;
      ins->cil_code = D.42334;
      if (0 != 0) goto <D.42976>; else goto <D.42977>;
      <D.42976>:
      D.42329 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.42329, 172);
      D.42934 = cfg->num_bblocks;
      D.42978 = D.42934;
      D.42979 = D.42978 + 1;
      cfg->num_bblocks = D.42979;
      D.42980 = (int) D.42978;
      falsebb->block_num = D.42980;
      ins->data.op[0].target_block = szarray_bb;
      D.42337 = cfg->cbb;
      mono_link_bblock (cfg, D.42337, szarray_bb);
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      if (D.42338 != 0B) goto <D.42981>; else goto <D.42982>;
      <D.42981>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.42338->next = ins;
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      ins->prev = D.42338;
      D.42337 = cfg->cbb;
      D.42337->last_ins = ins;
      goto <D.42983>;
      <D.42982>:
      D.42337 = cfg->cbb;
      D.42337 = cfg->cbb;
      D.42337->last_ins = ins;
      D.42338 = D.42337->last_ins;
      D.42337->code = D.42338;
      <D.42983>:
      D.42984 = falsebb->cil_code;
      if (D.42984 != 0B) goto <D.42985>; else goto <D.42986>;
      <D.42985>:
      D.42987 = cfg->cil_offset_to_bb;
      D.42984 = falsebb->cil_code;
      D.42988 = (int) D.42984;
      D.42989 = cfg->cil_start;
      D.42990 = (int) D.42989;
      D.42991 = D.42988 - D.42990;
      D.42992 = (unsigned int) D.42991;
      D.42993 = D.42992 * 4;
      D.42994 = D.42987 + D.42993;
      *D.42994 = falsebb;
      <D.42986>:
      D.42995 = cfg->real_offset;
      falsebb->real_offset = D.42995;
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      if (D.42338 != 0B) goto <D.42999>; else goto <D.42996>;
      <D.42999>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.43000 = D.42338->opcode;
      D.43001 = D.43000 + 64981;
      D.43002 = D.43001 <= 9;
      D.43003 = D.43000 + 64874;
      D.43004 = D.43003 <= 9;
      D.43005 = D.43002 | D.43004;
      if (D.43005 != 0) goto <D.42997>; else goto <D.43006>;
      <D.43006>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.43007 = D.42338->opcode;
      D.43008 = D.43007 + 64884;
      if (D.43008 <= 9) goto <D.42997>; else goto <D.42996>;
      <D.42997>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.43009 = D.42338->data.op[1].many_blocks;
      D.43010 = D.43009 + 4;
      D.43011 = *D.43010;
      if (D.43011 == 0B) goto <D.43012>; else goto <D.42996>;
      <D.43012>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.43009 = D.42338->data.op[1].many_blocks;
      D.43010 = D.43009 + 4;
      *D.43010 = falsebb;
      D.42337 = cfg->cbb;
      mono_link_bblock (cfg, D.42337, falsebb);
      goto <D.42998>;
      <D.42996>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      if (D.42338 == 0B) goto <D.43013>; else goto <D.43015>;
      <D.43015>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.43016 = D.42338->opcode;
      D.43017 = D.43016 != 446;
      D.43018 = D.43016 != 763;
      D.43019 = D.43017 & D.43018;
      if (D.43019 != 0) goto <D.43020>; else goto <D.43014>;
      <D.43020>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.43021 = D.42338->opcode;
      D.43022 = D.43021 + 64981;
      D.43023 = D.43022 > 9;
      D.43024 = D.43021 + 64874;
      D.43025 = D.43024 > 9;
      D.43026 = D.43023 & D.43025;
      if (D.43026 != 0) goto <D.43027>; else goto <D.43014>;
      <D.43027>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.43007 = D.42338->opcode;
      D.43008 = D.43007 + 64884;
      if (D.43008 > 9) goto <D.43013>; else goto <D.43014>;
      <D.43013>:
      D.42337 = cfg->cbb;
      mono_link_bblock (cfg, D.42337, falsebb);
      <D.43014>:
      <D.42998>:
      D.42337 = cfg->cbb;
      D.42337->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.43028>;
      <D.42977>:
      D.42329 = cfg->mempool;
      D.43029 = mono_mempool_alloc (D.42329, 8);
      ins->data.op[1].many_blocks = D.43029;
      D.43030 = ins->data.op[1].many_blocks;
      *D.43030 = szarray_bb;
      D.43030 = ins->data.op[1].many_blocks;
      D.43031 = D.43030 + 4;
      *D.43031 = 0B;
      D.42337 = cfg->cbb;
      mono_link_bblock (cfg, D.42337, szarray_bb);
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      if (D.42338 != 0B) goto <D.43032>; else goto <D.43033>;
      <D.43032>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.42338->next = ins;
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      ins->prev = D.42338;
      D.42337 = cfg->cbb;
      D.42337->last_ins = ins;
      goto <D.43034>;
      <D.43033>:
      D.42337 = cfg->cbb;
      D.42337 = cfg->cbb;
      D.42337->last_ins = ins;
      D.42338 = D.42337->last_ins;
      D.42337->code = D.42338;
      <D.43034>:
      D.43035 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.43036 = D.43035 & 8;
      if (D.43036 == 0) goto <D.43037>; else goto <D.43038>;
      <D.43037>:
      D.42329 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.42329, 172);
      D.42934 = cfg->num_bblocks;
      D.43039 = D.42934;
      D.43040 = D.43039 + 1;
      cfg->num_bblocks = D.43040;
      D.43041 = (int) D.43039;
      falsebb->block_num = D.43041;
      D.43030 = ins->data.op[1].many_blocks;
      D.43031 = D.43030 + 4;
      *D.43031 = falsebb;
      D.42337 = cfg->cbb;
      mono_link_bblock (cfg, D.42337, falsebb);
      D.42984 = falsebb->cil_code;
      if (D.42984 != 0B) goto <D.43042>; else goto <D.43043>;
      <D.43042>:
      D.42987 = cfg->cil_offset_to_bb;
      D.42984 = falsebb->cil_code;
      D.42988 = (int) D.42984;
      D.42989 = cfg->cil_start;
      D.42990 = (int) D.42989;
      D.42991 = D.42988 - D.42990;
      D.42992 = (unsigned int) D.42991;
      D.42993 = D.42992 * 4;
      D.42994 = D.42987 + D.42993;
      *D.42994 = falsebb;
      <D.43043>:
      D.42995 = cfg->real_offset;
      falsebb->real_offset = D.42995;
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      if (D.42338 != 0B) goto <D.43047>; else goto <D.43044>;
      <D.43047>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.43048 = D.42338->opcode;
      D.43049 = D.43048 + 64981;
      D.43050 = D.43049 <= 9;
      D.43051 = D.43048 + 64874;
      D.43052 = D.43051 <= 9;
      D.43053 = D.43050 | D.43052;
      if (D.43053 != 0) goto <D.43045>; else goto <D.43054>;
      <D.43054>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.43007 = D.42338->opcode;
      D.43008 = D.43007 + 64884;
      if (D.43008 <= 9) goto <D.43045>; else goto <D.43044>;
      <D.43045>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.43009 = D.42338->data.op[1].many_blocks;
      D.43010 = D.43009 + 4;
      D.43011 = *D.43010;
      if (D.43011 == 0B) goto <D.43055>; else goto <D.43044>;
      <D.43055>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.43009 = D.42338->data.op[1].many_blocks;
      D.43010 = D.43009 + 4;
      *D.43010 = falsebb;
      D.42337 = cfg->cbb;
      mono_link_bblock (cfg, D.42337, falsebb);
      goto <D.43046>;
      <D.43044>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      if (D.42338 == 0B) goto <D.43056>; else goto <D.43058>;
      <D.43058>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.43059 = D.42338->opcode;
      D.43060 = D.43059 != 446;
      D.43061 = D.43059 != 763;
      D.43062 = D.43060 & D.43061;
      if (D.43062 != 0) goto <D.43063>; else goto <D.43057>;
      <D.43063>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.43064 = D.42338->opcode;
      D.43065 = D.43064 + 64981;
      D.43066 = D.43065 > 9;
      D.43067 = D.43064 + 64874;
      D.43068 = D.43067 > 9;
      D.43069 = D.43066 & D.43068;
      if (D.43069 != 0) goto <D.43070>; else goto <D.43057>;
      <D.43070>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.43007 = D.42338->opcode;
      D.43008 = D.43007 + 64884;
      if (D.43008 > 9) goto <D.43056>; else goto <D.43057>;
      <D.43056>:
      D.42337 = cfg->cbb;
      mono_link_bblock (cfg, D.42337, falsebb);
      <D.43057>:
      <D.43046>:
      D.42337 = cfg->cbb;
      D.42337->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.43071>;
      <D.43038>:
      D.42337 = cfg->cbb;
      D.42337->extended = 1;
      <D.43071>:
      <D.43028>:
    }
    if (get_length != 0) goto <D.43072>; else goto <D.43073>;
    <D.43072>:
    D.42329 = cfg->mempool;
    ins = mono_mempool_alloc (D.42329, 48);
    ins->data.op[1].const_val = 0;
    D.42453 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.42453;
    ins->prev = 0B;
    D.42454 = ins->prev;
    ins->next = D.42454;
    ins->opcode = 396;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.42455 = ins->sreg3;
    ins->sreg2 = D.42455;
    D.42456 = ins->sreg2;
    ins->sreg1 = D.42456;
    D.42334 = cfg->ip;
    ins->cil_code = D.42334;
    ins->dreg = dreg;
    ins->sreg1 = bounds_reg;
    ins->data.op[0].const_val = 0;
    ins->type = 1;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    if (D.42338 != 0B) goto <D.43074>; else goto <D.43075>;
    <D.43074>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    D.42338->next = ins;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    ins->prev = D.42338;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    goto <D.43076>;
    <D.43075>:
    D.42337 = cfg->cbb;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    D.42338 = D.42337->last_ins;
    D.42337->code = D.42338;
    <D.43076>:
    goto <D.43077>;
    <D.43073>:
    D.42329 = cfg->mempool;
    ins = mono_mempool_alloc (D.42329, 48);
    ins->data.op[1].const_val = 0;
    D.42453 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.42453;
    ins->prev = 0B;
    D.42454 = ins->prev;
    ins->next = D.42454;
    ins->opcode = 396;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.42455 = ins->sreg3;
    ins->sreg2 = D.42455;
    D.42456 = ins->sreg2;
    ins->sreg1 = D.42456;
    D.42334 = cfg->ip;
    ins->cil_code = D.42334;
    ins->dreg = dreg;
    ins->sreg1 = bounds_reg;
    ins->data.op[0].const_val = 4;
    ins->type = 1;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    if (D.42338 != 0B) goto <D.43078>; else goto <D.43079>;
    <D.43078>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    D.42338->next = ins;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    ins->prev = D.42338;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    goto <D.43080>;
    <D.43079>:
    D.42337 = cfg->cbb;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    D.42338 = D.42337->last_ins;
    D.42337->code = D.42338;
    <D.43080>:
    <D.43077>:
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.42329 = cfg->mempool;
      ins = mono_mempool_alloc (D.42329, 48);
      ins->data.op[1].const_val = 0;
      D.43081 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.43081;
      ins->prev = 0B;
      D.43082 = ins->prev;
      ins->next = D.43082;
      ins->opcode = 446;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.43083 = ins->sreg3;
      ins->sreg2 = D.43083;
      D.43084 = ins->sreg2;
      ins->sreg1 = D.43084;
      D.42334 = cfg->ip;
      ins->cil_code = D.42334;
      if (1 != 0) goto <D.43085>; else goto <D.43086>;
      <D.43085>:
      D.42329 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.42329, 172);
      D.42934 = cfg->num_bblocks;
      D.43087 = D.42934;
      D.43088 = D.43087 + 1;
      cfg->num_bblocks = D.43088;
      D.43089 = (int) D.43087;
      falsebb->block_num = D.43089;
      ins->data.op[0].target_block = end_bb;
      D.42337 = cfg->cbb;
      mono_link_bblock (cfg, D.42337, end_bb);
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      if (D.42338 != 0B) goto <D.43090>; else goto <D.43091>;
      <D.43090>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.42338->next = ins;
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      ins->prev = D.42338;
      D.42337 = cfg->cbb;
      D.42337->last_ins = ins;
      goto <D.43092>;
      <D.43091>:
      D.42337 = cfg->cbb;
      D.42337 = cfg->cbb;
      D.42337->last_ins = ins;
      D.42338 = D.42337->last_ins;
      D.42337->code = D.42338;
      <D.43092>:
      D.43093 = falsebb->cil_code;
      if (D.43093 != 0B) goto <D.43094>; else goto <D.43095>;
      <D.43094>:
      D.42987 = cfg->cil_offset_to_bb;
      D.43093 = falsebb->cil_code;
      D.43096 = (int) D.43093;
      D.42989 = cfg->cil_start;
      D.42990 = (int) D.42989;
      D.43097 = D.43096 - D.42990;
      D.43098 = (unsigned int) D.43097;
      D.43099 = D.43098 * 4;
      D.43100 = D.42987 + D.43099;
      *D.43100 = falsebb;
      <D.43095>:
      D.42995 = cfg->real_offset;
      falsebb->real_offset = D.42995;
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      if (D.42338 != 0B) goto <D.43104>; else goto <D.43101>;
      <D.43104>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.43105 = D.42338->opcode;
      D.43106 = D.43105 + 64981;
      D.43107 = D.43106 <= 9;
      D.43108 = D.43105 + 64874;
      D.43109 = D.43108 <= 9;
      D.43110 = D.43107 | D.43109;
      if (D.43110 != 0) goto <D.43102>; else goto <D.43111>;
      <D.43111>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.43007 = D.42338->opcode;
      D.43008 = D.43007 + 64884;
      if (D.43008 <= 9) goto <D.43102>; else goto <D.43101>;
      <D.43102>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.43009 = D.42338->data.op[1].many_blocks;
      D.43010 = D.43009 + 4;
      D.43011 = *D.43010;
      if (D.43011 == 0B) goto <D.43112>; else goto <D.43101>;
      <D.43112>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.43009 = D.42338->data.op[1].many_blocks;
      D.43010 = D.43009 + 4;
      *D.43010 = falsebb;
      D.42337 = cfg->cbb;
      mono_link_bblock (cfg, D.42337, falsebb);
      goto <D.43103>;
      <D.43101>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      if (D.42338 == 0B) goto <D.43113>; else goto <D.43115>;
      <D.43115>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.43116 = D.42338->opcode;
      D.43117 = D.43116 != 446;
      D.43118 = D.43116 != 763;
      D.43119 = D.43117 & D.43118;
      if (D.43119 != 0) goto <D.43120>; else goto <D.43114>;
      <D.43120>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.43121 = D.42338->opcode;
      D.43122 = D.43121 + 64981;
      D.43123 = D.43122 > 9;
      D.43124 = D.43121 + 64874;
      D.43125 = D.43124 > 9;
      D.43126 = D.43123 & D.43125;
      if (D.43126 != 0) goto <D.43127>; else goto <D.43114>;
      <D.43127>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.43007 = D.42338->opcode;
      D.43008 = D.43007 + 64884;
      if (D.43008 > 9) goto <D.43113>; else goto <D.43114>;
      <D.43113>:
      D.42337 = cfg->cbb;
      mono_link_bblock (cfg, D.42337, falsebb);
      <D.43114>:
      <D.43103>:
      D.42337 = cfg->cbb;
      D.42337->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.43128>;
      <D.43086>:
      D.42329 = cfg->mempool;
      D.43129 = mono_mempool_alloc (D.42329, 8);
      ins->data.op[1].many_blocks = D.43129;
      D.43130 = ins->data.op[1].many_blocks;
      *D.43130 = end_bb;
      D.43130 = ins->data.op[1].many_blocks;
      D.43131 = D.43130 + 4;
      *D.43131 = 0B;
      D.42337 = cfg->cbb;
      mono_link_bblock (cfg, D.42337, end_bb);
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      if (D.42338 != 0B) goto <D.43132>; else goto <D.43133>;
      <D.43132>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.42338->next = ins;
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      ins->prev = D.42338;
      D.42337 = cfg->cbb;
      D.42337->last_ins = ins;
      goto <D.43134>;
      <D.43133>:
      D.42337 = cfg->cbb;
      D.42337 = cfg->cbb;
      D.42337->last_ins = ins;
      D.42338 = D.42337->last_ins;
      D.42337->code = D.42338;
      <D.43134>:
      D.43035 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.43036 = D.43035 & 8;
      if (D.43036 == 0) goto <D.43135>; else goto <D.43136>;
      <D.43135>:
      D.42329 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.42329, 172);
      D.42934 = cfg->num_bblocks;
      D.43137 = D.42934;
      D.43138 = D.43137 + 1;
      cfg->num_bblocks = D.43138;
      D.43139 = (int) D.43137;
      falsebb->block_num = D.43139;
      D.43130 = ins->data.op[1].many_blocks;
      D.43131 = D.43130 + 4;
      *D.43131 = falsebb;
      D.42337 = cfg->cbb;
      mono_link_bblock (cfg, D.42337, falsebb);
      D.43093 = falsebb->cil_code;
      if (D.43093 != 0B) goto <D.43140>; else goto <D.43141>;
      <D.43140>:
      D.42987 = cfg->cil_offset_to_bb;
      D.43093 = falsebb->cil_code;
      D.43096 = (int) D.43093;
      D.42989 = cfg->cil_start;
      D.42990 = (int) D.42989;
      D.43097 = D.43096 - D.42990;
      D.43098 = (unsigned int) D.43097;
      D.43099 = D.43098 * 4;
      D.43100 = D.42987 + D.43099;
      *D.43100 = falsebb;
      <D.43141>:
      D.42995 = cfg->real_offset;
      falsebb->real_offset = D.42995;
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      if (D.42338 != 0B) goto <D.43145>; else goto <D.43142>;
      <D.43145>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.43146 = D.42338->opcode;
      D.43147 = D.43146 + 64981;
      D.43148 = D.43147 <= 9;
      D.43149 = D.43146 + 64874;
      D.43150 = D.43149 <= 9;
      D.43151 = D.43148 | D.43150;
      if (D.43151 != 0) goto <D.43143>; else goto <D.43152>;
      <D.43152>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.43007 = D.42338->opcode;
      D.43008 = D.43007 + 64884;
      if (D.43008 <= 9) goto <D.43143>; else goto <D.43142>;
      <D.43143>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.43009 = D.42338->data.op[1].many_blocks;
      D.43010 = D.43009 + 4;
      D.43011 = *D.43010;
      if (D.43011 == 0B) goto <D.43153>; else goto <D.43142>;
      <D.43153>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.43009 = D.42338->data.op[1].many_blocks;
      D.43010 = D.43009 + 4;
      *D.43010 = falsebb;
      D.42337 = cfg->cbb;
      mono_link_bblock (cfg, D.42337, falsebb);
      goto <D.43144>;
      <D.43142>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      if (D.42338 == 0B) goto <D.43154>; else goto <D.43156>;
      <D.43156>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.43157 = D.42338->opcode;
      D.43158 = D.43157 != 446;
      D.43159 = D.43157 != 763;
      D.43160 = D.43158 & D.43159;
      if (D.43160 != 0) goto <D.43161>; else goto <D.43155>;
      <D.43161>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.43162 = D.42338->opcode;
      D.43163 = D.43162 + 64981;
      D.43164 = D.43163 > 9;
      D.43165 = D.43162 + 64874;
      D.43166 = D.43165 > 9;
      D.43167 = D.43164 & D.43166;
      if (D.43167 != 0) goto <D.43168>; else goto <D.43155>;
      <D.43168>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.43007 = D.42338->opcode;
      D.43008 = D.43007 + 64884;
      if (D.43008 > 9) goto <D.43154>; else goto <D.43155>;
      <D.43154>:
      D.42337 = cfg->cbb;
      mono_link_bblock (cfg, D.42337, falsebb);
      <D.43155>:
      <D.43144>:
      D.42337 = cfg->cbb;
      D.42337->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.43169>;
      <D.43136>:
      D.42337 = cfg->cbb;
      D.42337->extended = 1;
      <D.43169>:
      <D.43128>:
    }
    D.43170 = szarray_bb->cil_code;
    if (D.43170 != 0B) goto <D.43171>; else goto <D.43172>;
    <D.43171>:
    D.42987 = cfg->cil_offset_to_bb;
    D.43170 = szarray_bb->cil_code;
    D.43173 = (int) D.43170;
    D.42989 = cfg->cil_start;
    D.42990 = (int) D.42989;
    D.43174 = D.43173 - D.42990;
    D.43175 = (unsigned int) D.43174;
    D.43176 = D.43175 * 4;
    D.43177 = D.42987 + D.43176;
    *D.43177 = szarray_bb;
    <D.43172>:
    D.42995 = cfg->real_offset;
    szarray_bb->real_offset = D.42995;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    if (D.42338 != 0B) goto <D.43181>; else goto <D.43178>;
    <D.43181>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    D.43182 = D.42338->opcode;
    D.43183 = D.43182 + 64981;
    D.43184 = D.43183 <= 9;
    D.43185 = D.43182 + 64874;
    D.43186 = D.43185 <= 9;
    D.43187 = D.43184 | D.43186;
    if (D.43187 != 0) goto <D.43179>; else goto <D.43188>;
    <D.43188>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    D.43007 = D.42338->opcode;
    D.43008 = D.43007 + 64884;
    if (D.43008 <= 9) goto <D.43179>; else goto <D.43178>;
    <D.43179>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    D.43009 = D.42338->data.op[1].many_blocks;
    D.43010 = D.43009 + 4;
    D.43011 = *D.43010;
    if (D.43011 == 0B) goto <D.43189>; else goto <D.43178>;
    <D.43189>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    D.43009 = D.42338->data.op[1].many_blocks;
    D.43010 = D.43009 + 4;
    *D.43010 = szarray_bb;
    D.42337 = cfg->cbb;
    mono_link_bblock (cfg, D.42337, szarray_bb);
    goto <D.43180>;
    <D.43178>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    if (D.42338 == 0B) goto <D.43190>; else goto <D.43192>;
    <D.43192>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    D.43193 = D.42338->opcode;
    D.43194 = D.43193 != 446;
    D.43195 = D.43193 != 763;
    D.43196 = D.43194 & D.43195;
    if (D.43196 != 0) goto <D.43197>; else goto <D.43191>;
    <D.43197>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    D.43198 = D.42338->opcode;
    D.43199 = D.43198 + 64981;
    D.43200 = D.43199 > 9;
    D.43201 = D.43198 + 64874;
    D.43202 = D.43201 > 9;
    D.43203 = D.43200 & D.43202;
    if (D.43203 != 0) goto <D.43204>; else goto <D.43191>;
    <D.43204>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    D.43007 = D.42338->opcode;
    D.43008 = D.43007 + 64884;
    if (D.43008 > 9) goto <D.43190>; else goto <D.43191>;
    <D.43190>:
    D.42337 = cfg->cbb;
    mono_link_bblock (cfg, D.42337, szarray_bb);
    <D.43191>:
    <D.43180>:
    D.42337 = cfg->cbb;
    D.42337->next_bb = szarray_bb;
    cfg->cbb = szarray_bb;
    if (get_length != 0) goto <D.43205>; else goto <D.43206>;
    <D.43205>:
    D.42329 = cfg->mempool;
    ins = mono_mempool_alloc (D.42329, 48);
    ins->data.op[1].const_val = 0;
    D.42453 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.42453;
    ins->prev = 0B;
    D.42454 = ins->prev;
    ins->next = D.42454;
    ins->opcode = 396;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.42455 = ins->sreg3;
    ins->sreg2 = D.42455;
    D.42456 = ins->sreg2;
    ins->sreg1 = D.42456;
    D.42334 = cfg->ip;
    ins->cil_code = D.42334;
    ins->dreg = dreg;
    D.42335 = *args;
    D.42336 = D.42335->dreg;
    ins->sreg1 = D.42336;
    ins->data.op[0].const_val = 12;
    ins->type = 1;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    if (D.42338 != 0B) goto <D.43207>; else goto <D.43208>;
    <D.43207>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    D.42338->next = ins;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    ins->prev = D.42338;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    goto <D.43209>;
    <D.43208>:
    D.42337 = cfg->cbb;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    D.42338 = D.42337->last_ins;
    D.42337->code = D.42338;
    <D.43209>:
    goto <D.43210>;
    <D.43206>:
    {
      struct MonoInst * inst;

      D.42329 = cfg->mempool;
      inst = mono_mempool_alloc (D.42329, 48);
      inst->data.op[1].const_val = 0;
      D.43211 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.43211;
      inst->prev = 0B;
      D.43212 = inst->prev;
      inst->next = D.43212;
      inst->opcode = 362;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.43213 = inst->sreg3;
      inst->sreg2 = D.43213;
      D.43214 = inst->sreg2;
      inst->sreg1 = D.43214;
      D.42334 = cfg->ip;
      inst->cil_code = D.42334;
      inst->dreg = dreg;
      inst->data.op[0].const_val = 0;
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      if (D.42338 != 0B) goto <D.43215>; else goto <D.43216>;
      <D.43215>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.42338->next = inst;
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      inst->prev = D.42338;
      D.42337 = cfg->cbb;
      D.42337->last_ins = inst;
      goto <D.43217>;
      <D.43216>:
      D.42337 = cfg->cbb;
      D.42337 = cfg->cbb;
      D.42337->last_ins = inst;
      D.42338 = D.42337->last_ins;
      D.42337->code = D.42338;
      <D.43217>:
    }
    <D.43210>:
    D.43218 = end_bb->cil_code;
    if (D.43218 != 0B) goto <D.43219>; else goto <D.43220>;
    <D.43219>:
    D.42987 = cfg->cil_offset_to_bb;
    D.43218 = end_bb->cil_code;
    D.43221 = (int) D.43218;
    D.42989 = cfg->cil_start;
    D.42990 = (int) D.42989;
    D.43222 = D.43221 - D.42990;
    D.43223 = (unsigned int) D.43222;
    D.43224 = D.43223 * 4;
    D.43225 = D.42987 + D.43224;
    *D.43225 = end_bb;
    <D.43220>:
    D.42995 = cfg->real_offset;
    end_bb->real_offset = D.42995;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    if (D.42338 != 0B) goto <D.43229>; else goto <D.43226>;
    <D.43229>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    D.43230 = D.42338->opcode;
    D.43231 = D.43230 + 64981;
    D.43232 = D.43231 <= 9;
    D.43233 = D.43230 + 64874;
    D.43234 = D.43233 <= 9;
    D.43235 = D.43232 | D.43234;
    if (D.43235 != 0) goto <D.43227>; else goto <D.43236>;
    <D.43236>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    D.43007 = D.42338->opcode;
    D.43008 = D.43007 + 64884;
    if (D.43008 <= 9) goto <D.43227>; else goto <D.43226>;
    <D.43227>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    D.43009 = D.42338->data.op[1].many_blocks;
    D.43010 = D.43009 + 4;
    D.43011 = *D.43010;
    if (D.43011 == 0B) goto <D.43237>; else goto <D.43226>;
    <D.43237>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    D.43009 = D.42338->data.op[1].many_blocks;
    D.43010 = D.43009 + 4;
    *D.43010 = end_bb;
    D.42337 = cfg->cbb;
    mono_link_bblock (cfg, D.42337, end_bb);
    goto <D.43228>;
    <D.43226>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    if (D.42338 == 0B) goto <D.43238>; else goto <D.43240>;
    <D.43240>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    D.43241 = D.42338->opcode;
    D.43242 = D.43241 != 446;
    D.43243 = D.43241 != 763;
    D.43244 = D.43242 & D.43243;
    if (D.43244 != 0) goto <D.43245>; else goto <D.43239>;
    <D.43245>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    D.43246 = D.42338->opcode;
    D.43247 = D.43246 + 64981;
    D.43248 = D.43247 > 9;
    D.43249 = D.43246 + 64874;
    D.43250 = D.43249 > 9;
    D.43251 = D.43248 & D.43250;
    if (D.43251 != 0) goto <D.43252>; else goto <D.43239>;
    <D.43252>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    D.43007 = D.42338->opcode;
    D.43008 = D.43007 + 64884;
    if (D.43008 > 9) goto <D.43238>; else goto <D.43239>;
    <D.43238>:
    D.42337 = cfg->cbb;
    mono_link_bblock (cfg, D.42337, end_bb);
    <D.43239>:
    <D.43228>:
    D.42337 = cfg->cbb;
    D.42337->next_bb = end_bb;
    cfg->cbb = end_bb;
    D.42329 = cfg->mempool;
    ins = mono_mempool_alloc (D.42329, 48);
    ins->data.op[1].const_val = 0;
    D.42453 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.42453;
    ins->prev = 0B;
    D.42454 = ins->prev;
    ins->next = D.42454;
    ins->opcode = 428;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.42455 = ins->sreg3;
    ins->sreg2 = D.42455;
    D.42456 = ins->sreg2;
    ins->sreg1 = D.42456;
    D.42334 = cfg->ip;
    ins->cil_code = D.42334;
    ins->dreg = dreg;
    ins->sreg1 = dreg;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    if (D.42338 != 0B) goto <D.43253>; else goto <D.43254>;
    <D.43253>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    D.42338->next = ins;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    ins->prev = D.42338;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    goto <D.43255>;
    <D.43254>:
    D.42337 = cfg->cbb;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    D.42338 = D.42337->last_ins;
    D.42337->code = D.42338;
    <D.43255>:
    ins->type = 1;
    D.42465 = ins;
    return D.42465;
  }
  <D.42902>:
  <D.42899>:
  <D.42815>:
  D.42309 = cmethod->name;
  D.42811 = *D.42309;
  if (D.42811 != 103) goto <D.43256>; else goto <D.43257>;
  <D.43256>:
  D.42465 = 0B;
  return D.42465;
  <D.43257>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 8;
    if (__s2_len <= 3) goto <D.43259>; else goto <D.43260>;
    <D.43259>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = cmethod->name;
      D.43261 = "get_Rank";
      D.43262 = MEM[(const unsigned char *)D.43261];
      D.43263 = (int) D.43262;
      D.43264 = *__s2;
      D.43265 = (int) D.43264;
      __result = D.43263 - D.43265;
      {
        D.43266 = __s2_len != 0;
        D.43267 = __result == 0;
        D.43268 = D.43266 & D.43267;
        if (D.43268 != 0) goto <D.43269>; else goto <D.43270>;
        <D.43269>:
        D.43271 = &MEM[(void *)"get_Rank" + 1B];
        D.43272 = *D.43271;
        D.43273 = (int) D.43272;
        D.43274 = __s2 + 1;
        D.43275 = *D.43274;
        D.43276 = (int) D.43275;
        __result = D.43273 - D.43276;
        D.43277 = __s2_len > 1;
        D.43267 = __result == 0;
        D.43278 = D.43277 & D.43267;
        if (D.43278 != 0) goto <D.43279>; else goto <D.43280>;
        <D.43279>:
        D.43281 = &MEM[(void *)"get_Rank" + 2B];
        D.43282 = *D.43281;
        D.43283 = (int) D.43282;
        D.43284 = __s2 + 2;
        D.43285 = *D.43284;
        D.43286 = (int) D.43285;
        __result = D.43283 - D.43286;
        D.43287 = __s2_len > 2;
        D.43267 = __result == 0;
        D.43288 = D.43287 & D.43267;
        if (D.43288 != 0) goto <D.43289>; else goto <D.43290>;
        <D.43289>:
        D.43291 = &MEM[(void *)"get_Rank" + 3B];
        D.43292 = *D.43291;
        D.43293 = (int) D.43292;
        D.43294 = __s2 + 3;
        D.43295 = *D.43294;
        D.43296 = (int) D.43295;
        __result = D.43293 - D.43296;
        <D.43290>:
        <D.43280>:
        <D.43270>:
      }
      D.26591 = __result;
    }
    iftmp.413 = -D.26591;
    goto <D.43297>;
    <D.43260>:
    D.42309 = cmethod->name;
    iftmp.413 = __builtin_strcmp (D.42309, "get_Rank");
    <D.43297>:
    D.26592 = iftmp.413;
  }
  if (D.26592 == 0) goto <D.43298>; else goto <D.43299>;
  <D.43298>:
  {
    int dreg;
    int vtable_reg;

    D.43300 = alloc_ireg (cfg);
    dreg = (int) D.43300;
    D.43301 = alloc_preg (cfg);
    vtable_reg = (int) D.43301;
    {
      struct MonoInst * inst;
      int __ins_flags;

      __ins_flags = 32;
      D.43302 = __ins_flags & 32;
      if (D.43302 != 0) goto <D.43303>; else goto <D.43304>;
      <D.43303>:
      D.42325 = BIT_FIELD_REF <*cfg, 8, 3424>;
      D.42326 = D.42325 & 64;
      if (D.42326 != 0) goto <D.43305>; else goto <D.43306>;
      <D.43305>:
      {
        struct MonoInst * inst;

        D.42329 = cfg->mempool;
        inst = mono_mempool_alloc (D.42329, 48);
        inst->data.op[1].const_val = 0;
        D.43307 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.43307;
        inst->prev = 0B;
        D.43308 = inst->prev;
        inst->next = D.43308;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.43309 = inst->sreg3;
        inst->sreg2 = D.43309;
        D.43310 = inst->sreg2;
        inst->sreg1 = D.43310;
        D.42334 = cfg->ip;
        inst->cil_code = D.42334;
        inst->dreg = -1;
        D.42335 = *args;
        D.42336 = D.42335->dreg;
        inst->sreg1 = D.42336;
        inst->data.op[1].const_val = 0;
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        if (D.42338 != 0B) goto <D.43311>; else goto <D.43312>;
        <D.43311>:
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        D.42338->next = inst;
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        inst->prev = D.42338;
        D.42337 = cfg->cbb;
        D.42337->last_ins = inst;
        goto <D.43313>;
        <D.43312>:
        D.42337 = cfg->cbb;
        D.42337 = cfg->cbb;
        D.42337->last_ins = inst;
        D.42338 = D.42337->last_ins;
        D.42337->code = D.42338;
        <D.43313>:
      }
      {
        struct MonoInst * inst;

        D.42329 = cfg->mempool;
        inst = mono_mempool_alloc (D.42329, 48);
        inst->data.op[1].const_val = 0;
        D.43314 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.43314;
        inst->prev = 0B;
        D.43315 = inst->prev;
        inst->next = D.43315;
        inst->opcode = 455;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.43316 = inst->sreg3;
        inst->sreg2 = D.43316;
        D.43317 = inst->sreg2;
        inst->sreg1 = D.43317;
        D.42334 = cfg->ip;
        inst->cil_code = D.42334;
        inst->data.op[1].p = "NullReferenceException";
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        if (D.42338 != 0B) goto <D.43318>; else goto <D.43319>;
        <D.43318>:
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        D.42338->next = inst;
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        inst->prev = D.42338;
        D.42337 = cfg->cbb;
        D.42337->last_ins = inst;
        goto <D.43320>;
        <D.43319>:
        D.42337 = cfg->cbb;
        D.42337 = cfg->cbb;
        D.42337->last_ins = inst;
        D.42338 = D.42337->last_ins;
        D.42337->code = D.42338;
        <D.43320>:
      }
      goto <D.43321>;
      <D.43306>:
      <D.43321>:
      <D.43304>:
      D.42329 = cfg->mempool;
      inst = mono_mempool_alloc (D.42329, 48);
      inst->data.op[1].const_val = 0;
      D.43322 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.43322;
      inst->prev = 0B;
      D.43323 = inst->prev;
      inst->next = D.43323;
      inst->opcode = 391;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.43324 = inst->sreg3;
      inst->sreg2 = D.43324;
      D.43325 = inst->sreg2;
      inst->sreg1 = D.43325;
      D.42334 = cfg->ip;
      inst->cil_code = D.42334;
      inst->dreg = vtable_reg;
      D.42335 = *args;
      D.42336 = D.42335->dreg;
      inst->sreg1 = D.42336;
      inst->data.op[0].const_val = 0;
      inst->type = 1;
      D.43326 = (unsigned char) __ins_flags;
      inst->flags = D.43326;
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      if (D.42338 != 0B) goto <D.43327>; else goto <D.43328>;
      <D.43327>:
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      D.42338->next = inst;
      D.42337 = cfg->cbb;
      D.42338 = D.42337->last_ins;
      inst->prev = D.42338;
      D.42337 = cfg->cbb;
      D.42337->last_ins = inst;
      goto <D.43329>;
      <D.43328>:
      D.42337 = cfg->cbb;
      D.42337 = cfg->cbb;
      D.42337->last_ins = inst;
      D.42338 = D.42337->last_ins;
      D.42337->code = D.42338;
      <D.43329>:
    }
    D.42329 = cfg->mempool;
    ins = mono_mempool_alloc (D.42329, 48);
    ins->data.op[1].const_val = 0;
    D.42453 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.42453;
    ins->prev = 0B;
    D.42454 = ins->prev;
    ins->next = D.42454;
    ins->opcode = 393;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.42455 = ins->sreg3;
    ins->sreg2 = D.42455;
    D.42456 = ins->sreg2;
    ins->sreg1 = D.42456;
    D.42334 = cfg->ip;
    ins->cil_code = D.42334;
    ins->dreg = dreg;
    ins->sreg1 = vtable_reg;
    ins->data.op[0].const_val = 22;
    ins->type = 1;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    if (D.42338 != 0B) goto <D.43330>; else goto <D.43331>;
    <D.43330>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    D.42338->next = ins;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    ins->prev = D.42338;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    goto <D.43332>;
    <D.43331>:
    D.42337 = cfg->cbb;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    D.42338 = D.42337->last_ins;
    D.42337->code = D.42338;
    <D.43332>:
    type_from_op (ins, 0B, 0B);
    D.42465 = ins;
    return D.42465;
  }
  <D.43299>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 10;
    if (__s2_len <= 3) goto <D.43334>; else goto <D.43335>;
    <D.43334>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = cmethod->name;
      D.42469 = "get_Length";
      D.42470 = MEM[(const unsigned char *)D.42469];
      D.42471 = (int) D.42470;
      D.43336 = *__s2;
      D.43337 = (int) D.43336;
      __result = D.42471 - D.43337;
      {
        D.43338 = __s2_len != 0;
        D.43339 = __result == 0;
        D.43340 = D.43338 & D.43339;
        if (D.43340 != 0) goto <D.43341>; else goto <D.43342>;
        <D.43341>:
        D.42479 = &MEM[(void *)"get_Length" + 1B];
        D.42480 = *D.42479;
        D.42481 = (int) D.42480;
        D.43343 = __s2 + 1;
        D.43344 = *D.43343;
        D.43345 = (int) D.43344;
        __result = D.42481 - D.43345;
        D.43346 = __s2_len > 1;
        D.43339 = __result == 0;
        D.43347 = D.43346 & D.43339;
        if (D.43347 != 0) goto <D.43348>; else goto <D.43349>;
        <D.43348>:
        D.42489 = &MEM[(void *)"get_Length" + 2B];
        D.42490 = *D.42489;
        D.42491 = (int) D.42490;
        D.43350 = __s2 + 2;
        D.43351 = *D.43350;
        D.43352 = (int) D.43351;
        __result = D.42491 - D.43352;
        D.43353 = __s2_len > 2;
        D.43339 = __result == 0;
        D.43354 = D.43353 & D.43339;
        if (D.43354 != 0) goto <D.43355>; else goto <D.43356>;
        <D.43355>:
        D.42499 = &MEM[(void *)"get_Length" + 3B];
        D.42500 = *D.42499;
        D.42501 = (int) D.42500;
        D.43357 = __s2 + 3;
        D.43358 = *D.43357;
        D.43359 = (int) D.43358;
        __result = D.42501 - D.43359;
        <D.43356>:
        <D.43349>:
        <D.43342>:
      }
      D.26606 = __result;
    }
    iftmp.414 = -D.26606;
    goto <D.43360>;
    <D.43335>:
    D.42309 = cmethod->name;
    iftmp.414 = __builtin_strcmp (D.42309, "get_Length");
    <D.43360>:
    D.26607 = iftmp.414;
  }
  if (D.26607 == 0) goto <D.43361>; else goto <D.43362>;
  <D.43361>:
  {
    int dreg;

    D.43363 = alloc_ireg (cfg);
    dreg = (int) D.43363;
    {
      int __ins_flags;

      __ins_flags = 32;
      D.43364 = __ins_flags & 32;
      if (D.43364 != 0) goto <D.43365>; else goto <D.43366>;
      <D.43365>:
      D.42325 = BIT_FIELD_REF <*cfg, 8, 3424>;
      D.42326 = D.42325 & 64;
      if (D.42326 != 0) goto <D.43367>; else goto <D.43368>;
      <D.43367>:
      {
        struct MonoInst * inst;

        D.42329 = cfg->mempool;
        inst = mono_mempool_alloc (D.42329, 48);
        inst->data.op[1].const_val = 0;
        D.43369 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.43369;
        inst->prev = 0B;
        D.43370 = inst->prev;
        inst->next = D.43370;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.43371 = inst->sreg3;
        inst->sreg2 = D.43371;
        D.43372 = inst->sreg2;
        inst->sreg1 = D.43372;
        D.42334 = cfg->ip;
        inst->cil_code = D.42334;
        inst->dreg = -1;
        D.42335 = *args;
        D.42336 = D.42335->dreg;
        inst->sreg1 = D.42336;
        inst->data.op[1].const_val = 0;
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        if (D.42338 != 0B) goto <D.43373>; else goto <D.43374>;
        <D.43373>:
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        D.42338->next = inst;
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        inst->prev = D.42338;
        D.42337 = cfg->cbb;
        D.42337->last_ins = inst;
        goto <D.43375>;
        <D.43374>:
        D.42337 = cfg->cbb;
        D.42337 = cfg->cbb;
        D.42337->last_ins = inst;
        D.42338 = D.42337->last_ins;
        D.42337->code = D.42338;
        <D.43375>:
      }
      {
        struct MonoInst * inst;

        D.42329 = cfg->mempool;
        inst = mono_mempool_alloc (D.42329, 48);
        inst->data.op[1].const_val = 0;
        D.43376 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.43376;
        inst->prev = 0B;
        D.43377 = inst->prev;
        inst->next = D.43377;
        inst->opcode = 455;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.43378 = inst->sreg3;
        inst->sreg2 = D.43378;
        D.43379 = inst->sreg2;
        inst->sreg1 = D.43379;
        D.42334 = cfg->ip;
        inst->cil_code = D.42334;
        inst->data.op[1].p = "NullReferenceException";
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        if (D.42338 != 0B) goto <D.43380>; else goto <D.43381>;
        <D.43380>:
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        D.42338->next = inst;
        D.42337 = cfg->cbb;
        D.42338 = D.42337->last_ins;
        inst->prev = D.42338;
        D.42337 = cfg->cbb;
        D.42337->last_ins = inst;
        goto <D.43382>;
        <D.43381>:
        D.42337 = cfg->cbb;
        D.42337 = cfg->cbb;
        D.42337->last_ins = inst;
        D.42338 = D.42337->last_ins;
        D.42337->code = D.42338;
        <D.43382>:
      }
      goto <D.43383>;
      <D.43368>:
      <D.43383>:
      <D.43366>:
      D.42329 = cfg->mempool;
      ins = mono_mempool_alloc (D.42329, 48);
      ins->data.op[1].const_val = 0;
      D.42453 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.42453;
      ins->prev = 0B;
      D.42454 = ins->prev;
      ins->next = D.42454;
      ins->opcode = 396;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.42455 = ins->sreg3;
      ins->sreg2 = D.42455;
      D.42456 = ins->sreg2;
      ins->sreg1 = D.42456;
      D.42334 = cfg->ip;
      ins->cil_code = D.42334;
      ins->dreg = dreg;
      D.42335 = *args;
      D.42336 = D.42335->dreg;
      ins->sreg1 = D.42336;
      ins->data.op[0].const_val = 12;
      ins->type = 1;
      D.43384 = (unsigned char) __ins_flags;
      ins->flags = D.43384;
    }
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    if (D.42338 != 0B) goto <D.43385>; else goto <D.43386>;
    <D.43385>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    D.42338->next = ins;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    ins->prev = D.42338;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    goto <D.43387>;
    <D.43386>:
    D.42337 = cfg->cbb;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    D.42338 = D.42337->last_ins;
    D.42337->code = D.42338;
    <D.43387>:
    type_from_op (ins, 0B, 0B);
    D.42465 = ins;
    return D.42465;
  }
  <D.43362>:
  D.42465 = 0B;
  return D.42465;
  <D.42764>:
  D.42265 = cmethod->klass;
  runtime_helpers_class.401 = runtime_helpers_class;
  if (D.42265 == runtime_helpers_class.401) goto <D.43388>; else goto <D.43389>;
  <D.43388>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 22;
    if (__s2_len <= 3) goto <D.43391>; else goto <D.43392>;
    <D.43391>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = cmethod->name;
      D.43393 = "get_OffsetToStringData";
      D.43394 = MEM[(const unsigned char *)D.43393];
      D.43395 = (int) D.43394;
      D.43396 = *__s2;
      D.43397 = (int) D.43396;
      __result = D.43395 - D.43397;
      {
        D.43398 = __s2_len != 0;
        D.43399 = __result == 0;
        D.43400 = D.43398 & D.43399;
        if (D.43400 != 0) goto <D.43401>; else goto <D.43402>;
        <D.43401>:
        D.43403 = &MEM[(void *)"get_OffsetToStringData" + 1B];
        D.43404 = *D.43403;
        D.43405 = (int) D.43404;
        D.43406 = __s2 + 1;
        D.43407 = *D.43406;
        D.43408 = (int) D.43407;
        __result = D.43405 - D.43408;
        D.43409 = __s2_len > 1;
        D.43399 = __result == 0;
        D.43410 = D.43409 & D.43399;
        if (D.43410 != 0) goto <D.43411>; else goto <D.43412>;
        <D.43411>:
        D.43413 = &MEM[(void *)"get_OffsetToStringData" + 2B];
        D.43414 = *D.43413;
        D.43415 = (int) D.43414;
        D.43416 = __s2 + 2;
        D.43417 = *D.43416;
        D.43418 = (int) D.43417;
        __result = D.43415 - D.43418;
        D.43419 = __s2_len > 2;
        D.43399 = __result == 0;
        D.43420 = D.43419 & D.43399;
        if (D.43420 != 0) goto <D.43421>; else goto <D.43422>;
        <D.43421>:
        D.43423 = &MEM[(void *)"get_OffsetToStringData" + 3B];
        D.43424 = *D.43423;
        D.43425 = (int) D.43424;
        D.43426 = __s2 + 3;
        D.43427 = *D.43426;
        D.43428 = (int) D.43427;
        __result = D.43425 - D.43428;
        <D.43422>:
        <D.43412>:
        <D.43402>:
      }
      D.26619 = __result;
    }
    iftmp.415 = -D.26619;
    goto <D.43429>;
    <D.43392>:
    D.42309 = cmethod->name;
    iftmp.415 = __builtin_strcmp (D.42309, "get_OffsetToStringData");
    <D.43429>:
    D.26620 = iftmp.415;
  }
  if (D.26620 == 0) goto <D.43430>; else goto <D.43431>;
  <D.43430>:
  D.42329 = cfg->mempool;
  ins = mono_mempool_alloc (D.42329, 48);
  ins->data.op[1].const_val = 0;
  D.42453 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.42453;
  ins->prev = 0B;
  D.42454 = ins->prev;
  ins->next = D.42454;
  ins->opcode = 362;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.42455 = ins->sreg3;
  ins->sreg2 = D.42455;
  D.42456 = ins->sreg2;
  ins->sreg1 = D.42456;
  D.42334 = cfg->ip;
  ins->cil_code = D.42334;
  ins->data.op[0].const_val = 12;
  ins->type = 1;
  D.43432 = alloc_dreg (cfg, 1);
  D.43433 = (int) D.43432;
  ins->dreg = D.43433;
  D.42337 = cfg->cbb;
  D.42338 = D.42337->last_ins;
  if (D.42338 != 0B) goto <D.43434>; else goto <D.43435>;
  <D.43434>:
  D.42337 = cfg->cbb;
  D.42338 = D.42337->last_ins;
  D.42338->next = ins;
  D.42337 = cfg->cbb;
  D.42338 = D.42337->last_ins;
  ins->prev = D.42338;
  D.42337 = cfg->cbb;
  D.42337->last_ins = ins;
  goto <D.43436>;
  <D.43435>:
  D.42337 = cfg->cbb;
  D.42337 = cfg->cbb;
  D.42337->last_ins = ins;
  D.42338 = D.42337->last_ins;
  D.42337->code = D.42338;
  <D.43436>:
  D.42465 = ins;
  return D.42465;
  <D.43431>:
  D.42465 = 0B;
  return D.42465;
  <D.43389>:
  D.42265 = cmethod->klass;
  D.43437 = mono_defaults.thread_class;
  if (D.42265 == D.43437) goto <D.43438>; else goto <D.43439>;
  <D.43438>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 12;
    if (__s2_len <= 3) goto <D.43441>; else goto <D.43442>;
    <D.43441>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = cmethod->name;
      D.43443 = "SpinWait_nop";
      D.43444 = MEM[(const unsigned char *)D.43443];
      D.43445 = (int) D.43444;
      D.43446 = *__s2;
      D.43447 = (int) D.43446;
      __result = D.43445 - D.43447;
      {
        D.43448 = __s2_len != 0;
        D.43449 = __result == 0;
        D.43450 = D.43448 & D.43449;
        if (D.43450 != 0) goto <D.43451>; else goto <D.43452>;
        <D.43451>:
        D.43453 = &MEM[(void *)"SpinWait_nop" + 1B];
        D.43454 = *D.43453;
        D.43455 = (int) D.43454;
        D.43456 = __s2 + 1;
        D.43457 = *D.43456;
        D.43458 = (int) D.43457;
        __result = D.43455 - D.43458;
        D.43459 = __s2_len > 1;
        D.43449 = __result == 0;
        D.43460 = D.43459 & D.43449;
        if (D.43460 != 0) goto <D.43461>; else goto <D.43462>;
        <D.43461>:
        D.43463 = &MEM[(void *)"SpinWait_nop" + 2B];
        D.43464 = *D.43463;
        D.43465 = (int) D.43464;
        D.43466 = __s2 + 2;
        D.43467 = *D.43466;
        D.43468 = (int) D.43467;
        __result = D.43465 - D.43468;
        D.43469 = __s2_len > 2;
        D.43449 = __result == 0;
        D.43470 = D.43469 & D.43449;
        if (D.43470 != 0) goto <D.43471>; else goto <D.43472>;
        <D.43471>:
        D.43473 = &MEM[(void *)"SpinWait_nop" + 3B];
        D.43474 = *D.43473;
        D.43475 = (int) D.43474;
        D.43476 = __s2 + 3;
        D.43477 = *D.43476;
        D.43478 = (int) D.43477;
        __result = D.43475 - D.43478;
        <D.43472>:
        <D.43462>:
        <D.43452>:
      }
      D.26628 = __result;
    }
    iftmp.416 = -D.26628;
    goto <D.43479>;
    <D.43442>:
    D.42309 = cmethod->name;
    iftmp.416 = __builtin_strcmp (D.42309, "SpinWait_nop");
    <D.43479>:
    D.26629 = iftmp.416;
  }
  if (D.26629 == 0) goto <D.43480>; else goto <D.43481>;
  <D.43480>:
  D.42329 = cfg->mempool;
  ins = mono_mempool_alloc (D.42329, 48);
  ins->data.op[1].const_val = 0;
  D.42453 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.42453;
  ins->prev = 0B;
  D.42454 = ins->prev;
  ins->next = D.42454;
  ins->opcode = 318;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.42455 = ins->sreg3;
  ins->sreg2 = D.42455;
  D.42456 = ins->sreg2;
  ins->sreg1 = D.42456;
  D.42334 = cfg->ip;
  ins->cil_code = D.42334;
  D.42337 = cfg->cbb;
  D.42338 = D.42337->last_ins;
  if (D.42338 != 0B) goto <D.43482>; else goto <D.43483>;
  <D.43482>:
  D.42337 = cfg->cbb;
  D.42338 = D.42337->last_ins;
  D.42338->next = ins;
  D.42337 = cfg->cbb;
  D.42338 = D.42337->last_ins;
  ins->prev = D.42338;
  D.42337 = cfg->cbb;
  D.42337->last_ins = ins;
  goto <D.43484>;
  <D.43483>:
  D.42337 = cfg->cbb;
  D.42337 = cfg->cbb;
  D.42337->last_ins = ins;
  D.42338 = D.42337->last_ins;
  D.42337->code = D.42338;
  <D.43484>:
  D.42465 = ins;
  return D.42465;
  <D.43481>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 13;
    if (__s2_len <= 3) goto <D.43486>; else goto <D.43487>;
    <D.43486>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = cmethod->name;
      D.43488 = "MemoryBarrier";
      D.43489 = MEM[(const unsigned char *)D.43488];
      D.43490 = (int) D.43489;
      D.43491 = *__s2;
      D.43492 = (int) D.43491;
      __result = D.43490 - D.43492;
      {
        D.43493 = __s2_len != 0;
        D.43494 = __result == 0;
        D.43495 = D.43493 & D.43494;
        if (D.43495 != 0) goto <D.43496>; else goto <D.43497>;
        <D.43496>:
        D.43498 = &MEM[(void *)"MemoryBarrier" + 1B];
        D.43499 = *D.43498;
        D.43500 = (int) D.43499;
        D.43501 = __s2 + 1;
        D.43502 = *D.43501;
        D.43503 = (int) D.43502;
        __result = D.43500 - D.43503;
        D.43504 = __s2_len > 1;
        D.43494 = __result == 0;
        D.43505 = D.43504 & D.43494;
        if (D.43505 != 0) goto <D.43506>; else goto <D.43507>;
        <D.43506>:
        D.43508 = &MEM[(void *)"MemoryBarrier" + 2B];
        D.43509 = *D.43508;
        D.43510 = (int) D.43509;
        D.43511 = __s2 + 2;
        D.43512 = *D.43511;
        D.43513 = (int) D.43512;
        __result = D.43510 - D.43513;
        D.43514 = __s2_len > 2;
        D.43494 = __result == 0;
        D.43515 = D.43514 & D.43494;
        if (D.43515 != 0) goto <D.43516>; else goto <D.43517>;
        <D.43516>:
        D.43518 = &MEM[(void *)"MemoryBarrier" + 3B];
        D.43519 = *D.43518;
        D.43520 = (int) D.43519;
        D.43521 = __s2 + 3;
        D.43522 = *D.43521;
        D.43523 = (int) D.43522;
        __result = D.43520 - D.43523;
        <D.43517>:
        <D.43507>:
        <D.43497>:
      }
      D.26637 = __result;
    }
    iftmp.417 = -D.26637;
    goto <D.43524>;
    <D.43487>:
    D.42309 = cmethod->name;
    iftmp.417 = __builtin_strcmp (D.42309, "MemoryBarrier");
    <D.43524>:
    D.26638 = iftmp.417;
  }
  if (D.26638 == 0) goto <D.43525>; else goto <D.43526>;
  <D.43525>:
  D.42465 = emit_memory_barrier (cfg, 4);
  return D.42465;
  <D.43526>:
  goto <D.43527>;
  <D.43439>:
  D.42265 = cmethod->klass;
  D.43528 = mono_defaults.monitor_class;
  if (D.42265 == D.43528) goto <D.43529>; else goto <D.43530>;
  <D.43529>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 5;
    if (__s2_len <= 3) goto <D.43532>; else goto <D.43533>;
    <D.43532>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = cmethod->name;
      D.43534 = "Enter";
      D.43535 = MEM[(const unsigned char *)D.43534];
      D.43536 = (int) D.43535;
      D.43537 = *__s2;
      D.43538 = (int) D.43537;
      __result = D.43536 - D.43538;
      {
        D.43539 = __s2_len != 0;
        D.43540 = __result == 0;
        D.43541 = D.43539 & D.43540;
        if (D.43541 != 0) goto <D.43542>; else goto <D.43543>;
        <D.43542>:
        D.43544 = &MEM[(void *)"Enter" + 1B];
        D.43545 = *D.43544;
        D.43546 = (int) D.43545;
        D.43547 = __s2 + 1;
        D.43548 = *D.43547;
        D.43549 = (int) D.43548;
        __result = D.43546 - D.43549;
        D.43550 = __s2_len > 1;
        D.43540 = __result == 0;
        D.43551 = D.43550 & D.43540;
        if (D.43551 != 0) goto <D.43552>; else goto <D.43553>;
        <D.43552>:
        D.43554 = &MEM[(void *)"Enter" + 2B];
        D.43555 = *D.43554;
        D.43556 = (int) D.43555;
        D.43557 = __s2 + 2;
        D.43558 = *D.43557;
        D.43559 = (int) D.43558;
        __result = D.43556 - D.43559;
        D.43560 = __s2_len > 2;
        D.43540 = __result == 0;
        D.43561 = D.43560 & D.43540;
        if (D.43561 != 0) goto <D.43562>; else goto <D.43563>;
        <D.43562>:
        D.43564 = &MEM[(void *)"Enter" + 3B];
        D.43565 = *D.43564;
        D.43566 = (int) D.43565;
        D.43567 = __s2 + 3;
        D.43568 = *D.43567;
        D.43569 = (int) D.43568;
        __result = D.43566 - D.43569;
        <D.43563>:
        <D.43553>:
        <D.43543>:
      }
      D.26646 = __result;
    }
    iftmp.418 = -D.26646;
    goto <D.43570>;
    <D.43533>:
    D.42309 = cmethod->name;
    iftmp.418 = __builtin_strcmp (D.42309, "Enter");
    <D.43570>:
    D.26647 = iftmp.418;
  }
  if (D.26647 == 0) goto <D.43571>; else goto <D.43572>;
  <D.43571>:
  D.43573 = fsig->param_count;
  if (D.43573 == 2) goto <D.43574>; else goto <D.43575>;
  <D.43574>:
  {
    struct MonoMethod * fast_method;

    fast_method = 0B;
    D.43576 = cfg->method;
    D.43577 = BIT_FIELD_REF <*D.43576, 8, 160>;
    D.43578 = D.43577 & 124;
    if (D.43578 == 100) goto <D.43579>; else goto <D.43580>;
    <D.43579>:
    {
      size_t __s1_len;
      size_t __s2_len;

      __s2_len = 18;
      if (__s2_len <= 3) goto <D.43582>; else goto <D.43583>;
      <D.43582>:
      {
        const unsigned char * __s2;
        int __result;

        D.43576 = cfg->method;
        __s2 = D.43576->name;
        D.43584 = "FastMonitorEnterV4";
        D.43585 = MEM[(const unsigned char *)D.43584];
        D.43586 = (int) D.43585;
        D.43587 = *__s2;
        D.43588 = (int) D.43587;
        __result = D.43586 - D.43588;
        {
          D.43589 = __s2_len != 0;
          D.43590 = __result == 0;
          D.43591 = D.43589 & D.43590;
          if (D.43591 != 0) goto <D.43592>; else goto <D.43593>;
          <D.43592>:
          D.43594 = &MEM[(void *)"FastMonitorEnterV4" + 1B];
          D.43595 = *D.43594;
          D.43596 = (int) D.43595;
          D.43597 = __s2 + 1;
          D.43598 = *D.43597;
          D.43599 = (int) D.43598;
          __result = D.43596 - D.43599;
          D.43600 = __s2_len > 1;
          D.43590 = __result == 0;
          D.43601 = D.43600 & D.43590;
          if (D.43601 != 0) goto <D.43602>; else goto <D.43603>;
          <D.43602>:
          D.43604 = &MEM[(void *)"FastMonitorEnterV4" + 2B];
          D.43605 = *D.43604;
          D.43606 = (int) D.43605;
          D.43607 = __s2 + 2;
          D.43608 = *D.43607;
          D.43609 = (int) D.43608;
          __result = D.43606 - D.43609;
          D.43610 = __s2_len > 2;
          D.43590 = __result == 0;
          D.43611 = D.43610 & D.43590;
          if (D.43611 != 0) goto <D.43612>; else goto <D.43613>;
          <D.43612>:
          D.43614 = &MEM[(void *)"FastMonitorEnterV4" + 3B];
          D.43615 = *D.43614;
          D.43616 = (int) D.43615;
          D.43617 = __s2 + 3;
          D.43618 = *D.43617;
          D.43619 = (int) D.43618;
          __result = D.43616 - D.43619;
          <D.43613>:
          <D.43603>:
          <D.43593>:
        }
        D.26656 = __result;
      }
      iftmp.419 = -D.26656;
      goto <D.43620>;
      <D.43583>:
      D.43576 = cfg->method;
      D.43621 = D.43576->name;
      iftmp.419 = __builtin_strcmp (D.43621, "FastMonitorEnterV4");
      <D.43620>:
      D.26657 = iftmp.419;
    }
    if (D.26657 == 0) goto <D.43622>; else goto <D.43623>;
    <D.43622>:
    D.42465 = 0B;
    return D.42465;
    <D.43623>:
    <D.43580>:
    fast_method = mono_monitor_get_fast_path (cmethod);
    if (fast_method == 0B) goto <D.43624>; else goto <D.43625>;
    <D.43624>:
    D.42465 = 0B;
    return D.42465;
    <D.43625>:
    D.42465 = mono_emit_method_call (cfg, fast_method, args, 0B);
    return D.42465;
  }
  <D.43575>:
  <D.43572>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 5;
    if (__s2_len <= 3) goto <D.43628>; else goto <D.43629>;
    <D.43628>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = cmethod->name;
      D.43534 = "Enter";
      D.43535 = MEM[(const unsigned char *)D.43534];
      D.43536 = (int) D.43535;
      D.43630 = *__s2;
      D.43631 = (int) D.43630;
      __result = D.43536 - D.43631;
      {
        D.43632 = __s2_len != 0;
        D.43633 = __result == 0;
        D.43634 = D.43632 & D.43633;
        if (D.43634 != 0) goto <D.43635>; else goto <D.43636>;
        <D.43635>:
        D.43544 = &MEM[(void *)"Enter" + 1B];
        D.43545 = *D.43544;
        D.43546 = (int) D.43545;
        D.43637 = __s2 + 1;
        D.43638 = *D.43637;
        D.43639 = (int) D.43638;
        __result = D.43546 - D.43639;
        D.43640 = __s2_len > 1;
        D.43633 = __result == 0;
        D.43641 = D.43640 & D.43633;
        if (D.43641 != 0) goto <D.43642>; else goto <D.43643>;
        <D.43642>:
        D.43554 = &MEM[(void *)"Enter" + 2B];
        D.43555 = *D.43554;
        D.43556 = (int) D.43555;
        D.43644 = __s2 + 2;
        D.43645 = *D.43644;
        D.43646 = (int) D.43645;
        __result = D.43556 - D.43646;
        D.43647 = __s2_len > 2;
        D.43633 = __result == 0;
        D.43648 = D.43647 & D.43633;
        if (D.43648 != 0) goto <D.43649>; else goto <D.43650>;
        <D.43649>:
        D.43564 = &MEM[(void *)"Enter" + 3B];
        D.43565 = *D.43564;
        D.43566 = (int) D.43565;
        D.43651 = __s2 + 3;
        D.43652 = *D.43651;
        D.43653 = (int) D.43652;
        __result = D.43566 - D.43653;
        <D.43650>:
        <D.43643>:
        <D.43636>:
      }
      D.26665 = __result;
    }
    iftmp.420 = -D.26665;
    goto <D.43654>;
    <D.43629>:
    D.42309 = cmethod->name;
    iftmp.420 = __builtin_strcmp (D.42309, "Enter");
    <D.43654>:
    D.26666 = iftmp.420;
  }
  if (D.26666 == 0) goto <D.43655>; else goto <D.43626>;
  <D.43655>:
  D.43573 = fsig->param_count;
  if (D.43573 == 1) goto <D.43656>; else goto <D.43626>;
  <D.43656>:
  {
    struct MonoCallInst * call;

    if (0 != 0) goto <D.43657>; else goto <D.43658>;
    <D.43657>:
    helper_sig_monitor_enter_exit_trampoline_llvm.421 = helper_sig_monitor_enter_exit_trampoline_llvm;
    call = mono_emit_abs_call (cfg, 37, 0B, helper_sig_monitor_enter_exit_trampoline_llvm.421, args);
    goto <D.43660>;
    <D.43658>:
    helper_sig_monitor_enter_exit_trampoline.422 = helper_sig_monitor_enter_exit_trampoline;
    call = mono_emit_abs_call (cfg, 37, 0B, helper_sig_monitor_enter_exit_trampoline.422, 0B);
    D.42335 = *args;
    D.42336 = D.42335->dreg;
    mono_call_inst_add_outarg_reg (cfg, call, D.42336, 0, 0);
    <D.43660>:
    D.42465 = call;
    return D.42465;
  }
  <D.43626>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 4;
    if (__s2_len <= 3) goto <D.43663>; else goto <D.43664>;
    <D.43663>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = cmethod->name;
      D.43665 = "Exit";
      D.43666 = MEM[(const unsigned char *)D.43665];
      D.43667 = (int) D.43666;
      D.43668 = *__s2;
      D.43669 = (int) D.43668;
      __result = D.43667 - D.43669;
      {
        D.43670 = __s2_len != 0;
        D.43671 = __result == 0;
        D.43672 = D.43670 & D.43671;
        if (D.43672 != 0) goto <D.43673>; else goto <D.43674>;
        <D.43673>:
        D.43675 = &MEM[(void *)"Exit" + 1B];
        D.43676 = *D.43675;
        D.43677 = (int) D.43676;
        D.43678 = __s2 + 1;
        D.43679 = *D.43678;
        D.43680 = (int) D.43679;
        __result = D.43677 - D.43680;
        D.43681 = __s2_len > 1;
        D.43671 = __result == 0;
        D.43682 = D.43681 & D.43671;
        if (D.43682 != 0) goto <D.43683>; else goto <D.43684>;
        <D.43683>:
        D.43685 = &MEM[(void *)"Exit" + 2B];
        D.43686 = *D.43685;
        D.43687 = (int) D.43686;
        D.43688 = __s2 + 2;
        D.43689 = *D.43688;
        D.43690 = (int) D.43689;
        __result = D.43687 - D.43690;
        D.43691 = __s2_len > 2;
        D.43671 = __result == 0;
        D.43692 = D.43691 & D.43671;
        if (D.43692 != 0) goto <D.43693>; else goto <D.43694>;
        <D.43693>:
        D.43695 = &MEM[(void *)"Exit" + 3B];
        D.43696 = *D.43695;
        D.43697 = (int) D.43696;
        D.43698 = __s2 + 3;
        D.43699 = *D.43698;
        D.43700 = (int) D.43699;
        __result = D.43697 - D.43700;
        <D.43694>:
        <D.43684>:
        <D.43674>:
      }
      D.26675 = __result;
    }
    iftmp.423 = -D.26675;
    goto <D.43701>;
    <D.43664>:
    D.42309 = cmethod->name;
    iftmp.423 = __builtin_strcmp (D.42309, "Exit");
    <D.43701>:
    D.26676 = iftmp.423;
  }
  if (D.26676 == 0) goto <D.43702>; else goto <D.43703>;
  <D.43702>:
  {
    struct MonoCallInst * call;

    if (0 != 0) goto <D.43704>; else goto <D.43705>;
    <D.43704>:
    helper_sig_monitor_enter_exit_trampoline_llvm.421 = helper_sig_monitor_enter_exit_trampoline_llvm;
    call = mono_emit_abs_call (cfg, 38, 0B, helper_sig_monitor_enter_exit_trampoline_llvm.421, args);
    goto <D.43706>;
    <D.43705>:
    helper_sig_monitor_enter_exit_trampoline.422 = helper_sig_monitor_enter_exit_trampoline;
    call = mono_emit_abs_call (cfg, 38, 0B, helper_sig_monitor_enter_exit_trampoline.422, 0B);
    D.42335 = *args;
    D.42336 = D.42335->dreg;
    mono_call_inst_add_outarg_reg (cfg, call, D.42336, 0, 0);
    <D.43706>:
    D.42465 = call;
    return D.42465;
  }
  <D.43703>:
  goto <D.43707>;
  <D.43530>:
  D.42265 = cmethod->klass;
  D.43710 = D.42265->image;
  D.42263 = mono_defaults.corlib;
  if (D.43710 == D.42263) goto <D.43711>; else goto <D.43708>;
  <D.43711>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 16;
    if (__s2_len <= 3) goto <D.43713>; else goto <D.43714>;
    <D.43713>:
    {
      const unsigned char * __s2;
      int __result;

      D.42265 = cmethod->klass;
      __s2 = D.42265->name_space;
      D.43715 = "System.Threading";
      D.43716 = MEM[(const unsigned char *)D.43715];
      D.43717 = (int) D.43716;
      D.43718 = *__s2;
      D.43719 = (int) D.43718;
      __result = D.43717 - D.43719;
      {
        D.43720 = __s2_len != 0;
        D.43721 = __result == 0;
        D.43722 = D.43720 & D.43721;
        if (D.43722 != 0) goto <D.43723>; else goto <D.43724>;
        <D.43723>:
        D.43725 = &MEM[(void *)"System.Threading" + 1B];
        D.43726 = *D.43725;
        D.43727 = (int) D.43726;
        D.43728 = __s2 + 1;
        D.43729 = *D.43728;
        D.43730 = (int) D.43729;
        __result = D.43727 - D.43730;
        D.43731 = __s2_len > 1;
        D.43721 = __result == 0;
        D.43732 = D.43731 & D.43721;
        if (D.43732 != 0) goto <D.43733>; else goto <D.43734>;
        <D.43733>:
        D.43735 = &MEM[(void *)"System.Threading" + 2B];
        D.43736 = *D.43735;
        D.43737 = (int) D.43736;
        D.43738 = __s2 + 2;
        D.43739 = *D.43738;
        D.43740 = (int) D.43739;
        __result = D.43737 - D.43740;
        D.43741 = __s2_len > 2;
        D.43721 = __result == 0;
        D.43742 = D.43741 & D.43721;
        if (D.43742 != 0) goto <D.43743>; else goto <D.43744>;
        <D.43743>:
        D.43745 = &MEM[(void *)"System.Threading" + 3B];
        D.43746 = *D.43745;
        D.43747 = (int) D.43746;
        D.43748 = __s2 + 3;
        D.43749 = *D.43748;
        D.43750 = (int) D.43749;
        __result = D.43747 - D.43750;
        <D.43744>:
        <D.43734>:
        <D.43724>:
      }
      D.26685 = __result;
    }
    iftmp.424 = -D.26685;
    goto <D.43751>;
    <D.43714>:
    D.42265 = cmethod->klass;
    D.43752 = D.42265->name_space;
    iftmp.424 = __builtin_strcmp (D.43752, "System.Threading");
    <D.43751>:
    D.26686 = iftmp.424;
  }
  if (D.26686 == 0) goto <D.43753>; else goto <D.43708>;
  <D.43753>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 11;
    if (__s2_len <= 3) goto <D.43755>; else goto <D.43756>;
    <D.43755>:
    {
      const unsigned char * __s2;
      int __result;

      D.42265 = cmethod->klass;
      __s2 = D.42265->name;
      D.43757 = "Interlocked";
      D.43758 = MEM[(const unsigned char *)D.43757];
      D.43759 = (int) D.43758;
      D.43760 = *__s2;
      D.43761 = (int) D.43760;
      __result = D.43759 - D.43761;
      {
        D.43762 = __s2_len != 0;
        D.43763 = __result == 0;
        D.43764 = D.43762 & D.43763;
        if (D.43764 != 0) goto <D.43765>; else goto <D.43766>;
        <D.43765>:
        D.43767 = &MEM[(void *)"Interlocked" + 1B];
        D.43768 = *D.43767;
        D.43769 = (int) D.43768;
        D.43770 = __s2 + 1;
        D.43771 = *D.43770;
        D.43772 = (int) D.43771;
        __result = D.43769 - D.43772;
        D.43773 = __s2_len > 1;
        D.43763 = __result == 0;
        D.43774 = D.43773 & D.43763;
        if (D.43774 != 0) goto <D.43775>; else goto <D.43776>;
        <D.43775>:
        D.43777 = &MEM[(void *)"Interlocked" + 2B];
        D.43778 = *D.43777;
        D.43779 = (int) D.43778;
        D.43780 = __s2 + 2;
        D.43781 = *D.43780;
        D.43782 = (int) D.43781;
        __result = D.43779 - D.43782;
        D.43783 = __s2_len > 2;
        D.43763 = __result == 0;
        D.43784 = D.43783 & D.43763;
        if (D.43784 != 0) goto <D.43785>; else goto <D.43786>;
        <D.43785>:
        D.43787 = &MEM[(void *)"Interlocked" + 3B];
        D.43788 = *D.43787;
        D.43789 = (int) D.43788;
        D.43790 = __s2 + 3;
        D.43791 = *D.43790;
        D.43792 = (int) D.43791;
        __result = D.43789 - D.43792;
        <D.43786>:
        <D.43776>:
        <D.43766>:
      }
      D.26694 = __result;
    }
    iftmp.425 = -D.26694;
    goto <D.43793>;
    <D.43756>:
    D.42265 = cmethod->klass;
    D.43794 = D.42265->name;
    iftmp.425 = __builtin_strcmp (D.43794, "Interlocked");
    <D.43793>:
    D.26695 = iftmp.425;
  }
  if (D.26695 == 0) goto <D.43795>; else goto <D.43708>;
  <D.43795>:
  ins = 0B;
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 9;
    if (__s2_len <= 3) goto <D.43797>; else goto <D.43798>;
    <D.43797>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = cmethod->name;
      D.43799 = "Increment";
      D.43800 = MEM[(const unsigned char *)D.43799];
      D.43801 = (int) D.43800;
      D.43802 = *__s2;
      D.43803 = (int) D.43802;
      __result = D.43801 - D.43803;
      {
        D.43804 = __s2_len != 0;
        D.43805 = __result == 0;
        D.43806 = D.43804 & D.43805;
        if (D.43806 != 0) goto <D.43807>; else goto <D.43808>;
        <D.43807>:
        D.43809 = &MEM[(void *)"Increment" + 1B];
        D.43810 = *D.43809;
        D.43811 = (int) D.43810;
        D.43812 = __s2 + 1;
        D.43813 = *D.43812;
        D.43814 = (int) D.43813;
        __result = D.43811 - D.43814;
        D.43815 = __s2_len > 1;
        D.43805 = __result == 0;
        D.43816 = D.43815 & D.43805;
        if (D.43816 != 0) goto <D.43817>; else goto <D.43818>;
        <D.43817>:
        D.43819 = &MEM[(void *)"Increment" + 2B];
        D.43820 = *D.43819;
        D.43821 = (int) D.43820;
        D.43822 = __s2 + 2;
        D.43823 = *D.43822;
        D.43824 = (int) D.43823;
        __result = D.43821 - D.43824;
        D.43825 = __s2_len > 2;
        D.43805 = __result == 0;
        D.43826 = D.43825 & D.43805;
        if (D.43826 != 0) goto <D.43827>; else goto <D.43828>;
        <D.43827>:
        D.43829 = &MEM[(void *)"Increment" + 3B];
        D.43830 = *D.43829;
        D.43831 = (int) D.43830;
        D.43832 = __s2 + 3;
        D.43833 = *D.43832;
        D.43834 = (int) D.43833;
        __result = D.43831 - D.43834;
        <D.43828>:
        <D.43818>:
        <D.43808>:
      }
      D.26703 = __result;
    }
    iftmp.426 = -D.26703;
    goto <D.43835>;
    <D.43798>:
    D.42309 = cmethod->name;
    iftmp.426 = __builtin_strcmp (D.42309, "Increment");
    <D.43835>:
    D.26704 = iftmp.426;
  }
  if (D.26704 == 0) goto <D.43836>; else goto <D.43837>;
  <D.43836>:
  {
    struct MonoInst * ins_iconst;
    guint32 opcode;

    opcode = 0;
    D.43838 = fsig->params[0];
    D.43839 = D.43838->type;
    if (D.43839 == 8) goto <D.43840>; else goto <D.43841>;
    <D.43840>:
    opcode = 966;
    cfg->has_atomic_add_new_i4 = 1;
    <D.43841>:
    if (opcode != 0) goto <D.43842>; else goto <D.43843>;
    <D.43842>:
    D.42329 = cfg->mempool;
    ins_iconst = mono_mempool_alloc (D.42329, 48);
    ins_iconst->data.op[1].const_val = 0;
    D.43844 = ins_iconst->data.op[1].const_val;
    ins_iconst->data.op[0].const_val = D.43844;
    ins_iconst->prev = 0B;
    D.43845 = ins_iconst->prev;
    ins_iconst->next = D.43845;
    ins_iconst->opcode = 362;
    ins_iconst->flags = 0;
    ins_iconst->type = 0;
    ins_iconst->dreg = -1;
    ins_iconst->sreg3 = -1;
    D.43846 = ins_iconst->sreg3;
    ins_iconst->sreg2 = D.43846;
    D.43847 = ins_iconst->sreg2;
    ins_iconst->sreg1 = D.43847;
    D.42334 = cfg->ip;
    ins_iconst->cil_code = D.42334;
    ins_iconst->data.op[0].const_val = 1;
    D.43848 = mono_alloc_ireg (cfg);
    D.43849 = (int) D.43848;
    ins_iconst->dreg = D.43849;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    if (D.42338 != 0B) goto <D.43850>; else goto <D.43851>;
    <D.43850>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    D.42338->next = ins_iconst;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    ins_iconst->prev = D.42338;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins_iconst;
    goto <D.43852>;
    <D.43851>:
    D.42337 = cfg->cbb;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins_iconst;
    D.42338 = D.42337->last_ins;
    D.42337->code = D.42338;
    <D.43852>:
    D.42329 = cfg->mempool;
    ins = mono_mempool_alloc (D.42329, 48);
    ins->data.op[1].const_val = 0;
    D.42453 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.42453;
    ins->prev = 0B;
    D.42454 = ins->prev;
    ins->next = D.42454;
    D.43853 = (short unsigned int) opcode;
    ins->opcode = D.43853;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.42455 = ins->sreg3;
    ins->sreg2 = D.42455;
    D.42456 = ins->sreg2;
    ins->sreg1 = D.42456;
    D.42334 = cfg->ip;
    ins->cil_code = D.42334;
    D.43854 = mono_alloc_ireg (cfg);
    D.43855 = (int) D.43854;
    ins->dreg = D.43855;
    D.42335 = *args;
    D.42336 = D.42335->dreg;
    ins->sreg1 = D.42336;
    ins->data.op[0].const_val = 0;
    D.43856 = ins_iconst->dreg;
    ins->sreg2 = D.43856;
    if (opcode == 966) goto <D.43858>; else goto <D.43859>;
    <D.43858>:
    iftmp.427 = 1;
    goto <D.43860>;
    <D.43859>:
    iftmp.427 = 2;
    <D.43860>:
    ins->type = iftmp.427;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    if (D.42338 != 0B) goto <D.43861>; else goto <D.43862>;
    <D.43861>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    D.42338->next = ins;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    ins->prev = D.42338;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    goto <D.43863>;
    <D.43862>:
    D.42337 = cfg->cbb;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    D.42338 = D.42337->last_ins;
    D.42337->code = D.42338;
    <D.43863>:
    <D.43843>:
  }
  goto <D.43864>;
  <D.43837>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 9;
    if (__s2_len <= 3) goto <D.43866>; else goto <D.43867>;
    <D.43866>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = cmethod->name;
      D.43868 = "Decrement";
      D.43869 = MEM[(const unsigned char *)D.43868];
      D.43870 = (int) D.43869;
      D.43871 = *__s2;
      D.43872 = (int) D.43871;
      __result = D.43870 - D.43872;
      {
        D.43873 = __s2_len != 0;
        D.43874 = __result == 0;
        D.43875 = D.43873 & D.43874;
        if (D.43875 != 0) goto <D.43876>; else goto <D.43877>;
        <D.43876>:
        D.43878 = &MEM[(void *)"Decrement" + 1B];
        D.43879 = *D.43878;
        D.43880 = (int) D.43879;
        D.43881 = __s2 + 1;
        D.43882 = *D.43881;
        D.43883 = (int) D.43882;
        __result = D.43880 - D.43883;
        D.43884 = __s2_len > 1;
        D.43874 = __result == 0;
        D.43885 = D.43884 & D.43874;
        if (D.43885 != 0) goto <D.43886>; else goto <D.43887>;
        <D.43886>:
        D.43888 = &MEM[(void *)"Decrement" + 2B];
        D.43889 = *D.43888;
        D.43890 = (int) D.43889;
        D.43891 = __s2 + 2;
        D.43892 = *D.43891;
        D.43893 = (int) D.43892;
        __result = D.43890 - D.43893;
        D.43894 = __s2_len > 2;
        D.43874 = __result == 0;
        D.43895 = D.43894 & D.43874;
        if (D.43895 != 0) goto <D.43896>; else goto <D.43897>;
        <D.43896>:
        D.43898 = &MEM[(void *)"Decrement" + 3B];
        D.43899 = *D.43898;
        D.43900 = (int) D.43899;
        D.43901 = __s2 + 3;
        D.43902 = *D.43901;
        D.43903 = (int) D.43902;
        __result = D.43900 - D.43903;
        <D.43897>:
        <D.43887>:
        <D.43877>:
      }
      D.26714 = __result;
    }
    iftmp.428 = -D.26714;
    goto <D.43904>;
    <D.43867>:
    D.42309 = cmethod->name;
    iftmp.428 = __builtin_strcmp (D.42309, "Decrement");
    <D.43904>:
    D.26715 = iftmp.428;
  }
  if (D.26715 == 0) goto <D.43905>; else goto <D.43906>;
  <D.43905>:
  {
    struct MonoInst * ins_iconst;
    guint32 opcode;

    opcode = 0;
    D.43838 = fsig->params[0];
    D.43839 = D.43838->type;
    if (D.43839 == 8) goto <D.43907>; else goto <D.43908>;
    <D.43907>:
    opcode = 966;
    cfg->has_atomic_add_new_i4 = 1;
    <D.43908>:
    if (opcode != 0) goto <D.43909>; else goto <D.43910>;
    <D.43909>:
    D.42329 = cfg->mempool;
    ins_iconst = mono_mempool_alloc (D.42329, 48);
    ins_iconst->data.op[1].const_val = 0;
    D.43911 = ins_iconst->data.op[1].const_val;
    ins_iconst->data.op[0].const_val = D.43911;
    ins_iconst->prev = 0B;
    D.43912 = ins_iconst->prev;
    ins_iconst->next = D.43912;
    ins_iconst->opcode = 362;
    ins_iconst->flags = 0;
    ins_iconst->type = 0;
    ins_iconst->dreg = -1;
    ins_iconst->sreg3 = -1;
    D.43913 = ins_iconst->sreg3;
    ins_iconst->sreg2 = D.43913;
    D.43914 = ins_iconst->sreg2;
    ins_iconst->sreg1 = D.43914;
    D.42334 = cfg->ip;
    ins_iconst->cil_code = D.42334;
    ins_iconst->data.op[0].const_val = -1;
    D.43915 = mono_alloc_ireg (cfg);
    D.43916 = (int) D.43915;
    ins_iconst->dreg = D.43916;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    if (D.42338 != 0B) goto <D.43917>; else goto <D.43918>;
    <D.43917>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    D.42338->next = ins_iconst;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    ins_iconst->prev = D.42338;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins_iconst;
    goto <D.43919>;
    <D.43918>:
    D.42337 = cfg->cbb;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins_iconst;
    D.42338 = D.42337->last_ins;
    D.42337->code = D.42338;
    <D.43919>:
    D.42329 = cfg->mempool;
    ins = mono_mempool_alloc (D.42329, 48);
    ins->data.op[1].const_val = 0;
    D.42453 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.42453;
    ins->prev = 0B;
    D.42454 = ins->prev;
    ins->next = D.42454;
    D.43920 = (short unsigned int) opcode;
    ins->opcode = D.43920;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.42455 = ins->sreg3;
    ins->sreg2 = D.42455;
    D.42456 = ins->sreg2;
    ins->sreg1 = D.42456;
    D.42334 = cfg->ip;
    ins->cil_code = D.42334;
    D.43921 = mono_alloc_ireg (cfg);
    D.43922 = (int) D.43921;
    ins->dreg = D.43922;
    D.42335 = *args;
    D.42336 = D.42335->dreg;
    ins->sreg1 = D.42336;
    ins->data.op[0].const_val = 0;
    D.43923 = ins_iconst->dreg;
    ins->sreg2 = D.43923;
    if (opcode == 966) goto <D.43925>; else goto <D.43926>;
    <D.43925>:
    iftmp.429 = 1;
    goto <D.43927>;
    <D.43926>:
    iftmp.429 = 2;
    <D.43927>:
    ins->type = iftmp.429;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    if (D.42338 != 0B) goto <D.43928>; else goto <D.43929>;
    <D.43928>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    D.42338->next = ins;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    ins->prev = D.42338;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    goto <D.43930>;
    <D.43929>:
    D.42337 = cfg->cbb;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    D.42338 = D.42337->last_ins;
    D.42337->code = D.42338;
    <D.43930>:
    <D.43910>:
  }
  goto <D.43931>;
  <D.43906>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 3;
    if (__s2_len <= 3) goto <D.43933>; else goto <D.43934>;
    <D.43933>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = cmethod->name;
      D.43935 = "Add";
      D.43936 = MEM[(const unsigned char *)D.43935];
      D.43937 = (int) D.43936;
      D.43938 = *__s2;
      D.43939 = (int) D.43938;
      __result = D.43937 - D.43939;
      {
        D.43940 = __s2_len != 0;
        D.43941 = __result == 0;
        D.43942 = D.43940 & D.43941;
        if (D.43942 != 0) goto <D.43943>; else goto <D.43944>;
        <D.43943>:
        D.43945 = &MEM[(void *)"Add" + 1B];
        D.43946 = *D.43945;
        D.43947 = (int) D.43946;
        D.43948 = __s2 + 1;
        D.43949 = *D.43948;
        D.43950 = (int) D.43949;
        __result = D.43947 - D.43950;
        D.43951 = __s2_len > 1;
        D.43941 = __result == 0;
        D.43952 = D.43951 & D.43941;
        if (D.43952 != 0) goto <D.43953>; else goto <D.43954>;
        <D.43953>:
        D.43955 = &MEM[(void *)"Add" + 2B];
        D.43956 = *D.43955;
        D.43957 = (int) D.43956;
        D.43958 = __s2 + 2;
        D.43959 = *D.43958;
        D.43960 = (int) D.43959;
        __result = D.43957 - D.43960;
        D.43961 = __s2_len > 2;
        D.43941 = __result == 0;
        D.43962 = D.43961 & D.43941;
        if (D.43962 != 0) goto <D.43963>; else goto <D.43964>;
        <D.43963>:
        D.43965 = &MEM[(void *)"Add" + 3B];
        D.43966 = *D.43965;
        D.43967 = (int) D.43966;
        D.43968 = __s2 + 3;
        D.43969 = *D.43968;
        D.43970 = (int) D.43969;
        __result = D.43967 - D.43970;
        <D.43964>:
        <D.43954>:
        <D.43944>:
      }
      D.26725 = __result;
    }
    iftmp.430 = -D.26725;
    goto <D.43971>;
    <D.43934>:
    D.42309 = cmethod->name;
    iftmp.430 = __builtin_strcmp (D.42309, "Add");
    <D.43971>:
    D.26726 = iftmp.430;
  }
  if (D.26726 == 0) goto <D.43972>; else goto <D.43973>;
  <D.43972>:
  {
    guint32 opcode;

    opcode = 0;
    D.43838 = fsig->params[0];
    D.43839 = D.43838->type;
    if (D.43839 == 8) goto <D.43974>; else goto <D.43975>;
    <D.43974>:
    opcode = 966;
    cfg->has_atomic_add_new_i4 = 1;
    <D.43975>:
    if (opcode != 0) goto <D.43976>; else goto <D.43977>;
    <D.43976>:
    D.42329 = cfg->mempool;
    ins = mono_mempool_alloc (D.42329, 48);
    ins->data.op[1].const_val = 0;
    D.42453 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.42453;
    ins->prev = 0B;
    D.42454 = ins->prev;
    ins->next = D.42454;
    D.43978 = (short unsigned int) opcode;
    ins->opcode = D.43978;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.42455 = ins->sreg3;
    ins->sreg2 = D.42455;
    D.42456 = ins->sreg2;
    ins->sreg1 = D.42456;
    D.42334 = cfg->ip;
    ins->cil_code = D.42334;
    D.43979 = mono_alloc_ireg (cfg);
    D.43980 = (int) D.43979;
    ins->dreg = D.43980;
    D.42335 = *args;
    D.42336 = D.42335->dreg;
    ins->sreg1 = D.42336;
    ins->data.op[0].const_val = 0;
    D.42316 = args + 4;
    D.42317 = *D.42316;
    D.42562 = D.42317->dreg;
    ins->sreg2 = D.42562;
    if (opcode == 966) goto <D.43982>; else goto <D.43983>;
    <D.43982>:
    iftmp.431 = 1;
    goto <D.43984>;
    <D.43983>:
    iftmp.431 = 2;
    <D.43984>:
    ins->type = iftmp.431;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    if (D.42338 != 0B) goto <D.43985>; else goto <D.43986>;
    <D.43985>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    D.42338->next = ins;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    ins->prev = D.42338;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    goto <D.43987>;
    <D.43986>:
    D.42337 = cfg->cbb;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    D.42338 = D.42337->last_ins;
    D.42337->code = D.42338;
    <D.43987>:
    <D.43977>:
  }
  <D.43973>:
  <D.43931>:
  <D.43864>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 8;
    if (__s2_len <= 3) goto <D.43989>; else goto <D.43990>;
    <D.43989>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = cmethod->name;
      D.43991 = "Exchange";
      D.43992 = MEM[(const unsigned char *)D.43991];
      D.43993 = (int) D.43992;
      D.43994 = *__s2;
      D.43995 = (int) D.43994;
      __result = D.43993 - D.43995;
      {
        D.43996 = __s2_len != 0;
        D.43997 = __result == 0;
        D.43998 = D.43996 & D.43997;
        if (D.43998 != 0) goto <D.43999>; else goto <D.44000>;
        <D.43999>:
        D.44001 = &MEM[(void *)"Exchange" + 1B];
        D.44002 = *D.44001;
        D.44003 = (int) D.44002;
        D.44004 = __s2 + 1;
        D.44005 = *D.44004;
        D.44006 = (int) D.44005;
        __result = D.44003 - D.44006;
        D.44007 = __s2_len > 1;
        D.43997 = __result == 0;
        D.44008 = D.44007 & D.43997;
        if (D.44008 != 0) goto <D.44009>; else goto <D.44010>;
        <D.44009>:
        D.44011 = &MEM[(void *)"Exchange" + 2B];
        D.44012 = *D.44011;
        D.44013 = (int) D.44012;
        D.44014 = __s2 + 2;
        D.44015 = *D.44014;
        D.44016 = (int) D.44015;
        __result = D.44013 - D.44016;
        D.44017 = __s2_len > 2;
        D.43997 = __result == 0;
        D.44018 = D.44017 & D.43997;
        if (D.44018 != 0) goto <D.44019>; else goto <D.44020>;
        <D.44019>:
        D.44021 = &MEM[(void *)"Exchange" + 3B];
        D.44022 = *D.44021;
        D.44023 = (int) D.44022;
        D.44024 = __s2 + 3;
        D.44025 = *D.44024;
        D.44026 = (int) D.44025;
        __result = D.44023 - D.44026;
        <D.44020>:
        <D.44010>:
        <D.44000>:
      }
      D.26735 = __result;
    }
    iftmp.432 = -D.26735;
    goto <D.44027>;
    <D.43990>:
    D.42309 = cmethod->name;
    iftmp.432 = __builtin_strcmp (D.42309, "Exchange");
    <D.44027>:
    D.26736 = iftmp.432;
  }
  if (D.26736 == 0) goto <D.44028>; else goto <D.44029>;
  <D.44028>:
  {
    guint32 opcode;
    gboolean is_ref;

    D.43838 = fsig->params[0];
    D.43839 = D.43838->type;
    D.44030 = D.43839 == 28;
    is_ref = (gboolean) D.44030;
    D.43838 = fsig->params[0];
    D.43839 = D.43838->type;
    if (D.43839 == 8) goto <D.44031>; else goto <D.44032>;
    <D.44031>:
    opcode = 969;
    cfg->has_atomic_exchange_i4 = 1;
    goto <D.44033>;
    <D.44032>:
    if (is_ref != 0) goto <D.44034>; else goto <D.44037>;
    <D.44037>:
    D.43838 = fsig->params[0];
    D.43839 = D.43838->type;
    if (D.43839 == 24) goto <D.44034>; else goto <D.44035>;
    <D.44034>:
    opcode = 969;
    cfg->has_atomic_exchange_i4 = 1;
    goto <D.44036>;
    <D.44035>:
    D.42465 = 0B;
    return D.42465;
    <D.44036>:
    <D.44033>:
    D.42329 = cfg->mempool;
    ins = mono_mempool_alloc (D.42329, 48);
    ins->data.op[1].const_val = 0;
    D.42453 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.42453;
    ins->prev = 0B;
    D.42454 = ins->prev;
    ins->next = D.42454;
    D.44038 = (short unsigned int) opcode;
    ins->opcode = D.44038;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.42455 = ins->sreg3;
    ins->sreg2 = D.42455;
    D.42456 = ins->sreg2;
    ins->sreg1 = D.42456;
    D.42334 = cfg->ip;
    ins->cil_code = D.42334;
    if (is_ref != 0) goto <D.44040>; else goto <D.44041>;
    <D.44040>:
    D.44042 = mono_alloc_ireg_ref (cfg);
    iftmp.433 = (gint32) D.44042;
    goto <D.44043>;
    <D.44041>:
    D.44044 = mono_alloc_ireg (cfg);
    iftmp.433 = (gint32) D.44044;
    <D.44043>:
    ins->dreg = iftmp.433;
    D.42335 = *args;
    D.42336 = D.42335->dreg;
    ins->sreg1 = D.42336;
    ins->data.op[0].const_val = 0;
    D.42316 = args + 4;
    D.42317 = *D.42316;
    D.42562 = D.42317->dreg;
    ins->sreg2 = D.42562;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    if (D.42338 != 0B) goto <D.44045>; else goto <D.44046>;
    <D.44045>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    D.42338->next = ins;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    ins->prev = D.42338;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    goto <D.44047>;
    <D.44046>:
    D.42337 = cfg->cbb;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    D.42338 = D.42337->last_ins;
    D.42337->code = D.42338;
    <D.44047>:
    D.43838 = fsig->params[0];
    D.43839 = D.43838->type;
    D.44048 = (int) D.43839;
    switch (D.44048) <default: <D.26744>, case 8: <D.26739>, case 10: <D.26741>, case 24: <D.26742>, case 28: <D.26743>>
    <D.26739>:
    ins->type = 1;
    goto <D.26740>;
    <D.26741>:
    <D.26742>:
    ins->type = 2;
    goto <D.26740>;
    <D.26743>:
    ins->type = 6;
    goto <D.26740>;
    <D.26744>:
    monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 5462);
    <D.26740>:
    D.44049 = BIT_FIELD_REF <*cfg, 8, 3416>;
    D.44050 = D.44049 & 16;
    if (D.44050 != 0) goto <D.44051>; else goto <D.44052>;
    <D.44051>:
    if (is_ref != 0) goto <D.44053>; else goto <D.44054>;
    <D.44053>:
    D.42316 = args + 4;
    D.42317 = *D.42316;
    D.42335 = *args;
    emit_write_barrier (cfg, D.42335, D.42317);
    <D.44054>:
    <D.44052>:
  }
  <D.44029>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 15;
    if (__s2_len <= 3) goto <D.44056>; else goto <D.44057>;
    <D.44056>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = cmethod->name;
      D.44058 = "CompareExchange";
      D.44059 = MEM[(const unsigned char *)D.44058];
      D.44060 = (int) D.44059;
      D.44061 = *__s2;
      D.44062 = (int) D.44061;
      __result = D.44060 - D.44062;
      {
        D.44063 = __s2_len != 0;
        D.44064 = __result == 0;
        D.44065 = D.44063 & D.44064;
        if (D.44065 != 0) goto <D.44066>; else goto <D.44067>;
        <D.44066>:
        D.44068 = &MEM[(void *)"CompareExchange" + 1B];
        D.44069 = *D.44068;
        D.44070 = (int) D.44069;
        D.44071 = __s2 + 1;
        D.44072 = *D.44071;
        D.44073 = (int) D.44072;
        __result = D.44070 - D.44073;
        D.44074 = __s2_len > 1;
        D.44064 = __result == 0;
        D.44075 = D.44074 & D.44064;
        if (D.44075 != 0) goto <D.44076>; else goto <D.44077>;
        <D.44076>:
        D.44078 = &MEM[(void *)"CompareExchange" + 2B];
        D.44079 = *D.44078;
        D.44080 = (int) D.44079;
        D.44081 = __s2 + 2;
        D.44082 = *D.44081;
        D.44083 = (int) D.44082;
        __result = D.44080 - D.44083;
        D.44084 = __s2_len > 2;
        D.44064 = __result == 0;
        D.44085 = D.44084 & D.44064;
        if (D.44085 != 0) goto <D.44086>; else goto <D.44087>;
        <D.44086>:
        D.44088 = &MEM[(void *)"CompareExchange" + 3B];
        D.44089 = *D.44088;
        D.44090 = (int) D.44089;
        D.44091 = __s2 + 3;
        D.44092 = *D.44091;
        D.44093 = (int) D.44092;
        __result = D.44090 - D.44093;
        <D.44087>:
        <D.44077>:
        <D.44067>:
      }
      D.26752 = __result;
    }
    iftmp.434 = -D.26752;
    goto <D.44094>;
    <D.44057>:
    D.42309 = cmethod->name;
    iftmp.434 = __builtin_strcmp (D.42309, "CompareExchange");
    <D.44094>:
    D.26753 = iftmp.434;
  }
  if (D.26753 == 0) goto <D.44095>; else goto <D.44096>;
  <D.44095>:
  {
    int size;
    gboolean is_ref;

    size = 0;
    D.44097 = fsig->params[1];
    is_ref = mini_type_is_reference (cfg, D.44097);
    D.44097 = fsig->params[1];
    D.44098 = D.44097->type;
    if (D.44098 == 8) goto <D.44099>; else goto <D.44100>;
    <D.44099>:
    size = 4;
    goto <D.44101>;
    <D.44100>:
    if (is_ref != 0) goto <D.44102>; else goto <D.44105>;
    <D.44105>:
    D.44097 = fsig->params[1];
    D.44098 = D.44097->type;
    if (D.44098 == 24) goto <D.44102>; else goto <D.44103>;
    <D.44102>:
    size = 4;
    goto <D.44104>;
    <D.44103>:
    if (0 != 0) goto <D.44106>; else goto <D.44107>;
    <D.44106>:
    size = 8;
    <D.44107>:
    <D.44104>:
    <D.44101>:
    if (size == 4) goto <D.44108>; else goto <D.44109>;
    <D.44108>:
    D.42329 = cfg->mempool;
    ins = mono_mempool_alloc (D.42329, 48);
    ins->data.op[1].const_val = 0;
    D.42453 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.42453;
    ins->prev = 0B;
    D.42454 = ins->prev;
    ins->next = D.42454;
    ins->opcode = 976;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.42455 = ins->sreg3;
    ins->sreg2 = D.42455;
    D.42456 = ins->sreg2;
    ins->sreg1 = D.42456;
    D.42334 = cfg->ip;
    ins->cil_code = D.42334;
    if (is_ref != 0) goto <D.44111>; else goto <D.44112>;
    <D.44111>:
    D.44113 = alloc_ireg_ref (cfg);
    iftmp.435 = (gint32) D.44113;
    goto <D.44114>;
    <D.44112>:
    D.44115 = alloc_ireg (cfg);
    iftmp.435 = (gint32) D.44115;
    <D.44114>:
    ins->dreg = iftmp.435;
    D.42335 = *args;
    D.42336 = D.42335->dreg;
    ins->sreg1 = D.42336;
    D.42316 = args + 4;
    D.42317 = *D.42316;
    D.42562 = D.42317->dreg;
    ins->sreg2 = D.42562;
    D.42577 = args + 8;
    D.42578 = *D.42577;
    D.42579 = D.42578->dreg;
    ins->sreg3 = D.42579;
    ins->type = 1;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    if (D.42338 != 0B) goto <D.44116>; else goto <D.44117>;
    <D.44116>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    D.42338->next = ins;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    ins->prev = D.42338;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    goto <D.44118>;
    <D.44117>:
    D.42337 = cfg->cbb;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    D.42338 = D.42337->last_ins;
    D.42337->code = D.42338;
    <D.44118>:
    goto <D.44119>;
    <D.44109>:
    if (size == 8) goto <D.44120>; else goto <D.44121>;
    <D.44120>:
    D.42329 = cfg->mempool;
    ins = mono_mempool_alloc (D.42329, 48);
    ins->data.op[1].const_val = 0;
    D.42453 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.42453;
    ins->prev = 0B;
    D.42454 = ins->prev;
    ins->next = D.42454;
    ins->opcode = 977;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.42455 = ins->sreg3;
    ins->sreg2 = D.42455;
    D.42456 = ins->sreg2;
    ins->sreg1 = D.42456;
    D.42334 = cfg->ip;
    ins->cil_code = D.42334;
    if (is_ref != 0) goto <D.44123>; else goto <D.44124>;
    <D.44123>:
    D.44125 = alloc_ireg_ref (cfg);
    iftmp.436 = (gint32) D.44125;
    goto <D.44126>;
    <D.44124>:
    D.44127 = alloc_ireg (cfg);
    iftmp.436 = (gint32) D.44127;
    <D.44126>:
    ins->dreg = iftmp.436;
    D.42335 = *args;
    D.42336 = D.42335->dreg;
    ins->sreg1 = D.42336;
    D.42316 = args + 4;
    D.42317 = *D.42316;
    D.42562 = D.42317->dreg;
    ins->sreg2 = D.42562;
    D.42577 = args + 8;
    D.42578 = *D.42577;
    D.42579 = D.42578->dreg;
    ins->sreg3 = D.42579;
    ins->type = 2;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    if (D.42338 != 0B) goto <D.44128>; else goto <D.44129>;
    <D.44128>:
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    D.42338->next = ins;
    D.42337 = cfg->cbb;
    D.42338 = D.42337->last_ins;
    ins->prev = D.42338;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    goto <D.44130>;
    <D.44129>:
    D.42337 = cfg->cbb;
    D.42337 = cfg->cbb;
    D.42337->last_ins = ins;
    D.42338 = D.42337->last_ins;
    D.42337->code = D.42338;
    <D.44130>:
    goto <D.44131>;
    <D.44121>:
    <D.44131>:
    <D.44119>:
    D.44049 = BIT_FIELD_REF <*cfg, 8, 3416>;
    D.44050 = D.44049 & 16;
    if (D.44050 != 0) goto <D.44132>; else goto <D.44133>;
    <D.44132>:
    if (is_ref != 0) goto <D.44134>; else goto <D.44135>;
    <D.44134>:
    D.42316 = args + 4;
    D.42317 = *D.42316;
    D.42335 = *args;
    emit_write_barrier (cfg, D.42335, D.42317);
    <D.44135>:
    <D.44133>:
  }
  <D.44096>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 13;
    if (__s2_len <= 3) goto <D.44137>; else goto <D.44138>;
    <D.44137>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = cmethod->name;
      D.43488 = "MemoryBarrier";
      D.43489 = MEM[(const unsigned char *)D.43488];
      D.43490 = (int) D.43489;
      D.44139 = *__s2;
      D.44140 = (int) D.44139;
      __result = D.43490 - D.44140;
      {
        D.44141 = __s2_len != 0;
        D.44142 = __result == 0;
        D.44143 = D.44141 & D.44142;
        if (D.44143 != 0) goto <D.44144>; else goto <D.44145>;
        <D.44144>:
        D.43498 = &MEM[(void *)"MemoryBarrier" + 1B];
        D.43499 = *D.43498;
        D.43500 = (int) D.43499;
        D.44146 = __s2 + 1;
        D.44147 = *D.44146;
        D.44148 = (int) D.44147;
        __result = D.43500 - D.44148;
        D.44149 = __s2_len > 1;
        D.44142 = __result == 0;
        D.44150 = D.44149 & D.44142;
        if (D.44150 != 0) goto <D.44151>; else goto <D.44152>;
        <D.44151>:
        D.43508 = &MEM[(void *)"MemoryBarrier" + 2B];
        D.43509 = *D.43508;
        D.43510 = (int) D.43509;
        D.44153 = __s2 + 2;
        D.44154 = *D.44153;
        D.44155 = (int) D.44154;
        __result = D.43510 - D.44155;
        D.44156 = __s2_len > 2;
        D.44142 = __result == 0;
        D.44157 = D.44156 & D.44142;
        if (D.44157 != 0) goto <D.44158>; else goto <D.44159>;
        <D.44158>:
        D.43518 = &MEM[(void *)"MemoryBarrier" + 3B];
        D.43519 = *D.43518;
        D.43520 = (int) D.43519;
        D.44160 = __s2 + 3;
        D.44161 = *D.44160;
        D.44162 = (int) D.44161;
        __result = D.43520 - D.44162;
        <D.44159>:
        <D.44152>:
        <D.44145>:
      }
      D.26763 = __result;
    }
    iftmp.437 = -D.26763;
    goto <D.44163>;
    <D.44138>:
    D.42309 = cmethod->name;
    iftmp.437 = __builtin_strcmp (D.42309, "MemoryBarrier");
    <D.44163>:
    D.26764 = iftmp.437;
  }
  if (D.26764 == 0) goto <D.44164>; else goto <D.44165>;
  <D.44164>:
  ins = emit_memory_barrier (cfg, 4);
  <D.44165>:
  if (ins != 0B) goto <D.44166>; else goto <D.44167>;
  <D.44166>:
  D.42465 = ins;
  return D.42465;
  <D.44167>:
  goto <D.43709>;
  <D.43708>:
  D.42265 = cmethod->klass;
  D.43710 = D.42265->image;
  D.42263 = mono_defaults.corlib;
  if (D.43710 == D.42263) goto <D.44168>; else goto <D.44169>;
  <D.44168>:
  D.42309 = cmethod->name;
  D.42811 = *D.42309;
  if (D.42811 == 66) goto <D.44170>; else goto <D.44171>;
  <D.44170>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 5;
    if (__s2_len <= 3) goto <D.44173>; else goto <D.44174>;
    <D.44173>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = cmethod->name;
      D.44175 = "Break";
      D.44176 = MEM[(const unsigned char *)D.44175];
      D.44177 = (int) D.44176;
      D.44178 = *__s2;
      D.44179 = (int) D.44178;
      __result = D.44177 - D.44179;
      {
        D.44180 = __s2_len != 0;
        D.44181 = __result == 0;
        D.44182 = D.44180 & D.44181;
        if (D.44182 != 0) goto <D.44183>; else goto <D.44184>;
        <D.44183>:
        D.44185 = &MEM[(void *)"Break" + 1B];
        D.44186 = *D.44185;
        D.44187 = (int) D.44186;
        D.44188 = __s2 + 1;
        D.44189 = *D.44188;
        D.44190 = (int) D.44189;
        __result = D.44187 - D.44190;
        D.44191 = __s2_len > 1;
        D.44181 = __result == 0;
        D.44192 = D.44191 & D.44181;
        if (D.44192 != 0) goto <D.44193>; else goto <D.44194>;
        <D.44193>:
        D.44195 = &MEM[(void *)"Break" + 2B];
        D.44196 = *D.44195;
        D.44197 = (int) D.44196;
        D.44198 = __s2 + 2;
        D.44199 = *D.44198;
        D.44200 = (int) D.44199;
        __result = D.44197 - D.44200;
        D.44201 = __s2_len > 2;
        D.44181 = __result == 0;
        D.44202 = D.44201 & D.44181;
        if (D.44202 != 0) goto <D.44203>; else goto <D.44204>;
        <D.44203>:
        D.44205 = &MEM[(void *)"Break" + 3B];
        D.44206 = *D.44205;
        D.44207 = (int) D.44206;
        D.44208 = __s2 + 3;
        D.44209 = *D.44208;
        D.44210 = (int) D.44209;
        __result = D.44207 - D.44210;
        <D.44204>:
        <D.44194>:
        <D.44184>:
      }
      D.26772 = __result;
    }
    iftmp.438 = -D.26772;
    goto <D.44211>;
    <D.44174>:
    D.42309 = cmethod->name;
    iftmp.438 = __builtin_strcmp (D.42309, "Break");
    <D.44211>:
    D.26773 = iftmp.438;
  }
  if (D.26773 == 0) goto <D.44212>; else goto <D.44213>;
  <D.44212>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 8;
    if (__s2_len <= 3) goto <D.44215>; else goto <D.44216>;
    <D.44215>:
    {
      const unsigned char * __s2;
      int __result;

      D.42265 = cmethod->klass;
      __s2 = D.42265->name;
      D.44217 = "Debugger";
      D.44218 = MEM[(const unsigned char *)D.44217];
      D.44219 = (int) D.44218;
      D.44220 = *__s2;
      D.44221 = (int) D.44220;
      __result = D.44219 - D.44221;
      {
        D.44222 = __s2_len != 0;
        D.44223 = __result == 0;
        D.44224 = D.44222 & D.44223;
        if (D.44224 != 0) goto <D.44225>; else goto <D.44226>;
        <D.44225>:
        D.44227 = &MEM[(void *)"Debugger" + 1B];
        D.44228 = *D.44227;
        D.44229 = (int) D.44228;
        D.44230 = __s2 + 1;
        D.44231 = *D.44230;
        D.44232 = (int) D.44231;
        __result = D.44229 - D.44232;
        D.44233 = __s2_len > 1;
        D.44223 = __result == 0;
        D.44234 = D.44233 & D.44223;
        if (D.44234 != 0) goto <D.44235>; else goto <D.44236>;
        <D.44235>:
        D.44237 = &MEM[(void *)"Debugger" + 2B];
        D.44238 = *D.44237;
        D.44239 = (int) D.44238;
        D.44240 = __s2 + 2;
        D.44241 = *D.44240;
        D.44242 = (int) D.44241;
        __result = D.44239 - D.44242;
        D.44243 = __s2_len > 2;
        D.44223 = __result == 0;
        D.44244 = D.44243 & D.44223;
        if (D.44244 != 0) goto <D.44245>; else goto <D.44246>;
        <D.44245>:
        D.44247 = &MEM[(void *)"Debugger" + 3B];
        D.44248 = *D.44247;
        D.44249 = (int) D.44248;
        D.44250 = __s2 + 3;
        D.44251 = *D.44250;
        D.44252 = (int) D.44251;
        __result = D.44249 - D.44252;
        <D.44246>:
        <D.44236>:
        <D.44226>:
      }
      D.26781 = __result;
    }
    iftmp.439 = -D.26781;
    goto <D.44253>;
    <D.44216>:
    D.42265 = cmethod->klass;
    D.43794 = D.42265->name;
    iftmp.439 = __builtin_strcmp (D.43794, "Debugger");
    <D.44253>:
    D.26782 = iftmp.439;
  }
  if (D.26782 == 0) goto <D.44254>; else goto <D.44255>;
  <D.44254>:
  D.43576 = cfg->method;
  D.44256 = should_insert_brekpoint (D.43576);
  if (D.44256 != 0) goto <D.44257>; else goto <D.44258>;
  <D.44257>:
  ins = mono_emit_jit_icall (cfg, mono_debugger_agent_user_break, 0B);
  goto <D.44259>;
  <D.44258>:
  D.42329 = cfg->mempool;
  ins = mono_mempool_alloc (D.42329, 48);
  ins->data.op[1].const_val = 0;
  D.42453 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.42453;
  ins->prev = 0B;
  D.42454 = ins->prev;
  ins->next = D.42454;
  ins->opcode = 316;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.42455 = ins->sreg3;
  ins->sreg2 = D.42455;
  D.42456 = ins->sreg2;
  ins->sreg1 = D.42456;
  D.42334 = cfg->ip;
  ins->cil_code = D.42334;
  D.42337 = cfg->cbb;
  D.42338 = D.42337->last_ins;
  if (D.42338 != 0B) goto <D.44260>; else goto <D.44261>;
  <D.44260>:
  D.42337 = cfg->cbb;
  D.42338 = D.42337->last_ins;
  D.42338->next = ins;
  D.42337 = cfg->cbb;
  D.42338 = D.42337->last_ins;
  ins->prev = D.42338;
  D.42337 = cfg->cbb;
  D.42337->last_ins = ins;
  goto <D.44262>;
  <D.44261>:
  D.42337 = cfg->cbb;
  D.42337 = cfg->cbb;
  D.42337->last_ins = ins;
  D.42338 = D.42337->last_ins;
  D.42337->code = D.42338;
  <D.44262>:
  <D.44259>:
  D.42465 = ins;
  return D.42465;
  <D.44255>:
  <D.44213>:
  <D.44171>:
  D.42309 = cmethod->name;
  D.42811 = *D.42309;
  if (D.42811 == 103) goto <D.44263>; else goto <D.44264>;
  <D.44263>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 22;
    if (__s2_len <= 3) goto <D.44266>; else goto <D.44267>;
    <D.44266>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = cmethod->name;
      D.44268 = "get_IsRunningOnWindows";
      D.44269 = MEM[(const unsigned char *)D.44268];
      D.44270 = (int) D.44269;
      D.44271 = *__s2;
      D.44272 = (int) D.44271;
      __result = D.44270 - D.44272;
      {
        D.44273 = __s2_len != 0;
        D.44274 = __result == 0;
        D.44275 = D.44273 & D.44274;
        if (D.44275 != 0) goto <D.44276>; else goto <D.44277>;
        <D.44276>:
        D.44278 = &MEM[(void *)"get_IsRunningOnWindows" + 1B];
        D.44279 = *D.44278;
        D.44280 = (int) D.44279;
        D.44281 = __s2 + 1;
        D.44282 = *D.44281;
        D.44283 = (int) D.44282;
        __result = D.44280 - D.44283;
        D.44284 = __s2_len > 1;
        D.44274 = __result == 0;
        D.44285 = D.44284 & D.44274;
        if (D.44285 != 0) goto <D.44286>; else goto <D.44287>;
        <D.44286>:
        D.44288 = &MEM[(void *)"get_IsRunningOnWindows" + 2B];
        D.44289 = *D.44288;
        D.44290 = (int) D.44289;
        D.44291 = __s2 + 2;
        D.44292 = *D.44291;
        D.44293 = (int) D.44292;
        __result = D.44290 - D.44293;
        D.44294 = __s2_len > 2;
        D.44274 = __result == 0;
        D.44295 = D.44294 & D.44274;
        if (D.44295 != 0) goto <D.44296>; else goto <D.44297>;
        <D.44296>:
        D.44298 = &MEM[(void *)"get_IsRunningOnWindows" + 3B];
        D.44299 = *D.44298;
        D.44300 = (int) D.44299;
        D.44301 = __s2 + 3;
        D.44302 = *D.44301;
        D.44303 = (int) D.44302;
        __result = D.44300 - D.44303;
        <D.44297>:
        <D.44287>:
        <D.44277>:
      }
      D.26790 = __result;
    }
    iftmp.440 = -D.26790;
    goto <D.44304>;
    <D.44267>:
    D.42309 = cmethod->name;
    iftmp.440 = __builtin_strcmp (D.42309, "get_IsRunningOnWindows");
    <D.44304>:
    D.26791 = iftmp.440;
  }
  if (D.26791 == 0) goto <D.44305>; else goto <D.44306>;
  <D.44305>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 11;
    if (__s2_len <= 3) goto <D.44308>; else goto <D.44309>;
    <D.44308>:
    {
      const unsigned char * __s2;
      int __result;

      D.42265 = cmethod->klass;
      __s2 = D.42265->name;
      D.44310 = "Environment";
      D.44311 = MEM[(const unsigned char *)D.44310];
      D.44312 = (int) D.44311;
      D.44313 = *__s2;
      D.44314 = (int) D.44313;
      __result = D.44312 - D.44314;
      {
        D.44315 = __s2_len != 0;
        D.44316 = __result == 0;
        D.44317 = D.44315 & D.44316;
        if (D.44317 != 0) goto <D.44318>; else goto <D.44319>;
        <D.44318>:
        D.44320 = &MEM[(void *)"Environment" + 1B];
        D.44321 = *D.44320;
        D.44322 = (int) D.44321;
        D.44323 = __s2 + 1;
        D.44324 = *D.44323;
        D.44325 = (int) D.44324;
        __result = D.44322 - D.44325;
        D.44326 = __s2_len > 1;
        D.44316 = __result == 0;
        D.44327 = D.44326 & D.44316;
        if (D.44327 != 0) goto <D.44328>; else goto <D.44329>;
        <D.44328>:
        D.44330 = &MEM[(void *)"Environment" + 2B];
        D.44331 = *D.44330;
        D.44332 = (int) D.44331;
        D.44333 = __s2 + 2;
        D.44334 = *D.44333;
        D.44335 = (int) D.44334;
        __result = D.44332 - D.44335;
        D.44336 = __s2_len > 2;
        D.44316 = __result == 0;
        D.44337 = D.44336 & D.44316;
        if (D.44337 != 0) goto <D.44338>; else goto <D.44339>;
        <D.44338>:
        D.44340 = &MEM[(void *)"Environment" + 3B];
        D.44341 = *D.44340;
        D.44342 = (int) D.44341;
        D.44343 = __s2 + 3;
        D.44344 = *D.44343;
        D.44345 = (int) D.44344;
        __result = D.44342 - D.44345;
        <D.44339>:
        <D.44329>:
        <D.44319>:
      }
      D.26799 = __result;
    }
    iftmp.441 = -D.26799;
    goto <D.44346>;
    <D.44309>:
    D.42265 = cmethod->klass;
    D.43794 = D.42265->name;
    iftmp.441 = __builtin_strcmp (D.43794, "Environment");
    <D.44346>:
    D.26800 = iftmp.441;
  }
  if (D.26800 == 0) goto <D.44347>; else goto <D.44348>;
  <D.44347>:
  D.42329 = cfg->mempool;
  ins = mono_mempool_alloc (D.42329, 48);
  ins->data.op[1].const_val = 0;
  D.42453 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.42453;
  ins->prev = 0B;
  D.42454 = ins->prev;
  ins->next = D.42454;
  ins->opcode = 362;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.42455 = ins->sreg3;
  ins->sreg2 = D.42455;
  D.42456 = ins->sreg2;
  ins->sreg1 = D.42456;
  D.42334 = cfg->ip;
  ins->cil_code = D.42334;
  ins->data.op[0].const_val = 0;
  ins->type = 1;
  D.44349 = alloc_dreg (cfg, 1);
  D.44350 = (int) D.44349;
  ins->dreg = D.44350;
  D.42337 = cfg->cbb;
  D.42338 = D.42337->last_ins;
  if (D.42338 != 0B) goto <D.44351>; else goto <D.44352>;
  <D.44351>:
  D.42337 = cfg->cbb;
  D.42338 = D.42337->last_ins;
  D.42338->next = ins;
  D.42337 = cfg->cbb;
  D.42338 = D.42337->last_ins;
  ins->prev = D.42338;
  D.42337 = cfg->cbb;
  D.42337->last_ins = ins;
  goto <D.44353>;
  <D.44352>:
  D.42337 = cfg->cbb;
  D.42337 = cfg->cbb;
  D.42337->last_ins = ins;
  D.42338 = D.42337->last_ins;
  D.42337->code = D.42338;
  <D.44353>:
  D.42465 = ins;
  return D.42465;
  <D.44348>:
  <D.44306>:
  <D.44264>:
  goto <D.44354>;
  <D.44169>:
  D.42265 = cmethod->klass;
  D.44355 = mono_defaults.math_class;
  if (D.42265 == D.44355) goto <D.44356>; else goto <D.44357>;
  <D.44356>:
  goto <D.44358>;
  <D.44357>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 7;
    if (__s2_len <= 3) goto <D.44362>; else goto <D.44363>;
    <D.44362>:
    {
      const unsigned char * __s2;
      int __result;

      D.42265 = cmethod->klass;
      D.43710 = D.42265->image;
      D.44364 = D.43710->assembly;
      __s2 = D.44364->aname.name;
      D.44365 = "MonoMac";
      D.44366 = MEM[(const unsigned char *)D.44365];
      D.44367 = (int) D.44366;
      D.44368 = *__s2;
      D.44369 = (int) D.44368;
      __result = D.44367 - D.44369;
      {
        D.44370 = __s2_len != 0;
        D.44371 = __result == 0;
        D.44372 = D.44370 & D.44371;
        if (D.44372 != 0) goto <D.44373>; else goto <D.44374>;
        <D.44373>:
        D.44375 = &MEM[(void *)"MonoMac" + 1B];
        D.44376 = *D.44375;
        D.44377 = (int) D.44376;
        D.44378 = __s2 + 1;
        D.44379 = *D.44378;
        D.44380 = (int) D.44379;
        __result = D.44377 - D.44380;
        D.44381 = __s2_len > 1;
        D.44371 = __result == 0;
        D.44382 = D.44381 & D.44371;
        if (D.44382 != 0) goto <D.44383>; else goto <D.44384>;
        <D.44383>:
        D.44385 = &MEM[(void *)"MonoMac" + 2B];
        D.44386 = *D.44385;
        D.44387 = (int) D.44386;
        D.44388 = __s2 + 2;
        D.44389 = *D.44388;
        D.44390 = (int) D.44389;
        __result = D.44387 - D.44390;
        D.44391 = __s2_len > 2;
        D.44371 = __result == 0;
        D.44392 = D.44391 & D.44371;
        if (D.44392 != 0) goto <D.44393>; else goto <D.44394>;
        <D.44393>:
        D.44395 = &MEM[(void *)"MonoMac" + 3B];
        D.44396 = *D.44395;
        D.44397 = (int) D.44396;
        D.44398 = __s2 + 3;
        D.44399 = *D.44398;
        D.44400 = (int) D.44399;
        __result = D.44397 - D.44400;
        <D.44394>:
        <D.44384>:
        <D.44374>:
      }
      D.26808 = __result;
    }
    iftmp.442 = -D.26808;
    goto <D.44401>;
    <D.44363>:
    D.42265 = cmethod->klass;
    D.43710 = D.42265->image;
    D.44364 = D.43710->assembly;
    D.44402 = D.44364->aname.name;
    iftmp.442 = __builtin_strcmp (D.44402, "MonoMac");
    <D.44401>:
    D.26809 = iftmp.442;
  }
  if (D.26809 == 0) goto <D.44359>; else goto <D.44403>;
  <D.44403>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 9;
    if (__s2_len <= 3) goto <D.44405>; else goto <D.44406>;
    <D.44405>:
    {
      const unsigned char * __s2;
      int __result;

      D.42265 = cmethod->klass;
      D.43710 = D.42265->image;
      D.44364 = D.43710->assembly;
      __s2 = D.44364->aname.name;
      D.44407 = "monotouch";
      D.44408 = MEM[(const unsigned char *)D.44407];
      D.44409 = (int) D.44408;
      D.44410 = *__s2;
      D.44411 = (int) D.44410;
      __result = D.44409 - D.44411;
      {
        D.44412 = __s2_len != 0;
        D.44413 = __result == 0;
        D.44414 = D.44412 & D.44413;
        if (D.44414 != 0) goto <D.44415>; else goto <D.44416>;
        <D.44415>:
        D.44417 = &MEM[(void *)"monotouch" + 1B];
        D.44418 = *D.44417;
        D.44419 = (int) D.44418;
        D.44420 = __s2 + 1;
        D.44421 = *D.44420;
        D.44422 = (int) D.44421;
        __result = D.44419 - D.44422;
        D.44423 = __s2_len > 1;
        D.44413 = __result == 0;
        D.44424 = D.44423 & D.44413;
        if (D.44424 != 0) goto <D.44425>; else goto <D.44426>;
        <D.44425>:
        D.44427 = &MEM[(void *)"monotouch" + 2B];
        D.44428 = *D.44427;
        D.44429 = (int) D.44428;
        D.44430 = __s2 + 2;
        D.44431 = *D.44430;
        D.44432 = (int) D.44431;
        __result = D.44429 - D.44432;
        D.44433 = __s2_len > 2;
        D.44413 = __result == 0;
        D.44434 = D.44433 & D.44413;
        if (D.44434 != 0) goto <D.44435>; else goto <D.44436>;
        <D.44435>:
        D.44437 = &MEM[(void *)"monotouch" + 3B];
        D.44438 = *D.44437;
        D.44439 = (int) D.44438;
        D.44440 = __s2 + 3;
        D.44441 = *D.44440;
        D.44442 = (int) D.44441;
        __result = D.44439 - D.44442;
        <D.44436>:
        <D.44426>:
        <D.44416>:
      }
      D.26817 = __result;
    }
    iftmp.443 = -D.26817;
    goto <D.44443>;
    <D.44406>:
    D.42265 = cmethod->klass;
    D.43710 = D.42265->image;
    D.44364 = D.43710->assembly;
    D.44402 = D.44364->aname.name;
    iftmp.443 = __builtin_strcmp (D.44402, "monotouch");
    <D.44443>:
    D.26818 = iftmp.443;
  }
  if (D.26818 == 0) goto <D.44359>; else goto <D.44360>;
  <D.44359>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 8;
    if (__s2_len <= 3) goto <D.44445>; else goto <D.44446>;
    <D.44445>:
    {
      const unsigned char * __s2;
      int __result;

      D.42265 = cmethod->klass;
      __s2 = D.42265->name;
      D.44447 = "Selector";
      D.44448 = MEM[(const unsigned char *)D.44447];
      D.44449 = (int) D.44448;
      D.44450 = *__s2;
      D.44451 = (int) D.44450;
      __result = D.44449 - D.44451;
      {
        D.44452 = __s2_len != 0;
        D.44453 = __result == 0;
        D.44454 = D.44452 & D.44453;
        if (D.44454 != 0) goto <D.44455>; else goto <D.44456>;
        <D.44455>:
        D.44457 = &MEM[(void *)"Selector" + 1B];
        D.44458 = *D.44457;
        D.44459 = (int) D.44458;
        D.44460 = __s2 + 1;
        D.44461 = *D.44460;
        D.44462 = (int) D.44461;
        __result = D.44459 - D.44462;
        D.44463 = __s2_len > 1;
        D.44453 = __result == 0;
        D.44464 = D.44463 & D.44453;
        if (D.44464 != 0) goto <D.44465>; else goto <D.44466>;
        <D.44465>:
        D.44467 = &MEM[(void *)"Selector" + 2B];
        D.44468 = *D.44467;
        D.44469 = (int) D.44468;
        D.44470 = __s2 + 2;
        D.44471 = *D.44470;
        D.44472 = (int) D.44471;
        __result = D.44469 - D.44472;
        D.44473 = __s2_len > 2;
        D.44453 = __result == 0;
        D.44474 = D.44473 & D.44453;
        if (D.44474 != 0) goto <D.44475>; else goto <D.44476>;
        <D.44475>:
        D.44477 = &MEM[(void *)"Selector" + 3B];
        D.44478 = *D.44477;
        D.44479 = (int) D.44478;
        D.44480 = __s2 + 3;
        D.44481 = *D.44480;
        D.44482 = (int) D.44481;
        __result = D.44479 - D.44482;
        <D.44476>:
        <D.44466>:
        <D.44456>:
      }
      D.26826 = __result;
    }
    iftmp.444 = -D.26826;
    goto <D.44483>;
    <D.44446>:
    D.42265 = cmethod->klass;
    D.43794 = D.42265->name;
    iftmp.444 = __builtin_strcmp (D.43794, "Selector");
    <D.44483>:
    D.26827 = iftmp.444;
  }
  if (D.26827 == 0) goto <D.44484>; else goto <D.44485>;
  <D.44484>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 9;
    if (__s2_len <= 3) goto <D.44487>; else goto <D.44488>;
    <D.44487>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = cmethod->name;
      D.44489 = "GetHandle";
      D.44490 = MEM[(const unsigned char *)D.44489];
      D.44491 = (int) D.44490;
      D.44492 = *__s2;
      D.44493 = (int) D.44492;
      __result = D.44491 - D.44493;
      {
        D.44494 = __s2_len != 0;
        D.44495 = __result == 0;
        D.44496 = D.44494 & D.44495;
        if (D.44496 != 0) goto <D.44497>; else goto <D.44498>;
        <D.44497>:
        D.44499 = &MEM[(void *)"GetHandle" + 1B];
        D.44500 = *D.44499;
        D.44501 = (int) D.44500;
        D.44502 = __s2 + 1;
        D.44503 = *D.44502;
        D.44504 = (int) D.44503;
        __result = D.44501 - D.44504;
        D.44505 = __s2_len > 1;
        D.44495 = __result == 0;
        D.44506 = D.44505 & D.44495;
        if (D.44506 != 0) goto <D.44507>; else goto <D.44508>;
        <D.44507>:
        D.44509 = &MEM[(void *)"GetHandle" + 2B];
        D.44510 = *D.44509;
        D.44511 = (int) D.44510;
        D.44512 = __s2 + 2;
        D.44513 = *D.44512;
        D.44514 = (int) D.44513;
        __result = D.44511 - D.44514;
        D.44515 = __s2_len > 2;
        D.44495 = __result == 0;
        D.44516 = D.44515 & D.44495;
        if (D.44516 != 0) goto <D.44517>; else goto <D.44518>;
        <D.44517>:
        D.44519 = &MEM[(void *)"GetHandle" + 3B];
        D.44520 = *D.44519;
        D.44521 = (int) D.44520;
        D.44522 = __s2 + 3;
        D.44523 = *D.44522;
        D.44524 = (int) D.44523;
        __result = D.44521 - D.44524;
        <D.44518>:
        <D.44508>:
        <D.44498>:
      }
      D.26835 = __result;
    }
    iftmp.445 = -D.26835;
    goto <D.44525>;
    <D.44488>:
    D.42309 = cmethod->name;
    iftmp.445 = __builtin_strcmp (D.42309, "GetHandle");
    <D.44525>:
    D.26836 = iftmp.445;
  }
  if (D.26836 == 0) goto <D.44526>; else goto <D.44527>;
  <D.44526>:
  D.43035 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.44528 = D.43035 & 64;
  if (D.44528 != 0) goto <D.44529>; else goto <D.44530>;
  <D.44529>:
  D.42335 = *args;
  D.44531 = D.42335->opcode;
  D.44532 = D.44531 == 738;
  D.44533 = D.44531 == 736;
  D.44534 = D.44532 | D.44533;
  if (D.44534 != 0) goto <D.44535>; else goto <D.44536>;
  <D.44535>:
  <D.44536>:
  <D.44530>:
  <D.44527>:
  <D.44485>:
  <D.44360>:
  <D.44358>:
  <D.44354>:
  <D.43709>:
  <D.43707>:
  <D.43527>:
  D.42318 = cfg->opt;
  D.44537 = D.42318 & 67108864;
  if (D.44537 != 0) goto <D.44538>; else goto <D.44539>;
  <D.44538>:
  ins = mono_emit_simd_intrinsics (cfg, cmethod, fsig, args);
  if (ins != 0B) goto <D.44540>; else goto <D.44541>;
  <D.44540>:
  D.42465 = ins;
  return D.42465;
  <D.44541>:
  <D.44539>:
  if (0 != 0) goto <D.44542>; else goto <D.44543>;
  <D.44542>:
  ins = llvm_emit_inst_for_method (cfg, cmethod, fsig, args);
  if (ins != 0B) goto <D.44544>; else goto <D.44545>;
  <D.44544>:
  D.42465 = ins;
  return D.42465;
  <D.44545>:
  <D.44543>:
  D.42465 = mono_arch_emit_inst_for_method (cfg, cmethod, fsig, args);
  return D.42465;
}


emit_array_generic_access (struct MonoCompile * cfg, struct MonoMethodSignature * fsig, struct MonoInst * * args, int is_set)
{
  struct MonoType * D.44547;
  struct MonoInst * * D.44548;
  struct MonoInst * D.44549;
  struct MonoInst * D.44550;
  struct MonoMemPool * D.44553;
  int D.44554;
  struct MonoInst * D.44555;
  struct MonoType * D.44556;
  unsigned int D.44557;
  short unsigned int D.44558;
  int D.44559;
  int D.44560;
  const unsigned char * D.44561;
  struct MonoInst * * D.44562;
  struct MonoInst * D.44563;
  int D.44564;
  unsigned char D.44565;
  <unnamed type> D.44566;
  unsigned int D.44567;
  int D.44568;
  struct MonoBasicBlock * D.44569;
  struct MonoInst * D.44570;
  int D.44574;
  struct MonoInst * D.44575;
  unsigned int D.44576;
  short unsigned int D.44577;
  int D.44578;
  int D.44579;
  int D.44580;
  int D.44581;
  struct MonoClass * D.44582;
  int D.44586;
  unsigned int D.44590;
  short unsigned int D.44591;
  unsigned int D.44592;
  int D.44593;
  unsigned int D.44597;
  short unsigned int D.44598;
  struct MonoClass * D.44599;
  struct MonoInst * D.44603;
  struct MonoInst * addr;
  struct MonoInst * store;
  struct MonoInst * load;
  struct MonoClass * eklass;

  D.44547 = fsig->params[2];
  eklass = mono_class_from_mono_type (D.44547);
  D.44548 = args + 4;
  D.44549 = *D.44548;
  D.44550 = *args;
  addr = mini_emit_ldelema_1_ins (cfg, eklass, D.44550, D.44549, 0);
  if (is_set != 0) goto <D.44551>; else goto <D.44552>;
  <D.44551>:
  D.44553 = cfg->mempool;
  load = mono_mempool_alloc (D.44553, 48);
  load->data.op[1].const_val = 0;
  D.44554 = load->data.op[1].const_val;
  load->data.op[0].const_val = D.44554;
  load->prev = 0B;
  D.44555 = load->prev;
  load->next = D.44555;
  D.44556 = &eklass->byval_arg;
  D.44557 = mono_type_to_load_membase (cfg, D.44556);
  D.44558 = (short unsigned int) D.44557;
  load->opcode = D.44558;
  load->flags = 0;
  load->type = 0;
  load->dreg = -1;
  load->sreg3 = -1;
  D.44559 = load->sreg3;
  load->sreg2 = D.44559;
  D.44560 = load->sreg2;
  load->sreg1 = D.44560;
  D.44561 = cfg->ip;
  load->cil_code = D.44561;
  load->dreg = 0;
  D.44562 = args + 8;
  D.44563 = *D.44562;
  D.44564 = D.44563->dreg;
  load->sreg1 = D.44564;
  load->data.op[0].const_val = 0;
  load->type = 1;
  D.44556 = &eklass->byval_arg;
  type_to_eval_stack_type (cfg, D.44556, load);
  D.44565 = load->type;
  D.44566 = (<unnamed type>) D.44565;
  D.44567 = alloc_dreg (cfg, D.44566);
  D.44568 = (int) D.44567;
  load->dreg = D.44568;
  D.44569 = cfg->cbb;
  D.44570 = D.44569->last_ins;
  if (D.44570 != 0B) goto <D.44571>; else goto <D.44572>;
  <D.44571>:
  D.44569 = cfg->cbb;
  D.44570 = D.44569->last_ins;
  D.44570->next = load;
  D.44569 = cfg->cbb;
  D.44570 = D.44569->last_ins;
  load->prev = D.44570;
  D.44569 = cfg->cbb;
  D.44569->last_ins = load;
  goto <D.44573>;
  <D.44572>:
  D.44569 = cfg->cbb;
  D.44569 = cfg->cbb;
  D.44569->last_ins = load;
  D.44570 = D.44569->last_ins;
  D.44569->code = D.44570;
  <D.44573>:
  D.44553 = cfg->mempool;
  store = mono_mempool_alloc (D.44553, 48);
  store->data.op[1].const_val = 0;
  D.44574 = store->data.op[1].const_val;
  store->data.op[0].const_val = D.44574;
  store->prev = 0B;
  D.44575 = store->prev;
  store->next = D.44575;
  D.44556 = &eklass->byval_arg;
  D.44576 = mono_type_to_store_membase (cfg, D.44556);
  D.44577 = (short unsigned int) D.44576;
  store->opcode = D.44577;
  store->flags = 0;
  store->type = 0;
  store->dreg = -1;
  store->sreg3 = -1;
  D.44578 = store->sreg3;
  store->sreg2 = D.44578;
  D.44579 = store->sreg2;
  store->sreg1 = D.44579;
  D.44561 = cfg->ip;
  store->cil_code = D.44561;
  D.44580 = load->dreg;
  store->sreg1 = D.44580;
  D.44581 = addr->dreg;
  store->dreg = D.44581;
  store->data.op[0].const_val = 0;
  D.44556 = &eklass->byval_arg;
  type_to_eval_stack_type (cfg, D.44556, store);
  D.44556 = &eklass->byval_arg;
  D.44582 = mono_class_from_mono_type (D.44556);
  store->klass = D.44582;
  D.44569 = cfg->cbb;
  D.44570 = D.44569->last_ins;
  if (D.44570 != 0B) goto <D.44583>; else goto <D.44584>;
  <D.44583>:
  D.44569 = cfg->cbb;
  D.44570 = D.44569->last_ins;
  D.44570->next = store;
  D.44569 = cfg->cbb;
  D.44570 = D.44569->last_ins;
  store->prev = D.44570;
  D.44569 = cfg->cbb;
  D.44569->last_ins = store;
  goto <D.44585>;
  <D.44584>:
  D.44569 = cfg->cbb;
  D.44569 = cfg->cbb;
  D.44569->last_ins = store;
  D.44570 = D.44569->last_ins;
  D.44569->code = D.44570;
  <D.44585>:
  D.44547 = fsig->params[2];
  D.44586 = mini_type_is_reference (cfg, D.44547);
  if (D.44586 != 0) goto <D.44587>; else goto <D.44588>;
  <D.44587>:
  emit_write_barrier (cfg, addr, load);
  <D.44588>:
  goto <D.44589>;
  <D.44552>:
  D.44553 = cfg->mempool;
  load = mono_mempool_alloc (D.44553, 48);
  load->data.op[1].const_val = 0;
  D.44554 = load->data.op[1].const_val;
  load->data.op[0].const_val = D.44554;
  load->prev = 0B;
  D.44555 = load->prev;
  load->next = D.44555;
  D.44556 = &eklass->byval_arg;
  D.44590 = mono_type_to_load_membase (cfg, D.44556);
  D.44591 = (short unsigned int) D.44590;
  load->opcode = D.44591;
  load->flags = 0;
  load->type = 0;
  load->dreg = -1;
  load->sreg3 = -1;
  D.44559 = load->sreg3;
  load->sreg2 = D.44559;
  D.44560 = load->sreg2;
  load->sreg1 = D.44560;
  D.44561 = cfg->ip;
  load->cil_code = D.44561;
  load->dreg = 0;
  D.44581 = addr->dreg;
  load->sreg1 = D.44581;
  load->data.op[0].const_val = 0;
  load->type = 1;
  D.44556 = &eklass->byval_arg;
  type_to_eval_stack_type (cfg, D.44556, load);
  D.44565 = load->type;
  D.44566 = (<unnamed type>) D.44565;
  D.44592 = alloc_dreg (cfg, D.44566);
  D.44593 = (int) D.44592;
  load->dreg = D.44593;
  D.44569 = cfg->cbb;
  D.44570 = D.44569->last_ins;
  if (D.44570 != 0B) goto <D.44594>; else goto <D.44595>;
  <D.44594>:
  D.44569 = cfg->cbb;
  D.44570 = D.44569->last_ins;
  D.44570->next = load;
  D.44569 = cfg->cbb;
  D.44570 = D.44569->last_ins;
  load->prev = D.44570;
  D.44569 = cfg->cbb;
  D.44569->last_ins = load;
  goto <D.44596>;
  <D.44595>:
  D.44569 = cfg->cbb;
  D.44569 = cfg->cbb;
  D.44569->last_ins = load;
  D.44570 = D.44569->last_ins;
  D.44569->code = D.44570;
  <D.44596>:
  D.44553 = cfg->mempool;
  store = mono_mempool_alloc (D.44553, 48);
  store->data.op[1].const_val = 0;
  D.44574 = store->data.op[1].const_val;
  store->data.op[0].const_val = D.44574;
  store->prev = 0B;
  D.44575 = store->prev;
  store->next = D.44575;
  D.44556 = &eklass->byval_arg;
  D.44597 = mono_type_to_store_membase (cfg, D.44556);
  D.44598 = (short unsigned int) D.44597;
  store->opcode = D.44598;
  store->flags = 0;
  store->type = 0;
  store->dreg = -1;
  store->sreg3 = -1;
  D.44578 = store->sreg3;
  store->sreg2 = D.44578;
  D.44579 = store->sreg2;
  store->sreg1 = D.44579;
  D.44561 = cfg->ip;
  store->cil_code = D.44561;
  D.44580 = load->dreg;
  store->sreg1 = D.44580;
  D.44562 = args + 8;
  D.44563 = *D.44562;
  D.44564 = D.44563->dreg;
  store->dreg = D.44564;
  store->data.op[0].const_val = 0;
  D.44556 = &eklass->byval_arg;
  type_to_eval_stack_type (cfg, D.44556, store);
  D.44556 = &eklass->byval_arg;
  D.44599 = mono_class_from_mono_type (D.44556);
  store->klass = D.44599;
  D.44569 = cfg->cbb;
  D.44570 = D.44569->last_ins;
  if (D.44570 != 0B) goto <D.44600>; else goto <D.44601>;
  <D.44600>:
  D.44569 = cfg->cbb;
  D.44570 = D.44569->last_ins;
  D.44570->next = store;
  D.44569 = cfg->cbb;
  D.44570 = D.44569->last_ins;
  store->prev = D.44570;
  D.44569 = cfg->cbb;
  D.44569->last_ins = store;
  goto <D.44602>;
  <D.44601>:
  D.44569 = cfg->cbb;
  D.44569 = cfg->cbb;
  D.44569->last_ins = store;
  D.44570 = D.44569->last_ins;
  D.44569->code = D.44570;
  <D.44602>:
  <D.44589>:
  D.44603 = store;
  return D.44603;
}


emit_get_rgctx_sig (struct MonoCompile * cfg, int context_used, struct MonoMethodSignature * sig, MonoRgctxInfoType rgctx_type)
{
  int D.44605;
  struct MonoMethod * D.44606;
  struct MonoMemPool * D.44607;
  struct MonoInst * D.44608;
  struct MonoJumpInfoRgctxEntry * entry;
  struct MonoInst * rgctx;

  D.44605 = context_used & 2;
  D.44606 = cfg->current_method;
  D.44607 = cfg->mempool;
  entry = mono_patch_info_rgctx_entry_new (D.44607, D.44606, D.44605, 44, sig, rgctx_type);
  D.44606 = cfg->current_method;
  rgctx = emit_get_rgctx (cfg, D.44606, context_used);
  D.44608 = emit_rgctx_fetch (cfg, rgctx, entry);
  return D.44608;
}


mini_emit_ldelema_ins (struct MonoCompile * cfg, struct MonoMethod * cmethod, struct MonoInst * * sp, unsigned char * ip, gboolean is_set)
{
  struct MonoMethodSignature * D.44610;
  short unsigned int D.44611;
  int D.44612;
  _Bool D.44613;
  int D.44614;
  struct MonoInst * D.44617;
  struct MonoInst * * D.44618;
  struct MonoInst * D.44619;
  struct MonoInst * D.44620;
  struct MonoClass * D.44621;
  struct MonoClass * D.44622;
  unsigned int D.44625;
  unsigned int D.44626;
  struct MonoInst * * D.44629;
  struct MonoInst * D.44630;
  int rank;
  struct MonoInst * addr;
  struct MonoMethod * addr_method;
  int element_size;

  D.44610 = mono_method_signature (cmethod);
  D.44611 = D.44610->param_count;
  D.44612 = (int) D.44611;
  D.44613 = is_set != 0;
  D.44614 = (int) D.44613;
  rank = D.44612 - D.44614;
  if (rank == 1) goto <D.44615>; else goto <D.44616>;
  <D.44615>:
  D.44618 = sp + 4;
  D.44619 = *D.44618;
  D.44620 = *sp;
  D.44621 = cmethod->klass;
  D.44622 = D.44621->element_class;
  D.44617 = mini_emit_ldelema_1_ins (cfg, D.44622, D.44620, D.44619, 1);
  return D.44617;
  <D.44616>:
  if (rank == 2) goto <D.44623>; else goto <D.44624>;
  <D.44623>:
  D.44625 = cfg->opt;
  D.44626 = D.44625 & 2048;
  if (D.44626 != 0) goto <D.44627>; else goto <D.44628>;
  <D.44627>:
  D.44629 = sp + 8;
  D.44630 = *D.44629;
  D.44618 = sp + 4;
  D.44619 = *D.44618;
  D.44620 = *sp;
  D.44621 = cmethod->klass;
  D.44622 = D.44621->element_class;
  D.44617 = mini_emit_ldelema_2_ins (cfg, D.44622, D.44620, D.44619, D.44630);
  return D.44617;
  <D.44628>:
  <D.44624>:
  D.44621 = cmethod->klass;
  D.44622 = D.44621->element_class;
  element_size = mono_class_array_element_size (D.44622);
  addr_method = mono_marshal_get_array_address (rank, element_size);
  addr = mono_emit_method_call (cfg, addr_method, sp, 0B);
  D.44617 = addr;
  return D.44617;
}


mini_emit_ldelema_2_ins (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * arr, struct MonoInst * index_ins1, struct MonoInst * index_ins2)
{
  unsigned int D.44632;
  unsigned int D.44633;
  unsigned int D.44634;
  unsigned int D.44635;
  unsigned int D.44636;
  unsigned int D.44637;
  unsigned int D.44638;
  unsigned int D.44639;
  unsigned int D.44640;
  unsigned int D.44641;
  unsigned int D.44642;
  int D.44643;
  struct MonoMemPool * D.44644;
  int D.44645;
  struct MonoInst * D.44646;
  int D.44647;
  int D.44648;
  const unsigned char * D.44649;
  int D.44650;
  struct MonoBasicBlock * D.44651;
  struct MonoInst * D.44652;
  int D.44656;
  struct MonoInst * D.44657;
  int D.44658;
  int D.44659;
  int D.44663;
  struct MonoInst * D.44664;
  int D.44665;
  int D.44666;
  int D.44670;
  struct MonoInst * D.44671;
  int D.44672;
  int D.44673;
  int D.44677;
  struct MonoInst * D.44678;
  int D.44679;
  int D.44680;
  int D.44684;
  struct MonoInst * D.44685;
  int D.44686;
  int D.44687;
  int D.44691;
  struct MonoInst * D.44692;
  int D.44693;
  int D.44694;
  int D.44698;
  struct MonoInst * D.44699;
  int D.44700;
  int D.44701;
  int D.44705;
  struct MonoInst * D.44706;
  int D.44707;
  int D.44708;
  int D.44712;
  struct MonoInst * D.44713;
  int D.44714;
  int D.44715;
  int D.44719;
  struct MonoInst * D.44720;
  int D.44721;
  int D.44722;
  int D.44726;
  struct MonoInst * D.44727;
  int D.44728;
  int D.44729;
  int D.44733;
  struct MonoInst * D.44734;
  int D.44735;
  int D.44736;
  int D.44740;
  struct MonoInst * D.44741;
  int D.44742;
  int D.44743;
  int size.446;
  int D.44748;
  struct MonoInst * D.44749;
  int D.44750;
  int D.44751;
  int D.44755;
  struct MonoInst * D.44756;
  int D.44757;
  int D.44758;
  struct MonoInst * D.44762;
  int bounds_reg;
  int add_reg;
  int mult_reg;
  int mult2_reg;
  int low1_reg;
  int low2_reg;
  int high1_reg;
  int high2_reg;
  int realidx1_reg;
  int realidx2_reg;
  int sum_reg;
  int index1;
  int index2;
  int tmpreg;
  struct MonoInst * ins;
  guint32 size;

  D.44632 = alloc_preg (cfg);
  bounds_reg = (int) D.44632;
  D.44633 = alloc_ireg_mp (cfg);
  add_reg = (int) D.44633;
  D.44634 = alloc_preg (cfg);
  mult_reg = (int) D.44634;
  D.44635 = alloc_preg (cfg);
  mult2_reg = (int) D.44635;
  D.44636 = alloc_preg (cfg);
  low1_reg = (int) D.44636;
  D.44637 = alloc_preg (cfg);
  low2_reg = (int) D.44637;
  D.44638 = alloc_preg (cfg);
  high1_reg = (int) D.44638;
  D.44639 = alloc_preg (cfg);
  high2_reg = (int) D.44639;
  D.44640 = alloc_preg (cfg);
  realidx1_reg = (int) D.44640;
  D.44641 = alloc_preg (cfg);
  realidx2_reg = (int) D.44641;
  D.44642 = alloc_preg (cfg);
  sum_reg = (int) D.44642;
  mono_class_init (klass);
  D.44643 = mono_class_array_element_size (klass);
  size = (guint32) D.44643;
  index1 = index_ins1->dreg;
  index2 = index_ins2->dreg;
  tmpreg = -1;
  {
    struct MonoInst * inst;

    D.44644 = cfg->mempool;
    inst = mono_mempool_alloc (D.44644, 48);
    inst->data.op[1].const_val = 0;
    D.44645 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44645;
    inst->prev = 0B;
    D.44646 = inst->prev;
    inst->next = D.44646;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44647 = inst->sreg3;
    inst->sreg2 = D.44647;
    D.44648 = inst->sreg2;
    inst->sreg1 = D.44648;
    D.44649 = cfg->ip;
    inst->cil_code = D.44649;
    inst->dreg = bounds_reg;
    D.44650 = arr->dreg;
    inst->sreg1 = D.44650;
    inst->data.op[0].const_val = 8;
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    if (D.44652 != 0B) goto <D.44653>; else goto <D.44654>;
    <D.44653>:
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    D.44652->next = inst;
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    inst->prev = D.44652;
    D.44651 = cfg->cbb;
    D.44651->last_ins = inst;
    goto <D.44655>;
    <D.44654>:
    D.44651 = cfg->cbb;
    D.44651 = cfg->cbb;
    D.44651->last_ins = inst;
    D.44652 = D.44651->last_ins;
    D.44651->code = D.44652;
    <D.44655>:
  }
  {
    struct MonoInst * inst;

    D.44644 = cfg->mempool;
    inst = mono_mempool_alloc (D.44644, 48);
    inst->data.op[1].const_val = 0;
    D.44656 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44656;
    inst->prev = 0B;
    D.44657 = inst->prev;
    inst->next = D.44657;
    inst->opcode = 396;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44658 = inst->sreg3;
    inst->sreg2 = D.44658;
    D.44659 = inst->sreg2;
    inst->sreg1 = D.44659;
    D.44649 = cfg->ip;
    inst->cil_code = D.44649;
    inst->dreg = low1_reg;
    inst->sreg1 = bounds_reg;
    inst->data.op[0].const_val = 4;
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    if (D.44652 != 0B) goto <D.44660>; else goto <D.44661>;
    <D.44660>:
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    D.44652->next = inst;
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    inst->prev = D.44652;
    D.44651 = cfg->cbb;
    D.44651->last_ins = inst;
    goto <D.44662>;
    <D.44661>:
    D.44651 = cfg->cbb;
    D.44651 = cfg->cbb;
    D.44651->last_ins = inst;
    D.44652 = D.44651->last_ins;
    D.44651->code = D.44652;
    <D.44662>:
  }
  {
    struct MonoInst * inst;

    D.44644 = cfg->mempool;
    inst = mono_mempool_alloc (D.44644, 48);
    inst->data.op[1].const_val = 0;
    D.44663 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44663;
    inst->prev = 0B;
    D.44664 = inst->prev;
    inst->next = D.44664;
    inst->opcode = 570;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44665 = inst->sreg3;
    inst->sreg2 = D.44665;
    D.44666 = inst->sreg2;
    inst->sreg1 = D.44666;
    D.44649 = cfg->ip;
    inst->cil_code = D.44649;
    inst->dreg = realidx1_reg;
    inst->sreg1 = index1;
    inst->sreg2 = low1_reg;
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    if (D.44652 != 0B) goto <D.44667>; else goto <D.44668>;
    <D.44667>:
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    D.44652->next = inst;
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    inst->prev = D.44652;
    D.44651 = cfg->cbb;
    D.44651->last_ins = inst;
    goto <D.44669>;
    <D.44668>:
    D.44651 = cfg->cbb;
    D.44651 = cfg->cbb;
    D.44651->last_ins = inst;
    D.44652 = D.44651->last_ins;
    D.44651->code = D.44652;
    <D.44669>:
  }
  {
    struct MonoInst * inst;

    D.44644 = cfg->mempool;
    inst = mono_mempool_alloc (D.44644, 48);
    inst->data.op[1].const_val = 0;
    D.44670 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44670;
    inst->prev = 0B;
    D.44671 = inst->prev;
    inst->next = D.44671;
    inst->opcode = 396;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44672 = inst->sreg3;
    inst->sreg2 = D.44672;
    D.44673 = inst->sreg2;
    inst->sreg1 = D.44673;
    D.44649 = cfg->ip;
    inst->cil_code = D.44649;
    inst->dreg = high1_reg;
    inst->sreg1 = bounds_reg;
    inst->data.op[0].const_val = 0;
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    if (D.44652 != 0B) goto <D.44674>; else goto <D.44675>;
    <D.44674>:
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    D.44652->next = inst;
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    inst->prev = D.44652;
    D.44651 = cfg->cbb;
    D.44651->last_ins = inst;
    goto <D.44676>;
    <D.44675>:
    D.44651 = cfg->cbb;
    D.44651 = cfg->cbb;
    D.44651->last_ins = inst;
    D.44652 = D.44651->last_ins;
    D.44651->code = D.44652;
    <D.44676>:
  }
  {
    struct MonoInst * inst;

    D.44644 = cfg->mempool;
    inst = mono_mempool_alloc (D.44644, 48);
    inst->data.op[1].const_val = 0;
    D.44677 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44677;
    inst->prev = 0B;
    D.44678 = inst->prev;
    inst->next = D.44678;
    inst->opcode = 322;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44679 = inst->sreg3;
    inst->sreg2 = D.44679;
    D.44680 = inst->sreg2;
    inst->sreg1 = D.44680;
    D.44649 = cfg->ip;
    inst->cil_code = D.44649;
    inst->dreg = -1;
    inst->sreg1 = high1_reg;
    inst->sreg2 = realidx1_reg;
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    if (D.44652 != 0B) goto <D.44681>; else goto <D.44682>;
    <D.44681>:
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    D.44652->next = inst;
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    inst->prev = D.44652;
    D.44651 = cfg->cbb;
    D.44651->last_ins = inst;
    goto <D.44683>;
    <D.44682>:
    D.44651 = cfg->cbb;
    D.44651 = cfg->cbb;
    D.44651->last_ins = inst;
    D.44652 = D.44651->last_ins;
    D.44651->code = D.44652;
    <D.44683>:
  }
  {
    struct MonoInst * inst;

    D.44644 = cfg->mempool;
    inst = mono_mempool_alloc (D.44644, 48);
    inst->data.op[1].const_val = 0;
    D.44684 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44684;
    inst->prev = 0B;
    D.44685 = inst->prev;
    inst->next = D.44685;
    inst->opcode = 463;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44686 = inst->sreg3;
    inst->sreg2 = D.44686;
    D.44687 = inst->sreg2;
    inst->sreg1 = D.44687;
    D.44649 = cfg->ip;
    inst->cil_code = D.44649;
    inst->data.op[1].p = "IndexOutOfRangeException";
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    if (D.44652 != 0B) goto <D.44688>; else goto <D.44689>;
    <D.44688>:
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    D.44652->next = inst;
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    inst->prev = D.44652;
    D.44651 = cfg->cbb;
    D.44651->last_ins = inst;
    goto <D.44690>;
    <D.44689>:
    D.44651 = cfg->cbb;
    D.44651 = cfg->cbb;
    D.44651->last_ins = inst;
    D.44652 = D.44651->last_ins;
    D.44651->code = D.44652;
    <D.44690>:
  }
  {
    struct MonoInst * inst;

    D.44644 = cfg->mempool;
    inst = mono_mempool_alloc (D.44644, 48);
    inst->data.op[1].const_val = 0;
    D.44691 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44691;
    inst->prev = 0B;
    D.44692 = inst->prev;
    inst->next = D.44692;
    inst->opcode = 396;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44693 = inst->sreg3;
    inst->sreg2 = D.44693;
    D.44694 = inst->sreg2;
    inst->sreg1 = D.44694;
    D.44649 = cfg->ip;
    inst->cil_code = D.44649;
    inst->dreg = low2_reg;
    inst->sreg1 = bounds_reg;
    inst->data.op[0].const_val = 12;
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    if (D.44652 != 0B) goto <D.44695>; else goto <D.44696>;
    <D.44695>:
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    D.44652->next = inst;
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    inst->prev = D.44652;
    D.44651 = cfg->cbb;
    D.44651->last_ins = inst;
    goto <D.44697>;
    <D.44696>:
    D.44651 = cfg->cbb;
    D.44651 = cfg->cbb;
    D.44651->last_ins = inst;
    D.44652 = D.44651->last_ins;
    D.44651->code = D.44652;
    <D.44697>:
  }
  {
    struct MonoInst * inst;

    D.44644 = cfg->mempool;
    inst = mono_mempool_alloc (D.44644, 48);
    inst->data.op[1].const_val = 0;
    D.44698 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44698;
    inst->prev = 0B;
    D.44699 = inst->prev;
    inst->next = D.44699;
    inst->opcode = 570;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44700 = inst->sreg3;
    inst->sreg2 = D.44700;
    D.44701 = inst->sreg2;
    inst->sreg1 = D.44701;
    D.44649 = cfg->ip;
    inst->cil_code = D.44649;
    inst->dreg = realidx2_reg;
    inst->sreg1 = index2;
    inst->sreg2 = low2_reg;
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    if (D.44652 != 0B) goto <D.44702>; else goto <D.44703>;
    <D.44702>:
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    D.44652->next = inst;
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    inst->prev = D.44652;
    D.44651 = cfg->cbb;
    D.44651->last_ins = inst;
    goto <D.44704>;
    <D.44703>:
    D.44651 = cfg->cbb;
    D.44651 = cfg->cbb;
    D.44651->last_ins = inst;
    D.44652 = D.44651->last_ins;
    D.44651->code = D.44652;
    <D.44704>:
  }
  {
    struct MonoInst * inst;

    D.44644 = cfg->mempool;
    inst = mono_mempool_alloc (D.44644, 48);
    inst->data.op[1].const_val = 0;
    D.44705 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44705;
    inst->prev = 0B;
    D.44706 = inst->prev;
    inst->next = D.44706;
    inst->opcode = 396;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44707 = inst->sreg3;
    inst->sreg2 = D.44707;
    D.44708 = inst->sreg2;
    inst->sreg1 = D.44708;
    D.44649 = cfg->ip;
    inst->cil_code = D.44649;
    inst->dreg = high2_reg;
    inst->sreg1 = bounds_reg;
    inst->data.op[0].const_val = 8;
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    if (D.44652 != 0B) goto <D.44709>; else goto <D.44710>;
    <D.44709>:
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    D.44652->next = inst;
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    inst->prev = D.44652;
    D.44651 = cfg->cbb;
    D.44651->last_ins = inst;
    goto <D.44711>;
    <D.44710>:
    D.44651 = cfg->cbb;
    D.44651 = cfg->cbb;
    D.44651->last_ins = inst;
    D.44652 = D.44651->last_ins;
    D.44651->code = D.44652;
    <D.44711>:
  }
  {
    struct MonoInst * inst;

    D.44644 = cfg->mempool;
    inst = mono_mempool_alloc (D.44644, 48);
    inst->data.op[1].const_val = 0;
    D.44712 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44712;
    inst->prev = 0B;
    D.44713 = inst->prev;
    inst->next = D.44713;
    inst->opcode = 322;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44714 = inst->sreg3;
    inst->sreg2 = D.44714;
    D.44715 = inst->sreg2;
    inst->sreg1 = D.44715;
    D.44649 = cfg->ip;
    inst->cil_code = D.44649;
    inst->dreg = -1;
    inst->sreg1 = high2_reg;
    inst->sreg2 = realidx2_reg;
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    if (D.44652 != 0B) goto <D.44716>; else goto <D.44717>;
    <D.44716>:
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    D.44652->next = inst;
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    inst->prev = D.44652;
    D.44651 = cfg->cbb;
    D.44651->last_ins = inst;
    goto <D.44718>;
    <D.44717>:
    D.44651 = cfg->cbb;
    D.44651 = cfg->cbb;
    D.44651->last_ins = inst;
    D.44652 = D.44651->last_ins;
    D.44651->code = D.44652;
    <D.44718>:
  }
  {
    struct MonoInst * inst;

    D.44644 = cfg->mempool;
    inst = mono_mempool_alloc (D.44644, 48);
    inst->data.op[1].const_val = 0;
    D.44719 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44719;
    inst->prev = 0B;
    D.44720 = inst->prev;
    inst->next = D.44720;
    inst->opcode = 463;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44721 = inst->sreg3;
    inst->sreg2 = D.44721;
    D.44722 = inst->sreg2;
    inst->sreg1 = D.44722;
    D.44649 = cfg->ip;
    inst->cil_code = D.44649;
    inst->data.op[1].p = "IndexOutOfRangeException";
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    if (D.44652 != 0B) goto <D.44723>; else goto <D.44724>;
    <D.44723>:
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    D.44652->next = inst;
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    inst->prev = D.44652;
    D.44651 = cfg->cbb;
    D.44651->last_ins = inst;
    goto <D.44725>;
    <D.44724>:
    D.44651 = cfg->cbb;
    D.44651 = cfg->cbb;
    D.44651->last_ins = inst;
    D.44652 = D.44651->last_ins;
    D.44651->code = D.44652;
    <D.44725>:
  }
  {
    struct MonoInst * inst;

    D.44644 = cfg->mempool;
    inst = mono_mempool_alloc (D.44644, 48);
    inst->data.op[1].const_val = 0;
    D.44726 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44726;
    inst->prev = 0B;
    D.44727 = inst->prev;
    inst->next = D.44727;
    inst->opcode = 571;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44728 = inst->sreg3;
    inst->sreg2 = D.44728;
    D.44729 = inst->sreg2;
    inst->sreg1 = D.44729;
    D.44649 = cfg->ip;
    inst->cil_code = D.44649;
    inst->dreg = mult_reg;
    inst->sreg1 = high2_reg;
    inst->sreg2 = realidx1_reg;
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    if (D.44652 != 0B) goto <D.44730>; else goto <D.44731>;
    <D.44730>:
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    D.44652->next = inst;
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    inst->prev = D.44652;
    D.44651 = cfg->cbb;
    D.44651->last_ins = inst;
    goto <D.44732>;
    <D.44731>:
    D.44651 = cfg->cbb;
    D.44651 = cfg->cbb;
    D.44651->last_ins = inst;
    D.44652 = D.44651->last_ins;
    D.44651->code = D.44652;
    <D.44732>:
  }
  {
    struct MonoInst * inst;

    D.44644 = cfg->mempool;
    inst = mono_mempool_alloc (D.44644, 48);
    inst->data.op[1].const_val = 0;
    D.44733 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44733;
    inst->prev = 0B;
    D.44734 = inst->prev;
    inst->next = D.44734;
    inst->opcode = 569;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44735 = inst->sreg3;
    inst->sreg2 = D.44735;
    D.44736 = inst->sreg2;
    inst->sreg1 = D.44736;
    D.44649 = cfg->ip;
    inst->cil_code = D.44649;
    inst->dreg = sum_reg;
    inst->sreg1 = mult_reg;
    inst->sreg2 = realidx2_reg;
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    if (D.44652 != 0B) goto <D.44737>; else goto <D.44738>;
    <D.44737>:
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    D.44652->next = inst;
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    inst->prev = D.44652;
    D.44651 = cfg->cbb;
    D.44651->last_ins = inst;
    goto <D.44739>;
    <D.44738>:
    D.44651 = cfg->cbb;
    D.44651 = cfg->cbb;
    D.44651->last_ins = inst;
    D.44652 = D.44651->last_ins;
    D.44651->code = D.44652;
    <D.44739>:
  }
  {
    struct MonoInst * inst;

    D.44644 = cfg->mempool;
    inst = mono_mempool_alloc (D.44644, 48);
    inst->data.op[1].const_val = 0;
    D.44740 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44740;
    inst->prev = 0B;
    D.44741 = inst->prev;
    inst->next = D.44741;
    inst->opcode = 631;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44742 = inst->sreg3;
    inst->sreg2 = D.44742;
    D.44743 = inst->sreg2;
    inst->sreg1 = D.44743;
    D.44649 = cfg->ip;
    inst->cil_code = D.44649;
    inst->dreg = mult2_reg;
    inst->sreg1 = sum_reg;
    size.446 = (int) size;
    inst->data.op[1].const_val = size.446;
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    if (D.44652 != 0B) goto <D.44745>; else goto <D.44746>;
    <D.44745>:
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    D.44652->next = inst;
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    inst->prev = D.44652;
    D.44651 = cfg->cbb;
    D.44651->last_ins = inst;
    goto <D.44747>;
    <D.44746>:
    D.44651 = cfg->cbb;
    D.44651 = cfg->cbb;
    D.44651->last_ins = inst;
    D.44652 = D.44651->last_ins;
    D.44651->code = D.44652;
    <D.44747>:
  }
  {
    struct MonoInst * inst;

    D.44644 = cfg->mempool;
    inst = mono_mempool_alloc (D.44644, 48);
    inst->data.op[1].const_val = 0;
    D.44748 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44748;
    inst->prev = 0B;
    D.44749 = inst->prev;
    inst->next = D.44749;
    inst->opcode = 569;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44750 = inst->sreg3;
    inst->sreg2 = D.44750;
    D.44751 = inst->sreg2;
    inst->sreg1 = D.44751;
    D.44649 = cfg->ip;
    inst->cil_code = D.44649;
    inst->dreg = add_reg;
    inst->sreg1 = mult2_reg;
    D.44650 = arr->dreg;
    inst->sreg2 = D.44650;
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    if (D.44652 != 0B) goto <D.44752>; else goto <D.44753>;
    <D.44752>:
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    D.44652->next = inst;
    D.44651 = cfg->cbb;
    D.44652 = D.44651->last_ins;
    inst->prev = D.44652;
    D.44651 = cfg->cbb;
    D.44651->last_ins = inst;
    goto <D.44754>;
    <D.44753>:
    D.44651 = cfg->cbb;
    D.44651 = cfg->cbb;
    D.44651->last_ins = inst;
    D.44652 = D.44651->last_ins;
    D.44651->code = D.44652;
    <D.44754>:
  }
  D.44644 = cfg->mempool;
  ins = mono_mempool_alloc (D.44644, 48);
  ins->data.op[1].const_val = 0;
  D.44755 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.44755;
  ins->prev = 0B;
  D.44756 = ins->prev;
  ins->next = D.44756;
  ins->opcode = 629;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.44757 = ins->sreg3;
  ins->sreg2 = D.44757;
  D.44758 = ins->sreg2;
  ins->sreg1 = D.44758;
  D.44649 = cfg->ip;
  ins->cil_code = D.44649;
  ins->dreg = add_reg;
  ins->sreg1 = add_reg;
  ins->data.op[1].const_val = 16;
  ins->type = 5;
  ins->klass = klass;
  D.44651 = cfg->cbb;
  D.44652 = D.44651->last_ins;
  if (D.44652 != 0B) goto <D.44759>; else goto <D.44760>;
  <D.44759>:
  D.44651 = cfg->cbb;
  D.44652 = D.44651->last_ins;
  D.44652->next = ins;
  D.44651 = cfg->cbb;
  D.44652 = D.44651->last_ins;
  ins->prev = D.44652;
  D.44651 = cfg->cbb;
  D.44651->last_ins = ins;
  goto <D.44761>;
  <D.44760>:
  D.44651 = cfg->cbb;
  D.44651 = cfg->cbb;
  D.44651->last_ins = ins;
  D.44652 = D.44651->last_ins;
  D.44651->code = D.44652;
  <D.44761>:
  D.44762 = ins;
  return D.44762;
}


mini_redirect_call (struct MonoCompile * cfg, struct MonoMethod * method, struct MonoMethodSignature * signature, struct MonoInst * * args, struct MonoInst * this)
{
  struct MonoClass * D.44764;
  struct MonoClass * D.44765;
  int D.26852;
  int iftmp.447;
  int D.26851;
  const char[20] * D.44771;
  unsigned char D.44772;
  int D.44773;
  unsigned char D.44774;
  int D.44775;
  _Bool D.44776;
  _Bool D.44777;
  _Bool D.44778;
  const unsigned char * D.44781;
  unsigned char D.44782;
  int D.44783;
  const unsigned char * D.44784;
  unsigned char D.44785;
  int D.44786;
  _Bool D.44787;
  _Bool D.44788;
  const unsigned char * D.44791;
  unsigned char D.44792;
  int D.44793;
  const unsigned char * D.44794;
  unsigned char D.44795;
  int D.44796;
  _Bool D.44797;
  _Bool D.44798;
  const unsigned char * D.44801;
  unsigned char D.44802;
  int D.44803;
  const unsigned char * D.44804;
  unsigned char D.44805;
  int D.44806;
  const char * D.44808;
  <unnamed type> mono_profiler_events.448;
  unsigned int D.44812;
  unsigned int D.44815;
  unsigned int D.44816;
  struct MonoDomain * D.44819;
  _Bool D.44820;
  long int D.44821;
  long int D.44822;
  struct MonoInst * D.44827;
  struct MonoMemPool * D.44828;
  void * D.44829;
  struct MonoInst * D.44830;
  int D.44831;
  struct MonoInst * D.44832;
  guint16 iftmp.449;
  unsigned char D.44834;
  unsigned char D.44835;
  int D.44839;
  int D.44840;
  const unsigned char * D.44841;
  int D.44844;
  struct MonoInst * D.44845;
  int D.44846;
  int D.44847;
  struct MonoInst * iftmp.450;
  int D.44852;
  void * iftmp.451;
  unsigned int D.44858;
  int D.44859;
  struct MonoBasicBlock * D.44860;
  struct MonoInst * D.44861;
  struct MonoInst * D.44865;

  D.44764 = method->klass;
  D.44765 = mono_defaults.string_class;
  if (D.44764 == D.44765) goto <D.44766>; else goto <D.44767>;
  <D.44766>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 19;
    if (__s2_len <= 3) goto <D.44769>; else goto <D.44770>;
    <D.44769>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = method->name;
      D.44771 = "InternalAllocateStr";
      D.44772 = MEM[(const unsigned char *)D.44771];
      D.44773 = (int) D.44772;
      D.44774 = *__s2;
      D.44775 = (int) D.44774;
      __result = D.44773 - D.44775;
      {
        D.44776 = __s2_len != 0;
        D.44777 = __result == 0;
        D.44778 = D.44776 & D.44777;
        if (D.44778 != 0) goto <D.44779>; else goto <D.44780>;
        <D.44779>:
        D.44781 = &MEM[(void *)"InternalAllocateStr" + 1B];
        D.44782 = *D.44781;
        D.44783 = (int) D.44782;
        D.44784 = __s2 + 1;
        D.44785 = *D.44784;
        D.44786 = (int) D.44785;
        __result = D.44783 - D.44786;
        D.44787 = __s2_len > 1;
        D.44777 = __result == 0;
        D.44788 = D.44787 & D.44777;
        if (D.44788 != 0) goto <D.44789>; else goto <D.44790>;
        <D.44789>:
        D.44791 = &MEM[(void *)"InternalAllocateStr" + 2B];
        D.44792 = *D.44791;
        D.44793 = (int) D.44792;
        D.44794 = __s2 + 2;
        D.44795 = *D.44794;
        D.44796 = (int) D.44795;
        __result = D.44793 - D.44796;
        D.44797 = __s2_len > 2;
        D.44777 = __result == 0;
        D.44798 = D.44797 & D.44777;
        if (D.44798 != 0) goto <D.44799>; else goto <D.44800>;
        <D.44799>:
        D.44801 = &MEM[(void *)"InternalAllocateStr" + 3B];
        D.44802 = *D.44801;
        D.44803 = (int) D.44802;
        D.44804 = __s2 + 3;
        D.44805 = *D.44804;
        D.44806 = (int) D.44805;
        __result = D.44803 - D.44806;
        <D.44800>:
        <D.44790>:
        <D.44780>:
      }
      D.26851 = __result;
    }
    iftmp.447 = -D.26851;
    goto <D.44807>;
    <D.44770>:
    D.44808 = method->name;
    iftmp.447 = __builtin_strcmp (D.44808, "InternalAllocateStr");
    <D.44807>:
    D.26852 = iftmp.447;
  }
  if (D.26852 == 0) goto <D.44809>; else goto <D.44810>;
  <D.44809>:
  mono_profiler_events.448 = mono_profiler_events;
  D.44812 = mono_profiler_events.448 & 128;
  if (D.44812 == 0) goto <D.44813>; else goto <D.44814>;
  <D.44813>:
  D.44815 = cfg->opt;
  D.44816 = D.44815 & 512;
  if (D.44816 == 0) goto <D.44817>; else goto <D.44818>;
  <D.44817>:
  {
    struct MonoInst * iargs[2];
    struct MonoVTable * vtable;
    struct MonoMethod * managed_alloc;

    try
      {
        D.44764 = method->klass;
        D.44819 = cfg->domain;
        vtable = mono_class_vtable (D.44819, D.44764);
        managed_alloc = 0B;
        D.44820 = vtable == 0B;
        D.44821 = (long int) D.44820;
        D.44822 = __builtin_expect (D.44821, 0);
        if (D.44822 != 0) goto <D.44823>; else goto <D.44824>;
        <D.44823>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 5598, "vtable");
        <D.44824>:
        D.44764 = method->klass;
        managed_alloc = mono_gc_get_managed_allocator (D.44764, 0);
        if (managed_alloc == 0B) goto <D.44825>; else goto <D.44826>;
        <D.44825>:
        D.44827 = 0B;
        return D.44827;
        <D.44826>:
        D.44828 = cfg->mempool;
        D.44829 = mono_mempool_alloc (D.44828, 48);
        iargs[0] = D.44829;
        D.44830 = iargs[0];
        D.44830 = iargs[0];
        D.44830->data.op[1].const_val = 0;
        D.44831 = D.44830->data.op[1].const_val;
        D.44830->data.op[0].const_val = D.44831;
        D.44830 = iargs[0];
        D.44830 = iargs[0];
        D.44830->prev = 0B;
        D.44832 = D.44830->prev;
        D.44830->next = D.44832;
        D.44830 = iargs[0];
        D.44834 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.44835 = D.44834 & 64;
        if (D.44835 != 0) goto <D.44836>; else goto <D.44837>;
        <D.44836>:
        iftmp.449 = 738;
        goto <D.44838>;
        <D.44837>:
        iftmp.449 = 362;
        <D.44838>:
        D.44830->opcode = iftmp.449;
        D.44830 = iargs[0];
        D.44830->flags = 0;
        D.44830 = iargs[0];
        D.44830->type = 0;
        D.44830 = iargs[0];
        D.44830->dreg = -1;
        D.44830 = iargs[0];
        D.44830 = iargs[0];
        D.44830 = iargs[0];
        D.44830->sreg3 = -1;
        D.44839 = D.44830->sreg3;
        D.44830->sreg2 = D.44839;
        D.44840 = D.44830->sreg2;
        D.44830->sreg1 = D.44840;
        D.44830 = iargs[0];
        D.44841 = cfg->ip;
        D.44830->cil_code = D.44841;
        D.44834 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.44835 = D.44834 & 64;
        if (D.44835 != 0) goto <D.44842>; else goto <D.44843>;
        <D.44842>:
        {
          struct MonoInst * group;
          struct MonoInst * got_loc;

          got_loc = mono_get_got_var (cfg);
          D.44828 = cfg->mempool;
          group = mono_mempool_alloc (D.44828, 48);
          group->data.op[1].const_val = 0;
          D.44844 = group->data.op[1].const_val;
          group->data.op[0].const_val = D.44844;
          group->prev = 0B;
          D.44845 = group->prev;
          group->next = D.44845;
          group->opcode = 737;
          group->flags = 0;
          group->type = 0;
          group->dreg = -1;
          group->sreg3 = -1;
          D.44846 = group->sreg3;
          group->sreg2 = D.44846;
          D.44847 = group->sreg2;
          group->sreg1 = D.44847;
          D.44841 = cfg->ip;
          group->cil_code = D.44841;
          D.44834 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.44835 = D.44834 & 64;
          if (D.44835 != 0) goto <D.44849>; else goto <D.44850>;
          <D.44849>:
          iftmp.450 = vtable->klass;
          goto <D.44851>;
          <D.44850>:
          iftmp.450 = vtable;
          <D.44851>:
          group->data.op[0].src = iftmp.450;
          group->data.op[1].src = 14B;
          D.44830 = iargs[0];
          D.44852 = got_loc->dreg;
          D.44830->sreg1 = D.44852;
          D.44830 = iargs[0];
          D.44830->data.op[1].p = group;
        }
        goto <D.44853>;
        <D.44843>:
        D.44830 = iargs[0];
        D.44834 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.44835 = D.44834 & 64;
        if (D.44835 != 0) goto <D.44855>; else goto <D.44856>;
        <D.44855>:
        iftmp.451 = vtable->klass;
        goto <D.44857>;
        <D.44856>:
        iftmp.451 = vtable;
        <D.44857>:
        D.44830->data.op[0].p = iftmp.451;
        D.44830 = iargs[0];
        D.44830->data.op[1].src = 14B;
        <D.44853>:
        D.44830 = iargs[0];
        D.44830->type = 3;
        D.44830 = iargs[0];
        D.44858 = alloc_dreg (cfg, 3);
        D.44859 = (int) D.44858;
        D.44830->dreg = D.44859;
        D.44860 = cfg->cbb;
        D.44861 = D.44860->last_ins;
        if (D.44861 != 0B) goto <D.44862>; else goto <D.44863>;
        <D.44862>:
        D.44860 = cfg->cbb;
        D.44861 = D.44860->last_ins;
        D.44830 = iargs[0];
        D.44861->next = D.44830;
        D.44830 = iargs[0];
        D.44860 = cfg->cbb;
        D.44861 = D.44860->last_ins;
        D.44830->prev = D.44861;
        D.44860 = cfg->cbb;
        D.44830 = iargs[0];
        D.44860->last_ins = D.44830;
        goto <D.44864>;
        <D.44863>:
        D.44860 = cfg->cbb;
        D.44860 = cfg->cbb;
        D.44830 = iargs[0];
        D.44860->last_ins = D.44830;
        D.44861 = D.44860->last_ins;
        D.44860->code = D.44861;
        <D.44864>:
        D.44865 = *args;
        iargs[1] = D.44865;
        D.44827 = mono_emit_method_call (cfg, managed_alloc, &iargs, this);
        return D.44827;
      }
    finally
      {
        iargs = {CLOBBER};
      }
  }
  <D.44818>:
  <D.44814>:
  <D.44810>:
  <D.44767>:
  D.44827 = 0B;
  return D.44827;
}


is_supported_tail_call (struct MonoCompile * cfg, struct MonoMethod * method, struct MonoMethod * cmethod, struct MonoMethodSignature * fsig, int call_opcode)
{
  struct MonoMethodSignature * D.44868;
  struct MonoMethodSignature * D.44869;
  struct MonoType * D.44872;
  unsigned char D.44873;
  unsigned char D.44874;
  unsigned char D.44876;
  short unsigned int D.44878;
  int D.44879;
  unsigned char D.44880;
  unsigned char D.44881;
  struct MonoClass * D.44884;
  unsigned char D.44885;
  unsigned char D.44886;
  short unsigned int D.44889;
  int D.44890;
  int D.44891;
  struct MonoMethod * D.44894;
  unsigned char D.44895;
  unsigned char D.44896;
  unsigned char D.44899;
  unsigned char D.44900;
  _Bool D.44901;
  _Bool D.44902;
  _Bool D.44903;
  gboolean D.44908;
  gboolean supported_tail_call;
  int i;

  D.44868 = mono_method_signature (cmethod);
  D.44869 = mono_method_signature (method);
  supported_tail_call = mono_arch_tail_call_supported (cfg, D.44869, D.44868);
  i = 0;
  goto <D.27200>;
  <D.27199>:
  D.44872 = fsig->params[i];
  D.44873 = BIT_FIELD_REF <*D.44872, 8, 56>;
  D.44874 = D.44873 & 64;
  if (D.44874 != 0) goto <D.44870>; else goto <D.44875>;
  <D.44875>:
  D.44872 = fsig->params[i];
  D.44876 = D.44872->type;
  if (D.44876 == 15) goto <D.44870>; else goto <D.44877>;
  <D.44877>:
  D.44872 = fsig->params[i];
  D.44876 = D.44872->type;
  if (D.44876 == 27) goto <D.44870>; else goto <D.44871>;
  <D.44870>:
  supported_tail_call = 0;
  <D.44871>:
  i = i + 1;
  <D.27200>:
  D.44878 = fsig->param_count;
  D.44879 = (int) D.44878;
  if (D.44879 > i) goto <D.27199>; else goto <D.27201>;
  <D.27201>:
  D.44880 = BIT_FIELD_REF <*fsig, 8, 80>;
  D.44881 = D.44880 & 64;
  if (D.44881 != 0) goto <D.44882>; else goto <D.44883>;
  <D.44882>:
  D.44884 = cmethod->klass;
  D.44885 = BIT_FIELD_REF <*D.44884, 8, 160>;
  D.44886 = D.44885 & 8;
  if (D.44886 != 0) goto <D.44887>; else goto <D.44888>;
  <D.44887>:
  supported_tail_call = 0;
  <D.44888>:
  <D.44883>:
  D.44889 = cmethod->flags;
  D.44890 = (int) D.44889;
  D.44891 = D.44890 & 8192;
  if (D.44891 != 0) goto <D.44892>; else goto <D.44893>;
  <D.44892>:
  supported_tail_call = 0;
  <D.44893>:
  D.44894 = cfg->method;
  D.44895 = BIT_FIELD_REF <*D.44894, 8, 168>;
  D.44896 = D.44895 & 1;
  if (D.44896 != 0) goto <D.44897>; else goto <D.44898>;
  <D.44897>:
  supported_tail_call = 0;
  <D.44898>:
  D.44899 = BIT_FIELD_REF <*cmethod, 8, 160>;
  D.44900 = D.44899 & 124;
  D.44901 = D.44900 != 0;
  D.44902 = D.44900 != 68;
  D.44903 = D.44901 & D.44902;
  if (D.44903 != 0) goto <D.44904>; else goto <D.44905>;
  <D.44904>:
  supported_tail_call = 0;
  <D.44905>:
  if (call_opcode != 40) goto <D.44906>; else goto <D.44907>;
  <D.44906>:
  supported_tail_call = 0;
  <D.44907>:
  D.44908 = supported_tail_call;
  return D.44908;
}


mono_emit_widen_call_res (struct MonoCompile * cfg, struct MonoInst * ins, struct MonoMethodSignature * fsig)
{
  struct MonoType * D.44910;
  int D.44911;
  unsigned char D.44914;
  unsigned char D.44915;
  unsigned char D.44918;
  unsigned char D.44919;
  unsigned int D.44922;
  unsigned int D.44925;
  struct MonoMemPool * D.44926;
  int D.44927;
  struct MonoInst * D.44928;
  short unsigned int D.44929;
  int D.44930;
  int D.44931;
  const unsigned char * D.44932;
  int D.44933;
  struct MonoBasicBlock * D.44934;
  struct MonoInst * D.44935;
  unsigned char D.44939;
  struct MonoInst * D.44940;

  D.44910 = fsig->ret;
  D.44911 = mono_type_is_void (D.44910);
  if (D.44911 == 0) goto <D.44912>; else goto <D.44913>;
  <D.44912>:
  D.44914 = BIT_FIELD_REF <*fsig, 8, 88>;
  D.44915 = D.44914 & 1;
  if (D.44915 != 0) goto <D.44916>; else goto <D.44917>;
  <D.44916>:
  D.44910 = fsig->ret;
  D.44918 = BIT_FIELD_REF <*D.44910, 8, 56>;
  D.44919 = D.44918 & 64;
  if (D.44919 == 0) goto <D.44920>; else goto <D.44921>;
  <D.44920>:
  {
    int widen_op;

    widen_op = -1;
    D.44910 = fsig->ret;
    D.44922 = mono_type_to_load_membase (cfg, D.44910);
    switch (D.44922) <default: <D.25508>, case 392: <D.25503>, case 393: <D.25505>, case 394: <D.25506>, case 395: <D.25507>>
    <D.25503>:
    widen_op = 584;
    goto <D.25504>;
    <D.25505>:
    widen_op = 595;
    goto <D.25504>;
    <D.25506>:
    widen_op = 585;
    goto <D.25504>;
    <D.25507>:
    widen_op = 594;
    goto <D.25504>;
    <D.25508>:
    goto <D.25504>;
    <D.25504>:
    if (widen_op != -1) goto <D.44923>; else goto <D.44924>;
    <D.44923>:
    {
      int dreg;
      struct MonoInst * widen;

      D.44925 = alloc_preg (cfg);
      dreg = (int) D.44925;
      D.44926 = cfg->mempool;
      widen = mono_mempool_alloc (D.44926, 48);
      widen->data.op[1].const_val = 0;
      D.44927 = widen->data.op[1].const_val;
      widen->data.op[0].const_val = D.44927;
      widen->prev = 0B;
      D.44928 = widen->prev;
      widen->next = D.44928;
      D.44929 = (short unsigned int) widen_op;
      widen->opcode = D.44929;
      widen->flags = 0;
      widen->type = 0;
      widen->dreg = -1;
      widen->sreg3 = -1;
      D.44930 = widen->sreg3;
      widen->sreg2 = D.44930;
      D.44931 = widen->sreg2;
      widen->sreg1 = D.44931;
      D.44932 = cfg->ip;
      widen->cil_code = D.44932;
      widen->dreg = dreg;
      D.44933 = ins->dreg;
      widen->sreg1 = D.44933;
      D.44934 = cfg->cbb;
      D.44935 = D.44934->last_ins;
      if (D.44935 != 0B) goto <D.44936>; else goto <D.44937>;
      <D.44936>:
      D.44934 = cfg->cbb;
      D.44935 = D.44934->last_ins;
      D.44935->next = widen;
      D.44934 = cfg->cbb;
      D.44935 = D.44934->last_ins;
      widen->prev = D.44935;
      D.44934 = cfg->cbb;
      D.44934->last_ins = widen;
      goto <D.44938>;
      <D.44937>:
      D.44934 = cfg->cbb;
      D.44934 = cfg->cbb;
      D.44934->last_ins = widen;
      D.44935 = D.44934->last_ins;
      D.44934->code = D.44935;
      <D.44938>:
      D.44939 = ins->type;
      widen->type = D.44939;
      ins = widen;
    }
    <D.44924>:
  }
  <D.44921>:
  <D.44917>:
  <D.44913>:
  D.44940 = ins;
  return D.44940;
}


emit_pop_lmf (struct MonoCompile * cfg)
{
  unsigned char D.44943;
  unsigned char D.44944;
  struct MonoMemPool * D.44947;
  int D.44948;
  struct MonoInst * D.44949;
  int D.44950;
  int D.44951;
  const unsigned char * D.44952;
  struct MonoInst * D.44953;
  unsigned char D.44954;
  unsigned char D.44955;
  struct MonoClass * D.44956;
  unsigned int D.44957;
  int D.44958;
  int D.44959;
  _Bool D.44960;
  long int D.44961;
  long int D.44962;
  struct MonoType * D.44965;
  int D.44966;
  _Bool iftmp.452;
  int D.44970;
  unsigned char D.44973;
  _Bool D.44974;
  _Bool D.44975;
  _Bool D.44976;
  int D.44977;
  unsigned char D.44979;
  struct MonoInst * iftmp.453;
  int D.44983;
  int D.44984;
  unsigned int D.44985;
  unsigned int D.44986;
  struct MonoInst * * D.44989;
  sizetype D.44990;
  sizetype D.44991;
  sizetype D.44992;
  struct MonoInst * * D.44993;
  struct MonoInst * iftmp.454;
  int D.44996;
  unsigned int D.44997;
  sizetype D.45000;
  sizetype D.45001;
  struct MonoInst * * D.45002;
  _Bool D.45004;
  long int D.45005;
  long int D.45006;
  _Bool D.45009;
  long int D.45010;
  long int D.45011;
  unsigned char D.45014;
  unsigned char D.45015;
  unsigned char D.45016;
  unsigned char D.45017;
  struct MonoBasicBlock * D.45018;
  struct MonoInst * D.45019;
  unsigned char D.45025;
  int D.45027;
  unsigned int D.45029;
  struct MonoInst * D.45033;
  struct MonoClass * D.45036;
  struct MonoType * D.45037;
  struct MonoInst * D.45038;
  unsigned int D.45039;
  int lmf_reg;
  int lmf_addr_reg;
  int prev_lmf_reg;
  struct MonoInst * ins;

  D.44943 = BIT_FIELD_REF <*cfg, 8, 3416>;
  D.44944 = D.44943 & 4;
  if (D.44944 == 0) goto <D.44945>; else goto <D.44946>;
  <D.44945>:
  return;
  <D.44946>:
  D.44947 = cfg->mempool;
  ins = mono_mempool_alloc (D.44947, 48);
  ins->data.op[1].const_val = 0;
  D.44948 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.44948;
  ins->prev = 0B;
  D.44949 = ins->prev;
  ins->next = D.44949;
  ins->opcode = 314;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.44950 = ins->sreg3;
  ins->sreg2 = D.44950;
  D.44951 = ins->sreg2;
  ins->sreg1 = D.44951;
  D.44952 = cfg->ip;
  ins->cil_code = D.44952;
  D.44953 = cfg->lmf_var;
  ins->data.op[0].p = D.44953;
  D.44953 = cfg->lmf_var;
  D.44953 = cfg->lmf_var;
  D.44954 = D.44953->flags;
  D.44955 = D.44954 | 16;
  D.44953->flags = D.44955;
  ins->type = 5;
  D.44953 = cfg->lmf_var;
  D.44956 = D.44953->klass;
  ins->klass = D.44956;
  D.44957 = alloc_dreg (cfg, 5);
  D.44958 = (int) D.44957;
  ins->dreg = D.44958;
  cfg->has_indirection = 1;
  D.44959 = cfg->gsharedvt;
  D.44960 = D.44959 != 0;
  D.44961 = (long int) D.44960;
  D.44962 = __builtin_expect (D.44961, 0);
  if (D.44962 != 0) goto <D.44963>; else goto <D.44964>;
  <D.44963>:
  D.44953 = cfg->lmf_var;
  D.44965 = D.44953->data.op[1].vtype;
  D.44966 = mini_is_gsharedvt_variable_type (cfg, D.44965);
  if (D.44966 != 0) goto <D.44967>; else goto <D.44968>;
  <D.44967>:
  handle_gsharedvt_ldaddr (cfg);
  <D.44968>:
  <D.44964>:
  D.44970 = mono_arch_is_soft_float ();
  if (D.44970 != 0) goto <D.44971>; else goto <D.44972>;
  <D.44971>:
  D.44953 = cfg->lmf_var;
  D.44973 = D.44953->type;
  D.44974 = D.44973 == 2;
  D.44975 = D.44973 == 4;
  D.44976 = D.44974 | D.44975;
  D.44977 = (int) D.44976;
  iftmp.452 = (_Bool) D.44977;
  goto <D.44978>;
  <D.44972>:
  D.44953 = cfg->lmf_var;
  D.44979 = D.44953->type;
  iftmp.452 = D.44979 == 2;
  <D.44978>:
  if (iftmp.452 != 0) goto <D.44980>; else goto <D.44981>;
  <D.44980>:
  {
    struct MonoInst * var1;
    struct MonoInst * var2;

    D.44953 = cfg->lmf_var;
    D.44983 = D.44953->dreg;
    D.44984 = D.44983 + 1;
    D.44985 = (unsigned int) D.44984;
    D.44986 = cfg->vreg_to_inst_len;
    if (D.44985 < D.44986) goto <D.44987>; else goto <D.44988>;
    <D.44987>:
    D.44989 = cfg->vreg_to_inst;
    D.44953 = cfg->lmf_var;
    D.44983 = D.44953->dreg;
    D.44990 = (sizetype) D.44983;
    D.44991 = D.44990 + 1;
    D.44992 = D.44991 * 4;
    D.44993 = D.44989 + D.44992;
    iftmp.453 = *D.44993;
    goto <D.44994>;
    <D.44988>:
    iftmp.453 = 0B;
    <D.44994>:
    var1 = iftmp.453;
    D.44953 = cfg->lmf_var;
    D.44983 = D.44953->dreg;
    D.44996 = D.44983 + 2;
    D.44997 = (unsigned int) D.44996;
    D.44986 = cfg->vreg_to_inst_len;
    if (D.44997 < D.44986) goto <D.44998>; else goto <D.44999>;
    <D.44998>:
    D.44989 = cfg->vreg_to_inst;
    D.44953 = cfg->lmf_var;
    D.44983 = D.44953->dreg;
    D.44990 = (sizetype) D.44983;
    D.45000 = D.44990 + 2;
    D.45001 = D.45000 * 4;
    D.45002 = D.44989 + D.45001;
    iftmp.454 = *D.45002;
    goto <D.45003>;
    <D.44999>:
    iftmp.454 = 0B;
    <D.45003>:
    var2 = iftmp.454;
    D.45004 = var1 == 0B;
    D.45005 = (long int) D.45004;
    D.45006 = __builtin_expect (D.45005, 0);
    if (D.45006 != 0) goto <D.45007>; else goto <D.45008>;
    <D.45007>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1970, "var1");
    <D.45008>:
    D.45009 = var2 == 0B;
    D.45010 = (long int) D.45009;
    D.45011 = __builtin_expect (D.45010, 0);
    if (D.45011 != 0) goto <D.45012>; else goto <D.45013>;
    <D.45012>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1970, "var2");
    <D.45013>:
    D.45014 = var1->flags;
    D.45015 = D.45014 | 16;
    var1->flags = D.45015;
    D.45016 = var2->flags;
    D.45017 = D.45016 | 16;
    var2->flags = D.45017;
  }
  <D.44981>:
  D.45018 = cfg->cbb;
  D.45019 = D.45018->last_ins;
  if (D.45019 != 0B) goto <D.45020>; else goto <D.45021>;
  <D.45020>:
  D.45018 = cfg->cbb;
  D.45019 = D.45018->last_ins;
  D.45019->next = ins;
  D.45018 = cfg->cbb;
  D.45019 = D.45018->last_ins;
  ins->prev = D.45019;
  D.45018 = cfg->cbb;
  D.45018->last_ins = ins;
  goto <D.45022>;
  <D.45021>:
  D.45018 = cfg->cbb;
  D.45018 = cfg->cbb;
  D.45018->last_ins = ins;
  D.45019 = D.45018->last_ins;
  D.45018->code = D.45019;
  <D.45022>:
  lmf_reg = ins->dreg;
  D.44943 = BIT_FIELD_REF <*cfg, 8, 3416>;
  D.45025 = D.44943 & 8;
  if (D.45025 != 0) goto <D.45026>; else goto <D.45023>;
  <D.45026>:
  D.45027 = mini_tls_get_supported (cfg, 3);
  if (D.45027 != 0) goto <D.45028>; else goto <D.45023>;
  <D.45028>:
  D.45029 = alloc_preg (cfg);
  prev_lmf_reg = (int) D.45029;
  D.44947 = cfg->mempool;
  ins = mono_mempool_alloc (D.44947, 48);
  ins->data.op[1].const_val = 0;
  D.44948 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.44948;
  ins->prev = 0B;
  D.44949 = ins->prev;
  ins->next = D.44949;
  ins->opcode = 391;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.44950 = ins->sreg3;
  ins->sreg2 = D.44950;
  D.44951 = ins->sreg2;
  ins->sreg1 = D.44951;
  D.44952 = cfg->ip;
  ins->cil_code = D.44952;
  ins->dreg = prev_lmf_reg;
  ins->sreg1 = lmf_reg;
  ins->data.op[0].const_val = 0;
  ins->type = 1;
  D.45018 = cfg->cbb;
  D.45019 = D.45018->last_ins;
  if (D.45019 != 0B) goto <D.45030>; else goto <D.45031>;
  <D.45030>:
  D.45018 = cfg->cbb;
  D.45019 = D.45018->last_ins;
  D.45019->next = ins;
  D.45018 = cfg->cbb;
  D.45019 = D.45018->last_ins;
  ins->prev = D.45019;
  D.45018 = cfg->cbb;
  D.45018->last_ins = ins;
  goto <D.45032>;
  <D.45031>:
  D.45018 = cfg->cbb;
  D.45018 = cfg->cbb;
  D.45018->last_ins = ins;
  D.45019 = D.45018->last_ins;
  D.45018->code = D.45019;
  <D.45032>:
  emit_tls_set (cfg, prev_lmf_reg, 3);
  goto <D.45024>;
  <D.45023>:
  D.45033 = cfg->lmf_addr_var;
  if (D.45033 == 0B) goto <D.45034>; else goto <D.45035>;
  <D.45034>:
  D.45036 = mono_defaults.int_class;
  D.45037 = &D.45036->byval_arg;
  D.45038 = mono_compile_create_var (cfg, D.45037, 329);
  cfg->lmf_addr_var = D.45038;
  <D.45035>:
  D.45033 = cfg->lmf_addr_var;
  lmf_addr_reg = D.45033->dreg;
  D.45039 = alloc_preg (cfg);
  prev_lmf_reg = (int) D.45039;
  D.44947 = cfg->mempool;
  ins = mono_mempool_alloc (D.44947, 48);
  ins->data.op[1].const_val = 0;
  D.44948 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.44948;
  ins->prev = 0B;
  D.44949 = ins->prev;
  ins->next = D.44949;
  ins->opcode = 391;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.44950 = ins->sreg3;
  ins->sreg2 = D.44950;
  D.44951 = ins->sreg2;
  ins->sreg1 = D.44951;
  D.44952 = cfg->ip;
  ins->cil_code = D.44952;
  ins->dreg = prev_lmf_reg;
  ins->sreg1 = lmf_reg;
  ins->data.op[0].const_val = 0;
  ins->type = 1;
  D.45018 = cfg->cbb;
  D.45019 = D.45018->last_ins;
  if (D.45019 != 0B) goto <D.45040>; else goto <D.45041>;
  <D.45040>:
  D.45018 = cfg->cbb;
  D.45019 = D.45018->last_ins;
  D.45019->next = ins;
  D.45018 = cfg->cbb;
  D.45019 = D.45018->last_ins;
  ins->prev = D.45019;
  D.45018 = cfg->cbb;
  D.45018->last_ins = ins;
  goto <D.45042>;
  <D.45041>:
  D.45018 = cfg->cbb;
  D.45018 = cfg->cbb;
  D.45018->last_ins = ins;
  D.45019 = D.45018->last_ins;
  D.45018->code = D.45019;
  <D.45042>:
  D.44947 = cfg->mempool;
  ins = mono_mempool_alloc (D.44947, 48);
  ins->data.op[1].const_val = 0;
  D.44948 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.44948;
  ins->prev = 0B;
  D.44949 = ins->prev;
  ins->next = D.44949;
  ins->opcode = 374;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.44950 = ins->sreg3;
  ins->sreg2 = D.44950;
  D.44951 = ins->sreg2;
  ins->sreg1 = D.44951;
  D.44952 = cfg->ip;
  ins->cil_code = D.44952;
  ins->sreg1 = prev_lmf_reg;
  ins->dreg = lmf_addr_reg;
  ins->data.op[0].const_val = 0;
  D.45018 = cfg->cbb;
  D.45019 = D.45018->last_ins;
  if (D.45019 != 0B) goto <D.45043>; else goto <D.45044>;
  <D.45043>:
  D.45018 = cfg->cbb;
  D.45019 = D.45018->last_ins;
  D.45019->next = ins;
  D.45018 = cfg->cbb;
  D.45019 = D.45018->last_ins;
  ins->prev = D.45019;
  D.45018 = cfg->cbb;
  D.45018->last_ins = ins;
  goto <D.45045>;
  <D.45044>:
  D.45018 = cfg->cbb;
  D.45018 = cfg->cbb;
  D.45018->last_ins = ins;
  D.45019 = D.45018->last_ins;
  D.45018->code = D.45019;
  <D.45045>:
  <D.45024>:
}


emit_tls_set (struct MonoCompile * cfg, int sreg1, int tls_key)
{
  unsigned char D.45047;
  unsigned char D.45048;
  struct MonoMemPool * D.45053;
  int D.45054;
  struct MonoInst * D.45055;
  guint16 iftmp.455;
  int D.45060;
  int D.45061;
  const unsigned char * D.45062;
  int D.45065;
  struct MonoInst * D.45066;
  int D.45067;
  int D.45068;
  struct MonoInst * tls_key.456;
  int D.45070;
  void * tls_key.457;
  unsigned int D.45073;
  int D.45074;
  <unnamed type> tls_key.458;
  void * _offset.459;
  unsigned int D.45078;
  int D.45079;
  struct MonoBasicBlock * D.45080;
  struct MonoInst * D.45081;
  int D.45085;
  struct MonoInst * D.45086;
  int D.45087;
  int D.45088;
  int D.45089;
  int D.45094;
  struct MonoInst * ins;
  struct MonoInst * c;

  D.45047 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.45048 = D.45047 & 64;
  if (D.45048 != 0) goto <D.45049>; else goto <D.45050>;
  <D.45049>:
  D.45047 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.45048 = D.45047 & 64;
  if (D.45048 != 0) goto <D.45051>; else goto <D.45052>;
  <D.45051>:
  D.45053 = cfg->mempool;
  c = mono_mempool_alloc (D.45053, 48);
  c->data.op[1].const_val = 0;
  D.45054 = c->data.op[1].const_val;
  c->data.op[0].const_val = D.45054;
  c->prev = 0B;
  D.45055 = c->prev;
  c->next = D.45055;
  D.45047 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.45048 = D.45047 & 64;
  if (D.45048 != 0) goto <D.45057>; else goto <D.45058>;
  <D.45057>:
  iftmp.455 = 738;
  goto <D.45059>;
  <D.45058>:
  iftmp.455 = 362;
  <D.45059>:
  c->opcode = iftmp.455;
  c->flags = 0;
  c->type = 0;
  c->dreg = -1;
  c->sreg3 = -1;
  D.45060 = c->sreg3;
  c->sreg2 = D.45060;
  D.45061 = c->sreg2;
  c->sreg1 = D.45061;
  D.45062 = cfg->ip;
  c->cil_code = D.45062;
  D.45047 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.45048 = D.45047 & 64;
  if (D.45048 != 0) goto <D.45063>; else goto <D.45064>;
  <D.45063>:
  {
    struct MonoInst * group;
    struct MonoInst * got_loc;

    got_loc = mono_get_got_var (cfg);
    D.45053 = cfg->mempool;
    group = mono_mempool_alloc (D.45053, 48);
    group->data.op[1].const_val = 0;
    D.45065 = group->data.op[1].const_val;
    group->data.op[0].const_val = D.45065;
    group->prev = 0B;
    D.45066 = group->prev;
    group->next = D.45066;
    group->opcode = 737;
    group->flags = 0;
    group->type = 0;
    group->dreg = -1;
    group->sreg3 = -1;
    D.45067 = group->sreg3;
    group->sreg2 = D.45067;
    D.45068 = group->sreg2;
    group->sreg1 = D.45068;
    D.45062 = cfg->ip;
    group->cil_code = D.45062;
    tls_key.456 = (struct MonoInst *) tls_key;
    group->data.op[0].src = tls_key.456;
    group->data.op[1].src = 48B;
    D.45070 = got_loc->dreg;
    c->sreg1 = D.45070;
    c->data.op[1].p = group;
  }
  goto <D.45071>;
  <D.45064>:
  tls_key.457 = (void *) tls_key;
  c->data.op[0].p = tls_key.457;
  c->data.op[1].src = 48B;
  <D.45071>:
  c->type = 3;
  D.45073 = alloc_dreg (cfg, 3);
  D.45074 = (int) D.45073;
  c->dreg = D.45074;
  goto <D.45075>;
  <D.45052>:
  {
    int _offset;

    tls_key.458 = (<unnamed type>) tls_key;
    _offset = mini_get_tls_offset (tls_key.458);
    D.45053 = cfg->mempool;
    c = mono_mempool_alloc (D.45053, 48);
    c->data.op[1].const_val = 0;
    D.45054 = c->data.op[1].const_val;
    c->data.op[0].const_val = D.45054;
    c->prev = 0B;
    D.45055 = c->prev;
    c->next = D.45055;
    c->opcode = 362;
    c->flags = 0;
    c->type = 0;
    c->dreg = -1;
    c->sreg3 = -1;
    D.45060 = c->sreg3;
    c->sreg2 = D.45060;
    D.45061 = c->sreg2;
    c->sreg1 = D.45061;
    D.45062 = cfg->ip;
    c->cil_code = D.45062;
    _offset.459 = (void *) _offset;
    c->data.op[0].p = _offset.459;
    c->type = 3;
    D.45078 = alloc_dreg (cfg, 3);
    D.45079 = (int) D.45078;
    c->dreg = D.45079;
  }
  <D.45075>:
  D.45080 = cfg->cbb;
  D.45081 = D.45080->last_ins;
  if (D.45081 != 0B) goto <D.45082>; else goto <D.45083>;
  <D.45082>:
  D.45080 = cfg->cbb;
  D.45081 = D.45080->last_ins;
  D.45081->next = c;
  D.45080 = cfg->cbb;
  D.45081 = D.45080->last_ins;
  c->prev = D.45081;
  D.45080 = cfg->cbb;
  D.45080->last_ins = c;
  goto <D.45084>;
  <D.45083>:
  D.45080 = cfg->cbb;
  D.45080 = cfg->cbb;
  D.45080->last_ins = c;
  D.45081 = D.45080->last_ins;
  D.45080->code = D.45081;
  <D.45084>:
  D.45053 = cfg->mempool;
  ins = mono_mempool_alloc (D.45053, 48);
  ins->data.op[1].const_val = 0;
  D.45085 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.45085;
  ins->prev = 0B;
  D.45086 = ins->prev;
  ins->next = D.45086;
  ins->opcode = 798;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.45087 = ins->sreg3;
  ins->sreg2 = D.45087;
  D.45088 = ins->sreg2;
  ins->sreg1 = D.45088;
  D.45062 = cfg->ip;
  ins->cil_code = D.45062;
  ins->sreg1 = sreg1;
  D.45089 = c->dreg;
  ins->sreg2 = D.45089;
  D.45080 = cfg->cbb;
  D.45081 = D.45080->last_ins;
  if (D.45081 != 0B) goto <D.45090>; else goto <D.45091>;
  <D.45090>:
  D.45080 = cfg->cbb;
  D.45081 = D.45080->last_ins;
  D.45081->next = ins;
  D.45080 = cfg->cbb;
  D.45081 = D.45080->last_ins;
  ins->prev = D.45081;
  D.45080 = cfg->cbb;
  D.45080->last_ins = ins;
  goto <D.45092>;
  <D.45091>:
  D.45080 = cfg->cbb;
  D.45080 = cfg->cbb;
  D.45080->last_ins = ins;
  D.45081 = D.45080->last_ins;
  D.45080->code = D.45081;
  <D.45092>:
  goto <D.45093>;
  <D.45050>:
  D.45053 = cfg->mempool;
  ins = mono_mempool_alloc (D.45053, 48);
  ins->data.op[1].const_val = 0;
  D.45085 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.45085;
  ins->prev = 0B;
  D.45086 = ins->prev;
  ins->next = D.45086;
  ins->opcode = 797;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.45087 = ins->sreg3;
  ins->sreg2 = D.45087;
  D.45088 = ins->sreg2;
  ins->sreg1 = D.45088;
  D.45062 = cfg->ip;
  ins->cil_code = D.45062;
  ins->sreg1 = sreg1;
  tls_key.458 = (<unnamed type>) tls_key;
  D.45094 = mini_get_tls_offset (tls_key.458);
  ins->data.op[0].const_val = D.45094;
  D.45080 = cfg->cbb;
  D.45081 = D.45080->last_ins;
  if (D.45081 != 0B) goto <D.45095>; else goto <D.45096>;
  <D.45095>:
  D.45080 = cfg->cbb;
  D.45081 = D.45080->last_ins;
  D.45081->next = ins;
  D.45080 = cfg->cbb;
  D.45081 = D.45080->last_ins;
  ins->prev = D.45081;
  D.45080 = cfg->cbb;
  D.45080->last_ins = ins;
  goto <D.45097>;
  <D.45096>:
  D.45080 = cfg->cbb;
  D.45080 = cfg->cbb;
  D.45080->last_ins = ins;
  D.45081 = D.45080->last_ins;
  D.45080->code = D.45081;
  <D.45097>:
  <D.45093>:
}


ldind_to_load_membase (int opcode)
{
  int D.45098;

  switch (opcode) <default: <D.28366>, case 70: <D.28355>, case 71: <D.28356>, case 72: <D.28357>, case 73: <D.28358>, case 74: <D.28359>, case 75: <D.28360>, case 76: <D.28363>, case 77: <D.28361>, case 78: <D.28364>, case 79: <D.28365>, case 80: <D.28362>>
  <D.28355>:
  D.45098 = 392;
  return D.45098;
  <D.28356>:
  D.45098 = 393;
  return D.45098;
  <D.28357>:
  D.45098 = 394;
  return D.45098;
  <D.28358>:
  D.45098 = 395;
  return D.45098;
  <D.28359>:
  D.45098 = 396;
  return D.45098;
  <D.28360>:
  D.45098 = 397;
  return D.45098;
  <D.28361>:
  D.45098 = 391;
  return D.45098;
  <D.28362>:
  D.45098 = 391;
  return D.45098;
  <D.28363>:
  D.45098 = 398;
  return D.45098;
  <D.28364>:
  D.45098 = 399;
  return D.45098;
  <D.28365>:
  D.45098 = 400;
  return D.45098;
  <D.28366>:
  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 12163);
  D.45098 = -1;
  return D.45098;
}


stind_to_store_membase (int opcode)
{
  int D.45100;

  switch (opcode) <default: <D.28378>, case 81: <D.28374>, case 82: <D.28370>, case 83: <D.28371>, case 84: <D.28372>, case 85: <D.28375>, case 86: <D.28376>, case 87: <D.28377>, case 223: <D.28373>>
  <D.28370>:
  D.45100 = 375;
  return D.45100;
  <D.28371>:
  D.45100 = 376;
  return D.45100;
  <D.28372>:
  D.45100 = 377;
  return D.45100;
  <D.28373>:
  <D.28374>:
  D.45100 = 374;
  return D.45100;
  <D.28375>:
  D.45100 = 378;
  return D.45100;
  <D.28376>:
  D.45100 = 379;
  return D.45100;
  <D.28377>:
  D.45100 = 380;
  return D.45100;
  <D.28378>:
  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 12189);
  D.45100 = -1;
  return D.45100;
}


is_exception_class (struct MonoClass * class)
{
  struct MonoClass * D.45102;
  gboolean D.45105;

  goto <D.27172>;
  <D.27171>:
  D.45102 = mono_defaults.exception_class;
  if (D.45102 == class) goto <D.45103>; else goto <D.45104>;
  <D.45103>:
  D.45105 = 1;
  return D.45105;
  <D.45104>:
  class = class->parent;
  <D.27172>:
  if (class != 0B) goto <D.27171>; else goto <D.27173>;
  <D.27173>:
  D.45105 = 0;
  return D.45105;
}


check_call_signature (struct MonoCompile * cfg, struct MonoMethodSignature * sig, struct MonoInst * * args)
{
  unsigned char D.45107;
  unsigned char D.45108;
  struct MonoInst * D.45111;
  unsigned char D.45112;
  unsigned char D.45113;
  _Bool D.45114;
  _Bool D.45115;
  _Bool D.45116;
  int D.45119;
  struct MonoType * D.45120;
  unsigned char D.45121;
  unsigned char D.45122;
  unsigned int i.460;
  unsigned int D.45126;
  struct MonoInst * * D.45127;
  struct MonoInst * D.45128;
  unsigned char D.45129;
  _Bool D.45130;
  _Bool D.45131;
  _Bool D.45132;
  struct MonoGenericSharingContext * D.45135;
  unsigned char D.45136;
  int D.45137;
  unsigned char D.45138;
  _Bool D.45139;
  _Bool D.45140;
  _Bool D.45141;
  unsigned char D.45144;
  _Bool D.45145;
  _Bool D.45146;
  _Bool D.45147;
  unsigned char D.45150;
  struct MonoClass * D.45161;
  unsigned char D.45162;
  unsigned char D.45163;
  struct MonoGenericClass * D.45170;
  struct MonoClass * D.45171;
  short unsigned int D.45174;
  int D.45175;
  struct MonoType * simple_type;
  int i;
  void handle_enum = <<< error >>>;

  D.45107 = BIT_FIELD_REF <*sig, 8, 80>;
  D.45108 = D.45107 & 64;
  if (D.45108 != 0) goto <D.45109>; else goto <D.45110>;
  <D.45109>:
  D.45111 = *args;
  D.45112 = D.45111->type;
  D.45113 = D.45112 + 251;
  D.45114 = D.45113 > 1;
  D.45115 = D.45112 != 3;
  D.45116 = D.45114 & D.45115;
  if (D.45116 != 0) goto <D.45117>; else goto <D.45118>;
  <D.45117>:
  D.45119 = 1;
  return D.45119;
  <D.45118>:
  args = args + 4;
  <D.45110>:
  i = 0;
  goto <D.25317>;
  <D.25316>:
  D.45120 = sig->params[i];
  D.45121 = BIT_FIELD_REF <*D.45120, 8, 56>;
  D.45122 = D.45121 & 64;
  if (D.45122 != 0) goto <D.45123>; else goto <D.45124>;
  <D.45123>:
  i.460 = (unsigned int) i;
  D.45126 = i.460 * 4;
  D.45127 = args + D.45126;
  D.45128 = *D.45127;
  D.45129 = D.45128->type;
  D.45130 = D.45129 != 5;
  D.45131 = D.45129 != 3;
  D.45132 = D.45130 & D.45131;
  if (D.45132 != 0) goto <D.45133>; else goto <D.45134>;
  <D.45133>:
  D.45119 = 1;
  return D.45119;
  <D.45134>:
  // predicted unlikely by continue predictor.
  goto <D.25285>;
  <D.45124>:
  simple_type = sig->params[i];
  D.45135 = cfg->generic_sharing_context;
  simple_type = mini_get_basic_type_from_generic (D.45135, simple_type);
  handle_enum:
  D.45136 = simple_type->type;
  D.45137 = (int) D.45136;
  switch (D.45137) <default: <D.25314>, case 1: <D.25287>, case 2: <D.25290>, case 3: <D.25293>, case 4: <D.25288>, case 5: <D.25289>, case 6: <D.25291>, case 7: <D.25292>, case 8: <D.25294>, case 9: <D.25295>, case 10: <D.25305>, case 11: <D.25306>, case 12: <D.25307>, case 13: <D.25308>, case 14: <D.25301>, case 15: <D.25298>, case 17: <D.25309>, case 18: <D.25300>, case 19: <D.25312>, case 20: <D.25304>, case 21: <D.25311>, case 22: <D.25310>, case 24: <D.25296>, case 25: <D.25297>, case 27: <D.25299>, case 28: <D.25302>, case 29: <D.25303>, case 30: <D.25313>>
  <D.25287>:
  D.45119 = 1;
  return D.45119;
  <D.25288>:
  <D.25289>:
  <D.25290>:
  <D.25291>:
  <D.25292>:
  <D.25293>:
  <D.25294>:
  <D.25295>:
  i.460 = (unsigned int) i;
  D.45126 = i.460 * 4;
  D.45127 = args + D.45126;
  D.45128 = *D.45127;
  D.45138 = D.45128->type;
  D.45139 = D.45138 != 1;
  D.45140 = D.45138 != 3;
  D.45141 = D.45139 & D.45140;
  if (D.45141 != 0) goto <D.45142>; else goto <D.45143>;
  <D.45142>:
  D.45119 = 1;
  return D.45119;
  <D.45143>:
  // predicted unlikely by continue predictor.
  goto <D.25285>;
  <D.25296>:
  <D.25297>:
  <D.25298>:
  <D.25299>:
  i.460 = (unsigned int) i;
  D.45126 = i.460 * 4;
  D.45127 = args + D.45126;
  D.45128 = *D.45127;
  D.45144 = D.45128->type;
  D.45145 = D.45144 != 1;
  D.45146 = D.45144 != 3;
  D.45147 = D.45145 & D.45146;
  if (D.45147 != 0) goto <D.45148>; else goto <D.45149>;
  <D.45148>:
  i.460 = (unsigned int) i;
  D.45126 = i.460 * 4;
  D.45127 = args + D.45126;
  D.45128 = *D.45127;
  D.45150 = D.45128->type;
  if (D.45150 != 5) goto <D.45151>; else goto <D.45152>;
  <D.45151>:
  i.460 = (unsigned int) i;
  D.45126 = i.460 * 4;
  D.45127 = args + D.45126;
  D.45128 = *D.45127;
  D.45150 = D.45128->type;
  if (D.45150 != 6) goto <D.45153>; else goto <D.45154>;
  <D.45153>:
  D.45119 = 1;
  return D.45119;
  <D.45154>:
  <D.45152>:
  <D.45149>:
  // predicted unlikely by continue predictor.
  goto <D.25285>;
  <D.25300>:
  <D.25301>:
  <D.25302>:
  <D.25303>:
  <D.25304>:
  i.460 = (unsigned int) i;
  D.45126 = i.460 * 4;
  D.45127 = args + D.45126;
  D.45128 = *D.45127;
  D.45150 = D.45128->type;
  if (D.45150 != 6) goto <D.45155>; else goto <D.45156>;
  <D.45155>:
  D.45119 = 1;
  return D.45119;
  <D.45156>:
  // predicted unlikely by continue predictor.
  goto <D.25285>;
  <D.25305>:
  <D.25306>:
  i.460 = (unsigned int) i;
  D.45126 = i.460 * 4;
  D.45127 = args + D.45126;
  D.45128 = *D.45127;
  D.45150 = D.45128->type;
  if (D.45150 != 2) goto <D.45157>; else goto <D.45158>;
  <D.45157>:
  D.45119 = 1;
  return D.45119;
  <D.45158>:
  // predicted unlikely by continue predictor.
  goto <D.25285>;
  <D.25307>:
  <D.25308>:
  i.460 = (unsigned int) i;
  D.45126 = i.460 * 4;
  D.45127 = args + D.45126;
  D.45128 = *D.45127;
  D.45150 = D.45128->type;
  if (D.45150 != 4) goto <D.45159>; else goto <D.45160>;
  <D.45159>:
  D.45119 = 1;
  return D.45119;
  <D.45160>:
  // predicted unlikely by continue predictor.
  goto <D.25285>;
  <D.25309>:
  D.45161 = simple_type->data.klass;
  D.45162 = BIT_FIELD_REF <*D.45161, 8, 160>;
  D.45163 = D.45162 & 16;
  if (D.45163 != 0) goto <D.45164>; else goto <D.45165>;
  <D.45164>:
  D.45161 = simple_type->data.klass;
  simple_type = mono_class_enum_basetype (D.45161);
  goto handle_enum;
  <D.45165>:
  i.460 = (unsigned int) i;
  D.45126 = i.460 * 4;
  D.45127 = args + D.45126;
  D.45128 = *D.45127;
  D.45150 = D.45128->type;
  if (D.45150 != 7) goto <D.45166>; else goto <D.45167>;
  <D.45166>:
  D.45119 = 1;
  return D.45119;
  <D.45167>:
  // predicted unlikely by continue predictor.
  goto <D.25285>;
  <D.25310>:
  i.460 = (unsigned int) i;
  D.45126 = i.460 * 4;
  D.45127 = args + D.45126;
  D.45128 = *D.45127;
  D.45150 = D.45128->type;
  if (D.45150 != 7) goto <D.45168>; else goto <D.45169>;
  <D.45168>:
  D.45119 = 1;
  return D.45119;
  <D.45169>:
  // predicted unlikely by continue predictor.
  goto <D.25285>;
  <D.25311>:
  D.45170 = simple_type->data.generic_class;
  D.45171 = D.45170->container_class;
  simple_type = &D.45171->byval_arg;
  goto handle_enum;
  <D.25312>:
  <D.25313>:
  i.460 = (unsigned int) i;
  D.45126 = i.460 * 4;
  D.45127 = args + D.45126;
  D.45128 = *D.45127;
  D.45150 = D.45128->type;
  if (D.45150 != 7) goto <D.45172>; else goto <D.45173>;
  <D.45172>:
  D.45119 = 1;
  return D.45119;
  <D.45173>:
  // predicted unlikely by continue predictor.
  goto <D.25285>;
  <D.25314>:
  D.45136 = simple_type->type;
  D.45137 = (int) D.45136;
  monoeg_g_log (0B, 4, "unknown type 0x%02x in check_call_signature", D.45137);
  <D.25315>:
  goto <D.25315>;
  <D.25285>:
  i = i + 1;
  <D.25317>:
  D.45174 = sig->param_count;
  D.45175 = (int) D.45174;
  if (D.45175 > i) goto <D.25316>; else goto <D.25318>;
  <D.25318>:
  D.45119 = 0;
  return D.45119;
}


handle_array_new (struct MonoCompile * cfg, int rank, struct MonoInst * * sp, unsigned char * ip)
{
  unsigned int D.45177;
  unsigned int D.45178;
  struct MonoInst * D.45179;
  struct MonoMethodSignature * D.45180;
  const void * D.45181;
  struct MonoJitICallInfo * info;

  info = mono_get_array_new_va_icall (rank);
  D.45177 = cfg->flags;
  D.45178 = D.45177 | 8;
  cfg->flags = D.45178;
  cfg->disable_llvm = 1;
  D.45180 = info->sig;
  D.45181 = mono_icall_get_wrapper (info);
  D.45179 = mono_emit_native_call (cfg, D.45181, D.45180, sp);
  return D.45179;
}


emit_init_rvar (struct MonoCompile * cfg, int dreg, struct MonoType * rtype)
{
  unsigned char D.45183;
  unsigned char D.45184;
  unsigned char D.45185;
  struct MonoMemPool * D.45188;
  int D.45189;
  struct MonoInst * D.45190;
  int D.45191;
  int D.45192;
  const unsigned char * D.45193;
  struct MonoBasicBlock * D.45194;
  struct MonoInst * D.45195;
  unsigned int t.461;
  unsigned int D.45201;
  int D.45204;
  struct MonoInst * D.45205;
  int D.45206;
  int D.45207;
  unsigned int D.45212;
  int D.45215;
  struct MonoInst * D.45216;
  int D.45217;
  int D.45218;
  unsigned int D.45223;
  int D.45226;
  struct MonoInst * D.45227;
  int D.45228;
  int D.45229;
  _Bool D.45237;
  _Bool D.45238;
  _Bool D.45239;
  int D.45242;
  int D.45243;
  struct MonoInst * D.45244;
  guint16 iftmp.462;
  unsigned int D.45248;
  unsigned int D.45249;
  struct MonoClass * D.45251;
  unsigned char D.45252;
  unsigned char D.45253;
  int D.45255;
  int D.45256;
  struct MonoClass * D.45257;
  _Bool D.45263;
  _Bool D.45264;
  _Bool D.45265;
  int D.45267;
  int D.45269;
  struct MonoInst * D.45270;
  guint16 iftmp.463;
  struct MonoClass * D.45275;
  unsigned char D.45276;
  unsigned char D.45277;
  int D.45279;
  int D.45280;
  struct MonoClass * D.45281;
  int D.45285;
  struct MonoInst * D.45286;
  int D.45287;
  int D.45288;
  static double r8_0 = 0.0;
  struct MonoInst * ins;
  int t;

  rtype = mini_replace_type (rtype);
  D.45183 = rtype->type;
  t = (int) D.45183;
  D.45184 = BIT_FIELD_REF <*rtype, 8, 56>;
  D.45185 = D.45184 & 64;
  if (D.45185 != 0) goto <D.45186>; else goto <D.45187>;
  <D.45186>:
  {
    struct MonoInst * inst;

    D.45188 = cfg->mempool;
    inst = mono_mempool_alloc (D.45188, 48);
    inst->data.op[1].const_val = 0;
    D.45189 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.45189;
    inst->prev = 0B;
    D.45190 = inst->prev;
    inst->next = D.45190;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.45191 = inst->sreg3;
    inst->sreg2 = D.45191;
    D.45192 = inst->sreg2;
    inst->sreg1 = D.45192;
    D.45193 = cfg->ip;
    inst->cil_code = D.45193;
    inst->dreg = dreg;
    inst->data.op[0].p = 0B;
    inst->type = 3;
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    if (D.45195 != 0B) goto <D.45196>; else goto <D.45197>;
    <D.45196>:
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    D.45195->next = inst;
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    inst->prev = D.45195;
    D.45194 = cfg->cbb;
    D.45194->last_ins = inst;
    goto <D.45198>;
    <D.45197>:
    D.45194 = cfg->cbb;
    D.45194 = cfg->cbb;
    D.45194->last_ins = inst;
    D.45195 = D.45194->last_ins;
    D.45194->code = D.45195;
    <D.45198>:
  }
  goto <D.45199>;
  <D.45187>:
  t.461 = (unsigned int) t;
  D.45201 = t.461 + 4294967294;
  if (D.45201 <= 7) goto <D.45202>; else goto <D.45203>;
  <D.45202>:
  {
    struct MonoInst * inst;

    D.45188 = cfg->mempool;
    inst = mono_mempool_alloc (D.45188, 48);
    inst->data.op[1].const_val = 0;
    D.45204 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.45204;
    inst->prev = 0B;
    D.45205 = inst->prev;
    inst->next = D.45205;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.45206 = inst->sreg3;
    inst->sreg2 = D.45206;
    D.45207 = inst->sreg2;
    inst->sreg1 = D.45207;
    D.45193 = cfg->ip;
    inst->cil_code = D.45193;
    inst->dreg = dreg;
    inst->data.op[0].const_val = 0;
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    if (D.45195 != 0B) goto <D.45208>; else goto <D.45209>;
    <D.45208>:
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    D.45195->next = inst;
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    inst->prev = D.45195;
    D.45194 = cfg->cbb;
    D.45194->last_ins = inst;
    goto <D.45210>;
    <D.45209>:
    D.45194 = cfg->cbb;
    D.45194 = cfg->cbb;
    D.45194->last_ins = inst;
    D.45195 = D.45194->last_ins;
    D.45194->code = D.45195;
    <D.45210>:
  }
  goto <D.45211>;
  <D.45203>:
  t.461 = (unsigned int) t;
  D.45212 = t.461 + 4294967286;
  if (D.45212 <= 1) goto <D.45213>; else goto <D.45214>;
  <D.45213>:
  {
    struct MonoInst * inst;

    D.45188 = cfg->mempool;
    inst = mono_mempool_alloc (D.45188, 48);
    inst->data.op[1].const_val = 0;
    D.45215 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.45215;
    inst->prev = 0B;
    D.45216 = inst->prev;
    inst->next = D.45216;
    inst->opcode = 363;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.45217 = inst->sreg3;
    inst->sreg2 = D.45217;
    D.45218 = inst->sreg2;
    inst->sreg1 = D.45218;
    D.45193 = cfg->ip;
    inst->cil_code = D.45193;
    inst->dreg = dreg;
    inst->data.i8const = 0;
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    if (D.45195 != 0B) goto <D.45219>; else goto <D.45220>;
    <D.45219>:
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    D.45195->next = inst;
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    inst->prev = D.45195;
    D.45194 = cfg->cbb;
    D.45194->last_ins = inst;
    goto <D.45221>;
    <D.45220>:
    D.45194 = cfg->cbb;
    D.45194 = cfg->cbb;
    D.45194->last_ins = inst;
    D.45195 = D.45194->last_ins;
    D.45194->code = D.45195;
    <D.45221>:
  }
  goto <D.45222>;
  <D.45214>:
  t.461 = (unsigned int) t;
  D.45223 = t.461 + 4294967284;
  if (D.45223 <= 1) goto <D.45224>; else goto <D.45225>;
  <D.45224>:
  D.45188 = cfg->mempool;
  ins = mono_mempool_alloc (D.45188, 48);
  ins->data.op[1].const_val = 0;
  D.45226 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.45226;
  ins->prev = 0B;
  D.45227 = ins->prev;
  ins->next = D.45227;
  ins->opcode = 365;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.45228 = ins->sreg3;
  ins->sreg2 = D.45228;
  D.45229 = ins->sreg2;
  ins->sreg1 = D.45229;
  D.45193 = cfg->ip;
  ins->cil_code = D.45193;
  ins->type = 4;
  ins->data.op[0].p = &r8_0;
  ins->dreg = dreg;
  D.45194 = cfg->cbb;
  D.45195 = D.45194->last_ins;
  if (D.45195 != 0B) goto <D.45230>; else goto <D.45231>;
  <D.45230>:
  D.45194 = cfg->cbb;
  D.45195 = D.45194->last_ins;
  D.45195->next = ins;
  D.45194 = cfg->cbb;
  D.45195 = D.45194->last_ins;
  ins->prev = D.45195;
  D.45194 = cfg->cbb;
  D.45194->last_ins = ins;
  goto <D.45232>;
  <D.45231>:
  D.45194 = cfg->cbb;
  D.45194 = cfg->cbb;
  D.45194->last_ins = ins;
  D.45195 = D.45194->last_ins;
  D.45194->code = D.45195;
  <D.45232>:
  goto <D.45233>;
  <D.45225>:
  D.45237 = t == 17;
  D.45238 = t == 22;
  D.45239 = D.45237 | D.45238;
  if (D.45239 != 0) goto <D.45234>; else goto <D.45240>;
  <D.45240>:
  if (t == 21) goto <D.45241>; else goto <D.45235>;
  <D.45241>:
  D.45242 = mono_type_generic_inst_is_valuetype (rtype);
  if (D.45242 != 0) goto <D.45234>; else goto <D.45235>;
  <D.45234>:
  {
    struct MonoInst * inst;

    D.45188 = cfg->mempool;
    inst = mono_mempool_alloc (D.45188, 48);
    inst->data.op[1].const_val = 0;
    D.45243 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.45243;
    inst->prev = 0B;
    D.45244 = inst->prev;
    inst->next = D.45244;
    D.45248 = cfg->opt;
    D.45249 = D.45248 & 67108864;
    if (D.45249 != 0) goto <D.45250>; else goto <D.45246>;
    <D.45250>:
    D.45251 = mono_class_from_mono_type (rtype);
    D.45252 = BIT_FIELD_REF <*D.45251, 8, 192>;
    D.45253 = D.45252 & 2;
    if (D.45253 != 0) goto <D.45254>; else goto <D.45246>;
    <D.45254>:
    iftmp.462 = 963;
    goto <D.45247>;
    <D.45246>:
    iftmp.462 = 432;
    <D.45247>:
    inst->opcode = iftmp.462;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.45255 = inst->sreg3;
    inst->sreg2 = D.45255;
    D.45256 = inst->sreg2;
    inst->sreg1 = D.45256;
    D.45193 = cfg->ip;
    inst->cil_code = D.45193;
    inst->dreg = dreg;
    inst->type = 7;
    D.45257 = mono_class_from_mono_type (rtype);
    inst->klass = D.45257;
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    if (D.45195 != 0B) goto <D.45258>; else goto <D.45259>;
    <D.45258>:
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    D.45195->next = inst;
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    inst->prev = D.45195;
    D.45194 = cfg->cbb;
    D.45194->last_ins = inst;
    goto <D.45260>;
    <D.45259>:
    D.45194 = cfg->cbb;
    D.45194 = cfg->cbb;
    D.45194->last_ins = inst;
    D.45195 = D.45194->last_ins;
    D.45194->code = D.45195;
    <D.45260>:
  }
  goto <D.45236>;
  <D.45235>:
  D.45263 = t == 19;
  D.45264 = t == 30;
  D.45265 = D.45263 | D.45264;
  if (D.45265 != 0) goto <D.45266>; else goto <D.45261>;
  <D.45266>:
  D.45267 = mini_type_var_is_vt (cfg, rtype);
  if (D.45267 != 0) goto <D.45268>; else goto <D.45261>;
  <D.45268>:
  {
    struct MonoInst * inst;

    D.45188 = cfg->mempool;
    inst = mono_mempool_alloc (D.45188, 48);
    inst->data.op[1].const_val = 0;
    D.45269 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.45269;
    inst->prev = 0B;
    D.45270 = inst->prev;
    inst->next = D.45270;
    D.45248 = cfg->opt;
    D.45249 = D.45248 & 67108864;
    if (D.45249 != 0) goto <D.45274>; else goto <D.45272>;
    <D.45274>:
    D.45275 = mono_class_from_mono_type (rtype);
    D.45276 = BIT_FIELD_REF <*D.45275, 8, 192>;
    D.45277 = D.45276 & 2;
    if (D.45277 != 0) goto <D.45278>; else goto <D.45272>;
    <D.45278>:
    iftmp.463 = 963;
    goto <D.45273>;
    <D.45272>:
    iftmp.463 = 432;
    <D.45273>:
    inst->opcode = iftmp.463;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.45279 = inst->sreg3;
    inst->sreg2 = D.45279;
    D.45280 = inst->sreg2;
    inst->sreg1 = D.45280;
    D.45193 = cfg->ip;
    inst->cil_code = D.45193;
    inst->dreg = dreg;
    inst->type = 7;
    D.45281 = mono_class_from_mono_type (rtype);
    inst->klass = D.45281;
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    if (D.45195 != 0B) goto <D.45282>; else goto <D.45283>;
    <D.45282>:
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    D.45195->next = inst;
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    inst->prev = D.45195;
    D.45194 = cfg->cbb;
    D.45194->last_ins = inst;
    goto <D.45284>;
    <D.45283>:
    D.45194 = cfg->cbb;
    D.45194 = cfg->cbb;
    D.45194->last_ins = inst;
    D.45195 = D.45194->last_ins;
    D.45194->code = D.45195;
    <D.45284>:
  }
  goto <D.45262>;
  <D.45261>:
  {
    struct MonoInst * inst;

    D.45188 = cfg->mempool;
    inst = mono_mempool_alloc (D.45188, 48);
    inst->data.op[1].const_val = 0;
    D.45285 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.45285;
    inst->prev = 0B;
    D.45286 = inst->prev;
    inst->next = D.45286;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.45287 = inst->sreg3;
    inst->sreg2 = D.45287;
    D.45288 = inst->sreg2;
    inst->sreg1 = D.45288;
    D.45193 = cfg->ip;
    inst->cil_code = D.45193;
    inst->dreg = dreg;
    inst->data.op[0].p = 0B;
    inst->type = 3;
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    if (D.45195 != 0B) goto <D.45289>; else goto <D.45290>;
    <D.45289>:
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    D.45195->next = inst;
    D.45194 = cfg->cbb;
    D.45195 = D.45194->last_ins;
    inst->prev = D.45195;
    D.45194 = cfg->cbb;
    D.45194->last_ins = inst;
    goto <D.45291>;
    <D.45290>:
    D.45194 = cfg->cbb;
    D.45194 = cfg->cbb;
    D.45194->last_ins = inst;
    D.45195 = D.45194->last_ins;
    D.45194->code = D.45195;
    <D.45291>:
  }
  <D.45262>:
  <D.45236>:
  <D.45233>:
  <D.45222>:
  <D.45211>:
  <D.45199>:
}


handle_alloc (struct MonoCompile * cfg, struct MonoClass * klass, gboolean for_box, int context_used)
{
  unsigned int D.45294;
  unsigned int D.45295;
  <unnamed type> rgctx_info.464;
  unsigned char D.45306;
  unsigned char D.45307;
  struct MonoMemPool * D.45308;
  void * D.45309;
  struct MonoInst * D.45310;
  int D.45311;
  struct MonoInst * D.45312;
  int D.45313;
  int D.45314;
  const unsigned char * D.45315;
  struct MonoInst * * D.45316;
  int D.45317;
  unsigned int D.45318;
  unsigned int D.45319;
  struct MonoInst * * D.45320;
  struct MonoInst * D.45321;
  struct MonoType * D.45322;
  unsigned int D.45323;
  short unsigned int D.45324;
  struct MonoClass * D.45325;
  int D.45326;
  unsigned char D.45327;
  <unnamed type> D.45328;
  unsigned int D.45329;
  int D.45330;
  short unsigned int D.45331;
  struct MonoClass * D.45334;
  void * D.45335;
  struct MonoDomain * D.45336;
  unsigned int D.45337;
  int D.45338;
  struct MonoBasicBlock * D.45339;
  struct MonoInst * D.45340;
  struct MonoInst * D.45349;
  void * D.45356;
  struct MonoInst * D.45357;
  int D.45358;
  struct MonoInst * D.45359;
  int D.45360;
  int D.45361;
  int D.45362;
  unsigned int D.45363;
  unsigned int D.45364;
  struct MonoInst * * D.45365;
  struct MonoInst * D.45366;
  struct MonoType * D.45367;
  unsigned int D.45368;
  short unsigned int D.45369;
  struct MonoClass * D.45370;
  int D.45371;
  unsigned char D.45372;
  <unnamed type> D.45373;
  unsigned int D.45374;
  int D.45375;
  short unsigned int D.45376;
  struct MonoClass * D.45379;
  void * D.45380;
  unsigned int D.45381;
  int D.45382;
  void * D.45386;
  struct MonoInst * D.45387;
  int D.45388;
  struct MonoInst * D.45389;
  guint16 iftmp.465;
  int D.45394;
  int D.45395;
  int D.45398;
  struct MonoInst * D.45399;
  int D.45400;
  int D.45401;
  int D.45402;
  unsigned int D.45404;
  int D.45405;
  unsigned char D.45412;
  unsigned char D.45413;
  unsigned int D.45415;
  struct MonoImage * D.45417;
  struct MonoImage * D.45418;
  struct MonoGenericClass * D.45420;
  void * D.45422;
  int D.45423;
  int D.45424;
  unsigned int D.45425;
  int D.45426;
  void * D.45434;
  guint16 iftmp.466;
  int D.45441;
  struct MonoInst * D.45442;
  int D.45443;
  int D.45444;
  struct MonoInst * iftmp.467;
  int D.45449;
  void * iftmp.468;
  unsigned int D.45455;
  int D.45456;
  int pass_lw.469;
  struct MonoClass * D.45463;
  int D.45464;
  unsigned int D.45465;
  unsigned int D.45466;
  void * D.45467;
  int lw.470;
  unsigned int D.45469;
  int D.45470;
  void * D.45474;
  guint16 iftmp.471;
  int D.45481;
  struct MonoInst * D.45482;
  int D.45483;
  int D.45484;
  struct MonoInst * iftmp.472;
  int D.45489;
  void * iftmp.473;
  unsigned int D.45495;
  int D.45496;
  void * D.45501;
  guint16 iftmp.474;
  int D.45508;
  struct MonoInst * D.45509;
  int D.45510;
  int D.45511;
  struct MonoInst * iftmp.475;
  int D.45516;
  void * iftmp.476;
  unsigned int D.45522;
  int D.45523;
  struct MonoInst * iargs[2];
  void * alloc_ftn;

  try
    {
      if (context_used != 0) goto <D.45292>; else goto <D.45293>;
      <D.45292>:
      {
        struct MonoInst * data;
        int rgctx_info;
        struct MonoInst * iargs[2];
        struct MonoMethod * managed_alloc;

        try
          {
            managed_alloc = mono_gc_get_managed_allocator (klass, for_box);
            D.45294 = cfg->opt;
            D.45295 = D.45294 & 512;
            if (D.45295 != 0) goto <D.45296>; else goto <D.45297>;
            <D.45296>:
            rgctx_info = 1;
            goto <D.45298>;
            <D.45297>:
            rgctx_info = 2;
            <D.45298>:
            rgctx_info.464 = (<unnamed type>) rgctx_info;
            data = emit_get_rgctx_klass (cfg, context_used, klass, rgctx_info.464);
            D.45294 = cfg->opt;
            D.45295 = D.45294 & 512;
            if (D.45295 != 0) goto <D.45300>; else goto <D.45301>;
            <D.45300>:
            D.45294 = cfg->opt;
            D.45295 = D.45294 & 512;
            if (D.45295 != 0) goto <D.45302>; else goto <D.45305>;
            <D.45305>:
            D.45306 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.45307 = D.45306 & 64;
            if (D.45307 != 0) goto <D.45302>; else goto <D.45303>;
            <D.45302>:
            {
              struct MonoInst * __domain_var;

              __domain_var = mono_get_domainvar (cfg);
              D.45308 = cfg->mempool;
              D.45309 = mono_mempool_alloc (D.45308, 48);
              iargs[0] = D.45309;
              D.45310 = iargs[0];
              D.45310 = iargs[0];
              D.45310->data.op[1].const_val = 0;
              D.45311 = D.45310->data.op[1].const_val;
              D.45310->data.op[0].const_val = D.45311;
              D.45310 = iargs[0];
              D.45310 = iargs[0];
              D.45310->prev = 0B;
              D.45312 = D.45310->prev;
              D.45310->next = D.45312;
              D.45310 = iargs[0];
              D.45310->opcode = 428;
              D.45310 = iargs[0];
              D.45310->flags = 0;
              D.45310 = iargs[0];
              D.45310->type = 0;
              D.45310 = iargs[0];
              D.45310->dreg = -1;
              D.45310 = iargs[0];
              D.45310 = iargs[0];
              D.45310 = iargs[0];
              D.45310->sreg3 = -1;
              D.45313 = D.45310->sreg3;
              D.45310->sreg2 = D.45313;
              D.45314 = D.45310->sreg2;
              D.45310->sreg1 = D.45314;
              D.45310 = iargs[0];
              D.45315 = cfg->ip;
              D.45310->cil_code = D.45315;
              D.45310 = iargs[0];
              D.45316 = cfg->varinfo;
              D.45317 = __domain_var->data.op[0].const_val;
              D.45318 = (unsigned int) D.45317;
              D.45319 = D.45318 * 4;
              D.45320 = D.45316 + D.45319;
              D.45321 = *D.45320;
              D.45322 = D.45321->data.op[1].vtype;
              D.45323 = mono_type_to_regmove (cfg, D.45322);
              D.45324 = (short unsigned int) D.45323;
              D.45310->opcode = D.45324;
              D.45310 = iargs[0];
              D.45316 = cfg->varinfo;
              D.45317 = __domain_var->data.op[0].const_val;
              D.45318 = (unsigned int) D.45317;
              D.45319 = D.45318 * 4;
              D.45320 = D.45316 + D.45319;
              D.45321 = *D.45320;
              D.45322 = D.45321->data.op[1].vtype;
              type_to_eval_stack_type (cfg, D.45322, D.45310);
              D.45310 = iargs[0];
              D.45316 = cfg->varinfo;
              D.45317 = __domain_var->data.op[0].const_val;
              D.45318 = (unsigned int) D.45317;
              D.45319 = D.45318 * 4;
              D.45320 = D.45316 + D.45319;
              D.45321 = *D.45320;
              D.45325 = D.45321->klass;
              D.45310->klass = D.45325;
              D.45310 = iargs[0];
              D.45316 = cfg->varinfo;
              D.45317 = __domain_var->data.op[0].const_val;
              D.45318 = (unsigned int) D.45317;
              D.45319 = D.45318 * 4;
              D.45320 = D.45316 + D.45319;
              D.45321 = *D.45320;
              D.45326 = D.45321->dreg;
              D.45310->sreg1 = D.45326;
              D.45310 = iargs[0];
              D.45310 = iargs[0];
              D.45327 = D.45310->type;
              D.45328 = (<unnamed type>) D.45327;
              D.45329 = alloc_dreg (cfg, D.45328);
              D.45330 = (int) D.45329;
              D.45310->dreg = D.45330;
              D.45310 = iargs[0];
              D.45331 = D.45310->opcode;
              if (D.45331 == 431) goto <D.45332>; else goto <D.45333>;
              <D.45332>:
              D.45310 = iargs[0];
              D.45316 = cfg->varinfo;
              D.45317 = __domain_var->data.op[0].const_val;
              D.45318 = (unsigned int) D.45317;
              D.45319 = D.45318 * 4;
              D.45320 = D.45316 + D.45319;
              D.45321 = *D.45320;
              D.45322 = D.45321->data.op[1].vtype;
              D.45334 = mono_class_from_mono_type (D.45322);
              D.45310->klass = D.45334;
              <D.45333>:
            }
            goto <D.45304>;
            <D.45303>:
            D.45308 = cfg->mempool;
            D.45335 = mono_mempool_alloc (D.45308, 48);
            iargs[0] = D.45335;
            D.45310 = iargs[0];
            D.45310 = iargs[0];
            D.45310->data.op[1].const_val = 0;
            D.45311 = D.45310->data.op[1].const_val;
            D.45310->data.op[0].const_val = D.45311;
            D.45310 = iargs[0];
            D.45310 = iargs[0];
            D.45310->prev = 0B;
            D.45312 = D.45310->prev;
            D.45310->next = D.45312;
            D.45310 = iargs[0];
            D.45310->opcode = 362;
            D.45310 = iargs[0];
            D.45310->flags = 0;
            D.45310 = iargs[0];
            D.45310->type = 0;
            D.45310 = iargs[0];
            D.45310->dreg = -1;
            D.45310 = iargs[0];
            D.45310 = iargs[0];
            D.45310 = iargs[0];
            D.45310->sreg3 = -1;
            D.45313 = D.45310->sreg3;
            D.45310->sreg2 = D.45313;
            D.45314 = D.45310->sreg2;
            D.45310->sreg1 = D.45314;
            D.45310 = iargs[0];
            D.45315 = cfg->ip;
            D.45310->cil_code = D.45315;
            D.45310 = iargs[0];
            D.45336 = cfg->domain;
            D.45310->data.op[0].p = D.45336;
            D.45310 = iargs[0];
            D.45310->type = 3;
            D.45310 = iargs[0];
            D.45337 = alloc_dreg (cfg, 3);
            D.45338 = (int) D.45337;
            D.45310->dreg = D.45338;
            <D.45304>:
            D.45339 = cfg->cbb;
            D.45340 = D.45339->last_ins;
            if (D.45340 != 0B) goto <D.45341>; else goto <D.45342>;
            <D.45341>:
            D.45339 = cfg->cbb;
            D.45340 = D.45339->last_ins;
            D.45310 = iargs[0];
            D.45340->next = D.45310;
            D.45310 = iargs[0];
            D.45339 = cfg->cbb;
            D.45340 = D.45339->last_ins;
            D.45310->prev = D.45340;
            D.45339 = cfg->cbb;
            D.45310 = iargs[0];
            D.45339->last_ins = D.45310;
            goto <D.45343>;
            <D.45342>:
            D.45339 = cfg->cbb;
            D.45339 = cfg->cbb;
            D.45310 = iargs[0];
            D.45339->last_ins = D.45310;
            D.45340 = D.45339->last_ins;
            D.45339->code = D.45340;
            <D.45343>:
            iargs[1] = data;
            alloc_ftn = mono_object_new;
            goto <D.45344>;
            <D.45301>:
            iargs[0] = data;
            alloc_ftn = mono_object_new_specific;
            <D.45344>:
            if (managed_alloc != 0B) goto <D.45345>; else goto <D.45346>;
            <D.45345>:
            D.45294 = cfg->opt;
            D.45295 = D.45294 & 512;
            if (D.45295 == 0) goto <D.45347>; else goto <D.45348>;
            <D.45347>:
            D.45349 = mono_emit_method_call (cfg, managed_alloc, &iargs, 0B);
            return D.45349;
            <D.45348>:
            <D.45346>:
            D.45349 = mono_emit_jit_icall (cfg, alloc_ftn, &iargs);
            return D.45349;
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      <D.45293>:
      D.45294 = cfg->opt;
      D.45295 = D.45294 & 512;
      if (D.45295 != 0) goto <D.45350>; else goto <D.45351>;
      <D.45350>:
      D.45294 = cfg->opt;
      D.45295 = D.45294 & 512;
      if (D.45295 != 0) goto <D.45352>; else goto <D.45355>;
      <D.45355>:
      D.45306 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.45307 = D.45306 & 64;
      if (D.45307 != 0) goto <D.45352>; else goto <D.45353>;
      <D.45352>:
      {
        struct MonoInst * __domain_var;

        __domain_var = mono_get_domainvar (cfg);
        D.45308 = cfg->mempool;
        D.45356 = mono_mempool_alloc (D.45308, 48);
        iargs[0] = D.45356;
        D.45357 = iargs[0];
        D.45357 = iargs[0];
        D.45357->data.op[1].const_val = 0;
        D.45358 = D.45357->data.op[1].const_val;
        D.45357->data.op[0].const_val = D.45358;
        D.45357 = iargs[0];
        D.45357 = iargs[0];
        D.45357->prev = 0B;
        D.45359 = D.45357->prev;
        D.45357->next = D.45359;
        D.45357 = iargs[0];
        D.45357->opcode = 428;
        D.45357 = iargs[0];
        D.45357->flags = 0;
        D.45357 = iargs[0];
        D.45357->type = 0;
        D.45357 = iargs[0];
        D.45357->dreg = -1;
        D.45357 = iargs[0];
        D.45357 = iargs[0];
        D.45357 = iargs[0];
        D.45357->sreg3 = -1;
        D.45360 = D.45357->sreg3;
        D.45357->sreg2 = D.45360;
        D.45361 = D.45357->sreg2;
        D.45357->sreg1 = D.45361;
        D.45357 = iargs[0];
        D.45315 = cfg->ip;
        D.45357->cil_code = D.45315;
        D.45357 = iargs[0];
        D.45316 = cfg->varinfo;
        D.45362 = __domain_var->data.op[0].const_val;
        D.45363 = (unsigned int) D.45362;
        D.45364 = D.45363 * 4;
        D.45365 = D.45316 + D.45364;
        D.45366 = *D.45365;
        D.45367 = D.45366->data.op[1].vtype;
        D.45368 = mono_type_to_regmove (cfg, D.45367);
        D.45369 = (short unsigned int) D.45368;
        D.45357->opcode = D.45369;
        D.45357 = iargs[0];
        D.45316 = cfg->varinfo;
        D.45362 = __domain_var->data.op[0].const_val;
        D.45363 = (unsigned int) D.45362;
        D.45364 = D.45363 * 4;
        D.45365 = D.45316 + D.45364;
        D.45366 = *D.45365;
        D.45367 = D.45366->data.op[1].vtype;
        type_to_eval_stack_type (cfg, D.45367, D.45357);
        D.45357 = iargs[0];
        D.45316 = cfg->varinfo;
        D.45362 = __domain_var->data.op[0].const_val;
        D.45363 = (unsigned int) D.45362;
        D.45364 = D.45363 * 4;
        D.45365 = D.45316 + D.45364;
        D.45366 = *D.45365;
        D.45370 = D.45366->klass;
        D.45357->klass = D.45370;
        D.45357 = iargs[0];
        D.45316 = cfg->varinfo;
        D.45362 = __domain_var->data.op[0].const_val;
        D.45363 = (unsigned int) D.45362;
        D.45364 = D.45363 * 4;
        D.45365 = D.45316 + D.45364;
        D.45366 = *D.45365;
        D.45371 = D.45366->dreg;
        D.45357->sreg1 = D.45371;
        D.45357 = iargs[0];
        D.45357 = iargs[0];
        D.45372 = D.45357->type;
        D.45373 = (<unnamed type>) D.45372;
        D.45374 = alloc_dreg (cfg, D.45373);
        D.45375 = (int) D.45374;
        D.45357->dreg = D.45375;
        D.45357 = iargs[0];
        D.45376 = D.45357->opcode;
        if (D.45376 == 431) goto <D.45377>; else goto <D.45378>;
        <D.45377>:
        D.45357 = iargs[0];
        D.45316 = cfg->varinfo;
        D.45362 = __domain_var->data.op[0].const_val;
        D.45363 = (unsigned int) D.45362;
        D.45364 = D.45363 * 4;
        D.45365 = D.45316 + D.45364;
        D.45366 = *D.45365;
        D.45367 = D.45366->data.op[1].vtype;
        D.45379 = mono_class_from_mono_type (D.45367);
        D.45357->klass = D.45379;
        <D.45378>:
      }
      goto <D.45354>;
      <D.45353>:
      D.45308 = cfg->mempool;
      D.45380 = mono_mempool_alloc (D.45308, 48);
      iargs[0] = D.45380;
      D.45357 = iargs[0];
      D.45357 = iargs[0];
      D.45357->data.op[1].const_val = 0;
      D.45358 = D.45357->data.op[1].const_val;
      D.45357->data.op[0].const_val = D.45358;
      D.45357 = iargs[0];
      D.45357 = iargs[0];
      D.45357->prev = 0B;
      D.45359 = D.45357->prev;
      D.45357->next = D.45359;
      D.45357 = iargs[0];
      D.45357->opcode = 362;
      D.45357 = iargs[0];
      D.45357->flags = 0;
      D.45357 = iargs[0];
      D.45357->type = 0;
      D.45357 = iargs[0];
      D.45357->dreg = -1;
      D.45357 = iargs[0];
      D.45357 = iargs[0];
      D.45357 = iargs[0];
      D.45357->sreg3 = -1;
      D.45360 = D.45357->sreg3;
      D.45357->sreg2 = D.45360;
      D.45361 = D.45357->sreg2;
      D.45357->sreg1 = D.45361;
      D.45357 = iargs[0];
      D.45315 = cfg->ip;
      D.45357->cil_code = D.45315;
      D.45357 = iargs[0];
      D.45336 = cfg->domain;
      D.45357->data.op[0].p = D.45336;
      D.45357 = iargs[0];
      D.45357->type = 3;
      D.45357 = iargs[0];
      D.45381 = alloc_dreg (cfg, 3);
      D.45382 = (int) D.45381;
      D.45357->dreg = D.45382;
      <D.45354>:
      D.45339 = cfg->cbb;
      D.45340 = D.45339->last_ins;
      if (D.45340 != 0B) goto <D.45383>; else goto <D.45384>;
      <D.45383>:
      D.45339 = cfg->cbb;
      D.45340 = D.45339->last_ins;
      D.45357 = iargs[0];
      D.45340->next = D.45357;
      D.45357 = iargs[0];
      D.45339 = cfg->cbb;
      D.45340 = D.45339->last_ins;
      D.45357->prev = D.45340;
      D.45339 = cfg->cbb;
      D.45357 = iargs[0];
      D.45339->last_ins = D.45357;
      goto <D.45385>;
      <D.45384>:
      D.45339 = cfg->cbb;
      D.45339 = cfg->cbb;
      D.45357 = iargs[0];
      D.45339->last_ins = D.45357;
      D.45340 = D.45339->last_ins;
      D.45339->code = D.45340;
      <D.45385>:
      D.45308 = cfg->mempool;
      D.45386 = mono_mempool_alloc (D.45308, 48);
      iargs[1] = D.45386;
      D.45387 = iargs[1];
      D.45387 = iargs[1];
      D.45387->data.op[1].const_val = 0;
      D.45388 = D.45387->data.op[1].const_val;
      D.45387->data.op[0].const_val = D.45388;
      D.45387 = iargs[1];
      D.45387 = iargs[1];
      D.45387->prev = 0B;
      D.45389 = D.45387->prev;
      D.45387->next = D.45389;
      D.45387 = iargs[1];
      D.45306 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.45307 = D.45306 & 64;
      if (D.45307 != 0) goto <D.45391>; else goto <D.45392>;
      <D.45391>:
      iftmp.465 = 738;
      goto <D.45393>;
      <D.45392>:
      iftmp.465 = 362;
      <D.45393>:
      D.45387->opcode = iftmp.465;
      D.45387 = iargs[1];
      D.45387->flags = 0;
      D.45387 = iargs[1];
      D.45387->type = 0;
      D.45387 = iargs[1];
      D.45387->dreg = -1;
      D.45387 = iargs[1];
      D.45387 = iargs[1];
      D.45387 = iargs[1];
      D.45387->sreg3 = -1;
      D.45394 = D.45387->sreg3;
      D.45387->sreg2 = D.45394;
      D.45395 = D.45387->sreg2;
      D.45387->sreg1 = D.45395;
      D.45387 = iargs[1];
      D.45315 = cfg->ip;
      D.45387->cil_code = D.45315;
      D.45306 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.45307 = D.45306 & 64;
      if (D.45307 != 0) goto <D.45396>; else goto <D.45397>;
      <D.45396>:
      {
        struct MonoInst * group;
        struct MonoInst * got_loc;

        got_loc = mono_get_got_var (cfg);
        D.45308 = cfg->mempool;
        group = mono_mempool_alloc (D.45308, 48);
        group->data.op[1].const_val = 0;
        D.45398 = group->data.op[1].const_val;
        group->data.op[0].const_val = D.45398;
        group->prev = 0B;
        D.45399 = group->prev;
        group->next = D.45399;
        group->opcode = 737;
        group->flags = 0;
        group->type = 0;
        group->dreg = -1;
        group->sreg3 = -1;
        D.45400 = group->sreg3;
        group->sreg2 = D.45400;
        D.45401 = group->sreg2;
        group->sreg1 = D.45401;
        D.45315 = cfg->ip;
        group->cil_code = D.45315;
        group->data.op[0].src = klass;
        group->data.op[1].src = 11B;
        D.45387 = iargs[1];
        D.45402 = got_loc->dreg;
        D.45387->sreg1 = D.45402;
        D.45387 = iargs[1];
        D.45387->data.op[1].p = group;
      }
      goto <D.45403>;
      <D.45397>:
      D.45387 = iargs[1];
      D.45387->data.op[0].p = klass;
      D.45387 = iargs[1];
      D.45387->data.op[1].src = 11B;
      <D.45403>:
      D.45387 = iargs[1];
      D.45387->type = 3;
      D.45387 = iargs[1];
      D.45404 = alloc_dreg (cfg, 3);
      D.45405 = (int) D.45404;
      D.45387->dreg = D.45405;
      D.45339 = cfg->cbb;
      D.45340 = D.45339->last_ins;
      if (D.45340 != 0B) goto <D.45406>; else goto <D.45407>;
      <D.45406>:
      D.45339 = cfg->cbb;
      D.45340 = D.45339->last_ins;
      D.45387 = iargs[1];
      D.45340->next = D.45387;
      D.45387 = iargs[1];
      D.45339 = cfg->cbb;
      D.45340 = D.45339->last_ins;
      D.45387->prev = D.45340;
      D.45339 = cfg->cbb;
      D.45387 = iargs[1];
      D.45339->last_ins = D.45387;
      goto <D.45408>;
      <D.45407>:
      D.45339 = cfg->cbb;
      D.45339 = cfg->cbb;
      D.45387 = iargs[1];
      D.45339->last_ins = D.45387;
      D.45340 = D.45339->last_ins;
      D.45339->code = D.45340;
      <D.45408>:
      alloc_ftn = mono_object_new;
      goto <D.45409>;
      <D.45351>:
      D.45306 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.45307 = D.45306 & 64;
      if (D.45307 != 0) goto <D.45411>; else goto <D.45410>;
      <D.45411>:
      D.45339 = cfg->cbb;
      D.45412 = BIT_FIELD_REF <*D.45339, 8, 912>;
      D.45413 = D.45412 & 1;
      if (D.45413 != 0) goto <D.45414>; else goto <D.45410>;
      <D.45414>:
      D.45415 = klass->type_token;
      if (D.45415 != 0) goto <D.45416>; else goto <D.45410>;
      <D.45416>:
      D.45417 = klass->image;
      D.45418 = mono_defaults.corlib;
      if (D.45417 == D.45418) goto <D.45419>; else goto <D.45410>;
      <D.45419>:
      D.45420 = klass->generic_class;
      if (D.45420 == 0B) goto <D.45421>; else goto <D.45410>;
      <D.45421>:
      D.45308 = cfg->mempool;
      D.45422 = mono_mempool_alloc (D.45308, 48);
      iargs[0] = D.45422;
      D.45357 = iargs[0];
      D.45357 = iargs[0];
      D.45357->data.op[1].const_val = 0;
      D.45358 = D.45357->data.op[1].const_val;
      D.45357->data.op[0].const_val = D.45358;
      D.45357 = iargs[0];
      D.45357 = iargs[0];
      D.45357->prev = 0B;
      D.45359 = D.45357->prev;
      D.45357->next = D.45359;
      D.45357 = iargs[0];
      D.45357->opcode = 362;
      D.45357 = iargs[0];
      D.45357->flags = 0;
      D.45357 = iargs[0];
      D.45357->type = 0;
      D.45357 = iargs[0];
      D.45357->dreg = -1;
      D.45357 = iargs[0];
      D.45357 = iargs[0];
      D.45357 = iargs[0];
      D.45357->sreg3 = -1;
      D.45360 = D.45357->sreg3;
      D.45357->sreg2 = D.45360;
      D.45361 = D.45357->sreg2;
      D.45357->sreg1 = D.45361;
      D.45357 = iargs[0];
      D.45315 = cfg->ip;
      D.45357->cil_code = D.45315;
      D.45357 = iargs[0];
      D.45415 = klass->type_token;
      D.45423 = (int) D.45415;
      D.45424 = D.45423 & 16777215;
      D.45357->data.op[0].const_val = D.45424;
      D.45357 = iargs[0];
      D.45357->type = 1;
      D.45357 = iargs[0];
      D.45425 = alloc_dreg (cfg, 1);
      D.45426 = (int) D.45425;
      D.45357->dreg = D.45426;
      D.45339 = cfg->cbb;
      D.45340 = D.45339->last_ins;
      if (D.45340 != 0B) goto <D.45427>; else goto <D.45428>;
      <D.45427>:
      D.45339 = cfg->cbb;
      D.45340 = D.45339->last_ins;
      D.45357 = iargs[0];
      D.45340->next = D.45357;
      D.45357 = iargs[0];
      D.45339 = cfg->cbb;
      D.45340 = D.45339->last_ins;
      D.45357->prev = D.45340;
      D.45339 = cfg->cbb;
      D.45357 = iargs[0];
      D.45339->last_ins = D.45357;
      goto <D.45429>;
      <D.45428>:
      D.45339 = cfg->cbb;
      D.45339 = cfg->cbb;
      D.45357 = iargs[0];
      D.45339->last_ins = D.45357;
      D.45340 = D.45339->last_ins;
      D.45339->code = D.45340;
      <D.45429>:
      D.45349 = mono_emit_jit_icall (cfg, mono_helper_newobj_mscorlib, &iargs);
      return D.45349;
      <D.45410>:
      {
        struct MonoVTable * vtable;
        struct MonoMethod * managed_alloc;
        gboolean pass_lw;

        try
          {
            D.45336 = cfg->domain;
            vtable = mono_class_vtable (D.45336, klass);
            managed_alloc = 0B;
            if (vtable == 0B) goto <D.45430>; else goto <D.45431>;
            <D.45430>:
            mono_cfg_set_exception (cfg, 7);
            cfg->exception_ptr = klass;
            D.45349 = 0B;
            return D.45349;
            <D.45431>:
            managed_alloc = mono_gc_get_managed_allocator (klass, for_box);
            if (managed_alloc != 0B) goto <D.45432>; else goto <D.45433>;
            <D.45432>:
            D.45308 = cfg->mempool;
            D.45434 = mono_mempool_alloc (D.45308, 48);
            iargs[0] = D.45434;
            D.45357 = iargs[0];
            D.45357 = iargs[0];
            D.45357->data.op[1].const_val = 0;
            D.45358 = D.45357->data.op[1].const_val;
            D.45357->data.op[0].const_val = D.45358;
            D.45357 = iargs[0];
            D.45357 = iargs[0];
            D.45357->prev = 0B;
            D.45359 = D.45357->prev;
            D.45357->next = D.45359;
            D.45357 = iargs[0];
            D.45306 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.45307 = D.45306 & 64;
            if (D.45307 != 0) goto <D.45436>; else goto <D.45437>;
            <D.45436>:
            iftmp.466 = 738;
            goto <D.45438>;
            <D.45437>:
            iftmp.466 = 362;
            <D.45438>:
            D.45357->opcode = iftmp.466;
            D.45357 = iargs[0];
            D.45357->flags = 0;
            D.45357 = iargs[0];
            D.45357->type = 0;
            D.45357 = iargs[0];
            D.45357->dreg = -1;
            D.45357 = iargs[0];
            D.45357 = iargs[0];
            D.45357 = iargs[0];
            D.45357->sreg3 = -1;
            D.45360 = D.45357->sreg3;
            D.45357->sreg2 = D.45360;
            D.45361 = D.45357->sreg2;
            D.45357->sreg1 = D.45361;
            D.45357 = iargs[0];
            D.45315 = cfg->ip;
            D.45357->cil_code = D.45315;
            D.45306 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.45307 = D.45306 & 64;
            if (D.45307 != 0) goto <D.45439>; else goto <D.45440>;
            <D.45439>:
            {
              struct MonoInst * group;
              struct MonoInst * got_loc;

              got_loc = mono_get_got_var (cfg);
              D.45308 = cfg->mempool;
              group = mono_mempool_alloc (D.45308, 48);
              group->data.op[1].const_val = 0;
              D.45441 = group->data.op[1].const_val;
              group->data.op[0].const_val = D.45441;
              group->prev = 0B;
              D.45442 = group->prev;
              group->next = D.45442;
              group->opcode = 737;
              group->flags = 0;
              group->type = 0;
              group->dreg = -1;
              group->sreg3 = -1;
              D.45443 = group->sreg3;
              group->sreg2 = D.45443;
              D.45444 = group->sreg2;
              group->sreg1 = D.45444;
              D.45315 = cfg->ip;
              group->cil_code = D.45315;
              D.45306 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.45307 = D.45306 & 64;
              if (D.45307 != 0) goto <D.45446>; else goto <D.45447>;
              <D.45446>:
              iftmp.467 = vtable->klass;
              goto <D.45448>;
              <D.45447>:
              iftmp.467 = vtable;
              <D.45448>:
              group->data.op[0].src = iftmp.467;
              group->data.op[1].src = 14B;
              D.45357 = iargs[0];
              D.45449 = got_loc->dreg;
              D.45357->sreg1 = D.45449;
              D.45357 = iargs[0];
              D.45357->data.op[1].p = group;
            }
            goto <D.45450>;
            <D.45440>:
            D.45357 = iargs[0];
            D.45306 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.45307 = D.45306 & 64;
            if (D.45307 != 0) goto <D.45452>; else goto <D.45453>;
            <D.45452>:
            iftmp.468 = vtable->klass;
            goto <D.45454>;
            <D.45453>:
            iftmp.468 = vtable;
            <D.45454>:
            D.45357->data.op[0].p = iftmp.468;
            D.45357 = iargs[0];
            D.45357->data.op[1].src = 14B;
            <D.45450>:
            D.45357 = iargs[0];
            D.45357->type = 3;
            D.45357 = iargs[0];
            D.45455 = alloc_dreg (cfg, 3);
            D.45456 = (int) D.45455;
            D.45357->dreg = D.45456;
            D.45339 = cfg->cbb;
            D.45340 = D.45339->last_ins;
            if (D.45340 != 0B) goto <D.45457>; else goto <D.45458>;
            <D.45457>:
            D.45339 = cfg->cbb;
            D.45340 = D.45339->last_ins;
            D.45357 = iargs[0];
            D.45340->next = D.45357;
            D.45357 = iargs[0];
            D.45339 = cfg->cbb;
            D.45340 = D.45339->last_ins;
            D.45357->prev = D.45340;
            D.45339 = cfg->cbb;
            D.45357 = iargs[0];
            D.45339->last_ins = D.45357;
            goto <D.45459>;
            <D.45458>:
            D.45339 = cfg->cbb;
            D.45339 = cfg->cbb;
            D.45357 = iargs[0];
            D.45339->last_ins = D.45357;
            D.45340 = D.45339->last_ins;
            D.45339->code = D.45340;
            <D.45459>:
            D.45349 = mono_emit_method_call (cfg, managed_alloc, &iargs, 0B);
            return D.45349;
            <D.45433>:
            alloc_ftn = mono_class_get_allocation_ftn (vtable, for_box, &pass_lw);
            pass_lw.469 = pass_lw;
            if (pass_lw.469 != 0) goto <D.45461>; else goto <D.45462>;
            <D.45461>:
            {
              guint32 lw;

              D.45463 = vtable->klass;
              D.45464 = D.45463->instance_size;
              lw = (guint32) D.45464;
              D.45465 = lw + 3;
              D.45466 = D.45465 & 4294967292;
              lw = D.45466 / 4;
              D.45308 = cfg->mempool;
              D.45467 = mono_mempool_alloc (D.45308, 48);
              iargs[0] = D.45467;
              D.45357 = iargs[0];
              D.45357 = iargs[0];
              D.45357->data.op[1].const_val = 0;
              D.45358 = D.45357->data.op[1].const_val;
              D.45357->data.op[0].const_val = D.45358;
              D.45357 = iargs[0];
              D.45357 = iargs[0];
              D.45357->prev = 0B;
              D.45359 = D.45357->prev;
              D.45357->next = D.45359;
              D.45357 = iargs[0];
              D.45357->opcode = 362;
              D.45357 = iargs[0];
              D.45357->flags = 0;
              D.45357 = iargs[0];
              D.45357->type = 0;
              D.45357 = iargs[0];
              D.45357->dreg = -1;
              D.45357 = iargs[0];
              D.45357 = iargs[0];
              D.45357 = iargs[0];
              D.45357->sreg3 = -1;
              D.45360 = D.45357->sreg3;
              D.45357->sreg2 = D.45360;
              D.45361 = D.45357->sreg2;
              D.45357->sreg1 = D.45361;
              D.45357 = iargs[0];
              D.45315 = cfg->ip;
              D.45357->cil_code = D.45315;
              D.45357 = iargs[0];
              lw.470 = (int) lw;
              D.45357->data.op[0].const_val = lw.470;
              D.45357 = iargs[0];
              D.45357->type = 1;
              D.45357 = iargs[0];
              D.45469 = alloc_dreg (cfg, 1);
              D.45470 = (int) D.45469;
              D.45357->dreg = D.45470;
              D.45339 = cfg->cbb;
              D.45340 = D.45339->last_ins;
              if (D.45340 != 0B) goto <D.45471>; else goto <D.45472>;
              <D.45471>:
              D.45339 = cfg->cbb;
              D.45340 = D.45339->last_ins;
              D.45357 = iargs[0];
              D.45340->next = D.45357;
              D.45357 = iargs[0];
              D.45339 = cfg->cbb;
              D.45340 = D.45339->last_ins;
              D.45357->prev = D.45340;
              D.45339 = cfg->cbb;
              D.45357 = iargs[0];
              D.45339->last_ins = D.45357;
              goto <D.45473>;
              <D.45472>:
              D.45339 = cfg->cbb;
              D.45339 = cfg->cbb;
              D.45357 = iargs[0];
              D.45339->last_ins = D.45357;
              D.45340 = D.45339->last_ins;
              D.45339->code = D.45340;
              <D.45473>:
              D.45308 = cfg->mempool;
              D.45474 = mono_mempool_alloc (D.45308, 48);
              iargs[1] = D.45474;
              D.45387 = iargs[1];
              D.45387 = iargs[1];
              D.45387->data.op[1].const_val = 0;
              D.45388 = D.45387->data.op[1].const_val;
              D.45387->data.op[0].const_val = D.45388;
              D.45387 = iargs[1];
              D.45387 = iargs[1];
              D.45387->prev = 0B;
              D.45389 = D.45387->prev;
              D.45387->next = D.45389;
              D.45387 = iargs[1];
              D.45306 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.45307 = D.45306 & 64;
              if (D.45307 != 0) goto <D.45476>; else goto <D.45477>;
              <D.45476>:
              iftmp.471 = 738;
              goto <D.45478>;
              <D.45477>:
              iftmp.471 = 362;
              <D.45478>:
              D.45387->opcode = iftmp.471;
              D.45387 = iargs[1];
              D.45387->flags = 0;
              D.45387 = iargs[1];
              D.45387->type = 0;
              D.45387 = iargs[1];
              D.45387->dreg = -1;
              D.45387 = iargs[1];
              D.45387 = iargs[1];
              D.45387 = iargs[1];
              D.45387->sreg3 = -1;
              D.45394 = D.45387->sreg3;
              D.45387->sreg2 = D.45394;
              D.45395 = D.45387->sreg2;
              D.45387->sreg1 = D.45395;
              D.45387 = iargs[1];
              D.45315 = cfg->ip;
              D.45387->cil_code = D.45315;
              D.45306 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.45307 = D.45306 & 64;
              if (D.45307 != 0) goto <D.45479>; else goto <D.45480>;
              <D.45479>:
              {
                struct MonoInst * group;
                struct MonoInst * got_loc;

                got_loc = mono_get_got_var (cfg);
                D.45308 = cfg->mempool;
                group = mono_mempool_alloc (D.45308, 48);
                group->data.op[1].const_val = 0;
                D.45481 = group->data.op[1].const_val;
                group->data.op[0].const_val = D.45481;
                group->prev = 0B;
                D.45482 = group->prev;
                group->next = D.45482;
                group->opcode = 737;
                group->flags = 0;
                group->type = 0;
                group->dreg = -1;
                group->sreg3 = -1;
                D.45483 = group->sreg3;
                group->sreg2 = D.45483;
                D.45484 = group->sreg2;
                group->sreg1 = D.45484;
                D.45315 = cfg->ip;
                group->cil_code = D.45315;
                D.45306 = BIT_FIELD_REF <*cfg, 8, 3392>;
                D.45307 = D.45306 & 64;
                if (D.45307 != 0) goto <D.45486>; else goto <D.45487>;
                <D.45486>:
                iftmp.472 = vtable->klass;
                goto <D.45488>;
                <D.45487>:
                iftmp.472 = vtable;
                <D.45488>:
                group->data.op[0].src = iftmp.472;
                group->data.op[1].src = 14B;
                D.45387 = iargs[1];
                D.45489 = got_loc->dreg;
                D.45387->sreg1 = D.45489;
                D.45387 = iargs[1];
                D.45387->data.op[1].p = group;
              }
              goto <D.45490>;
              <D.45480>:
              D.45387 = iargs[1];
              D.45306 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.45307 = D.45306 & 64;
              if (D.45307 != 0) goto <D.45492>; else goto <D.45493>;
              <D.45492>:
              iftmp.473 = vtable->klass;
              goto <D.45494>;
              <D.45493>:
              iftmp.473 = vtable;
              <D.45494>:
              D.45387->data.op[0].p = iftmp.473;
              D.45387 = iargs[1];
              D.45387->data.op[1].src = 14B;
              <D.45490>:
              D.45387 = iargs[1];
              D.45387->type = 3;
              D.45387 = iargs[1];
              D.45495 = alloc_dreg (cfg, 3);
              D.45496 = (int) D.45495;
              D.45387->dreg = D.45496;
              D.45339 = cfg->cbb;
              D.45340 = D.45339->last_ins;
              if (D.45340 != 0B) goto <D.45497>; else goto <D.45498>;
              <D.45497>:
              D.45339 = cfg->cbb;
              D.45340 = D.45339->last_ins;
              D.45387 = iargs[1];
              D.45340->next = D.45387;
              D.45387 = iargs[1];
              D.45339 = cfg->cbb;
              D.45340 = D.45339->last_ins;
              D.45387->prev = D.45340;
              D.45339 = cfg->cbb;
              D.45387 = iargs[1];
              D.45339->last_ins = D.45387;
              goto <D.45499>;
              <D.45498>:
              D.45339 = cfg->cbb;
              D.45339 = cfg->cbb;
              D.45387 = iargs[1];
              D.45339->last_ins = D.45387;
              D.45340 = D.45339->last_ins;
              D.45339->code = D.45340;
              <D.45499>:
            }
            goto <D.45500>;
            <D.45462>:
            D.45308 = cfg->mempool;
            D.45501 = mono_mempool_alloc (D.45308, 48);
            iargs[0] = D.45501;
            D.45357 = iargs[0];
            D.45357 = iargs[0];
            D.45357->data.op[1].const_val = 0;
            D.45358 = D.45357->data.op[1].const_val;
            D.45357->data.op[0].const_val = D.45358;
            D.45357 = iargs[0];
            D.45357 = iargs[0];
            D.45357->prev = 0B;
            D.45359 = D.45357->prev;
            D.45357->next = D.45359;
            D.45357 = iargs[0];
            D.45306 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.45307 = D.45306 & 64;
            if (D.45307 != 0) goto <D.45503>; else goto <D.45504>;
            <D.45503>:
            iftmp.474 = 738;
            goto <D.45505>;
            <D.45504>:
            iftmp.474 = 362;
            <D.45505>:
            D.45357->opcode = iftmp.474;
            D.45357 = iargs[0];
            D.45357->flags = 0;
            D.45357 = iargs[0];
            D.45357->type = 0;
            D.45357 = iargs[0];
            D.45357->dreg = -1;
            D.45357 = iargs[0];
            D.45357 = iargs[0];
            D.45357 = iargs[0];
            D.45357->sreg3 = -1;
            D.45360 = D.45357->sreg3;
            D.45357->sreg2 = D.45360;
            D.45361 = D.45357->sreg2;
            D.45357->sreg1 = D.45361;
            D.45357 = iargs[0];
            D.45315 = cfg->ip;
            D.45357->cil_code = D.45315;
            D.45306 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.45307 = D.45306 & 64;
            if (D.45307 != 0) goto <D.45506>; else goto <D.45507>;
            <D.45506>:
            {
              struct MonoInst * group;
              struct MonoInst * got_loc;

              got_loc = mono_get_got_var (cfg);
              D.45308 = cfg->mempool;
              group = mono_mempool_alloc (D.45308, 48);
              group->data.op[1].const_val = 0;
              D.45508 = group->data.op[1].const_val;
              group->data.op[0].const_val = D.45508;
              group->prev = 0B;
              D.45509 = group->prev;
              group->next = D.45509;
              group->opcode = 737;
              group->flags = 0;
              group->type = 0;
              group->dreg = -1;
              group->sreg3 = -1;
              D.45510 = group->sreg3;
              group->sreg2 = D.45510;
              D.45511 = group->sreg2;
              group->sreg1 = D.45511;
              D.45315 = cfg->ip;
              group->cil_code = D.45315;
              D.45306 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.45307 = D.45306 & 64;
              if (D.45307 != 0) goto <D.45513>; else goto <D.45514>;
              <D.45513>:
              iftmp.475 = vtable->klass;
              goto <D.45515>;
              <D.45514>:
              iftmp.475 = vtable;
              <D.45515>:
              group->data.op[0].src = iftmp.475;
              group->data.op[1].src = 14B;
              D.45357 = iargs[0];
              D.45516 = got_loc->dreg;
              D.45357->sreg1 = D.45516;
              D.45357 = iargs[0];
              D.45357->data.op[1].p = group;
            }
            goto <D.45517>;
            <D.45507>:
            D.45357 = iargs[0];
            D.45306 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.45307 = D.45306 & 64;
            if (D.45307 != 0) goto <D.45519>; else goto <D.45520>;
            <D.45519>:
            iftmp.476 = vtable->klass;
            goto <D.45521>;
            <D.45520>:
            iftmp.476 = vtable;
            <D.45521>:
            D.45357->data.op[0].p = iftmp.476;
            D.45357 = iargs[0];
            D.45357->data.op[1].src = 14B;
            <D.45517>:
            D.45357 = iargs[0];
            D.45357->type = 3;
            D.45357 = iargs[0];
            D.45522 = alloc_dreg (cfg, 3);
            D.45523 = (int) D.45522;
            D.45357->dreg = D.45523;
            D.45339 = cfg->cbb;
            D.45340 = D.45339->last_ins;
            if (D.45340 != 0B) goto <D.45524>; else goto <D.45525>;
            <D.45524>:
            D.45339 = cfg->cbb;
            D.45340 = D.45339->last_ins;
            D.45357 = iargs[0];
            D.45340->next = D.45357;
            D.45357 = iargs[0];
            D.45339 = cfg->cbb;
            D.45340 = D.45339->last_ins;
            D.45357->prev = D.45340;
            D.45339 = cfg->cbb;
            D.45357 = iargs[0];
            D.45339->last_ins = D.45357;
            goto <D.45526>;
            <D.45525>:
            D.45339 = cfg->cbb;
            D.45339 = cfg->cbb;
            D.45357 = iargs[0];
            D.45339->last_ins = D.45357;
            D.45340 = D.45339->last_ins;
            D.45339->code = D.45340;
            <D.45526>:
            <D.45500>:
          }
        finally
          {
            pass_lw = {CLOBBER};
          }
      }
      <D.45409>:
      D.45349 = mono_emit_jit_icall (cfg, alloc_ftn, &iargs);
      return D.45349;
    }
  finally
    {
      iargs = {CLOBBER};
    }
}


mini_emit_inst_for_ctor (struct MonoCompile * cfg, struct MonoMethod * cmethod, struct MonoMethodSignature * fsig, struct MonoInst * * args)
{
  unsigned int D.45532;
  unsigned int D.45533;
  struct MonoInst * D.45538;
  struct MonoInst * ins;

  ins = 0B;
  D.45532 = cfg->opt;
  D.45533 = D.45532 & 67108864;
  if (D.45533 != 0) goto <D.45534>; else goto <D.45535>;
  <D.45534>:
  ins = mono_emit_simd_intrinsics (cfg, cmethod, fsig, args);
  if (ins != 0B) goto <D.45536>; else goto <D.45537>;
  <D.45536>:
  D.45538 = ins;
  return D.45538;
  <D.45537>:
  <D.45535>:
  D.45538 = ins;
  return D.45538;
}


mono_method_check_inlining (struct MonoCompile * cfg, struct MonoMethod * method)
{
  struct MonoGenericSharingContext * D.45540;
  gboolean D.45543;
  unsigned int D.45544;
  int D.45547;
  short unsigned int D.45552;
  unsigned int D.45553;
  unsigned int D.45554;
  struct MonoClass * D.45556;
  unsigned char D.45557;
  unsigned char D.45558;
  int D.45560;
  int inline_limit_inited.477;
  const gchar * D.45564;
  const gchar * D.45567;
  int inline_limit.478;
  unsigned int D.45570;
  int inline_limit.479;
  unsigned int inline_limit.480;
  int D.45575;
  int D.45576;
  unsigned int D.45579;
  unsigned int D.45580;
  struct MonoDomain * D.45585;
  unsigned char D.45588;
  unsigned char D.45589;
  int D.45592;
  unsigned int D.45596;
  unsigned int D.45597;
  unsigned char D.45600;
  unsigned char D.45603;
  unsigned char D.45604;
  struct MonoClassRuntimeInfo * D.45607;
  unsigned char D.45612;
  unsigned char D.45613;
  int D.45617;
  int D.45627;
  unsigned char D.45632;
  struct MonoMethodHeaderSummary header;
  struct MonoVTable * vtable;

  try
    {
      D.45540 = cfg->generic_sharing_context;
      if (D.45540 != 0B) goto <D.45541>; else goto <D.45542>;
      <D.45541>:
      D.45543 = 0;
      return D.45543;
      <D.45542>:
      D.45544 = cfg->inline_depth;
      if (D.45544 > 10) goto <D.45545>; else goto <D.45546>;
      <D.45545>:
      D.45543 = 0;
      return D.45543;
      <D.45546>:
      D.45547 = mono_method_get_header_summary (method, &header);
      if (D.45547 == 0) goto <D.45548>; else goto <D.45549>;
      <D.45548>:
      D.45543 = 0;
      return D.45543;
      <D.45549>:
      D.45552 = method->iflags;
      D.45553 = (unsigned int) D.45552;
      D.45554 = D.45553 & 40;
      if (D.45554 != 0) goto <D.45550>; else goto <D.45555>;
      <D.45555>:
      D.45556 = method->klass;
      D.45557 = BIT_FIELD_REF <*D.45556, 8, 176>;
      D.45558 = D.45557 & 64;
      if (D.45558 != 0) goto <D.45550>; else goto <D.45559>;
      <D.45559>:
      D.45560 = header.has_clauses;
      if (D.45560 != 0) goto <D.45550>; else goto <D.45551>;
      <D.45550>:
      D.45543 = 0;
      return D.45543;
      <D.45551>:
      inline_limit_inited.477 = inline_limit_inited;
      if (inline_limit_inited.477 == 0) goto <D.45562>; else goto <D.45563>;
      <D.45562>:
      D.45564 = monoeg_g_getenv ("MONO_INLINELIMIT");
      if (D.45564 != 0B) goto <D.45565>; else goto <D.45566>;
      <D.45565>:
      D.45567 = monoeg_g_getenv ("MONO_INLINELIMIT");
      inline_limit.478 = atoi (D.45567);
      inline_limit = inline_limit.478;
      goto <D.45569>;
      <D.45566>:
      inline_limit = 20;
      <D.45569>:
      inline_limit_inited = 1;
      <D.45563>:
      D.45570 = header.code_size;
      inline_limit.479 = inline_limit;
      inline_limit.480 = (unsigned int) inline_limit.479;
      if (D.45570 >= inline_limit.480) goto <D.45573>; else goto <D.45574>;
      <D.45573>:
      D.45552 = method->iflags;
      D.45575 = (int) D.45552;
      D.45576 = D.45575 & 256;
      if (D.45576 == 0) goto <D.45577>; else goto <D.45578>;
      <D.45577>:
      D.45543 = 0;
      return D.45543;
      <D.45578>:
      <D.45574>:
      D.45579 = cfg->opt;
      D.45580 = D.45579 & 512;
      if (D.45580 == 0) goto <D.45581>; else goto <D.45582>;
      <D.45581>:
      D.45552 = method->iflags;
      D.45575 = (int) D.45552;
      D.45576 = D.45575 & 256;
      if (D.45576 != 0) goto <D.45583>; else goto <D.45584>;
      <D.45583>:
      D.45556 = method->klass;
      D.45585 = cfg->domain;
      vtable = mono_class_vtable (D.45585, D.45556);
      if (vtable == 0B) goto <D.45586>; else goto <D.45587>;
      <D.45586>:
      D.45543 = 0;
      return D.45543;
      <D.45587>:
      D.45588 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.45589 = D.45588 & 64;
      if (D.45589 != 0) goto <D.45590>; else goto <D.45591>;
      <D.45590>:
      D.45556 = method->klass;
      D.45592 = mono_class_needs_cctor_run (D.45556, 0B);
      if (D.45592 != 0) goto <D.45593>; else goto <D.45594>;
      <D.45593>:
      D.45543 = 0;
      return D.45543;
      <D.45594>:
      <D.45591>:
      mono_runtime_class_init (vtable);
      goto <D.45595>;
      <D.45584>:
      D.45556 = method->klass;
      D.45596 = D.45556->flags;
      D.45597 = D.45596 & 1048576;
      if (D.45597 != 0) goto <D.45598>; else goto <D.45599>;
      <D.45598>:
      D.45588 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.45600 = D.45588 & 16;
      if (D.45600 != 0) goto <D.45601>; else goto <D.45602>;
      <D.45601>:
      D.45556 = method->klass;
      D.45603 = BIT_FIELD_REF <*D.45556, 8, 184>;
      D.45604 = D.45603 & 4;
      if (D.45604 != 0) goto <D.45605>; else goto <D.45606>;
      <D.45605>:
      D.45556 = method->klass;
      D.45607 = D.45556->runtime_info;
      if (D.45607 == 0B) goto <D.45608>; else goto <D.45609>;
      <D.45608>:
      D.45543 = 0;
      return D.45543;
      <D.45609>:
      D.45556 = method->klass;
      D.45585 = cfg->domain;
      vtable = mono_class_vtable (D.45585, D.45556);
      if (vtable == 0B) goto <D.45610>; else goto <D.45611>;
      <D.45610>:
      D.45543 = 0;
      return D.45543;
      <D.45611>:
      D.45612 = BIT_FIELD_REF <*vtable, 8, 184>;
      D.45613 = D.45612 & 2;
      if (D.45613 == 0) goto <D.45614>; else goto <D.45615>;
      <D.45614>:
      D.45543 = 0;
      return D.45543;
      <D.45615>:
      mono_runtime_class_init (vtable);
      <D.45606>:
      <D.45602>:
      goto <D.45616>;
      <D.45599>:
      D.45556 = method->klass;
      D.45617 = mono_class_needs_cctor_run (D.45556, 0B);
      if (D.45617 != 0) goto <D.45618>; else goto <D.45619>;
      <D.45618>:
      D.45556 = method->klass;
      D.45607 = D.45556->runtime_info;
      if (D.45607 == 0B) goto <D.45620>; else goto <D.45621>;
      <D.45620>:
      D.45543 = 0;
      return D.45543;
      <D.45621>:
      D.45556 = method->klass;
      D.45585 = cfg->domain;
      vtable = mono_class_vtable (D.45585, D.45556);
      if (vtable == 0B) goto <D.45622>; else goto <D.45623>;
      <D.45622>:
      D.45543 = 0;
      return D.45543;
      <D.45623>:
      D.45612 = BIT_FIELD_REF <*vtable, 8, 184>;
      D.45613 = D.45612 & 2;
      if (D.45613 == 0) goto <D.45624>; else goto <D.45625>;
      <D.45624>:
      D.45543 = 0;
      return D.45543;
      <D.45625>:
      <D.45619>:
      <D.45616>:
      <D.45595>:
      goto <D.45626>;
      <D.45582>:
      D.45556 = method->klass;
      D.45627 = mono_class_needs_cctor_run (D.45556, 0B);
      if (D.45627 != 0) goto <D.45628>; else goto <D.45629>;
      <D.45628>:
      D.45556 = method->klass;
      D.45596 = D.45556->flags;
      D.45597 = D.45596 & 1048576;
      if (D.45597 == 0) goto <D.45630>; else goto <D.45631>;
      <D.45630>:
      D.45543 = 0;
      return D.45543;
      <D.45631>:
      <D.45629>:
      <D.45626>:
      D.45632 = mono_method_has_declsec (method);
      if (D.45632 != 0) goto <D.45633>; else goto <D.45634>;
      <D.45633>:
      D.45543 = 0;
      return D.45543;
      <D.45634>:
      D.45543 = 1;
      return D.45543;
    }
  finally
    {
      header = {CLOBBER};
    }
}


atoi (const char * __nptr)
{
  int D.45637;

  D.45637 = strtol (__nptr, 0B, 10);
  return D.45637;
}


emit_get_rgctx_gsharedvt_call (struct MonoCompile * cfg, int context_used, struct MonoMethodSignature * sig, struct MonoMethod * cmethod, MonoRgctxInfoType rgctx_type)
{
  struct MonoMemPool * D.45639;
  int D.45640;
  struct MonoMethod * D.45641;
  struct MonoInst * D.45642;
  struct MonoJumpInfoGSharedVtCall * call_info;
  struct MonoJumpInfoRgctxEntry * entry;
  struct MonoInst * rgctx;

  D.45639 = cfg->mempool;
  call_info = mono_mempool_alloc0 (D.45639, 8);
  call_info->sig = sig;
  call_info->method = cmethod;
  D.45640 = context_used & 2;
  D.45641 = cfg->current_method;
  D.45639 = cfg->mempool;
  entry = mono_patch_info_rgctx_entry_new (D.45639, D.45641, D.45640, 45, call_info, rgctx_type);
  D.45641 = cfg->current_method;
  rgctx = emit_get_rgctx (cfg, D.45641, context_used);
  D.45642 = emit_rgctx_fetch (cfg, rgctx, entry);
  return D.45642;
}


save_cast_details (struct MonoCompile * cfg, struct MonoClass * klass, int obj_reg, gboolean null_check, struct MonoBasicBlock * * out_bblock)
{
  struct MonoDebugOptions * D.45644;
  int D.45645;
  unsigned int D.45648;
  unsigned int D.45649;
  unsigned int D.45650;
  struct MonoMemPool * D.45653;
  unsigned int D.45654;
  unsigned int D.45655;
  unsigned int D.45656;
  int D.45657;
  int D.45658;
  struct MonoInst * D.45659;
  int D.45660;
  int D.45661;
  const unsigned char * D.45662;
  struct MonoBasicBlock * D.45663;
  struct MonoInst * D.45664;
  int D.45668;
  struct MonoInst * D.45669;
  int D.45670;
  int D.45671;
  unsigned int D.45674;
  unsigned int D.45675;
  int D.45676;
  unsigned char * D.45680;
  struct MonoBasicBlock * * D.45683;
  int D.45684;
  unsigned char * D.45685;
  int D.45686;
  int D.45687;
  unsigned int D.45688;
  unsigned int D.45689;
  struct MonoBasicBlock * * D.45690;
  unsigned int D.45691;
  short unsigned int D.45696;
  short unsigned int D.45697;
  _Bool D.45698;
  short unsigned int D.45699;
  _Bool D.45700;
  _Bool D.45701;
  short unsigned int D.45703;
  short unsigned int D.45704;
  struct MonoBasicBlock * * D.45705;
  struct MonoBasicBlock * * D.45706;
  struct MonoBasicBlock * D.45707;
  short unsigned int D.45712;
  _Bool D.45713;
  _Bool D.45714;
  _Bool D.45715;
  short unsigned int D.45717;
  short unsigned int D.45718;
  _Bool D.45719;
  short unsigned int D.45720;
  _Bool D.45721;
  _Bool D.45722;
  void * D.45725;
  struct MonoBasicBlock * * D.45726;
  struct MonoBasicBlock * * D.45727;
  unsigned char D.45731;
  unsigned char D.45732;
  unsigned int D.45735;
  unsigned int D.45736;
  int D.45737;
  short unsigned int D.45744;
  short unsigned int D.45745;
  _Bool D.45746;
  short unsigned int D.45747;
  _Bool D.45748;
  _Bool D.45749;
  short unsigned int D.45755;
  _Bool D.45756;
  _Bool D.45757;
  _Bool D.45758;
  short unsigned int D.45760;
  short unsigned int D.45761;
  _Bool D.45762;
  short unsigned int D.45763;
  _Bool D.45764;
  _Bool D.45765;
  struct _IO_FILE * stderr.481;
  int D.45774;
  struct MonoInst * D.45775;
  int D.45776;
  int D.45777;
  int D.45781;
  struct MonoInst * D.45782;
  int D.45783;
  int D.45784;
  int D.45788;
  struct MonoInst * D.45789;
  int D.45790;
  int D.45791;
  int D.45792;
  int D.45796;
  struct MonoInst * D.45797;
  int D.45798;
  int D.45799;
  int D.45803;
  struct MonoInst * D.45804;
  int D.45805;
  int D.45806;
  unsigned char * D.45812;
  int D.45815;
  int D.45816;
  unsigned int D.45817;
  unsigned int D.45818;
  struct MonoBasicBlock * * D.45819;
  short unsigned int D.45824;
  short unsigned int D.45825;
  _Bool D.45826;
  short unsigned int D.45827;
  _Bool D.45828;
  _Bool D.45829;
  short unsigned int D.45835;
  _Bool D.45836;
  _Bool D.45837;
  _Bool D.45838;
  short unsigned int D.45840;
  short unsigned int D.45841;
  _Bool D.45842;
  short unsigned int D.45843;
  _Bool D.45844;
  _Bool D.45845;

  D.45644 = mini_get_debug_options ();
  D.45645 = D.45644->better_cast_details;
  if (D.45645 != 0) goto <D.45646>; else goto <D.45647>;
  <D.45646>:
  {
    int to_klass_reg;
    int vtable_reg;
    int klass_reg;
    struct MonoBasicBlock * is_null_bb;
    struct MonoInst * tls_get;

    D.45648 = alloc_preg (cfg);
    to_klass_reg = (int) D.45648;
    D.45649 = alloc_preg (cfg);
    vtable_reg = (int) D.45649;
    D.45650 = alloc_preg (cfg);
    klass_reg = (int) D.45650;
    is_null_bb = 0B;
    if (null_check != 0) goto <D.45651>; else goto <D.45652>;
    <D.45651>:
    D.45653 = cfg->mempool;
    is_null_bb = mono_mempool_alloc0 (D.45653, 172);
    D.45654 = cfg->num_bblocks;
    D.45655 = D.45654;
    D.45656 = D.45655 + 1;
    cfg->num_bblocks = D.45656;
    D.45657 = (int) D.45655;
    is_null_bb->block_num = D.45657;
    {
      struct MonoInst * inst;

      D.45653 = cfg->mempool;
      inst = mono_mempool_alloc (D.45653, 48);
      inst->data.op[1].const_val = 0;
      D.45658 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.45658;
      inst->prev = 0B;
      D.45659 = inst->prev;
      inst->next = D.45659;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.45660 = inst->sreg3;
      inst->sreg2 = D.45660;
      D.45661 = inst->sreg2;
      inst->sreg1 = D.45661;
      D.45662 = cfg->ip;
      inst->cil_code = D.45662;
      inst->dreg = -1;
      inst->sreg1 = obj_reg;
      inst->data.op[1].const_val = 0;
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      if (D.45664 != 0B) goto <D.45665>; else goto <D.45666>;
      <D.45665>:
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      D.45664->next = inst;
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      inst->prev = D.45664;
      D.45663 = cfg->cbb;
      D.45663->last_ins = inst;
      goto <D.45667>;
      <D.45666>:
      D.45663 = cfg->cbb;
      D.45663 = cfg->cbb;
      D.45663->last_ins = inst;
      D.45664 = D.45663->last_ins;
      D.45663->code = D.45664;
      <D.45667>:
    }
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.45653 = cfg->mempool;
      ins = mono_mempool_alloc (D.45653, 48);
      ins->data.op[1].const_val = 0;
      D.45668 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.45668;
      ins->prev = 0B;
      D.45669 = ins->prev;
      ins->next = D.45669;
      ins->opcode = 652;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.45670 = ins->sreg3;
      ins->sreg2 = D.45670;
      D.45671 = ins->sreg2;
      ins->sreg1 = D.45671;
      D.45662 = cfg->ip;
      ins->cil_code = D.45662;
      if (0 != 0) goto <D.45672>; else goto <D.45673>;
      <D.45672>:
      D.45653 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.45653, 172);
      D.45654 = cfg->num_bblocks;
      D.45674 = D.45654;
      D.45675 = D.45674 + 1;
      cfg->num_bblocks = D.45675;
      D.45676 = (int) D.45674;
      falsebb->block_num = D.45676;
      ins->data.op[0].target_block = is_null_bb;
      D.45663 = cfg->cbb;
      mono_link_bblock (cfg, D.45663, is_null_bb);
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      if (D.45664 != 0B) goto <D.45677>; else goto <D.45678>;
      <D.45677>:
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      D.45664->next = ins;
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      ins->prev = D.45664;
      D.45663 = cfg->cbb;
      D.45663->last_ins = ins;
      goto <D.45679>;
      <D.45678>:
      D.45663 = cfg->cbb;
      D.45663 = cfg->cbb;
      D.45663->last_ins = ins;
      D.45664 = D.45663->last_ins;
      D.45663->code = D.45664;
      <D.45679>:
      D.45680 = falsebb->cil_code;
      if (D.45680 != 0B) goto <D.45681>; else goto <D.45682>;
      <D.45681>:
      D.45683 = cfg->cil_offset_to_bb;
      D.45680 = falsebb->cil_code;
      D.45684 = (int) D.45680;
      D.45685 = cfg->cil_start;
      D.45686 = (int) D.45685;
      D.45687 = D.45684 - D.45686;
      D.45688 = (unsigned int) D.45687;
      D.45689 = D.45688 * 4;
      D.45690 = D.45683 + D.45689;
      *D.45690 = falsebb;
      <D.45682>:
      D.45691 = cfg->real_offset;
      falsebb->real_offset = D.45691;
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      if (D.45664 != 0B) goto <D.45695>; else goto <D.45692>;
      <D.45695>:
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      D.45696 = D.45664->opcode;
      D.45697 = D.45696 + 64981;
      D.45698 = D.45697 <= 9;
      D.45699 = D.45696 + 64874;
      D.45700 = D.45699 <= 9;
      D.45701 = D.45698 | D.45700;
      if (D.45701 != 0) goto <D.45693>; else goto <D.45702>;
      <D.45702>:
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      D.45703 = D.45664->opcode;
      D.45704 = D.45703 + 64884;
      if (D.45704 <= 9) goto <D.45693>; else goto <D.45692>;
      <D.45693>:
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      D.45705 = D.45664->data.op[1].many_blocks;
      D.45706 = D.45705 + 4;
      D.45707 = *D.45706;
      if (D.45707 == 0B) goto <D.45708>; else goto <D.45692>;
      <D.45708>:
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      D.45705 = D.45664->data.op[1].many_blocks;
      D.45706 = D.45705 + 4;
      *D.45706 = falsebb;
      D.45663 = cfg->cbb;
      mono_link_bblock (cfg, D.45663, falsebb);
      goto <D.45694>;
      <D.45692>:
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      if (D.45664 == 0B) goto <D.45709>; else goto <D.45711>;
      <D.45711>:
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      D.45712 = D.45664->opcode;
      D.45713 = D.45712 != 446;
      D.45714 = D.45712 != 763;
      D.45715 = D.45713 & D.45714;
      if (D.45715 != 0) goto <D.45716>; else goto <D.45710>;
      <D.45716>:
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      D.45717 = D.45664->opcode;
      D.45718 = D.45717 + 64981;
      D.45719 = D.45718 > 9;
      D.45720 = D.45717 + 64874;
      D.45721 = D.45720 > 9;
      D.45722 = D.45719 & D.45721;
      if (D.45722 != 0) goto <D.45723>; else goto <D.45710>;
      <D.45723>:
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      D.45703 = D.45664->opcode;
      D.45704 = D.45703 + 64884;
      if (D.45704 > 9) goto <D.45709>; else goto <D.45710>;
      <D.45709>:
      D.45663 = cfg->cbb;
      mono_link_bblock (cfg, D.45663, falsebb);
      <D.45710>:
      <D.45694>:
      D.45663 = cfg->cbb;
      D.45663->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.45724>;
      <D.45673>:
      D.45653 = cfg->mempool;
      D.45725 = mono_mempool_alloc (D.45653, 8);
      ins->data.op[1].many_blocks = D.45725;
      D.45726 = ins->data.op[1].many_blocks;
      *D.45726 = is_null_bb;
      D.45726 = ins->data.op[1].many_blocks;
      D.45727 = D.45726 + 4;
      *D.45727 = 0B;
      D.45663 = cfg->cbb;
      mono_link_bblock (cfg, D.45663, is_null_bb);
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      if (D.45664 != 0B) goto <D.45728>; else goto <D.45729>;
      <D.45728>:
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      D.45664->next = ins;
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      ins->prev = D.45664;
      D.45663 = cfg->cbb;
      D.45663->last_ins = ins;
      goto <D.45730>;
      <D.45729>:
      D.45663 = cfg->cbb;
      D.45663 = cfg->cbb;
      D.45663->last_ins = ins;
      D.45664 = D.45663->last_ins;
      D.45663->code = D.45664;
      <D.45730>:
      D.45731 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.45732 = D.45731 & 8;
      if (D.45732 == 0) goto <D.45733>; else goto <D.45734>;
      <D.45733>:
      D.45653 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.45653, 172);
      D.45654 = cfg->num_bblocks;
      D.45735 = D.45654;
      D.45736 = D.45735 + 1;
      cfg->num_bblocks = D.45736;
      D.45737 = (int) D.45735;
      falsebb->block_num = D.45737;
      D.45726 = ins->data.op[1].many_blocks;
      D.45727 = D.45726 + 4;
      *D.45727 = falsebb;
      D.45663 = cfg->cbb;
      mono_link_bblock (cfg, D.45663, falsebb);
      D.45680 = falsebb->cil_code;
      if (D.45680 != 0B) goto <D.45738>; else goto <D.45739>;
      <D.45738>:
      D.45683 = cfg->cil_offset_to_bb;
      D.45680 = falsebb->cil_code;
      D.45684 = (int) D.45680;
      D.45685 = cfg->cil_start;
      D.45686 = (int) D.45685;
      D.45687 = D.45684 - D.45686;
      D.45688 = (unsigned int) D.45687;
      D.45689 = D.45688 * 4;
      D.45690 = D.45683 + D.45689;
      *D.45690 = falsebb;
      <D.45739>:
      D.45691 = cfg->real_offset;
      falsebb->real_offset = D.45691;
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      if (D.45664 != 0B) goto <D.45743>; else goto <D.45740>;
      <D.45743>:
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      D.45744 = D.45664->opcode;
      D.45745 = D.45744 + 64981;
      D.45746 = D.45745 <= 9;
      D.45747 = D.45744 + 64874;
      D.45748 = D.45747 <= 9;
      D.45749 = D.45746 | D.45748;
      if (D.45749 != 0) goto <D.45741>; else goto <D.45750>;
      <D.45750>:
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      D.45703 = D.45664->opcode;
      D.45704 = D.45703 + 64884;
      if (D.45704 <= 9) goto <D.45741>; else goto <D.45740>;
      <D.45741>:
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      D.45705 = D.45664->data.op[1].many_blocks;
      D.45706 = D.45705 + 4;
      D.45707 = *D.45706;
      if (D.45707 == 0B) goto <D.45751>; else goto <D.45740>;
      <D.45751>:
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      D.45705 = D.45664->data.op[1].many_blocks;
      D.45706 = D.45705 + 4;
      *D.45706 = falsebb;
      D.45663 = cfg->cbb;
      mono_link_bblock (cfg, D.45663, falsebb);
      goto <D.45742>;
      <D.45740>:
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      if (D.45664 == 0B) goto <D.45752>; else goto <D.45754>;
      <D.45754>:
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      D.45755 = D.45664->opcode;
      D.45756 = D.45755 != 446;
      D.45757 = D.45755 != 763;
      D.45758 = D.45756 & D.45757;
      if (D.45758 != 0) goto <D.45759>; else goto <D.45753>;
      <D.45759>:
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      D.45760 = D.45664->opcode;
      D.45761 = D.45760 + 64981;
      D.45762 = D.45761 > 9;
      D.45763 = D.45760 + 64874;
      D.45764 = D.45763 > 9;
      D.45765 = D.45762 & D.45764;
      if (D.45765 != 0) goto <D.45766>; else goto <D.45753>;
      <D.45766>:
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      D.45703 = D.45664->opcode;
      D.45704 = D.45703 + 64884;
      if (D.45704 > 9) goto <D.45752>; else goto <D.45753>;
      <D.45752>:
      D.45663 = cfg->cbb;
      mono_link_bblock (cfg, D.45663, falsebb);
      <D.45753>:
      <D.45742>:
      D.45663 = cfg->cbb;
      D.45663->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.45767>;
      <D.45734>:
      D.45663 = cfg->cbb;
      D.45663->extended = 1;
      <D.45767>:
      <D.45724>:
    }
    <D.45652>:
    tls_get = mono_get_jit_tls_intrinsic (cfg);
    if (tls_get == 0B) goto <D.45768>; else goto <D.45769>;
    <D.45768>:
    stderr.481 = stderr;
    fprintf (stderr.481, "error: --debug=casts not supported on this platform.\n.");
    exit (1);
    <D.45769>:
    D.45663 = cfg->cbb;
    D.45664 = D.45663->last_ins;
    if (D.45664 != 0B) goto <D.45771>; else goto <D.45772>;
    <D.45771>:
    D.45663 = cfg->cbb;
    D.45664 = D.45663->last_ins;
    D.45664->next = tls_get;
    D.45663 = cfg->cbb;
    D.45664 = D.45663->last_ins;
    tls_get->prev = D.45664;
    D.45663 = cfg->cbb;
    D.45663->last_ins = tls_get;
    goto <D.45773>;
    <D.45772>:
    D.45663 = cfg->cbb;
    D.45663 = cfg->cbb;
    D.45663->last_ins = tls_get;
    D.45664 = D.45663->last_ins;
    D.45663->code = D.45664;
    <D.45773>:
    {
      struct MonoInst * inst;

      D.45653 = cfg->mempool;
      inst = mono_mempool_alloc (D.45653, 48);
      inst->data.op[1].const_val = 0;
      D.45774 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.45774;
      inst->prev = 0B;
      D.45775 = inst->prev;
      inst->next = D.45775;
      inst->opcode = 391;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.45776 = inst->sreg3;
      inst->sreg2 = D.45776;
      D.45777 = inst->sreg2;
      inst->sreg1 = D.45777;
      D.45662 = cfg->ip;
      inst->cil_code = D.45662;
      inst->dreg = vtable_reg;
      inst->sreg1 = obj_reg;
      inst->data.op[0].const_val = 0;
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      if (D.45664 != 0B) goto <D.45778>; else goto <D.45779>;
      <D.45778>:
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      D.45664->next = inst;
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      inst->prev = D.45664;
      D.45663 = cfg->cbb;
      D.45663->last_ins = inst;
      goto <D.45780>;
      <D.45779>:
      D.45663 = cfg->cbb;
      D.45663 = cfg->cbb;
      D.45663->last_ins = inst;
      D.45664 = D.45663->last_ins;
      D.45663->code = D.45664;
      <D.45780>:
    }
    {
      struct MonoInst * inst;

      D.45653 = cfg->mempool;
      inst = mono_mempool_alloc (D.45653, 48);
      inst->data.op[1].const_val = 0;
      D.45781 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.45781;
      inst->prev = 0B;
      D.45782 = inst->prev;
      inst->next = D.45782;
      inst->opcode = 391;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.45783 = inst->sreg3;
      inst->sreg2 = D.45783;
      D.45784 = inst->sreg2;
      inst->sreg1 = D.45784;
      D.45662 = cfg->ip;
      inst->cil_code = D.45662;
      inst->dreg = klass_reg;
      inst->sreg1 = vtable_reg;
      inst->data.op[0].const_val = 0;
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      if (D.45664 != 0B) goto <D.45785>; else goto <D.45786>;
      <D.45785>:
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      D.45664->next = inst;
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      inst->prev = D.45664;
      D.45663 = cfg->cbb;
      D.45663->last_ins = inst;
      goto <D.45787>;
      <D.45786>:
      D.45663 = cfg->cbb;
      D.45663 = cfg->cbb;
      D.45663->last_ins = inst;
      D.45664 = D.45663->last_ins;
      D.45663->code = D.45664;
      <D.45787>:
    }
    {
      struct MonoInst * inst;

      D.45653 = cfg->mempool;
      inst = mono_mempool_alloc (D.45653, 48);
      inst->data.op[1].const_val = 0;
      D.45788 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.45788;
      inst->prev = 0B;
      D.45789 = inst->prev;
      inst->next = D.45789;
      inst->opcode = 374;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.45790 = inst->sreg3;
      inst->sreg2 = D.45790;
      D.45791 = inst->sreg2;
      inst->sreg1 = D.45791;
      D.45662 = cfg->ip;
      inst->cil_code = D.45662;
      inst->sreg1 = klass_reg;
      D.45792 = tls_get->dreg;
      inst->dreg = D.45792;
      inst->data.op[0].const_val = 44;
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      if (D.45664 != 0B) goto <D.45793>; else goto <D.45794>;
      <D.45793>:
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      D.45664->next = inst;
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      inst->prev = D.45664;
      D.45663 = cfg->cbb;
      D.45663->last_ins = inst;
      goto <D.45795>;
      <D.45794>:
      D.45663 = cfg->cbb;
      D.45663 = cfg->cbb;
      D.45663->last_ins = inst;
      D.45664 = D.45663->last_ins;
      D.45663->code = D.45664;
      <D.45795>:
    }
    {
      struct MonoInst * inst;

      D.45653 = cfg->mempool;
      inst = mono_mempool_alloc (D.45653, 48);
      inst->data.op[1].const_val = 0;
      D.45796 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.45796;
      inst->prev = 0B;
      D.45797 = inst->prev;
      inst->next = D.45797;
      inst->opcode = 362;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.45798 = inst->sreg3;
      inst->sreg2 = D.45798;
      D.45799 = inst->sreg2;
      inst->sreg1 = D.45799;
      D.45662 = cfg->ip;
      inst->cil_code = D.45662;
      inst->dreg = to_klass_reg;
      inst->data.op[0].p = klass;
      inst->type = 3;
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      if (D.45664 != 0B) goto <D.45800>; else goto <D.45801>;
      <D.45800>:
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      D.45664->next = inst;
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      inst->prev = D.45664;
      D.45663 = cfg->cbb;
      D.45663->last_ins = inst;
      goto <D.45802>;
      <D.45801>:
      D.45663 = cfg->cbb;
      D.45663 = cfg->cbb;
      D.45663->last_ins = inst;
      D.45664 = D.45663->last_ins;
      D.45663->code = D.45664;
      <D.45802>:
    }
    {
      struct MonoInst * inst;

      D.45653 = cfg->mempool;
      inst = mono_mempool_alloc (D.45653, 48);
      inst->data.op[1].const_val = 0;
      D.45803 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.45803;
      inst->prev = 0B;
      D.45804 = inst->prev;
      inst->next = D.45804;
      inst->opcode = 374;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.45805 = inst->sreg3;
      inst->sreg2 = D.45805;
      D.45806 = inst->sreg2;
      inst->sreg1 = D.45806;
      D.45662 = cfg->ip;
      inst->cil_code = D.45662;
      inst->sreg1 = to_klass_reg;
      D.45792 = tls_get->dreg;
      inst->dreg = D.45792;
      inst->data.op[0].const_val = 48;
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      if (D.45664 != 0B) goto <D.45807>; else goto <D.45808>;
      <D.45807>:
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      D.45664->next = inst;
      D.45663 = cfg->cbb;
      D.45664 = D.45663->last_ins;
      inst->prev = D.45664;
      D.45663 = cfg->cbb;
      D.45663->last_ins = inst;
      goto <D.45809>;
      <D.45808>:
      D.45663 = cfg->cbb;
      D.45663 = cfg->cbb;
      D.45663->last_ins = inst;
      D.45664 = D.45663->last_ins;
      D.45663->code = D.45664;
      <D.45809>:
    }
    if (null_check != 0) goto <D.45810>; else goto <D.45811>;
    <D.45810>:
    D.45812 = is_null_bb->cil_code;
    if (D.45812 != 0B) goto <D.45813>; else goto <D.45814>;
    <D.45813>:
    D.45683 = cfg->cil_offset_to_bb;
    D.45812 = is_null_bb->cil_code;
    D.45815 = (int) D.45812;
    D.45685 = cfg->cil_start;
    D.45686 = (int) D.45685;
    D.45816 = D.45815 - D.45686;
    D.45817 = (unsigned int) D.45816;
    D.45818 = D.45817 * 4;
    D.45819 = D.45683 + D.45818;
    *D.45819 = is_null_bb;
    <D.45814>:
    D.45691 = cfg->real_offset;
    is_null_bb->real_offset = D.45691;
    D.45663 = cfg->cbb;
    D.45664 = D.45663->last_ins;
    if (D.45664 != 0B) goto <D.45823>; else goto <D.45820>;
    <D.45823>:
    D.45663 = cfg->cbb;
    D.45664 = D.45663->last_ins;
    D.45824 = D.45664->opcode;
    D.45825 = D.45824 + 64981;
    D.45826 = D.45825 <= 9;
    D.45827 = D.45824 + 64874;
    D.45828 = D.45827 <= 9;
    D.45829 = D.45826 | D.45828;
    if (D.45829 != 0) goto <D.45821>; else goto <D.45830>;
    <D.45830>:
    D.45663 = cfg->cbb;
    D.45664 = D.45663->last_ins;
    D.45703 = D.45664->opcode;
    D.45704 = D.45703 + 64884;
    if (D.45704 <= 9) goto <D.45821>; else goto <D.45820>;
    <D.45821>:
    D.45663 = cfg->cbb;
    D.45664 = D.45663->last_ins;
    D.45705 = D.45664->data.op[1].many_blocks;
    D.45706 = D.45705 + 4;
    D.45707 = *D.45706;
    if (D.45707 == 0B) goto <D.45831>; else goto <D.45820>;
    <D.45831>:
    D.45663 = cfg->cbb;
    D.45664 = D.45663->last_ins;
    D.45705 = D.45664->data.op[1].many_blocks;
    D.45706 = D.45705 + 4;
    *D.45706 = is_null_bb;
    D.45663 = cfg->cbb;
    mono_link_bblock (cfg, D.45663, is_null_bb);
    goto <D.45822>;
    <D.45820>:
    D.45663 = cfg->cbb;
    D.45664 = D.45663->last_ins;
    if (D.45664 == 0B) goto <D.45832>; else goto <D.45834>;
    <D.45834>:
    D.45663 = cfg->cbb;
    D.45664 = D.45663->last_ins;
    D.45835 = D.45664->opcode;
    D.45836 = D.45835 != 446;
    D.45837 = D.45835 != 763;
    D.45838 = D.45836 & D.45837;
    if (D.45838 != 0) goto <D.45839>; else goto <D.45833>;
    <D.45839>:
    D.45663 = cfg->cbb;
    D.45664 = D.45663->last_ins;
    D.45840 = D.45664->opcode;
    D.45841 = D.45840 + 64981;
    D.45842 = D.45841 > 9;
    D.45843 = D.45840 + 64874;
    D.45844 = D.45843 > 9;
    D.45845 = D.45842 & D.45844;
    if (D.45845 != 0) goto <D.45846>; else goto <D.45833>;
    <D.45846>:
    D.45663 = cfg->cbb;
    D.45664 = D.45663->last_ins;
    D.45703 = D.45664->opcode;
    D.45704 = D.45703 + 64884;
    if (D.45704 > 9) goto <D.45832>; else goto <D.45833>;
    <D.45832>:
    D.45663 = cfg->cbb;
    mono_link_bblock (cfg, D.45663, is_null_bb);
    <D.45833>:
    <D.45822>:
    D.45663 = cfg->cbb;
    D.45663->next_bb = is_null_bb;
    cfg->cbb = is_null_bb;
    if (out_bblock != 0B) goto <D.45847>; else goto <D.45848>;
    <D.45847>:
    D.45663 = cfg->cbb;
    *out_bblock = D.45663;
    <D.45848>:
    <D.45811>:
  }
  <D.45647>:
}


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

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


reset_cast_details (struct MonoCompile * cfg)
{
  struct MonoDebugOptions * D.45851;
  int D.45852;
  struct MonoBasicBlock * D.45855;
  struct MonoInst * D.45856;
  struct MonoMemPool * D.45860;
  int D.45861;
  struct MonoInst * D.45862;
  int D.45863;
  int D.45864;
  const unsigned char * D.45865;
  int D.45866;

  D.45851 = mini_get_debug_options ();
  D.45852 = D.45851->better_cast_details;
  if (D.45852 != 0) goto <D.45853>; else goto <D.45854>;
  <D.45853>:
  {
    struct MonoInst * tls_get;

    tls_get = mono_get_jit_tls_intrinsic (cfg);
    D.45855 = cfg->cbb;
    D.45856 = D.45855->last_ins;
    if (D.45856 != 0B) goto <D.45857>; else goto <D.45858>;
    <D.45857>:
    D.45855 = cfg->cbb;
    D.45856 = D.45855->last_ins;
    D.45856->next = tls_get;
    D.45855 = cfg->cbb;
    D.45856 = D.45855->last_ins;
    tls_get->prev = D.45856;
    D.45855 = cfg->cbb;
    D.45855->last_ins = tls_get;
    goto <D.45859>;
    <D.45858>:
    D.45855 = cfg->cbb;
    D.45855 = cfg->cbb;
    D.45855->last_ins = tls_get;
    D.45856 = D.45855->last_ins;
    D.45855->code = D.45856;
    <D.45859>:
    {
      struct MonoInst * inst;

      D.45860 = cfg->mempool;
      inst = mono_mempool_alloc (D.45860, 48);
      inst->data.op[1].const_val = 0;
      D.45861 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.45861;
      inst->prev = 0B;
      D.45862 = inst->prev;
      inst->next = D.45862;
      inst->opcode = 384;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.45863 = inst->sreg3;
      inst->sreg2 = D.45863;
      D.45864 = inst->sreg2;
      inst->sreg1 = D.45864;
      D.45865 = cfg->ip;
      inst->cil_code = D.45865;
      D.45866 = tls_get->dreg;
      inst->dreg = D.45866;
      inst->data.op[0].const_val = 44;
      inst->data.op[1].const_val = 0;
      D.45855 = cfg->cbb;
      D.45856 = D.45855->last_ins;
      if (D.45856 != 0B) goto <D.45867>; else goto <D.45868>;
      <D.45867>:
      D.45855 = cfg->cbb;
      D.45856 = D.45855->last_ins;
      D.45856->next = inst;
      D.45855 = cfg->cbb;
      D.45856 = D.45855->last_ins;
      inst->prev = D.45856;
      D.45855 = cfg->cbb;
      D.45855->last_ins = inst;
      goto <D.45869>;
      <D.45868>:
      D.45855 = cfg->cbb;
      D.45855 = cfg->cbb;
      D.45855->last_ins = inst;
      D.45856 = D.45855->last_ins;
      D.45855->code = D.45856;
      <D.45869>:
    }
  }
  <D.45854>:
}


handle_isinst (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * src, int context_used)
{
  unsigned int D.45870;
  unsigned int D.45871;
  struct MonoMemPool * D.45876;
  void * D.45877;
  struct MonoInst * D.45878;
  int D.45879;
  struct MonoInst * D.45880;
  int D.45881;
  int D.45882;
  const unsigned char * D.45883;
  unsigned int D.45884;
  int D.45885;
  int D.45886;
  struct MonoBasicBlock * D.45887;
  struct MonoInst * D.45888;
  struct MonoInst * D.45892;
  unsigned int D.45893;
  unsigned int D.45894;
  unsigned int D.45895;
  int D.45896;
  unsigned int D.45897;
  unsigned int D.45898;
  int D.45899;
  unsigned int D.45900;
  unsigned int D.45901;
  int D.45902;
  int D.45903;
  struct MonoInst * D.45904;
  int D.45905;
  int D.45906;
  int D.45910;
  struct MonoInst * D.45911;
  int D.45912;
  int D.45913;
  int D.45917;
  struct MonoInst * D.45918;
  int D.45919;
  int D.45920;
  unsigned int D.45923;
  unsigned int D.45924;
  int D.45925;
  unsigned char * D.45929;
  struct MonoBasicBlock * * D.45932;
  int D.45933;
  unsigned char * D.45934;
  int D.45935;
  int D.45936;
  unsigned int D.45937;
  unsigned int D.45938;
  struct MonoBasicBlock * * D.45939;
  unsigned int D.45940;
  short unsigned int D.45945;
  short unsigned int D.45946;
  _Bool D.45947;
  short unsigned int D.45948;
  _Bool D.45949;
  _Bool D.45950;
  short unsigned int D.45952;
  short unsigned int D.45953;
  struct MonoBasicBlock * * D.45954;
  struct MonoBasicBlock * * D.45955;
  struct MonoBasicBlock * D.45956;
  short unsigned int D.45961;
  _Bool D.45962;
  _Bool D.45963;
  _Bool D.45964;
  short unsigned int D.45966;
  short unsigned int D.45967;
  _Bool D.45968;
  short unsigned int D.45969;
  _Bool D.45970;
  _Bool D.45971;
  void * D.45974;
  struct MonoBasicBlock * * D.45975;
  struct MonoBasicBlock * * D.45976;
  unsigned char D.45980;
  unsigned char D.45981;
  unsigned int D.45984;
  unsigned int D.45985;
  int D.45986;
  short unsigned int D.45993;
  short unsigned int D.45994;
  _Bool D.45995;
  short unsigned int D.45996;
  _Bool D.45997;
  _Bool D.45998;
  short unsigned int D.46004;
  _Bool D.46005;
  _Bool D.46006;
  _Bool D.46007;
  short unsigned int D.46009;
  short unsigned int D.46010;
  _Bool D.46011;
  short unsigned int D.46012;
  _Bool D.46013;
  _Bool D.46014;
  int D.46017;
  struct MonoInst * D.46018;
  int D.46019;
  int D.46020;
  unsigned int D.46024;
  unsigned int D.46025;
  _Bool D.46028;
  long int D.46029;
  long int D.46030;
  unsigned int D.46034;
  unsigned char D.46035;
  unsigned int D.46038;
  unsigned int D.46039;
  int D.46042;
  struct MonoInst * D.46043;
  int D.46044;
  int D.46045;
  int D.46049;
  struct MonoInst * D.46050;
  int D.46051;
  int D.46052;
  int D.46053;
  int D.46057;
  struct MonoInst * D.46058;
  int D.46059;
  int D.46060;
  unsigned int D.46063;
  unsigned int D.46064;
  int D.46065;
  unsigned char * D.46069;
  int D.46072;
  int D.46073;
  unsigned int D.46074;
  unsigned int D.46075;
  struct MonoBasicBlock * * D.46076;
  short unsigned int D.46081;
  short unsigned int D.46082;
  _Bool D.46083;
  short unsigned int D.46084;
  _Bool D.46085;
  _Bool D.46086;
  short unsigned int D.46092;
  _Bool D.46093;
  _Bool D.46094;
  _Bool D.46095;
  short unsigned int D.46097;
  short unsigned int D.46098;
  _Bool D.46099;
  short unsigned int D.46100;
  _Bool D.46101;
  _Bool D.46102;
  void * D.46105;
  struct MonoBasicBlock * * D.46106;
  struct MonoBasicBlock * * D.46107;
  unsigned int D.46113;
  unsigned int D.46114;
  int D.46115;
  short unsigned int D.46122;
  short unsigned int D.46123;
  _Bool D.46124;
  short unsigned int D.46125;
  _Bool D.46126;
  _Bool D.46127;
  short unsigned int D.46133;
  _Bool D.46134;
  _Bool D.46135;
  _Bool D.46136;
  short unsigned int D.46138;
  short unsigned int D.46139;
  _Bool D.46140;
  short unsigned int D.46141;
  _Bool D.46142;
  _Bool D.46143;
  int D.46146;
  struct MonoInst * D.46147;
  int D.46148;
  int D.46149;
  int D.46153;
  struct MonoInst * D.46154;
  int D.46155;
  int D.46156;
  struct MonoClass * D.46160;
  struct MonoClass * D.46161;
  unsigned int D.46164;
  int D.46165;
  struct MonoInst * D.46166;
  int D.46167;
  int D.46168;
  struct MonoClass * D.46172;
  struct MonoClass * D.46173;
  int D.46174;
  struct MonoInst * D.46175;
  int D.46176;
  int D.46177;
  unsigned int D.46180;
  unsigned int D.46181;
  int D.46182;
  unsigned char * D.46186;
  int D.46189;
  int D.46190;
  unsigned int D.46191;
  unsigned int D.46192;
  struct MonoBasicBlock * * D.46193;
  short unsigned int D.46198;
  short unsigned int D.46199;
  _Bool D.46200;
  short unsigned int D.46201;
  _Bool D.46202;
  _Bool D.46203;
  short unsigned int D.46209;
  _Bool D.46210;
  _Bool D.46211;
  _Bool D.46212;
  short unsigned int D.46214;
  short unsigned int D.46215;
  _Bool D.46216;
  short unsigned int D.46217;
  _Bool D.46218;
  _Bool D.46219;
  void * D.46222;
  struct MonoBasicBlock * * D.46223;
  struct MonoBasicBlock * * D.46224;
  unsigned int D.46230;
  unsigned int D.46231;
  int D.46232;
  short unsigned int D.46239;
  short unsigned int D.46240;
  _Bool D.46241;
  short unsigned int D.46242;
  _Bool D.46243;
  _Bool D.46244;
  short unsigned int D.46250;
  _Bool D.46251;
  _Bool D.46252;
  _Bool D.46253;
  short unsigned int D.46255;
  short unsigned int D.46256;
  _Bool D.46257;
  short unsigned int D.46258;
  _Bool D.46259;
  _Bool D.46260;
  int D.46266;
  struct MonoInst * D.46267;
  int D.46268;
  int D.46269;
  unsigned int D.46272;
  unsigned int D.46273;
  int D.46274;
  unsigned char * D.46278;
  int D.46281;
  int D.46282;
  unsigned int D.46283;
  unsigned int D.46284;
  struct MonoBasicBlock * * D.46285;
  short unsigned int D.46290;
  short unsigned int D.46291;
  _Bool D.46292;
  short unsigned int D.46293;
  _Bool D.46294;
  _Bool D.46295;
  short unsigned int D.46301;
  _Bool D.46302;
  _Bool D.46303;
  _Bool D.46304;
  short unsigned int D.46306;
  short unsigned int D.46307;
  _Bool D.46308;
  short unsigned int D.46309;
  _Bool D.46310;
  _Bool D.46311;
  void * D.46314;
  struct MonoBasicBlock * * D.46315;
  struct MonoBasicBlock * * D.46316;
  unsigned int D.46322;
  unsigned int D.46323;
  int D.46324;
  short unsigned int D.46331;
  short unsigned int D.46332;
  _Bool D.46333;
  short unsigned int D.46334;
  _Bool D.46335;
  _Bool D.46336;
  short unsigned int D.46342;
  _Bool D.46343;
  _Bool D.46344;
  _Bool D.46345;
  short unsigned int D.46347;
  short unsigned int D.46348;
  _Bool D.46349;
  short unsigned int D.46350;
  _Bool D.46351;
  _Bool D.46352;
  int D.46358;
  struct MonoInst * D.46359;
  int D.46360;
  int D.46361;
  unsigned int D.46364;
  unsigned int D.46365;
  int D.46366;
  unsigned char * D.46370;
  int D.46373;
  int D.46374;
  unsigned int D.46375;
  unsigned int D.46376;
  struct MonoBasicBlock * * D.46377;
  short unsigned int D.46382;
  short unsigned int D.46383;
  _Bool D.46384;
  short unsigned int D.46385;
  _Bool D.46386;
  _Bool D.46387;
  short unsigned int D.46393;
  _Bool D.46394;
  _Bool D.46395;
  _Bool D.46396;
  short unsigned int D.46398;
  short unsigned int D.46399;
  _Bool D.46400;
  short unsigned int D.46401;
  _Bool D.46402;
  _Bool D.46403;
  void * D.46406;
  struct MonoBasicBlock * * D.46407;
  struct MonoBasicBlock * * D.46408;
  unsigned int D.46414;
  unsigned int D.46415;
  int D.46416;
  short unsigned int D.46423;
  short unsigned int D.46424;
  _Bool D.46425;
  short unsigned int D.46426;
  _Bool D.46427;
  _Bool D.46428;
  short unsigned int D.46434;
  _Bool D.46435;
  _Bool D.46436;
  _Bool D.46437;
  short unsigned int D.46439;
  short unsigned int D.46440;
  _Bool D.46441;
  short unsigned int D.46442;
  _Bool D.46443;
  _Bool D.46444;
  unsigned int D.46448;
  unsigned int D.46449;
  unsigned char D.46455;
  unsigned int D.46458;
  int D.46459;
  struct MonoInst * D.46460;
  int D.46461;
  int D.46462;
  int D.46466;
  struct MonoInst * D.46467;
  int D.46468;
  int D.46469;
  int D.46473;
  struct MonoInst * D.46474;
  int D.46475;
  int D.46476;
  unsigned int D.46479;
  unsigned int D.46480;
  int D.46481;
  unsigned char * D.46485;
  int D.46488;
  int D.46489;
  unsigned int D.46490;
  unsigned int D.46491;
  struct MonoBasicBlock * * D.46492;
  short unsigned int D.46497;
  short unsigned int D.46498;
  _Bool D.46499;
  short unsigned int D.46500;
  _Bool D.46501;
  _Bool D.46502;
  short unsigned int D.46508;
  _Bool D.46509;
  _Bool D.46510;
  _Bool D.46511;
  short unsigned int D.46513;
  short unsigned int D.46514;
  _Bool D.46515;
  short unsigned int D.46516;
  _Bool D.46517;
  _Bool D.46518;
  void * D.46521;
  struct MonoBasicBlock * * D.46522;
  struct MonoBasicBlock * * D.46523;
  unsigned int D.46529;
  unsigned int D.46530;
  int D.46531;
  short unsigned int D.46538;
  short unsigned int D.46539;
  _Bool D.46540;
  short unsigned int D.46541;
  _Bool D.46542;
  _Bool D.46543;
  short unsigned int D.46549;
  _Bool D.46550;
  _Bool D.46551;
  _Bool D.46552;
  short unsigned int D.46554;
  short unsigned int D.46555;
  _Bool D.46556;
  short unsigned int D.46557;
  _Bool D.46558;
  _Bool D.46559;
  int D.46563;
  int D.46568;
  struct MonoInst * D.46569;
  int D.46570;
  int D.46571;
  unsigned char D.46578;
  unsigned int D.46580;
  unsigned int D.46581;
  unsigned int D.46583;
  struct MonoDomain * D.46589;
  int D.46592;
  struct MonoInst * D.46593;
  int D.46594;
  int D.46595;
  int vt.482;
  int D.46601;
  struct MonoInst * D.46602;
  int D.46603;
  int D.46604;
  int D.46608;
  struct MonoInst * D.46609;
  int D.46610;
  int D.46611;
  int klass.483;
  int D.46616;
  struct MonoInst * D.46617;
  int D.46618;
  int D.46619;
  unsigned int D.46622;
  unsigned int D.46623;
  int D.46624;
  unsigned char * D.46628;
  int D.46631;
  int D.46632;
  unsigned int D.46633;
  unsigned int D.46634;
  struct MonoBasicBlock * * D.46635;
  short unsigned int D.46640;
  short unsigned int D.46641;
  _Bool D.46642;
  short unsigned int D.46643;
  _Bool D.46644;
  _Bool D.46645;
  short unsigned int D.46651;
  _Bool D.46652;
  _Bool D.46653;
  _Bool D.46654;
  short unsigned int D.46656;
  short unsigned int D.46657;
  _Bool D.46658;
  short unsigned int D.46659;
  _Bool D.46660;
  _Bool D.46661;
  void * D.46664;
  struct MonoBasicBlock * * D.46665;
  struct MonoBasicBlock * * D.46666;
  unsigned int D.46672;
  unsigned int D.46673;
  int D.46674;
  short unsigned int D.46681;
  short unsigned int D.46682;
  _Bool D.46683;
  short unsigned int D.46684;
  _Bool D.46685;
  _Bool D.46686;
  short unsigned int D.46692;
  _Bool D.46693;
  _Bool D.46694;
  _Bool D.46695;
  short unsigned int D.46697;
  short unsigned int D.46698;
  _Bool D.46699;
  short unsigned int D.46700;
  _Bool D.46701;
  _Bool D.46702;
  int D.46705;
  struct MonoInst * D.46706;
  int D.46707;
  int D.46708;
  unsigned int D.46711;
  unsigned int D.46712;
  int D.46713;
  unsigned char * D.46717;
  int D.46720;
  int D.46721;
  unsigned int D.46722;
  unsigned int D.46723;
  struct MonoBasicBlock * * D.46724;
  short unsigned int D.46729;
  short unsigned int D.46730;
  _Bool D.46731;
  short unsigned int D.46732;
  _Bool D.46733;
  _Bool D.46734;
  short unsigned int D.46740;
  _Bool D.46741;
  _Bool D.46742;
  _Bool D.46743;
  short unsigned int D.46745;
  short unsigned int D.46746;
  _Bool D.46747;
  short unsigned int D.46748;
  _Bool D.46749;
  _Bool D.46750;
  void * D.46753;
  struct MonoBasicBlock * * D.46754;
  struct MonoBasicBlock * * D.46755;
  unsigned int D.46761;
  unsigned int D.46762;
  int D.46763;
  short unsigned int D.46770;
  short unsigned int D.46771;
  _Bool D.46772;
  short unsigned int D.46773;
  _Bool D.46774;
  _Bool D.46775;
  short unsigned int D.46781;
  _Bool D.46782;
  _Bool D.46783;
  _Bool D.46784;
  short unsigned int D.46786;
  short unsigned int D.46787;
  _Bool D.46788;
  short unsigned int D.46789;
  _Bool D.46790;
  _Bool D.46791;
  int D.46794;
  struct MonoInst * D.46795;
  int D.46796;
  int D.46797;
  unsigned char * D.46801;
  int D.46804;
  int D.46805;
  unsigned int D.46806;
  unsigned int D.46807;
  struct MonoBasicBlock * * D.46808;
  short unsigned int D.46813;
  short unsigned int D.46814;
  _Bool D.46815;
  short unsigned int D.46816;
  _Bool D.46817;
  _Bool D.46818;
  short unsigned int D.46824;
  _Bool D.46825;
  _Bool D.46826;
  _Bool D.46827;
  short unsigned int D.46829;
  short unsigned int D.46830;
  _Bool D.46831;
  short unsigned int D.46832;
  _Bool D.46833;
  _Bool D.46834;
  int D.46836;
  struct MonoInst * D.46837;
  int D.46838;
  int D.46839;
  int D.46843;
  struct MonoInst * D.46844;
  int D.46845;
  int D.46846;
  unsigned int D.46849;
  unsigned int D.46850;
  int D.46851;
  unsigned char * D.46855;
  int D.46858;
  int D.46859;
  unsigned int D.46860;
  unsigned int D.46861;
  struct MonoBasicBlock * * D.46862;
  short unsigned int D.46867;
  short unsigned int D.46868;
  _Bool D.46869;
  short unsigned int D.46870;
  _Bool D.46871;
  _Bool D.46872;
  short unsigned int D.46878;
  _Bool D.46879;
  _Bool D.46880;
  _Bool D.46881;
  short unsigned int D.46883;
  short unsigned int D.46884;
  _Bool D.46885;
  short unsigned int D.46886;
  _Bool D.46887;
  _Bool D.46888;
  void * D.46891;
  struct MonoBasicBlock * * D.46892;
  struct MonoBasicBlock * * D.46893;
  unsigned int D.46899;
  unsigned int D.46900;
  int D.46901;
  short unsigned int D.46908;
  short unsigned int D.46909;
  _Bool D.46910;
  short unsigned int D.46911;
  _Bool D.46912;
  _Bool D.46913;
  short unsigned int D.46919;
  _Bool D.46920;
  _Bool D.46921;
  _Bool D.46922;
  short unsigned int D.46924;
  short unsigned int D.46925;
  _Bool D.46926;
  short unsigned int D.46927;
  _Bool D.46928;
  _Bool D.46929;
  unsigned char * D.46932;
  int D.46935;
  int D.46936;
  unsigned int D.46937;
  unsigned int D.46938;
  struct MonoBasicBlock * * D.46939;
  short unsigned int D.46944;
  short unsigned int D.46945;
  _Bool D.46946;
  short unsigned int D.46947;
  _Bool D.46948;
  _Bool D.46949;
  short unsigned int D.46955;
  _Bool D.46956;
  _Bool D.46957;
  _Bool D.46958;
  short unsigned int D.46960;
  short unsigned int D.46961;
  _Bool D.46962;
  short unsigned int D.46963;
  _Bool D.46964;
  _Bool D.46965;
  unsigned char * D.46967;
  int D.46970;
  int D.46971;
  unsigned int D.46972;
  unsigned int D.46973;
  struct MonoBasicBlock * * D.46974;
  short unsigned int D.46979;
  short unsigned int D.46980;
  _Bool D.46981;
  short unsigned int D.46982;
  _Bool D.46983;
  _Bool D.46984;
  short unsigned int D.46990;
  _Bool D.46991;
  _Bool D.46992;
  _Bool D.46993;
  short unsigned int D.46995;
  short unsigned int D.46996;
  _Bool D.46997;
  short unsigned int D.46998;
  _Bool D.46999;
  _Bool D.47000;
  struct MonoInst * ins;
  struct MonoBasicBlock * is_null_bb;
  struct MonoBasicBlock * false_bb;
  struct MonoBasicBlock * end_bb;
  int obj_reg;
  int vtable_reg;
  int res_reg;
  struct MonoInst * klass_inst;

  obj_reg = src->dreg;
  D.45870 = alloc_preg (cfg);
  vtable_reg = (int) D.45870;
  D.45871 = alloc_ireg_ref (cfg);
  res_reg = (int) D.45871;
  klass_inst = 0B;
  if (context_used != 0) goto <D.45872>; else goto <D.45873>;
  <D.45872>:
  {
    struct MonoInst * args[3];

    try
      {
        mini_class_has_reference_variant_generic_argument (cfg, klass, context_used);
        if (1 != 0) goto <D.45874>; else goto <D.45875>;
        <D.45874>:
        {
          struct MonoMethod * mono_isinst;
          struct MonoInst * cache_ins;

          mono_isinst = mono_marshal_get_isinst_with_cache ();
          cache_ins = emit_get_rgctx_klass (cfg, context_used, klass, 12);
          args[0] = src;
          D.45876 = cfg->mempool;
          D.45877 = mono_mempool_alloc (D.45876, 48);
          args[1] = D.45877;
          D.45878 = args[1];
          D.45878 = args[1];
          D.45878->data.op[1].const_val = 0;
          D.45879 = D.45878->data.op[1].const_val;
          D.45878->data.op[0].const_val = D.45879;
          D.45878 = args[1];
          D.45878 = args[1];
          D.45878->prev = 0B;
          D.45880 = D.45878->prev;
          D.45878->next = D.45880;
          D.45878 = args[1];
          D.45878->opcode = 391;
          D.45878 = args[1];
          D.45878->flags = 0;
          D.45878 = args[1];
          D.45878->type = 0;
          D.45878 = args[1];
          D.45878->dreg = -1;
          D.45878 = args[1];
          D.45878 = args[1];
          D.45878 = args[1];
          D.45878->sreg3 = -1;
          D.45881 = D.45878->sreg3;
          D.45878->sreg2 = D.45881;
          D.45882 = D.45878->sreg2;
          D.45878->sreg1 = D.45882;
          D.45878 = args[1];
          D.45883 = cfg->ip;
          D.45878->cil_code = D.45883;
          D.45878 = args[1];
          D.45884 = alloc_preg (cfg);
          D.45885 = (int) D.45884;
          D.45878->dreg = D.45885;
          D.45878 = args[1];
          D.45886 = cache_ins->dreg;
          D.45878->sreg1 = D.45886;
          D.45878 = args[1];
          D.45878->data.op[0].const_val = 4;
          D.45878 = args[1];
          D.45878->type = 1;
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          if (D.45888 != 0B) goto <D.45889>; else goto <D.45890>;
          <D.45889>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.45878 = args[1];
          D.45888->next = D.45878;
          D.45878 = args[1];
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.45878->prev = D.45888;
          D.45887 = cfg->cbb;
          D.45878 = args[1];
          D.45887->last_ins = D.45878;
          goto <D.45891>;
          <D.45890>:
          D.45887 = cfg->cbb;
          D.45887 = cfg->cbb;
          D.45878 = args[1];
          D.45887->last_ins = D.45878;
          D.45888 = D.45887->last_ins;
          D.45887->code = D.45888;
          <D.45891>:
          args[2] = cache_ins;
          D.45892 = mono_emit_method_call (cfg, mono_isinst, &args, 0B);
          return D.45892;
        }
        <D.45875>:
        klass_inst = emit_get_rgctx_klass (cfg, context_used, klass, 1);
      }
    finally
      {
        args = {CLOBBER};
      }
  }
  <D.45873>:
  D.45876 = cfg->mempool;
  is_null_bb = mono_mempool_alloc0 (D.45876, 172);
  D.45893 = cfg->num_bblocks;
  D.45894 = D.45893;
  D.45895 = D.45894 + 1;
  cfg->num_bblocks = D.45895;
  D.45896 = (int) D.45894;
  is_null_bb->block_num = D.45896;
  D.45876 = cfg->mempool;
  false_bb = mono_mempool_alloc0 (D.45876, 172);
  D.45893 = cfg->num_bblocks;
  D.45897 = D.45893;
  D.45898 = D.45897 + 1;
  cfg->num_bblocks = D.45898;
  D.45899 = (int) D.45897;
  false_bb->block_num = D.45899;
  D.45876 = cfg->mempool;
  end_bb = mono_mempool_alloc0 (D.45876, 172);
  D.45893 = cfg->num_bblocks;
  D.45900 = D.45893;
  D.45901 = D.45900 + 1;
  cfg->num_bblocks = D.45901;
  D.45902 = (int) D.45900;
  end_bb->block_num = D.45902;
  D.45876 = cfg->mempool;
  ins = mono_mempool_alloc (D.45876, 48);
  ins->data.op[1].const_val = 0;
  D.45903 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.45903;
  ins->prev = 0B;
  D.45904 = ins->prev;
  ins->next = D.45904;
  ins->opcode = 428;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.45905 = ins->sreg3;
  ins->sreg2 = D.45905;
  D.45906 = ins->sreg2;
  ins->sreg1 = D.45906;
  D.45883 = cfg->ip;
  ins->cil_code = D.45883;
  ins->dreg = res_reg;
  ins->sreg1 = obj_reg;
  D.45887 = cfg->cbb;
  D.45888 = D.45887->last_ins;
  if (D.45888 != 0B) goto <D.45907>; else goto <D.45908>;
  <D.45907>:
  D.45887 = cfg->cbb;
  D.45888 = D.45887->last_ins;
  D.45888->next = ins;
  D.45887 = cfg->cbb;
  D.45888 = D.45887->last_ins;
  ins->prev = D.45888;
  D.45887 = cfg->cbb;
  D.45887->last_ins = ins;
  goto <D.45909>;
  <D.45908>:
  D.45887 = cfg->cbb;
  D.45887 = cfg->cbb;
  D.45887->last_ins = ins;
  D.45888 = D.45887->last_ins;
  D.45887->code = D.45888;
  <D.45909>:
  ins->type = 6;
  ins->klass = klass;
  {
    struct MonoInst * inst;

    D.45876 = cfg->mempool;
    inst = mono_mempool_alloc (D.45876, 48);
    inst->data.op[1].const_val = 0;
    D.45910 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.45910;
    inst->prev = 0B;
    D.45911 = inst->prev;
    inst->next = D.45911;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.45912 = inst->sreg3;
    inst->sreg2 = D.45912;
    D.45913 = inst->sreg2;
    inst->sreg1 = D.45913;
    D.45883 = cfg->ip;
    inst->cil_code = D.45883;
    inst->dreg = -1;
    inst->sreg1 = obj_reg;
    inst->data.op[1].const_val = 0;
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    if (D.45888 != 0B) goto <D.45914>; else goto <D.45915>;
    <D.45914>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    D.45888->next = inst;
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    inst->prev = D.45888;
    D.45887 = cfg->cbb;
    D.45887->last_ins = inst;
    goto <D.45916>;
    <D.45915>:
    D.45887 = cfg->cbb;
    D.45887 = cfg->cbb;
    D.45887->last_ins = inst;
    D.45888 = D.45887->last_ins;
    D.45887->code = D.45888;
    <D.45916>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.45876 = cfg->mempool;
    ins = mono_mempool_alloc (D.45876, 48);
    ins->data.op[1].const_val = 0;
    D.45917 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.45917;
    ins->prev = 0B;
    D.45918 = ins->prev;
    ins->next = D.45918;
    ins->opcode = 652;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.45919 = ins->sreg3;
    ins->sreg2 = D.45919;
    D.45920 = ins->sreg2;
    ins->sreg1 = D.45920;
    D.45883 = cfg->ip;
    ins->cil_code = D.45883;
    if (0 != 0) goto <D.45921>; else goto <D.45922>;
    <D.45921>:
    D.45876 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.45876, 172);
    D.45893 = cfg->num_bblocks;
    D.45923 = D.45893;
    D.45924 = D.45923 + 1;
    cfg->num_bblocks = D.45924;
    D.45925 = (int) D.45923;
    falsebb->block_num = D.45925;
    ins->data.op[0].target_block = is_null_bb;
    D.45887 = cfg->cbb;
    mono_link_bblock (cfg, D.45887, is_null_bb);
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    if (D.45888 != 0B) goto <D.45926>; else goto <D.45927>;
    <D.45926>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    D.45888->next = ins;
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    ins->prev = D.45888;
    D.45887 = cfg->cbb;
    D.45887->last_ins = ins;
    goto <D.45928>;
    <D.45927>:
    D.45887 = cfg->cbb;
    D.45887 = cfg->cbb;
    D.45887->last_ins = ins;
    D.45888 = D.45887->last_ins;
    D.45887->code = D.45888;
    <D.45928>:
    D.45929 = falsebb->cil_code;
    if (D.45929 != 0B) goto <D.45930>; else goto <D.45931>;
    <D.45930>:
    D.45932 = cfg->cil_offset_to_bb;
    D.45929 = falsebb->cil_code;
    D.45933 = (int) D.45929;
    D.45934 = cfg->cil_start;
    D.45935 = (int) D.45934;
    D.45936 = D.45933 - D.45935;
    D.45937 = (unsigned int) D.45936;
    D.45938 = D.45937 * 4;
    D.45939 = D.45932 + D.45938;
    *D.45939 = falsebb;
    <D.45931>:
    D.45940 = cfg->real_offset;
    falsebb->real_offset = D.45940;
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    if (D.45888 != 0B) goto <D.45944>; else goto <D.45941>;
    <D.45944>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    D.45945 = D.45888->opcode;
    D.45946 = D.45945 + 64981;
    D.45947 = D.45946 <= 9;
    D.45948 = D.45945 + 64874;
    D.45949 = D.45948 <= 9;
    D.45950 = D.45947 | D.45949;
    if (D.45950 != 0) goto <D.45942>; else goto <D.45951>;
    <D.45951>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    D.45952 = D.45888->opcode;
    D.45953 = D.45952 + 64884;
    if (D.45953 <= 9) goto <D.45942>; else goto <D.45941>;
    <D.45942>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    D.45954 = D.45888->data.op[1].many_blocks;
    D.45955 = D.45954 + 4;
    D.45956 = *D.45955;
    if (D.45956 == 0B) goto <D.45957>; else goto <D.45941>;
    <D.45957>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    D.45954 = D.45888->data.op[1].many_blocks;
    D.45955 = D.45954 + 4;
    *D.45955 = falsebb;
    D.45887 = cfg->cbb;
    mono_link_bblock (cfg, D.45887, falsebb);
    goto <D.45943>;
    <D.45941>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    if (D.45888 == 0B) goto <D.45958>; else goto <D.45960>;
    <D.45960>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    D.45961 = D.45888->opcode;
    D.45962 = D.45961 != 446;
    D.45963 = D.45961 != 763;
    D.45964 = D.45962 & D.45963;
    if (D.45964 != 0) goto <D.45965>; else goto <D.45959>;
    <D.45965>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    D.45966 = D.45888->opcode;
    D.45967 = D.45966 + 64981;
    D.45968 = D.45967 > 9;
    D.45969 = D.45966 + 64874;
    D.45970 = D.45969 > 9;
    D.45971 = D.45968 & D.45970;
    if (D.45971 != 0) goto <D.45972>; else goto <D.45959>;
    <D.45972>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    D.45952 = D.45888->opcode;
    D.45953 = D.45952 + 64884;
    if (D.45953 > 9) goto <D.45958>; else goto <D.45959>;
    <D.45958>:
    D.45887 = cfg->cbb;
    mono_link_bblock (cfg, D.45887, falsebb);
    <D.45959>:
    <D.45943>:
    D.45887 = cfg->cbb;
    D.45887->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.45973>;
    <D.45922>:
    D.45876 = cfg->mempool;
    D.45974 = mono_mempool_alloc (D.45876, 8);
    ins->data.op[1].many_blocks = D.45974;
    D.45975 = ins->data.op[1].many_blocks;
    *D.45975 = is_null_bb;
    D.45975 = ins->data.op[1].many_blocks;
    D.45976 = D.45975 + 4;
    *D.45976 = 0B;
    D.45887 = cfg->cbb;
    mono_link_bblock (cfg, D.45887, is_null_bb);
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    if (D.45888 != 0B) goto <D.45977>; else goto <D.45978>;
    <D.45977>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    D.45888->next = ins;
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    ins->prev = D.45888;
    D.45887 = cfg->cbb;
    D.45887->last_ins = ins;
    goto <D.45979>;
    <D.45978>:
    D.45887 = cfg->cbb;
    D.45887 = cfg->cbb;
    D.45887->last_ins = ins;
    D.45888 = D.45887->last_ins;
    D.45887->code = D.45888;
    <D.45979>:
    D.45980 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.45981 = D.45980 & 8;
    if (D.45981 == 0) goto <D.45982>; else goto <D.45983>;
    <D.45982>:
    D.45876 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.45876, 172);
    D.45893 = cfg->num_bblocks;
    D.45984 = D.45893;
    D.45985 = D.45984 + 1;
    cfg->num_bblocks = D.45985;
    D.45986 = (int) D.45984;
    falsebb->block_num = D.45986;
    D.45975 = ins->data.op[1].many_blocks;
    D.45976 = D.45975 + 4;
    *D.45976 = falsebb;
    D.45887 = cfg->cbb;
    mono_link_bblock (cfg, D.45887, falsebb);
    D.45929 = falsebb->cil_code;
    if (D.45929 != 0B) goto <D.45987>; else goto <D.45988>;
    <D.45987>:
    D.45932 = cfg->cil_offset_to_bb;
    D.45929 = falsebb->cil_code;
    D.45933 = (int) D.45929;
    D.45934 = cfg->cil_start;
    D.45935 = (int) D.45934;
    D.45936 = D.45933 - D.45935;
    D.45937 = (unsigned int) D.45936;
    D.45938 = D.45937 * 4;
    D.45939 = D.45932 + D.45938;
    *D.45939 = falsebb;
    <D.45988>:
    D.45940 = cfg->real_offset;
    falsebb->real_offset = D.45940;
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    if (D.45888 != 0B) goto <D.45992>; else goto <D.45989>;
    <D.45992>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    D.45993 = D.45888->opcode;
    D.45994 = D.45993 + 64981;
    D.45995 = D.45994 <= 9;
    D.45996 = D.45993 + 64874;
    D.45997 = D.45996 <= 9;
    D.45998 = D.45995 | D.45997;
    if (D.45998 != 0) goto <D.45990>; else goto <D.45999>;
    <D.45999>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    D.45952 = D.45888->opcode;
    D.45953 = D.45952 + 64884;
    if (D.45953 <= 9) goto <D.45990>; else goto <D.45989>;
    <D.45990>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    D.45954 = D.45888->data.op[1].many_blocks;
    D.45955 = D.45954 + 4;
    D.45956 = *D.45955;
    if (D.45956 == 0B) goto <D.46000>; else goto <D.45989>;
    <D.46000>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    D.45954 = D.45888->data.op[1].many_blocks;
    D.45955 = D.45954 + 4;
    *D.45955 = falsebb;
    D.45887 = cfg->cbb;
    mono_link_bblock (cfg, D.45887, falsebb);
    goto <D.45991>;
    <D.45989>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    if (D.45888 == 0B) goto <D.46001>; else goto <D.46003>;
    <D.46003>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    D.46004 = D.45888->opcode;
    D.46005 = D.46004 != 446;
    D.46006 = D.46004 != 763;
    D.46007 = D.46005 & D.46006;
    if (D.46007 != 0) goto <D.46008>; else goto <D.46002>;
    <D.46008>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    D.46009 = D.45888->opcode;
    D.46010 = D.46009 + 64981;
    D.46011 = D.46010 > 9;
    D.46012 = D.46009 + 64874;
    D.46013 = D.46012 > 9;
    D.46014 = D.46011 & D.46013;
    if (D.46014 != 0) goto <D.46015>; else goto <D.46002>;
    <D.46015>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    D.45952 = D.45888->opcode;
    D.45953 = D.45952 + 64884;
    if (D.45953 > 9) goto <D.46001>; else goto <D.46002>;
    <D.46001>:
    D.45887 = cfg->cbb;
    mono_link_bblock (cfg, D.45887, falsebb);
    <D.46002>:
    <D.45991>:
    D.45887 = cfg->cbb;
    D.45887->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.46016>;
    <D.45983>:
    D.45887 = cfg->cbb;
    D.45887->extended = 1;
    <D.46016>:
    <D.45973>:
  }
  {
    struct MonoInst * inst;

    D.45876 = cfg->mempool;
    inst = mono_mempool_alloc (D.45876, 48);
    inst->data.op[1].const_val = 0;
    D.46017 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.46017;
    inst->prev = 0B;
    D.46018 = inst->prev;
    inst->next = D.46018;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.46019 = inst->sreg3;
    inst->sreg2 = D.46019;
    D.46020 = inst->sreg2;
    inst->sreg1 = D.46020;
    D.45883 = cfg->ip;
    inst->cil_code = D.45883;
    inst->dreg = vtable_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 0;
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    if (D.45888 != 0B) goto <D.46021>; else goto <D.46022>;
    <D.46021>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    D.45888->next = inst;
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    inst->prev = D.45888;
    D.45887 = cfg->cbb;
    D.45887->last_ins = inst;
    goto <D.46023>;
    <D.46022>:
    D.45887 = cfg->cbb;
    D.45887 = cfg->cbb;
    D.45887->last_ins = inst;
    D.45888 = D.45887->last_ins;
    D.45887->code = D.45888;
    <D.46023>:
  }
  D.46024 = klass->flags;
  D.46025 = D.46024 & 32;
  if (D.46025 != 0) goto <D.46026>; else goto <D.46027>;
  <D.46026>:
  D.46028 = context_used != 0;
  D.46029 = (long int) D.46028;
  D.46030 = __builtin_expect (D.46029, 0);
  if (D.46030 != 0) goto <D.46031>; else goto <D.46032>;
  <D.46031>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4086, "!context_used");
  <D.46032>:
  mini_emit_iface_cast (cfg, vtable_reg, klass, false_bb, is_null_bb);
  goto <D.46033>;
  <D.46027>:
  {
    int klass_reg;

    D.46034 = alloc_preg (cfg);
    klass_reg = (int) D.46034;
    D.46035 = klass->rank;
    if (D.46035 != 0) goto <D.46036>; else goto <D.46037>;
    <D.46036>:
    {
      int rank_reg;
      int eclass_reg;

      D.46038 = alloc_preg (cfg);
      rank_reg = (int) D.46038;
      D.46039 = alloc_preg (cfg);
      eclass_reg = (int) D.46039;
      D.46028 = context_used != 0;
      D.46029 = (long int) D.46028;
      D.46030 = __builtin_expect (D.46029, 0);
      if (D.46030 != 0) goto <D.46040>; else goto <D.46041>;
      <D.46040>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4096, "!context_used");
      <D.46041>:
      {
        struct MonoInst * inst;

        D.45876 = cfg->mempool;
        inst = mono_mempool_alloc (D.45876, 48);
        inst->data.op[1].const_val = 0;
        D.46042 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.46042;
        inst->prev = 0B;
        D.46043 = inst->prev;
        inst->next = D.46043;
        inst->opcode = 393;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.46044 = inst->sreg3;
        inst->sreg2 = D.46044;
        D.46045 = inst->sreg2;
        inst->sreg1 = D.46045;
        D.45883 = cfg->ip;
        inst->cil_code = D.45883;
        inst->dreg = rank_reg;
        inst->sreg1 = vtable_reg;
        inst->data.op[0].const_val = 22;
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        if (D.45888 != 0B) goto <D.46046>; else goto <D.46047>;
        <D.46046>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.45888->next = inst;
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        inst->prev = D.45888;
        D.45887 = cfg->cbb;
        D.45887->last_ins = inst;
        goto <D.46048>;
        <D.46047>:
        D.45887 = cfg->cbb;
        D.45887 = cfg->cbb;
        D.45887->last_ins = inst;
        D.45888 = D.45887->last_ins;
        D.45887->code = D.45888;
        <D.46048>:
      }
      {
        struct MonoInst * inst;

        D.45876 = cfg->mempool;
        inst = mono_mempool_alloc (D.45876, 48);
        inst->data.op[1].const_val = 0;
        D.46049 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.46049;
        inst->prev = 0B;
        D.46050 = inst->prev;
        inst->next = D.46050;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.46051 = inst->sreg3;
        inst->sreg2 = D.46051;
        D.46052 = inst->sreg2;
        inst->sreg1 = D.46052;
        D.45883 = cfg->ip;
        inst->cil_code = D.45883;
        inst->dreg = -1;
        inst->sreg1 = rank_reg;
        D.46035 = klass->rank;
        D.46053 = (int) D.46035;
        inst->data.op[1].const_val = D.46053;
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        if (D.45888 != 0B) goto <D.46054>; else goto <D.46055>;
        <D.46054>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.45888->next = inst;
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        inst->prev = D.45888;
        D.45887 = cfg->cbb;
        D.45887->last_ins = inst;
        goto <D.46056>;
        <D.46055>:
        D.45887 = cfg->cbb;
        D.45887 = cfg->cbb;
        D.45887->last_ins = inst;
        D.45888 = D.45887->last_ins;
        D.45887->code = D.45888;
        <D.46056>:
      }
      {
        struct MonoInst * ins;
        struct MonoBasicBlock * falsebb;

        D.45876 = cfg->mempool;
        ins = mono_mempool_alloc (D.45876, 48);
        ins->data.op[1].const_val = 0;
        D.46057 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.46057;
        ins->prev = 0B;
        D.46058 = ins->prev;
        ins->next = D.46058;
        ins->opcode = 657;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.46059 = ins->sreg3;
        ins->sreg2 = D.46059;
        D.46060 = ins->sreg2;
        ins->sreg1 = D.46060;
        D.45883 = cfg->ip;
        ins->cil_code = D.45883;
        if (0 != 0) goto <D.46061>; else goto <D.46062>;
        <D.46061>:
        D.45876 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.45876, 172);
        D.45893 = cfg->num_bblocks;
        D.46063 = D.45893;
        D.46064 = D.46063 + 1;
        cfg->num_bblocks = D.46064;
        D.46065 = (int) D.46063;
        falsebb->block_num = D.46065;
        ins->data.op[0].target_block = false_bb;
        D.45887 = cfg->cbb;
        mono_link_bblock (cfg, D.45887, false_bb);
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        if (D.45888 != 0B) goto <D.46066>; else goto <D.46067>;
        <D.46066>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.45888->next = ins;
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        ins->prev = D.45888;
        D.45887 = cfg->cbb;
        D.45887->last_ins = ins;
        goto <D.46068>;
        <D.46067>:
        D.45887 = cfg->cbb;
        D.45887 = cfg->cbb;
        D.45887->last_ins = ins;
        D.45888 = D.45887->last_ins;
        D.45887->code = D.45888;
        <D.46068>:
        D.46069 = falsebb->cil_code;
        if (D.46069 != 0B) goto <D.46070>; else goto <D.46071>;
        <D.46070>:
        D.45932 = cfg->cil_offset_to_bb;
        D.46069 = falsebb->cil_code;
        D.46072 = (int) D.46069;
        D.45934 = cfg->cil_start;
        D.45935 = (int) D.45934;
        D.46073 = D.46072 - D.45935;
        D.46074 = (unsigned int) D.46073;
        D.46075 = D.46074 * 4;
        D.46076 = D.45932 + D.46075;
        *D.46076 = falsebb;
        <D.46071>:
        D.45940 = cfg->real_offset;
        falsebb->real_offset = D.45940;
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        if (D.45888 != 0B) goto <D.46080>; else goto <D.46077>;
        <D.46080>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.46081 = D.45888->opcode;
        D.46082 = D.46081 + 64981;
        D.46083 = D.46082 <= 9;
        D.46084 = D.46081 + 64874;
        D.46085 = D.46084 <= 9;
        D.46086 = D.46083 | D.46085;
        if (D.46086 != 0) goto <D.46078>; else goto <D.46087>;
        <D.46087>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.45952 = D.45888->opcode;
        D.45953 = D.45952 + 64884;
        if (D.45953 <= 9) goto <D.46078>; else goto <D.46077>;
        <D.46078>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.45954 = D.45888->data.op[1].many_blocks;
        D.45955 = D.45954 + 4;
        D.45956 = *D.45955;
        if (D.45956 == 0B) goto <D.46088>; else goto <D.46077>;
        <D.46088>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.45954 = D.45888->data.op[1].many_blocks;
        D.45955 = D.45954 + 4;
        *D.45955 = falsebb;
        D.45887 = cfg->cbb;
        mono_link_bblock (cfg, D.45887, falsebb);
        goto <D.46079>;
        <D.46077>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        if (D.45888 == 0B) goto <D.46089>; else goto <D.46091>;
        <D.46091>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.46092 = D.45888->opcode;
        D.46093 = D.46092 != 446;
        D.46094 = D.46092 != 763;
        D.46095 = D.46093 & D.46094;
        if (D.46095 != 0) goto <D.46096>; else goto <D.46090>;
        <D.46096>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.46097 = D.45888->opcode;
        D.46098 = D.46097 + 64981;
        D.46099 = D.46098 > 9;
        D.46100 = D.46097 + 64874;
        D.46101 = D.46100 > 9;
        D.46102 = D.46099 & D.46101;
        if (D.46102 != 0) goto <D.46103>; else goto <D.46090>;
        <D.46103>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.45952 = D.45888->opcode;
        D.45953 = D.45952 + 64884;
        if (D.45953 > 9) goto <D.46089>; else goto <D.46090>;
        <D.46089>:
        D.45887 = cfg->cbb;
        mono_link_bblock (cfg, D.45887, falsebb);
        <D.46090>:
        <D.46079>:
        D.45887 = cfg->cbb;
        D.45887->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.46104>;
        <D.46062>:
        D.45876 = cfg->mempool;
        D.46105 = mono_mempool_alloc (D.45876, 8);
        ins->data.op[1].many_blocks = D.46105;
        D.46106 = ins->data.op[1].many_blocks;
        *D.46106 = false_bb;
        D.46106 = ins->data.op[1].many_blocks;
        D.46107 = D.46106 + 4;
        *D.46107 = 0B;
        D.45887 = cfg->cbb;
        mono_link_bblock (cfg, D.45887, false_bb);
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        if (D.45888 != 0B) goto <D.46108>; else goto <D.46109>;
        <D.46108>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.45888->next = ins;
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        ins->prev = D.45888;
        D.45887 = cfg->cbb;
        D.45887->last_ins = ins;
        goto <D.46110>;
        <D.46109>:
        D.45887 = cfg->cbb;
        D.45887 = cfg->cbb;
        D.45887->last_ins = ins;
        D.45888 = D.45887->last_ins;
        D.45887->code = D.45888;
        <D.46110>:
        D.45980 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.45981 = D.45980 & 8;
        if (D.45981 == 0) goto <D.46111>; else goto <D.46112>;
        <D.46111>:
        D.45876 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.45876, 172);
        D.45893 = cfg->num_bblocks;
        D.46113 = D.45893;
        D.46114 = D.46113 + 1;
        cfg->num_bblocks = D.46114;
        D.46115 = (int) D.46113;
        falsebb->block_num = D.46115;
        D.46106 = ins->data.op[1].many_blocks;
        D.46107 = D.46106 + 4;
        *D.46107 = falsebb;
        D.45887 = cfg->cbb;
        mono_link_bblock (cfg, D.45887, falsebb);
        D.46069 = falsebb->cil_code;
        if (D.46069 != 0B) goto <D.46116>; else goto <D.46117>;
        <D.46116>:
        D.45932 = cfg->cil_offset_to_bb;
        D.46069 = falsebb->cil_code;
        D.46072 = (int) D.46069;
        D.45934 = cfg->cil_start;
        D.45935 = (int) D.45934;
        D.46073 = D.46072 - D.45935;
        D.46074 = (unsigned int) D.46073;
        D.46075 = D.46074 * 4;
        D.46076 = D.45932 + D.46075;
        *D.46076 = falsebb;
        <D.46117>:
        D.45940 = cfg->real_offset;
        falsebb->real_offset = D.45940;
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        if (D.45888 != 0B) goto <D.46121>; else goto <D.46118>;
        <D.46121>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.46122 = D.45888->opcode;
        D.46123 = D.46122 + 64981;
        D.46124 = D.46123 <= 9;
        D.46125 = D.46122 + 64874;
        D.46126 = D.46125 <= 9;
        D.46127 = D.46124 | D.46126;
        if (D.46127 != 0) goto <D.46119>; else goto <D.46128>;
        <D.46128>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.45952 = D.45888->opcode;
        D.45953 = D.45952 + 64884;
        if (D.45953 <= 9) goto <D.46119>; else goto <D.46118>;
        <D.46119>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.45954 = D.45888->data.op[1].many_blocks;
        D.45955 = D.45954 + 4;
        D.45956 = *D.45955;
        if (D.45956 == 0B) goto <D.46129>; else goto <D.46118>;
        <D.46129>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.45954 = D.45888->data.op[1].many_blocks;
        D.45955 = D.45954 + 4;
        *D.45955 = falsebb;
        D.45887 = cfg->cbb;
        mono_link_bblock (cfg, D.45887, falsebb);
        goto <D.46120>;
        <D.46118>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        if (D.45888 == 0B) goto <D.46130>; else goto <D.46132>;
        <D.46132>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.46133 = D.45888->opcode;
        D.46134 = D.46133 != 446;
        D.46135 = D.46133 != 763;
        D.46136 = D.46134 & D.46135;
        if (D.46136 != 0) goto <D.46137>; else goto <D.46131>;
        <D.46137>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.46138 = D.45888->opcode;
        D.46139 = D.46138 + 64981;
        D.46140 = D.46139 > 9;
        D.46141 = D.46138 + 64874;
        D.46142 = D.46141 > 9;
        D.46143 = D.46140 & D.46142;
        if (D.46143 != 0) goto <D.46144>; else goto <D.46131>;
        <D.46144>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.45952 = D.45888->opcode;
        D.45953 = D.45952 + 64884;
        if (D.45953 > 9) goto <D.46130>; else goto <D.46131>;
        <D.46130>:
        D.45887 = cfg->cbb;
        mono_link_bblock (cfg, D.45887, falsebb);
        <D.46131>:
        <D.46120>:
        D.45887 = cfg->cbb;
        D.45887->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.46145>;
        <D.46112>:
        D.45887 = cfg->cbb;
        D.45887->extended = 1;
        <D.46145>:
        <D.46104>:
      }
      {
        struct MonoInst * inst;

        D.45876 = cfg->mempool;
        inst = mono_mempool_alloc (D.45876, 48);
        inst->data.op[1].const_val = 0;
        D.46146 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.46146;
        inst->prev = 0B;
        D.46147 = inst->prev;
        inst->next = D.46147;
        inst->opcode = 391;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.46148 = inst->sreg3;
        inst->sreg2 = D.46148;
        D.46149 = inst->sreg2;
        inst->sreg1 = D.46149;
        D.45883 = cfg->ip;
        inst->cil_code = D.45883;
        inst->dreg = klass_reg;
        inst->sreg1 = vtable_reg;
        inst->data.op[0].const_val = 0;
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        if (D.45888 != 0B) goto <D.46150>; else goto <D.46151>;
        <D.46150>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.45888->next = inst;
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        inst->prev = D.45888;
        D.45887 = cfg->cbb;
        D.45887->last_ins = inst;
        goto <D.46152>;
        <D.46151>:
        D.45887 = cfg->cbb;
        D.45887 = cfg->cbb;
        D.45887->last_ins = inst;
        D.45888 = D.45887->last_ins;
        D.45887->code = D.45888;
        <D.46152>:
      }
      {
        struct MonoInst * inst;

        D.45876 = cfg->mempool;
        inst = mono_mempool_alloc (D.45876, 48);
        inst->data.op[1].const_val = 0;
        D.46153 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.46153;
        inst->prev = 0B;
        D.46154 = inst->prev;
        inst->next = D.46154;
        inst->opcode = 391;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.46155 = inst->sreg3;
        inst->sreg2 = D.46155;
        D.46156 = inst->sreg2;
        inst->sreg1 = D.46156;
        D.45883 = cfg->ip;
        inst->cil_code = D.45883;
        inst->dreg = eclass_reg;
        inst->sreg1 = klass_reg;
        inst->data.op[0].const_val = 4;
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        if (D.45888 != 0B) goto <D.46157>; else goto <D.46158>;
        <D.46157>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.45888->next = inst;
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        inst->prev = D.45888;
        D.45887 = cfg->cbb;
        D.45887->last_ins = inst;
        goto <D.46159>;
        <D.46158>:
        D.45887 = cfg->cbb;
        D.45887 = cfg->cbb;
        D.45887->last_ins = inst;
        D.45888 = D.45887->last_ins;
        D.45887->code = D.45888;
        <D.46159>:
      }
      D.46160 = klass->cast_class;
      D.46161 = mono_defaults.object_class;
      if (D.46160 == D.46161) goto <D.46162>; else goto <D.46163>;
      <D.46162>:
      {
        int parent_reg;

        D.46164 = alloc_preg (cfg);
        parent_reg = (int) D.46164;
        {
          struct MonoInst * inst;

          D.45876 = cfg->mempool;
          inst = mono_mempool_alloc (D.45876, 48);
          inst->data.op[1].const_val = 0;
          D.46165 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.46165;
          inst->prev = 0B;
          D.46166 = inst->prev;
          inst->next = D.46166;
          inst->opcode = 391;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.46167 = inst->sreg3;
          inst->sreg2 = D.46167;
          D.46168 = inst->sreg2;
          inst->sreg1 = D.46168;
          D.45883 = cfg->ip;
          inst->cil_code = D.45883;
          inst->dreg = parent_reg;
          inst->sreg1 = eclass_reg;
          inst->data.op[0].const_val = 28;
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          if (D.45888 != 0B) goto <D.46169>; else goto <D.46170>;
          <D.46169>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.45888->next = inst;
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          inst->prev = D.45888;
          D.45887 = cfg->cbb;
          D.45887->last_ins = inst;
          goto <D.46171>;
          <D.46170>:
          D.45887 = cfg->cbb;
          D.45887 = cfg->cbb;
          D.45887->last_ins = inst;
          D.45888 = D.45887->last_ins;
          D.45887->code = D.45888;
          <D.46171>:
        }
        D.46172 = mono_defaults.enum_class;
        D.46173 = D.46172->parent;
        mini_emit_class_check_branch (cfg, parent_reg, D.46173, 657, is_null_bb);
        D.46172 = mono_defaults.enum_class;
        mini_emit_class_check_branch (cfg, eclass_reg, D.46172, 652, is_null_bb);
        {
          struct MonoInst * ins;
          struct MonoBasicBlock * falsebb;

          D.45876 = cfg->mempool;
          ins = mono_mempool_alloc (D.45876, 48);
          ins->data.op[1].const_val = 0;
          D.46174 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.46174;
          ins->prev = 0B;
          D.46175 = ins->prev;
          ins->next = D.46175;
          ins->opcode = 446;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.46176 = ins->sreg3;
          ins->sreg2 = D.46176;
          D.46177 = ins->sreg2;
          ins->sreg1 = D.46177;
          D.45883 = cfg->ip;
          ins->cil_code = D.45883;
          if (1 != 0) goto <D.46178>; else goto <D.46179>;
          <D.46178>:
          D.45876 = cfg->mempool;
          falsebb = mono_mempool_alloc0 (D.45876, 172);
          D.45893 = cfg->num_bblocks;
          D.46180 = D.45893;
          D.46181 = D.46180 + 1;
          cfg->num_bblocks = D.46181;
          D.46182 = (int) D.46180;
          falsebb->block_num = D.46182;
          ins->data.op[0].target_block = false_bb;
          D.45887 = cfg->cbb;
          mono_link_bblock (cfg, D.45887, false_bb);
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          if (D.45888 != 0B) goto <D.46183>; else goto <D.46184>;
          <D.46183>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.45888->next = ins;
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          ins->prev = D.45888;
          D.45887 = cfg->cbb;
          D.45887->last_ins = ins;
          goto <D.46185>;
          <D.46184>:
          D.45887 = cfg->cbb;
          D.45887 = cfg->cbb;
          D.45887->last_ins = ins;
          D.45888 = D.45887->last_ins;
          D.45887->code = D.45888;
          <D.46185>:
          D.46186 = falsebb->cil_code;
          if (D.46186 != 0B) goto <D.46187>; else goto <D.46188>;
          <D.46187>:
          D.45932 = cfg->cil_offset_to_bb;
          D.46186 = falsebb->cil_code;
          D.46189 = (int) D.46186;
          D.45934 = cfg->cil_start;
          D.45935 = (int) D.45934;
          D.46190 = D.46189 - D.45935;
          D.46191 = (unsigned int) D.46190;
          D.46192 = D.46191 * 4;
          D.46193 = D.45932 + D.46192;
          *D.46193 = falsebb;
          <D.46188>:
          D.45940 = cfg->real_offset;
          falsebb->real_offset = D.45940;
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          if (D.45888 != 0B) goto <D.46197>; else goto <D.46194>;
          <D.46197>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.46198 = D.45888->opcode;
          D.46199 = D.46198 + 64981;
          D.46200 = D.46199 <= 9;
          D.46201 = D.46198 + 64874;
          D.46202 = D.46201 <= 9;
          D.46203 = D.46200 | D.46202;
          if (D.46203 != 0) goto <D.46195>; else goto <D.46204>;
          <D.46204>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.45952 = D.45888->opcode;
          D.45953 = D.45952 + 64884;
          if (D.45953 <= 9) goto <D.46195>; else goto <D.46194>;
          <D.46195>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.45954 = D.45888->data.op[1].many_blocks;
          D.45955 = D.45954 + 4;
          D.45956 = *D.45955;
          if (D.45956 == 0B) goto <D.46205>; else goto <D.46194>;
          <D.46205>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.45954 = D.45888->data.op[1].many_blocks;
          D.45955 = D.45954 + 4;
          *D.45955 = falsebb;
          D.45887 = cfg->cbb;
          mono_link_bblock (cfg, D.45887, falsebb);
          goto <D.46196>;
          <D.46194>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          if (D.45888 == 0B) goto <D.46206>; else goto <D.46208>;
          <D.46208>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.46209 = D.45888->opcode;
          D.46210 = D.46209 != 446;
          D.46211 = D.46209 != 763;
          D.46212 = D.46210 & D.46211;
          if (D.46212 != 0) goto <D.46213>; else goto <D.46207>;
          <D.46213>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.46214 = D.45888->opcode;
          D.46215 = D.46214 + 64981;
          D.46216 = D.46215 > 9;
          D.46217 = D.46214 + 64874;
          D.46218 = D.46217 > 9;
          D.46219 = D.46216 & D.46218;
          if (D.46219 != 0) goto <D.46220>; else goto <D.46207>;
          <D.46220>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.45952 = D.45888->opcode;
          D.45953 = D.45952 + 64884;
          if (D.45953 > 9) goto <D.46206>; else goto <D.46207>;
          <D.46206>:
          D.45887 = cfg->cbb;
          mono_link_bblock (cfg, D.45887, falsebb);
          <D.46207>:
          <D.46196>:
          D.45887 = cfg->cbb;
          D.45887->next_bb = falsebb;
          cfg->cbb = falsebb;
          goto <D.46221>;
          <D.46179>:
          D.45876 = cfg->mempool;
          D.46222 = mono_mempool_alloc (D.45876, 8);
          ins->data.op[1].many_blocks = D.46222;
          D.46223 = ins->data.op[1].many_blocks;
          *D.46223 = false_bb;
          D.46223 = ins->data.op[1].many_blocks;
          D.46224 = D.46223 + 4;
          *D.46224 = 0B;
          D.45887 = cfg->cbb;
          mono_link_bblock (cfg, D.45887, false_bb);
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          if (D.45888 != 0B) goto <D.46225>; else goto <D.46226>;
          <D.46225>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.45888->next = ins;
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          ins->prev = D.45888;
          D.45887 = cfg->cbb;
          D.45887->last_ins = ins;
          goto <D.46227>;
          <D.46226>:
          D.45887 = cfg->cbb;
          D.45887 = cfg->cbb;
          D.45887->last_ins = ins;
          D.45888 = D.45887->last_ins;
          D.45887->code = D.45888;
          <D.46227>:
          D.45980 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.45981 = D.45980 & 8;
          if (D.45981 == 0) goto <D.46228>; else goto <D.46229>;
          <D.46228>:
          D.45876 = cfg->mempool;
          falsebb = mono_mempool_alloc0 (D.45876, 172);
          D.45893 = cfg->num_bblocks;
          D.46230 = D.45893;
          D.46231 = D.46230 + 1;
          cfg->num_bblocks = D.46231;
          D.46232 = (int) D.46230;
          falsebb->block_num = D.46232;
          D.46223 = ins->data.op[1].many_blocks;
          D.46224 = D.46223 + 4;
          *D.46224 = falsebb;
          D.45887 = cfg->cbb;
          mono_link_bblock (cfg, D.45887, falsebb);
          D.46186 = falsebb->cil_code;
          if (D.46186 != 0B) goto <D.46233>; else goto <D.46234>;
          <D.46233>:
          D.45932 = cfg->cil_offset_to_bb;
          D.46186 = falsebb->cil_code;
          D.46189 = (int) D.46186;
          D.45934 = cfg->cil_start;
          D.45935 = (int) D.45934;
          D.46190 = D.46189 - D.45935;
          D.46191 = (unsigned int) D.46190;
          D.46192 = D.46191 * 4;
          D.46193 = D.45932 + D.46192;
          *D.46193 = falsebb;
          <D.46234>:
          D.45940 = cfg->real_offset;
          falsebb->real_offset = D.45940;
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          if (D.45888 != 0B) goto <D.46238>; else goto <D.46235>;
          <D.46238>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.46239 = D.45888->opcode;
          D.46240 = D.46239 + 64981;
          D.46241 = D.46240 <= 9;
          D.46242 = D.46239 + 64874;
          D.46243 = D.46242 <= 9;
          D.46244 = D.46241 | D.46243;
          if (D.46244 != 0) goto <D.46236>; else goto <D.46245>;
          <D.46245>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.45952 = D.45888->opcode;
          D.45953 = D.45952 + 64884;
          if (D.45953 <= 9) goto <D.46236>; else goto <D.46235>;
          <D.46236>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.45954 = D.45888->data.op[1].many_blocks;
          D.45955 = D.45954 + 4;
          D.45956 = *D.45955;
          if (D.45956 == 0B) goto <D.46246>; else goto <D.46235>;
          <D.46246>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.45954 = D.45888->data.op[1].many_blocks;
          D.45955 = D.45954 + 4;
          *D.45955 = falsebb;
          D.45887 = cfg->cbb;
          mono_link_bblock (cfg, D.45887, falsebb);
          goto <D.46237>;
          <D.46235>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          if (D.45888 == 0B) goto <D.46247>; else goto <D.46249>;
          <D.46249>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.46250 = D.45888->opcode;
          D.46251 = D.46250 != 446;
          D.46252 = D.46250 != 763;
          D.46253 = D.46251 & D.46252;
          if (D.46253 != 0) goto <D.46254>; else goto <D.46248>;
          <D.46254>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.46255 = D.45888->opcode;
          D.46256 = D.46255 + 64981;
          D.46257 = D.46256 > 9;
          D.46258 = D.46255 + 64874;
          D.46259 = D.46258 > 9;
          D.46260 = D.46257 & D.46259;
          if (D.46260 != 0) goto <D.46261>; else goto <D.46248>;
          <D.46261>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.45952 = D.45888->opcode;
          D.45953 = D.45952 + 64884;
          if (D.45953 > 9) goto <D.46247>; else goto <D.46248>;
          <D.46247>:
          D.45887 = cfg->cbb;
          mono_link_bblock (cfg, D.45887, falsebb);
          <D.46248>:
          <D.46237>:
          D.45887 = cfg->cbb;
          D.45887->next_bb = falsebb;
          cfg->cbb = falsebb;
          goto <D.46262>;
          <D.46229>:
          D.45887 = cfg->cbb;
          D.45887->extended = 1;
          <D.46262>:
          <D.46221>:
        }
      }
      goto <D.46263>;
      <D.46163>:
      D.46160 = klass->cast_class;
      D.46172 = mono_defaults.enum_class;
      D.46173 = D.46172->parent;
      if (D.46160 == D.46173) goto <D.46264>; else goto <D.46265>;
      <D.46264>:
      D.46172 = mono_defaults.enum_class;
      D.46173 = D.46172->parent;
      mini_emit_class_check_branch (cfg, eclass_reg, D.46173, 652, is_null_bb);
      D.46172 = mono_defaults.enum_class;
      mini_emit_class_check_branch (cfg, eclass_reg, D.46172, 652, is_null_bb);
      {
        struct MonoInst * ins;
        struct MonoBasicBlock * falsebb;

        D.45876 = cfg->mempool;
        ins = mono_mempool_alloc (D.45876, 48);
        ins->data.op[1].const_val = 0;
        D.46266 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.46266;
        ins->prev = 0B;
        D.46267 = ins->prev;
        ins->next = D.46267;
        ins->opcode = 446;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.46268 = ins->sreg3;
        ins->sreg2 = D.46268;
        D.46269 = ins->sreg2;
        ins->sreg1 = D.46269;
        D.45883 = cfg->ip;
        ins->cil_code = D.45883;
        if (1 != 0) goto <D.46270>; else goto <D.46271>;
        <D.46270>:
        D.45876 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.45876, 172);
        D.45893 = cfg->num_bblocks;
        D.46272 = D.45893;
        D.46273 = D.46272 + 1;
        cfg->num_bblocks = D.46273;
        D.46274 = (int) D.46272;
        falsebb->block_num = D.46274;
        ins->data.op[0].target_block = false_bb;
        D.45887 = cfg->cbb;
        mono_link_bblock (cfg, D.45887, false_bb);
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        if (D.45888 != 0B) goto <D.46275>; else goto <D.46276>;
        <D.46275>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.45888->next = ins;
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        ins->prev = D.45888;
        D.45887 = cfg->cbb;
        D.45887->last_ins = ins;
        goto <D.46277>;
        <D.46276>:
        D.45887 = cfg->cbb;
        D.45887 = cfg->cbb;
        D.45887->last_ins = ins;
        D.45888 = D.45887->last_ins;
        D.45887->code = D.45888;
        <D.46277>:
        D.46278 = falsebb->cil_code;
        if (D.46278 != 0B) goto <D.46279>; else goto <D.46280>;
        <D.46279>:
        D.45932 = cfg->cil_offset_to_bb;
        D.46278 = falsebb->cil_code;
        D.46281 = (int) D.46278;
        D.45934 = cfg->cil_start;
        D.45935 = (int) D.45934;
        D.46282 = D.46281 - D.45935;
        D.46283 = (unsigned int) D.46282;
        D.46284 = D.46283 * 4;
        D.46285 = D.45932 + D.46284;
        *D.46285 = falsebb;
        <D.46280>:
        D.45940 = cfg->real_offset;
        falsebb->real_offset = D.45940;
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        if (D.45888 != 0B) goto <D.46289>; else goto <D.46286>;
        <D.46289>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.46290 = D.45888->opcode;
        D.46291 = D.46290 + 64981;
        D.46292 = D.46291 <= 9;
        D.46293 = D.46290 + 64874;
        D.46294 = D.46293 <= 9;
        D.46295 = D.46292 | D.46294;
        if (D.46295 != 0) goto <D.46287>; else goto <D.46296>;
        <D.46296>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.45952 = D.45888->opcode;
        D.45953 = D.45952 + 64884;
        if (D.45953 <= 9) goto <D.46287>; else goto <D.46286>;
        <D.46287>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.45954 = D.45888->data.op[1].many_blocks;
        D.45955 = D.45954 + 4;
        D.45956 = *D.45955;
        if (D.45956 == 0B) goto <D.46297>; else goto <D.46286>;
        <D.46297>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.45954 = D.45888->data.op[1].many_blocks;
        D.45955 = D.45954 + 4;
        *D.45955 = falsebb;
        D.45887 = cfg->cbb;
        mono_link_bblock (cfg, D.45887, falsebb);
        goto <D.46288>;
        <D.46286>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        if (D.45888 == 0B) goto <D.46298>; else goto <D.46300>;
        <D.46300>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.46301 = D.45888->opcode;
        D.46302 = D.46301 != 446;
        D.46303 = D.46301 != 763;
        D.46304 = D.46302 & D.46303;
        if (D.46304 != 0) goto <D.46305>; else goto <D.46299>;
        <D.46305>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.46306 = D.45888->opcode;
        D.46307 = D.46306 + 64981;
        D.46308 = D.46307 > 9;
        D.46309 = D.46306 + 64874;
        D.46310 = D.46309 > 9;
        D.46311 = D.46308 & D.46310;
        if (D.46311 != 0) goto <D.46312>; else goto <D.46299>;
        <D.46312>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.45952 = D.45888->opcode;
        D.45953 = D.45952 + 64884;
        if (D.45953 > 9) goto <D.46298>; else goto <D.46299>;
        <D.46298>:
        D.45887 = cfg->cbb;
        mono_link_bblock (cfg, D.45887, falsebb);
        <D.46299>:
        <D.46288>:
        D.45887 = cfg->cbb;
        D.45887->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.46313>;
        <D.46271>:
        D.45876 = cfg->mempool;
        D.46314 = mono_mempool_alloc (D.45876, 8);
        ins->data.op[1].many_blocks = D.46314;
        D.46315 = ins->data.op[1].many_blocks;
        *D.46315 = false_bb;
        D.46315 = ins->data.op[1].many_blocks;
        D.46316 = D.46315 + 4;
        *D.46316 = 0B;
        D.45887 = cfg->cbb;
        mono_link_bblock (cfg, D.45887, false_bb);
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        if (D.45888 != 0B) goto <D.46317>; else goto <D.46318>;
        <D.46317>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.45888->next = ins;
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        ins->prev = D.45888;
        D.45887 = cfg->cbb;
        D.45887->last_ins = ins;
        goto <D.46319>;
        <D.46318>:
        D.45887 = cfg->cbb;
        D.45887 = cfg->cbb;
        D.45887->last_ins = ins;
        D.45888 = D.45887->last_ins;
        D.45887->code = D.45888;
        <D.46319>:
        D.45980 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.45981 = D.45980 & 8;
        if (D.45981 == 0) goto <D.46320>; else goto <D.46321>;
        <D.46320>:
        D.45876 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.45876, 172);
        D.45893 = cfg->num_bblocks;
        D.46322 = D.45893;
        D.46323 = D.46322 + 1;
        cfg->num_bblocks = D.46323;
        D.46324 = (int) D.46322;
        falsebb->block_num = D.46324;
        D.46315 = ins->data.op[1].many_blocks;
        D.46316 = D.46315 + 4;
        *D.46316 = falsebb;
        D.45887 = cfg->cbb;
        mono_link_bblock (cfg, D.45887, falsebb);
        D.46278 = falsebb->cil_code;
        if (D.46278 != 0B) goto <D.46325>; else goto <D.46326>;
        <D.46325>:
        D.45932 = cfg->cil_offset_to_bb;
        D.46278 = falsebb->cil_code;
        D.46281 = (int) D.46278;
        D.45934 = cfg->cil_start;
        D.45935 = (int) D.45934;
        D.46282 = D.46281 - D.45935;
        D.46283 = (unsigned int) D.46282;
        D.46284 = D.46283 * 4;
        D.46285 = D.45932 + D.46284;
        *D.46285 = falsebb;
        <D.46326>:
        D.45940 = cfg->real_offset;
        falsebb->real_offset = D.45940;
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        if (D.45888 != 0B) goto <D.46330>; else goto <D.46327>;
        <D.46330>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.46331 = D.45888->opcode;
        D.46332 = D.46331 + 64981;
        D.46333 = D.46332 <= 9;
        D.46334 = D.46331 + 64874;
        D.46335 = D.46334 <= 9;
        D.46336 = D.46333 | D.46335;
        if (D.46336 != 0) goto <D.46328>; else goto <D.46337>;
        <D.46337>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.45952 = D.45888->opcode;
        D.45953 = D.45952 + 64884;
        if (D.45953 <= 9) goto <D.46328>; else goto <D.46327>;
        <D.46328>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.45954 = D.45888->data.op[1].many_blocks;
        D.45955 = D.45954 + 4;
        D.45956 = *D.45955;
        if (D.45956 == 0B) goto <D.46338>; else goto <D.46327>;
        <D.46338>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.45954 = D.45888->data.op[1].many_blocks;
        D.45955 = D.45954 + 4;
        *D.45955 = falsebb;
        D.45887 = cfg->cbb;
        mono_link_bblock (cfg, D.45887, falsebb);
        goto <D.46329>;
        <D.46327>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        if (D.45888 == 0B) goto <D.46339>; else goto <D.46341>;
        <D.46341>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.46342 = D.45888->opcode;
        D.46343 = D.46342 != 446;
        D.46344 = D.46342 != 763;
        D.46345 = D.46343 & D.46344;
        if (D.46345 != 0) goto <D.46346>; else goto <D.46340>;
        <D.46346>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.46347 = D.45888->opcode;
        D.46348 = D.46347 + 64981;
        D.46349 = D.46348 > 9;
        D.46350 = D.46347 + 64874;
        D.46351 = D.46350 > 9;
        D.46352 = D.46349 & D.46351;
        if (D.46352 != 0) goto <D.46353>; else goto <D.46340>;
        <D.46353>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.45952 = D.45888->opcode;
        D.45953 = D.45952 + 64884;
        if (D.45953 > 9) goto <D.46339>; else goto <D.46340>;
        <D.46339>:
        D.45887 = cfg->cbb;
        mono_link_bblock (cfg, D.45887, falsebb);
        <D.46340>:
        <D.46329>:
        D.45887 = cfg->cbb;
        D.45887->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.46354>;
        <D.46321>:
        D.45887 = cfg->cbb;
        D.45887->extended = 1;
        <D.46354>:
        <D.46313>:
      }
      goto <D.46355>;
      <D.46265>:
      D.46160 = klass->cast_class;
      D.46172 = mono_defaults.enum_class;
      if (D.46160 == D.46172) goto <D.46356>; else goto <D.46357>;
      <D.46356>:
      D.46172 = mono_defaults.enum_class;
      mini_emit_class_check_branch (cfg, eclass_reg, D.46172, 652, is_null_bb);
      {
        struct MonoInst * ins;
        struct MonoBasicBlock * falsebb;

        D.45876 = cfg->mempool;
        ins = mono_mempool_alloc (D.45876, 48);
        ins->data.op[1].const_val = 0;
        D.46358 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.46358;
        ins->prev = 0B;
        D.46359 = ins->prev;
        ins->next = D.46359;
        ins->opcode = 446;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.46360 = ins->sreg3;
        ins->sreg2 = D.46360;
        D.46361 = ins->sreg2;
        ins->sreg1 = D.46361;
        D.45883 = cfg->ip;
        ins->cil_code = D.45883;
        if (1 != 0) goto <D.46362>; else goto <D.46363>;
        <D.46362>:
        D.45876 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.45876, 172);
        D.45893 = cfg->num_bblocks;
        D.46364 = D.45893;
        D.46365 = D.46364 + 1;
        cfg->num_bblocks = D.46365;
        D.46366 = (int) D.46364;
        falsebb->block_num = D.46366;
        ins->data.op[0].target_block = false_bb;
        D.45887 = cfg->cbb;
        mono_link_bblock (cfg, D.45887, false_bb);
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        if (D.45888 != 0B) goto <D.46367>; else goto <D.46368>;
        <D.46367>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.45888->next = ins;
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        ins->prev = D.45888;
        D.45887 = cfg->cbb;
        D.45887->last_ins = ins;
        goto <D.46369>;
        <D.46368>:
        D.45887 = cfg->cbb;
        D.45887 = cfg->cbb;
        D.45887->last_ins = ins;
        D.45888 = D.45887->last_ins;
        D.45887->code = D.45888;
        <D.46369>:
        D.46370 = falsebb->cil_code;
        if (D.46370 != 0B) goto <D.46371>; else goto <D.46372>;
        <D.46371>:
        D.45932 = cfg->cil_offset_to_bb;
        D.46370 = falsebb->cil_code;
        D.46373 = (int) D.46370;
        D.45934 = cfg->cil_start;
        D.45935 = (int) D.45934;
        D.46374 = D.46373 - D.45935;
        D.46375 = (unsigned int) D.46374;
        D.46376 = D.46375 * 4;
        D.46377 = D.45932 + D.46376;
        *D.46377 = falsebb;
        <D.46372>:
        D.45940 = cfg->real_offset;
        falsebb->real_offset = D.45940;
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        if (D.45888 != 0B) goto <D.46381>; else goto <D.46378>;
        <D.46381>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.46382 = D.45888->opcode;
        D.46383 = D.46382 + 64981;
        D.46384 = D.46383 <= 9;
        D.46385 = D.46382 + 64874;
        D.46386 = D.46385 <= 9;
        D.46387 = D.46384 | D.46386;
        if (D.46387 != 0) goto <D.46379>; else goto <D.46388>;
        <D.46388>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.45952 = D.45888->opcode;
        D.45953 = D.45952 + 64884;
        if (D.45953 <= 9) goto <D.46379>; else goto <D.46378>;
        <D.46379>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.45954 = D.45888->data.op[1].many_blocks;
        D.45955 = D.45954 + 4;
        D.45956 = *D.45955;
        if (D.45956 == 0B) goto <D.46389>; else goto <D.46378>;
        <D.46389>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.45954 = D.45888->data.op[1].many_blocks;
        D.45955 = D.45954 + 4;
        *D.45955 = falsebb;
        D.45887 = cfg->cbb;
        mono_link_bblock (cfg, D.45887, falsebb);
        goto <D.46380>;
        <D.46378>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        if (D.45888 == 0B) goto <D.46390>; else goto <D.46392>;
        <D.46392>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.46393 = D.45888->opcode;
        D.46394 = D.46393 != 446;
        D.46395 = D.46393 != 763;
        D.46396 = D.46394 & D.46395;
        if (D.46396 != 0) goto <D.46397>; else goto <D.46391>;
        <D.46397>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.46398 = D.45888->opcode;
        D.46399 = D.46398 + 64981;
        D.46400 = D.46399 > 9;
        D.46401 = D.46398 + 64874;
        D.46402 = D.46401 > 9;
        D.46403 = D.46400 & D.46402;
        if (D.46403 != 0) goto <D.46404>; else goto <D.46391>;
        <D.46404>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.45952 = D.45888->opcode;
        D.45953 = D.45952 + 64884;
        if (D.45953 > 9) goto <D.46390>; else goto <D.46391>;
        <D.46390>:
        D.45887 = cfg->cbb;
        mono_link_bblock (cfg, D.45887, falsebb);
        <D.46391>:
        <D.46380>:
        D.45887 = cfg->cbb;
        D.45887->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.46405>;
        <D.46363>:
        D.45876 = cfg->mempool;
        D.46406 = mono_mempool_alloc (D.45876, 8);
        ins->data.op[1].many_blocks = D.46406;
        D.46407 = ins->data.op[1].many_blocks;
        *D.46407 = false_bb;
        D.46407 = ins->data.op[1].many_blocks;
        D.46408 = D.46407 + 4;
        *D.46408 = 0B;
        D.45887 = cfg->cbb;
        mono_link_bblock (cfg, D.45887, false_bb);
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        if (D.45888 != 0B) goto <D.46409>; else goto <D.46410>;
        <D.46409>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.45888->next = ins;
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        ins->prev = D.45888;
        D.45887 = cfg->cbb;
        D.45887->last_ins = ins;
        goto <D.46411>;
        <D.46410>:
        D.45887 = cfg->cbb;
        D.45887 = cfg->cbb;
        D.45887->last_ins = ins;
        D.45888 = D.45887->last_ins;
        D.45887->code = D.45888;
        <D.46411>:
        D.45980 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.45981 = D.45980 & 8;
        if (D.45981 == 0) goto <D.46412>; else goto <D.46413>;
        <D.46412>:
        D.45876 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.45876, 172);
        D.45893 = cfg->num_bblocks;
        D.46414 = D.45893;
        D.46415 = D.46414 + 1;
        cfg->num_bblocks = D.46415;
        D.46416 = (int) D.46414;
        falsebb->block_num = D.46416;
        D.46407 = ins->data.op[1].many_blocks;
        D.46408 = D.46407 + 4;
        *D.46408 = falsebb;
        D.45887 = cfg->cbb;
        mono_link_bblock (cfg, D.45887, falsebb);
        D.46370 = falsebb->cil_code;
        if (D.46370 != 0B) goto <D.46417>; else goto <D.46418>;
        <D.46417>:
        D.45932 = cfg->cil_offset_to_bb;
        D.46370 = falsebb->cil_code;
        D.46373 = (int) D.46370;
        D.45934 = cfg->cil_start;
        D.45935 = (int) D.45934;
        D.46374 = D.46373 - D.45935;
        D.46375 = (unsigned int) D.46374;
        D.46376 = D.46375 * 4;
        D.46377 = D.45932 + D.46376;
        *D.46377 = falsebb;
        <D.46418>:
        D.45940 = cfg->real_offset;
        falsebb->real_offset = D.45940;
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        if (D.45888 != 0B) goto <D.46422>; else goto <D.46419>;
        <D.46422>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.46423 = D.45888->opcode;
        D.46424 = D.46423 + 64981;
        D.46425 = D.46424 <= 9;
        D.46426 = D.46423 + 64874;
        D.46427 = D.46426 <= 9;
        D.46428 = D.46425 | D.46427;
        if (D.46428 != 0) goto <D.46420>; else goto <D.46429>;
        <D.46429>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.45952 = D.45888->opcode;
        D.45953 = D.45952 + 64884;
        if (D.45953 <= 9) goto <D.46420>; else goto <D.46419>;
        <D.46420>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.45954 = D.45888->data.op[1].many_blocks;
        D.45955 = D.45954 + 4;
        D.45956 = *D.45955;
        if (D.45956 == 0B) goto <D.46430>; else goto <D.46419>;
        <D.46430>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.45954 = D.45888->data.op[1].many_blocks;
        D.45955 = D.45954 + 4;
        *D.45955 = falsebb;
        D.45887 = cfg->cbb;
        mono_link_bblock (cfg, D.45887, falsebb);
        goto <D.46421>;
        <D.46419>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        if (D.45888 == 0B) goto <D.46431>; else goto <D.46433>;
        <D.46433>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.46434 = D.45888->opcode;
        D.46435 = D.46434 != 446;
        D.46436 = D.46434 != 763;
        D.46437 = D.46435 & D.46436;
        if (D.46437 != 0) goto <D.46438>; else goto <D.46432>;
        <D.46438>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.46439 = D.45888->opcode;
        D.46440 = D.46439 + 64981;
        D.46441 = D.46440 > 9;
        D.46442 = D.46439 + 64874;
        D.46443 = D.46442 > 9;
        D.46444 = D.46441 & D.46443;
        if (D.46444 != 0) goto <D.46445>; else goto <D.46432>;
        <D.46445>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.45952 = D.45888->opcode;
        D.45953 = D.45952 + 64884;
        if (D.45953 > 9) goto <D.46431>; else goto <D.46432>;
        <D.46431>:
        D.45887 = cfg->cbb;
        mono_link_bblock (cfg, D.45887, falsebb);
        <D.46432>:
        <D.46421>:
        D.45887 = cfg->cbb;
        D.45887->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.46446>;
        <D.46413>:
        D.45887 = cfg->cbb;
        D.45887->extended = 1;
        <D.46446>:
        <D.46405>:
      }
      goto <D.46447>;
      <D.46357>:
      D.46160 = klass->cast_class;
      D.46448 = D.46160->flags;
      D.46449 = D.46448 & 32;
      if (D.46449 != 0) goto <D.46450>; else goto <D.46451>;
      <D.46450>:
      D.46160 = klass->cast_class;
      mini_emit_iface_class_cast (cfg, eclass_reg, D.46160, false_bb, is_null_bb);
      goto <D.46452>;
      <D.46451>:
      D.46035 = klass->rank;
      if (D.46035 == 1) goto <D.46453>; else goto <D.46454>;
      <D.46453>:
      D.46455 = klass->byval_arg.type;
      if (D.46455 == 29) goto <D.46456>; else goto <D.46457>;
      <D.46456>:
      {
        int bounds_reg;

        D.46458 = alloc_preg (cfg);
        bounds_reg = (int) D.46458;
        {
          struct MonoInst * inst;

          D.45876 = cfg->mempool;
          inst = mono_mempool_alloc (D.45876, 48);
          inst->data.op[1].const_val = 0;
          D.46459 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.46459;
          inst->prev = 0B;
          D.46460 = inst->prev;
          inst->next = D.46460;
          inst->opcode = 391;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.46461 = inst->sreg3;
          inst->sreg2 = D.46461;
          D.46462 = inst->sreg2;
          inst->sreg1 = D.46462;
          D.45883 = cfg->ip;
          inst->cil_code = D.45883;
          inst->dreg = bounds_reg;
          inst->sreg1 = obj_reg;
          inst->data.op[0].const_val = 8;
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          if (D.45888 != 0B) goto <D.46463>; else goto <D.46464>;
          <D.46463>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.45888->next = inst;
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          inst->prev = D.45888;
          D.45887 = cfg->cbb;
          D.45887->last_ins = inst;
          goto <D.46465>;
          <D.46464>:
          D.45887 = cfg->cbb;
          D.45887 = cfg->cbb;
          D.45887->last_ins = inst;
          D.45888 = D.45887->last_ins;
          D.45887->code = D.45888;
          <D.46465>:
        }
        {
          struct MonoInst * inst;

          D.45876 = cfg->mempool;
          inst = mono_mempool_alloc (D.45876, 48);
          inst->data.op[1].const_val = 0;
          D.46466 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.46466;
          inst->prev = 0B;
          D.46467 = inst->prev;
          inst->next = D.46467;
          inst->opcode = 323;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.46468 = inst->sreg3;
          inst->sreg2 = D.46468;
          D.46469 = inst->sreg2;
          inst->sreg1 = D.46469;
          D.45883 = cfg->ip;
          inst->cil_code = D.45883;
          inst->dreg = -1;
          inst->sreg1 = bounds_reg;
          inst->data.op[1].const_val = 0;
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          if (D.45888 != 0B) goto <D.46470>; else goto <D.46471>;
          <D.46470>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.45888->next = inst;
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          inst->prev = D.45888;
          D.45887 = cfg->cbb;
          D.45887->last_ins = inst;
          goto <D.46472>;
          <D.46471>:
          D.45887 = cfg->cbb;
          D.45887 = cfg->cbb;
          D.45887->last_ins = inst;
          D.45888 = D.45887->last_ins;
          D.45887->code = D.45888;
          <D.46472>:
        }
        {
          struct MonoInst * ins;
          struct MonoBasicBlock * falsebb;

          D.45876 = cfg->mempool;
          ins = mono_mempool_alloc (D.45876, 48);
          ins->data.op[1].const_val = 0;
          D.46473 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.46473;
          ins->prev = 0B;
          D.46474 = ins->prev;
          ins->next = D.46474;
          ins->opcode = 657;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.46475 = ins->sreg3;
          ins->sreg2 = D.46475;
          D.46476 = ins->sreg2;
          ins->sreg1 = D.46476;
          D.45883 = cfg->ip;
          ins->cil_code = D.45883;
          if (0 != 0) goto <D.46477>; else goto <D.46478>;
          <D.46477>:
          D.45876 = cfg->mempool;
          falsebb = mono_mempool_alloc0 (D.45876, 172);
          D.45893 = cfg->num_bblocks;
          D.46479 = D.45893;
          D.46480 = D.46479 + 1;
          cfg->num_bblocks = D.46480;
          D.46481 = (int) D.46479;
          falsebb->block_num = D.46481;
          ins->data.op[0].target_block = false_bb;
          D.45887 = cfg->cbb;
          mono_link_bblock (cfg, D.45887, false_bb);
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          if (D.45888 != 0B) goto <D.46482>; else goto <D.46483>;
          <D.46482>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.45888->next = ins;
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          ins->prev = D.45888;
          D.45887 = cfg->cbb;
          D.45887->last_ins = ins;
          goto <D.46484>;
          <D.46483>:
          D.45887 = cfg->cbb;
          D.45887 = cfg->cbb;
          D.45887->last_ins = ins;
          D.45888 = D.45887->last_ins;
          D.45887->code = D.45888;
          <D.46484>:
          D.46485 = falsebb->cil_code;
          if (D.46485 != 0B) goto <D.46486>; else goto <D.46487>;
          <D.46486>:
          D.45932 = cfg->cil_offset_to_bb;
          D.46485 = falsebb->cil_code;
          D.46488 = (int) D.46485;
          D.45934 = cfg->cil_start;
          D.45935 = (int) D.45934;
          D.46489 = D.46488 - D.45935;
          D.46490 = (unsigned int) D.46489;
          D.46491 = D.46490 * 4;
          D.46492 = D.45932 + D.46491;
          *D.46492 = falsebb;
          <D.46487>:
          D.45940 = cfg->real_offset;
          falsebb->real_offset = D.45940;
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          if (D.45888 != 0B) goto <D.46496>; else goto <D.46493>;
          <D.46496>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.46497 = D.45888->opcode;
          D.46498 = D.46497 + 64981;
          D.46499 = D.46498 <= 9;
          D.46500 = D.46497 + 64874;
          D.46501 = D.46500 <= 9;
          D.46502 = D.46499 | D.46501;
          if (D.46502 != 0) goto <D.46494>; else goto <D.46503>;
          <D.46503>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.45952 = D.45888->opcode;
          D.45953 = D.45952 + 64884;
          if (D.45953 <= 9) goto <D.46494>; else goto <D.46493>;
          <D.46494>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.45954 = D.45888->data.op[1].many_blocks;
          D.45955 = D.45954 + 4;
          D.45956 = *D.45955;
          if (D.45956 == 0B) goto <D.46504>; else goto <D.46493>;
          <D.46504>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.45954 = D.45888->data.op[1].many_blocks;
          D.45955 = D.45954 + 4;
          *D.45955 = falsebb;
          D.45887 = cfg->cbb;
          mono_link_bblock (cfg, D.45887, falsebb);
          goto <D.46495>;
          <D.46493>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          if (D.45888 == 0B) goto <D.46505>; else goto <D.46507>;
          <D.46507>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.46508 = D.45888->opcode;
          D.46509 = D.46508 != 446;
          D.46510 = D.46508 != 763;
          D.46511 = D.46509 & D.46510;
          if (D.46511 != 0) goto <D.46512>; else goto <D.46506>;
          <D.46512>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.46513 = D.45888->opcode;
          D.46514 = D.46513 + 64981;
          D.46515 = D.46514 > 9;
          D.46516 = D.46513 + 64874;
          D.46517 = D.46516 > 9;
          D.46518 = D.46515 & D.46517;
          if (D.46518 != 0) goto <D.46519>; else goto <D.46506>;
          <D.46519>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.45952 = D.45888->opcode;
          D.45953 = D.45952 + 64884;
          if (D.45953 > 9) goto <D.46505>; else goto <D.46506>;
          <D.46505>:
          D.45887 = cfg->cbb;
          mono_link_bblock (cfg, D.45887, falsebb);
          <D.46506>:
          <D.46495>:
          D.45887 = cfg->cbb;
          D.45887->next_bb = falsebb;
          cfg->cbb = falsebb;
          goto <D.46520>;
          <D.46478>:
          D.45876 = cfg->mempool;
          D.46521 = mono_mempool_alloc (D.45876, 8);
          ins->data.op[1].many_blocks = D.46521;
          D.46522 = ins->data.op[1].many_blocks;
          *D.46522 = false_bb;
          D.46522 = ins->data.op[1].many_blocks;
          D.46523 = D.46522 + 4;
          *D.46523 = 0B;
          D.45887 = cfg->cbb;
          mono_link_bblock (cfg, D.45887, false_bb);
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          if (D.45888 != 0B) goto <D.46524>; else goto <D.46525>;
          <D.46524>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.45888->next = ins;
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          ins->prev = D.45888;
          D.45887 = cfg->cbb;
          D.45887->last_ins = ins;
          goto <D.46526>;
          <D.46525>:
          D.45887 = cfg->cbb;
          D.45887 = cfg->cbb;
          D.45887->last_ins = ins;
          D.45888 = D.45887->last_ins;
          D.45887->code = D.45888;
          <D.46526>:
          D.45980 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.45981 = D.45980 & 8;
          if (D.45981 == 0) goto <D.46527>; else goto <D.46528>;
          <D.46527>:
          D.45876 = cfg->mempool;
          falsebb = mono_mempool_alloc0 (D.45876, 172);
          D.45893 = cfg->num_bblocks;
          D.46529 = D.45893;
          D.46530 = D.46529 + 1;
          cfg->num_bblocks = D.46530;
          D.46531 = (int) D.46529;
          falsebb->block_num = D.46531;
          D.46522 = ins->data.op[1].many_blocks;
          D.46523 = D.46522 + 4;
          *D.46523 = falsebb;
          D.45887 = cfg->cbb;
          mono_link_bblock (cfg, D.45887, falsebb);
          D.46485 = falsebb->cil_code;
          if (D.46485 != 0B) goto <D.46532>; else goto <D.46533>;
          <D.46532>:
          D.45932 = cfg->cil_offset_to_bb;
          D.46485 = falsebb->cil_code;
          D.46488 = (int) D.46485;
          D.45934 = cfg->cil_start;
          D.45935 = (int) D.45934;
          D.46489 = D.46488 - D.45935;
          D.46490 = (unsigned int) D.46489;
          D.46491 = D.46490 * 4;
          D.46492 = D.45932 + D.46491;
          *D.46492 = falsebb;
          <D.46533>:
          D.45940 = cfg->real_offset;
          falsebb->real_offset = D.45940;
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          if (D.45888 != 0B) goto <D.46537>; else goto <D.46534>;
          <D.46537>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.46538 = D.45888->opcode;
          D.46539 = D.46538 + 64981;
          D.46540 = D.46539 <= 9;
          D.46541 = D.46538 + 64874;
          D.46542 = D.46541 <= 9;
          D.46543 = D.46540 | D.46542;
          if (D.46543 != 0) goto <D.46535>; else goto <D.46544>;
          <D.46544>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.45952 = D.45888->opcode;
          D.45953 = D.45952 + 64884;
          if (D.45953 <= 9) goto <D.46535>; else goto <D.46534>;
          <D.46535>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.45954 = D.45888->data.op[1].many_blocks;
          D.45955 = D.45954 + 4;
          D.45956 = *D.45955;
          if (D.45956 == 0B) goto <D.46545>; else goto <D.46534>;
          <D.46545>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.45954 = D.45888->data.op[1].many_blocks;
          D.45955 = D.45954 + 4;
          *D.45955 = falsebb;
          D.45887 = cfg->cbb;
          mono_link_bblock (cfg, D.45887, falsebb);
          goto <D.46536>;
          <D.46534>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          if (D.45888 == 0B) goto <D.46546>; else goto <D.46548>;
          <D.46548>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.46549 = D.45888->opcode;
          D.46550 = D.46549 != 446;
          D.46551 = D.46549 != 763;
          D.46552 = D.46550 & D.46551;
          if (D.46552 != 0) goto <D.46553>; else goto <D.46547>;
          <D.46553>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.46554 = D.45888->opcode;
          D.46555 = D.46554 + 64981;
          D.46556 = D.46555 > 9;
          D.46557 = D.46554 + 64874;
          D.46558 = D.46557 > 9;
          D.46559 = D.46556 & D.46558;
          if (D.46559 != 0) goto <D.46560>; else goto <D.46547>;
          <D.46560>:
          D.45887 = cfg->cbb;
          D.45888 = D.45887->last_ins;
          D.45952 = D.45888->opcode;
          D.45953 = D.45952 + 64884;
          if (D.45953 > 9) goto <D.46546>; else goto <D.46547>;
          <D.46546>:
          D.45887 = cfg->cbb;
          mono_link_bblock (cfg, D.45887, falsebb);
          <D.46547>:
          <D.46536>:
          D.45887 = cfg->cbb;
          D.45887->next_bb = falsebb;
          cfg->cbb = falsebb;
          goto <D.46561>;
          <D.46528>:
          D.45887 = cfg->cbb;
          D.45887->extended = 1;
          <D.46561>:
          <D.46520>:
        }
      }
      <D.46457>:
      <D.46454>:
      D.46160 = klass->cast_class;
      mini_emit_isninst_cast (cfg, eclass_reg, D.46160, false_bb, is_null_bb);
      <D.46452>:
      <D.46447>:
      <D.46355>:
      <D.46263>:
    }
    goto <D.46562>;
    <D.46037>:
    D.46563 = mono_class_is_nullable (klass);
    if (D.46563 != 0) goto <D.46564>; else goto <D.46565>;
    <D.46564>:
    D.46028 = context_used != 0;
    D.46029 = (long int) D.46028;
    D.46030 = __builtin_expect (D.46029, 0);
    if (D.46030 != 0) goto <D.46566>; else goto <D.46567>;
    <D.46566>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4130, "!context_used");
    <D.46567>:
    {
      struct MonoInst * inst;

      D.45876 = cfg->mempool;
      inst = mono_mempool_alloc (D.45876, 48);
      inst->data.op[1].const_val = 0;
      D.46568 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.46568;
      inst->prev = 0B;
      D.46569 = inst->prev;
      inst->next = D.46569;
      inst->opcode = 391;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.46570 = inst->sreg3;
      inst->sreg2 = D.46570;
      D.46571 = inst->sreg2;
      inst->sreg1 = D.46571;
      D.45883 = cfg->ip;
      inst->cil_code = D.45883;
      inst->dreg = klass_reg;
      inst->sreg1 = vtable_reg;
      inst->data.op[0].const_val = 0;
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      if (D.45888 != 0B) goto <D.46572>; else goto <D.46573>;
      <D.46572>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.45888->next = inst;
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      inst->prev = D.45888;
      D.45887 = cfg->cbb;
      D.45887->last_ins = inst;
      goto <D.46574>;
      <D.46573>:
      D.45887 = cfg->cbb;
      D.45887 = cfg->cbb;
      D.45887->last_ins = inst;
      D.45888 = D.45887->last_ins;
      D.45887->code = D.45888;
      <D.46574>:
    }
    D.46160 = klass->cast_class;
    mini_emit_isninst_cast (cfg, klass_reg, D.46160, false_bb, is_null_bb);
    goto <D.46575>;
    <D.46565>:
    D.45980 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.46578 = D.45980 & 64;
    if (D.46578 == 0) goto <D.46579>; else goto <D.46576>;
    <D.46579>:
    D.46580 = cfg->opt;
    D.46581 = D.46580 & 512;
    if (D.46581 == 0) goto <D.46582>; else goto <D.46576>;
    <D.46582>:
    D.46024 = klass->flags;
    D.46583 = D.46024 & 256;
    if (D.46583 != 0) goto <D.46584>; else goto <D.46576>;
    <D.46584>:
    D.46028 = context_used != 0;
    D.46029 = (long int) D.46028;
    D.46030 = __builtin_expect (D.46029, 0);
    if (D.46030 != 0) goto <D.46585>; else goto <D.46586>;
    <D.46585>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4136, "!context_used");
    <D.46586>:
    if (0 != 0) goto <D.46587>; else goto <D.46588>;
    <D.46587>:
    {
      struct MonoVTable * vt;

      D.46589 = cfg->domain;
      vt = mono_class_vtable (D.46589, klass);
      if (vt == 0B) goto <D.46590>; else goto <D.46591>;
      <D.46590>:
      mono_cfg_set_exception (cfg, 7);
      cfg->exception_ptr = klass;
      D.45892 = 0B;
      return D.45892;
      <D.46591>:
      {
        struct MonoInst * inst;

        D.45876 = cfg->mempool;
        inst = mono_mempool_alloc (D.45876, 48);
        inst->data.op[1].const_val = 0;
        D.46592 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.46592;
        inst->prev = 0B;
        D.46593 = inst->prev;
        inst->next = D.46593;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.46594 = inst->sreg3;
        inst->sreg2 = D.46594;
        D.46595 = inst->sreg2;
        inst->sreg1 = D.46595;
        D.45883 = cfg->ip;
        inst->cil_code = D.45883;
        inst->dreg = -1;
        inst->sreg1 = vtable_reg;
        vt.482 = (int) vt;
        inst->data.op[1].const_val = vt.482;
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        if (D.45888 != 0B) goto <D.46597>; else goto <D.46598>;
        <D.46597>:
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        D.45888->next = inst;
        D.45887 = cfg->cbb;
        D.45888 = D.45887->last_ins;
        inst->prev = D.45888;
        D.45887 = cfg->cbb;
        D.45887->last_ins = inst;
        goto <D.46599>;
        <D.46598>:
        D.45887 = cfg->cbb;
        D.45887 = cfg->cbb;
        D.45887->last_ins = inst;
        D.45888 = D.45887->last_ins;
        D.45887->code = D.45888;
        <D.46599>:
      }
    }
    goto <D.46600>;
    <D.46588>:
    {
      struct MonoInst * inst;

      D.45876 = cfg->mempool;
      inst = mono_mempool_alloc (D.45876, 48);
      inst->data.op[1].const_val = 0;
      D.46601 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.46601;
      inst->prev = 0B;
      D.46602 = inst->prev;
      inst->next = D.46602;
      inst->opcode = 391;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.46603 = inst->sreg3;
      inst->sreg2 = D.46603;
      D.46604 = inst->sreg2;
      inst->sreg1 = D.46604;
      D.45883 = cfg->ip;
      inst->cil_code = D.45883;
      inst->dreg = klass_reg;
      inst->sreg1 = vtable_reg;
      inst->data.op[0].const_val = 0;
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      if (D.45888 != 0B) goto <D.46605>; else goto <D.46606>;
      <D.46605>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.45888->next = inst;
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      inst->prev = D.45888;
      D.45887 = cfg->cbb;
      D.45887->last_ins = inst;
      goto <D.46607>;
      <D.46606>:
      D.45887 = cfg->cbb;
      D.45887 = cfg->cbb;
      D.45887->last_ins = inst;
      D.45888 = D.45887->last_ins;
      D.45887->code = D.45888;
      <D.46607>:
    }
    {
      struct MonoInst * inst;

      D.45876 = cfg->mempool;
      inst = mono_mempool_alloc (D.45876, 48);
      inst->data.op[1].const_val = 0;
      D.46608 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.46608;
      inst->prev = 0B;
      D.46609 = inst->prev;
      inst->next = D.46609;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.46610 = inst->sreg3;
      inst->sreg2 = D.46610;
      D.46611 = inst->sreg2;
      inst->sreg1 = D.46611;
      D.45883 = cfg->ip;
      inst->cil_code = D.45883;
      inst->dreg = -1;
      inst->sreg1 = klass_reg;
      klass.483 = (int) klass;
      inst->data.op[1].const_val = klass.483;
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      if (D.45888 != 0B) goto <D.46613>; else goto <D.46614>;
      <D.46613>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.45888->next = inst;
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      inst->prev = D.45888;
      D.45887 = cfg->cbb;
      D.45887->last_ins = inst;
      goto <D.46615>;
      <D.46614>:
      D.45887 = cfg->cbb;
      D.45887 = cfg->cbb;
      D.45887->last_ins = inst;
      D.45888 = D.45887->last_ins;
      D.45887->code = D.45888;
      <D.46615>:
    }
    <D.46600>:
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.45876 = cfg->mempool;
      ins = mono_mempool_alloc (D.45876, 48);
      ins->data.op[1].const_val = 0;
      D.46616 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.46616;
      ins->prev = 0B;
      D.46617 = ins->prev;
      ins->next = D.46617;
      ins->opcode = 657;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.46618 = ins->sreg3;
      ins->sreg2 = D.46618;
      D.46619 = ins->sreg2;
      ins->sreg1 = D.46619;
      D.45883 = cfg->ip;
      ins->cil_code = D.45883;
      if (0 != 0) goto <D.46620>; else goto <D.46621>;
      <D.46620>:
      D.45876 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.45876, 172);
      D.45893 = cfg->num_bblocks;
      D.46622 = D.45893;
      D.46623 = D.46622 + 1;
      cfg->num_bblocks = D.46623;
      D.46624 = (int) D.46622;
      falsebb->block_num = D.46624;
      ins->data.op[0].target_block = false_bb;
      D.45887 = cfg->cbb;
      mono_link_bblock (cfg, D.45887, false_bb);
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      if (D.45888 != 0B) goto <D.46625>; else goto <D.46626>;
      <D.46625>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.45888->next = ins;
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      ins->prev = D.45888;
      D.45887 = cfg->cbb;
      D.45887->last_ins = ins;
      goto <D.46627>;
      <D.46626>:
      D.45887 = cfg->cbb;
      D.45887 = cfg->cbb;
      D.45887->last_ins = ins;
      D.45888 = D.45887->last_ins;
      D.45887->code = D.45888;
      <D.46627>:
      D.46628 = falsebb->cil_code;
      if (D.46628 != 0B) goto <D.46629>; else goto <D.46630>;
      <D.46629>:
      D.45932 = cfg->cil_offset_to_bb;
      D.46628 = falsebb->cil_code;
      D.46631 = (int) D.46628;
      D.45934 = cfg->cil_start;
      D.45935 = (int) D.45934;
      D.46632 = D.46631 - D.45935;
      D.46633 = (unsigned int) D.46632;
      D.46634 = D.46633 * 4;
      D.46635 = D.45932 + D.46634;
      *D.46635 = falsebb;
      <D.46630>:
      D.45940 = cfg->real_offset;
      falsebb->real_offset = D.45940;
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      if (D.45888 != 0B) goto <D.46639>; else goto <D.46636>;
      <D.46639>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.46640 = D.45888->opcode;
      D.46641 = D.46640 + 64981;
      D.46642 = D.46641 <= 9;
      D.46643 = D.46640 + 64874;
      D.46644 = D.46643 <= 9;
      D.46645 = D.46642 | D.46644;
      if (D.46645 != 0) goto <D.46637>; else goto <D.46646>;
      <D.46646>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.45952 = D.45888->opcode;
      D.45953 = D.45952 + 64884;
      if (D.45953 <= 9) goto <D.46637>; else goto <D.46636>;
      <D.46637>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.45954 = D.45888->data.op[1].many_blocks;
      D.45955 = D.45954 + 4;
      D.45956 = *D.45955;
      if (D.45956 == 0B) goto <D.46647>; else goto <D.46636>;
      <D.46647>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.45954 = D.45888->data.op[1].many_blocks;
      D.45955 = D.45954 + 4;
      *D.45955 = falsebb;
      D.45887 = cfg->cbb;
      mono_link_bblock (cfg, D.45887, falsebb);
      goto <D.46638>;
      <D.46636>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      if (D.45888 == 0B) goto <D.46648>; else goto <D.46650>;
      <D.46650>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.46651 = D.45888->opcode;
      D.46652 = D.46651 != 446;
      D.46653 = D.46651 != 763;
      D.46654 = D.46652 & D.46653;
      if (D.46654 != 0) goto <D.46655>; else goto <D.46649>;
      <D.46655>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.46656 = D.45888->opcode;
      D.46657 = D.46656 + 64981;
      D.46658 = D.46657 > 9;
      D.46659 = D.46656 + 64874;
      D.46660 = D.46659 > 9;
      D.46661 = D.46658 & D.46660;
      if (D.46661 != 0) goto <D.46662>; else goto <D.46649>;
      <D.46662>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.45952 = D.45888->opcode;
      D.45953 = D.45952 + 64884;
      if (D.45953 > 9) goto <D.46648>; else goto <D.46649>;
      <D.46648>:
      D.45887 = cfg->cbb;
      mono_link_bblock (cfg, D.45887, falsebb);
      <D.46649>:
      <D.46638>:
      D.45887 = cfg->cbb;
      D.45887->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.46663>;
      <D.46621>:
      D.45876 = cfg->mempool;
      D.46664 = mono_mempool_alloc (D.45876, 8);
      ins->data.op[1].many_blocks = D.46664;
      D.46665 = ins->data.op[1].many_blocks;
      *D.46665 = false_bb;
      D.46665 = ins->data.op[1].many_blocks;
      D.46666 = D.46665 + 4;
      *D.46666 = 0B;
      D.45887 = cfg->cbb;
      mono_link_bblock (cfg, D.45887, false_bb);
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      if (D.45888 != 0B) goto <D.46667>; else goto <D.46668>;
      <D.46667>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.45888->next = ins;
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      ins->prev = D.45888;
      D.45887 = cfg->cbb;
      D.45887->last_ins = ins;
      goto <D.46669>;
      <D.46668>:
      D.45887 = cfg->cbb;
      D.45887 = cfg->cbb;
      D.45887->last_ins = ins;
      D.45888 = D.45887->last_ins;
      D.45887->code = D.45888;
      <D.46669>:
      D.45980 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.45981 = D.45980 & 8;
      if (D.45981 == 0) goto <D.46670>; else goto <D.46671>;
      <D.46670>:
      D.45876 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.45876, 172);
      D.45893 = cfg->num_bblocks;
      D.46672 = D.45893;
      D.46673 = D.46672 + 1;
      cfg->num_bblocks = D.46673;
      D.46674 = (int) D.46672;
      falsebb->block_num = D.46674;
      D.46665 = ins->data.op[1].many_blocks;
      D.46666 = D.46665 + 4;
      *D.46666 = falsebb;
      D.45887 = cfg->cbb;
      mono_link_bblock (cfg, D.45887, falsebb);
      D.46628 = falsebb->cil_code;
      if (D.46628 != 0B) goto <D.46675>; else goto <D.46676>;
      <D.46675>:
      D.45932 = cfg->cil_offset_to_bb;
      D.46628 = falsebb->cil_code;
      D.46631 = (int) D.46628;
      D.45934 = cfg->cil_start;
      D.45935 = (int) D.45934;
      D.46632 = D.46631 - D.45935;
      D.46633 = (unsigned int) D.46632;
      D.46634 = D.46633 * 4;
      D.46635 = D.45932 + D.46634;
      *D.46635 = falsebb;
      <D.46676>:
      D.45940 = cfg->real_offset;
      falsebb->real_offset = D.45940;
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      if (D.45888 != 0B) goto <D.46680>; else goto <D.46677>;
      <D.46680>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.46681 = D.45888->opcode;
      D.46682 = D.46681 + 64981;
      D.46683 = D.46682 <= 9;
      D.46684 = D.46681 + 64874;
      D.46685 = D.46684 <= 9;
      D.46686 = D.46683 | D.46685;
      if (D.46686 != 0) goto <D.46678>; else goto <D.46687>;
      <D.46687>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.45952 = D.45888->opcode;
      D.45953 = D.45952 + 64884;
      if (D.45953 <= 9) goto <D.46678>; else goto <D.46677>;
      <D.46678>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.45954 = D.45888->data.op[1].many_blocks;
      D.45955 = D.45954 + 4;
      D.45956 = *D.45955;
      if (D.45956 == 0B) goto <D.46688>; else goto <D.46677>;
      <D.46688>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.45954 = D.45888->data.op[1].many_blocks;
      D.45955 = D.45954 + 4;
      *D.45955 = falsebb;
      D.45887 = cfg->cbb;
      mono_link_bblock (cfg, D.45887, falsebb);
      goto <D.46679>;
      <D.46677>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      if (D.45888 == 0B) goto <D.46689>; else goto <D.46691>;
      <D.46691>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.46692 = D.45888->opcode;
      D.46693 = D.46692 != 446;
      D.46694 = D.46692 != 763;
      D.46695 = D.46693 & D.46694;
      if (D.46695 != 0) goto <D.46696>; else goto <D.46690>;
      <D.46696>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.46697 = D.45888->opcode;
      D.46698 = D.46697 + 64981;
      D.46699 = D.46698 > 9;
      D.46700 = D.46697 + 64874;
      D.46701 = D.46700 > 9;
      D.46702 = D.46699 & D.46701;
      if (D.46702 != 0) goto <D.46703>; else goto <D.46690>;
      <D.46703>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.45952 = D.45888->opcode;
      D.45953 = D.45952 + 64884;
      if (D.45953 > 9) goto <D.46689>; else goto <D.46690>;
      <D.46689>:
      D.45887 = cfg->cbb;
      mono_link_bblock (cfg, D.45887, falsebb);
      <D.46690>:
      <D.46679>:
      D.45887 = cfg->cbb;
      D.45887->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.46704>;
      <D.46671>:
      D.45887 = cfg->cbb;
      D.45887->extended = 1;
      <D.46704>:
      <D.46663>:
    }
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.45876 = cfg->mempool;
      ins = mono_mempool_alloc (D.45876, 48);
      ins->data.op[1].const_val = 0;
      D.46705 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.46705;
      ins->prev = 0B;
      D.46706 = ins->prev;
      ins->next = D.46706;
      ins->opcode = 446;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.46707 = ins->sreg3;
      ins->sreg2 = D.46707;
      D.46708 = ins->sreg2;
      ins->sreg1 = D.46708;
      D.45883 = cfg->ip;
      ins->cil_code = D.45883;
      if (1 != 0) goto <D.46709>; else goto <D.46710>;
      <D.46709>:
      D.45876 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.45876, 172);
      D.45893 = cfg->num_bblocks;
      D.46711 = D.45893;
      D.46712 = D.46711 + 1;
      cfg->num_bblocks = D.46712;
      D.46713 = (int) D.46711;
      falsebb->block_num = D.46713;
      ins->data.op[0].target_block = is_null_bb;
      D.45887 = cfg->cbb;
      mono_link_bblock (cfg, D.45887, is_null_bb);
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      if (D.45888 != 0B) goto <D.46714>; else goto <D.46715>;
      <D.46714>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.45888->next = ins;
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      ins->prev = D.45888;
      D.45887 = cfg->cbb;
      D.45887->last_ins = ins;
      goto <D.46716>;
      <D.46715>:
      D.45887 = cfg->cbb;
      D.45887 = cfg->cbb;
      D.45887->last_ins = ins;
      D.45888 = D.45887->last_ins;
      D.45887->code = D.45888;
      <D.46716>:
      D.46717 = falsebb->cil_code;
      if (D.46717 != 0B) goto <D.46718>; else goto <D.46719>;
      <D.46718>:
      D.45932 = cfg->cil_offset_to_bb;
      D.46717 = falsebb->cil_code;
      D.46720 = (int) D.46717;
      D.45934 = cfg->cil_start;
      D.45935 = (int) D.45934;
      D.46721 = D.46720 - D.45935;
      D.46722 = (unsigned int) D.46721;
      D.46723 = D.46722 * 4;
      D.46724 = D.45932 + D.46723;
      *D.46724 = falsebb;
      <D.46719>:
      D.45940 = cfg->real_offset;
      falsebb->real_offset = D.45940;
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      if (D.45888 != 0B) goto <D.46728>; else goto <D.46725>;
      <D.46728>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.46729 = D.45888->opcode;
      D.46730 = D.46729 + 64981;
      D.46731 = D.46730 <= 9;
      D.46732 = D.46729 + 64874;
      D.46733 = D.46732 <= 9;
      D.46734 = D.46731 | D.46733;
      if (D.46734 != 0) goto <D.46726>; else goto <D.46735>;
      <D.46735>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.45952 = D.45888->opcode;
      D.45953 = D.45952 + 64884;
      if (D.45953 <= 9) goto <D.46726>; else goto <D.46725>;
      <D.46726>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.45954 = D.45888->data.op[1].many_blocks;
      D.45955 = D.45954 + 4;
      D.45956 = *D.45955;
      if (D.45956 == 0B) goto <D.46736>; else goto <D.46725>;
      <D.46736>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.45954 = D.45888->data.op[1].many_blocks;
      D.45955 = D.45954 + 4;
      *D.45955 = falsebb;
      D.45887 = cfg->cbb;
      mono_link_bblock (cfg, D.45887, falsebb);
      goto <D.46727>;
      <D.46725>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      if (D.45888 == 0B) goto <D.46737>; else goto <D.46739>;
      <D.46739>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.46740 = D.45888->opcode;
      D.46741 = D.46740 != 446;
      D.46742 = D.46740 != 763;
      D.46743 = D.46741 & D.46742;
      if (D.46743 != 0) goto <D.46744>; else goto <D.46738>;
      <D.46744>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.46745 = D.45888->opcode;
      D.46746 = D.46745 + 64981;
      D.46747 = D.46746 > 9;
      D.46748 = D.46745 + 64874;
      D.46749 = D.46748 > 9;
      D.46750 = D.46747 & D.46749;
      if (D.46750 != 0) goto <D.46751>; else goto <D.46738>;
      <D.46751>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.45952 = D.45888->opcode;
      D.45953 = D.45952 + 64884;
      if (D.45953 > 9) goto <D.46737>; else goto <D.46738>;
      <D.46737>:
      D.45887 = cfg->cbb;
      mono_link_bblock (cfg, D.45887, falsebb);
      <D.46738>:
      <D.46727>:
      D.45887 = cfg->cbb;
      D.45887->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.46752>;
      <D.46710>:
      D.45876 = cfg->mempool;
      D.46753 = mono_mempool_alloc (D.45876, 8);
      ins->data.op[1].many_blocks = D.46753;
      D.46754 = ins->data.op[1].many_blocks;
      *D.46754 = is_null_bb;
      D.46754 = ins->data.op[1].many_blocks;
      D.46755 = D.46754 + 4;
      *D.46755 = 0B;
      D.45887 = cfg->cbb;
      mono_link_bblock (cfg, D.45887, is_null_bb);
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      if (D.45888 != 0B) goto <D.46756>; else goto <D.46757>;
      <D.46756>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.45888->next = ins;
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      ins->prev = D.45888;
      D.45887 = cfg->cbb;
      D.45887->last_ins = ins;
      goto <D.46758>;
      <D.46757>:
      D.45887 = cfg->cbb;
      D.45887 = cfg->cbb;
      D.45887->last_ins = ins;
      D.45888 = D.45887->last_ins;
      D.45887->code = D.45888;
      <D.46758>:
      D.45980 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.45981 = D.45980 & 8;
      if (D.45981 == 0) goto <D.46759>; else goto <D.46760>;
      <D.46759>:
      D.45876 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.45876, 172);
      D.45893 = cfg->num_bblocks;
      D.46761 = D.45893;
      D.46762 = D.46761 + 1;
      cfg->num_bblocks = D.46762;
      D.46763 = (int) D.46761;
      falsebb->block_num = D.46763;
      D.46754 = ins->data.op[1].many_blocks;
      D.46755 = D.46754 + 4;
      *D.46755 = falsebb;
      D.45887 = cfg->cbb;
      mono_link_bblock (cfg, D.45887, falsebb);
      D.46717 = falsebb->cil_code;
      if (D.46717 != 0B) goto <D.46764>; else goto <D.46765>;
      <D.46764>:
      D.45932 = cfg->cil_offset_to_bb;
      D.46717 = falsebb->cil_code;
      D.46720 = (int) D.46717;
      D.45934 = cfg->cil_start;
      D.45935 = (int) D.45934;
      D.46721 = D.46720 - D.45935;
      D.46722 = (unsigned int) D.46721;
      D.46723 = D.46722 * 4;
      D.46724 = D.45932 + D.46723;
      *D.46724 = falsebb;
      <D.46765>:
      D.45940 = cfg->real_offset;
      falsebb->real_offset = D.45940;
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      if (D.45888 != 0B) goto <D.46769>; else goto <D.46766>;
      <D.46769>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.46770 = D.45888->opcode;
      D.46771 = D.46770 + 64981;
      D.46772 = D.46771 <= 9;
      D.46773 = D.46770 + 64874;
      D.46774 = D.46773 <= 9;
      D.46775 = D.46772 | D.46774;
      if (D.46775 != 0) goto <D.46767>; else goto <D.46776>;
      <D.46776>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.45952 = D.45888->opcode;
      D.45953 = D.45952 + 64884;
      if (D.45953 <= 9) goto <D.46767>; else goto <D.46766>;
      <D.46767>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.45954 = D.45888->data.op[1].many_blocks;
      D.45955 = D.45954 + 4;
      D.45956 = *D.45955;
      if (D.45956 == 0B) goto <D.46777>; else goto <D.46766>;
      <D.46777>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.45954 = D.45888->data.op[1].many_blocks;
      D.45955 = D.45954 + 4;
      *D.45955 = falsebb;
      D.45887 = cfg->cbb;
      mono_link_bblock (cfg, D.45887, falsebb);
      goto <D.46768>;
      <D.46766>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      if (D.45888 == 0B) goto <D.46778>; else goto <D.46780>;
      <D.46780>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.46781 = D.45888->opcode;
      D.46782 = D.46781 != 446;
      D.46783 = D.46781 != 763;
      D.46784 = D.46782 & D.46783;
      if (D.46784 != 0) goto <D.46785>; else goto <D.46779>;
      <D.46785>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.46786 = D.45888->opcode;
      D.46787 = D.46786 + 64981;
      D.46788 = D.46787 > 9;
      D.46789 = D.46786 + 64874;
      D.46790 = D.46789 > 9;
      D.46791 = D.46788 & D.46790;
      if (D.46791 != 0) goto <D.46792>; else goto <D.46779>;
      <D.46792>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.45952 = D.45888->opcode;
      D.45953 = D.45952 + 64884;
      if (D.45953 > 9) goto <D.46778>; else goto <D.46779>;
      <D.46778>:
      D.45887 = cfg->cbb;
      mono_link_bblock (cfg, D.45887, falsebb);
      <D.46779>:
      <D.46768>:
      D.45887 = cfg->cbb;
      D.45887->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.46793>;
      <D.46760>:
      D.45887 = cfg->cbb;
      D.45887->extended = 1;
      <D.46793>:
      <D.46752>:
    }
    goto <D.46577>;
    <D.46576>:
    {
      struct MonoInst * inst;

      D.45876 = cfg->mempool;
      inst = mono_mempool_alloc (D.45876, 48);
      inst->data.op[1].const_val = 0;
      D.46794 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.46794;
      inst->prev = 0B;
      D.46795 = inst->prev;
      inst->next = D.46795;
      inst->opcode = 391;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.46796 = inst->sreg3;
      inst->sreg2 = D.46796;
      D.46797 = inst->sreg2;
      inst->sreg1 = D.46797;
      D.45883 = cfg->ip;
      inst->cil_code = D.45883;
      inst->dreg = klass_reg;
      inst->sreg1 = vtable_reg;
      inst->data.op[0].const_val = 0;
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      if (D.45888 != 0B) goto <D.46798>; else goto <D.46799>;
      <D.46798>:
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      D.45888->next = inst;
      D.45887 = cfg->cbb;
      D.45888 = D.45887->last_ins;
      inst->prev = D.45888;
      D.45887 = cfg->cbb;
      D.45887->last_ins = inst;
      goto <D.46800>;
      <D.46799>:
      D.45887 = cfg->cbb;
      D.45887 = cfg->cbb;
      D.45887->last_ins = inst;
      D.45888 = D.45887->last_ins;
      D.45887->code = D.45888;
      <D.46800>:
    }
    mini_emit_isninst_cast_inst (cfg, klass_reg, klass, klass_inst, false_bb, is_null_bb);
    <D.46577>:
    <D.46575>:
    <D.46562>:
  }
  <D.46033>:
  D.46801 = false_bb->cil_code;
  if (D.46801 != 0B) goto <D.46802>; else goto <D.46803>;
  <D.46802>:
  D.45932 = cfg->cil_offset_to_bb;
  D.46801 = false_bb->cil_code;
  D.46804 = (int) D.46801;
  D.45934 = cfg->cil_start;
  D.45935 = (int) D.45934;
  D.46805 = D.46804 - D.45935;
  D.46806 = (unsigned int) D.46805;
  D.46807 = D.46806 * 4;
  D.46808 = D.45932 + D.46807;
  *D.46808 = false_bb;
  <D.46803>:
  D.45940 = cfg->real_offset;
  false_bb->real_offset = D.45940;
  D.45887 = cfg->cbb;
  D.45888 = D.45887->last_ins;
  if (D.45888 != 0B) goto <D.46812>; else goto <D.46809>;
  <D.46812>:
  D.45887 = cfg->cbb;
  D.45888 = D.45887->last_ins;
  D.46813 = D.45888->opcode;
  D.46814 = D.46813 + 64981;
  D.46815 = D.46814 <= 9;
  D.46816 = D.46813 + 64874;
  D.46817 = D.46816 <= 9;
  D.46818 = D.46815 | D.46817;
  if (D.46818 != 0) goto <D.46810>; else goto <D.46819>;
  <D.46819>:
  D.45887 = cfg->cbb;
  D.45888 = D.45887->last_ins;
  D.45952 = D.45888->opcode;
  D.45953 = D.45952 + 64884;
  if (D.45953 <= 9) goto <D.46810>; else goto <D.46809>;
  <D.46810>:
  D.45887 = cfg->cbb;
  D.45888 = D.45887->last_ins;
  D.45954 = D.45888->data.op[1].many_blocks;
  D.45955 = D.45954 + 4;
  D.45956 = *D.45955;
  if (D.45956 == 0B) goto <D.46820>; else goto <D.46809>;
  <D.46820>:
  D.45887 = cfg->cbb;
  D.45888 = D.45887->last_ins;
  D.45954 = D.45888->data.op[1].many_blocks;
  D.45955 = D.45954 + 4;
  *D.45955 = false_bb;
  D.45887 = cfg->cbb;
  mono_link_bblock (cfg, D.45887, false_bb);
  goto <D.46811>;
  <D.46809>:
  D.45887 = cfg->cbb;
  D.45888 = D.45887->last_ins;
  if (D.45888 == 0B) goto <D.46821>; else goto <D.46823>;
  <D.46823>:
  D.45887 = cfg->cbb;
  D.45888 = D.45887->last_ins;
  D.46824 = D.45888->opcode;
  D.46825 = D.46824 != 446;
  D.46826 = D.46824 != 763;
  D.46827 = D.46825 & D.46826;
  if (D.46827 != 0) goto <D.46828>; else goto <D.46822>;
  <D.46828>:
  D.45887 = cfg->cbb;
  D.45888 = D.45887->last_ins;
  D.46829 = D.45888->opcode;
  D.46830 = D.46829 + 64981;
  D.46831 = D.46830 > 9;
  D.46832 = D.46829 + 64874;
  D.46833 = D.46832 > 9;
  D.46834 = D.46831 & D.46833;
  if (D.46834 != 0) goto <D.46835>; else goto <D.46822>;
  <D.46835>:
  D.45887 = cfg->cbb;
  D.45888 = D.45887->last_ins;
  D.45952 = D.45888->opcode;
  D.45953 = D.45952 + 64884;
  if (D.45953 > 9) goto <D.46821>; else goto <D.46822>;
  <D.46821>:
  D.45887 = cfg->cbb;
  mono_link_bblock (cfg, D.45887, false_bb);
  <D.46822>:
  <D.46811>:
  D.45887 = cfg->cbb;
  D.45887->next_bb = false_bb;
  cfg->cbb = false_bb;
  {
    struct MonoInst * inst;

    D.45876 = cfg->mempool;
    inst = mono_mempool_alloc (D.45876, 48);
    inst->data.op[1].const_val = 0;
    D.46836 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.46836;
    inst->prev = 0B;
    D.46837 = inst->prev;
    inst->next = D.46837;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.46838 = inst->sreg3;
    inst->sreg2 = D.46838;
    D.46839 = inst->sreg2;
    inst->sreg1 = D.46839;
    D.45883 = cfg->ip;
    inst->cil_code = D.45883;
    inst->dreg = res_reg;
    inst->data.op[0].p = 0B;
    inst->type = 3;
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    if (D.45888 != 0B) goto <D.46840>; else goto <D.46841>;
    <D.46840>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    D.45888->next = inst;
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    inst->prev = D.45888;
    D.45887 = cfg->cbb;
    D.45887->last_ins = inst;
    goto <D.46842>;
    <D.46841>:
    D.45887 = cfg->cbb;
    D.45887 = cfg->cbb;
    D.45887->last_ins = inst;
    D.45888 = D.45887->last_ins;
    D.45887->code = D.45888;
    <D.46842>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.45876 = cfg->mempool;
    ins = mono_mempool_alloc (D.45876, 48);
    ins->data.op[1].const_val = 0;
    D.46843 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.46843;
    ins->prev = 0B;
    D.46844 = ins->prev;
    ins->next = D.46844;
    ins->opcode = 446;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.46845 = ins->sreg3;
    ins->sreg2 = D.46845;
    D.46846 = ins->sreg2;
    ins->sreg1 = D.46846;
    D.45883 = cfg->ip;
    ins->cil_code = D.45883;
    if (1 != 0) goto <D.46847>; else goto <D.46848>;
    <D.46847>:
    D.45876 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.45876, 172);
    D.45893 = cfg->num_bblocks;
    D.46849 = D.45893;
    D.46850 = D.46849 + 1;
    cfg->num_bblocks = D.46850;
    D.46851 = (int) D.46849;
    falsebb->block_num = D.46851;
    ins->data.op[0].target_block = end_bb;
    D.45887 = cfg->cbb;
    mono_link_bblock (cfg, D.45887, end_bb);
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    if (D.45888 != 0B) goto <D.46852>; else goto <D.46853>;
    <D.46852>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    D.45888->next = ins;
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    ins->prev = D.45888;
    D.45887 = cfg->cbb;
    D.45887->last_ins = ins;
    goto <D.46854>;
    <D.46853>:
    D.45887 = cfg->cbb;
    D.45887 = cfg->cbb;
    D.45887->last_ins = ins;
    D.45888 = D.45887->last_ins;
    D.45887->code = D.45888;
    <D.46854>:
    D.46855 = falsebb->cil_code;
    if (D.46855 != 0B) goto <D.46856>; else goto <D.46857>;
    <D.46856>:
    D.45932 = cfg->cil_offset_to_bb;
    D.46855 = falsebb->cil_code;
    D.46858 = (int) D.46855;
    D.45934 = cfg->cil_start;
    D.45935 = (int) D.45934;
    D.46859 = D.46858 - D.45935;
    D.46860 = (unsigned int) D.46859;
    D.46861 = D.46860 * 4;
    D.46862 = D.45932 + D.46861;
    *D.46862 = falsebb;
    <D.46857>:
    D.45940 = cfg->real_offset;
    falsebb->real_offset = D.45940;
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    if (D.45888 != 0B) goto <D.46866>; else goto <D.46863>;
    <D.46866>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    D.46867 = D.45888->opcode;
    D.46868 = D.46867 + 64981;
    D.46869 = D.46868 <= 9;
    D.46870 = D.46867 + 64874;
    D.46871 = D.46870 <= 9;
    D.46872 = D.46869 | D.46871;
    if (D.46872 != 0) goto <D.46864>; else goto <D.46873>;
    <D.46873>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    D.45952 = D.45888->opcode;
    D.45953 = D.45952 + 64884;
    if (D.45953 <= 9) goto <D.46864>; else goto <D.46863>;
    <D.46864>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    D.45954 = D.45888->data.op[1].many_blocks;
    D.45955 = D.45954 + 4;
    D.45956 = *D.45955;
    if (D.45956 == 0B) goto <D.46874>; else goto <D.46863>;
    <D.46874>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    D.45954 = D.45888->data.op[1].many_blocks;
    D.45955 = D.45954 + 4;
    *D.45955 = falsebb;
    D.45887 = cfg->cbb;
    mono_link_bblock (cfg, D.45887, falsebb);
    goto <D.46865>;
    <D.46863>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    if (D.45888 == 0B) goto <D.46875>; else goto <D.46877>;
    <D.46877>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    D.46878 = D.45888->opcode;
    D.46879 = D.46878 != 446;
    D.46880 = D.46878 != 763;
    D.46881 = D.46879 & D.46880;
    if (D.46881 != 0) goto <D.46882>; else goto <D.46876>;
    <D.46882>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    D.46883 = D.45888->opcode;
    D.46884 = D.46883 + 64981;
    D.46885 = D.46884 > 9;
    D.46886 = D.46883 + 64874;
    D.46887 = D.46886 > 9;
    D.46888 = D.46885 & D.46887;
    if (D.46888 != 0) goto <D.46889>; else goto <D.46876>;
    <D.46889>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    D.45952 = D.45888->opcode;
    D.45953 = D.45952 + 64884;
    if (D.45953 > 9) goto <D.46875>; else goto <D.46876>;
    <D.46875>:
    D.45887 = cfg->cbb;
    mono_link_bblock (cfg, D.45887, falsebb);
    <D.46876>:
    <D.46865>:
    D.45887 = cfg->cbb;
    D.45887->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.46890>;
    <D.46848>:
    D.45876 = cfg->mempool;
    D.46891 = mono_mempool_alloc (D.45876, 8);
    ins->data.op[1].many_blocks = D.46891;
    D.46892 = ins->data.op[1].many_blocks;
    *D.46892 = end_bb;
    D.46892 = ins->data.op[1].many_blocks;
    D.46893 = D.46892 + 4;
    *D.46893 = 0B;
    D.45887 = cfg->cbb;
    mono_link_bblock (cfg, D.45887, end_bb);
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    if (D.45888 != 0B) goto <D.46894>; else goto <D.46895>;
    <D.46894>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    D.45888->next = ins;
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    ins->prev = D.45888;
    D.45887 = cfg->cbb;
    D.45887->last_ins = ins;
    goto <D.46896>;
    <D.46895>:
    D.45887 = cfg->cbb;
    D.45887 = cfg->cbb;
    D.45887->last_ins = ins;
    D.45888 = D.45887->last_ins;
    D.45887->code = D.45888;
    <D.46896>:
    D.45980 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.45981 = D.45980 & 8;
    if (D.45981 == 0) goto <D.46897>; else goto <D.46898>;
    <D.46897>:
    D.45876 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.45876, 172);
    D.45893 = cfg->num_bblocks;
    D.46899 = D.45893;
    D.46900 = D.46899 + 1;
    cfg->num_bblocks = D.46900;
    D.46901 = (int) D.46899;
    falsebb->block_num = D.46901;
    D.46892 = ins->data.op[1].many_blocks;
    D.46893 = D.46892 + 4;
    *D.46893 = falsebb;
    D.45887 = cfg->cbb;
    mono_link_bblock (cfg, D.45887, falsebb);
    D.46855 = falsebb->cil_code;
    if (D.46855 != 0B) goto <D.46902>; else goto <D.46903>;
    <D.46902>:
    D.45932 = cfg->cil_offset_to_bb;
    D.46855 = falsebb->cil_code;
    D.46858 = (int) D.46855;
    D.45934 = cfg->cil_start;
    D.45935 = (int) D.45934;
    D.46859 = D.46858 - D.45935;
    D.46860 = (unsigned int) D.46859;
    D.46861 = D.46860 * 4;
    D.46862 = D.45932 + D.46861;
    *D.46862 = falsebb;
    <D.46903>:
    D.45940 = cfg->real_offset;
    falsebb->real_offset = D.45940;
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    if (D.45888 != 0B) goto <D.46907>; else goto <D.46904>;
    <D.46907>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    D.46908 = D.45888->opcode;
    D.46909 = D.46908 + 64981;
    D.46910 = D.46909 <= 9;
    D.46911 = D.46908 + 64874;
    D.46912 = D.46911 <= 9;
    D.46913 = D.46910 | D.46912;
    if (D.46913 != 0) goto <D.46905>; else goto <D.46914>;
    <D.46914>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    D.45952 = D.45888->opcode;
    D.45953 = D.45952 + 64884;
    if (D.45953 <= 9) goto <D.46905>; else goto <D.46904>;
    <D.46905>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    D.45954 = D.45888->data.op[1].many_blocks;
    D.45955 = D.45954 + 4;
    D.45956 = *D.45955;
    if (D.45956 == 0B) goto <D.46915>; else goto <D.46904>;
    <D.46915>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    D.45954 = D.45888->data.op[1].many_blocks;
    D.45955 = D.45954 + 4;
    *D.45955 = falsebb;
    D.45887 = cfg->cbb;
    mono_link_bblock (cfg, D.45887, falsebb);
    goto <D.46906>;
    <D.46904>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    if (D.45888 == 0B) goto <D.46916>; else goto <D.46918>;
    <D.46918>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    D.46919 = D.45888->opcode;
    D.46920 = D.46919 != 446;
    D.46921 = D.46919 != 763;
    D.46922 = D.46920 & D.46921;
    if (D.46922 != 0) goto <D.46923>; else goto <D.46917>;
    <D.46923>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    D.46924 = D.45888->opcode;
    D.46925 = D.46924 + 64981;
    D.46926 = D.46925 > 9;
    D.46927 = D.46924 + 64874;
    D.46928 = D.46927 > 9;
    D.46929 = D.46926 & D.46928;
    if (D.46929 != 0) goto <D.46930>; else goto <D.46917>;
    <D.46930>:
    D.45887 = cfg->cbb;
    D.45888 = D.45887->last_ins;
    D.45952 = D.45888->opcode;
    D.45953 = D.45952 + 64884;
    if (D.45953 > 9) goto <D.46916>; else goto <D.46917>;
    <D.46916>:
    D.45887 = cfg->cbb;
    mono_link_bblock (cfg, D.45887, falsebb);
    <D.46917>:
    <D.46906>:
    D.45887 = cfg->cbb;
    D.45887->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.46931>;
    <D.46898>:
    D.45887 = cfg->cbb;
    D.45887->extended = 1;
    <D.46931>:
    <D.46890>:
  }
  D.46932 = is_null_bb->cil_code;
  if (D.46932 != 0B) goto <D.46933>; else goto <D.46934>;
  <D.46933>:
  D.45932 = cfg->cil_offset_to_bb;
  D.46932 = is_null_bb->cil_code;
  D.46935 = (int) D.46932;
  D.45934 = cfg->cil_start;
  D.45935 = (int) D.45934;
  D.46936 = D.46935 - D.45935;
  D.46937 = (unsigned int) D.46936;
  D.46938 = D.46937 * 4;
  D.46939 = D.45932 + D.46938;
  *D.46939 = is_null_bb;
  <D.46934>:
  D.45940 = cfg->real_offset;
  is_null_bb->real_offset = D.45940;
  D.45887 = cfg->cbb;
  D.45888 = D.45887->last_ins;
  if (D.45888 != 0B) goto <D.46943>; else goto <D.46940>;
  <D.46943>:
  D.45887 = cfg->cbb;
  D.45888 = D.45887->last_ins;
  D.46944 = D.45888->opcode;
  D.46945 = D.46944 + 64981;
  D.46946 = D.46945 <= 9;
  D.46947 = D.46944 + 64874;
  D.46948 = D.46947 <= 9;
  D.46949 = D.46946 | D.46948;
  if (D.46949 != 0) goto <D.46941>; else goto <D.46950>;
  <D.46950>:
  D.45887 = cfg->cbb;
  D.45888 = D.45887->last_ins;
  D.45952 = D.45888->opcode;
  D.45953 = D.45952 + 64884;
  if (D.45953 <= 9) goto <D.46941>; else goto <D.46940>;
  <D.46941>:
  D.45887 = cfg->cbb;
  D.45888 = D.45887->last_ins;
  D.45954 = D.45888->data.op[1].many_blocks;
  D.45955 = D.45954 + 4;
  D.45956 = *D.45955;
  if (D.45956 == 0B) goto <D.46951>; else goto <D.46940>;
  <D.46951>:
  D.45887 = cfg->cbb;
  D.45888 = D.45887->last_ins;
  D.45954 = D.45888->data.op[1].many_blocks;
  D.45955 = D.45954 + 4;
  *D.45955 = is_null_bb;
  D.45887 = cfg->cbb;
  mono_link_bblock (cfg, D.45887, is_null_bb);
  goto <D.46942>;
  <D.46940>:
  D.45887 = cfg->cbb;
  D.45888 = D.45887->last_ins;
  if (D.45888 == 0B) goto <D.46952>; else goto <D.46954>;
  <D.46954>:
  D.45887 = cfg->cbb;
  D.45888 = D.45887->last_ins;
  D.46955 = D.45888->opcode;
  D.46956 = D.46955 != 446;
  D.46957 = D.46955 != 763;
  D.46958 = D.46956 & D.46957;
  if (D.46958 != 0) goto <D.46959>; else goto <D.46953>;
  <D.46959>:
  D.45887 = cfg->cbb;
  D.45888 = D.45887->last_ins;
  D.46960 = D.45888->opcode;
  D.46961 = D.46960 + 64981;
  D.46962 = D.46961 > 9;
  D.46963 = D.46960 + 64874;
  D.46964 = D.46963 > 9;
  D.46965 = D.46962 & D.46964;
  if (D.46965 != 0) goto <D.46966>; else goto <D.46953>;
  <D.46966>:
  D.45887 = cfg->cbb;
  D.45888 = D.45887->last_ins;
  D.45952 = D.45888->opcode;
  D.45953 = D.45952 + 64884;
  if (D.45953 > 9) goto <D.46952>; else goto <D.46953>;
  <D.46952>:
  D.45887 = cfg->cbb;
  mono_link_bblock (cfg, D.45887, is_null_bb);
  <D.46953>:
  <D.46942>:
  D.45887 = cfg->cbb;
  D.45887->next_bb = is_null_bb;
  cfg->cbb = is_null_bb;
  D.46967 = end_bb->cil_code;
  if (D.46967 != 0B) goto <D.46968>; else goto <D.46969>;
  <D.46968>:
  D.45932 = cfg->cil_offset_to_bb;
  D.46967 = end_bb->cil_code;
  D.46970 = (int) D.46967;
  D.45934 = cfg->cil_start;
  D.45935 = (int) D.45934;
  D.46971 = D.46970 - D.45935;
  D.46972 = (unsigned int) D.46971;
  D.46973 = D.46972 * 4;
  D.46974 = D.45932 + D.46973;
  *D.46974 = end_bb;
  <D.46969>:
  D.45940 = cfg->real_offset;
  end_bb->real_offset = D.45940;
  D.45887 = cfg->cbb;
  D.45888 = D.45887->last_ins;
  if (D.45888 != 0B) goto <D.46978>; else goto <D.46975>;
  <D.46978>:
  D.45887 = cfg->cbb;
  D.45888 = D.45887->last_ins;
  D.46979 = D.45888->opcode;
  D.46980 = D.46979 + 64981;
  D.46981 = D.46980 <= 9;
  D.46982 = D.46979 + 64874;
  D.46983 = D.46982 <= 9;
  D.46984 = D.46981 | D.46983;
  if (D.46984 != 0) goto <D.46976>; else goto <D.46985>;
  <D.46985>:
  D.45887 = cfg->cbb;
  D.45888 = D.45887->last_ins;
  D.45952 = D.45888->opcode;
  D.45953 = D.45952 + 64884;
  if (D.45953 <= 9) goto <D.46976>; else goto <D.46975>;
  <D.46976>:
  D.45887 = cfg->cbb;
  D.45888 = D.45887->last_ins;
  D.45954 = D.45888->data.op[1].many_blocks;
  D.45955 = D.45954 + 4;
  D.45956 = *D.45955;
  if (D.45956 == 0B) goto <D.46986>; else goto <D.46975>;
  <D.46986>:
  D.45887 = cfg->cbb;
  D.45888 = D.45887->last_ins;
  D.45954 = D.45888->data.op[1].many_blocks;
  D.45955 = D.45954 + 4;
  *D.45955 = end_bb;
  D.45887 = cfg->cbb;
  mono_link_bblock (cfg, D.45887, end_bb);
  goto <D.46977>;
  <D.46975>:
  D.45887 = cfg->cbb;
  D.45888 = D.45887->last_ins;
  if (D.45888 == 0B) goto <D.46987>; else goto <D.46989>;
  <D.46989>:
  D.45887 = cfg->cbb;
  D.45888 = D.45887->last_ins;
  D.46990 = D.45888->opcode;
  D.46991 = D.46990 != 446;
  D.46992 = D.46990 != 763;
  D.46993 = D.46991 & D.46992;
  if (D.46993 != 0) goto <D.46994>; else goto <D.46988>;
  <D.46994>:
  D.45887 = cfg->cbb;
  D.45888 = D.45887->last_ins;
  D.46995 = D.45888->opcode;
  D.46996 = D.46995 + 64981;
  D.46997 = D.46996 > 9;
  D.46998 = D.46995 + 64874;
  D.46999 = D.46998 > 9;
  D.47000 = D.46997 & D.46999;
  if (D.47000 != 0) goto <D.47001>; else goto <D.46988>;
  <D.47001>:
  D.45887 = cfg->cbb;
  D.45888 = D.45887->last_ins;
  D.45952 = D.45888->opcode;
  D.45953 = D.45952 + 64884;
  if (D.45953 > 9) goto <D.46987>; else goto <D.46988>;
  <D.46987>:
  D.45887 = cfg->cbb;
  mono_link_bblock (cfg, D.45887, end_bb);
  <D.46988>:
  <D.46977>:
  D.45887 = cfg->cbb;
  D.45887->next_bb = end_bb;
  cfg->cbb = end_bb;
  D.45892 = ins;
  return D.45892;
}


mini_emit_iface_cast (struct MonoCompile * cfg, int vtable_reg, struct MonoClass * klass, struct MonoBasicBlock * false_target, struct MonoBasicBlock * true_target)
{
  unsigned int D.47005;
  struct MonoMemPool * D.47006;
  int D.47007;
  struct MonoInst * D.47008;
  int D.47009;
  int D.47010;
  const unsigned char * D.47011;
  struct MonoBasicBlock * D.47012;
  struct MonoInst * D.47013;
  int D.47019;
  struct MonoInst * D.47020;
  int D.47021;
  int D.47022;
  unsigned int D.47025;
  unsigned int D.47026;
  unsigned int D.47027;
  int D.47028;
  unsigned char * D.47032;
  struct MonoBasicBlock * * D.47035;
  int D.47036;
  unsigned char * D.47037;
  int D.47038;
  int D.47039;
  unsigned int D.47040;
  unsigned int D.47041;
  struct MonoBasicBlock * * D.47042;
  unsigned int D.47043;
  short unsigned int D.47048;
  short unsigned int D.47049;
  _Bool D.47050;
  short unsigned int D.47051;
  _Bool D.47052;
  _Bool D.47053;
  short unsigned int D.47055;
  short unsigned int D.47056;
  struct MonoBasicBlock * * D.47057;
  struct MonoBasicBlock * * D.47058;
  struct MonoBasicBlock * D.47059;
  short unsigned int D.47064;
  _Bool D.47065;
  _Bool D.47066;
  _Bool D.47067;
  short unsigned int D.47069;
  short unsigned int D.47070;
  _Bool D.47071;
  short unsigned int D.47072;
  _Bool D.47073;
  _Bool D.47074;
  void * D.47077;
  struct MonoBasicBlock * * D.47078;
  struct MonoBasicBlock * * D.47079;
  unsigned char D.47083;
  unsigned char D.47084;
  unsigned int D.47087;
  unsigned int D.47088;
  int D.47089;
  short unsigned int D.47096;
  short unsigned int D.47097;
  _Bool D.47098;
  short unsigned int D.47099;
  _Bool D.47100;
  _Bool D.47101;
  short unsigned int D.47107;
  _Bool D.47108;
  _Bool D.47109;
  _Bool D.47110;
  short unsigned int D.47112;
  short unsigned int D.47113;
  _Bool D.47114;
  short unsigned int D.47115;
  _Bool D.47116;
  _Bool D.47117;
  int D.47121;
  struct MonoInst * D.47122;
  int D.47123;
  int D.47124;
  int intf_reg;

  D.47005 = alloc_preg (cfg);
  intf_reg = (int) D.47005;
  mini_emit_max_iid_check_vtable (cfg, vtable_reg, klass, false_target);
  mini_emit_load_intf_bit_reg_vtable (cfg, intf_reg, vtable_reg, klass);
  {
    struct MonoInst * inst;

    D.47006 = cfg->mempool;
    inst = mono_mempool_alloc (D.47006, 48);
    inst->data.op[1].const_val = 0;
    D.47007 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47007;
    inst->prev = 0B;
    D.47008 = inst->prev;
    inst->next = D.47008;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47009 = inst->sreg3;
    inst->sreg2 = D.47009;
    D.47010 = inst->sreg2;
    inst->sreg1 = D.47010;
    D.47011 = cfg->ip;
    inst->cil_code = D.47011;
    inst->dreg = -1;
    inst->sreg1 = intf_reg;
    inst->data.op[1].const_val = 0;
    D.47012 = cfg->cbb;
    D.47013 = D.47012->last_ins;
    if (D.47013 != 0B) goto <D.47014>; else goto <D.47015>;
    <D.47014>:
    D.47012 = cfg->cbb;
    D.47013 = D.47012->last_ins;
    D.47013->next = inst;
    D.47012 = cfg->cbb;
    D.47013 = D.47012->last_ins;
    inst->prev = D.47013;
    D.47012 = cfg->cbb;
    D.47012->last_ins = inst;
    goto <D.47016>;
    <D.47015>:
    D.47012 = cfg->cbb;
    D.47012 = cfg->cbb;
    D.47012->last_ins = inst;
    D.47013 = D.47012->last_ins;
    D.47012->code = D.47013;
    <D.47016>:
  }
  if (true_target != 0B) goto <D.47017>; else goto <D.47018>;
  <D.47017>:
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.47006 = cfg->mempool;
    ins = mono_mempool_alloc (D.47006, 48);
    ins->data.op[1].const_val = 0;
    D.47019 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.47019;
    ins->prev = 0B;
    D.47020 = ins->prev;
    ins->next = D.47020;
    ins->opcode = 657;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.47021 = ins->sreg3;
    ins->sreg2 = D.47021;
    D.47022 = ins->sreg2;
    ins->sreg1 = D.47022;
    D.47011 = cfg->ip;
    ins->cil_code = D.47011;
    if (0 != 0) goto <D.47023>; else goto <D.47024>;
    <D.47023>:
    D.47006 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.47006, 172);
    D.47025 = cfg->num_bblocks;
    D.47026 = D.47025;
    D.47027 = D.47026 + 1;
    cfg->num_bblocks = D.47027;
    D.47028 = (int) D.47026;
    falsebb->block_num = D.47028;
    ins->data.op[0].target_block = true_target;
    D.47012 = cfg->cbb;
    mono_link_bblock (cfg, D.47012, true_target);
    D.47012 = cfg->cbb;
    D.47013 = D.47012->last_ins;
    if (D.47013 != 0B) goto <D.47029>; else goto <D.47030>;
    <D.47029>:
    D.47012 = cfg->cbb;
    D.47013 = D.47012->last_ins;
    D.47013->next = ins;
    D.47012 = cfg->cbb;
    D.47013 = D.47012->last_ins;
    ins->prev = D.47013;
    D.47012 = cfg->cbb;
    D.47012->last_ins = ins;
    goto <D.47031>;
    <D.47030>:
    D.47012 = cfg->cbb;
    D.47012 = cfg->cbb;
    D.47012->last_ins = ins;
    D.47013 = D.47012->last_ins;
    D.47012->code = D.47013;
    <D.47031>:
    D.47032 = falsebb->cil_code;
    if (D.47032 != 0B) goto <D.47033>; else goto <D.47034>;
    <D.47033>:
    D.47035 = cfg->cil_offset_to_bb;
    D.47032 = falsebb->cil_code;
    D.47036 = (int) D.47032;
    D.47037 = cfg->cil_start;
    D.47038 = (int) D.47037;
    D.47039 = D.47036 - D.47038;
    D.47040 = (unsigned int) D.47039;
    D.47041 = D.47040 * 4;
    D.47042 = D.47035 + D.47041;
    *D.47042 = falsebb;
    <D.47034>:
    D.47043 = cfg->real_offset;
    falsebb->real_offset = D.47043;
    D.47012 = cfg->cbb;
    D.47013 = D.47012->last_ins;
    if (D.47013 != 0B) goto <D.47047>; else goto <D.47044>;
    <D.47047>:
    D.47012 = cfg->cbb;
    D.47013 = D.47012->last_ins;
    D.47048 = D.47013->opcode;
    D.47049 = D.47048 + 64981;
    D.47050 = D.47049 <= 9;
    D.47051 = D.47048 + 64874;
    D.47052 = D.47051 <= 9;
    D.47053 = D.47050 | D.47052;
    if (D.47053 != 0) goto <D.47045>; else goto <D.47054>;
    <D.47054>:
    D.47012 = cfg->cbb;
    D.47013 = D.47012->last_ins;
    D.47055 = D.47013->opcode;
    D.47056 = D.47055 + 64884;
    if (D.47056 <= 9) goto <D.47045>; else goto <D.47044>;
    <D.47045>:
    D.47012 = cfg->cbb;
    D.47013 = D.47012->last_ins;
    D.47057 = D.47013->data.op[1].many_blocks;
    D.47058 = D.47057 + 4;
    D.47059 = *D.47058;
    if (D.47059 == 0B) goto <D.47060>; else goto <D.47044>;
    <D.47060>:
    D.47012 = cfg->cbb;
    D.47013 = D.47012->last_ins;
    D.47057 = D.47013->data.op[1].many_blocks;
    D.47058 = D.47057 + 4;
    *D.47058 = falsebb;
    D.47012 = cfg->cbb;
    mono_link_bblock (cfg, D.47012, falsebb);
    goto <D.47046>;
    <D.47044>:
    D.47012 = cfg->cbb;
    D.47013 = D.47012->last_ins;
    if (D.47013 == 0B) goto <D.47061>; else goto <D.47063>;
    <D.47063>:
    D.47012 = cfg->cbb;
    D.47013 = D.47012->last_ins;
    D.47064 = D.47013->opcode;
    D.47065 = D.47064 != 446;
    D.47066 = D.47064 != 763;
    D.47067 = D.47065 & D.47066;
    if (D.47067 != 0) goto <D.47068>; else goto <D.47062>;
    <D.47068>:
    D.47012 = cfg->cbb;
    D.47013 = D.47012->last_ins;
    D.47069 = D.47013->opcode;
    D.47070 = D.47069 + 64981;
    D.47071 = D.47070 > 9;
    D.47072 = D.47069 + 64874;
    D.47073 = D.47072 > 9;
    D.47074 = D.47071 & D.47073;
    if (D.47074 != 0) goto <D.47075>; else goto <D.47062>;
    <D.47075>:
    D.47012 = cfg->cbb;
    D.47013 = D.47012->last_ins;
    D.47055 = D.47013->opcode;
    D.47056 = D.47055 + 64884;
    if (D.47056 > 9) goto <D.47061>; else goto <D.47062>;
    <D.47061>:
    D.47012 = cfg->cbb;
    mono_link_bblock (cfg, D.47012, falsebb);
    <D.47062>:
    <D.47046>:
    D.47012 = cfg->cbb;
    D.47012->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.47076>;
    <D.47024>:
    D.47006 = cfg->mempool;
    D.47077 = mono_mempool_alloc (D.47006, 8);
    ins->data.op[1].many_blocks = D.47077;
    D.47078 = ins->data.op[1].many_blocks;
    *D.47078 = true_target;
    D.47078 = ins->data.op[1].many_blocks;
    D.47079 = D.47078 + 4;
    *D.47079 = 0B;
    D.47012 = cfg->cbb;
    mono_link_bblock (cfg, D.47012, true_target);
    D.47012 = cfg->cbb;
    D.47013 = D.47012->last_ins;
    if (D.47013 != 0B) goto <D.47080>; else goto <D.47081>;
    <D.47080>:
    D.47012 = cfg->cbb;
    D.47013 = D.47012->last_ins;
    D.47013->next = ins;
    D.47012 = cfg->cbb;
    D.47013 = D.47012->last_ins;
    ins->prev = D.47013;
    D.47012 = cfg->cbb;
    D.47012->last_ins = ins;
    goto <D.47082>;
    <D.47081>:
    D.47012 = cfg->cbb;
    D.47012 = cfg->cbb;
    D.47012->last_ins = ins;
    D.47013 = D.47012->last_ins;
    D.47012->code = D.47013;
    <D.47082>:
    D.47083 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.47084 = D.47083 & 8;
    if (D.47084 == 0) goto <D.47085>; else goto <D.47086>;
    <D.47085>:
    D.47006 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.47006, 172);
    D.47025 = cfg->num_bblocks;
    D.47087 = D.47025;
    D.47088 = D.47087 + 1;
    cfg->num_bblocks = D.47088;
    D.47089 = (int) D.47087;
    falsebb->block_num = D.47089;
    D.47078 = ins->data.op[1].many_blocks;
    D.47079 = D.47078 + 4;
    *D.47079 = falsebb;
    D.47012 = cfg->cbb;
    mono_link_bblock (cfg, D.47012, falsebb);
    D.47032 = falsebb->cil_code;
    if (D.47032 != 0B) goto <D.47090>; else goto <D.47091>;
    <D.47090>:
    D.47035 = cfg->cil_offset_to_bb;
    D.47032 = falsebb->cil_code;
    D.47036 = (int) D.47032;
    D.47037 = cfg->cil_start;
    D.47038 = (int) D.47037;
    D.47039 = D.47036 - D.47038;
    D.47040 = (unsigned int) D.47039;
    D.47041 = D.47040 * 4;
    D.47042 = D.47035 + D.47041;
    *D.47042 = falsebb;
    <D.47091>:
    D.47043 = cfg->real_offset;
    falsebb->real_offset = D.47043;
    D.47012 = cfg->cbb;
    D.47013 = D.47012->last_ins;
    if (D.47013 != 0B) goto <D.47095>; else goto <D.47092>;
    <D.47095>:
    D.47012 = cfg->cbb;
    D.47013 = D.47012->last_ins;
    D.47096 = D.47013->opcode;
    D.47097 = D.47096 + 64981;
    D.47098 = D.47097 <= 9;
    D.47099 = D.47096 + 64874;
    D.47100 = D.47099 <= 9;
    D.47101 = D.47098 | D.47100;
    if (D.47101 != 0) goto <D.47093>; else goto <D.47102>;
    <D.47102>:
    D.47012 = cfg->cbb;
    D.47013 = D.47012->last_ins;
    D.47055 = D.47013->opcode;
    D.47056 = D.47055 + 64884;
    if (D.47056 <= 9) goto <D.47093>; else goto <D.47092>;
    <D.47093>:
    D.47012 = cfg->cbb;
    D.47013 = D.47012->last_ins;
    D.47057 = D.47013->data.op[1].many_blocks;
    D.47058 = D.47057 + 4;
    D.47059 = *D.47058;
    if (D.47059 == 0B) goto <D.47103>; else goto <D.47092>;
    <D.47103>:
    D.47012 = cfg->cbb;
    D.47013 = D.47012->last_ins;
    D.47057 = D.47013->data.op[1].many_blocks;
    D.47058 = D.47057 + 4;
    *D.47058 = falsebb;
    D.47012 = cfg->cbb;
    mono_link_bblock (cfg, D.47012, falsebb);
    goto <D.47094>;
    <D.47092>:
    D.47012 = cfg->cbb;
    D.47013 = D.47012->last_ins;
    if (D.47013 == 0B) goto <D.47104>; else goto <D.47106>;
    <D.47106>:
    D.47012 = cfg->cbb;
    D.47013 = D.47012->last_ins;
    D.47107 = D.47013->opcode;
    D.47108 = D.47107 != 446;
    D.47109 = D.47107 != 763;
    D.47110 = D.47108 & D.47109;
    if (D.47110 != 0) goto <D.47111>; else goto <D.47105>;
    <D.47111>:
    D.47012 = cfg->cbb;
    D.47013 = D.47012->last_ins;
    D.47112 = D.47013->opcode;
    D.47113 = D.47112 + 64981;
    D.47114 = D.47113 > 9;
    D.47115 = D.47112 + 64874;
    D.47116 = D.47115 > 9;
    D.47117 = D.47114 & D.47116;
    if (D.47117 != 0) goto <D.47118>; else goto <D.47105>;
    <D.47118>:
    D.47012 = cfg->cbb;
    D.47013 = D.47012->last_ins;
    D.47055 = D.47013->opcode;
    D.47056 = D.47055 + 64884;
    if (D.47056 > 9) goto <D.47104>; else goto <D.47105>;
    <D.47104>:
    D.47012 = cfg->cbb;
    mono_link_bblock (cfg, D.47012, falsebb);
    <D.47105>:
    <D.47094>:
    D.47012 = cfg->cbb;
    D.47012->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.47119>;
    <D.47086>:
    D.47012 = cfg->cbb;
    D.47012->extended = 1;
    <D.47119>:
    <D.47076>:
  }
  goto <D.47120>;
  <D.47018>:
  {
    struct MonoInst * inst;

    D.47006 = cfg->mempool;
    inst = mono_mempool_alloc (D.47006, 48);
    inst->data.op[1].const_val = 0;
    D.47121 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47121;
    inst->prev = 0B;
    D.47122 = inst->prev;
    inst->next = D.47122;
    inst->opcode = 455;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47123 = inst->sreg3;
    inst->sreg2 = D.47123;
    D.47124 = inst->sreg2;
    inst->sreg1 = D.47124;
    D.47011 = cfg->ip;
    inst->cil_code = D.47011;
    inst->data.op[1].p = "InvalidCastException";
    D.47012 = cfg->cbb;
    D.47013 = D.47012->last_ins;
    if (D.47013 != 0B) goto <D.47125>; else goto <D.47126>;
    <D.47125>:
    D.47012 = cfg->cbb;
    D.47013 = D.47012->last_ins;
    D.47013->next = inst;
    D.47012 = cfg->cbb;
    D.47013 = D.47012->last_ins;
    inst->prev = D.47013;
    D.47012 = cfg->cbb;
    D.47012->last_ins = inst;
    goto <D.47127>;
    <D.47126>:
    D.47012 = cfg->cbb;
    D.47012 = cfg->cbb;
    D.47012->last_ins = inst;
    D.47013 = D.47012->last_ins;
    D.47012->code = D.47013;
    <D.47127>:
  }
  <D.47120>:
}


mini_emit_max_iid_check_vtable (struct MonoCompile * cfg, int vtable_reg, struct MonoClass * klass, struct MonoBasicBlock * false_target)
{
  unsigned int D.47128;
  struct MonoMemPool * D.47129;
  int D.47130;
  struct MonoInst * D.47131;
  int D.47132;
  int D.47133;
  const unsigned char * D.47134;
  struct MonoBasicBlock * D.47135;
  struct MonoInst * D.47136;
  int max_iid_reg;

  D.47128 = alloc_preg (cfg);
  max_iid_reg = (int) D.47128;
  {
    struct MonoInst * inst;

    D.47129 = cfg->mempool;
    inst = mono_mempool_alloc (D.47129, 48);
    inst->data.op[1].const_val = 0;
    D.47130 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47130;
    inst->prev = 0B;
    D.47131 = inst->prev;
    inst->next = D.47131;
    inst->opcode = 395;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47132 = inst->sreg3;
    inst->sreg2 = D.47132;
    D.47133 = inst->sreg2;
    inst->sreg1 = D.47133;
    D.47134 = cfg->ip;
    inst->cil_code = D.47134;
    inst->dreg = max_iid_reg;
    inst->sreg1 = vtable_reg;
    inst->data.op[0].const_val = 20;
    D.47135 = cfg->cbb;
    D.47136 = D.47135->last_ins;
    if (D.47136 != 0B) goto <D.47137>; else goto <D.47138>;
    <D.47137>:
    D.47135 = cfg->cbb;
    D.47136 = D.47135->last_ins;
    D.47136->next = inst;
    D.47135 = cfg->cbb;
    D.47136 = D.47135->last_ins;
    inst->prev = D.47136;
    D.47135 = cfg->cbb;
    D.47135->last_ins = inst;
    goto <D.47139>;
    <D.47138>:
    D.47135 = cfg->cbb;
    D.47135 = cfg->cbb;
    D.47135->last_ins = inst;
    D.47136 = D.47135->last_ins;
    D.47135->code = D.47136;
    <D.47139>:
  }
  mini_emit_max_iid_check (cfg, max_iid_reg, klass, false_target);
}


mini_emit_max_iid_check (struct MonoCompile * cfg, int max_iid_reg, struct MonoClass * klass, struct MonoBasicBlock * false_target)
{
  unsigned char D.47140;
  unsigned char D.47141;
  unsigned int D.47144;
  struct MonoMemPool * D.47145;
  int D.47146;
  struct MonoInst * D.47147;
  guint16 iftmp.484;
  int D.47152;
  int D.47153;
  const unsigned char * D.47154;
  int D.47157;
  struct MonoInst * D.47158;
  int D.47159;
  int D.47160;
  int D.47161;
  unsigned int D.47163;
  int D.47164;
  struct MonoBasicBlock * D.47165;
  struct MonoInst * D.47166;
  int D.47170;
  struct MonoInst * D.47171;
  int D.47172;
  int D.47173;
  int D.47178;
  struct MonoInst * D.47179;
  int D.47180;
  int D.47181;
  short unsigned int D.47182;
  int D.47183;
  int D.47189;
  struct MonoInst * D.47190;
  int D.47191;
  int D.47192;
  unsigned int D.47195;
  unsigned int D.47196;
  unsigned int D.47197;
  int D.47198;
  unsigned char * D.47202;
  struct MonoBasicBlock * * D.47205;
  int D.47206;
  unsigned char * D.47207;
  int D.47208;
  int D.47209;
  unsigned int D.47210;
  unsigned int D.47211;
  struct MonoBasicBlock * * D.47212;
  unsigned int D.47213;
  short unsigned int D.47218;
  short unsigned int D.47219;
  _Bool D.47220;
  short unsigned int D.47221;
  _Bool D.47222;
  _Bool D.47223;
  short unsigned int D.47225;
  short unsigned int D.47226;
  struct MonoBasicBlock * * D.47227;
  struct MonoBasicBlock * * D.47228;
  struct MonoBasicBlock * D.47229;
  short unsigned int D.47234;
  _Bool D.47235;
  _Bool D.47236;
  _Bool D.47237;
  short unsigned int D.47239;
  short unsigned int D.47240;
  _Bool D.47241;
  short unsigned int D.47242;
  _Bool D.47243;
  _Bool D.47244;
  void * D.47247;
  struct MonoBasicBlock * * D.47248;
  struct MonoBasicBlock * * D.47249;
  unsigned char D.47253;
  unsigned int D.47256;
  unsigned int D.47257;
  int D.47258;
  short unsigned int D.47265;
  short unsigned int D.47266;
  _Bool D.47267;
  short unsigned int D.47268;
  _Bool D.47269;
  _Bool D.47270;
  short unsigned int D.47276;
  _Bool D.47277;
  _Bool D.47278;
  _Bool D.47279;
  short unsigned int D.47281;
  short unsigned int D.47282;
  _Bool D.47283;
  short unsigned int D.47284;
  _Bool D.47285;
  _Bool D.47286;
  int D.47290;
  struct MonoInst * D.47291;
  int D.47292;
  int D.47293;

  D.47140 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.47141 = D.47140 & 64;
  if (D.47141 != 0) goto <D.47142>; else goto <D.47143>;
  <D.47142>:
  {
    int iid_reg;

    D.47144 = alloc_preg (cfg);
    iid_reg = (int) D.47144;
    {
      struct MonoInst * inst;

      D.47145 = cfg->mempool;
      inst = mono_mempool_alloc (D.47145, 48);
      inst->data.op[1].const_val = 0;
      D.47146 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47146;
      inst->prev = 0B;
      D.47147 = inst->prev;
      inst->next = D.47147;
      D.47140 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.47141 = D.47140 & 64;
      if (D.47141 != 0) goto <D.47149>; else goto <D.47150>;
      <D.47149>:
      iftmp.484 = 738;
      goto <D.47151>;
      <D.47150>:
      iftmp.484 = 362;
      <D.47151>:
      inst->opcode = iftmp.484;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47152 = inst->sreg3;
      inst->sreg2 = D.47152;
      D.47153 = inst->sreg2;
      inst->sreg1 = D.47153;
      D.47154 = cfg->ip;
      inst->cil_code = D.47154;
      D.47140 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.47141 = D.47140 & 64;
      if (D.47141 != 0) goto <D.47155>; else goto <D.47156>;
      <D.47155>:
      {
        struct MonoInst * group;
        struct MonoInst * got_loc;

        got_loc = mono_get_got_var (cfg);
        D.47145 = cfg->mempool;
        group = mono_mempool_alloc (D.47145, 48);
        group->data.op[1].const_val = 0;
        D.47157 = group->data.op[1].const_val;
        group->data.op[0].const_val = D.47157;
        group->prev = 0B;
        D.47158 = group->prev;
        group->next = D.47158;
        group->opcode = 737;
        group->flags = 0;
        group->type = 0;
        group->dreg = -1;
        group->sreg3 = -1;
        D.47159 = group->sreg3;
        group->sreg2 = D.47159;
        D.47160 = group->sreg2;
        group->sreg1 = D.47160;
        D.47154 = cfg->ip;
        group->cil_code = D.47154;
        group->data.op[0].src = klass;
        group->data.op[1].src = 23B;
        D.47161 = got_loc->dreg;
        inst->sreg1 = D.47161;
        inst->data.op[1].p = group;
      }
      goto <D.47162>;
      <D.47156>:
      inst->data.op[0].p = klass;
      inst->data.op[1].src = 23B;
      <D.47162>:
      inst->type = 3;
      D.47163 = alloc_dreg (cfg, 3);
      D.47164 = (int) D.47163;
      inst->dreg = D.47164;
      inst->dreg = iid_reg;
      D.47165 = cfg->cbb;
      D.47166 = D.47165->last_ins;
      if (D.47166 != 0B) goto <D.47167>; else goto <D.47168>;
      <D.47167>:
      D.47165 = cfg->cbb;
      D.47166 = D.47165->last_ins;
      D.47166->next = inst;
      D.47165 = cfg->cbb;
      D.47166 = D.47165->last_ins;
      inst->prev = D.47166;
      D.47165 = cfg->cbb;
      D.47165->last_ins = inst;
      goto <D.47169>;
      <D.47168>:
      D.47165 = cfg->cbb;
      D.47165 = cfg->cbb;
      D.47165->last_ins = inst;
      D.47166 = D.47165->last_ins;
      D.47165->code = D.47166;
      <D.47169>:
    }
    {
      struct MonoInst * inst;

      D.47145 = cfg->mempool;
      inst = mono_mempool_alloc (D.47145, 48);
      inst->data.op[1].const_val = 0;
      D.47170 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47170;
      inst->prev = 0B;
      D.47171 = inst->prev;
      inst->next = D.47171;
      inst->opcode = 322;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47172 = inst->sreg3;
      inst->sreg2 = D.47172;
      D.47173 = inst->sreg2;
      inst->sreg1 = D.47173;
      D.47154 = cfg->ip;
      inst->cil_code = D.47154;
      inst->dreg = -1;
      inst->sreg1 = max_iid_reg;
      inst->sreg2 = iid_reg;
      D.47165 = cfg->cbb;
      D.47166 = D.47165->last_ins;
      if (D.47166 != 0B) goto <D.47174>; else goto <D.47175>;
      <D.47174>:
      D.47165 = cfg->cbb;
      D.47166 = D.47165->last_ins;
      D.47166->next = inst;
      D.47165 = cfg->cbb;
      D.47166 = D.47165->last_ins;
      inst->prev = D.47166;
      D.47165 = cfg->cbb;
      D.47165->last_ins = inst;
      goto <D.47176>;
      <D.47175>:
      D.47165 = cfg->cbb;
      D.47165 = cfg->cbb;
      D.47165->last_ins = inst;
      D.47166 = D.47165->last_ins;
      D.47165->code = D.47166;
      <D.47176>:
    }
  }
  goto <D.47177>;
  <D.47143>:
  {
    struct MonoInst * inst;

    D.47145 = cfg->mempool;
    inst = mono_mempool_alloc (D.47145, 48);
    inst->data.op[1].const_val = 0;
    D.47178 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47178;
    inst->prev = 0B;
    D.47179 = inst->prev;
    inst->next = D.47179;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47180 = inst->sreg3;
    inst->sreg2 = D.47180;
    D.47181 = inst->sreg2;
    inst->sreg1 = D.47181;
    D.47154 = cfg->ip;
    inst->cil_code = D.47154;
    inst->dreg = -1;
    inst->sreg1 = max_iid_reg;
    D.47182 = klass->interface_id;
    D.47183 = (int) D.47182;
    inst->data.op[1].const_val = D.47183;
    D.47165 = cfg->cbb;
    D.47166 = D.47165->last_ins;
    if (D.47166 != 0B) goto <D.47184>; else goto <D.47185>;
    <D.47184>:
    D.47165 = cfg->cbb;
    D.47166 = D.47165->last_ins;
    D.47166->next = inst;
    D.47165 = cfg->cbb;
    D.47166 = D.47165->last_ins;
    inst->prev = D.47166;
    D.47165 = cfg->cbb;
    D.47165->last_ins = inst;
    goto <D.47186>;
    <D.47185>:
    D.47165 = cfg->cbb;
    D.47165 = cfg->cbb;
    D.47165->last_ins = inst;
    D.47166 = D.47165->last_ins;
    D.47165->code = D.47166;
    <D.47186>:
  }
  <D.47177>:
  if (false_target != 0B) goto <D.47187>; else goto <D.47188>;
  <D.47187>:
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.47145 = cfg->mempool;
    ins = mono_mempool_alloc (D.47145, 48);
    ins->data.op[1].const_val = 0;
    D.47189 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.47189;
    ins->prev = 0B;
    D.47190 = ins->prev;
    ins->next = D.47190;
    ins->opcode = 661;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.47191 = ins->sreg3;
    ins->sreg2 = D.47191;
    D.47192 = ins->sreg2;
    ins->sreg1 = D.47192;
    D.47154 = cfg->ip;
    ins->cil_code = D.47154;
    if (0 != 0) goto <D.47193>; else goto <D.47194>;
    <D.47193>:
    D.47145 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.47145, 172);
    D.47195 = cfg->num_bblocks;
    D.47196 = D.47195;
    D.47197 = D.47196 + 1;
    cfg->num_bblocks = D.47197;
    D.47198 = (int) D.47196;
    falsebb->block_num = D.47198;
    ins->data.op[0].target_block = false_target;
    D.47165 = cfg->cbb;
    mono_link_bblock (cfg, D.47165, false_target);
    D.47165 = cfg->cbb;
    D.47166 = D.47165->last_ins;
    if (D.47166 != 0B) goto <D.47199>; else goto <D.47200>;
    <D.47199>:
    D.47165 = cfg->cbb;
    D.47166 = D.47165->last_ins;
    D.47166->next = ins;
    D.47165 = cfg->cbb;
    D.47166 = D.47165->last_ins;
    ins->prev = D.47166;
    D.47165 = cfg->cbb;
    D.47165->last_ins = ins;
    goto <D.47201>;
    <D.47200>:
    D.47165 = cfg->cbb;
    D.47165 = cfg->cbb;
    D.47165->last_ins = ins;
    D.47166 = D.47165->last_ins;
    D.47165->code = D.47166;
    <D.47201>:
    D.47202 = falsebb->cil_code;
    if (D.47202 != 0B) goto <D.47203>; else goto <D.47204>;
    <D.47203>:
    D.47205 = cfg->cil_offset_to_bb;
    D.47202 = falsebb->cil_code;
    D.47206 = (int) D.47202;
    D.47207 = cfg->cil_start;
    D.47208 = (int) D.47207;
    D.47209 = D.47206 - D.47208;
    D.47210 = (unsigned int) D.47209;
    D.47211 = D.47210 * 4;
    D.47212 = D.47205 + D.47211;
    *D.47212 = falsebb;
    <D.47204>:
    D.47213 = cfg->real_offset;
    falsebb->real_offset = D.47213;
    D.47165 = cfg->cbb;
    D.47166 = D.47165->last_ins;
    if (D.47166 != 0B) goto <D.47217>; else goto <D.47214>;
    <D.47217>:
    D.47165 = cfg->cbb;
    D.47166 = D.47165->last_ins;
    D.47218 = D.47166->opcode;
    D.47219 = D.47218 + 64981;
    D.47220 = D.47219 <= 9;
    D.47221 = D.47218 + 64874;
    D.47222 = D.47221 <= 9;
    D.47223 = D.47220 | D.47222;
    if (D.47223 != 0) goto <D.47215>; else goto <D.47224>;
    <D.47224>:
    D.47165 = cfg->cbb;
    D.47166 = D.47165->last_ins;
    D.47225 = D.47166->opcode;
    D.47226 = D.47225 + 64884;
    if (D.47226 <= 9) goto <D.47215>; else goto <D.47214>;
    <D.47215>:
    D.47165 = cfg->cbb;
    D.47166 = D.47165->last_ins;
    D.47227 = D.47166->data.op[1].many_blocks;
    D.47228 = D.47227 + 4;
    D.47229 = *D.47228;
    if (D.47229 == 0B) goto <D.47230>; else goto <D.47214>;
    <D.47230>:
    D.47165 = cfg->cbb;
    D.47166 = D.47165->last_ins;
    D.47227 = D.47166->data.op[1].many_blocks;
    D.47228 = D.47227 + 4;
    *D.47228 = falsebb;
    D.47165 = cfg->cbb;
    mono_link_bblock (cfg, D.47165, falsebb);
    goto <D.47216>;
    <D.47214>:
    D.47165 = cfg->cbb;
    D.47166 = D.47165->last_ins;
    if (D.47166 == 0B) goto <D.47231>; else goto <D.47233>;
    <D.47233>:
    D.47165 = cfg->cbb;
    D.47166 = D.47165->last_ins;
    D.47234 = D.47166->opcode;
    D.47235 = D.47234 != 446;
    D.47236 = D.47234 != 763;
    D.47237 = D.47235 & D.47236;
    if (D.47237 != 0) goto <D.47238>; else goto <D.47232>;
    <D.47238>:
    D.47165 = cfg->cbb;
    D.47166 = D.47165->last_ins;
    D.47239 = D.47166->opcode;
    D.47240 = D.47239 + 64981;
    D.47241 = D.47240 > 9;
    D.47242 = D.47239 + 64874;
    D.47243 = D.47242 > 9;
    D.47244 = D.47241 & D.47243;
    if (D.47244 != 0) goto <D.47245>; else goto <D.47232>;
    <D.47245>:
    D.47165 = cfg->cbb;
    D.47166 = D.47165->last_ins;
    D.47225 = D.47166->opcode;
    D.47226 = D.47225 + 64884;
    if (D.47226 > 9) goto <D.47231>; else goto <D.47232>;
    <D.47231>:
    D.47165 = cfg->cbb;
    mono_link_bblock (cfg, D.47165, falsebb);
    <D.47232>:
    <D.47216>:
    D.47165 = cfg->cbb;
    D.47165->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.47246>;
    <D.47194>:
    D.47145 = cfg->mempool;
    D.47247 = mono_mempool_alloc (D.47145, 8);
    ins->data.op[1].many_blocks = D.47247;
    D.47248 = ins->data.op[1].many_blocks;
    *D.47248 = false_target;
    D.47248 = ins->data.op[1].many_blocks;
    D.47249 = D.47248 + 4;
    *D.47249 = 0B;
    D.47165 = cfg->cbb;
    mono_link_bblock (cfg, D.47165, false_target);
    D.47165 = cfg->cbb;
    D.47166 = D.47165->last_ins;
    if (D.47166 != 0B) goto <D.47250>; else goto <D.47251>;
    <D.47250>:
    D.47165 = cfg->cbb;
    D.47166 = D.47165->last_ins;
    D.47166->next = ins;
    D.47165 = cfg->cbb;
    D.47166 = D.47165->last_ins;
    ins->prev = D.47166;
    D.47165 = cfg->cbb;
    D.47165->last_ins = ins;
    goto <D.47252>;
    <D.47251>:
    D.47165 = cfg->cbb;
    D.47165 = cfg->cbb;
    D.47165->last_ins = ins;
    D.47166 = D.47165->last_ins;
    D.47165->code = D.47166;
    <D.47252>:
    D.47140 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.47253 = D.47140 & 8;
    if (D.47253 == 0) goto <D.47254>; else goto <D.47255>;
    <D.47254>:
    D.47145 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.47145, 172);
    D.47195 = cfg->num_bblocks;
    D.47256 = D.47195;
    D.47257 = D.47256 + 1;
    cfg->num_bblocks = D.47257;
    D.47258 = (int) D.47256;
    falsebb->block_num = D.47258;
    D.47248 = ins->data.op[1].many_blocks;
    D.47249 = D.47248 + 4;
    *D.47249 = falsebb;
    D.47165 = cfg->cbb;
    mono_link_bblock (cfg, D.47165, falsebb);
    D.47202 = falsebb->cil_code;
    if (D.47202 != 0B) goto <D.47259>; else goto <D.47260>;
    <D.47259>:
    D.47205 = cfg->cil_offset_to_bb;
    D.47202 = falsebb->cil_code;
    D.47206 = (int) D.47202;
    D.47207 = cfg->cil_start;
    D.47208 = (int) D.47207;
    D.47209 = D.47206 - D.47208;
    D.47210 = (unsigned int) D.47209;
    D.47211 = D.47210 * 4;
    D.47212 = D.47205 + D.47211;
    *D.47212 = falsebb;
    <D.47260>:
    D.47213 = cfg->real_offset;
    falsebb->real_offset = D.47213;
    D.47165 = cfg->cbb;
    D.47166 = D.47165->last_ins;
    if (D.47166 != 0B) goto <D.47264>; else goto <D.47261>;
    <D.47264>:
    D.47165 = cfg->cbb;
    D.47166 = D.47165->last_ins;
    D.47265 = D.47166->opcode;
    D.47266 = D.47265 + 64981;
    D.47267 = D.47266 <= 9;
    D.47268 = D.47265 + 64874;
    D.47269 = D.47268 <= 9;
    D.47270 = D.47267 | D.47269;
    if (D.47270 != 0) goto <D.47262>; else goto <D.47271>;
    <D.47271>:
    D.47165 = cfg->cbb;
    D.47166 = D.47165->last_ins;
    D.47225 = D.47166->opcode;
    D.47226 = D.47225 + 64884;
    if (D.47226 <= 9) goto <D.47262>; else goto <D.47261>;
    <D.47262>:
    D.47165 = cfg->cbb;
    D.47166 = D.47165->last_ins;
    D.47227 = D.47166->data.op[1].many_blocks;
    D.47228 = D.47227 + 4;
    D.47229 = *D.47228;
    if (D.47229 == 0B) goto <D.47272>; else goto <D.47261>;
    <D.47272>:
    D.47165 = cfg->cbb;
    D.47166 = D.47165->last_ins;
    D.47227 = D.47166->data.op[1].many_blocks;
    D.47228 = D.47227 + 4;
    *D.47228 = falsebb;
    D.47165 = cfg->cbb;
    mono_link_bblock (cfg, D.47165, falsebb);
    goto <D.47263>;
    <D.47261>:
    D.47165 = cfg->cbb;
    D.47166 = D.47165->last_ins;
    if (D.47166 == 0B) goto <D.47273>; else goto <D.47275>;
    <D.47275>:
    D.47165 = cfg->cbb;
    D.47166 = D.47165->last_ins;
    D.47276 = D.47166->opcode;
    D.47277 = D.47276 != 446;
    D.47278 = D.47276 != 763;
    D.47279 = D.47277 & D.47278;
    if (D.47279 != 0) goto <D.47280>; else goto <D.47274>;
    <D.47280>:
    D.47165 = cfg->cbb;
    D.47166 = D.47165->last_ins;
    D.47281 = D.47166->opcode;
    D.47282 = D.47281 + 64981;
    D.47283 = D.47282 > 9;
    D.47284 = D.47281 + 64874;
    D.47285 = D.47284 > 9;
    D.47286 = D.47283 & D.47285;
    if (D.47286 != 0) goto <D.47287>; else goto <D.47274>;
    <D.47287>:
    D.47165 = cfg->cbb;
    D.47166 = D.47165->last_ins;
    D.47225 = D.47166->opcode;
    D.47226 = D.47225 + 64884;
    if (D.47226 > 9) goto <D.47273>; else goto <D.47274>;
    <D.47273>:
    D.47165 = cfg->cbb;
    mono_link_bblock (cfg, D.47165, falsebb);
    <D.47274>:
    <D.47263>:
    D.47165 = cfg->cbb;
    D.47165->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.47288>;
    <D.47255>:
    D.47165 = cfg->cbb;
    D.47165->extended = 1;
    <D.47288>:
    <D.47246>:
  }
  goto <D.47289>;
  <D.47188>:
  {
    struct MonoInst * inst;

    D.47145 = cfg->mempool;
    inst = mono_mempool_alloc (D.47145, 48);
    inst->data.op[1].const_val = 0;
    D.47290 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47290;
    inst->prev = 0B;
    D.47291 = inst->prev;
    inst->next = D.47291;
    inst->opcode = 464;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47292 = inst->sreg3;
    inst->sreg2 = D.47292;
    D.47293 = inst->sreg2;
    inst->sreg1 = D.47293;
    D.47154 = cfg->ip;
    inst->cil_code = D.47154;
    inst->data.op[1].p = "InvalidCastException";
    D.47165 = cfg->cbb;
    D.47166 = D.47165->last_ins;
    if (D.47166 != 0B) goto <D.47294>; else goto <D.47295>;
    <D.47294>:
    D.47165 = cfg->cbb;
    D.47166 = D.47165->last_ins;
    D.47166->next = inst;
    D.47165 = cfg->cbb;
    D.47166 = D.47165->last_ins;
    inst->prev = D.47166;
    D.47165 = cfg->cbb;
    D.47165->last_ins = inst;
    goto <D.47296>;
    <D.47295>:
    D.47165 = cfg->cbb;
    D.47165 = cfg->cbb;
    D.47165->last_ins = inst;
    D.47166 = D.47165->last_ins;
    D.47165->code = D.47166;
    <D.47296>:
  }
  <D.47289>:
}


mini_emit_load_intf_bit_reg_vtable (struct MonoCompile * cfg, int intf_bit_reg, int vtable_reg, struct MonoClass * klass)
{
  mini_emit_interface_bitmap_check (cfg, intf_bit_reg, vtable_reg, 16, klass);
}


mini_emit_interface_bitmap_check (struct MonoCompile * cfg, int intf_bit_reg, int base_reg, int offset, struct MonoClass * klass)
{
  unsigned int D.47297;
  unsigned int D.47298;
  struct MonoMemPool * D.47299;
  int D.47300;
  struct MonoInst * D.47301;
  int D.47302;
  int D.47303;
  const unsigned char * D.47304;
  struct MonoBasicBlock * D.47305;
  struct MonoInst * D.47306;
  unsigned char D.47310;
  unsigned char D.47311;
  unsigned int D.47314;
  unsigned int D.47315;
  unsigned int D.47316;
  unsigned int D.47317;
  unsigned int D.47318;
  unsigned int D.47319;
  int D.47320;
  struct MonoInst * D.47321;
  guint16 iftmp.485;
  int D.47326;
  int D.47327;
  int D.47330;
  struct MonoInst * D.47331;
  int D.47332;
  int D.47333;
  int D.47334;
  unsigned int D.47336;
  int D.47337;
  int D.47341;
  struct MonoInst * D.47342;
  int D.47343;
  int D.47344;
  int D.47348;
  struct MonoInst * D.47349;
  int D.47350;
  int D.47351;
  int D.47355;
  struct MonoInst * D.47356;
  int D.47357;
  int D.47358;
  int D.47362;
  struct MonoInst * D.47363;
  int D.47364;
  int D.47365;
  int D.47369;
  struct MonoInst * D.47370;
  int D.47371;
  int D.47372;
  int D.47376;
  struct MonoInst * D.47377;
  int D.47378;
  int D.47379;
  int D.47383;
  struct MonoInst * D.47384;
  int D.47385;
  int D.47386;
  int D.47391;
  struct MonoInst * D.47392;
  int D.47393;
  int D.47394;
  short unsigned int D.47395;
  short unsigned int D.47396;
  int D.47397;
  int D.47401;
  struct MonoInst * D.47402;
  int D.47403;
  int D.47404;
  int D.47405;
  int D.47406;
  int D.47407;
  int ibitmap_reg;
  int ibitmap_byte_reg;

  D.47297 = alloc_preg (cfg);
  ibitmap_reg = (int) D.47297;
  D.47298 = alloc_preg (cfg);
  ibitmap_byte_reg = (int) D.47298;
  {
    struct MonoInst * inst;

    D.47299 = cfg->mempool;
    inst = mono_mempool_alloc (D.47299, 48);
    inst->data.op[1].const_val = 0;
    D.47300 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47300;
    inst->prev = 0B;
    D.47301 = inst->prev;
    inst->next = D.47301;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47302 = inst->sreg3;
    inst->sreg2 = D.47302;
    D.47303 = inst->sreg2;
    inst->sreg1 = D.47303;
    D.47304 = cfg->ip;
    inst->cil_code = D.47304;
    inst->dreg = ibitmap_reg;
    inst->sreg1 = base_reg;
    inst->data.op[0].const_val = offset;
    D.47305 = cfg->cbb;
    D.47306 = D.47305->last_ins;
    if (D.47306 != 0B) goto <D.47307>; else goto <D.47308>;
    <D.47307>:
    D.47305 = cfg->cbb;
    D.47306 = D.47305->last_ins;
    D.47306->next = inst;
    D.47305 = cfg->cbb;
    D.47306 = D.47305->last_ins;
    inst->prev = D.47306;
    D.47305 = cfg->cbb;
    D.47305->last_ins = inst;
    goto <D.47309>;
    <D.47308>:
    D.47305 = cfg->cbb;
    D.47305 = cfg->cbb;
    D.47305->last_ins = inst;
    D.47306 = D.47305->last_ins;
    D.47305->code = D.47306;
    <D.47309>:
  }
  D.47310 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.47311 = D.47310 & 64;
  if (D.47311 != 0) goto <D.47312>; else goto <D.47313>;
  <D.47312>:
  {
    int iid_reg;
    int shifted_iid_reg;
    int ibitmap_byte_address_reg;
    int masked_iid_reg;
    int iid_one_bit_reg;
    int iid_bit_reg;

    D.47314 = alloc_preg (cfg);
    iid_reg = (int) D.47314;
    D.47315 = alloc_preg (cfg);
    shifted_iid_reg = (int) D.47315;
    D.47316 = alloc_preg (cfg);
    ibitmap_byte_address_reg = (int) D.47316;
    D.47317 = alloc_preg (cfg);
    masked_iid_reg = (int) D.47317;
    D.47318 = alloc_preg (cfg);
    iid_one_bit_reg = (int) D.47318;
    D.47319 = alloc_preg (cfg);
    iid_bit_reg = (int) D.47319;
    {
      struct MonoInst * inst;

      D.47299 = cfg->mempool;
      inst = mono_mempool_alloc (D.47299, 48);
      inst->data.op[1].const_val = 0;
      D.47320 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47320;
      inst->prev = 0B;
      D.47321 = inst->prev;
      inst->next = D.47321;
      D.47310 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.47311 = D.47310 & 64;
      if (D.47311 != 0) goto <D.47323>; else goto <D.47324>;
      <D.47323>:
      iftmp.485 = 738;
      goto <D.47325>;
      <D.47324>:
      iftmp.485 = 362;
      <D.47325>:
      inst->opcode = iftmp.485;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47326 = inst->sreg3;
      inst->sreg2 = D.47326;
      D.47327 = inst->sreg2;
      inst->sreg1 = D.47327;
      D.47304 = cfg->ip;
      inst->cil_code = D.47304;
      D.47310 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.47311 = D.47310 & 64;
      if (D.47311 != 0) goto <D.47328>; else goto <D.47329>;
      <D.47328>:
      {
        struct MonoInst * group;
        struct MonoInst * got_loc;

        got_loc = mono_get_got_var (cfg);
        D.47299 = cfg->mempool;
        group = mono_mempool_alloc (D.47299, 48);
        group->data.op[1].const_val = 0;
        D.47330 = group->data.op[1].const_val;
        group->data.op[0].const_val = D.47330;
        group->prev = 0B;
        D.47331 = group->prev;
        group->next = D.47331;
        group->opcode = 737;
        group->flags = 0;
        group->type = 0;
        group->dreg = -1;
        group->sreg3 = -1;
        D.47332 = group->sreg3;
        group->sreg2 = D.47332;
        D.47333 = group->sreg2;
        group->sreg1 = D.47333;
        D.47304 = cfg->ip;
        group->cil_code = D.47304;
        group->data.op[0].src = klass;
        group->data.op[1].src = 23B;
        D.47334 = got_loc->dreg;
        inst->sreg1 = D.47334;
        inst->data.op[1].p = group;
      }
      goto <D.47335>;
      <D.47329>:
      inst->data.op[0].p = klass;
      inst->data.op[1].src = 23B;
      <D.47335>:
      inst->type = 3;
      D.47336 = alloc_dreg (cfg, 3);
      D.47337 = (int) D.47336;
      inst->dreg = D.47337;
      inst->dreg = iid_reg;
      D.47305 = cfg->cbb;
      D.47306 = D.47305->last_ins;
      if (D.47306 != 0B) goto <D.47338>; else goto <D.47339>;
      <D.47338>:
      D.47305 = cfg->cbb;
      D.47306 = D.47305->last_ins;
      D.47306->next = inst;
      D.47305 = cfg->cbb;
      D.47306 = D.47305->last_ins;
      inst->prev = D.47306;
      D.47305 = cfg->cbb;
      D.47305->last_ins = inst;
      goto <D.47340>;
      <D.47339>:
      D.47305 = cfg->cbb;
      D.47305 = cfg->cbb;
      D.47305->last_ins = inst;
      D.47306 = D.47305->last_ins;
      D.47305->code = D.47306;
      <D.47340>:
    }
    {
      struct MonoInst * inst;

      D.47299 = cfg->mempool;
      inst = mono_mempool_alloc (D.47299, 48);
      inst->data.op[1].const_val = 0;
      D.47341 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47341;
      inst->prev = 0B;
      D.47342 = inst->prev;
      inst->next = D.47342;
      inst->opcode = 444;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47343 = inst->sreg3;
      inst->sreg2 = D.47343;
      D.47344 = inst->sreg2;
      inst->sreg1 = D.47344;
      D.47304 = cfg->ip;
      inst->cil_code = D.47304;
      inst->dreg = shifted_iid_reg;
      inst->sreg1 = iid_reg;
      inst->data.op[1].const_val = 3;
      D.47305 = cfg->cbb;
      D.47306 = D.47305->last_ins;
      if (D.47306 != 0B) goto <D.47345>; else goto <D.47346>;
      <D.47345>:
      D.47305 = cfg->cbb;
      D.47306 = D.47305->last_ins;
      D.47306->next = inst;
      D.47305 = cfg->cbb;
      D.47306 = D.47305->last_ins;
      inst->prev = D.47306;
      D.47305 = cfg->cbb;
      D.47305->last_ins = inst;
      goto <D.47347>;
      <D.47346>:
      D.47305 = cfg->cbb;
      D.47305 = cfg->cbb;
      D.47305->last_ins = inst;
      D.47306 = D.47305->last_ins;
      D.47305->code = D.47306;
      <D.47347>:
    }
    {
      struct MonoInst * inst;

      D.47299 = cfg->mempool;
      inst = mono_mempool_alloc (D.47299, 48);
      inst->data.op[1].const_val = 0;
      D.47348 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47348;
      inst->prev = 0B;
      D.47349 = inst->prev;
      inst->next = D.47349;
      inst->opcode = 569;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47350 = inst->sreg3;
      inst->sreg2 = D.47350;
      D.47351 = inst->sreg2;
      inst->sreg1 = D.47351;
      D.47304 = cfg->ip;
      inst->cil_code = D.47304;
      inst->dreg = ibitmap_byte_address_reg;
      inst->sreg1 = ibitmap_reg;
      inst->sreg2 = shifted_iid_reg;
      D.47305 = cfg->cbb;
      D.47306 = D.47305->last_ins;
      if (D.47306 != 0B) goto <D.47352>; else goto <D.47353>;
      <D.47352>:
      D.47305 = cfg->cbb;
      D.47306 = D.47305->last_ins;
      D.47306->next = inst;
      D.47305 = cfg->cbb;
      D.47306 = D.47305->last_ins;
      inst->prev = D.47306;
      D.47305 = cfg->cbb;
      D.47305->last_ins = inst;
      goto <D.47354>;
      <D.47353>:
      D.47305 = cfg->cbb;
      D.47305 = cfg->cbb;
      D.47305->last_ins = inst;
      D.47306 = D.47305->last_ins;
      D.47305->code = D.47306;
      <D.47354>:
    }
    {
      struct MonoInst * inst;

      D.47299 = cfg->mempool;
      inst = mono_mempool_alloc (D.47299, 48);
      inst->data.op[1].const_val = 0;
      D.47355 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47355;
      inst->prev = 0B;
      D.47356 = inst->prev;
      inst->next = D.47356;
      inst->opcode = 393;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47357 = inst->sreg3;
      inst->sreg2 = D.47357;
      D.47358 = inst->sreg2;
      inst->sreg1 = D.47358;
      D.47304 = cfg->ip;
      inst->cil_code = D.47304;
      inst->dreg = ibitmap_byte_reg;
      inst->sreg1 = ibitmap_byte_address_reg;
      inst->data.op[0].const_val = 0;
      D.47305 = cfg->cbb;
      D.47306 = D.47305->last_ins;
      if (D.47306 != 0B) goto <D.47359>; else goto <D.47360>;
      <D.47359>:
      D.47305 = cfg->cbb;
      D.47306 = D.47305->last_ins;
      D.47306->next = inst;
      D.47305 = cfg->cbb;
      D.47306 = D.47305->last_ins;
      inst->prev = D.47306;
      D.47305 = cfg->cbb;
      D.47305->last_ins = inst;
      goto <D.47361>;
      <D.47360>:
      D.47305 = cfg->cbb;
      D.47305 = cfg->cbb;
      D.47305->last_ins = inst;
      D.47306 = D.47305->last_ins;
      D.47305->code = D.47306;
      <D.47361>:
    }
    {
      struct MonoInst * inst;

      D.47299 = cfg->mempool;
      inst = mono_mempool_alloc (D.47299, 48);
      inst->data.op[1].const_val = 0;
      D.47362 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47362;
      inst->prev = 0B;
      D.47363 = inst->prev;
      inst->next = D.47363;
      inst->opcode = 636;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47364 = inst->sreg3;
      inst->sreg2 = D.47364;
      D.47365 = inst->sreg2;
      inst->sreg1 = D.47365;
      D.47304 = cfg->ip;
      inst->cil_code = D.47304;
      inst->dreg = masked_iid_reg;
      inst->sreg1 = iid_reg;
      inst->data.op[1].const_val = 7;
      D.47305 = cfg->cbb;
      D.47306 = D.47305->last_ins;
      if (D.47306 != 0B) goto <D.47366>; else goto <D.47367>;
      <D.47366>:
      D.47305 = cfg->cbb;
      D.47306 = D.47305->last_ins;
      D.47306->next = inst;
      D.47305 = cfg->cbb;
      D.47306 = D.47305->last_ins;
      inst->prev = D.47306;
      D.47305 = cfg->cbb;
      D.47305->last_ins = inst;
      goto <D.47368>;
      <D.47367>:
      D.47305 = cfg->cbb;
      D.47305 = cfg->cbb;
      D.47305->last_ins = inst;
      D.47306 = D.47305->last_ins;
      D.47305->code = D.47306;
      <D.47368>:
    }
    {
      struct MonoInst * inst;

      D.47299 = cfg->mempool;
      inst = mono_mempool_alloc (D.47299, 48);
      inst->data.op[1].const_val = 0;
      D.47369 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47369;
      inst->prev = 0B;
      D.47370 = inst->prev;
      inst->next = D.47370;
      inst->opcode = 362;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47371 = inst->sreg3;
      inst->sreg2 = D.47371;
      D.47372 = inst->sreg2;
      inst->sreg1 = D.47372;
      D.47304 = cfg->ip;
      inst->cil_code = D.47304;
      inst->dreg = iid_one_bit_reg;
      inst->data.op[0].const_val = 1;
      D.47305 = cfg->cbb;
      D.47306 = D.47305->last_ins;
      if (D.47306 != 0B) goto <D.47373>; else goto <D.47374>;
      <D.47373>:
      D.47305 = cfg->cbb;
      D.47306 = D.47305->last_ins;
      D.47306->next = inst;
      D.47305 = cfg->cbb;
      D.47306 = D.47305->last_ins;
      inst->prev = D.47306;
      D.47305 = cfg->cbb;
      D.47305->last_ins = inst;
      goto <D.47375>;
      <D.47374>:
      D.47305 = cfg->cbb;
      D.47305 = cfg->cbb;
      D.47305->last_ins = inst;
      D.47306 = D.47305->last_ins;
      D.47305->code = D.47306;
      <D.47375>:
    }
    {
      struct MonoInst * inst;

      D.47299 = cfg->mempool;
      inst = mono_mempool_alloc (D.47299, 48);
      inst->data.op[1].const_val = 0;
      D.47376 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47376;
      inst->prev = 0B;
      D.47377 = inst->prev;
      inst->next = D.47377;
      inst->opcode = 579;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47378 = inst->sreg3;
      inst->sreg2 = D.47378;
      D.47379 = inst->sreg2;
      inst->sreg1 = D.47379;
      D.47304 = cfg->ip;
      inst->cil_code = D.47304;
      inst->dreg = iid_bit_reg;
      inst->sreg1 = iid_one_bit_reg;
      inst->sreg2 = masked_iid_reg;
      D.47305 = cfg->cbb;
      D.47306 = D.47305->last_ins;
      if (D.47306 != 0B) goto <D.47380>; else goto <D.47381>;
      <D.47380>:
      D.47305 = cfg->cbb;
      D.47306 = D.47305->last_ins;
      D.47306->next = inst;
      D.47305 = cfg->cbb;
      D.47306 = D.47305->last_ins;
      inst->prev = D.47306;
      D.47305 = cfg->cbb;
      D.47305->last_ins = inst;
      goto <D.47382>;
      <D.47381>:
      D.47305 = cfg->cbb;
      D.47305 = cfg->cbb;
      D.47305->last_ins = inst;
      D.47306 = D.47305->last_ins;
      D.47305->code = D.47306;
      <D.47382>:
    }
    {
      struct MonoInst * inst;

      D.47299 = cfg->mempool;
      inst = mono_mempool_alloc (D.47299, 48);
      inst->data.op[1].const_val = 0;
      D.47383 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47383;
      inst->prev = 0B;
      D.47384 = inst->prev;
      inst->next = D.47384;
      inst->opcode = 576;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47385 = inst->sreg3;
      inst->sreg2 = D.47385;
      D.47386 = inst->sreg2;
      inst->sreg1 = D.47386;
      D.47304 = cfg->ip;
      inst->cil_code = D.47304;
      inst->dreg = intf_bit_reg;
      inst->sreg1 = ibitmap_byte_reg;
      inst->sreg2 = iid_bit_reg;
      D.47305 = cfg->cbb;
      D.47306 = D.47305->last_ins;
      if (D.47306 != 0B) goto <D.47387>; else goto <D.47388>;
      <D.47387>:
      D.47305 = cfg->cbb;
      D.47306 = D.47305->last_ins;
      D.47306->next = inst;
      D.47305 = cfg->cbb;
      D.47306 = D.47305->last_ins;
      inst->prev = D.47306;
      D.47305 = cfg->cbb;
      D.47305->last_ins = inst;
      goto <D.47389>;
      <D.47388>:
      D.47305 = cfg->cbb;
      D.47305 = cfg->cbb;
      D.47305->last_ins = inst;
      D.47306 = D.47305->last_ins;
      D.47305->code = D.47306;
      <D.47389>:
    }
  }
  goto <D.47390>;
  <D.47313>:
  {
    struct MonoInst * inst;

    D.47299 = cfg->mempool;
    inst = mono_mempool_alloc (D.47299, 48);
    inst->data.op[1].const_val = 0;
    D.47391 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47391;
    inst->prev = 0B;
    D.47392 = inst->prev;
    inst->next = D.47392;
    inst->opcode = 392;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47393 = inst->sreg3;
    inst->sreg2 = D.47393;
    D.47394 = inst->sreg2;
    inst->sreg1 = D.47394;
    D.47304 = cfg->ip;
    inst->cil_code = D.47304;
    inst->dreg = ibitmap_byte_reg;
    inst->sreg1 = ibitmap_reg;
    D.47395 = klass->interface_id;
    D.47396 = D.47395 >> 3;
    D.47397 = (int) D.47396;
    inst->data.op[0].const_val = D.47397;
    D.47305 = cfg->cbb;
    D.47306 = D.47305->last_ins;
    if (D.47306 != 0B) goto <D.47398>; else goto <D.47399>;
    <D.47398>:
    D.47305 = cfg->cbb;
    D.47306 = D.47305->last_ins;
    D.47306->next = inst;
    D.47305 = cfg->cbb;
    D.47306 = D.47305->last_ins;
    inst->prev = D.47306;
    D.47305 = cfg->cbb;
    D.47305->last_ins = inst;
    goto <D.47400>;
    <D.47399>:
    D.47305 = cfg->cbb;
    D.47305 = cfg->cbb;
    D.47305->last_ins = inst;
    D.47306 = D.47305->last_ins;
    D.47305->code = D.47306;
    <D.47400>:
  }
  {
    struct MonoInst * inst;

    D.47299 = cfg->mempool;
    inst = mono_mempool_alloc (D.47299, 48);
    inst->data.op[1].const_val = 0;
    D.47401 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47401;
    inst->prev = 0B;
    D.47402 = inst->prev;
    inst->next = D.47402;
    inst->opcode = 440;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47403 = inst->sreg3;
    inst->sreg2 = D.47403;
    D.47404 = inst->sreg2;
    inst->sreg1 = D.47404;
    D.47304 = cfg->ip;
    inst->cil_code = D.47304;
    inst->dreg = intf_bit_reg;
    inst->sreg1 = ibitmap_byte_reg;
    D.47395 = klass->interface_id;
    D.47405 = (int) D.47395;
    D.47406 = D.47405 & 7;
    D.47407 = 1 << D.47406;
    inst->data.op[1].const_val = D.47407;
    D.47305 = cfg->cbb;
    D.47306 = D.47305->last_ins;
    if (D.47306 != 0B) goto <D.47408>; else goto <D.47409>;
    <D.47408>:
    D.47305 = cfg->cbb;
    D.47306 = D.47305->last_ins;
    D.47306->next = inst;
    D.47305 = cfg->cbb;
    D.47306 = D.47305->last_ins;
    inst->prev = D.47306;
    D.47305 = cfg->cbb;
    D.47305->last_ins = inst;
    goto <D.47410>;
    <D.47409>:
    D.47305 = cfg->cbb;
    D.47305 = cfg->cbb;
    D.47305->last_ins = inst;
    D.47306 = D.47305->last_ins;
    D.47305->code = D.47306;
    <D.47410>:
  }
  <D.47390>:
}


mini_emit_class_check_branch (struct MonoCompile * cfg, int klass_reg, struct MonoClass * klass, int branch_op, struct MonoBasicBlock * target)
{
  unsigned char D.47411;
  unsigned char D.47412;
  unsigned int D.47415;
  struct MonoMemPool * D.47416;
  int D.47417;
  struct MonoInst * D.47418;
  guint16 iftmp.486;
  int D.47423;
  int D.47424;
  const unsigned char * D.47425;
  int D.47428;
  struct MonoInst * D.47429;
  int D.47430;
  int D.47431;
  int D.47432;
  unsigned int D.47434;
  int D.47435;
  struct MonoBasicBlock * D.47436;
  struct MonoInst * D.47437;
  int D.47441;
  struct MonoInst * D.47442;
  int D.47443;
  int D.47444;
  int D.47449;
  struct MonoInst * D.47450;
  int D.47451;
  int D.47452;
  int klass.487;
  int D.47457;
  struct MonoInst * D.47458;
  short unsigned int D.47459;
  int D.47460;
  int D.47461;
  unsigned int D.47464;
  unsigned int D.47465;
  unsigned int D.47466;
  int D.47467;
  unsigned char * D.47471;
  struct MonoBasicBlock * * D.47474;
  int D.47475;
  unsigned char * D.47476;
  int D.47477;
  int D.47478;
  unsigned int D.47479;
  unsigned int D.47480;
  struct MonoBasicBlock * * D.47481;
  unsigned int D.47482;
  short unsigned int D.47487;
  short unsigned int D.47488;
  _Bool D.47489;
  short unsigned int D.47490;
  _Bool D.47491;
  _Bool D.47492;
  short unsigned int D.47494;
  short unsigned int D.47495;
  struct MonoBasicBlock * * D.47496;
  struct MonoBasicBlock * * D.47497;
  struct MonoBasicBlock * D.47498;
  short unsigned int D.47503;
  _Bool D.47504;
  _Bool D.47505;
  _Bool D.47506;
  short unsigned int D.47508;
  short unsigned int D.47509;
  _Bool D.47510;
  short unsigned int D.47511;
  _Bool D.47512;
  _Bool D.47513;
  void * D.47516;
  struct MonoBasicBlock * * D.47517;
  struct MonoBasicBlock * * D.47518;
  unsigned char D.47522;
  unsigned int D.47525;
  unsigned int D.47526;
  int D.47527;
  short unsigned int D.47534;
  short unsigned int D.47535;
  _Bool D.47536;
  short unsigned int D.47537;
  _Bool D.47538;
  _Bool D.47539;
  short unsigned int D.47545;
  _Bool D.47546;
  _Bool D.47547;
  _Bool D.47548;
  short unsigned int D.47550;
  short unsigned int D.47551;
  _Bool D.47552;
  short unsigned int D.47553;
  _Bool D.47554;
  _Bool D.47555;

  D.47411 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.47412 = D.47411 & 64;
  if (D.47412 != 0) goto <D.47413>; else goto <D.47414>;
  <D.47413>:
  {
    int const_reg;

    D.47415 = alloc_preg (cfg);
    const_reg = (int) D.47415;
    {
      struct MonoInst * inst;

      D.47416 = cfg->mempool;
      inst = mono_mempool_alloc (D.47416, 48);
      inst->data.op[1].const_val = 0;
      D.47417 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47417;
      inst->prev = 0B;
      D.47418 = inst->prev;
      inst->next = D.47418;
      D.47411 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.47412 = D.47411 & 64;
      if (D.47412 != 0) goto <D.47420>; else goto <D.47421>;
      <D.47420>:
      iftmp.486 = 738;
      goto <D.47422>;
      <D.47421>:
      iftmp.486 = 362;
      <D.47422>:
      inst->opcode = iftmp.486;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47423 = inst->sreg3;
      inst->sreg2 = D.47423;
      D.47424 = inst->sreg2;
      inst->sreg1 = D.47424;
      D.47425 = cfg->ip;
      inst->cil_code = D.47425;
      D.47411 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.47412 = D.47411 & 64;
      if (D.47412 != 0) goto <D.47426>; else goto <D.47427>;
      <D.47426>:
      {
        struct MonoInst * group;
        struct MonoInst * got_loc;

        got_loc = mono_get_got_var (cfg);
        D.47416 = cfg->mempool;
        group = mono_mempool_alloc (D.47416, 48);
        group->data.op[1].const_val = 0;
        D.47428 = group->data.op[1].const_val;
        group->data.op[0].const_val = D.47428;
        group->prev = 0B;
        D.47429 = group->prev;
        group->next = D.47429;
        group->opcode = 737;
        group->flags = 0;
        group->type = 0;
        group->dreg = -1;
        group->sreg3 = -1;
        D.47430 = group->sreg3;
        group->sreg2 = D.47430;
        D.47431 = group->sreg2;
        group->sreg1 = D.47431;
        D.47425 = cfg->ip;
        group->cil_code = D.47425;
        group->data.op[0].src = klass;
        group->data.op[1].src = 11B;
        D.47432 = got_loc->dreg;
        inst->sreg1 = D.47432;
        inst->data.op[1].p = group;
      }
      goto <D.47433>;
      <D.47427>:
      inst->data.op[0].p = klass;
      inst->data.op[1].src = 11B;
      <D.47433>:
      inst->type = 3;
      D.47434 = alloc_dreg (cfg, 3);
      D.47435 = (int) D.47434;
      inst->dreg = D.47435;
      inst->dreg = const_reg;
      D.47436 = cfg->cbb;
      D.47437 = D.47436->last_ins;
      if (D.47437 != 0B) goto <D.47438>; else goto <D.47439>;
      <D.47438>:
      D.47436 = cfg->cbb;
      D.47437 = D.47436->last_ins;
      D.47437->next = inst;
      D.47436 = cfg->cbb;
      D.47437 = D.47436->last_ins;
      inst->prev = D.47437;
      D.47436 = cfg->cbb;
      D.47436->last_ins = inst;
      goto <D.47440>;
      <D.47439>:
      D.47436 = cfg->cbb;
      D.47436 = cfg->cbb;
      D.47436->last_ins = inst;
      D.47437 = D.47436->last_ins;
      D.47436->code = D.47437;
      <D.47440>:
    }
    {
      struct MonoInst * inst;

      D.47416 = cfg->mempool;
      inst = mono_mempool_alloc (D.47416, 48);
      inst->data.op[1].const_val = 0;
      D.47441 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47441;
      inst->prev = 0B;
      D.47442 = inst->prev;
      inst->next = D.47442;
      inst->opcode = 322;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47443 = inst->sreg3;
      inst->sreg2 = D.47443;
      D.47444 = inst->sreg2;
      inst->sreg1 = D.47444;
      D.47425 = cfg->ip;
      inst->cil_code = D.47425;
      inst->dreg = -1;
      inst->sreg1 = klass_reg;
      inst->sreg2 = const_reg;
      D.47436 = cfg->cbb;
      D.47437 = D.47436->last_ins;
      if (D.47437 != 0B) goto <D.47445>; else goto <D.47446>;
      <D.47445>:
      D.47436 = cfg->cbb;
      D.47437 = D.47436->last_ins;
      D.47437->next = inst;
      D.47436 = cfg->cbb;
      D.47437 = D.47436->last_ins;
      inst->prev = D.47437;
      D.47436 = cfg->cbb;
      D.47436->last_ins = inst;
      goto <D.47447>;
      <D.47446>:
      D.47436 = cfg->cbb;
      D.47436 = cfg->cbb;
      D.47436->last_ins = inst;
      D.47437 = D.47436->last_ins;
      D.47436->code = D.47437;
      <D.47447>:
    }
  }
  goto <D.47448>;
  <D.47414>:
  {
    struct MonoInst * inst;

    D.47416 = cfg->mempool;
    inst = mono_mempool_alloc (D.47416, 48);
    inst->data.op[1].const_val = 0;
    D.47449 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47449;
    inst->prev = 0B;
    D.47450 = inst->prev;
    inst->next = D.47450;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47451 = inst->sreg3;
    inst->sreg2 = D.47451;
    D.47452 = inst->sreg2;
    inst->sreg1 = D.47452;
    D.47425 = cfg->ip;
    inst->cil_code = D.47425;
    inst->dreg = -1;
    inst->sreg1 = klass_reg;
    klass.487 = (int) klass;
    inst->data.op[1].const_val = klass.487;
    D.47436 = cfg->cbb;
    D.47437 = D.47436->last_ins;
    if (D.47437 != 0B) goto <D.47454>; else goto <D.47455>;
    <D.47454>:
    D.47436 = cfg->cbb;
    D.47437 = D.47436->last_ins;
    D.47437->next = inst;
    D.47436 = cfg->cbb;
    D.47437 = D.47436->last_ins;
    inst->prev = D.47437;
    D.47436 = cfg->cbb;
    D.47436->last_ins = inst;
    goto <D.47456>;
    <D.47455>:
    D.47436 = cfg->cbb;
    D.47436 = cfg->cbb;
    D.47436->last_ins = inst;
    D.47437 = D.47436->last_ins;
    D.47436->code = D.47437;
    <D.47456>:
  }
  <D.47448>:
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.47416 = cfg->mempool;
    ins = mono_mempool_alloc (D.47416, 48);
    ins->data.op[1].const_val = 0;
    D.47457 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.47457;
    ins->prev = 0B;
    D.47458 = ins->prev;
    ins->next = D.47458;
    D.47459 = (short unsigned int) branch_op;
    ins->opcode = D.47459;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.47460 = ins->sreg3;
    ins->sreg2 = D.47460;
    D.47461 = ins->sreg2;
    ins->sreg1 = D.47461;
    D.47425 = cfg->ip;
    ins->cil_code = D.47425;
    if (branch_op == 446) goto <D.47462>; else goto <D.47463>;
    <D.47462>:
    D.47416 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.47416, 172);
    D.47464 = cfg->num_bblocks;
    D.47465 = D.47464;
    D.47466 = D.47465 + 1;
    cfg->num_bblocks = D.47466;
    D.47467 = (int) D.47465;
    falsebb->block_num = D.47467;
    ins->data.op[0].target_block = target;
    D.47436 = cfg->cbb;
    mono_link_bblock (cfg, D.47436, target);
    D.47436 = cfg->cbb;
    D.47437 = D.47436->last_ins;
    if (D.47437 != 0B) goto <D.47468>; else goto <D.47469>;
    <D.47468>:
    D.47436 = cfg->cbb;
    D.47437 = D.47436->last_ins;
    D.47437->next = ins;
    D.47436 = cfg->cbb;
    D.47437 = D.47436->last_ins;
    ins->prev = D.47437;
    D.47436 = cfg->cbb;
    D.47436->last_ins = ins;
    goto <D.47470>;
    <D.47469>:
    D.47436 = cfg->cbb;
    D.47436 = cfg->cbb;
    D.47436->last_ins = ins;
    D.47437 = D.47436->last_ins;
    D.47436->code = D.47437;
    <D.47470>:
    D.47471 = falsebb->cil_code;
    if (D.47471 != 0B) goto <D.47472>; else goto <D.47473>;
    <D.47472>:
    D.47474 = cfg->cil_offset_to_bb;
    D.47471 = falsebb->cil_code;
    D.47475 = (int) D.47471;
    D.47476 = cfg->cil_start;
    D.47477 = (int) D.47476;
    D.47478 = D.47475 - D.47477;
    D.47479 = (unsigned int) D.47478;
    D.47480 = D.47479 * 4;
    D.47481 = D.47474 + D.47480;
    *D.47481 = falsebb;
    <D.47473>:
    D.47482 = cfg->real_offset;
    falsebb->real_offset = D.47482;
    D.47436 = cfg->cbb;
    D.47437 = D.47436->last_ins;
    if (D.47437 != 0B) goto <D.47486>; else goto <D.47483>;
    <D.47486>:
    D.47436 = cfg->cbb;
    D.47437 = D.47436->last_ins;
    D.47487 = D.47437->opcode;
    D.47488 = D.47487 + 64981;
    D.47489 = D.47488 <= 9;
    D.47490 = D.47487 + 64874;
    D.47491 = D.47490 <= 9;
    D.47492 = D.47489 | D.47491;
    if (D.47492 != 0) goto <D.47484>; else goto <D.47493>;
    <D.47493>:
    D.47436 = cfg->cbb;
    D.47437 = D.47436->last_ins;
    D.47494 = D.47437->opcode;
    D.47495 = D.47494 + 64884;
    if (D.47495 <= 9) goto <D.47484>; else goto <D.47483>;
    <D.47484>:
    D.47436 = cfg->cbb;
    D.47437 = D.47436->last_ins;
    D.47496 = D.47437->data.op[1].many_blocks;
    D.47497 = D.47496 + 4;
    D.47498 = *D.47497;
    if (D.47498 == 0B) goto <D.47499>; else goto <D.47483>;
    <D.47499>:
    D.47436 = cfg->cbb;
    D.47437 = D.47436->last_ins;
    D.47496 = D.47437->data.op[1].many_blocks;
    D.47497 = D.47496 + 4;
    *D.47497 = falsebb;
    D.47436 = cfg->cbb;
    mono_link_bblock (cfg, D.47436, falsebb);
    goto <D.47485>;
    <D.47483>:
    D.47436 = cfg->cbb;
    D.47437 = D.47436->last_ins;
    if (D.47437 == 0B) goto <D.47500>; else goto <D.47502>;
    <D.47502>:
    D.47436 = cfg->cbb;
    D.47437 = D.47436->last_ins;
    D.47503 = D.47437->opcode;
    D.47504 = D.47503 != 446;
    D.47505 = D.47503 != 763;
    D.47506 = D.47504 & D.47505;
    if (D.47506 != 0) goto <D.47507>; else goto <D.47501>;
    <D.47507>:
    D.47436 = cfg->cbb;
    D.47437 = D.47436->last_ins;
    D.47508 = D.47437->opcode;
    D.47509 = D.47508 + 64981;
    D.47510 = D.47509 > 9;
    D.47511 = D.47508 + 64874;
    D.47512 = D.47511 > 9;
    D.47513 = D.47510 & D.47512;
    if (D.47513 != 0) goto <D.47514>; else goto <D.47501>;
    <D.47514>:
    D.47436 = cfg->cbb;
    D.47437 = D.47436->last_ins;
    D.47494 = D.47437->opcode;
    D.47495 = D.47494 + 64884;
    if (D.47495 > 9) goto <D.47500>; else goto <D.47501>;
    <D.47500>:
    D.47436 = cfg->cbb;
    mono_link_bblock (cfg, D.47436, falsebb);
    <D.47501>:
    <D.47485>:
    D.47436 = cfg->cbb;
    D.47436->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.47515>;
    <D.47463>:
    D.47416 = cfg->mempool;
    D.47516 = mono_mempool_alloc (D.47416, 8);
    ins->data.op[1].many_blocks = D.47516;
    D.47517 = ins->data.op[1].many_blocks;
    *D.47517 = target;
    D.47517 = ins->data.op[1].many_blocks;
    D.47518 = D.47517 + 4;
    *D.47518 = 0B;
    D.47436 = cfg->cbb;
    mono_link_bblock (cfg, D.47436, target);
    D.47436 = cfg->cbb;
    D.47437 = D.47436->last_ins;
    if (D.47437 != 0B) goto <D.47519>; else goto <D.47520>;
    <D.47519>:
    D.47436 = cfg->cbb;
    D.47437 = D.47436->last_ins;
    D.47437->next = ins;
    D.47436 = cfg->cbb;
    D.47437 = D.47436->last_ins;
    ins->prev = D.47437;
    D.47436 = cfg->cbb;
    D.47436->last_ins = ins;
    goto <D.47521>;
    <D.47520>:
    D.47436 = cfg->cbb;
    D.47436 = cfg->cbb;
    D.47436->last_ins = ins;
    D.47437 = D.47436->last_ins;
    D.47436->code = D.47437;
    <D.47521>:
    D.47411 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.47522 = D.47411 & 8;
    if (D.47522 == 0) goto <D.47523>; else goto <D.47524>;
    <D.47523>:
    D.47416 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.47416, 172);
    D.47464 = cfg->num_bblocks;
    D.47525 = D.47464;
    D.47526 = D.47525 + 1;
    cfg->num_bblocks = D.47526;
    D.47527 = (int) D.47525;
    falsebb->block_num = D.47527;
    D.47517 = ins->data.op[1].many_blocks;
    D.47518 = D.47517 + 4;
    *D.47518 = falsebb;
    D.47436 = cfg->cbb;
    mono_link_bblock (cfg, D.47436, falsebb);
    D.47471 = falsebb->cil_code;
    if (D.47471 != 0B) goto <D.47528>; else goto <D.47529>;
    <D.47528>:
    D.47474 = cfg->cil_offset_to_bb;
    D.47471 = falsebb->cil_code;
    D.47475 = (int) D.47471;
    D.47476 = cfg->cil_start;
    D.47477 = (int) D.47476;
    D.47478 = D.47475 - D.47477;
    D.47479 = (unsigned int) D.47478;
    D.47480 = D.47479 * 4;
    D.47481 = D.47474 + D.47480;
    *D.47481 = falsebb;
    <D.47529>:
    D.47482 = cfg->real_offset;
    falsebb->real_offset = D.47482;
    D.47436 = cfg->cbb;
    D.47437 = D.47436->last_ins;
    if (D.47437 != 0B) goto <D.47533>; else goto <D.47530>;
    <D.47533>:
    D.47436 = cfg->cbb;
    D.47437 = D.47436->last_ins;
    D.47534 = D.47437->opcode;
    D.47535 = D.47534 + 64981;
    D.47536 = D.47535 <= 9;
    D.47537 = D.47534 + 64874;
    D.47538 = D.47537 <= 9;
    D.47539 = D.47536 | D.47538;
    if (D.47539 != 0) goto <D.47531>; else goto <D.47540>;
    <D.47540>:
    D.47436 = cfg->cbb;
    D.47437 = D.47436->last_ins;
    D.47494 = D.47437->opcode;
    D.47495 = D.47494 + 64884;
    if (D.47495 <= 9) goto <D.47531>; else goto <D.47530>;
    <D.47531>:
    D.47436 = cfg->cbb;
    D.47437 = D.47436->last_ins;
    D.47496 = D.47437->data.op[1].many_blocks;
    D.47497 = D.47496 + 4;
    D.47498 = *D.47497;
    if (D.47498 == 0B) goto <D.47541>; else goto <D.47530>;
    <D.47541>:
    D.47436 = cfg->cbb;
    D.47437 = D.47436->last_ins;
    D.47496 = D.47437->data.op[1].many_blocks;
    D.47497 = D.47496 + 4;
    *D.47497 = falsebb;
    D.47436 = cfg->cbb;
    mono_link_bblock (cfg, D.47436, falsebb);
    goto <D.47532>;
    <D.47530>:
    D.47436 = cfg->cbb;
    D.47437 = D.47436->last_ins;
    if (D.47437 == 0B) goto <D.47542>; else goto <D.47544>;
    <D.47544>:
    D.47436 = cfg->cbb;
    D.47437 = D.47436->last_ins;
    D.47545 = D.47437->opcode;
    D.47546 = D.47545 != 446;
    D.47547 = D.47545 != 763;
    D.47548 = D.47546 & D.47547;
    if (D.47548 != 0) goto <D.47549>; else goto <D.47543>;
    <D.47549>:
    D.47436 = cfg->cbb;
    D.47437 = D.47436->last_ins;
    D.47550 = D.47437->opcode;
    D.47551 = D.47550 + 64981;
    D.47552 = D.47551 > 9;
    D.47553 = D.47550 + 64874;
    D.47554 = D.47553 > 9;
    D.47555 = D.47552 & D.47554;
    if (D.47555 != 0) goto <D.47556>; else goto <D.47543>;
    <D.47556>:
    D.47436 = cfg->cbb;
    D.47437 = D.47436->last_ins;
    D.47494 = D.47437->opcode;
    D.47495 = D.47494 + 64884;
    if (D.47495 > 9) goto <D.47542>; else goto <D.47543>;
    <D.47542>:
    D.47436 = cfg->cbb;
    mono_link_bblock (cfg, D.47436, falsebb);
    <D.47543>:
    <D.47532>:
    D.47436 = cfg->cbb;
    D.47436->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.47557>;
    <D.47524>:
    D.47436 = cfg->cbb;
    D.47436->extended = 1;
    <D.47557>:
    <D.47515>:
  }
}


mini_emit_iface_class_cast (struct MonoCompile * cfg, int klass_reg, struct MonoClass * klass, struct MonoBasicBlock * false_target, struct MonoBasicBlock * true_target)
{
  unsigned int D.47558;
  struct MonoMemPool * D.47559;
  int D.47560;
  struct MonoInst * D.47561;
  int D.47562;
  int D.47563;
  const unsigned char * D.47564;
  struct MonoBasicBlock * D.47565;
  struct MonoInst * D.47566;
  int D.47572;
  struct MonoInst * D.47573;
  int D.47574;
  int D.47575;
  unsigned int D.47578;
  unsigned int D.47579;
  unsigned int D.47580;
  int D.47581;
  unsigned char * D.47585;
  struct MonoBasicBlock * * D.47588;
  int D.47589;
  unsigned char * D.47590;
  int D.47591;
  int D.47592;
  unsigned int D.47593;
  unsigned int D.47594;
  struct MonoBasicBlock * * D.47595;
  unsigned int D.47596;
  short unsigned int D.47601;
  short unsigned int D.47602;
  _Bool D.47603;
  short unsigned int D.47604;
  _Bool D.47605;
  _Bool D.47606;
  short unsigned int D.47608;
  short unsigned int D.47609;
  struct MonoBasicBlock * * D.47610;
  struct MonoBasicBlock * * D.47611;
  struct MonoBasicBlock * D.47612;
  short unsigned int D.47617;
  _Bool D.47618;
  _Bool D.47619;
  _Bool D.47620;
  short unsigned int D.47622;
  short unsigned int D.47623;
  _Bool D.47624;
  short unsigned int D.47625;
  _Bool D.47626;
  _Bool D.47627;
  void * D.47630;
  struct MonoBasicBlock * * D.47631;
  struct MonoBasicBlock * * D.47632;
  unsigned char D.47636;
  unsigned char D.47637;
  unsigned int D.47640;
  unsigned int D.47641;
  int D.47642;
  short unsigned int D.47649;
  short unsigned int D.47650;
  _Bool D.47651;
  short unsigned int D.47652;
  _Bool D.47653;
  _Bool D.47654;
  short unsigned int D.47660;
  _Bool D.47661;
  _Bool D.47662;
  _Bool D.47663;
  short unsigned int D.47665;
  short unsigned int D.47666;
  _Bool D.47667;
  short unsigned int D.47668;
  _Bool D.47669;
  _Bool D.47670;
  int D.47674;
  struct MonoInst * D.47675;
  int D.47676;
  int D.47677;
  int intf_bit_reg;

  D.47558 = alloc_preg (cfg);
  intf_bit_reg = (int) D.47558;
  mini_emit_max_iid_check_class (cfg, klass_reg, klass, false_target);
  mini_emit_load_intf_bit_reg_class (cfg, intf_bit_reg, klass_reg, klass);
  {
    struct MonoInst * inst;

    D.47559 = cfg->mempool;
    inst = mono_mempool_alloc (D.47559, 48);
    inst->data.op[1].const_val = 0;
    D.47560 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47560;
    inst->prev = 0B;
    D.47561 = inst->prev;
    inst->next = D.47561;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47562 = inst->sreg3;
    inst->sreg2 = D.47562;
    D.47563 = inst->sreg2;
    inst->sreg1 = D.47563;
    D.47564 = cfg->ip;
    inst->cil_code = D.47564;
    inst->dreg = -1;
    inst->sreg1 = intf_bit_reg;
    inst->data.op[1].const_val = 0;
    D.47565 = cfg->cbb;
    D.47566 = D.47565->last_ins;
    if (D.47566 != 0B) goto <D.47567>; else goto <D.47568>;
    <D.47567>:
    D.47565 = cfg->cbb;
    D.47566 = D.47565->last_ins;
    D.47566->next = inst;
    D.47565 = cfg->cbb;
    D.47566 = D.47565->last_ins;
    inst->prev = D.47566;
    D.47565 = cfg->cbb;
    D.47565->last_ins = inst;
    goto <D.47569>;
    <D.47568>:
    D.47565 = cfg->cbb;
    D.47565 = cfg->cbb;
    D.47565->last_ins = inst;
    D.47566 = D.47565->last_ins;
    D.47565->code = D.47566;
    <D.47569>:
  }
  if (true_target != 0B) goto <D.47570>; else goto <D.47571>;
  <D.47570>:
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.47559 = cfg->mempool;
    ins = mono_mempool_alloc (D.47559, 48);
    ins->data.op[1].const_val = 0;
    D.47572 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.47572;
    ins->prev = 0B;
    D.47573 = ins->prev;
    ins->next = D.47573;
    ins->opcode = 657;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.47574 = ins->sreg3;
    ins->sreg2 = D.47574;
    D.47575 = ins->sreg2;
    ins->sreg1 = D.47575;
    D.47564 = cfg->ip;
    ins->cil_code = D.47564;
    if (0 != 0) goto <D.47576>; else goto <D.47577>;
    <D.47576>:
    D.47559 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.47559, 172);
    D.47578 = cfg->num_bblocks;
    D.47579 = D.47578;
    D.47580 = D.47579 + 1;
    cfg->num_bblocks = D.47580;
    D.47581 = (int) D.47579;
    falsebb->block_num = D.47581;
    ins->data.op[0].target_block = true_target;
    D.47565 = cfg->cbb;
    mono_link_bblock (cfg, D.47565, true_target);
    D.47565 = cfg->cbb;
    D.47566 = D.47565->last_ins;
    if (D.47566 != 0B) goto <D.47582>; else goto <D.47583>;
    <D.47582>:
    D.47565 = cfg->cbb;
    D.47566 = D.47565->last_ins;
    D.47566->next = ins;
    D.47565 = cfg->cbb;
    D.47566 = D.47565->last_ins;
    ins->prev = D.47566;
    D.47565 = cfg->cbb;
    D.47565->last_ins = ins;
    goto <D.47584>;
    <D.47583>:
    D.47565 = cfg->cbb;
    D.47565 = cfg->cbb;
    D.47565->last_ins = ins;
    D.47566 = D.47565->last_ins;
    D.47565->code = D.47566;
    <D.47584>:
    D.47585 = falsebb->cil_code;
    if (D.47585 != 0B) goto <D.47586>; else goto <D.47587>;
    <D.47586>:
    D.47588 = cfg->cil_offset_to_bb;
    D.47585 = falsebb->cil_code;
    D.47589 = (int) D.47585;
    D.47590 = cfg->cil_start;
    D.47591 = (int) D.47590;
    D.47592 = D.47589 - D.47591;
    D.47593 = (unsigned int) D.47592;
    D.47594 = D.47593 * 4;
    D.47595 = D.47588 + D.47594;
    *D.47595 = falsebb;
    <D.47587>:
    D.47596 = cfg->real_offset;
    falsebb->real_offset = D.47596;
    D.47565 = cfg->cbb;
    D.47566 = D.47565->last_ins;
    if (D.47566 != 0B) goto <D.47600>; else goto <D.47597>;
    <D.47600>:
    D.47565 = cfg->cbb;
    D.47566 = D.47565->last_ins;
    D.47601 = D.47566->opcode;
    D.47602 = D.47601 + 64981;
    D.47603 = D.47602 <= 9;
    D.47604 = D.47601 + 64874;
    D.47605 = D.47604 <= 9;
    D.47606 = D.47603 | D.47605;
    if (D.47606 != 0) goto <D.47598>; else goto <D.47607>;
    <D.47607>:
    D.47565 = cfg->cbb;
    D.47566 = D.47565->last_ins;
    D.47608 = D.47566->opcode;
    D.47609 = D.47608 + 64884;
    if (D.47609 <= 9) goto <D.47598>; else goto <D.47597>;
    <D.47598>:
    D.47565 = cfg->cbb;
    D.47566 = D.47565->last_ins;
    D.47610 = D.47566->data.op[1].many_blocks;
    D.47611 = D.47610 + 4;
    D.47612 = *D.47611;
    if (D.47612 == 0B) goto <D.47613>; else goto <D.47597>;
    <D.47613>:
    D.47565 = cfg->cbb;
    D.47566 = D.47565->last_ins;
    D.47610 = D.47566->data.op[1].many_blocks;
    D.47611 = D.47610 + 4;
    *D.47611 = falsebb;
    D.47565 = cfg->cbb;
    mono_link_bblock (cfg, D.47565, falsebb);
    goto <D.47599>;
    <D.47597>:
    D.47565 = cfg->cbb;
    D.47566 = D.47565->last_ins;
    if (D.47566 == 0B) goto <D.47614>; else goto <D.47616>;
    <D.47616>:
    D.47565 = cfg->cbb;
    D.47566 = D.47565->last_ins;
    D.47617 = D.47566->opcode;
    D.47618 = D.47617 != 446;
    D.47619 = D.47617 != 763;
    D.47620 = D.47618 & D.47619;
    if (D.47620 != 0) goto <D.47621>; else goto <D.47615>;
    <D.47621>:
    D.47565 = cfg->cbb;
    D.47566 = D.47565->last_ins;
    D.47622 = D.47566->opcode;
    D.47623 = D.47622 + 64981;
    D.47624 = D.47623 > 9;
    D.47625 = D.47622 + 64874;
    D.47626 = D.47625 > 9;
    D.47627 = D.47624 & D.47626;
    if (D.47627 != 0) goto <D.47628>; else goto <D.47615>;
    <D.47628>:
    D.47565 = cfg->cbb;
    D.47566 = D.47565->last_ins;
    D.47608 = D.47566->opcode;
    D.47609 = D.47608 + 64884;
    if (D.47609 > 9) goto <D.47614>; else goto <D.47615>;
    <D.47614>:
    D.47565 = cfg->cbb;
    mono_link_bblock (cfg, D.47565, falsebb);
    <D.47615>:
    <D.47599>:
    D.47565 = cfg->cbb;
    D.47565->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.47629>;
    <D.47577>:
    D.47559 = cfg->mempool;
    D.47630 = mono_mempool_alloc (D.47559, 8);
    ins->data.op[1].many_blocks = D.47630;
    D.47631 = ins->data.op[1].many_blocks;
    *D.47631 = true_target;
    D.47631 = ins->data.op[1].many_blocks;
    D.47632 = D.47631 + 4;
    *D.47632 = 0B;
    D.47565 = cfg->cbb;
    mono_link_bblock (cfg, D.47565, true_target);
    D.47565 = cfg->cbb;
    D.47566 = D.47565->last_ins;
    if (D.47566 != 0B) goto <D.47633>; else goto <D.47634>;
    <D.47633>:
    D.47565 = cfg->cbb;
    D.47566 = D.47565->last_ins;
    D.47566->next = ins;
    D.47565 = cfg->cbb;
    D.47566 = D.47565->last_ins;
    ins->prev = D.47566;
    D.47565 = cfg->cbb;
    D.47565->last_ins = ins;
    goto <D.47635>;
    <D.47634>:
    D.47565 = cfg->cbb;
    D.47565 = cfg->cbb;
    D.47565->last_ins = ins;
    D.47566 = D.47565->last_ins;
    D.47565->code = D.47566;
    <D.47635>:
    D.47636 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.47637 = D.47636 & 8;
    if (D.47637 == 0) goto <D.47638>; else goto <D.47639>;
    <D.47638>:
    D.47559 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.47559, 172);
    D.47578 = cfg->num_bblocks;
    D.47640 = D.47578;
    D.47641 = D.47640 + 1;
    cfg->num_bblocks = D.47641;
    D.47642 = (int) D.47640;
    falsebb->block_num = D.47642;
    D.47631 = ins->data.op[1].many_blocks;
    D.47632 = D.47631 + 4;
    *D.47632 = falsebb;
    D.47565 = cfg->cbb;
    mono_link_bblock (cfg, D.47565, falsebb);
    D.47585 = falsebb->cil_code;
    if (D.47585 != 0B) goto <D.47643>; else goto <D.47644>;
    <D.47643>:
    D.47588 = cfg->cil_offset_to_bb;
    D.47585 = falsebb->cil_code;
    D.47589 = (int) D.47585;
    D.47590 = cfg->cil_start;
    D.47591 = (int) D.47590;
    D.47592 = D.47589 - D.47591;
    D.47593 = (unsigned int) D.47592;
    D.47594 = D.47593 * 4;
    D.47595 = D.47588 + D.47594;
    *D.47595 = falsebb;
    <D.47644>:
    D.47596 = cfg->real_offset;
    falsebb->real_offset = D.47596;
    D.47565 = cfg->cbb;
    D.47566 = D.47565->last_ins;
    if (D.47566 != 0B) goto <D.47648>; else goto <D.47645>;
    <D.47648>:
    D.47565 = cfg->cbb;
    D.47566 = D.47565->last_ins;
    D.47649 = D.47566->opcode;
    D.47650 = D.47649 + 64981;
    D.47651 = D.47650 <= 9;
    D.47652 = D.47649 + 64874;
    D.47653 = D.47652 <= 9;
    D.47654 = D.47651 | D.47653;
    if (D.47654 != 0) goto <D.47646>; else goto <D.47655>;
    <D.47655>:
    D.47565 = cfg->cbb;
    D.47566 = D.47565->last_ins;
    D.47608 = D.47566->opcode;
    D.47609 = D.47608 + 64884;
    if (D.47609 <= 9) goto <D.47646>; else goto <D.47645>;
    <D.47646>:
    D.47565 = cfg->cbb;
    D.47566 = D.47565->last_ins;
    D.47610 = D.47566->data.op[1].many_blocks;
    D.47611 = D.47610 + 4;
    D.47612 = *D.47611;
    if (D.47612 == 0B) goto <D.47656>; else goto <D.47645>;
    <D.47656>:
    D.47565 = cfg->cbb;
    D.47566 = D.47565->last_ins;
    D.47610 = D.47566->data.op[1].many_blocks;
    D.47611 = D.47610 + 4;
    *D.47611 = falsebb;
    D.47565 = cfg->cbb;
    mono_link_bblock (cfg, D.47565, falsebb);
    goto <D.47647>;
    <D.47645>:
    D.47565 = cfg->cbb;
    D.47566 = D.47565->last_ins;
    if (D.47566 == 0B) goto <D.47657>; else goto <D.47659>;
    <D.47659>:
    D.47565 = cfg->cbb;
    D.47566 = D.47565->last_ins;
    D.47660 = D.47566->opcode;
    D.47661 = D.47660 != 446;
    D.47662 = D.47660 != 763;
    D.47663 = D.47661 & D.47662;
    if (D.47663 != 0) goto <D.47664>; else goto <D.47658>;
    <D.47664>:
    D.47565 = cfg->cbb;
    D.47566 = D.47565->last_ins;
    D.47665 = D.47566->opcode;
    D.47666 = D.47665 + 64981;
    D.47667 = D.47666 > 9;
    D.47668 = D.47665 + 64874;
    D.47669 = D.47668 > 9;
    D.47670 = D.47667 & D.47669;
    if (D.47670 != 0) goto <D.47671>; else goto <D.47658>;
    <D.47671>:
    D.47565 = cfg->cbb;
    D.47566 = D.47565->last_ins;
    D.47608 = D.47566->opcode;
    D.47609 = D.47608 + 64884;
    if (D.47609 > 9) goto <D.47657>; else goto <D.47658>;
    <D.47657>:
    D.47565 = cfg->cbb;
    mono_link_bblock (cfg, D.47565, falsebb);
    <D.47658>:
    <D.47647>:
    D.47565 = cfg->cbb;
    D.47565->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.47672>;
    <D.47639>:
    D.47565 = cfg->cbb;
    D.47565->extended = 1;
    <D.47672>:
    <D.47629>:
  }
  goto <D.47673>;
  <D.47571>:
  {
    struct MonoInst * inst;

    D.47559 = cfg->mempool;
    inst = mono_mempool_alloc (D.47559, 48);
    inst->data.op[1].const_val = 0;
    D.47674 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47674;
    inst->prev = 0B;
    D.47675 = inst->prev;
    inst->next = D.47675;
    inst->opcode = 455;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47676 = inst->sreg3;
    inst->sreg2 = D.47676;
    D.47677 = inst->sreg2;
    inst->sreg1 = D.47677;
    D.47564 = cfg->ip;
    inst->cil_code = D.47564;
    inst->data.op[1].p = "InvalidCastException";
    D.47565 = cfg->cbb;
    D.47566 = D.47565->last_ins;
    if (D.47566 != 0B) goto <D.47678>; else goto <D.47679>;
    <D.47678>:
    D.47565 = cfg->cbb;
    D.47566 = D.47565->last_ins;
    D.47566->next = inst;
    D.47565 = cfg->cbb;
    D.47566 = D.47565->last_ins;
    inst->prev = D.47566;
    D.47565 = cfg->cbb;
    D.47565->last_ins = inst;
    goto <D.47680>;
    <D.47679>:
    D.47565 = cfg->cbb;
    D.47565 = cfg->cbb;
    D.47565->last_ins = inst;
    D.47566 = D.47565->last_ins;
    D.47565->code = D.47566;
    <D.47680>:
  }
  <D.47673>:
}


mini_emit_max_iid_check_class (struct MonoCompile * cfg, int klass_reg, struct MonoClass * klass, struct MonoBasicBlock * false_target)
{
  unsigned int D.47681;
  struct MonoMemPool * D.47682;
  int D.47683;
  struct MonoInst * D.47684;
  int D.47685;
  int D.47686;
  const unsigned char * D.47687;
  struct MonoBasicBlock * D.47688;
  struct MonoInst * D.47689;
  int max_iid_reg;

  D.47681 = alloc_preg (cfg);
  max_iid_reg = (int) D.47681;
  {
    struct MonoInst * inst;

    D.47682 = cfg->mempool;
    inst = mono_mempool_alloc (D.47682, 48);
    inst->data.op[1].const_val = 0;
    D.47683 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47683;
    inst->prev = 0B;
    D.47684 = inst->prev;
    inst->next = D.47684;
    inst->opcode = 395;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47685 = inst->sreg3;
    inst->sreg2 = D.47685;
    D.47686 = inst->sreg2;
    inst->sreg1 = D.47686;
    D.47687 = cfg->ip;
    inst->cil_code = D.47687;
    inst->dreg = max_iid_reg;
    inst->sreg1 = klass_reg;
    inst->data.op[0].const_val = 60;
    D.47688 = cfg->cbb;
    D.47689 = D.47688->last_ins;
    if (D.47689 != 0B) goto <D.47690>; else goto <D.47691>;
    <D.47690>:
    D.47688 = cfg->cbb;
    D.47689 = D.47688->last_ins;
    D.47689->next = inst;
    D.47688 = cfg->cbb;
    D.47689 = D.47688->last_ins;
    inst->prev = D.47689;
    D.47688 = cfg->cbb;
    D.47688->last_ins = inst;
    goto <D.47692>;
    <D.47691>:
    D.47688 = cfg->cbb;
    D.47688 = cfg->cbb;
    D.47688->last_ins = inst;
    D.47689 = D.47688->last_ins;
    D.47688->code = D.47689;
    <D.47692>:
  }
  mini_emit_max_iid_check (cfg, max_iid_reg, klass, false_target);
}


mini_emit_load_intf_bit_reg_class (struct MonoCompile * cfg, int intf_bit_reg, int klass_reg, struct MonoClass * klass)
{
  mini_emit_interface_bitmap_check (cfg, intf_bit_reg, klass_reg, 72, klass);
}


mini_emit_isninst_cast (struct MonoCompile * cfg, int klass_reg, struct MonoClass * klass, struct MonoBasicBlock * false_target, struct MonoBasicBlock * true_target)
{
  mini_emit_isninst_cast_inst (cfg, klass_reg, klass, 0B, false_target, true_target);
}


mini_emit_isninst_cast_inst (struct MonoCompile * cfg, int klass_reg, struct MonoClass * klass, struct MonoInst * klass_ins, struct MonoBasicBlock * false_target, struct MonoBasicBlock * true_target)
{
  unsigned int D.47693;
  unsigned int D.47694;
  unsigned int D.47695;
  short unsigned int D.47696;
  struct MonoMemPool * D.47699;
  int D.47700;
  struct MonoInst * D.47701;
  int D.47702;
  int D.47703;
  const unsigned char * D.47704;
  struct MonoBasicBlock * D.47705;
  struct MonoInst * D.47706;
  int D.47710;
  struct MonoInst * D.47711;
  int D.47712;
  int D.47713;
  int D.47714;
  int D.47718;
  struct MonoInst * D.47719;
  int D.47720;
  int D.47721;
  unsigned int D.47724;
  unsigned int D.47725;
  unsigned int D.47726;
  int D.47727;
  unsigned char * D.47731;
  struct MonoBasicBlock * * D.47734;
  int D.47735;
  unsigned char * D.47736;
  int D.47737;
  int D.47738;
  unsigned int D.47739;
  unsigned int D.47740;
  struct MonoBasicBlock * * D.47741;
  unsigned int D.47742;
  short unsigned int D.47747;
  short unsigned int D.47748;
  _Bool D.47749;
  short unsigned int D.47750;
  _Bool D.47751;
  _Bool D.47752;
  short unsigned int D.47754;
  short unsigned int D.47755;
  struct MonoBasicBlock * * D.47756;
  struct MonoBasicBlock * * D.47757;
  struct MonoBasicBlock * D.47758;
  short unsigned int D.47763;
  _Bool D.47764;
  _Bool D.47765;
  _Bool D.47766;
  short unsigned int D.47768;
  short unsigned int D.47769;
  _Bool D.47770;
  short unsigned int D.47771;
  _Bool D.47772;
  _Bool D.47773;
  void * D.47776;
  struct MonoBasicBlock * * D.47777;
  struct MonoBasicBlock * * D.47778;
  unsigned char D.47782;
  unsigned char D.47783;
  unsigned int D.47786;
  unsigned int D.47787;
  int D.47788;
  short unsigned int D.47795;
  short unsigned int D.47796;
  _Bool D.47797;
  short unsigned int D.47798;
  _Bool D.47799;
  _Bool D.47800;
  short unsigned int D.47806;
  _Bool D.47807;
  _Bool D.47808;
  _Bool D.47809;
  short unsigned int D.47811;
  short unsigned int D.47812;
  _Bool D.47813;
  short unsigned int D.47814;
  _Bool D.47815;
  _Bool D.47816;
  int D.47819;
  struct MonoInst * D.47820;
  int D.47821;
  int D.47822;
  int D.47826;
  struct MonoInst * D.47827;
  int D.47828;
  int D.47829;
  int D.47830;
  int D.47831;
  int D.47837;
  struct MonoInst * D.47838;
  int D.47839;
  int D.47840;
  int D.47841;
  unsigned char D.47846;
  unsigned int D.47849;
  int D.47850;
  struct MonoInst * D.47851;
  guint16 iftmp.488;
  int D.47856;
  int D.47857;
  int D.47860;
  struct MonoInst * D.47861;
  int D.47862;
  int D.47863;
  int D.47864;
  unsigned int D.47866;
  int D.47867;
  int D.47871;
  struct MonoInst * D.47872;
  int D.47873;
  int D.47874;
  int D.47879;
  struct MonoInst * D.47880;
  int D.47881;
  int D.47882;
  int klass.489;
  int D.47887;
  struct MonoInst * D.47888;
  int D.47889;
  int D.47890;
  unsigned int D.47893;
  unsigned int D.47894;
  int D.47895;
  unsigned char * D.47899;
  int D.47902;
  int D.47903;
  unsigned int D.47904;
  unsigned int D.47905;
  struct MonoBasicBlock * * D.47906;
  short unsigned int D.47911;
  short unsigned int D.47912;
  _Bool D.47913;
  short unsigned int D.47914;
  _Bool D.47915;
  _Bool D.47916;
  short unsigned int D.47922;
  _Bool D.47923;
  _Bool D.47924;
  _Bool D.47925;
  short unsigned int D.47927;
  short unsigned int D.47928;
  _Bool D.47929;
  short unsigned int D.47930;
  _Bool D.47931;
  _Bool D.47932;
  void * D.47935;
  struct MonoBasicBlock * * D.47936;
  struct MonoBasicBlock * * D.47937;
  unsigned int D.47943;
  unsigned int D.47944;
  int D.47945;
  short unsigned int D.47952;
  short unsigned int D.47953;
  _Bool D.47954;
  short unsigned int D.47955;
  _Bool D.47956;
  _Bool D.47957;
  short unsigned int D.47963;
  _Bool D.47964;
  _Bool D.47965;
  _Bool D.47966;
  short unsigned int D.47968;
  short unsigned int D.47969;
  _Bool D.47970;
  short unsigned int D.47971;
  _Bool D.47972;
  _Bool D.47973;
  int idepth_reg;
  int stypes_reg;
  int stype;

  D.47693 = alloc_preg (cfg);
  idepth_reg = (int) D.47693;
  D.47694 = alloc_preg (cfg);
  stypes_reg = (int) D.47694;
  D.47695 = alloc_preg (cfg);
  stype = (int) D.47695;
  mono_class_setup_supertypes (klass);
  D.47696 = klass->idepth;
  if (D.47696 > 6) goto <D.47697>; else goto <D.47698>;
  <D.47697>:
  {
    struct MonoInst * inst;

    D.47699 = cfg->mempool;
    inst = mono_mempool_alloc (D.47699, 48);
    inst->data.op[1].const_val = 0;
    D.47700 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47700;
    inst->prev = 0B;
    D.47701 = inst->prev;
    inst->next = D.47701;
    inst->opcode = 395;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47702 = inst->sreg3;
    inst->sreg2 = D.47702;
    D.47703 = inst->sreg2;
    inst->sreg1 = D.47703;
    D.47704 = cfg->ip;
    inst->cil_code = D.47704;
    inst->dreg = idepth_reg;
    inst->sreg1 = klass_reg;
    inst->data.op[0].const_val = 12;
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    if (D.47706 != 0B) goto <D.47707>; else goto <D.47708>;
    <D.47707>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47706->next = inst;
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    inst->prev = D.47706;
    D.47705 = cfg->cbb;
    D.47705->last_ins = inst;
    goto <D.47709>;
    <D.47708>:
    D.47705 = cfg->cbb;
    D.47705 = cfg->cbb;
    D.47705->last_ins = inst;
    D.47706 = D.47705->last_ins;
    D.47705->code = D.47706;
    <D.47709>:
  }
  {
    struct MonoInst * inst;

    D.47699 = cfg->mempool;
    inst = mono_mempool_alloc (D.47699, 48);
    inst->data.op[1].const_val = 0;
    D.47710 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47710;
    inst->prev = 0B;
    D.47711 = inst->prev;
    inst->next = D.47711;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47712 = inst->sreg3;
    inst->sreg2 = D.47712;
    D.47713 = inst->sreg2;
    inst->sreg1 = D.47713;
    D.47704 = cfg->ip;
    inst->cil_code = D.47704;
    inst->dreg = -1;
    inst->sreg1 = idepth_reg;
    D.47696 = klass->idepth;
    D.47714 = (int) D.47696;
    inst->data.op[1].const_val = D.47714;
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    if (D.47706 != 0B) goto <D.47715>; else goto <D.47716>;
    <D.47715>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47706->next = inst;
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    inst->prev = D.47706;
    D.47705 = cfg->cbb;
    D.47705->last_ins = inst;
    goto <D.47717>;
    <D.47716>:
    D.47705 = cfg->cbb;
    D.47705 = cfg->cbb;
    D.47705->last_ins = inst;
    D.47706 = D.47705->last_ins;
    D.47705->code = D.47706;
    <D.47717>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.47699 = cfg->mempool;
    ins = mono_mempool_alloc (D.47699, 48);
    ins->data.op[1].const_val = 0;
    D.47718 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.47718;
    ins->prev = 0B;
    D.47719 = ins->prev;
    ins->next = D.47719;
    ins->opcode = 661;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.47720 = ins->sreg3;
    ins->sreg2 = D.47720;
    D.47721 = ins->sreg2;
    ins->sreg1 = D.47721;
    D.47704 = cfg->ip;
    ins->cil_code = D.47704;
    if (0 != 0) goto <D.47722>; else goto <D.47723>;
    <D.47722>:
    D.47699 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.47699, 172);
    D.47724 = cfg->num_bblocks;
    D.47725 = D.47724;
    D.47726 = D.47725 + 1;
    cfg->num_bblocks = D.47726;
    D.47727 = (int) D.47725;
    falsebb->block_num = D.47727;
    ins->data.op[0].target_block = false_target;
    D.47705 = cfg->cbb;
    mono_link_bblock (cfg, D.47705, false_target);
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    if (D.47706 != 0B) goto <D.47728>; else goto <D.47729>;
    <D.47728>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47706->next = ins;
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    ins->prev = D.47706;
    D.47705 = cfg->cbb;
    D.47705->last_ins = ins;
    goto <D.47730>;
    <D.47729>:
    D.47705 = cfg->cbb;
    D.47705 = cfg->cbb;
    D.47705->last_ins = ins;
    D.47706 = D.47705->last_ins;
    D.47705->code = D.47706;
    <D.47730>:
    D.47731 = falsebb->cil_code;
    if (D.47731 != 0B) goto <D.47732>; else goto <D.47733>;
    <D.47732>:
    D.47734 = cfg->cil_offset_to_bb;
    D.47731 = falsebb->cil_code;
    D.47735 = (int) D.47731;
    D.47736 = cfg->cil_start;
    D.47737 = (int) D.47736;
    D.47738 = D.47735 - D.47737;
    D.47739 = (unsigned int) D.47738;
    D.47740 = D.47739 * 4;
    D.47741 = D.47734 + D.47740;
    *D.47741 = falsebb;
    <D.47733>:
    D.47742 = cfg->real_offset;
    falsebb->real_offset = D.47742;
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    if (D.47706 != 0B) goto <D.47746>; else goto <D.47743>;
    <D.47746>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47747 = D.47706->opcode;
    D.47748 = D.47747 + 64981;
    D.47749 = D.47748 <= 9;
    D.47750 = D.47747 + 64874;
    D.47751 = D.47750 <= 9;
    D.47752 = D.47749 | D.47751;
    if (D.47752 != 0) goto <D.47744>; else goto <D.47753>;
    <D.47753>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47754 = D.47706->opcode;
    D.47755 = D.47754 + 64884;
    if (D.47755 <= 9) goto <D.47744>; else goto <D.47743>;
    <D.47744>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47756 = D.47706->data.op[1].many_blocks;
    D.47757 = D.47756 + 4;
    D.47758 = *D.47757;
    if (D.47758 == 0B) goto <D.47759>; else goto <D.47743>;
    <D.47759>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47756 = D.47706->data.op[1].many_blocks;
    D.47757 = D.47756 + 4;
    *D.47757 = falsebb;
    D.47705 = cfg->cbb;
    mono_link_bblock (cfg, D.47705, falsebb);
    goto <D.47745>;
    <D.47743>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    if (D.47706 == 0B) goto <D.47760>; else goto <D.47762>;
    <D.47762>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47763 = D.47706->opcode;
    D.47764 = D.47763 != 446;
    D.47765 = D.47763 != 763;
    D.47766 = D.47764 & D.47765;
    if (D.47766 != 0) goto <D.47767>; else goto <D.47761>;
    <D.47767>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47768 = D.47706->opcode;
    D.47769 = D.47768 + 64981;
    D.47770 = D.47769 > 9;
    D.47771 = D.47768 + 64874;
    D.47772 = D.47771 > 9;
    D.47773 = D.47770 & D.47772;
    if (D.47773 != 0) goto <D.47774>; else goto <D.47761>;
    <D.47774>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47754 = D.47706->opcode;
    D.47755 = D.47754 + 64884;
    if (D.47755 > 9) goto <D.47760>; else goto <D.47761>;
    <D.47760>:
    D.47705 = cfg->cbb;
    mono_link_bblock (cfg, D.47705, falsebb);
    <D.47761>:
    <D.47745>:
    D.47705 = cfg->cbb;
    D.47705->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.47775>;
    <D.47723>:
    D.47699 = cfg->mempool;
    D.47776 = mono_mempool_alloc (D.47699, 8);
    ins->data.op[1].many_blocks = D.47776;
    D.47777 = ins->data.op[1].many_blocks;
    *D.47777 = false_target;
    D.47777 = ins->data.op[1].many_blocks;
    D.47778 = D.47777 + 4;
    *D.47778 = 0B;
    D.47705 = cfg->cbb;
    mono_link_bblock (cfg, D.47705, false_target);
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    if (D.47706 != 0B) goto <D.47779>; else goto <D.47780>;
    <D.47779>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47706->next = ins;
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    ins->prev = D.47706;
    D.47705 = cfg->cbb;
    D.47705->last_ins = ins;
    goto <D.47781>;
    <D.47780>:
    D.47705 = cfg->cbb;
    D.47705 = cfg->cbb;
    D.47705->last_ins = ins;
    D.47706 = D.47705->last_ins;
    D.47705->code = D.47706;
    <D.47781>:
    D.47782 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.47783 = D.47782 & 8;
    if (D.47783 == 0) goto <D.47784>; else goto <D.47785>;
    <D.47784>:
    D.47699 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.47699, 172);
    D.47724 = cfg->num_bblocks;
    D.47786 = D.47724;
    D.47787 = D.47786 + 1;
    cfg->num_bblocks = D.47787;
    D.47788 = (int) D.47786;
    falsebb->block_num = D.47788;
    D.47777 = ins->data.op[1].many_blocks;
    D.47778 = D.47777 + 4;
    *D.47778 = falsebb;
    D.47705 = cfg->cbb;
    mono_link_bblock (cfg, D.47705, falsebb);
    D.47731 = falsebb->cil_code;
    if (D.47731 != 0B) goto <D.47789>; else goto <D.47790>;
    <D.47789>:
    D.47734 = cfg->cil_offset_to_bb;
    D.47731 = falsebb->cil_code;
    D.47735 = (int) D.47731;
    D.47736 = cfg->cil_start;
    D.47737 = (int) D.47736;
    D.47738 = D.47735 - D.47737;
    D.47739 = (unsigned int) D.47738;
    D.47740 = D.47739 * 4;
    D.47741 = D.47734 + D.47740;
    *D.47741 = falsebb;
    <D.47790>:
    D.47742 = cfg->real_offset;
    falsebb->real_offset = D.47742;
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    if (D.47706 != 0B) goto <D.47794>; else goto <D.47791>;
    <D.47794>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47795 = D.47706->opcode;
    D.47796 = D.47795 + 64981;
    D.47797 = D.47796 <= 9;
    D.47798 = D.47795 + 64874;
    D.47799 = D.47798 <= 9;
    D.47800 = D.47797 | D.47799;
    if (D.47800 != 0) goto <D.47792>; else goto <D.47801>;
    <D.47801>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47754 = D.47706->opcode;
    D.47755 = D.47754 + 64884;
    if (D.47755 <= 9) goto <D.47792>; else goto <D.47791>;
    <D.47792>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47756 = D.47706->data.op[1].many_blocks;
    D.47757 = D.47756 + 4;
    D.47758 = *D.47757;
    if (D.47758 == 0B) goto <D.47802>; else goto <D.47791>;
    <D.47802>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47756 = D.47706->data.op[1].many_blocks;
    D.47757 = D.47756 + 4;
    *D.47757 = falsebb;
    D.47705 = cfg->cbb;
    mono_link_bblock (cfg, D.47705, falsebb);
    goto <D.47793>;
    <D.47791>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    if (D.47706 == 0B) goto <D.47803>; else goto <D.47805>;
    <D.47805>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47806 = D.47706->opcode;
    D.47807 = D.47806 != 446;
    D.47808 = D.47806 != 763;
    D.47809 = D.47807 & D.47808;
    if (D.47809 != 0) goto <D.47810>; else goto <D.47804>;
    <D.47810>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47811 = D.47706->opcode;
    D.47812 = D.47811 + 64981;
    D.47813 = D.47812 > 9;
    D.47814 = D.47811 + 64874;
    D.47815 = D.47814 > 9;
    D.47816 = D.47813 & D.47815;
    if (D.47816 != 0) goto <D.47817>; else goto <D.47804>;
    <D.47817>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47754 = D.47706->opcode;
    D.47755 = D.47754 + 64884;
    if (D.47755 > 9) goto <D.47803>; else goto <D.47804>;
    <D.47803>:
    D.47705 = cfg->cbb;
    mono_link_bblock (cfg, D.47705, falsebb);
    <D.47804>:
    <D.47793>:
    D.47705 = cfg->cbb;
    D.47705->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.47818>;
    <D.47785>:
    D.47705 = cfg->cbb;
    D.47705->extended = 1;
    <D.47818>:
    <D.47775>:
  }
  <D.47698>:
  {
    struct MonoInst * inst;

    D.47699 = cfg->mempool;
    inst = mono_mempool_alloc (D.47699, 48);
    inst->data.op[1].const_val = 0;
    D.47819 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47819;
    inst->prev = 0B;
    D.47820 = inst->prev;
    inst->next = D.47820;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47821 = inst->sreg3;
    inst->sreg2 = D.47821;
    D.47822 = inst->sreg2;
    inst->sreg1 = D.47822;
    D.47704 = cfg->ip;
    inst->cil_code = D.47704;
    inst->dreg = stypes_reg;
    inst->sreg1 = klass_reg;
    inst->data.op[0].const_val = 8;
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    if (D.47706 != 0B) goto <D.47823>; else goto <D.47824>;
    <D.47823>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47706->next = inst;
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    inst->prev = D.47706;
    D.47705 = cfg->cbb;
    D.47705->last_ins = inst;
    goto <D.47825>;
    <D.47824>:
    D.47705 = cfg->cbb;
    D.47705 = cfg->cbb;
    D.47705->last_ins = inst;
    D.47706 = D.47705->last_ins;
    D.47705->code = D.47706;
    <D.47825>:
  }
  {
    struct MonoInst * inst;

    D.47699 = cfg->mempool;
    inst = mono_mempool_alloc (D.47699, 48);
    inst->data.op[1].const_val = 0;
    D.47826 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47826;
    inst->prev = 0B;
    D.47827 = inst->prev;
    inst->next = D.47827;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47828 = inst->sreg3;
    inst->sreg2 = D.47828;
    D.47829 = inst->sreg2;
    inst->sreg1 = D.47829;
    D.47704 = cfg->ip;
    inst->cil_code = D.47704;
    inst->dreg = stype;
    inst->sreg1 = stypes_reg;
    D.47696 = klass->idepth;
    D.47714 = (int) D.47696;
    D.47830 = D.47714 + -1;
    D.47831 = D.47830 * 4;
    inst->data.op[0].const_val = D.47831;
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    if (D.47706 != 0B) goto <D.47832>; else goto <D.47833>;
    <D.47832>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47706->next = inst;
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    inst->prev = D.47706;
    D.47705 = cfg->cbb;
    D.47705->last_ins = inst;
    goto <D.47834>;
    <D.47833>:
    D.47705 = cfg->cbb;
    D.47705 = cfg->cbb;
    D.47705->last_ins = inst;
    D.47706 = D.47705->last_ins;
    D.47705->code = D.47706;
    <D.47834>:
  }
  if (klass_ins != 0B) goto <D.47835>; else goto <D.47836>;
  <D.47835>:
  {
    struct MonoInst * inst;

    D.47699 = cfg->mempool;
    inst = mono_mempool_alloc (D.47699, 48);
    inst->data.op[1].const_val = 0;
    D.47837 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47837;
    inst->prev = 0B;
    D.47838 = inst->prev;
    inst->next = D.47838;
    inst->opcode = 322;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47839 = inst->sreg3;
    inst->sreg2 = D.47839;
    D.47840 = inst->sreg2;
    inst->sreg1 = D.47840;
    D.47704 = cfg->ip;
    inst->cil_code = D.47704;
    inst->dreg = -1;
    inst->sreg1 = stype;
    D.47841 = klass_ins->dreg;
    inst->sreg2 = D.47841;
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    if (D.47706 != 0B) goto <D.47842>; else goto <D.47843>;
    <D.47842>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47706->next = inst;
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    inst->prev = D.47706;
    D.47705 = cfg->cbb;
    D.47705->last_ins = inst;
    goto <D.47844>;
    <D.47843>:
    D.47705 = cfg->cbb;
    D.47705 = cfg->cbb;
    D.47705->last_ins = inst;
    D.47706 = D.47705->last_ins;
    D.47705->code = D.47706;
    <D.47844>:
  }
  goto <D.47845>;
  <D.47836>:
  D.47782 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.47846 = D.47782 & 64;
  if (D.47846 != 0) goto <D.47847>; else goto <D.47848>;
  <D.47847>:
  {
    int const_reg;

    D.47849 = alloc_preg (cfg);
    const_reg = (int) D.47849;
    {
      struct MonoInst * inst;

      D.47699 = cfg->mempool;
      inst = mono_mempool_alloc (D.47699, 48);
      inst->data.op[1].const_val = 0;
      D.47850 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47850;
      inst->prev = 0B;
      D.47851 = inst->prev;
      inst->next = D.47851;
      D.47782 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.47846 = D.47782 & 64;
      if (D.47846 != 0) goto <D.47853>; else goto <D.47854>;
      <D.47853>:
      iftmp.488 = 738;
      goto <D.47855>;
      <D.47854>:
      iftmp.488 = 362;
      <D.47855>:
      inst->opcode = iftmp.488;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47856 = inst->sreg3;
      inst->sreg2 = D.47856;
      D.47857 = inst->sreg2;
      inst->sreg1 = D.47857;
      D.47704 = cfg->ip;
      inst->cil_code = D.47704;
      D.47782 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.47846 = D.47782 & 64;
      if (D.47846 != 0) goto <D.47858>; else goto <D.47859>;
      <D.47858>:
      {
        struct MonoInst * group;
        struct MonoInst * got_loc;

        got_loc = mono_get_got_var (cfg);
        D.47699 = cfg->mempool;
        group = mono_mempool_alloc (D.47699, 48);
        group->data.op[1].const_val = 0;
        D.47860 = group->data.op[1].const_val;
        group->data.op[0].const_val = D.47860;
        group->prev = 0B;
        D.47861 = group->prev;
        group->next = D.47861;
        group->opcode = 737;
        group->flags = 0;
        group->type = 0;
        group->dreg = -1;
        group->sreg3 = -1;
        D.47862 = group->sreg3;
        group->sreg2 = D.47862;
        D.47863 = group->sreg2;
        group->sreg1 = D.47863;
        D.47704 = cfg->ip;
        group->cil_code = D.47704;
        group->data.op[0].src = klass;
        group->data.op[1].src = 11B;
        D.47864 = got_loc->dreg;
        inst->sreg1 = D.47864;
        inst->data.op[1].p = group;
      }
      goto <D.47865>;
      <D.47859>:
      inst->data.op[0].p = klass;
      inst->data.op[1].src = 11B;
      <D.47865>:
      inst->type = 3;
      D.47866 = alloc_dreg (cfg, 3);
      D.47867 = (int) D.47866;
      inst->dreg = D.47867;
      inst->dreg = const_reg;
      D.47705 = cfg->cbb;
      D.47706 = D.47705->last_ins;
      if (D.47706 != 0B) goto <D.47868>; else goto <D.47869>;
      <D.47868>:
      D.47705 = cfg->cbb;
      D.47706 = D.47705->last_ins;
      D.47706->next = inst;
      D.47705 = cfg->cbb;
      D.47706 = D.47705->last_ins;
      inst->prev = D.47706;
      D.47705 = cfg->cbb;
      D.47705->last_ins = inst;
      goto <D.47870>;
      <D.47869>:
      D.47705 = cfg->cbb;
      D.47705 = cfg->cbb;
      D.47705->last_ins = inst;
      D.47706 = D.47705->last_ins;
      D.47705->code = D.47706;
      <D.47870>:
    }
    {
      struct MonoInst * inst;

      D.47699 = cfg->mempool;
      inst = mono_mempool_alloc (D.47699, 48);
      inst->data.op[1].const_val = 0;
      D.47871 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47871;
      inst->prev = 0B;
      D.47872 = inst->prev;
      inst->next = D.47872;
      inst->opcode = 322;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47873 = inst->sreg3;
      inst->sreg2 = D.47873;
      D.47874 = inst->sreg2;
      inst->sreg1 = D.47874;
      D.47704 = cfg->ip;
      inst->cil_code = D.47704;
      inst->dreg = -1;
      inst->sreg1 = stype;
      inst->sreg2 = const_reg;
      D.47705 = cfg->cbb;
      D.47706 = D.47705->last_ins;
      if (D.47706 != 0B) goto <D.47875>; else goto <D.47876>;
      <D.47875>:
      D.47705 = cfg->cbb;
      D.47706 = D.47705->last_ins;
      D.47706->next = inst;
      D.47705 = cfg->cbb;
      D.47706 = D.47705->last_ins;
      inst->prev = D.47706;
      D.47705 = cfg->cbb;
      D.47705->last_ins = inst;
      goto <D.47877>;
      <D.47876>:
      D.47705 = cfg->cbb;
      D.47705 = cfg->cbb;
      D.47705->last_ins = inst;
      D.47706 = D.47705->last_ins;
      D.47705->code = D.47706;
      <D.47877>:
    }
  }
  goto <D.47878>;
  <D.47848>:
  {
    struct MonoInst * inst;

    D.47699 = cfg->mempool;
    inst = mono_mempool_alloc (D.47699, 48);
    inst->data.op[1].const_val = 0;
    D.47879 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47879;
    inst->prev = 0B;
    D.47880 = inst->prev;
    inst->next = D.47880;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47881 = inst->sreg3;
    inst->sreg2 = D.47881;
    D.47882 = inst->sreg2;
    inst->sreg1 = D.47882;
    D.47704 = cfg->ip;
    inst->cil_code = D.47704;
    inst->dreg = -1;
    inst->sreg1 = stype;
    klass.489 = (int) klass;
    inst->data.op[1].const_val = klass.489;
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    if (D.47706 != 0B) goto <D.47884>; else goto <D.47885>;
    <D.47884>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47706->next = inst;
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    inst->prev = D.47706;
    D.47705 = cfg->cbb;
    D.47705->last_ins = inst;
    goto <D.47886>;
    <D.47885>:
    D.47705 = cfg->cbb;
    D.47705 = cfg->cbb;
    D.47705->last_ins = inst;
    D.47706 = D.47705->last_ins;
    D.47705->code = D.47706;
    <D.47886>:
  }
  <D.47878>:
  <D.47845>:
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.47699 = cfg->mempool;
    ins = mono_mempool_alloc (D.47699, 48);
    ins->data.op[1].const_val = 0;
    D.47887 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.47887;
    ins->prev = 0B;
    D.47888 = ins->prev;
    ins->next = D.47888;
    ins->opcode = 652;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.47889 = ins->sreg3;
    ins->sreg2 = D.47889;
    D.47890 = ins->sreg2;
    ins->sreg1 = D.47890;
    D.47704 = cfg->ip;
    ins->cil_code = D.47704;
    if (0 != 0) goto <D.47891>; else goto <D.47892>;
    <D.47891>:
    D.47699 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.47699, 172);
    D.47724 = cfg->num_bblocks;
    D.47893 = D.47724;
    D.47894 = D.47893 + 1;
    cfg->num_bblocks = D.47894;
    D.47895 = (int) D.47893;
    falsebb->block_num = D.47895;
    ins->data.op[0].target_block = true_target;
    D.47705 = cfg->cbb;
    mono_link_bblock (cfg, D.47705, true_target);
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    if (D.47706 != 0B) goto <D.47896>; else goto <D.47897>;
    <D.47896>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47706->next = ins;
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    ins->prev = D.47706;
    D.47705 = cfg->cbb;
    D.47705->last_ins = ins;
    goto <D.47898>;
    <D.47897>:
    D.47705 = cfg->cbb;
    D.47705 = cfg->cbb;
    D.47705->last_ins = ins;
    D.47706 = D.47705->last_ins;
    D.47705->code = D.47706;
    <D.47898>:
    D.47899 = falsebb->cil_code;
    if (D.47899 != 0B) goto <D.47900>; else goto <D.47901>;
    <D.47900>:
    D.47734 = cfg->cil_offset_to_bb;
    D.47899 = falsebb->cil_code;
    D.47902 = (int) D.47899;
    D.47736 = cfg->cil_start;
    D.47737 = (int) D.47736;
    D.47903 = D.47902 - D.47737;
    D.47904 = (unsigned int) D.47903;
    D.47905 = D.47904 * 4;
    D.47906 = D.47734 + D.47905;
    *D.47906 = falsebb;
    <D.47901>:
    D.47742 = cfg->real_offset;
    falsebb->real_offset = D.47742;
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    if (D.47706 != 0B) goto <D.47910>; else goto <D.47907>;
    <D.47910>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47911 = D.47706->opcode;
    D.47912 = D.47911 + 64981;
    D.47913 = D.47912 <= 9;
    D.47914 = D.47911 + 64874;
    D.47915 = D.47914 <= 9;
    D.47916 = D.47913 | D.47915;
    if (D.47916 != 0) goto <D.47908>; else goto <D.47917>;
    <D.47917>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47754 = D.47706->opcode;
    D.47755 = D.47754 + 64884;
    if (D.47755 <= 9) goto <D.47908>; else goto <D.47907>;
    <D.47908>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47756 = D.47706->data.op[1].many_blocks;
    D.47757 = D.47756 + 4;
    D.47758 = *D.47757;
    if (D.47758 == 0B) goto <D.47918>; else goto <D.47907>;
    <D.47918>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47756 = D.47706->data.op[1].many_blocks;
    D.47757 = D.47756 + 4;
    *D.47757 = falsebb;
    D.47705 = cfg->cbb;
    mono_link_bblock (cfg, D.47705, falsebb);
    goto <D.47909>;
    <D.47907>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    if (D.47706 == 0B) goto <D.47919>; else goto <D.47921>;
    <D.47921>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47922 = D.47706->opcode;
    D.47923 = D.47922 != 446;
    D.47924 = D.47922 != 763;
    D.47925 = D.47923 & D.47924;
    if (D.47925 != 0) goto <D.47926>; else goto <D.47920>;
    <D.47926>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47927 = D.47706->opcode;
    D.47928 = D.47927 + 64981;
    D.47929 = D.47928 > 9;
    D.47930 = D.47927 + 64874;
    D.47931 = D.47930 > 9;
    D.47932 = D.47929 & D.47931;
    if (D.47932 != 0) goto <D.47933>; else goto <D.47920>;
    <D.47933>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47754 = D.47706->opcode;
    D.47755 = D.47754 + 64884;
    if (D.47755 > 9) goto <D.47919>; else goto <D.47920>;
    <D.47919>:
    D.47705 = cfg->cbb;
    mono_link_bblock (cfg, D.47705, falsebb);
    <D.47920>:
    <D.47909>:
    D.47705 = cfg->cbb;
    D.47705->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.47934>;
    <D.47892>:
    D.47699 = cfg->mempool;
    D.47935 = mono_mempool_alloc (D.47699, 8);
    ins->data.op[1].many_blocks = D.47935;
    D.47936 = ins->data.op[1].many_blocks;
    *D.47936 = true_target;
    D.47936 = ins->data.op[1].many_blocks;
    D.47937 = D.47936 + 4;
    *D.47937 = 0B;
    D.47705 = cfg->cbb;
    mono_link_bblock (cfg, D.47705, true_target);
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    if (D.47706 != 0B) goto <D.47938>; else goto <D.47939>;
    <D.47938>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47706->next = ins;
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    ins->prev = D.47706;
    D.47705 = cfg->cbb;
    D.47705->last_ins = ins;
    goto <D.47940>;
    <D.47939>:
    D.47705 = cfg->cbb;
    D.47705 = cfg->cbb;
    D.47705->last_ins = ins;
    D.47706 = D.47705->last_ins;
    D.47705->code = D.47706;
    <D.47940>:
    D.47782 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.47783 = D.47782 & 8;
    if (D.47783 == 0) goto <D.47941>; else goto <D.47942>;
    <D.47941>:
    D.47699 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.47699, 172);
    D.47724 = cfg->num_bblocks;
    D.47943 = D.47724;
    D.47944 = D.47943 + 1;
    cfg->num_bblocks = D.47944;
    D.47945 = (int) D.47943;
    falsebb->block_num = D.47945;
    D.47936 = ins->data.op[1].many_blocks;
    D.47937 = D.47936 + 4;
    *D.47937 = falsebb;
    D.47705 = cfg->cbb;
    mono_link_bblock (cfg, D.47705, falsebb);
    D.47899 = falsebb->cil_code;
    if (D.47899 != 0B) goto <D.47946>; else goto <D.47947>;
    <D.47946>:
    D.47734 = cfg->cil_offset_to_bb;
    D.47899 = falsebb->cil_code;
    D.47902 = (int) D.47899;
    D.47736 = cfg->cil_start;
    D.47737 = (int) D.47736;
    D.47903 = D.47902 - D.47737;
    D.47904 = (unsigned int) D.47903;
    D.47905 = D.47904 * 4;
    D.47906 = D.47734 + D.47905;
    *D.47906 = falsebb;
    <D.47947>:
    D.47742 = cfg->real_offset;
    falsebb->real_offset = D.47742;
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    if (D.47706 != 0B) goto <D.47951>; else goto <D.47948>;
    <D.47951>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47952 = D.47706->opcode;
    D.47953 = D.47952 + 64981;
    D.47954 = D.47953 <= 9;
    D.47955 = D.47952 + 64874;
    D.47956 = D.47955 <= 9;
    D.47957 = D.47954 | D.47956;
    if (D.47957 != 0) goto <D.47949>; else goto <D.47958>;
    <D.47958>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47754 = D.47706->opcode;
    D.47755 = D.47754 + 64884;
    if (D.47755 <= 9) goto <D.47949>; else goto <D.47948>;
    <D.47949>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47756 = D.47706->data.op[1].many_blocks;
    D.47757 = D.47756 + 4;
    D.47758 = *D.47757;
    if (D.47758 == 0B) goto <D.47959>; else goto <D.47948>;
    <D.47959>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47756 = D.47706->data.op[1].many_blocks;
    D.47757 = D.47756 + 4;
    *D.47757 = falsebb;
    D.47705 = cfg->cbb;
    mono_link_bblock (cfg, D.47705, falsebb);
    goto <D.47950>;
    <D.47948>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    if (D.47706 == 0B) goto <D.47960>; else goto <D.47962>;
    <D.47962>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47963 = D.47706->opcode;
    D.47964 = D.47963 != 446;
    D.47965 = D.47963 != 763;
    D.47966 = D.47964 & D.47965;
    if (D.47966 != 0) goto <D.47967>; else goto <D.47961>;
    <D.47967>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47968 = D.47706->opcode;
    D.47969 = D.47968 + 64981;
    D.47970 = D.47969 > 9;
    D.47971 = D.47968 + 64874;
    D.47972 = D.47971 > 9;
    D.47973 = D.47970 & D.47972;
    if (D.47973 != 0) goto <D.47974>; else goto <D.47961>;
    <D.47974>:
    D.47705 = cfg->cbb;
    D.47706 = D.47705->last_ins;
    D.47754 = D.47706->opcode;
    D.47755 = D.47754 + 64884;
    if (D.47755 > 9) goto <D.47960>; else goto <D.47961>;
    <D.47960>:
    D.47705 = cfg->cbb;
    mono_link_bblock (cfg, D.47705, falsebb);
    <D.47961>:
    <D.47950>:
    D.47705 = cfg->cbb;
    D.47705->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.47975>;
    <D.47942>:
    D.47705 = cfg->cbb;
    D.47705->extended = 1;
    <D.47975>:
    <D.47934>:
  }
}


handle_unbox_gsharedvt (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * obj, struct MonoBasicBlock * * out_cbb)
{
  struct MonoInst * obj.490;
  struct MonoInst * obj.491;
  struct MonoMemPool * D.47978;
  unsigned int D.47979;
  unsigned int D.47980;
  unsigned int D.47981;
  int D.47982;
  unsigned int D.47983;
  unsigned int D.47984;
  int D.47985;
  unsigned int D.47986;
  unsigned int D.47987;
  int D.47988;
  int D.47989;
  struct MonoInst * D.47990;
  int D.47991;
  int D.47992;
  const unsigned char * D.47993;
  int D.47994;
  struct MonoBasicBlock * D.47995;
  struct MonoInst * D.47996;
  int D.48000;
  struct MonoInst * D.48001;
  int D.48002;
  int D.48003;
  unsigned int D.48006;
  unsigned int D.48007;
  int D.48008;
  unsigned char * D.48012;
  struct MonoBasicBlock * * D.48015;
  int D.48016;
  unsigned char * D.48017;
  int D.48018;
  int D.48019;
  unsigned int D.48020;
  unsigned int D.48021;
  struct MonoBasicBlock * * D.48022;
  unsigned int D.48023;
  short unsigned int D.48028;
  short unsigned int D.48029;
  _Bool D.48030;
  short unsigned int D.48031;
  _Bool D.48032;
  _Bool D.48033;
  short unsigned int D.48035;
  short unsigned int D.48036;
  struct MonoBasicBlock * * D.48037;
  struct MonoBasicBlock * * D.48038;
  struct MonoBasicBlock * D.48039;
  short unsigned int D.48044;
  _Bool D.48045;
  _Bool D.48046;
  _Bool D.48047;
  short unsigned int D.48049;
  short unsigned int D.48050;
  _Bool D.48051;
  short unsigned int D.48052;
  _Bool D.48053;
  _Bool D.48054;
  void * D.48057;
  struct MonoBasicBlock * * D.48058;
  struct MonoBasicBlock * * D.48059;
  unsigned char D.48063;
  unsigned char D.48064;
  unsigned int D.48067;
  unsigned int D.48068;
  int D.48069;
  short unsigned int D.48076;
  short unsigned int D.48077;
  _Bool D.48078;
  short unsigned int D.48079;
  _Bool D.48080;
  _Bool D.48081;
  short unsigned int D.48087;
  _Bool D.48088;
  _Bool D.48089;
  _Bool D.48090;
  short unsigned int D.48092;
  short unsigned int D.48093;
  _Bool D.48094;
  short unsigned int D.48095;
  _Bool D.48096;
  _Bool D.48097;
  int D.48100;
  struct MonoInst * D.48101;
  int D.48102;
  int D.48103;
  int D.48107;
  struct MonoInst * D.48108;
  int D.48109;
  int D.48110;
  unsigned int D.48113;
  unsigned int D.48114;
  int D.48115;
  unsigned char * D.48119;
  int D.48122;
  int D.48123;
  unsigned int D.48124;
  unsigned int D.48125;
  struct MonoBasicBlock * * D.48126;
  short unsigned int D.48131;
  short unsigned int D.48132;
  _Bool D.48133;
  short unsigned int D.48134;
  _Bool D.48135;
  _Bool D.48136;
  short unsigned int D.48142;
  _Bool D.48143;
  _Bool D.48144;
  _Bool D.48145;
  short unsigned int D.48147;
  short unsigned int D.48148;
  _Bool D.48149;
  short unsigned int D.48150;
  _Bool D.48151;
  _Bool D.48152;
  void * D.48155;
  struct MonoBasicBlock * * D.48156;
  struct MonoBasicBlock * * D.48157;
  unsigned int D.48163;
  unsigned int D.48164;
  int D.48165;
  short unsigned int D.48172;
  short unsigned int D.48173;
  _Bool D.48174;
  short unsigned int D.48175;
  _Bool D.48176;
  _Bool D.48177;
  short unsigned int D.48183;
  _Bool D.48184;
  _Bool D.48185;
  _Bool D.48186;
  short unsigned int D.48188;
  short unsigned int D.48189;
  _Bool D.48190;
  short unsigned int D.48191;
  _Bool D.48192;
  _Bool D.48193;
  unsigned int D.48196;
  int D.48197;
  struct MonoInst * D.48198;
  int D.48199;
  int D.48200;
  int D.48201;
  int D.48205;
  struct MonoInst * D.48206;
  int D.48207;
  int D.48208;
  unsigned int D.48211;
  unsigned int D.48212;
  int D.48213;
  unsigned char * D.48217;
  int D.48220;
  int D.48221;
  unsigned int D.48222;
  unsigned int D.48223;
  struct MonoBasicBlock * * D.48224;
  short unsigned int D.48229;
  short unsigned int D.48230;
  _Bool D.48231;
  short unsigned int D.48232;
  _Bool D.48233;
  _Bool D.48234;
  short unsigned int D.48240;
  _Bool D.48241;
  _Bool D.48242;
  _Bool D.48243;
  short unsigned int D.48245;
  short unsigned int D.48246;
  _Bool D.48247;
  short unsigned int D.48248;
  _Bool D.48249;
  _Bool D.48250;
  void * D.48253;
  struct MonoBasicBlock * * D.48254;
  struct MonoBasicBlock * * D.48255;
  unsigned int D.48261;
  unsigned int D.48262;
  int D.48263;
  short unsigned int D.48270;
  short unsigned int D.48271;
  _Bool D.48272;
  short unsigned int D.48273;
  _Bool D.48274;
  _Bool D.48275;
  short unsigned int D.48281;
  _Bool D.48282;
  _Bool D.48283;
  _Bool D.48284;
  short unsigned int D.48286;
  short unsigned int D.48287;
  _Bool D.48288;
  short unsigned int D.48289;
  _Bool D.48290;
  _Bool D.48291;
  unsigned char * D.48294;
  int D.48297;
  int D.48298;
  unsigned int D.48299;
  unsigned int D.48300;
  struct MonoBasicBlock * * D.48301;
  short unsigned int D.48306;
  short unsigned int D.48307;
  _Bool D.48308;
  short unsigned int D.48309;
  _Bool D.48310;
  _Bool D.48311;
  short unsigned int D.48317;
  _Bool D.48318;
  _Bool D.48319;
  _Bool D.48320;
  short unsigned int D.48322;
  short unsigned int D.48323;
  _Bool D.48324;
  short unsigned int D.48325;
  _Bool D.48326;
  _Bool D.48327;
  unsigned int D.48329;
  struct MonoInst * iftmp.492;
  unsigned int dreg.493;
  unsigned int D.48332;
  struct MonoInst * * D.48335;
  unsigned int dreg.494;
  unsigned int D.48337;
  struct MonoInst * * D.48338;
  struct MonoType * D.48342;
  unsigned char D.48343;
  unsigned char D.48344;
  struct MonoClass * D.48345;
  unsigned int D.48346;
  int D.48347;
  int D.48348;
  _Bool D.48349;
  long int D.48350;
  long int D.48351;
  struct MonoType * D.48354;
  int D.48355;
  _Bool iftmp.495;
  int D.48359;
  unsigned char D.48362;
  _Bool D.48363;
  _Bool D.48364;
  _Bool D.48365;
  int D.48366;
  unsigned char D.48368;
  struct MonoInst * iftmp.496;
  int D.48372;
  int D.48373;
  unsigned int D.48374;
  sizetype D.48377;
  sizetype D.48378;
  sizetype D.48379;
  struct MonoInst * * D.48380;
  struct MonoInst * iftmp.497;
  int D.48383;
  unsigned int D.48384;
  sizetype D.48387;
  sizetype D.48388;
  struct MonoInst * * D.48389;
  _Bool D.48391;
  long int D.48392;
  long int D.48393;
  _Bool D.48396;
  long int D.48397;
  long int D.48398;
  unsigned char D.48401;
  unsigned char D.48402;
  unsigned char D.48403;
  unsigned char D.48404;
  int D.48408;
  struct MonoInst * D.48409;
  int D.48410;
  int D.48411;
  int D.48412;
  int D.48416;
  struct MonoInst * D.48417;
  int D.48418;
  int D.48419;
  unsigned int D.48422;
  unsigned int D.48423;
  int D.48424;
  unsigned char * D.48428;
  int D.48431;
  int D.48432;
  unsigned int D.48433;
  unsigned int D.48434;
  struct MonoBasicBlock * * D.48435;
  short unsigned int D.48440;
  short unsigned int D.48441;
  _Bool D.48442;
  short unsigned int D.48443;
  _Bool D.48444;
  _Bool D.48445;
  short unsigned int D.48451;
  _Bool D.48452;
  _Bool D.48453;
  _Bool D.48454;
  short unsigned int D.48456;
  short unsigned int D.48457;
  _Bool D.48458;
  short unsigned int D.48459;
  _Bool D.48460;
  _Bool D.48461;
  void * D.48464;
  struct MonoBasicBlock * * D.48465;
  struct MonoBasicBlock * * D.48466;
  unsigned int D.48472;
  unsigned int D.48473;
  int D.48474;
  short unsigned int D.48481;
  short unsigned int D.48482;
  _Bool D.48483;
  short unsigned int D.48484;
  _Bool D.48485;
  _Bool D.48486;
  short unsigned int D.48492;
  _Bool D.48493;
  _Bool D.48494;
  _Bool D.48495;
  short unsigned int D.48497;
  short unsigned int D.48498;
  _Bool D.48499;
  short unsigned int D.48500;
  _Bool D.48501;
  _Bool D.48502;
  unsigned char * D.48505;
  int D.48508;
  int D.48509;
  unsigned int D.48510;
  unsigned int D.48511;
  struct MonoBasicBlock * * D.48512;
  short unsigned int D.48517;
  short unsigned int D.48518;
  _Bool D.48519;
  short unsigned int D.48520;
  _Bool D.48521;
  _Bool D.48522;
  short unsigned int D.48528;
  _Bool D.48529;
  _Bool D.48530;
  _Bool D.48531;
  short unsigned int D.48533;
  short unsigned int D.48534;
  _Bool D.48535;
  short unsigned int D.48536;
  _Bool D.48537;
  _Bool D.48538;
  struct MonoClass * D.48540;
  struct MonoType * D.48541;
  struct MonoInst * iftmp.498;
  int D.48543;
  unsigned int D.48544;
  unsigned int D.48547;
  unsigned int D.48548;
  struct MonoInst * * D.48549;
  int D.48553;
  struct MonoInst * D.48554;
  int D.48555;
  int D.48556;
  unsigned char D.48557;
  unsigned char D.48558;
  struct MonoClass * D.48559;
  unsigned int D.48560;
  int D.48561;
  struct MonoType * D.48564;
  int D.48565;
  _Bool iftmp.499;
  int D.48569;
  unsigned char D.48572;
  _Bool D.48573;
  _Bool D.48574;
  _Bool D.48575;
  int D.48576;
  unsigned char D.48578;
  struct MonoInst * iftmp.500;
  int D.48582;
  int D.48583;
  unsigned int D.48584;
  sizetype D.48587;
  sizetype D.48588;
  sizetype D.48589;
  struct MonoInst * * D.48590;
  struct MonoInst * iftmp.501;
  int D.48593;
  unsigned int D.48594;
  sizetype D.48597;
  sizetype D.48598;
  struct MonoInst * * D.48599;
  _Bool D.48601;
  long int D.48602;
  long int D.48603;
  _Bool D.48606;
  long int D.48607;
  long int D.48608;
  unsigned char D.48611;
  unsigned char D.48612;
  unsigned char D.48613;
  unsigned char D.48614;
  int D.48618;
  struct MonoInst * D.48619;
  int D.48620;
  int D.48621;
  unsigned int D.48624;
  unsigned int D.48625;
  int D.48626;
  unsigned char * D.48630;
  int D.48633;
  int D.48634;
  unsigned int D.48635;
  unsigned int D.48636;
  struct MonoBasicBlock * * D.48637;
  short unsigned int D.48642;
  short unsigned int D.48643;
  _Bool D.48644;
  short unsigned int D.48645;
  _Bool D.48646;
  _Bool D.48647;
  short unsigned int D.48653;
  _Bool D.48654;
  _Bool D.48655;
  _Bool D.48656;
  short unsigned int D.48658;
  short unsigned int D.48659;
  _Bool D.48660;
  short unsigned int D.48661;
  _Bool D.48662;
  _Bool D.48663;
  void * D.48666;
  struct MonoBasicBlock * * D.48667;
  struct MonoBasicBlock * * D.48668;
  unsigned int D.48674;
  unsigned int D.48675;
  int D.48676;
  short unsigned int D.48683;
  short unsigned int D.48684;
  _Bool D.48685;
  short unsigned int D.48686;
  _Bool D.48687;
  _Bool D.48688;
  short unsigned int D.48694;
  _Bool D.48695;
  _Bool D.48696;
  _Bool D.48697;
  short unsigned int D.48699;
  short unsigned int D.48700;
  _Bool D.48701;
  short unsigned int D.48702;
  _Bool D.48703;
  _Bool D.48704;
  unsigned char * D.48707;
  int D.48710;
  int D.48711;
  unsigned int D.48712;
  unsigned int D.48713;
  struct MonoBasicBlock * * D.48714;
  short unsigned int D.48719;
  short unsigned int D.48720;
  _Bool D.48721;
  short unsigned int D.48722;
  _Bool D.48723;
  _Bool D.48724;
  short unsigned int D.48730;
  _Bool D.48731;
  _Bool D.48732;
  _Bool D.48733;
  short unsigned int D.48735;
  short unsigned int D.48736;
  _Bool D.48737;
  short unsigned int D.48738;
  _Bool D.48739;
  _Bool D.48740;
  int D.48742;
  struct MonoInst * D.48743;
  unsigned int D.48744;
  short unsigned int D.48745;
  int D.48746;
  int D.48747;
  unsigned char D.48748;
  <unnamed type> D.48749;
  unsigned int D.48750;
  int D.48751;
  struct MonoInst * D.48755;
  struct MonoInst * addr;
  struct MonoInst * klass_inst;
  struct MonoInst * is_ref;
  struct MonoInst * args[16];
  struct MonoBasicBlock * is_ref_bb;
  struct MonoBasicBlock * is_nullable_bb;
  struct MonoBasicBlock * end_bb;
  struct MonoInst * ins;
  int dreg;
  int addr_reg;

  try
    {
      klass_inst = emit_get_gsharedvt_info_klass (cfg, klass, 1);
      obj.490 = obj;
      args[0] = obj.490;
      args[1] = klass_inst;
      obj.491 = mono_emit_jit_icall (cfg, mono_object_castclass_unbox, &args);
      obj = obj.491;
      D.47978 = cfg->mempool;
      is_ref_bb = mono_mempool_alloc0 (D.47978, 172);
      D.47979 = cfg->num_bblocks;
      D.47980 = D.47979;
      D.47981 = D.47980 + 1;
      cfg->num_bblocks = D.47981;
      D.47982 = (int) D.47980;
      is_ref_bb->block_num = D.47982;
      D.47978 = cfg->mempool;
      is_nullable_bb = mono_mempool_alloc0 (D.47978, 172);
      D.47979 = cfg->num_bblocks;
      D.47983 = D.47979;
      D.47984 = D.47983 + 1;
      cfg->num_bblocks = D.47984;
      D.47985 = (int) D.47983;
      is_nullable_bb->block_num = D.47985;
      D.47978 = cfg->mempool;
      end_bb = mono_mempool_alloc0 (D.47978, 172);
      D.47979 = cfg->num_bblocks;
      D.47986 = D.47979;
      D.47987 = D.47986 + 1;
      cfg->num_bblocks = D.47987;
      D.47988 = (int) D.47986;
      end_bb->block_num = D.47988;
      is_ref = emit_get_gsharedvt_info_klass (cfg, klass, 19);
      {
        struct MonoInst * inst;

        D.47978 = cfg->mempool;
        inst = mono_mempool_alloc (D.47978, 48);
        inst->data.op[1].const_val = 0;
        D.47989 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.47989;
        inst->prev = 0B;
        D.47990 = inst->prev;
        inst->next = D.47990;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.47991 = inst->sreg3;
        inst->sreg2 = D.47991;
        D.47992 = inst->sreg2;
        inst->sreg1 = D.47992;
        D.47993 = cfg->ip;
        inst->cil_code = D.47993;
        inst->dreg = -1;
        D.47994 = is_ref->dreg;
        inst->sreg1 = D.47994;
        inst->data.op[1].const_val = 1;
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        if (D.47996 != 0B) goto <D.47997>; else goto <D.47998>;
        <D.47997>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.47996->next = inst;
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        inst->prev = D.47996;
        D.47995 = cfg->cbb;
        D.47995->last_ins = inst;
        goto <D.47999>;
        <D.47998>:
        D.47995 = cfg->cbb;
        D.47995 = cfg->cbb;
        D.47995->last_ins = inst;
        D.47996 = D.47995->last_ins;
        D.47995->code = D.47996;
        <D.47999>:
      }
      {
        struct MonoInst * ins;
        struct MonoBasicBlock * falsebb;

        D.47978 = cfg->mempool;
        ins = mono_mempool_alloc (D.47978, 48);
        ins->data.op[1].const_val = 0;
        D.48000 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.48000;
        ins->prev = 0B;
        D.48001 = ins->prev;
        ins->next = D.48001;
        ins->opcode = 652;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.48002 = ins->sreg3;
        ins->sreg2 = D.48002;
        D.48003 = ins->sreg2;
        ins->sreg1 = D.48003;
        D.47993 = cfg->ip;
        ins->cil_code = D.47993;
        if (0 != 0) goto <D.48004>; else goto <D.48005>;
        <D.48004>:
        D.47978 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.47978, 172);
        D.47979 = cfg->num_bblocks;
        D.48006 = D.47979;
        D.48007 = D.48006 + 1;
        cfg->num_bblocks = D.48007;
        D.48008 = (int) D.48006;
        falsebb->block_num = D.48008;
        ins->data.op[0].target_block = is_ref_bb;
        D.47995 = cfg->cbb;
        mono_link_bblock (cfg, D.47995, is_ref_bb);
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        if (D.47996 != 0B) goto <D.48009>; else goto <D.48010>;
        <D.48009>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.47996->next = ins;
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        ins->prev = D.47996;
        D.47995 = cfg->cbb;
        D.47995->last_ins = ins;
        goto <D.48011>;
        <D.48010>:
        D.47995 = cfg->cbb;
        D.47995 = cfg->cbb;
        D.47995->last_ins = ins;
        D.47996 = D.47995->last_ins;
        D.47995->code = D.47996;
        <D.48011>:
        D.48012 = falsebb->cil_code;
        if (D.48012 != 0B) goto <D.48013>; else goto <D.48014>;
        <D.48013>:
        D.48015 = cfg->cil_offset_to_bb;
        D.48012 = falsebb->cil_code;
        D.48016 = (int) D.48012;
        D.48017 = cfg->cil_start;
        D.48018 = (int) D.48017;
        D.48019 = D.48016 - D.48018;
        D.48020 = (unsigned int) D.48019;
        D.48021 = D.48020 * 4;
        D.48022 = D.48015 + D.48021;
        *D.48022 = falsebb;
        <D.48014>:
        D.48023 = cfg->real_offset;
        falsebb->real_offset = D.48023;
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        if (D.47996 != 0B) goto <D.48027>; else goto <D.48024>;
        <D.48027>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48028 = D.47996->opcode;
        D.48029 = D.48028 + 64981;
        D.48030 = D.48029 <= 9;
        D.48031 = D.48028 + 64874;
        D.48032 = D.48031 <= 9;
        D.48033 = D.48030 | D.48032;
        if (D.48033 != 0) goto <D.48025>; else goto <D.48034>;
        <D.48034>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48035 = D.47996->opcode;
        D.48036 = D.48035 + 64884;
        if (D.48036 <= 9) goto <D.48025>; else goto <D.48024>;
        <D.48025>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48037 = D.47996->data.op[1].many_blocks;
        D.48038 = D.48037 + 4;
        D.48039 = *D.48038;
        if (D.48039 == 0B) goto <D.48040>; else goto <D.48024>;
        <D.48040>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48037 = D.47996->data.op[1].many_blocks;
        D.48038 = D.48037 + 4;
        *D.48038 = falsebb;
        D.47995 = cfg->cbb;
        mono_link_bblock (cfg, D.47995, falsebb);
        goto <D.48026>;
        <D.48024>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        if (D.47996 == 0B) goto <D.48041>; else goto <D.48043>;
        <D.48043>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48044 = D.47996->opcode;
        D.48045 = D.48044 != 446;
        D.48046 = D.48044 != 763;
        D.48047 = D.48045 & D.48046;
        if (D.48047 != 0) goto <D.48048>; else goto <D.48042>;
        <D.48048>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48049 = D.47996->opcode;
        D.48050 = D.48049 + 64981;
        D.48051 = D.48050 > 9;
        D.48052 = D.48049 + 64874;
        D.48053 = D.48052 > 9;
        D.48054 = D.48051 & D.48053;
        if (D.48054 != 0) goto <D.48055>; else goto <D.48042>;
        <D.48055>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48035 = D.47996->opcode;
        D.48036 = D.48035 + 64884;
        if (D.48036 > 9) goto <D.48041>; else goto <D.48042>;
        <D.48041>:
        D.47995 = cfg->cbb;
        mono_link_bblock (cfg, D.47995, falsebb);
        <D.48042>:
        <D.48026>:
        D.47995 = cfg->cbb;
        D.47995->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.48056>;
        <D.48005>:
        D.47978 = cfg->mempool;
        D.48057 = mono_mempool_alloc (D.47978, 8);
        ins->data.op[1].many_blocks = D.48057;
        D.48058 = ins->data.op[1].many_blocks;
        *D.48058 = is_ref_bb;
        D.48058 = ins->data.op[1].many_blocks;
        D.48059 = D.48058 + 4;
        *D.48059 = 0B;
        D.47995 = cfg->cbb;
        mono_link_bblock (cfg, D.47995, is_ref_bb);
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        if (D.47996 != 0B) goto <D.48060>; else goto <D.48061>;
        <D.48060>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.47996->next = ins;
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        ins->prev = D.47996;
        D.47995 = cfg->cbb;
        D.47995->last_ins = ins;
        goto <D.48062>;
        <D.48061>:
        D.47995 = cfg->cbb;
        D.47995 = cfg->cbb;
        D.47995->last_ins = ins;
        D.47996 = D.47995->last_ins;
        D.47995->code = D.47996;
        <D.48062>:
        D.48063 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.48064 = D.48063 & 8;
        if (D.48064 == 0) goto <D.48065>; else goto <D.48066>;
        <D.48065>:
        D.47978 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.47978, 172);
        D.47979 = cfg->num_bblocks;
        D.48067 = D.47979;
        D.48068 = D.48067 + 1;
        cfg->num_bblocks = D.48068;
        D.48069 = (int) D.48067;
        falsebb->block_num = D.48069;
        D.48058 = ins->data.op[1].many_blocks;
        D.48059 = D.48058 + 4;
        *D.48059 = falsebb;
        D.47995 = cfg->cbb;
        mono_link_bblock (cfg, D.47995, falsebb);
        D.48012 = falsebb->cil_code;
        if (D.48012 != 0B) goto <D.48070>; else goto <D.48071>;
        <D.48070>:
        D.48015 = cfg->cil_offset_to_bb;
        D.48012 = falsebb->cil_code;
        D.48016 = (int) D.48012;
        D.48017 = cfg->cil_start;
        D.48018 = (int) D.48017;
        D.48019 = D.48016 - D.48018;
        D.48020 = (unsigned int) D.48019;
        D.48021 = D.48020 * 4;
        D.48022 = D.48015 + D.48021;
        *D.48022 = falsebb;
        <D.48071>:
        D.48023 = cfg->real_offset;
        falsebb->real_offset = D.48023;
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        if (D.47996 != 0B) goto <D.48075>; else goto <D.48072>;
        <D.48075>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48076 = D.47996->opcode;
        D.48077 = D.48076 + 64981;
        D.48078 = D.48077 <= 9;
        D.48079 = D.48076 + 64874;
        D.48080 = D.48079 <= 9;
        D.48081 = D.48078 | D.48080;
        if (D.48081 != 0) goto <D.48073>; else goto <D.48082>;
        <D.48082>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48035 = D.47996->opcode;
        D.48036 = D.48035 + 64884;
        if (D.48036 <= 9) goto <D.48073>; else goto <D.48072>;
        <D.48073>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48037 = D.47996->data.op[1].many_blocks;
        D.48038 = D.48037 + 4;
        D.48039 = *D.48038;
        if (D.48039 == 0B) goto <D.48083>; else goto <D.48072>;
        <D.48083>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48037 = D.47996->data.op[1].many_blocks;
        D.48038 = D.48037 + 4;
        *D.48038 = falsebb;
        D.47995 = cfg->cbb;
        mono_link_bblock (cfg, D.47995, falsebb);
        goto <D.48074>;
        <D.48072>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        if (D.47996 == 0B) goto <D.48084>; else goto <D.48086>;
        <D.48086>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48087 = D.47996->opcode;
        D.48088 = D.48087 != 446;
        D.48089 = D.48087 != 763;
        D.48090 = D.48088 & D.48089;
        if (D.48090 != 0) goto <D.48091>; else goto <D.48085>;
        <D.48091>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48092 = D.47996->opcode;
        D.48093 = D.48092 + 64981;
        D.48094 = D.48093 > 9;
        D.48095 = D.48092 + 64874;
        D.48096 = D.48095 > 9;
        D.48097 = D.48094 & D.48096;
        if (D.48097 != 0) goto <D.48098>; else goto <D.48085>;
        <D.48098>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48035 = D.47996->opcode;
        D.48036 = D.48035 + 64884;
        if (D.48036 > 9) goto <D.48084>; else goto <D.48085>;
        <D.48084>:
        D.47995 = cfg->cbb;
        mono_link_bblock (cfg, D.47995, falsebb);
        <D.48085>:
        <D.48074>:
        D.47995 = cfg->cbb;
        D.47995->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.48099>;
        <D.48066>:
        D.47995 = cfg->cbb;
        D.47995->extended = 1;
        <D.48099>:
        <D.48056>:
      }
      {
        struct MonoInst * inst;

        D.47978 = cfg->mempool;
        inst = mono_mempool_alloc (D.47978, 48);
        inst->data.op[1].const_val = 0;
        D.48100 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.48100;
        inst->prev = 0B;
        D.48101 = inst->prev;
        inst->next = D.48101;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.48102 = inst->sreg3;
        inst->sreg2 = D.48102;
        D.48103 = inst->sreg2;
        inst->sreg1 = D.48103;
        D.47993 = cfg->ip;
        inst->cil_code = D.47993;
        inst->dreg = -1;
        D.47994 = is_ref->dreg;
        inst->sreg1 = D.47994;
        inst->data.op[1].const_val = 2;
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        if (D.47996 != 0B) goto <D.48104>; else goto <D.48105>;
        <D.48104>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.47996->next = inst;
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        inst->prev = D.47996;
        D.47995 = cfg->cbb;
        D.47995->last_ins = inst;
        goto <D.48106>;
        <D.48105>:
        D.47995 = cfg->cbb;
        D.47995 = cfg->cbb;
        D.47995->last_ins = inst;
        D.47996 = D.47995->last_ins;
        D.47995->code = D.47996;
        <D.48106>:
      }
      {
        struct MonoInst * ins;
        struct MonoBasicBlock * falsebb;

        D.47978 = cfg->mempool;
        ins = mono_mempool_alloc (D.47978, 48);
        ins->data.op[1].const_val = 0;
        D.48107 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.48107;
        ins->prev = 0B;
        D.48108 = ins->prev;
        ins->next = D.48108;
        ins->opcode = 652;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.48109 = ins->sreg3;
        ins->sreg2 = D.48109;
        D.48110 = ins->sreg2;
        ins->sreg1 = D.48110;
        D.47993 = cfg->ip;
        ins->cil_code = D.47993;
        if (0 != 0) goto <D.48111>; else goto <D.48112>;
        <D.48111>:
        D.47978 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.47978, 172);
        D.47979 = cfg->num_bblocks;
        D.48113 = D.47979;
        D.48114 = D.48113 + 1;
        cfg->num_bblocks = D.48114;
        D.48115 = (int) D.48113;
        falsebb->block_num = D.48115;
        ins->data.op[0].target_block = is_nullable_bb;
        D.47995 = cfg->cbb;
        mono_link_bblock (cfg, D.47995, is_nullable_bb);
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        if (D.47996 != 0B) goto <D.48116>; else goto <D.48117>;
        <D.48116>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.47996->next = ins;
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        ins->prev = D.47996;
        D.47995 = cfg->cbb;
        D.47995->last_ins = ins;
        goto <D.48118>;
        <D.48117>:
        D.47995 = cfg->cbb;
        D.47995 = cfg->cbb;
        D.47995->last_ins = ins;
        D.47996 = D.47995->last_ins;
        D.47995->code = D.47996;
        <D.48118>:
        D.48119 = falsebb->cil_code;
        if (D.48119 != 0B) goto <D.48120>; else goto <D.48121>;
        <D.48120>:
        D.48015 = cfg->cil_offset_to_bb;
        D.48119 = falsebb->cil_code;
        D.48122 = (int) D.48119;
        D.48017 = cfg->cil_start;
        D.48018 = (int) D.48017;
        D.48123 = D.48122 - D.48018;
        D.48124 = (unsigned int) D.48123;
        D.48125 = D.48124 * 4;
        D.48126 = D.48015 + D.48125;
        *D.48126 = falsebb;
        <D.48121>:
        D.48023 = cfg->real_offset;
        falsebb->real_offset = D.48023;
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        if (D.47996 != 0B) goto <D.48130>; else goto <D.48127>;
        <D.48130>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48131 = D.47996->opcode;
        D.48132 = D.48131 + 64981;
        D.48133 = D.48132 <= 9;
        D.48134 = D.48131 + 64874;
        D.48135 = D.48134 <= 9;
        D.48136 = D.48133 | D.48135;
        if (D.48136 != 0) goto <D.48128>; else goto <D.48137>;
        <D.48137>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48035 = D.47996->opcode;
        D.48036 = D.48035 + 64884;
        if (D.48036 <= 9) goto <D.48128>; else goto <D.48127>;
        <D.48128>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48037 = D.47996->data.op[1].many_blocks;
        D.48038 = D.48037 + 4;
        D.48039 = *D.48038;
        if (D.48039 == 0B) goto <D.48138>; else goto <D.48127>;
        <D.48138>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48037 = D.47996->data.op[1].many_blocks;
        D.48038 = D.48037 + 4;
        *D.48038 = falsebb;
        D.47995 = cfg->cbb;
        mono_link_bblock (cfg, D.47995, falsebb);
        goto <D.48129>;
        <D.48127>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        if (D.47996 == 0B) goto <D.48139>; else goto <D.48141>;
        <D.48141>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48142 = D.47996->opcode;
        D.48143 = D.48142 != 446;
        D.48144 = D.48142 != 763;
        D.48145 = D.48143 & D.48144;
        if (D.48145 != 0) goto <D.48146>; else goto <D.48140>;
        <D.48146>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48147 = D.47996->opcode;
        D.48148 = D.48147 + 64981;
        D.48149 = D.48148 > 9;
        D.48150 = D.48147 + 64874;
        D.48151 = D.48150 > 9;
        D.48152 = D.48149 & D.48151;
        if (D.48152 != 0) goto <D.48153>; else goto <D.48140>;
        <D.48153>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48035 = D.47996->opcode;
        D.48036 = D.48035 + 64884;
        if (D.48036 > 9) goto <D.48139>; else goto <D.48140>;
        <D.48139>:
        D.47995 = cfg->cbb;
        mono_link_bblock (cfg, D.47995, falsebb);
        <D.48140>:
        <D.48129>:
        D.47995 = cfg->cbb;
        D.47995->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.48154>;
        <D.48112>:
        D.47978 = cfg->mempool;
        D.48155 = mono_mempool_alloc (D.47978, 8);
        ins->data.op[1].many_blocks = D.48155;
        D.48156 = ins->data.op[1].many_blocks;
        *D.48156 = is_nullable_bb;
        D.48156 = ins->data.op[1].many_blocks;
        D.48157 = D.48156 + 4;
        *D.48157 = 0B;
        D.47995 = cfg->cbb;
        mono_link_bblock (cfg, D.47995, is_nullable_bb);
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        if (D.47996 != 0B) goto <D.48158>; else goto <D.48159>;
        <D.48158>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.47996->next = ins;
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        ins->prev = D.47996;
        D.47995 = cfg->cbb;
        D.47995->last_ins = ins;
        goto <D.48160>;
        <D.48159>:
        D.47995 = cfg->cbb;
        D.47995 = cfg->cbb;
        D.47995->last_ins = ins;
        D.47996 = D.47995->last_ins;
        D.47995->code = D.47996;
        <D.48160>:
        D.48063 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.48064 = D.48063 & 8;
        if (D.48064 == 0) goto <D.48161>; else goto <D.48162>;
        <D.48161>:
        D.47978 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.47978, 172);
        D.47979 = cfg->num_bblocks;
        D.48163 = D.47979;
        D.48164 = D.48163 + 1;
        cfg->num_bblocks = D.48164;
        D.48165 = (int) D.48163;
        falsebb->block_num = D.48165;
        D.48156 = ins->data.op[1].many_blocks;
        D.48157 = D.48156 + 4;
        *D.48157 = falsebb;
        D.47995 = cfg->cbb;
        mono_link_bblock (cfg, D.47995, falsebb);
        D.48119 = falsebb->cil_code;
        if (D.48119 != 0B) goto <D.48166>; else goto <D.48167>;
        <D.48166>:
        D.48015 = cfg->cil_offset_to_bb;
        D.48119 = falsebb->cil_code;
        D.48122 = (int) D.48119;
        D.48017 = cfg->cil_start;
        D.48018 = (int) D.48017;
        D.48123 = D.48122 - D.48018;
        D.48124 = (unsigned int) D.48123;
        D.48125 = D.48124 * 4;
        D.48126 = D.48015 + D.48125;
        *D.48126 = falsebb;
        <D.48167>:
        D.48023 = cfg->real_offset;
        falsebb->real_offset = D.48023;
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        if (D.47996 != 0B) goto <D.48171>; else goto <D.48168>;
        <D.48171>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48172 = D.47996->opcode;
        D.48173 = D.48172 + 64981;
        D.48174 = D.48173 <= 9;
        D.48175 = D.48172 + 64874;
        D.48176 = D.48175 <= 9;
        D.48177 = D.48174 | D.48176;
        if (D.48177 != 0) goto <D.48169>; else goto <D.48178>;
        <D.48178>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48035 = D.47996->opcode;
        D.48036 = D.48035 + 64884;
        if (D.48036 <= 9) goto <D.48169>; else goto <D.48168>;
        <D.48169>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48037 = D.47996->data.op[1].many_blocks;
        D.48038 = D.48037 + 4;
        D.48039 = *D.48038;
        if (D.48039 == 0B) goto <D.48179>; else goto <D.48168>;
        <D.48179>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48037 = D.47996->data.op[1].many_blocks;
        D.48038 = D.48037 + 4;
        *D.48038 = falsebb;
        D.47995 = cfg->cbb;
        mono_link_bblock (cfg, D.47995, falsebb);
        goto <D.48170>;
        <D.48168>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        if (D.47996 == 0B) goto <D.48180>; else goto <D.48182>;
        <D.48182>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48183 = D.47996->opcode;
        D.48184 = D.48183 != 446;
        D.48185 = D.48183 != 763;
        D.48186 = D.48184 & D.48185;
        if (D.48186 != 0) goto <D.48187>; else goto <D.48181>;
        <D.48187>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48188 = D.47996->opcode;
        D.48189 = D.48188 + 64981;
        D.48190 = D.48189 > 9;
        D.48191 = D.48188 + 64874;
        D.48192 = D.48191 > 9;
        D.48193 = D.48190 & D.48192;
        if (D.48193 != 0) goto <D.48194>; else goto <D.48181>;
        <D.48194>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48035 = D.47996->opcode;
        D.48036 = D.48035 + 64884;
        if (D.48036 > 9) goto <D.48180>; else goto <D.48181>;
        <D.48180>:
        D.47995 = cfg->cbb;
        mono_link_bblock (cfg, D.47995, falsebb);
        <D.48181>:
        <D.48170>:
        D.47995 = cfg->cbb;
        D.47995->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.48195>;
        <D.48162>:
        D.47995 = cfg->cbb;
        D.47995->extended = 1;
        <D.48195>:
        <D.48154>:
      }
      D.48196 = alloc_dreg (cfg, 5);
      addr_reg = (int) D.48196;
      D.47978 = cfg->mempool;
      addr = mono_mempool_alloc (D.47978, 48);
      addr->data.op[1].const_val = 0;
      D.48197 = addr->data.op[1].const_val;
      addr->data.op[0].const_val = D.48197;
      addr->prev = 0B;
      D.48198 = addr->prev;
      addr->next = D.48198;
      addr->opcode = 433;
      addr->flags = 0;
      addr->type = 0;
      addr->dreg = -1;
      addr->sreg3 = -1;
      D.48199 = addr->sreg3;
      addr->sreg2 = D.48199;
      D.48200 = addr->sreg2;
      addr->sreg1 = D.48200;
      D.47993 = cfg->ip;
      addr->cil_code = D.47993;
      addr->dreg = addr_reg;
      obj.490 = obj;
      D.48201 = obj.490->dreg;
      addr->sreg1 = D.48201;
      addr->data.op[1].const_val = 8;
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      if (D.47996 != 0B) goto <D.48202>; else goto <D.48203>;
      <D.48202>:
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      D.47996->next = addr;
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      addr->prev = D.47996;
      D.47995 = cfg->cbb;
      D.47995->last_ins = addr;
      goto <D.48204>;
      <D.48203>:
      D.47995 = cfg->cbb;
      D.47995 = cfg->cbb;
      D.47995->last_ins = addr;
      D.47996 = D.47995->last_ins;
      D.47995->code = D.47996;
      <D.48204>:
      {
        struct MonoInst * ins;
        struct MonoBasicBlock * falsebb;

        D.47978 = cfg->mempool;
        ins = mono_mempool_alloc (D.47978, 48);
        ins->data.op[1].const_val = 0;
        D.48205 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.48205;
        ins->prev = 0B;
        D.48206 = ins->prev;
        ins->next = D.48206;
        ins->opcode = 446;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.48207 = ins->sreg3;
        ins->sreg2 = D.48207;
        D.48208 = ins->sreg2;
        ins->sreg1 = D.48208;
        D.47993 = cfg->ip;
        ins->cil_code = D.47993;
        if (1 != 0) goto <D.48209>; else goto <D.48210>;
        <D.48209>:
        D.47978 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.47978, 172);
        D.47979 = cfg->num_bblocks;
        D.48211 = D.47979;
        D.48212 = D.48211 + 1;
        cfg->num_bblocks = D.48212;
        D.48213 = (int) D.48211;
        falsebb->block_num = D.48213;
        ins->data.op[0].target_block = end_bb;
        D.47995 = cfg->cbb;
        mono_link_bblock (cfg, D.47995, end_bb);
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        if (D.47996 != 0B) goto <D.48214>; else goto <D.48215>;
        <D.48214>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.47996->next = ins;
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        ins->prev = D.47996;
        D.47995 = cfg->cbb;
        D.47995->last_ins = ins;
        goto <D.48216>;
        <D.48215>:
        D.47995 = cfg->cbb;
        D.47995 = cfg->cbb;
        D.47995->last_ins = ins;
        D.47996 = D.47995->last_ins;
        D.47995->code = D.47996;
        <D.48216>:
        D.48217 = falsebb->cil_code;
        if (D.48217 != 0B) goto <D.48218>; else goto <D.48219>;
        <D.48218>:
        D.48015 = cfg->cil_offset_to_bb;
        D.48217 = falsebb->cil_code;
        D.48220 = (int) D.48217;
        D.48017 = cfg->cil_start;
        D.48018 = (int) D.48017;
        D.48221 = D.48220 - D.48018;
        D.48222 = (unsigned int) D.48221;
        D.48223 = D.48222 * 4;
        D.48224 = D.48015 + D.48223;
        *D.48224 = falsebb;
        <D.48219>:
        D.48023 = cfg->real_offset;
        falsebb->real_offset = D.48023;
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        if (D.47996 != 0B) goto <D.48228>; else goto <D.48225>;
        <D.48228>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48229 = D.47996->opcode;
        D.48230 = D.48229 + 64981;
        D.48231 = D.48230 <= 9;
        D.48232 = D.48229 + 64874;
        D.48233 = D.48232 <= 9;
        D.48234 = D.48231 | D.48233;
        if (D.48234 != 0) goto <D.48226>; else goto <D.48235>;
        <D.48235>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48035 = D.47996->opcode;
        D.48036 = D.48035 + 64884;
        if (D.48036 <= 9) goto <D.48226>; else goto <D.48225>;
        <D.48226>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48037 = D.47996->data.op[1].many_blocks;
        D.48038 = D.48037 + 4;
        D.48039 = *D.48038;
        if (D.48039 == 0B) goto <D.48236>; else goto <D.48225>;
        <D.48236>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48037 = D.47996->data.op[1].many_blocks;
        D.48038 = D.48037 + 4;
        *D.48038 = falsebb;
        D.47995 = cfg->cbb;
        mono_link_bblock (cfg, D.47995, falsebb);
        goto <D.48227>;
        <D.48225>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        if (D.47996 == 0B) goto <D.48237>; else goto <D.48239>;
        <D.48239>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48240 = D.47996->opcode;
        D.48241 = D.48240 != 446;
        D.48242 = D.48240 != 763;
        D.48243 = D.48241 & D.48242;
        if (D.48243 != 0) goto <D.48244>; else goto <D.48238>;
        <D.48244>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48245 = D.47996->opcode;
        D.48246 = D.48245 + 64981;
        D.48247 = D.48246 > 9;
        D.48248 = D.48245 + 64874;
        D.48249 = D.48248 > 9;
        D.48250 = D.48247 & D.48249;
        if (D.48250 != 0) goto <D.48251>; else goto <D.48238>;
        <D.48251>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48035 = D.47996->opcode;
        D.48036 = D.48035 + 64884;
        if (D.48036 > 9) goto <D.48237>; else goto <D.48238>;
        <D.48237>:
        D.47995 = cfg->cbb;
        mono_link_bblock (cfg, D.47995, falsebb);
        <D.48238>:
        <D.48227>:
        D.47995 = cfg->cbb;
        D.47995->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.48252>;
        <D.48210>:
        D.47978 = cfg->mempool;
        D.48253 = mono_mempool_alloc (D.47978, 8);
        ins->data.op[1].many_blocks = D.48253;
        D.48254 = ins->data.op[1].many_blocks;
        *D.48254 = end_bb;
        D.48254 = ins->data.op[1].many_blocks;
        D.48255 = D.48254 + 4;
        *D.48255 = 0B;
        D.47995 = cfg->cbb;
        mono_link_bblock (cfg, D.47995, end_bb);
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        if (D.47996 != 0B) goto <D.48256>; else goto <D.48257>;
        <D.48256>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.47996->next = ins;
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        ins->prev = D.47996;
        D.47995 = cfg->cbb;
        D.47995->last_ins = ins;
        goto <D.48258>;
        <D.48257>:
        D.47995 = cfg->cbb;
        D.47995 = cfg->cbb;
        D.47995->last_ins = ins;
        D.47996 = D.47995->last_ins;
        D.47995->code = D.47996;
        <D.48258>:
        D.48063 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.48064 = D.48063 & 8;
        if (D.48064 == 0) goto <D.48259>; else goto <D.48260>;
        <D.48259>:
        D.47978 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.47978, 172);
        D.47979 = cfg->num_bblocks;
        D.48261 = D.47979;
        D.48262 = D.48261 + 1;
        cfg->num_bblocks = D.48262;
        D.48263 = (int) D.48261;
        falsebb->block_num = D.48263;
        D.48254 = ins->data.op[1].many_blocks;
        D.48255 = D.48254 + 4;
        *D.48255 = falsebb;
        D.47995 = cfg->cbb;
        mono_link_bblock (cfg, D.47995, falsebb);
        D.48217 = falsebb->cil_code;
        if (D.48217 != 0B) goto <D.48264>; else goto <D.48265>;
        <D.48264>:
        D.48015 = cfg->cil_offset_to_bb;
        D.48217 = falsebb->cil_code;
        D.48220 = (int) D.48217;
        D.48017 = cfg->cil_start;
        D.48018 = (int) D.48017;
        D.48221 = D.48220 - D.48018;
        D.48222 = (unsigned int) D.48221;
        D.48223 = D.48222 * 4;
        D.48224 = D.48015 + D.48223;
        *D.48224 = falsebb;
        <D.48265>:
        D.48023 = cfg->real_offset;
        falsebb->real_offset = D.48023;
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        if (D.47996 != 0B) goto <D.48269>; else goto <D.48266>;
        <D.48269>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48270 = D.47996->opcode;
        D.48271 = D.48270 + 64981;
        D.48272 = D.48271 <= 9;
        D.48273 = D.48270 + 64874;
        D.48274 = D.48273 <= 9;
        D.48275 = D.48272 | D.48274;
        if (D.48275 != 0) goto <D.48267>; else goto <D.48276>;
        <D.48276>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48035 = D.47996->opcode;
        D.48036 = D.48035 + 64884;
        if (D.48036 <= 9) goto <D.48267>; else goto <D.48266>;
        <D.48267>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48037 = D.47996->data.op[1].many_blocks;
        D.48038 = D.48037 + 4;
        D.48039 = *D.48038;
        if (D.48039 == 0B) goto <D.48277>; else goto <D.48266>;
        <D.48277>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48037 = D.47996->data.op[1].many_blocks;
        D.48038 = D.48037 + 4;
        *D.48038 = falsebb;
        D.47995 = cfg->cbb;
        mono_link_bblock (cfg, D.47995, falsebb);
        goto <D.48268>;
        <D.48266>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        if (D.47996 == 0B) goto <D.48278>; else goto <D.48280>;
        <D.48280>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48281 = D.47996->opcode;
        D.48282 = D.48281 != 446;
        D.48283 = D.48281 != 763;
        D.48284 = D.48282 & D.48283;
        if (D.48284 != 0) goto <D.48285>; else goto <D.48279>;
        <D.48285>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48286 = D.47996->opcode;
        D.48287 = D.48286 + 64981;
        D.48288 = D.48287 > 9;
        D.48289 = D.48286 + 64874;
        D.48290 = D.48289 > 9;
        D.48291 = D.48288 & D.48290;
        if (D.48291 != 0) goto <D.48292>; else goto <D.48279>;
        <D.48292>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48035 = D.47996->opcode;
        D.48036 = D.48035 + 64884;
        if (D.48036 > 9) goto <D.48278>; else goto <D.48279>;
        <D.48278>:
        D.47995 = cfg->cbb;
        mono_link_bblock (cfg, D.47995, falsebb);
        <D.48279>:
        <D.48268>:
        D.47995 = cfg->cbb;
        D.47995->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.48293>;
        <D.48260>:
        D.47995 = cfg->cbb;
        D.47995->extended = 1;
        <D.48293>:
        <D.48252>:
      }
      D.48294 = is_ref_bb->cil_code;
      if (D.48294 != 0B) goto <D.48295>; else goto <D.48296>;
      <D.48295>:
      D.48015 = cfg->cil_offset_to_bb;
      D.48294 = is_ref_bb->cil_code;
      D.48297 = (int) D.48294;
      D.48017 = cfg->cil_start;
      D.48018 = (int) D.48017;
      D.48298 = D.48297 - D.48018;
      D.48299 = (unsigned int) D.48298;
      D.48300 = D.48299 * 4;
      D.48301 = D.48015 + D.48300;
      *D.48301 = is_ref_bb;
      <D.48296>:
      D.48023 = cfg->real_offset;
      is_ref_bb->real_offset = D.48023;
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      if (D.47996 != 0B) goto <D.48305>; else goto <D.48302>;
      <D.48305>:
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      D.48306 = D.47996->opcode;
      D.48307 = D.48306 + 64981;
      D.48308 = D.48307 <= 9;
      D.48309 = D.48306 + 64874;
      D.48310 = D.48309 <= 9;
      D.48311 = D.48308 | D.48310;
      if (D.48311 != 0) goto <D.48303>; else goto <D.48312>;
      <D.48312>:
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      D.48035 = D.47996->opcode;
      D.48036 = D.48035 + 64884;
      if (D.48036 <= 9) goto <D.48303>; else goto <D.48302>;
      <D.48303>:
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      D.48037 = D.47996->data.op[1].many_blocks;
      D.48038 = D.48037 + 4;
      D.48039 = *D.48038;
      if (D.48039 == 0B) goto <D.48313>; else goto <D.48302>;
      <D.48313>:
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      D.48037 = D.47996->data.op[1].many_blocks;
      D.48038 = D.48037 + 4;
      *D.48038 = is_ref_bb;
      D.47995 = cfg->cbb;
      mono_link_bblock (cfg, D.47995, is_ref_bb);
      goto <D.48304>;
      <D.48302>:
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      if (D.47996 == 0B) goto <D.48314>; else goto <D.48316>;
      <D.48316>:
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      D.48317 = D.47996->opcode;
      D.48318 = D.48317 != 446;
      D.48319 = D.48317 != 763;
      D.48320 = D.48318 & D.48319;
      if (D.48320 != 0) goto <D.48321>; else goto <D.48315>;
      <D.48321>:
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      D.48322 = D.47996->opcode;
      D.48323 = D.48322 + 64981;
      D.48324 = D.48323 > 9;
      D.48325 = D.48322 + 64874;
      D.48326 = D.48325 > 9;
      D.48327 = D.48324 & D.48326;
      if (D.48327 != 0) goto <D.48328>; else goto <D.48315>;
      <D.48328>:
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      D.48035 = D.47996->opcode;
      D.48036 = D.48035 + 64884;
      if (D.48036 > 9) goto <D.48314>; else goto <D.48315>;
      <D.48314>:
      D.47995 = cfg->cbb;
      mono_link_bblock (cfg, D.47995, is_ref_bb);
      <D.48315>:
      <D.48304>:
      D.47995 = cfg->cbb;
      D.47995->next_bb = is_ref_bb;
      cfg->cbb = is_ref_bb;
      D.48329 = alloc_ireg (cfg);
      dreg = (int) D.48329;
      {
        struct MonoInst * var;

        dreg.493 = (unsigned int) dreg;
        D.48332 = cfg->vreg_to_inst_len;
        if (dreg.493 < D.48332) goto <D.48333>; else goto <D.48334>;
        <D.48333>:
        D.48335 = cfg->vreg_to_inst;
        dreg.494 = (unsigned int) dreg;
        D.48337 = dreg.494 * 4;
        D.48338 = D.48335 + D.48337;
        iftmp.492 = *D.48338;
        goto <D.48339>;
        <D.48334>:
        iftmp.492 = 0B;
        <D.48339>:
        var = iftmp.492;
        if (var == 0B) goto <D.48340>; else goto <D.48341>;
        <D.48340>:
        D.48342 = &klass->byval_arg;
        var = mono_compile_create_var_for_vreg (cfg, D.48342, 329, dreg);
        <D.48341>:
        D.47978 = cfg->mempool;
        addr = mono_mempool_alloc (D.47978, 48);
        addr->data.op[1].const_val = 0;
        D.48197 = addr->data.op[1].const_val;
        addr->data.op[0].const_val = D.48197;
        addr->prev = 0B;
        D.48198 = addr->prev;
        addr->next = D.48198;
        addr->opcode = 314;
        addr->flags = 0;
        addr->type = 0;
        addr->dreg = -1;
        addr->sreg3 = -1;
        D.48199 = addr->sreg3;
        addr->sreg2 = D.48199;
        D.48200 = addr->sreg2;
        addr->sreg1 = D.48200;
        D.47993 = cfg->ip;
        addr->cil_code = D.47993;
        addr->data.op[0].p = var;
        D.48343 = var->flags;
        D.48344 = D.48343 | 16;
        var->flags = D.48344;
        addr->type = 5;
        D.48345 = var->klass;
        addr->klass = D.48345;
        D.48346 = alloc_dreg (cfg, 5);
        D.48347 = (int) D.48346;
        addr->dreg = D.48347;
        cfg->has_indirection = 1;
        D.48348 = cfg->gsharedvt;
        D.48349 = D.48348 != 0;
        D.48350 = (long int) D.48349;
        D.48351 = __builtin_expect (D.48350, 0);
        if (D.48351 != 0) goto <D.48352>; else goto <D.48353>;
        <D.48352>:
        D.48354 = var->data.op[1].vtype;
        D.48355 = mini_is_gsharedvt_variable_type (cfg, D.48354);
        if (D.48355 != 0) goto <D.48356>; else goto <D.48357>;
        <D.48356>:
        handle_gsharedvt_ldaddr (cfg);
        <D.48357>:
        <D.48353>:
        D.48359 = mono_arch_is_soft_float ();
        if (D.48359 != 0) goto <D.48360>; else goto <D.48361>;
        <D.48360>:
        D.48362 = var->type;
        D.48363 = D.48362 == 2;
        D.48364 = D.48362 == 4;
        D.48365 = D.48363 | D.48364;
        D.48366 = (int) D.48365;
        iftmp.495 = (_Bool) D.48366;
        goto <D.48367>;
        <D.48361>:
        D.48368 = var->type;
        iftmp.495 = D.48368 == 2;
        <D.48367>:
        if (iftmp.495 != 0) goto <D.48369>; else goto <D.48370>;
        <D.48369>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.48372 = var->dreg;
          D.48373 = D.48372 + 1;
          D.48374 = (unsigned int) D.48373;
          D.48332 = cfg->vreg_to_inst_len;
          if (D.48374 < D.48332) goto <D.48375>; else goto <D.48376>;
          <D.48375>:
          D.48335 = cfg->vreg_to_inst;
          D.48372 = var->dreg;
          D.48377 = (sizetype) D.48372;
          D.48378 = D.48377 + 1;
          D.48379 = D.48378 * 4;
          D.48380 = D.48335 + D.48379;
          iftmp.496 = *D.48380;
          goto <D.48381>;
          <D.48376>:
          iftmp.496 = 0B;
          <D.48381>:
          var1 = iftmp.496;
          D.48372 = var->dreg;
          D.48383 = D.48372 + 2;
          D.48384 = (unsigned int) D.48383;
          D.48332 = cfg->vreg_to_inst_len;
          if (D.48384 < D.48332) goto <D.48385>; else goto <D.48386>;
          <D.48385>:
          D.48335 = cfg->vreg_to_inst;
          D.48372 = var->dreg;
          D.48377 = (sizetype) D.48372;
          D.48387 = D.48377 + 2;
          D.48388 = D.48387 * 4;
          D.48389 = D.48335 + D.48388;
          iftmp.497 = *D.48389;
          goto <D.48390>;
          <D.48386>:
          iftmp.497 = 0B;
          <D.48390>:
          var2 = iftmp.497;
          D.48391 = var1 == 0B;
          D.48392 = (long int) D.48391;
          D.48393 = __builtin_expect (D.48392, 0);
          if (D.48393 != 0) goto <D.48394>; else goto <D.48395>;
          <D.48394>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3684, "var1");
          <D.48395>:
          D.48396 = var2 == 0B;
          D.48397 = (long int) D.48396;
          D.48398 = __builtin_expect (D.48397, 0);
          if (D.48398 != 0) goto <D.48399>; else goto <D.48400>;
          <D.48399>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3684, "var2");
          <D.48400>:
          D.48401 = var1->flags;
          D.48402 = D.48401 | 16;
          var1->flags = D.48402;
          D.48403 = var2->flags;
          D.48404 = D.48403 | 16;
          var2->flags = D.48404;
        }
        <D.48370>:
      }
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      if (D.47996 != 0B) goto <D.48405>; else goto <D.48406>;
      <D.48405>:
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      D.47996->next = addr;
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      addr->prev = D.47996;
      D.47995 = cfg->cbb;
      D.47995->last_ins = addr;
      goto <D.48407>;
      <D.48406>:
      D.47995 = cfg->cbb;
      D.47995 = cfg->cbb;
      D.47995->last_ins = addr;
      D.47996 = D.47995->last_ins;
      D.47995->code = D.47996;
      <D.48407>:
      addr->dreg = addr_reg;
      {
        struct MonoInst * inst;

        D.47978 = cfg->mempool;
        inst = mono_mempool_alloc (D.47978, 48);
        inst->data.op[1].const_val = 0;
        D.48408 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.48408;
        inst->prev = 0B;
        D.48409 = inst->prev;
        inst->next = D.48409;
        inst->opcode = 374;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.48410 = inst->sreg3;
        inst->sreg2 = D.48410;
        D.48411 = inst->sreg2;
        inst->sreg1 = D.48411;
        D.47993 = cfg->ip;
        inst->cil_code = D.47993;
        obj.490 = obj;
        D.48201 = obj.490->dreg;
        inst->sreg1 = D.48201;
        D.48412 = addr->dreg;
        inst->dreg = D.48412;
        inst->data.op[0].const_val = 0;
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        if (D.47996 != 0B) goto <D.48413>; else goto <D.48414>;
        <D.48413>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.47996->next = inst;
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        inst->prev = D.47996;
        D.47995 = cfg->cbb;
        D.47995->last_ins = inst;
        goto <D.48415>;
        <D.48414>:
        D.47995 = cfg->cbb;
        D.47995 = cfg->cbb;
        D.47995->last_ins = inst;
        D.47996 = D.47995->last_ins;
        D.47995->code = D.47996;
        <D.48415>:
      }
      {
        struct MonoInst * ins;
        struct MonoBasicBlock * falsebb;

        D.47978 = cfg->mempool;
        ins = mono_mempool_alloc (D.47978, 48);
        ins->data.op[1].const_val = 0;
        D.48416 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.48416;
        ins->prev = 0B;
        D.48417 = ins->prev;
        ins->next = D.48417;
        ins->opcode = 446;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.48418 = ins->sreg3;
        ins->sreg2 = D.48418;
        D.48419 = ins->sreg2;
        ins->sreg1 = D.48419;
        D.47993 = cfg->ip;
        ins->cil_code = D.47993;
        if (1 != 0) goto <D.48420>; else goto <D.48421>;
        <D.48420>:
        D.47978 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.47978, 172);
        D.47979 = cfg->num_bblocks;
        D.48422 = D.47979;
        D.48423 = D.48422 + 1;
        cfg->num_bblocks = D.48423;
        D.48424 = (int) D.48422;
        falsebb->block_num = D.48424;
        ins->data.op[0].target_block = end_bb;
        D.47995 = cfg->cbb;
        mono_link_bblock (cfg, D.47995, end_bb);
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        if (D.47996 != 0B) goto <D.48425>; else goto <D.48426>;
        <D.48425>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.47996->next = ins;
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        ins->prev = D.47996;
        D.47995 = cfg->cbb;
        D.47995->last_ins = ins;
        goto <D.48427>;
        <D.48426>:
        D.47995 = cfg->cbb;
        D.47995 = cfg->cbb;
        D.47995->last_ins = ins;
        D.47996 = D.47995->last_ins;
        D.47995->code = D.47996;
        <D.48427>:
        D.48428 = falsebb->cil_code;
        if (D.48428 != 0B) goto <D.48429>; else goto <D.48430>;
        <D.48429>:
        D.48015 = cfg->cil_offset_to_bb;
        D.48428 = falsebb->cil_code;
        D.48431 = (int) D.48428;
        D.48017 = cfg->cil_start;
        D.48018 = (int) D.48017;
        D.48432 = D.48431 - D.48018;
        D.48433 = (unsigned int) D.48432;
        D.48434 = D.48433 * 4;
        D.48435 = D.48015 + D.48434;
        *D.48435 = falsebb;
        <D.48430>:
        D.48023 = cfg->real_offset;
        falsebb->real_offset = D.48023;
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        if (D.47996 != 0B) goto <D.48439>; else goto <D.48436>;
        <D.48439>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48440 = D.47996->opcode;
        D.48441 = D.48440 + 64981;
        D.48442 = D.48441 <= 9;
        D.48443 = D.48440 + 64874;
        D.48444 = D.48443 <= 9;
        D.48445 = D.48442 | D.48444;
        if (D.48445 != 0) goto <D.48437>; else goto <D.48446>;
        <D.48446>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48035 = D.47996->opcode;
        D.48036 = D.48035 + 64884;
        if (D.48036 <= 9) goto <D.48437>; else goto <D.48436>;
        <D.48437>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48037 = D.47996->data.op[1].many_blocks;
        D.48038 = D.48037 + 4;
        D.48039 = *D.48038;
        if (D.48039 == 0B) goto <D.48447>; else goto <D.48436>;
        <D.48447>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48037 = D.47996->data.op[1].many_blocks;
        D.48038 = D.48037 + 4;
        *D.48038 = falsebb;
        D.47995 = cfg->cbb;
        mono_link_bblock (cfg, D.47995, falsebb);
        goto <D.48438>;
        <D.48436>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        if (D.47996 == 0B) goto <D.48448>; else goto <D.48450>;
        <D.48450>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48451 = D.47996->opcode;
        D.48452 = D.48451 != 446;
        D.48453 = D.48451 != 763;
        D.48454 = D.48452 & D.48453;
        if (D.48454 != 0) goto <D.48455>; else goto <D.48449>;
        <D.48455>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48456 = D.47996->opcode;
        D.48457 = D.48456 + 64981;
        D.48458 = D.48457 > 9;
        D.48459 = D.48456 + 64874;
        D.48460 = D.48459 > 9;
        D.48461 = D.48458 & D.48460;
        if (D.48461 != 0) goto <D.48462>; else goto <D.48449>;
        <D.48462>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48035 = D.47996->opcode;
        D.48036 = D.48035 + 64884;
        if (D.48036 > 9) goto <D.48448>; else goto <D.48449>;
        <D.48448>:
        D.47995 = cfg->cbb;
        mono_link_bblock (cfg, D.47995, falsebb);
        <D.48449>:
        <D.48438>:
        D.47995 = cfg->cbb;
        D.47995->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.48463>;
        <D.48421>:
        D.47978 = cfg->mempool;
        D.48464 = mono_mempool_alloc (D.47978, 8);
        ins->data.op[1].many_blocks = D.48464;
        D.48465 = ins->data.op[1].many_blocks;
        *D.48465 = end_bb;
        D.48465 = ins->data.op[1].many_blocks;
        D.48466 = D.48465 + 4;
        *D.48466 = 0B;
        D.47995 = cfg->cbb;
        mono_link_bblock (cfg, D.47995, end_bb);
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        if (D.47996 != 0B) goto <D.48467>; else goto <D.48468>;
        <D.48467>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.47996->next = ins;
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        ins->prev = D.47996;
        D.47995 = cfg->cbb;
        D.47995->last_ins = ins;
        goto <D.48469>;
        <D.48468>:
        D.47995 = cfg->cbb;
        D.47995 = cfg->cbb;
        D.47995->last_ins = ins;
        D.47996 = D.47995->last_ins;
        D.47995->code = D.47996;
        <D.48469>:
        D.48063 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.48064 = D.48063 & 8;
        if (D.48064 == 0) goto <D.48470>; else goto <D.48471>;
        <D.48470>:
        D.47978 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.47978, 172);
        D.47979 = cfg->num_bblocks;
        D.48472 = D.47979;
        D.48473 = D.48472 + 1;
        cfg->num_bblocks = D.48473;
        D.48474 = (int) D.48472;
        falsebb->block_num = D.48474;
        D.48465 = ins->data.op[1].many_blocks;
        D.48466 = D.48465 + 4;
        *D.48466 = falsebb;
        D.47995 = cfg->cbb;
        mono_link_bblock (cfg, D.47995, falsebb);
        D.48428 = falsebb->cil_code;
        if (D.48428 != 0B) goto <D.48475>; else goto <D.48476>;
        <D.48475>:
        D.48015 = cfg->cil_offset_to_bb;
        D.48428 = falsebb->cil_code;
        D.48431 = (int) D.48428;
        D.48017 = cfg->cil_start;
        D.48018 = (int) D.48017;
        D.48432 = D.48431 - D.48018;
        D.48433 = (unsigned int) D.48432;
        D.48434 = D.48433 * 4;
        D.48435 = D.48015 + D.48434;
        *D.48435 = falsebb;
        <D.48476>:
        D.48023 = cfg->real_offset;
        falsebb->real_offset = D.48023;
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        if (D.47996 != 0B) goto <D.48480>; else goto <D.48477>;
        <D.48480>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48481 = D.47996->opcode;
        D.48482 = D.48481 + 64981;
        D.48483 = D.48482 <= 9;
        D.48484 = D.48481 + 64874;
        D.48485 = D.48484 <= 9;
        D.48486 = D.48483 | D.48485;
        if (D.48486 != 0) goto <D.48478>; else goto <D.48487>;
        <D.48487>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48035 = D.47996->opcode;
        D.48036 = D.48035 + 64884;
        if (D.48036 <= 9) goto <D.48478>; else goto <D.48477>;
        <D.48478>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48037 = D.47996->data.op[1].many_blocks;
        D.48038 = D.48037 + 4;
        D.48039 = *D.48038;
        if (D.48039 == 0B) goto <D.48488>; else goto <D.48477>;
        <D.48488>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48037 = D.47996->data.op[1].many_blocks;
        D.48038 = D.48037 + 4;
        *D.48038 = falsebb;
        D.47995 = cfg->cbb;
        mono_link_bblock (cfg, D.47995, falsebb);
        goto <D.48479>;
        <D.48477>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        if (D.47996 == 0B) goto <D.48489>; else goto <D.48491>;
        <D.48491>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48492 = D.47996->opcode;
        D.48493 = D.48492 != 446;
        D.48494 = D.48492 != 763;
        D.48495 = D.48493 & D.48494;
        if (D.48495 != 0) goto <D.48496>; else goto <D.48490>;
        <D.48496>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48497 = D.47996->opcode;
        D.48498 = D.48497 + 64981;
        D.48499 = D.48498 > 9;
        D.48500 = D.48497 + 64874;
        D.48501 = D.48500 > 9;
        D.48502 = D.48499 & D.48501;
        if (D.48502 != 0) goto <D.48503>; else goto <D.48490>;
        <D.48503>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48035 = D.47996->opcode;
        D.48036 = D.48035 + 64884;
        if (D.48036 > 9) goto <D.48489>; else goto <D.48490>;
        <D.48489>:
        D.47995 = cfg->cbb;
        mono_link_bblock (cfg, D.47995, falsebb);
        <D.48490>:
        <D.48479>:
        D.47995 = cfg->cbb;
        D.47995->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.48504>;
        <D.48471>:
        D.47995 = cfg->cbb;
        D.47995->extended = 1;
        <D.48504>:
        <D.48463>:
      }
      D.48505 = is_nullable_bb->cil_code;
      if (D.48505 != 0B) goto <D.48506>; else goto <D.48507>;
      <D.48506>:
      D.48015 = cfg->cil_offset_to_bb;
      D.48505 = is_nullable_bb->cil_code;
      D.48508 = (int) D.48505;
      D.48017 = cfg->cil_start;
      D.48018 = (int) D.48017;
      D.48509 = D.48508 - D.48018;
      D.48510 = (unsigned int) D.48509;
      D.48511 = D.48510 * 4;
      D.48512 = D.48015 + D.48511;
      *D.48512 = is_nullable_bb;
      <D.48507>:
      D.48023 = cfg->real_offset;
      is_nullable_bb->real_offset = D.48023;
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      if (D.47996 != 0B) goto <D.48516>; else goto <D.48513>;
      <D.48516>:
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      D.48517 = D.47996->opcode;
      D.48518 = D.48517 + 64981;
      D.48519 = D.48518 <= 9;
      D.48520 = D.48517 + 64874;
      D.48521 = D.48520 <= 9;
      D.48522 = D.48519 | D.48521;
      if (D.48522 != 0) goto <D.48514>; else goto <D.48523>;
      <D.48523>:
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      D.48035 = D.47996->opcode;
      D.48036 = D.48035 + 64884;
      if (D.48036 <= 9) goto <D.48514>; else goto <D.48513>;
      <D.48514>:
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      D.48037 = D.47996->data.op[1].many_blocks;
      D.48038 = D.48037 + 4;
      D.48039 = *D.48038;
      if (D.48039 == 0B) goto <D.48524>; else goto <D.48513>;
      <D.48524>:
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      D.48037 = D.47996->data.op[1].many_blocks;
      D.48038 = D.48037 + 4;
      *D.48038 = is_nullable_bb;
      D.47995 = cfg->cbb;
      mono_link_bblock (cfg, D.47995, is_nullable_bb);
      goto <D.48515>;
      <D.48513>:
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      if (D.47996 == 0B) goto <D.48525>; else goto <D.48527>;
      <D.48527>:
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      D.48528 = D.47996->opcode;
      D.48529 = D.48528 != 446;
      D.48530 = D.48528 != 763;
      D.48531 = D.48529 & D.48530;
      if (D.48531 != 0) goto <D.48532>; else goto <D.48526>;
      <D.48532>:
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      D.48533 = D.47996->opcode;
      D.48534 = D.48533 + 64981;
      D.48535 = D.48534 > 9;
      D.48536 = D.48533 + 64874;
      D.48537 = D.48536 > 9;
      D.48538 = D.48535 & D.48537;
      if (D.48538 != 0) goto <D.48539>; else goto <D.48526>;
      <D.48539>:
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      D.48035 = D.47996->opcode;
      D.48036 = D.48035 + 64884;
      if (D.48036 > 9) goto <D.48525>; else goto <D.48526>;
      <D.48525>:
      D.47995 = cfg->cbb;
      mono_link_bblock (cfg, D.47995, is_nullable_bb);
      <D.48526>:
      <D.48515>:
      D.47995 = cfg->cbb;
      D.47995->next_bb = is_nullable_bb;
      cfg->cbb = is_nullable_bb;
      {
        struct MonoInst * addr;
        struct MonoInst * unbox_call;
        struct MonoMethodSignature * unbox_sig;
        struct MonoInst * var;

        addr = emit_get_gsharedvt_info_klass (cfg, klass, 25);
        D.48342 = &klass->byval_arg;
        var = mono_compile_create_var (cfg, D.48342, 329);
        D.47978 = cfg->mempool;
        unbox_sig = mono_mempool_alloc0 (D.47978, 16);
        D.48342 = &klass->byval_arg;
        unbox_sig->ret = D.48342;
        unbox_sig->param_count = 1;
        D.48540 = mono_defaults.object_class;
        D.48541 = &D.48540->byval_arg;
        unbox_sig->params[0] = D.48541;
        unbox_call = mono_emit_calli (cfg, unbox_sig, &obj, addr, 0B, 0B);
        {
          struct MonoInst * var;

          D.48543 = unbox_call->dreg;
          D.48544 = (unsigned int) D.48543;
          D.48332 = cfg->vreg_to_inst_len;
          if (D.48544 < D.48332) goto <D.48545>; else goto <D.48546>;
          <D.48545>:
          D.48335 = cfg->vreg_to_inst;
          D.48543 = unbox_call->dreg;
          D.48547 = (unsigned int) D.48543;
          D.48548 = D.48547 * 4;
          D.48549 = D.48335 + D.48548;
          iftmp.498 = *D.48549;
          goto <D.48550>;
          <D.48546>:
          iftmp.498 = 0B;
          <D.48550>:
          var = iftmp.498;
          if (var == 0B) goto <D.48551>; else goto <D.48552>;
          <D.48551>:
          D.48543 = unbox_call->dreg;
          D.48342 = &klass->byval_arg;
          var = mono_compile_create_var_for_vreg (cfg, D.48342, 329, D.48543);
          <D.48552>:
          D.47978 = cfg->mempool;
          addr = mono_mempool_alloc (D.47978, 48);
          addr->data.op[1].const_val = 0;
          D.48553 = addr->data.op[1].const_val;
          addr->data.op[0].const_val = D.48553;
          addr->prev = 0B;
          D.48554 = addr->prev;
          addr->next = D.48554;
          addr->opcode = 314;
          addr->flags = 0;
          addr->type = 0;
          addr->dreg = -1;
          addr->sreg3 = -1;
          D.48555 = addr->sreg3;
          addr->sreg2 = D.48555;
          D.48556 = addr->sreg2;
          addr->sreg1 = D.48556;
          D.47993 = cfg->ip;
          addr->cil_code = D.47993;
          addr->data.op[0].p = var;
          D.48557 = var->flags;
          D.48558 = D.48557 | 16;
          var->flags = D.48558;
          addr->type = 5;
          D.48559 = var->klass;
          addr->klass = D.48559;
          D.48560 = alloc_dreg (cfg, 5);
          D.48561 = (int) D.48560;
          addr->dreg = D.48561;
          cfg->has_indirection = 1;
          D.48348 = cfg->gsharedvt;
          D.48349 = D.48348 != 0;
          D.48350 = (long int) D.48349;
          D.48351 = __builtin_expect (D.48350, 0);
          if (D.48351 != 0) goto <D.48562>; else goto <D.48563>;
          <D.48562>:
          D.48564 = var->data.op[1].vtype;
          D.48565 = mini_is_gsharedvt_variable_type (cfg, D.48564);
          if (D.48565 != 0) goto <D.48566>; else goto <D.48567>;
          <D.48566>:
          handle_gsharedvt_ldaddr (cfg);
          <D.48567>:
          <D.48563>:
          D.48569 = mono_arch_is_soft_float ();
          if (D.48569 != 0) goto <D.48570>; else goto <D.48571>;
          <D.48570>:
          D.48572 = var->type;
          D.48573 = D.48572 == 2;
          D.48574 = D.48572 == 4;
          D.48575 = D.48573 | D.48574;
          D.48576 = (int) D.48575;
          iftmp.499 = (_Bool) D.48576;
          goto <D.48577>;
          <D.48571>:
          D.48578 = var->type;
          iftmp.499 = D.48578 == 2;
          <D.48577>:
          if (iftmp.499 != 0) goto <D.48579>; else goto <D.48580>;
          <D.48579>:
          {
            struct MonoInst * var1;
            struct MonoInst * var2;

            D.48582 = var->dreg;
            D.48583 = D.48582 + 1;
            D.48584 = (unsigned int) D.48583;
            D.48332 = cfg->vreg_to_inst_len;
            if (D.48584 < D.48332) goto <D.48585>; else goto <D.48586>;
            <D.48585>:
            D.48335 = cfg->vreg_to_inst;
            D.48582 = var->dreg;
            D.48587 = (sizetype) D.48582;
            D.48588 = D.48587 + 1;
            D.48589 = D.48588 * 4;
            D.48590 = D.48335 + D.48589;
            iftmp.500 = *D.48590;
            goto <D.48591>;
            <D.48586>:
            iftmp.500 = 0B;
            <D.48591>:
            var1 = iftmp.500;
            D.48582 = var->dreg;
            D.48593 = D.48582 + 2;
            D.48594 = (unsigned int) D.48593;
            D.48332 = cfg->vreg_to_inst_len;
            if (D.48594 < D.48332) goto <D.48595>; else goto <D.48596>;
            <D.48595>:
            D.48335 = cfg->vreg_to_inst;
            D.48582 = var->dreg;
            D.48587 = (sizetype) D.48582;
            D.48597 = D.48587 + 2;
            D.48598 = D.48597 * 4;
            D.48599 = D.48335 + D.48598;
            iftmp.501 = *D.48599;
            goto <D.48600>;
            <D.48596>:
            iftmp.501 = 0B;
            <D.48600>:
            var2 = iftmp.501;
            D.48601 = var1 == 0B;
            D.48602 = (long int) D.48601;
            D.48603 = __builtin_expect (D.48602, 0);
            if (D.48603 != 0) goto <D.48604>; else goto <D.48605>;
            <D.48604>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3706, "var1");
            <D.48605>:
            D.48606 = var2 == 0B;
            D.48607 = (long int) D.48606;
            D.48608 = __builtin_expect (D.48607, 0);
            if (D.48608 != 0) goto <D.48609>; else goto <D.48610>;
            <D.48609>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3706, "var2");
            <D.48610>:
            D.48611 = var1->flags;
            D.48612 = D.48611 | 16;
            var1->flags = D.48612;
            D.48613 = var2->flags;
            D.48614 = D.48613 | 16;
            var2->flags = D.48614;
          }
          <D.48580>:
        }
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        if (D.47996 != 0B) goto <D.48615>; else goto <D.48616>;
        <D.48615>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.47996->next = addr;
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        addr->prev = D.47996;
        D.47995 = cfg->cbb;
        D.47995->last_ins = addr;
        goto <D.48617>;
        <D.48616>:
        D.47995 = cfg->cbb;
        D.47995 = cfg->cbb;
        D.47995->last_ins = addr;
        D.47996 = D.47995->last_ins;
        D.47995->code = D.47996;
        <D.48617>:
        addr->dreg = addr_reg;
      }
      {
        struct MonoInst * ins;
        struct MonoBasicBlock * falsebb;

        D.47978 = cfg->mempool;
        ins = mono_mempool_alloc (D.47978, 48);
        ins->data.op[1].const_val = 0;
        D.48618 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.48618;
        ins->prev = 0B;
        D.48619 = ins->prev;
        ins->next = D.48619;
        ins->opcode = 446;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.48620 = ins->sreg3;
        ins->sreg2 = D.48620;
        D.48621 = ins->sreg2;
        ins->sreg1 = D.48621;
        D.47993 = cfg->ip;
        ins->cil_code = D.47993;
        if (1 != 0) goto <D.48622>; else goto <D.48623>;
        <D.48622>:
        D.47978 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.47978, 172);
        D.47979 = cfg->num_bblocks;
        D.48624 = D.47979;
        D.48625 = D.48624 + 1;
        cfg->num_bblocks = D.48625;
        D.48626 = (int) D.48624;
        falsebb->block_num = D.48626;
        ins->data.op[0].target_block = end_bb;
        D.47995 = cfg->cbb;
        mono_link_bblock (cfg, D.47995, end_bb);
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        if (D.47996 != 0B) goto <D.48627>; else goto <D.48628>;
        <D.48627>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.47996->next = ins;
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        ins->prev = D.47996;
        D.47995 = cfg->cbb;
        D.47995->last_ins = ins;
        goto <D.48629>;
        <D.48628>:
        D.47995 = cfg->cbb;
        D.47995 = cfg->cbb;
        D.47995->last_ins = ins;
        D.47996 = D.47995->last_ins;
        D.47995->code = D.47996;
        <D.48629>:
        D.48630 = falsebb->cil_code;
        if (D.48630 != 0B) goto <D.48631>; else goto <D.48632>;
        <D.48631>:
        D.48015 = cfg->cil_offset_to_bb;
        D.48630 = falsebb->cil_code;
        D.48633 = (int) D.48630;
        D.48017 = cfg->cil_start;
        D.48018 = (int) D.48017;
        D.48634 = D.48633 - D.48018;
        D.48635 = (unsigned int) D.48634;
        D.48636 = D.48635 * 4;
        D.48637 = D.48015 + D.48636;
        *D.48637 = falsebb;
        <D.48632>:
        D.48023 = cfg->real_offset;
        falsebb->real_offset = D.48023;
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        if (D.47996 != 0B) goto <D.48641>; else goto <D.48638>;
        <D.48641>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48642 = D.47996->opcode;
        D.48643 = D.48642 + 64981;
        D.48644 = D.48643 <= 9;
        D.48645 = D.48642 + 64874;
        D.48646 = D.48645 <= 9;
        D.48647 = D.48644 | D.48646;
        if (D.48647 != 0) goto <D.48639>; else goto <D.48648>;
        <D.48648>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48035 = D.47996->opcode;
        D.48036 = D.48035 + 64884;
        if (D.48036 <= 9) goto <D.48639>; else goto <D.48638>;
        <D.48639>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48037 = D.47996->data.op[1].many_blocks;
        D.48038 = D.48037 + 4;
        D.48039 = *D.48038;
        if (D.48039 == 0B) goto <D.48649>; else goto <D.48638>;
        <D.48649>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48037 = D.47996->data.op[1].many_blocks;
        D.48038 = D.48037 + 4;
        *D.48038 = falsebb;
        D.47995 = cfg->cbb;
        mono_link_bblock (cfg, D.47995, falsebb);
        goto <D.48640>;
        <D.48638>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        if (D.47996 == 0B) goto <D.48650>; else goto <D.48652>;
        <D.48652>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48653 = D.47996->opcode;
        D.48654 = D.48653 != 446;
        D.48655 = D.48653 != 763;
        D.48656 = D.48654 & D.48655;
        if (D.48656 != 0) goto <D.48657>; else goto <D.48651>;
        <D.48657>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48658 = D.47996->opcode;
        D.48659 = D.48658 + 64981;
        D.48660 = D.48659 > 9;
        D.48661 = D.48658 + 64874;
        D.48662 = D.48661 > 9;
        D.48663 = D.48660 & D.48662;
        if (D.48663 != 0) goto <D.48664>; else goto <D.48651>;
        <D.48664>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48035 = D.47996->opcode;
        D.48036 = D.48035 + 64884;
        if (D.48036 > 9) goto <D.48650>; else goto <D.48651>;
        <D.48650>:
        D.47995 = cfg->cbb;
        mono_link_bblock (cfg, D.47995, falsebb);
        <D.48651>:
        <D.48640>:
        D.47995 = cfg->cbb;
        D.47995->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.48665>;
        <D.48623>:
        D.47978 = cfg->mempool;
        D.48666 = mono_mempool_alloc (D.47978, 8);
        ins->data.op[1].many_blocks = D.48666;
        D.48667 = ins->data.op[1].many_blocks;
        *D.48667 = end_bb;
        D.48667 = ins->data.op[1].many_blocks;
        D.48668 = D.48667 + 4;
        *D.48668 = 0B;
        D.47995 = cfg->cbb;
        mono_link_bblock (cfg, D.47995, end_bb);
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        if (D.47996 != 0B) goto <D.48669>; else goto <D.48670>;
        <D.48669>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.47996->next = ins;
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        ins->prev = D.47996;
        D.47995 = cfg->cbb;
        D.47995->last_ins = ins;
        goto <D.48671>;
        <D.48670>:
        D.47995 = cfg->cbb;
        D.47995 = cfg->cbb;
        D.47995->last_ins = ins;
        D.47996 = D.47995->last_ins;
        D.47995->code = D.47996;
        <D.48671>:
        D.48063 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.48064 = D.48063 & 8;
        if (D.48064 == 0) goto <D.48672>; else goto <D.48673>;
        <D.48672>:
        D.47978 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.47978, 172);
        D.47979 = cfg->num_bblocks;
        D.48674 = D.47979;
        D.48675 = D.48674 + 1;
        cfg->num_bblocks = D.48675;
        D.48676 = (int) D.48674;
        falsebb->block_num = D.48676;
        D.48667 = ins->data.op[1].many_blocks;
        D.48668 = D.48667 + 4;
        *D.48668 = falsebb;
        D.47995 = cfg->cbb;
        mono_link_bblock (cfg, D.47995, falsebb);
        D.48630 = falsebb->cil_code;
        if (D.48630 != 0B) goto <D.48677>; else goto <D.48678>;
        <D.48677>:
        D.48015 = cfg->cil_offset_to_bb;
        D.48630 = falsebb->cil_code;
        D.48633 = (int) D.48630;
        D.48017 = cfg->cil_start;
        D.48018 = (int) D.48017;
        D.48634 = D.48633 - D.48018;
        D.48635 = (unsigned int) D.48634;
        D.48636 = D.48635 * 4;
        D.48637 = D.48015 + D.48636;
        *D.48637 = falsebb;
        <D.48678>:
        D.48023 = cfg->real_offset;
        falsebb->real_offset = D.48023;
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        if (D.47996 != 0B) goto <D.48682>; else goto <D.48679>;
        <D.48682>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48683 = D.47996->opcode;
        D.48684 = D.48683 + 64981;
        D.48685 = D.48684 <= 9;
        D.48686 = D.48683 + 64874;
        D.48687 = D.48686 <= 9;
        D.48688 = D.48685 | D.48687;
        if (D.48688 != 0) goto <D.48680>; else goto <D.48689>;
        <D.48689>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48035 = D.47996->opcode;
        D.48036 = D.48035 + 64884;
        if (D.48036 <= 9) goto <D.48680>; else goto <D.48679>;
        <D.48680>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48037 = D.47996->data.op[1].many_blocks;
        D.48038 = D.48037 + 4;
        D.48039 = *D.48038;
        if (D.48039 == 0B) goto <D.48690>; else goto <D.48679>;
        <D.48690>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48037 = D.47996->data.op[1].many_blocks;
        D.48038 = D.48037 + 4;
        *D.48038 = falsebb;
        D.47995 = cfg->cbb;
        mono_link_bblock (cfg, D.47995, falsebb);
        goto <D.48681>;
        <D.48679>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        if (D.47996 == 0B) goto <D.48691>; else goto <D.48693>;
        <D.48693>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48694 = D.47996->opcode;
        D.48695 = D.48694 != 446;
        D.48696 = D.48694 != 763;
        D.48697 = D.48695 & D.48696;
        if (D.48697 != 0) goto <D.48698>; else goto <D.48692>;
        <D.48698>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48699 = D.47996->opcode;
        D.48700 = D.48699 + 64981;
        D.48701 = D.48700 > 9;
        D.48702 = D.48699 + 64874;
        D.48703 = D.48702 > 9;
        D.48704 = D.48701 & D.48703;
        if (D.48704 != 0) goto <D.48705>; else goto <D.48692>;
        <D.48705>:
        D.47995 = cfg->cbb;
        D.47996 = D.47995->last_ins;
        D.48035 = D.47996->opcode;
        D.48036 = D.48035 + 64884;
        if (D.48036 > 9) goto <D.48691>; else goto <D.48692>;
        <D.48691>:
        D.47995 = cfg->cbb;
        mono_link_bblock (cfg, D.47995, falsebb);
        <D.48692>:
        <D.48681>:
        D.47995 = cfg->cbb;
        D.47995->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.48706>;
        <D.48673>:
        D.47995 = cfg->cbb;
        D.47995->extended = 1;
        <D.48706>:
        <D.48665>:
      }
      D.48707 = end_bb->cil_code;
      if (D.48707 != 0B) goto <D.48708>; else goto <D.48709>;
      <D.48708>:
      D.48015 = cfg->cil_offset_to_bb;
      D.48707 = end_bb->cil_code;
      D.48710 = (int) D.48707;
      D.48017 = cfg->cil_start;
      D.48018 = (int) D.48017;
      D.48711 = D.48710 - D.48018;
      D.48712 = (unsigned int) D.48711;
      D.48713 = D.48712 * 4;
      D.48714 = D.48015 + D.48713;
      *D.48714 = end_bb;
      <D.48709>:
      D.48023 = cfg->real_offset;
      end_bb->real_offset = D.48023;
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      if (D.47996 != 0B) goto <D.48718>; else goto <D.48715>;
      <D.48718>:
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      D.48719 = D.47996->opcode;
      D.48720 = D.48719 + 64981;
      D.48721 = D.48720 <= 9;
      D.48722 = D.48719 + 64874;
      D.48723 = D.48722 <= 9;
      D.48724 = D.48721 | D.48723;
      if (D.48724 != 0) goto <D.48716>; else goto <D.48725>;
      <D.48725>:
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      D.48035 = D.47996->opcode;
      D.48036 = D.48035 + 64884;
      if (D.48036 <= 9) goto <D.48716>; else goto <D.48715>;
      <D.48716>:
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      D.48037 = D.47996->data.op[1].many_blocks;
      D.48038 = D.48037 + 4;
      D.48039 = *D.48038;
      if (D.48039 == 0B) goto <D.48726>; else goto <D.48715>;
      <D.48726>:
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      D.48037 = D.47996->data.op[1].many_blocks;
      D.48038 = D.48037 + 4;
      *D.48038 = end_bb;
      D.47995 = cfg->cbb;
      mono_link_bblock (cfg, D.47995, end_bb);
      goto <D.48717>;
      <D.48715>:
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      if (D.47996 == 0B) goto <D.48727>; else goto <D.48729>;
      <D.48729>:
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      D.48730 = D.47996->opcode;
      D.48731 = D.48730 != 446;
      D.48732 = D.48730 != 763;
      D.48733 = D.48731 & D.48732;
      if (D.48733 != 0) goto <D.48734>; else goto <D.48728>;
      <D.48734>:
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      D.48735 = D.47996->opcode;
      D.48736 = D.48735 + 64981;
      D.48737 = D.48736 > 9;
      D.48738 = D.48735 + 64874;
      D.48739 = D.48738 > 9;
      D.48740 = D.48737 & D.48739;
      if (D.48740 != 0) goto <D.48741>; else goto <D.48728>;
      <D.48741>:
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      D.48035 = D.47996->opcode;
      D.48036 = D.48035 + 64884;
      if (D.48036 > 9) goto <D.48727>; else goto <D.48728>;
      <D.48727>:
      D.47995 = cfg->cbb;
      mono_link_bblock (cfg, D.47995, end_bb);
      <D.48728>:
      <D.48717>:
      D.47995 = cfg->cbb;
      D.47995->next_bb = end_bb;
      cfg->cbb = end_bb;
      D.47978 = cfg->mempool;
      ins = mono_mempool_alloc (D.47978, 48);
      ins->data.op[1].const_val = 0;
      D.48742 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.48742;
      ins->prev = 0B;
      D.48743 = ins->prev;
      ins->next = D.48743;
      D.48342 = &klass->byval_arg;
      D.48744 = mono_type_to_load_membase (cfg, D.48342);
      D.48745 = (short unsigned int) D.48744;
      ins->opcode = D.48745;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.48746 = ins->sreg3;
      ins->sreg2 = D.48746;
      D.48747 = ins->sreg2;
      ins->sreg1 = D.48747;
      D.47993 = cfg->ip;
      ins->cil_code = D.47993;
      ins->dreg = 0;
      ins->sreg1 = addr_reg;
      ins->data.op[0].const_val = 0;
      ins->type = 1;
      D.48342 = &klass->byval_arg;
      type_to_eval_stack_type (cfg, D.48342, ins);
      D.48748 = ins->type;
      D.48749 = (<unnamed type>) D.48748;
      D.48750 = alloc_dreg (cfg, D.48749);
      D.48751 = (int) D.48750;
      ins->dreg = D.48751;
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      if (D.47996 != 0B) goto <D.48752>; else goto <D.48753>;
      <D.48752>:
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      D.47996->next = ins;
      D.47995 = cfg->cbb;
      D.47996 = D.47995->last_ins;
      ins->prev = D.47996;
      D.47995 = cfg->cbb;
      D.47995->last_ins = ins;
      goto <D.48754>;
      <D.48753>:
      D.47995 = cfg->cbb;
      D.47995 = cfg->cbb;
      D.47995->last_ins = ins;
      D.47996 = D.47995->last_ins;
      D.47995->code = D.47996;
      <D.48754>:
      D.47995 = cfg->cbb;
      *out_cbb = D.47995;
      D.48755 = ins;
      return D.48755;
    }
  finally
    {
      args = {CLOBBER};
    }
}


mini_class_has_reference_variant_generic_argument (struct MonoCompile * cfg, struct MonoClass * klass, int context_used)
{
  struct MonoGenericClass * D.48758;
  struct MonoClass * D.48761;
  struct MonoGenericContainer * D.48765;
  gboolean D.48768;
  struct MonoGenericParamFull * D.48769;
  unsigned int i.502;
  unsigned int D.48771;
  struct MonoGenericParamFull * D.48772;
  short unsigned int D.48773;
  int D.48774;
  int D.48775;
  int D.48778;
  <unnamed-signed:31> D.48781;
  int D.48782;
  int i;
  struct MonoGenericContainer * container;
  struct MonoGenericInst * ginst;

  D.48758 = klass->generic_class;
  if (D.48758 != 0B) goto <D.48759>; else goto <D.48760>;
  <D.48759>:
  D.48758 = klass->generic_class;
  D.48761 = D.48758->container_class;
  container = D.48761->generic_container;
  D.48758 = klass->generic_class;
  ginst = D.48758->context.class_inst;
  goto <D.48762>;
  <D.48760>:
  D.48765 = klass->generic_container;
  if (D.48765 != 0B) goto <D.48766>; else goto <D.48763>;
  <D.48766>:
  if (context_used != 0) goto <D.48767>; else goto <D.48763>;
  <D.48767>:
  container = klass->generic_container;
  ginst = container->context.class_inst;
  goto <D.48764>;
  <D.48763>:
  D.48768 = 0;
  return D.48768;
  <D.48764>:
  <D.48762>:
  i = 0;
  goto <D.25968>;
  <D.25967>:
  {
    struct MonoType * type;

    D.48769 = container->type_params;
    i.502 = (unsigned int) i;
    D.48771 = i.502 * 32;
    D.48772 = D.48769 + D.48771;
    D.48773 = D.48772->info.flags;
    D.48774 = (int) D.48773;
    D.48775 = D.48774 & 3;
    if (D.48775 == 0) goto <D.48776>; else goto <D.48777>;
    <D.48776>:
    // predicted unlikely by continue predictor.
    goto <D.25966>;
    <D.48777>:
    type = ginst->type_argv[i];
    D.48778 = mini_type_is_reference (cfg, type);
    if (D.48778 != 0) goto <D.48779>; else goto <D.48780>;
    <D.48779>:
    D.48768 = 1;
    return D.48768;
    <D.48780>:
  }
  <D.25966>:
  i = i + 1;
  <D.25968>:
  D.48781 = container->type_argc;
  D.48782 = (int) D.48781;
  if (D.48782 > i) goto <D.25967>; else goto <D.25969>;
  <D.25969>:
  D.48768 = 0;
  return D.48768;
}


handle_castclass (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * src, int context_used)
{
  unsigned int D.48784;
  struct MonoMemPool * D.48789;
  void * D.48790;
  struct MonoInst * D.48791;
  int D.48792;
  struct MonoInst * D.48793;
  int D.48794;
  int D.48795;
  const unsigned char * D.48796;
  unsigned int D.48797;
  int D.48798;
  int D.48799;
  struct MonoBasicBlock * D.48800;
  struct MonoInst * D.48801;
  struct MonoInst * D.48805;
  unsigned int D.48806;
  unsigned int D.48807;
  unsigned int D.48808;
  int D.48809;
  int D.48810;
  struct MonoInst * D.48811;
  int D.48812;
  int D.48813;
  int D.48817;
  struct MonoInst * D.48818;
  int D.48819;
  int D.48820;
  unsigned int D.48823;
  unsigned int D.48824;
  int D.48825;
  unsigned char * D.48829;
  struct MonoBasicBlock * * D.48832;
  int D.48833;
  unsigned char * D.48834;
  int D.48835;
  int D.48836;
  unsigned int D.48837;
  unsigned int D.48838;
  struct MonoBasicBlock * * D.48839;
  unsigned int D.48840;
  short unsigned int D.48845;
  short unsigned int D.48846;
  _Bool D.48847;
  short unsigned int D.48848;
  _Bool D.48849;
  _Bool D.48850;
  short unsigned int D.48852;
  short unsigned int D.48853;
  struct MonoBasicBlock * * D.48854;
  struct MonoBasicBlock * * D.48855;
  struct MonoBasicBlock * D.48856;
  short unsigned int D.48861;
  _Bool D.48862;
  _Bool D.48863;
  _Bool D.48864;
  short unsigned int D.48866;
  short unsigned int D.48867;
  _Bool D.48868;
  short unsigned int D.48869;
  _Bool D.48870;
  _Bool D.48871;
  void * D.48874;
  struct MonoBasicBlock * * D.48875;
  struct MonoBasicBlock * * D.48876;
  unsigned char D.48880;
  unsigned char D.48881;
  unsigned int D.48884;
  unsigned int D.48885;
  int D.48886;
  short unsigned int D.48893;
  short unsigned int D.48894;
  _Bool D.48895;
  short unsigned int D.48896;
  _Bool D.48897;
  _Bool D.48898;
  short unsigned int D.48904;
  _Bool D.48905;
  _Bool D.48906;
  _Bool D.48907;
  short unsigned int D.48909;
  short unsigned int D.48910;
  _Bool D.48911;
  short unsigned int D.48912;
  _Bool D.48913;
  _Bool D.48914;
  unsigned int D.48917;
  unsigned int D.48918;
  int D.48921;
  struct MonoInst * D.48922;
  int D.48923;
  int D.48924;
  unsigned int D.48929;
  int D.48930;
  struct MonoInst * D.48931;
  int D.48932;
  int D.48933;
  unsigned char D.48939;
  unsigned char D.48941;
  unsigned int D.48943;
  unsigned int D.48944;
  unsigned int D.48946;
  struct MonoDomain * D.48950;
  int D.48953;
  struct MonoInst * D.48954;
  int D.48955;
  int D.48956;
  int vt.503;
  int D.48962;
  struct MonoInst * D.48963;
  int D.48964;
  int D.48965;
  int D.48969;
  struct MonoInst * D.48970;
  int D.48971;
  int D.48972;
  int klass.504;
  int D.48977;
  struct MonoInst * D.48978;
  int D.48979;
  int D.48980;
  int D.48984;
  struct MonoInst * D.48985;
  int D.48986;
  int D.48987;
  unsigned char * D.48991;
  int D.48994;
  int D.48995;
  unsigned int D.48996;
  unsigned int D.48997;
  struct MonoBasicBlock * * D.48998;
  short unsigned int D.49003;
  short unsigned int D.49004;
  _Bool D.49005;
  short unsigned int D.49006;
  _Bool D.49007;
  _Bool D.49008;
  short unsigned int D.49014;
  _Bool D.49015;
  _Bool D.49016;
  _Bool D.49017;
  short unsigned int D.49019;
  short unsigned int D.49020;
  _Bool D.49021;
  short unsigned int D.49022;
  _Bool D.49023;
  _Bool D.49024;
  struct MonoBasicBlock * is_null_bb;
  int obj_reg;
  int vtable_reg;
  struct MonoInst * klass_inst;

  obj_reg = src->dreg;
  D.48784 = alloc_preg (cfg);
  vtable_reg = (int) D.48784;
  klass_inst = 0B;
  if (context_used != 0) goto <D.48785>; else goto <D.48786>;
  <D.48785>:
  {
    struct MonoInst * args[3];

    try
      {
        mini_class_has_reference_variant_generic_argument (cfg, klass, context_used);
        if (1 != 0) goto <D.48787>; else goto <D.48788>;
        <D.48787>:
        {
          struct MonoMethod * mono_castclass;
          struct MonoInst * cache_ins;

          mono_castclass = mono_marshal_get_castclass_with_cache ();
          cache_ins = emit_get_rgctx_klass (cfg, context_used, klass, 12);
          args[0] = src;
          D.48789 = cfg->mempool;
          D.48790 = mono_mempool_alloc (D.48789, 48);
          args[1] = D.48790;
          D.48791 = args[1];
          D.48791 = args[1];
          D.48791->data.op[1].const_val = 0;
          D.48792 = D.48791->data.op[1].const_val;
          D.48791->data.op[0].const_val = D.48792;
          D.48791 = args[1];
          D.48791 = args[1];
          D.48791->prev = 0B;
          D.48793 = D.48791->prev;
          D.48791->next = D.48793;
          D.48791 = args[1];
          D.48791->opcode = 391;
          D.48791 = args[1];
          D.48791->flags = 0;
          D.48791 = args[1];
          D.48791->type = 0;
          D.48791 = args[1];
          D.48791->dreg = -1;
          D.48791 = args[1];
          D.48791 = args[1];
          D.48791 = args[1];
          D.48791->sreg3 = -1;
          D.48794 = D.48791->sreg3;
          D.48791->sreg2 = D.48794;
          D.48795 = D.48791->sreg2;
          D.48791->sreg1 = D.48795;
          D.48791 = args[1];
          D.48796 = cfg->ip;
          D.48791->cil_code = D.48796;
          D.48791 = args[1];
          D.48797 = alloc_preg (cfg);
          D.48798 = (int) D.48797;
          D.48791->dreg = D.48798;
          D.48791 = args[1];
          D.48799 = cache_ins->dreg;
          D.48791->sreg1 = D.48799;
          D.48791 = args[1];
          D.48791->data.op[0].const_val = 4;
          D.48791 = args[1];
          D.48791->type = 1;
          D.48800 = cfg->cbb;
          D.48801 = D.48800->last_ins;
          if (D.48801 != 0B) goto <D.48802>; else goto <D.48803>;
          <D.48802>:
          D.48800 = cfg->cbb;
          D.48801 = D.48800->last_ins;
          D.48791 = args[1];
          D.48801->next = D.48791;
          D.48791 = args[1];
          D.48800 = cfg->cbb;
          D.48801 = D.48800->last_ins;
          D.48791->prev = D.48801;
          D.48800 = cfg->cbb;
          D.48791 = args[1];
          D.48800->last_ins = D.48791;
          goto <D.48804>;
          <D.48803>:
          D.48800 = cfg->cbb;
          D.48800 = cfg->cbb;
          D.48791 = args[1];
          D.48800->last_ins = D.48791;
          D.48801 = D.48800->last_ins;
          D.48800->code = D.48801;
          <D.48804>:
          args[2] = cache_ins;
          D.48805 = mono_emit_method_call (cfg, mono_castclass, &args, 0B);
          return D.48805;
        }
        <D.48788>:
        klass_inst = emit_get_rgctx_klass (cfg, context_used, klass, 1);
      }
    finally
      {
        args = {CLOBBER};
      }
  }
  <D.48786>:
  D.48789 = cfg->mempool;
  is_null_bb = mono_mempool_alloc0 (D.48789, 172);
  D.48806 = cfg->num_bblocks;
  D.48807 = D.48806;
  D.48808 = D.48807 + 1;
  cfg->num_bblocks = D.48808;
  D.48809 = (int) D.48807;
  is_null_bb->block_num = D.48809;
  {
    struct MonoInst * inst;

    D.48789 = cfg->mempool;
    inst = mono_mempool_alloc (D.48789, 48);
    inst->data.op[1].const_val = 0;
    D.48810 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.48810;
    inst->prev = 0B;
    D.48811 = inst->prev;
    inst->next = D.48811;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.48812 = inst->sreg3;
    inst->sreg2 = D.48812;
    D.48813 = inst->sreg2;
    inst->sreg1 = D.48813;
    D.48796 = cfg->ip;
    inst->cil_code = D.48796;
    inst->dreg = -1;
    inst->sreg1 = obj_reg;
    inst->data.op[1].const_val = 0;
    D.48800 = cfg->cbb;
    D.48801 = D.48800->last_ins;
    if (D.48801 != 0B) goto <D.48814>; else goto <D.48815>;
    <D.48814>:
    D.48800 = cfg->cbb;
    D.48801 = D.48800->last_ins;
    D.48801->next = inst;
    D.48800 = cfg->cbb;
    D.48801 = D.48800->last_ins;
    inst->prev = D.48801;
    D.48800 = cfg->cbb;
    D.48800->last_ins = inst;
    goto <D.48816>;
    <D.48815>:
    D.48800 = cfg->cbb;
    D.48800 = cfg->cbb;
    D.48800->last_ins = inst;
    D.48801 = D.48800->last_ins;
    D.48800->code = D.48801;
    <D.48816>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.48789 = cfg->mempool;
    ins = mono_mempool_alloc (D.48789, 48);
    ins->data.op[1].const_val = 0;
    D.48817 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.48817;
    ins->prev = 0B;
    D.48818 = ins->prev;
    ins->next = D.48818;
    ins->opcode = 652;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.48819 = ins->sreg3;
    ins->sreg2 = D.48819;
    D.48820 = ins->sreg2;
    ins->sreg1 = D.48820;
    D.48796 = cfg->ip;
    ins->cil_code = D.48796;
    if (0 != 0) goto <D.48821>; else goto <D.48822>;
    <D.48821>:
    D.48789 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.48789, 172);
    D.48806 = cfg->num_bblocks;
    D.48823 = D.48806;
    D.48824 = D.48823 + 1;
    cfg->num_bblocks = D.48824;
    D.48825 = (int) D.48823;
    falsebb->block_num = D.48825;
    ins->data.op[0].target_block = is_null_bb;
    D.48800 = cfg->cbb;
    mono_link_bblock (cfg, D.48800, is_null_bb);
    D.48800 = cfg->cbb;
    D.48801 = D.48800->last_ins;
    if (D.48801 != 0B) goto <D.48826>; else goto <D.48827>;
    <D.48826>:
    D.48800 = cfg->cbb;
    D.48801 = D.48800->last_ins;
    D.48801->next = ins;
    D.48800 = cfg->cbb;
    D.48801 = D.48800->last_ins;
    ins->prev = D.48801;
    D.48800 = cfg->cbb;
    D.48800->last_ins = ins;
    goto <D.48828>;
    <D.48827>:
    D.48800 = cfg->cbb;
    D.48800 = cfg->cbb;
    D.48800->last_ins = ins;
    D.48801 = D.48800->last_ins;
    D.48800->code = D.48801;
    <D.48828>:
    D.48829 = falsebb->cil_code;
    if (D.48829 != 0B) goto <D.48830>; else goto <D.48831>;
    <D.48830>:
    D.48832 = cfg->cil_offset_to_bb;
    D.48829 = falsebb->cil_code;
    D.48833 = (int) D.48829;
    D.48834 = cfg->cil_start;
    D.48835 = (int) D.48834;
    D.48836 = D.48833 - D.48835;
    D.48837 = (unsigned int) D.48836;
    D.48838 = D.48837 * 4;
    D.48839 = D.48832 + D.48838;
    *D.48839 = falsebb;
    <D.48831>:
    D.48840 = cfg->real_offset;
    falsebb->real_offset = D.48840;
    D.48800 = cfg->cbb;
    D.48801 = D.48800->last_ins;
    if (D.48801 != 0B) goto <D.48844>; else goto <D.48841>;
    <D.48844>:
    D.48800 = cfg->cbb;
    D.48801 = D.48800->last_ins;
    D.48845 = D.48801->opcode;
    D.48846 = D.48845 + 64981;
    D.48847 = D.48846 <= 9;
    D.48848 = D.48845 + 64874;
    D.48849 = D.48848 <= 9;
    D.48850 = D.48847 | D.48849;
    if (D.48850 != 0) goto <D.48842>; else goto <D.48851>;
    <D.48851>:
    D.48800 = cfg->cbb;
    D.48801 = D.48800->last_ins;
    D.48852 = D.48801->opcode;
    D.48853 = D.48852 + 64884;
    if (D.48853 <= 9) goto <D.48842>; else goto <D.48841>;
    <D.48842>:
    D.48800 = cfg->cbb;
    D.48801 = D.48800->last_ins;
    D.48854 = D.48801->data.op[1].many_blocks;
    D.48855 = D.48854 + 4;
    D.48856 = *D.48855;
    if (D.48856 == 0B) goto <D.48857>; else goto <D.48841>;
    <D.48857>:
    D.48800 = cfg->cbb;
    D.48801 = D.48800->last_ins;
    D.48854 = D.48801->data.op[1].many_blocks;
    D.48855 = D.48854 + 4;
    *D.48855 = falsebb;
    D.48800 = cfg->cbb;
    mono_link_bblock (cfg, D.48800, falsebb);
    goto <D.48843>;
    <D.48841>:
    D.48800 = cfg->cbb;
    D.48801 = D.48800->last_ins;
    if (D.48801 == 0B) goto <D.48858>; else goto <D.48860>;
    <D.48860>:
    D.48800 = cfg->cbb;
    D.48801 = D.48800->last_ins;
    D.48861 = D.48801->opcode;
    D.48862 = D.48861 != 446;
    D.48863 = D.48861 != 763;
    D.48864 = D.48862 & D.48863;
    if (D.48864 != 0) goto <D.48865>; else goto <D.48859>;
    <D.48865>:
    D.48800 = cfg->cbb;
    D.48801 = D.48800->last_ins;
    D.48866 = D.48801->opcode;
    D.48867 = D.48866 + 64981;
    D.48868 = D.48867 > 9;
    D.48869 = D.48866 + 64874;
    D.48870 = D.48869 > 9;
    D.48871 = D.48868 & D.48870;
    if (D.48871 != 0) goto <D.48872>; else goto <D.48859>;
    <D.48872>:
    D.48800 = cfg->cbb;
    D.48801 = D.48800->last_ins;
    D.48852 = D.48801->opcode;
    D.48853 = D.48852 + 64884;
    if (D.48853 > 9) goto <D.48858>; else goto <D.48859>;
    <D.48858>:
    D.48800 = cfg->cbb;
    mono_link_bblock (cfg, D.48800, falsebb);
    <D.48859>:
    <D.48843>:
    D.48800 = cfg->cbb;
    D.48800->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.48873>;
    <D.48822>:
    D.48789 = cfg->mempool;
    D.48874 = mono_mempool_alloc (D.48789, 8);
    ins->data.op[1].many_blocks = D.48874;
    D.48875 = ins->data.op[1].many_blocks;
    *D.48875 = is_null_bb;
    D.48875 = ins->data.op[1].many_blocks;
    D.48876 = D.48875 + 4;
    *D.48876 = 0B;
    D.48800 = cfg->cbb;
    mono_link_bblock (cfg, D.48800, is_null_bb);
    D.48800 = cfg->cbb;
    D.48801 = D.48800->last_ins;
    if (D.48801 != 0B) goto <D.48877>; else goto <D.48878>;
    <D.48877>:
    D.48800 = cfg->cbb;
    D.48801 = D.48800->last_ins;
    D.48801->next = ins;
    D.48800 = cfg->cbb;
    D.48801 = D.48800->last_ins;
    ins->prev = D.48801;
    D.48800 = cfg->cbb;
    D.48800->last_ins = ins;
    goto <D.48879>;
    <D.48878>:
    D.48800 = cfg->cbb;
    D.48800 = cfg->cbb;
    D.48800->last_ins = ins;
    D.48801 = D.48800->last_ins;
    D.48800->code = D.48801;
    <D.48879>:
    D.48880 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.48881 = D.48880 & 8;
    if (D.48881 == 0) goto <D.48882>; else goto <D.48883>;
    <D.48882>:
    D.48789 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.48789, 172);
    D.48806 = cfg->num_bblocks;
    D.48884 = D.48806;
    D.48885 = D.48884 + 1;
    cfg->num_bblocks = D.48885;
    D.48886 = (int) D.48884;
    falsebb->block_num = D.48886;
    D.48875 = ins->data.op[1].many_blocks;
    D.48876 = D.48875 + 4;
    *D.48876 = falsebb;
    D.48800 = cfg->cbb;
    mono_link_bblock (cfg, D.48800, falsebb);
    D.48829 = falsebb->cil_code;
    if (D.48829 != 0B) goto <D.48887>; else goto <D.48888>;
    <D.48887>:
    D.48832 = cfg->cil_offset_to_bb;
    D.48829 = falsebb->cil_code;
    D.48833 = (int) D.48829;
    D.48834 = cfg->cil_start;
    D.48835 = (int) D.48834;
    D.48836 = D.48833 - D.48835;
    D.48837 = (unsigned int) D.48836;
    D.48838 = D.48837 * 4;
    D.48839 = D.48832 + D.48838;
    *D.48839 = falsebb;
    <D.48888>:
    D.48840 = cfg->real_offset;
    falsebb->real_offset = D.48840;
    D.48800 = cfg->cbb;
    D.48801 = D.48800->last_ins;
    if (D.48801 != 0B) goto <D.48892>; else goto <D.48889>;
    <D.48892>:
    D.48800 = cfg->cbb;
    D.48801 = D.48800->last_ins;
    D.48893 = D.48801->opcode;
    D.48894 = D.48893 + 64981;
    D.48895 = D.48894 <= 9;
    D.48896 = D.48893 + 64874;
    D.48897 = D.48896 <= 9;
    D.48898 = D.48895 | D.48897;
    if (D.48898 != 0) goto <D.48890>; else goto <D.48899>;
    <D.48899>:
    D.48800 = cfg->cbb;
    D.48801 = D.48800->last_ins;
    D.48852 = D.48801->opcode;
    D.48853 = D.48852 + 64884;
    if (D.48853 <= 9) goto <D.48890>; else goto <D.48889>;
    <D.48890>:
    D.48800 = cfg->cbb;
    D.48801 = D.48800->last_ins;
    D.48854 = D.48801->data.op[1].many_blocks;
    D.48855 = D.48854 + 4;
    D.48856 = *D.48855;
    if (D.48856 == 0B) goto <D.48900>; else goto <D.48889>;
    <D.48900>:
    D.48800 = cfg->cbb;
    D.48801 = D.48800->last_ins;
    D.48854 = D.48801->data.op[1].many_blocks;
    D.48855 = D.48854 + 4;
    *D.48855 = falsebb;
    D.48800 = cfg->cbb;
    mono_link_bblock (cfg, D.48800, falsebb);
    goto <D.48891>;
    <D.48889>:
    D.48800 = cfg->cbb;
    D.48801 = D.48800->last_ins;
    if (D.48801 == 0B) goto <D.48901>; else goto <D.48903>;
    <D.48903>:
    D.48800 = cfg->cbb;
    D.48801 = D.48800->last_ins;
    D.48904 = D.48801->opcode;
    D.48905 = D.48904 != 446;
    D.48906 = D.48904 != 763;
    D.48907 = D.48905 & D.48906;
    if (D.48907 != 0) goto <D.48908>; else goto <D.48902>;
    <D.48908>:
    D.48800 = cfg->cbb;
    D.48801 = D.48800->last_ins;
    D.48909 = D.48801->opcode;
    D.48910 = D.48909 + 64981;
    D.48911 = D.48910 > 9;
    D.48912 = D.48909 + 64874;
    D.48913 = D.48912 > 9;
    D.48914 = D.48911 & D.48913;
    if (D.48914 != 0) goto <D.48915>; else goto <D.48902>;
    <D.48915>:
    D.48800 = cfg->cbb;
    D.48801 = D.48800->last_ins;
    D.48852 = D.48801->opcode;
    D.48853 = D.48852 + 64884;
    if (D.48853 > 9) goto <D.48901>; else goto <D.48902>;
    <D.48901>:
    D.48800 = cfg->cbb;
    mono_link_bblock (cfg, D.48800, falsebb);
    <D.48902>:
    <D.48891>:
    D.48800 = cfg->cbb;
    D.48800->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.48916>;
    <D.48883>:
    D.48800 = cfg->cbb;
    D.48800->extended = 1;
    <D.48916>:
    <D.48873>:
  }
  save_cast_details (cfg, klass, obj_reg, 0, 0B);
  D.48917 = klass->flags;
  D.48918 = D.48917 & 32;
  if (D.48918 != 0) goto <D.48919>; else goto <D.48920>;
  <D.48919>:
  {
    struct MonoInst * inst;

    D.48789 = cfg->mempool;
    inst = mono_mempool_alloc (D.48789, 48);
    inst->data.op[1].const_val = 0;
    D.48921 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.48921;
    inst->prev = 0B;
    D.48922 = inst->prev;
    inst->next = D.48922;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.48923 = inst->sreg3;
    inst->sreg2 = D.48923;
    D.48924 = inst->sreg2;
    inst->sreg1 = D.48924;
    D.48796 = cfg->ip;
    inst->cil_code = D.48796;
    inst->dreg = vtable_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 0;
    D.48800 = cfg->cbb;
    D.48801 = D.48800->last_ins;
    if (D.48801 != 0B) goto <D.48925>; else goto <D.48926>;
    <D.48925>:
    D.48800 = cfg->cbb;
    D.48801 = D.48800->last_ins;
    D.48801->next = inst;
    D.48800 = cfg->cbb;
    D.48801 = D.48800->last_ins;
    inst->prev = D.48801;
    D.48800 = cfg->cbb;
    D.48800->last_ins = inst;
    goto <D.48927>;
    <D.48926>:
    D.48800 = cfg->cbb;
    D.48800 = cfg->cbb;
    D.48800->last_ins = inst;
    D.48801 = D.48800->last_ins;
    D.48800->code = D.48801;
    <D.48927>:
  }
  mini_emit_iface_cast (cfg, vtable_reg, klass, 0B, 0B);
  goto <D.48928>;
  <D.48920>:
  {
    int klass_reg;

    D.48929 = alloc_preg (cfg);
    klass_reg = (int) D.48929;
    {
      struct MonoInst * inst;

      D.48789 = cfg->mempool;
      inst = mono_mempool_alloc (D.48789, 48);
      inst->data.op[1].const_val = 0;
      D.48930 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48930;
      inst->prev = 0B;
      D.48931 = inst->prev;
      inst->next = D.48931;
      inst->opcode = 391;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48932 = inst->sreg3;
      inst->sreg2 = D.48932;
      D.48933 = inst->sreg2;
      inst->sreg1 = D.48933;
      D.48796 = cfg->ip;
      inst->cil_code = D.48796;
      inst->dreg = vtable_reg;
      inst->sreg1 = obj_reg;
      inst->data.op[0].const_val = 0;
      D.48800 = cfg->cbb;
      D.48801 = D.48800->last_ins;
      if (D.48801 != 0B) goto <D.48934>; else goto <D.48935>;
      <D.48934>:
      D.48800 = cfg->cbb;
      D.48801 = D.48800->last_ins;
      D.48801->next = inst;
      D.48800 = cfg->cbb;
      D.48801 = D.48800->last_ins;
      inst->prev = D.48801;
      D.48800 = cfg->cbb;
      D.48800->last_ins = inst;
      goto <D.48936>;
      <D.48935>:
      D.48800 = cfg->cbb;
      D.48800 = cfg->cbb;
      D.48800->last_ins = inst;
      D.48801 = D.48800->last_ins;
      D.48800->code = D.48801;
      <D.48936>:
    }
    D.48939 = klass->rank;
    if (D.48939 == 0) goto <D.48940>; else goto <D.48937>;
    <D.48940>:
    D.48880 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.48941 = D.48880 & 64;
    if (D.48941 == 0) goto <D.48942>; else goto <D.48937>;
    <D.48942>:
    D.48943 = cfg->opt;
    D.48944 = D.48943 & 512;
    if (D.48944 == 0) goto <D.48945>; else goto <D.48937>;
    <D.48945>:
    D.48917 = klass->flags;
    D.48946 = D.48917 & 256;
    if (D.48946 != 0) goto <D.48947>; else goto <D.48937>;
    <D.48947>:
    if (0 != 0) goto <D.48948>; else goto <D.48949>;
    <D.48948>:
    {
      struct MonoVTable * vt;

      D.48950 = cfg->domain;
      vt = mono_class_vtable (D.48950, klass);
      if (vt == 0B) goto <D.48951>; else goto <D.48952>;
      <D.48951>:
      mono_cfg_set_exception (cfg, 7);
      cfg->exception_ptr = klass;
      D.48805 = 0B;
      return D.48805;
      <D.48952>:
      {
        struct MonoInst * inst;

        D.48789 = cfg->mempool;
        inst = mono_mempool_alloc (D.48789, 48);
        inst->data.op[1].const_val = 0;
        D.48953 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.48953;
        inst->prev = 0B;
        D.48954 = inst->prev;
        inst->next = D.48954;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.48955 = inst->sreg3;
        inst->sreg2 = D.48955;
        D.48956 = inst->sreg2;
        inst->sreg1 = D.48956;
        D.48796 = cfg->ip;
        inst->cil_code = D.48796;
        inst->dreg = -1;
        inst->sreg1 = vtable_reg;
        vt.503 = (int) vt;
        inst->data.op[1].const_val = vt.503;
        D.48800 = cfg->cbb;
        D.48801 = D.48800->last_ins;
        if (D.48801 != 0B) goto <D.48958>; else goto <D.48959>;
        <D.48958>:
        D.48800 = cfg->cbb;
        D.48801 = D.48800->last_ins;
        D.48801->next = inst;
        D.48800 = cfg->cbb;
        D.48801 = D.48800->last_ins;
        inst->prev = D.48801;
        D.48800 = cfg->cbb;
        D.48800->last_ins = inst;
        goto <D.48960>;
        <D.48959>:
        D.48800 = cfg->cbb;
        D.48800 = cfg->cbb;
        D.48800->last_ins = inst;
        D.48801 = D.48800->last_ins;
        D.48800->code = D.48801;
        <D.48960>:
      }
    }
    goto <D.48961>;
    <D.48949>:
    {
      struct MonoInst * inst;

      D.48789 = cfg->mempool;
      inst = mono_mempool_alloc (D.48789, 48);
      inst->data.op[1].const_val = 0;
      D.48962 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48962;
      inst->prev = 0B;
      D.48963 = inst->prev;
      inst->next = D.48963;
      inst->opcode = 391;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48964 = inst->sreg3;
      inst->sreg2 = D.48964;
      D.48965 = inst->sreg2;
      inst->sreg1 = D.48965;
      D.48796 = cfg->ip;
      inst->cil_code = D.48796;
      inst->dreg = klass_reg;
      inst->sreg1 = vtable_reg;
      inst->data.op[0].const_val = 0;
      D.48800 = cfg->cbb;
      D.48801 = D.48800->last_ins;
      if (D.48801 != 0B) goto <D.48966>; else goto <D.48967>;
      <D.48966>:
      D.48800 = cfg->cbb;
      D.48801 = D.48800->last_ins;
      D.48801->next = inst;
      D.48800 = cfg->cbb;
      D.48801 = D.48800->last_ins;
      inst->prev = D.48801;
      D.48800 = cfg->cbb;
      D.48800->last_ins = inst;
      goto <D.48968>;
      <D.48967>:
      D.48800 = cfg->cbb;
      D.48800 = cfg->cbb;
      D.48800->last_ins = inst;
      D.48801 = D.48800->last_ins;
      D.48800->code = D.48801;
      <D.48968>:
    }
    {
      struct MonoInst * inst;

      D.48789 = cfg->mempool;
      inst = mono_mempool_alloc (D.48789, 48);
      inst->data.op[1].const_val = 0;
      D.48969 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48969;
      inst->prev = 0B;
      D.48970 = inst->prev;
      inst->next = D.48970;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48971 = inst->sreg3;
      inst->sreg2 = D.48971;
      D.48972 = inst->sreg2;
      inst->sreg1 = D.48972;
      D.48796 = cfg->ip;
      inst->cil_code = D.48796;
      inst->dreg = -1;
      inst->sreg1 = klass_reg;
      klass.504 = (int) klass;
      inst->data.op[1].const_val = klass.504;
      D.48800 = cfg->cbb;
      D.48801 = D.48800->last_ins;
      if (D.48801 != 0B) goto <D.48974>; else goto <D.48975>;
      <D.48974>:
      D.48800 = cfg->cbb;
      D.48801 = D.48800->last_ins;
      D.48801->next = inst;
      D.48800 = cfg->cbb;
      D.48801 = D.48800->last_ins;
      inst->prev = D.48801;
      D.48800 = cfg->cbb;
      D.48800->last_ins = inst;
      goto <D.48976>;
      <D.48975>:
      D.48800 = cfg->cbb;
      D.48800 = cfg->cbb;
      D.48800->last_ins = inst;
      D.48801 = D.48800->last_ins;
      D.48800->code = D.48801;
      <D.48976>:
    }
    <D.48961>:
    {
      struct MonoInst * inst;

      D.48789 = cfg->mempool;
      inst = mono_mempool_alloc (D.48789, 48);
      inst->data.op[1].const_val = 0;
      D.48977 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48977;
      inst->prev = 0B;
      D.48978 = inst->prev;
      inst->next = D.48978;
      inst->opcode = 460;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48979 = inst->sreg3;
      inst->sreg2 = D.48979;
      D.48980 = inst->sreg2;
      inst->sreg1 = D.48980;
      D.48796 = cfg->ip;
      inst->cil_code = D.48796;
      inst->data.op[1].p = "InvalidCastException";
      D.48800 = cfg->cbb;
      D.48801 = D.48800->last_ins;
      if (D.48801 != 0B) goto <D.48981>; else goto <D.48982>;
      <D.48981>:
      D.48800 = cfg->cbb;
      D.48801 = D.48800->last_ins;
      D.48801->next = inst;
      D.48800 = cfg->cbb;
      D.48801 = D.48800->last_ins;
      inst->prev = D.48801;
      D.48800 = cfg->cbb;
      D.48800->last_ins = inst;
      goto <D.48983>;
      <D.48982>:
      D.48800 = cfg->cbb;
      D.48800 = cfg->cbb;
      D.48800->last_ins = inst;
      D.48801 = D.48800->last_ins;
      D.48800->code = D.48801;
      <D.48983>:
    }
    goto <D.48938>;
    <D.48937>:
    {
      struct MonoInst * inst;

      D.48789 = cfg->mempool;
      inst = mono_mempool_alloc (D.48789, 48);
      inst->data.op[1].const_val = 0;
      D.48984 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48984;
      inst->prev = 0B;
      D.48985 = inst->prev;
      inst->next = D.48985;
      inst->opcode = 391;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48986 = inst->sreg3;
      inst->sreg2 = D.48986;
      D.48987 = inst->sreg2;
      inst->sreg1 = D.48987;
      D.48796 = cfg->ip;
      inst->cil_code = D.48796;
      inst->dreg = klass_reg;
      inst->sreg1 = vtable_reg;
      inst->data.op[0].const_val = 0;
      D.48800 = cfg->cbb;
      D.48801 = D.48800->last_ins;
      if (D.48801 != 0B) goto <D.48988>; else goto <D.48989>;
      <D.48988>:
      D.48800 = cfg->cbb;
      D.48801 = D.48800->last_ins;
      D.48801->next = inst;
      D.48800 = cfg->cbb;
      D.48801 = D.48800->last_ins;
      inst->prev = D.48801;
      D.48800 = cfg->cbb;
      D.48800->last_ins = inst;
      goto <D.48990>;
      <D.48989>:
      D.48800 = cfg->cbb;
      D.48800 = cfg->cbb;
      D.48800->last_ins = inst;
      D.48801 = D.48800->last_ins;
      D.48800->code = D.48801;
      <D.48990>:
    }
    mini_emit_castclass_inst (cfg, obj_reg, klass_reg, klass, klass_inst, is_null_bb);
    <D.48938>:
  }
  <D.48928>:
  D.48991 = is_null_bb->cil_code;
  if (D.48991 != 0B) goto <D.48992>; else goto <D.48993>;
  <D.48992>:
  D.48832 = cfg->cil_offset_to_bb;
  D.48991 = is_null_bb->cil_code;
  D.48994 = (int) D.48991;
  D.48834 = cfg->cil_start;
  D.48835 = (int) D.48834;
  D.48995 = D.48994 - D.48835;
  D.48996 = (unsigned int) D.48995;
  D.48997 = D.48996 * 4;
  D.48998 = D.48832 + D.48997;
  *D.48998 = is_null_bb;
  <D.48993>:
  D.48840 = cfg->real_offset;
  is_null_bb->real_offset = D.48840;
  D.48800 = cfg->cbb;
  D.48801 = D.48800->last_ins;
  if (D.48801 != 0B) goto <D.49002>; else goto <D.48999>;
  <D.49002>:
  D.48800 = cfg->cbb;
  D.48801 = D.48800->last_ins;
  D.49003 = D.48801->opcode;
  D.49004 = D.49003 + 64981;
  D.49005 = D.49004 <= 9;
  D.49006 = D.49003 + 64874;
  D.49007 = D.49006 <= 9;
  D.49008 = D.49005 | D.49007;
  if (D.49008 != 0) goto <D.49000>; else goto <D.49009>;
  <D.49009>:
  D.48800 = cfg->cbb;
  D.48801 = D.48800->last_ins;
  D.48852 = D.48801->opcode;
  D.48853 = D.48852 + 64884;
  if (D.48853 <= 9) goto <D.49000>; else goto <D.48999>;
  <D.49000>:
  D.48800 = cfg->cbb;
  D.48801 = D.48800->last_ins;
  D.48854 = D.48801->data.op[1].many_blocks;
  D.48855 = D.48854 + 4;
  D.48856 = *D.48855;
  if (D.48856 == 0B) goto <D.49010>; else goto <D.48999>;
  <D.49010>:
  D.48800 = cfg->cbb;
  D.48801 = D.48800->last_ins;
  D.48854 = D.48801->data.op[1].many_blocks;
  D.48855 = D.48854 + 4;
  *D.48855 = is_null_bb;
  D.48800 = cfg->cbb;
  mono_link_bblock (cfg, D.48800, is_null_bb);
  goto <D.49001>;
  <D.48999>:
  D.48800 = cfg->cbb;
  D.48801 = D.48800->last_ins;
  if (D.48801 == 0B) goto <D.49011>; else goto <D.49013>;
  <D.49013>:
  D.48800 = cfg->cbb;
  D.48801 = D.48800->last_ins;
  D.49014 = D.48801->opcode;
  D.49015 = D.49014 != 446;
  D.49016 = D.49014 != 763;
  D.49017 = D.49015 & D.49016;
  if (D.49017 != 0) goto <D.49018>; else goto <D.49012>;
  <D.49018>:
  D.48800 = cfg->cbb;
  D.48801 = D.48800->last_ins;
  D.49019 = D.48801->opcode;
  D.49020 = D.49019 + 64981;
  D.49021 = D.49020 > 9;
  D.49022 = D.49019 + 64874;
  D.49023 = D.49022 > 9;
  D.49024 = D.49021 & D.49023;
  if (D.49024 != 0) goto <D.49025>; else goto <D.49012>;
  <D.49025>:
  D.48800 = cfg->cbb;
  D.48801 = D.48800->last_ins;
  D.48852 = D.48801->opcode;
  D.48853 = D.48852 + 64884;
  if (D.48853 > 9) goto <D.49011>; else goto <D.49012>;
  <D.49011>:
  D.48800 = cfg->cbb;
  mono_link_bblock (cfg, D.48800, is_null_bb);
  <D.49012>:
  <D.49001>:
  D.48800 = cfg->cbb;
  D.48800->next_bb = is_null_bb;
  cfg->cbb = is_null_bb;
  reset_cast_details (cfg);
  D.48805 = src;
  return D.48805;
}


mini_emit_castclass_inst (struct MonoCompile * cfg, int obj_reg, int klass_reg, struct MonoClass * klass, struct MonoInst * klass_inst, struct MonoBasicBlock * object_is_null)
{
  unsigned char D.49029;
  unsigned int D.49032;
  unsigned int D.49033;
  _Bool D.49034;
  long int D.49035;
  long int D.49036;
  struct MonoMemPool * D.49039;
  int D.49040;
  struct MonoInst * D.49041;
  int D.49042;
  int D.49043;
  const unsigned char * D.49044;
  struct MonoBasicBlock * D.49045;
  struct MonoInst * D.49046;
  int D.49050;
  struct MonoInst * D.49051;
  int D.49052;
  int D.49053;
  int D.49054;
  int D.49058;
  struct MonoInst * D.49059;
  int D.49060;
  int D.49061;
  int D.49065;
  struct MonoInst * D.49066;
  int D.49067;
  int D.49068;
  struct MonoClass * D.49072;
  struct MonoClass * D.49073;
  unsigned int D.49076;
  int D.49077;
  struct MonoInst * D.49078;
  int D.49079;
  int D.49080;
  struct MonoClass * D.49084;
  struct MonoClass * D.49085;
  unsigned int D.49093;
  unsigned int D.49094;
  unsigned char D.49100;
  unsigned int D.49105;
  int D.49106;
  struct MonoInst * D.49107;
  int D.49108;
  int D.49109;
  int D.49113;
  struct MonoInst * D.49114;
  int D.49115;
  int D.49116;
  int D.49120;
  struct MonoInst * D.49121;
  int D.49122;
  int D.49123;
  unsigned int D.49128;
  unsigned int D.49129;
  unsigned int D.49130;
  short unsigned int D.49131;
  int D.49134;
  struct MonoInst * D.49135;
  int D.49136;
  int D.49137;
  int D.49141;
  struct MonoInst * D.49142;
  int D.49143;
  int D.49144;
  int D.49145;
  int D.49149;
  struct MonoInst * D.49150;
  int D.49151;
  int D.49152;
  int D.49156;
  struct MonoInst * D.49157;
  int D.49158;
  int D.49159;
  int D.49163;
  struct MonoInst * D.49164;
  int D.49165;
  int D.49166;
  int D.49167;
  int D.49168;

  D.49029 = klass->rank;
  if (D.49029 != 0) goto <D.49030>; else goto <D.49031>;
  <D.49030>:
  {
    int rank_reg;
    int eclass_reg;

    D.49032 = alloc_preg (cfg);
    rank_reg = (int) D.49032;
    D.49033 = alloc_preg (cfg);
    eclass_reg = (int) D.49033;
    D.49034 = klass_inst != 0B;
    D.49035 = (long int) D.49034;
    D.49036 = __builtin_expect (D.49035, 0);
    if (D.49036 != 0) goto <D.49037>; else goto <D.49038>;
    <D.49037>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1685, "!klass_inst");
    <D.49038>:
    {
      struct MonoInst * inst;

      D.49039 = cfg->mempool;
      inst = mono_mempool_alloc (D.49039, 48);
      inst->data.op[1].const_val = 0;
      D.49040 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.49040;
      inst->prev = 0B;
      D.49041 = inst->prev;
      inst->next = D.49041;
      inst->opcode = 393;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.49042 = inst->sreg3;
      inst->sreg2 = D.49042;
      D.49043 = inst->sreg2;
      inst->sreg1 = D.49043;
      D.49044 = cfg->ip;
      inst->cil_code = D.49044;
      inst->dreg = rank_reg;
      inst->sreg1 = klass_reg;
      inst->data.op[0].const_val = 14;
      D.49045 = cfg->cbb;
      D.49046 = D.49045->last_ins;
      if (D.49046 != 0B) goto <D.49047>; else goto <D.49048>;
      <D.49047>:
      D.49045 = cfg->cbb;
      D.49046 = D.49045->last_ins;
      D.49046->next = inst;
      D.49045 = cfg->cbb;
      D.49046 = D.49045->last_ins;
      inst->prev = D.49046;
      D.49045 = cfg->cbb;
      D.49045->last_ins = inst;
      goto <D.49049>;
      <D.49048>:
      D.49045 = cfg->cbb;
      D.49045 = cfg->cbb;
      D.49045->last_ins = inst;
      D.49046 = D.49045->last_ins;
      D.49045->code = D.49046;
      <D.49049>:
    }
    {
      struct MonoInst * inst;

      D.49039 = cfg->mempool;
      inst = mono_mempool_alloc (D.49039, 48);
      inst->data.op[1].const_val = 0;
      D.49050 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.49050;
      inst->prev = 0B;
      D.49051 = inst->prev;
      inst->next = D.49051;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.49052 = inst->sreg3;
      inst->sreg2 = D.49052;
      D.49053 = inst->sreg2;
      inst->sreg1 = D.49053;
      D.49044 = cfg->ip;
      inst->cil_code = D.49044;
      inst->dreg = -1;
      inst->sreg1 = rank_reg;
      D.49029 = klass->rank;
      D.49054 = (int) D.49029;
      inst->data.op[1].const_val = D.49054;
      D.49045 = cfg->cbb;
      D.49046 = D.49045->last_ins;
      if (D.49046 != 0B) goto <D.49055>; else goto <D.49056>;
      <D.49055>:
      D.49045 = cfg->cbb;
      D.49046 = D.49045->last_ins;
      D.49046->next = inst;
      D.49045 = cfg->cbb;
      D.49046 = D.49045->last_ins;
      inst->prev = D.49046;
      D.49045 = cfg->cbb;
      D.49045->last_ins = inst;
      goto <D.49057>;
      <D.49056>:
      D.49045 = cfg->cbb;
      D.49045 = cfg->cbb;
      D.49045->last_ins = inst;
      D.49046 = D.49045->last_ins;
      D.49045->code = D.49046;
      <D.49057>:
    }
    {
      struct MonoInst * inst;

      D.49039 = cfg->mempool;
      inst = mono_mempool_alloc (D.49039, 48);
      inst->data.op[1].const_val = 0;
      D.49058 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.49058;
      inst->prev = 0B;
      D.49059 = inst->prev;
      inst->next = D.49059;
      inst->opcode = 460;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.49060 = inst->sreg3;
      inst->sreg2 = D.49060;
      D.49061 = inst->sreg2;
      inst->sreg1 = D.49061;
      D.49044 = cfg->ip;
      inst->cil_code = D.49044;
      inst->data.op[1].p = "InvalidCastException";
      D.49045 = cfg->cbb;
      D.49046 = D.49045->last_ins;
      if (D.49046 != 0B) goto <D.49062>; else goto <D.49063>;
      <D.49062>:
      D.49045 = cfg->cbb;
      D.49046 = D.49045->last_ins;
      D.49046->next = inst;
      D.49045 = cfg->cbb;
      D.49046 = D.49045->last_ins;
      inst->prev = D.49046;
      D.49045 = cfg->cbb;
      D.49045->last_ins = inst;
      goto <D.49064>;
      <D.49063>:
      D.49045 = cfg->cbb;
      D.49045 = cfg->cbb;
      D.49045->last_ins = inst;
      D.49046 = D.49045->last_ins;
      D.49045->code = D.49046;
      <D.49064>:
    }
    {
      struct MonoInst * inst;

      D.49039 = cfg->mempool;
      inst = mono_mempool_alloc (D.49039, 48);
      inst->data.op[1].const_val = 0;
      D.49065 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.49065;
      inst->prev = 0B;
      D.49066 = inst->prev;
      inst->next = D.49066;
      inst->opcode = 391;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.49067 = inst->sreg3;
      inst->sreg2 = D.49067;
      D.49068 = inst->sreg2;
      inst->sreg1 = D.49068;
      D.49044 = cfg->ip;
      inst->cil_code = D.49044;
      inst->dreg = eclass_reg;
      inst->sreg1 = klass_reg;
      inst->data.op[0].const_val = 4;
      D.49045 = cfg->cbb;
      D.49046 = D.49045->last_ins;
      if (D.49046 != 0B) goto <D.49069>; else goto <D.49070>;
      <D.49069>:
      D.49045 = cfg->cbb;
      D.49046 = D.49045->last_ins;
      D.49046->next = inst;
      D.49045 = cfg->cbb;
      D.49046 = D.49045->last_ins;
      inst->prev = D.49046;
      D.49045 = cfg->cbb;
      D.49045->last_ins = inst;
      goto <D.49071>;
      <D.49070>:
      D.49045 = cfg->cbb;
      D.49045 = cfg->cbb;
      D.49045->last_ins = inst;
      D.49046 = D.49045->last_ins;
      D.49045->code = D.49046;
      <D.49071>:
    }
    D.49072 = klass->cast_class;
    D.49073 = mono_defaults.object_class;
    if (D.49072 == D.49073) goto <D.49074>; else goto <D.49075>;
    <D.49074>:
    {
      int parent_reg;

      D.49076 = alloc_preg (cfg);
      parent_reg = (int) D.49076;
      {
        struct MonoInst * inst;

        D.49039 = cfg->mempool;
        inst = mono_mempool_alloc (D.49039, 48);
        inst->data.op[1].const_val = 0;
        D.49077 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.49077;
        inst->prev = 0B;
        D.49078 = inst->prev;
        inst->next = D.49078;
        inst->opcode = 391;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.49079 = inst->sreg3;
        inst->sreg2 = D.49079;
        D.49080 = inst->sreg2;
        inst->sreg1 = D.49080;
        D.49044 = cfg->ip;
        inst->cil_code = D.49044;
        inst->dreg = parent_reg;
        inst->sreg1 = eclass_reg;
        inst->data.op[0].const_val = 28;
        D.49045 = cfg->cbb;
        D.49046 = D.49045->last_ins;
        if (D.49046 != 0B) goto <D.49081>; else goto <D.49082>;
        <D.49081>:
        D.49045 = cfg->cbb;
        D.49046 = D.49045->last_ins;
        D.49046->next = inst;
        D.49045 = cfg->cbb;
        D.49046 = D.49045->last_ins;
        inst->prev = D.49046;
        D.49045 = cfg->cbb;
        D.49045->last_ins = inst;
        goto <D.49083>;
        <D.49082>:
        D.49045 = cfg->cbb;
        D.49045 = cfg->cbb;
        D.49045->last_ins = inst;
        D.49046 = D.49045->last_ins;
        D.49045->code = D.49046;
        <D.49083>:
      }
      D.49084 = mono_defaults.enum_class;
      D.49085 = D.49084->parent;
      mini_emit_class_check_branch (cfg, parent_reg, D.49085, 657, object_is_null);
      D.49084 = mono_defaults.enum_class;
      mini_emit_class_check (cfg, eclass_reg, D.49084);
    }
    goto <D.49086>;
    <D.49075>:
    D.49072 = klass->cast_class;
    D.49084 = mono_defaults.enum_class;
    D.49085 = D.49084->parent;
    if (D.49072 == D.49085) goto <D.49087>; else goto <D.49088>;
    <D.49087>:
    D.49084 = mono_defaults.enum_class;
    D.49085 = D.49084->parent;
    mini_emit_class_check_branch (cfg, eclass_reg, D.49085, 652, object_is_null);
    D.49084 = mono_defaults.enum_class;
    mini_emit_class_check (cfg, eclass_reg, D.49084);
    goto <D.49089>;
    <D.49088>:
    D.49072 = klass->cast_class;
    D.49084 = mono_defaults.enum_class;
    if (D.49072 == D.49084) goto <D.49090>; else goto <D.49091>;
    <D.49090>:
    D.49084 = mono_defaults.enum_class;
    mini_emit_class_check (cfg, eclass_reg, D.49084);
    goto <D.49092>;
    <D.49091>:
    D.49072 = klass->cast_class;
    D.49093 = D.49072->flags;
    D.49094 = D.49093 & 32;
    if (D.49094 != 0) goto <D.49095>; else goto <D.49096>;
    <D.49095>:
    D.49072 = klass->cast_class;
    mini_emit_iface_class_cast (cfg, eclass_reg, D.49072, 0B, 0B);
    goto <D.49097>;
    <D.49096>:
    D.49072 = klass->cast_class;
    mini_emit_castclass (cfg, -1, eclass_reg, D.49072, object_is_null);
    <D.49097>:
    <D.49092>:
    <D.49089>:
    <D.49086>:
    D.49029 = klass->rank;
    if (D.49029 == 1) goto <D.49098>; else goto <D.49099>;
    <D.49098>:
    D.49100 = klass->byval_arg.type;
    if (D.49100 == 29) goto <D.49101>; else goto <D.49102>;
    <D.49101>:
    if (obj_reg != -1) goto <D.49103>; else goto <D.49104>;
    <D.49103>:
    {
      int bounds_reg;

      D.49105 = alloc_preg (cfg);
      bounds_reg = (int) D.49105;
      {
        struct MonoInst * inst;

        D.49039 = cfg->mempool;
        inst = mono_mempool_alloc (D.49039, 48);
        inst->data.op[1].const_val = 0;
        D.49106 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.49106;
        inst->prev = 0B;
        D.49107 = inst->prev;
        inst->next = D.49107;
        inst->opcode = 391;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.49108 = inst->sreg3;
        inst->sreg2 = D.49108;
        D.49109 = inst->sreg2;
        inst->sreg1 = D.49109;
        D.49044 = cfg->ip;
        inst->cil_code = D.49044;
        inst->dreg = bounds_reg;
        inst->sreg1 = obj_reg;
        inst->data.op[0].const_val = 8;
        D.49045 = cfg->cbb;
        D.49046 = D.49045->last_ins;
        if (D.49046 != 0B) goto <D.49110>; else goto <D.49111>;
        <D.49110>:
        D.49045 = cfg->cbb;
        D.49046 = D.49045->last_ins;
        D.49046->next = inst;
        D.49045 = cfg->cbb;
        D.49046 = D.49045->last_ins;
        inst->prev = D.49046;
        D.49045 = cfg->cbb;
        D.49045->last_ins = inst;
        goto <D.49112>;
        <D.49111>:
        D.49045 = cfg->cbb;
        D.49045 = cfg->cbb;
        D.49045->last_ins = inst;
        D.49046 = D.49045->last_ins;
        D.49045->code = D.49046;
        <D.49112>:
      }
      {
        struct MonoInst * inst;

        D.49039 = cfg->mempool;
        inst = mono_mempool_alloc (D.49039, 48);
        inst->data.op[1].const_val = 0;
        D.49113 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.49113;
        inst->prev = 0B;
        D.49114 = inst->prev;
        inst->next = D.49114;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.49115 = inst->sreg3;
        inst->sreg2 = D.49115;
        D.49116 = inst->sreg2;
        inst->sreg1 = D.49116;
        D.49044 = cfg->ip;
        inst->cil_code = D.49044;
        inst->dreg = -1;
        inst->sreg1 = bounds_reg;
        inst->data.op[1].const_val = 0;
        D.49045 = cfg->cbb;
        D.49046 = D.49045->last_ins;
        if (D.49046 != 0B) goto <D.49117>; else goto <D.49118>;
        <D.49117>:
        D.49045 = cfg->cbb;
        D.49046 = D.49045->last_ins;
        D.49046->next = inst;
        D.49045 = cfg->cbb;
        D.49046 = D.49045->last_ins;
        inst->prev = D.49046;
        D.49045 = cfg->cbb;
        D.49045->last_ins = inst;
        goto <D.49119>;
        <D.49118>:
        D.49045 = cfg->cbb;
        D.49045 = cfg->cbb;
        D.49045->last_ins = inst;
        D.49046 = D.49045->last_ins;
        D.49045->code = D.49046;
        <D.49119>:
      }
      {
        struct MonoInst * inst;

        D.49039 = cfg->mempool;
        inst = mono_mempool_alloc (D.49039, 48);
        inst->data.op[1].const_val = 0;
        D.49120 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.49120;
        inst->prev = 0B;
        D.49121 = inst->prev;
        inst->next = D.49121;
        inst->opcode = 460;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.49122 = inst->sreg3;
        inst->sreg2 = D.49122;
        D.49123 = inst->sreg2;
        inst->sreg1 = D.49123;
        D.49044 = cfg->ip;
        inst->cil_code = D.49044;
        inst->data.op[1].p = "InvalidCastException";
        D.49045 = cfg->cbb;
        D.49046 = D.49045->last_ins;
        if (D.49046 != 0B) goto <D.49124>; else goto <D.49125>;
        <D.49124>:
        D.49045 = cfg->cbb;
        D.49046 = D.49045->last_ins;
        D.49046->next = inst;
        D.49045 = cfg->cbb;
        D.49046 = D.49045->last_ins;
        inst->prev = D.49046;
        D.49045 = cfg->cbb;
        D.49045->last_ins = inst;
        goto <D.49126>;
        <D.49125>:
        D.49045 = cfg->cbb;
        D.49045 = cfg->cbb;
        D.49045->last_ins = inst;
        D.49046 = D.49045->last_ins;
        D.49045->code = D.49046;
        <D.49126>:
      }
    }
    <D.49104>:
    <D.49102>:
    <D.49099>:
  }
  goto <D.49127>;
  <D.49031>:
  {
    int idepth_reg;
    int stypes_reg;
    int stype;

    D.49128 = alloc_preg (cfg);
    idepth_reg = (int) D.49128;
    D.49129 = alloc_preg (cfg);
    stypes_reg = (int) D.49129;
    D.49130 = alloc_preg (cfg);
    stype = (int) D.49130;
    mono_class_setup_supertypes (klass);
    D.49131 = klass->idepth;
    if (D.49131 > 6) goto <D.49132>; else goto <D.49133>;
    <D.49132>:
    {
      struct MonoInst * inst;

      D.49039 = cfg->mempool;
      inst = mono_mempool_alloc (D.49039, 48);
      inst->data.op[1].const_val = 0;
      D.49134 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.49134;
      inst->prev = 0B;
      D.49135 = inst->prev;
      inst->next = D.49135;
      inst->opcode = 395;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.49136 = inst->sreg3;
      inst->sreg2 = D.49136;
      D.49137 = inst->sreg2;
      inst->sreg1 = D.49137;
      D.49044 = cfg->ip;
      inst->cil_code = D.49044;
      inst->dreg = idepth_reg;
      inst->sreg1 = klass_reg;
      inst->data.op[0].const_val = 12;
      D.49045 = cfg->cbb;
      D.49046 = D.49045->last_ins;
      if (D.49046 != 0B) goto <D.49138>; else goto <D.49139>;
      <D.49138>:
      D.49045 = cfg->cbb;
      D.49046 = D.49045->last_ins;
      D.49046->next = inst;
      D.49045 = cfg->cbb;
      D.49046 = D.49045->last_ins;
      inst->prev = D.49046;
      D.49045 = cfg->cbb;
      D.49045->last_ins = inst;
      goto <D.49140>;
      <D.49139>:
      D.49045 = cfg->cbb;
      D.49045 = cfg->cbb;
      D.49045->last_ins = inst;
      D.49046 = D.49045->last_ins;
      D.49045->code = D.49046;
      <D.49140>:
    }
    {
      struct MonoInst * inst;

      D.49039 = cfg->mempool;
      inst = mono_mempool_alloc (D.49039, 48);
      inst->data.op[1].const_val = 0;
      D.49141 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.49141;
      inst->prev = 0B;
      D.49142 = inst->prev;
      inst->next = D.49142;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.49143 = inst->sreg3;
      inst->sreg2 = D.49143;
      D.49144 = inst->sreg2;
      inst->sreg1 = D.49144;
      D.49044 = cfg->ip;
      inst->cil_code = D.49044;
      inst->dreg = -1;
      inst->sreg1 = idepth_reg;
      D.49131 = klass->idepth;
      D.49145 = (int) D.49131;
      inst->data.op[1].const_val = D.49145;
      D.49045 = cfg->cbb;
      D.49046 = D.49045->last_ins;
      if (D.49046 != 0B) goto <D.49146>; else goto <D.49147>;
      <D.49146>:
      D.49045 = cfg->cbb;
      D.49046 = D.49045->last_ins;
      D.49046->next = inst;
      D.49045 = cfg->cbb;
      D.49046 = D.49045->last_ins;
      inst->prev = D.49046;
      D.49045 = cfg->cbb;
      D.49045->last_ins = inst;
      goto <D.49148>;
      <D.49147>:
      D.49045 = cfg->cbb;
      D.49045 = cfg->cbb;
      D.49045->last_ins = inst;
      D.49046 = D.49045->last_ins;
      D.49045->code = D.49046;
      <D.49148>:
    }
    {
      struct MonoInst * inst;

      D.49039 = cfg->mempool;
      inst = mono_mempool_alloc (D.49039, 48);
      inst->data.op[1].const_val = 0;
      D.49149 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.49149;
      inst->prev = 0B;
      D.49150 = inst->prev;
      inst->next = D.49150;
      inst->opcode = 464;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.49151 = inst->sreg3;
      inst->sreg2 = D.49151;
      D.49152 = inst->sreg2;
      inst->sreg1 = D.49152;
      D.49044 = cfg->ip;
      inst->cil_code = D.49044;
      inst->data.op[1].p = "InvalidCastException";
      D.49045 = cfg->cbb;
      D.49046 = D.49045->last_ins;
      if (D.49046 != 0B) goto <D.49153>; else goto <D.49154>;
      <D.49153>:
      D.49045 = cfg->cbb;
      D.49046 = D.49045->last_ins;
      D.49046->next = inst;
      D.49045 = cfg->cbb;
      D.49046 = D.49045->last_ins;
      inst->prev = D.49046;
      D.49045 = cfg->cbb;
      D.49045->last_ins = inst;
      goto <D.49155>;
      <D.49154>:
      D.49045 = cfg->cbb;
      D.49045 = cfg->cbb;
      D.49045->last_ins = inst;
      D.49046 = D.49045->last_ins;
      D.49045->code = D.49046;
      <D.49155>:
    }
    <D.49133>:
    {
      struct MonoInst * inst;

      D.49039 = cfg->mempool;
      inst = mono_mempool_alloc (D.49039, 48);
      inst->data.op[1].const_val = 0;
      D.49156 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.49156;
      inst->prev = 0B;
      D.49157 = inst->prev;
      inst->next = D.49157;
      inst->opcode = 391;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.49158 = inst->sreg3;
      inst->sreg2 = D.49158;
      D.49159 = inst->sreg2;
      inst->sreg1 = D.49159;
      D.49044 = cfg->ip;
      inst->cil_code = D.49044;
      inst->dreg = stypes_reg;
      inst->sreg1 = klass_reg;
      inst->data.op[0].const_val = 8;
      D.49045 = cfg->cbb;
      D.49046 = D.49045->last_ins;
      if (D.49046 != 0B) goto <D.49160>; else goto <D.49161>;
      <D.49160>:
      D.49045 = cfg->cbb;
      D.49046 = D.49045->last_ins;
      D.49046->next = inst;
      D.49045 = cfg->cbb;
      D.49046 = D.49045->last_ins;
      inst->prev = D.49046;
      D.49045 = cfg->cbb;
      D.49045->last_ins = inst;
      goto <D.49162>;
      <D.49161>:
      D.49045 = cfg->cbb;
      D.49045 = cfg->cbb;
      D.49045->last_ins = inst;
      D.49046 = D.49045->last_ins;
      D.49045->code = D.49046;
      <D.49162>:
    }
    {
      struct MonoInst * inst;

      D.49039 = cfg->mempool;
      inst = mono_mempool_alloc (D.49039, 48);
      inst->data.op[1].const_val = 0;
      D.49163 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.49163;
      inst->prev = 0B;
      D.49164 = inst->prev;
      inst->next = D.49164;
      inst->opcode = 391;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.49165 = inst->sreg3;
      inst->sreg2 = D.49165;
      D.49166 = inst->sreg2;
      inst->sreg1 = D.49166;
      D.49044 = cfg->ip;
      inst->cil_code = D.49044;
      inst->dreg = stype;
      inst->sreg1 = stypes_reg;
      D.49131 = klass->idepth;
      D.49145 = (int) D.49131;
      D.49167 = D.49145 + -1;
      D.49168 = D.49167 * 4;
      inst->data.op[0].const_val = D.49168;
      D.49045 = cfg->cbb;
      D.49046 = D.49045->last_ins;
      if (D.49046 != 0B) goto <D.49169>; else goto <D.49170>;
      <D.49169>:
      D.49045 = cfg->cbb;
      D.49046 = D.49045->last_ins;
      D.49046->next = inst;
      D.49045 = cfg->cbb;
      D.49046 = D.49045->last_ins;
      inst->prev = D.49046;
      D.49045 = cfg->cbb;
      D.49045->last_ins = inst;
      goto <D.49171>;
      <D.49170>:
      D.49045 = cfg->cbb;
      D.49045 = cfg->cbb;
      D.49045->last_ins = inst;
      D.49046 = D.49045->last_ins;
      D.49045->code = D.49046;
      <D.49171>:
    }
    mini_emit_class_check_inst (cfg, stype, klass, klass_inst);
  }
  <D.49127>:
}


mini_emit_castclass (struct MonoCompile * cfg, int obj_reg, int klass_reg, struct MonoClass * klass, struct MonoBasicBlock * object_is_null)
{
  mini_emit_castclass_inst (cfg, obj_reg, klass_reg, klass, 0B, object_is_null);
}


mini_emit_class_check_inst (struct MonoCompile * cfg, int klass_reg, struct MonoClass * klass, struct MonoInst * klass_inst)
{
  struct MonoMemPool * D.49174;
  int D.49175;
  struct MonoInst * D.49176;
  int D.49177;
  int D.49178;
  const unsigned char * D.49179;
  int D.49180;
  struct MonoBasicBlock * D.49181;
  struct MonoInst * D.49182;
  unsigned char D.49187;
  unsigned char D.49188;
  unsigned int D.49191;
  int D.49192;
  struct MonoInst * D.49193;
  guint16 iftmp.505;
  int D.49198;
  int D.49199;
  int D.49202;
  struct MonoInst * D.49203;
  int D.49204;
  int D.49205;
  int D.49206;
  unsigned int D.49208;
  int D.49209;
  int D.49213;
  struct MonoInst * D.49214;
  int D.49215;
  int D.49216;
  int D.49221;
  struct MonoInst * D.49222;
  int D.49223;
  int D.49224;
  int klass.506;
  int D.49229;
  struct MonoInst * D.49230;
  int D.49231;
  int D.49232;

  if (klass_inst != 0B) goto <D.49172>; else goto <D.49173>;
  <D.49172>:
  {
    struct MonoInst * inst;

    D.49174 = cfg->mempool;
    inst = mono_mempool_alloc (D.49174, 48);
    inst->data.op[1].const_val = 0;
    D.49175 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49175;
    inst->prev = 0B;
    D.49176 = inst->prev;
    inst->next = D.49176;
    inst->opcode = 322;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49177 = inst->sreg3;
    inst->sreg2 = D.49177;
    D.49178 = inst->sreg2;
    inst->sreg1 = D.49178;
    D.49179 = cfg->ip;
    inst->cil_code = D.49179;
    inst->dreg = -1;
    inst->sreg1 = klass_reg;
    D.49180 = klass_inst->dreg;
    inst->sreg2 = D.49180;
    D.49181 = cfg->cbb;
    D.49182 = D.49181->last_ins;
    if (D.49182 != 0B) goto <D.49183>; else goto <D.49184>;
    <D.49183>:
    D.49181 = cfg->cbb;
    D.49182 = D.49181->last_ins;
    D.49182->next = inst;
    D.49181 = cfg->cbb;
    D.49182 = D.49181->last_ins;
    inst->prev = D.49182;
    D.49181 = cfg->cbb;
    D.49181->last_ins = inst;
    goto <D.49185>;
    <D.49184>:
    D.49181 = cfg->cbb;
    D.49181 = cfg->cbb;
    D.49181->last_ins = inst;
    D.49182 = D.49181->last_ins;
    D.49181->code = D.49182;
    <D.49185>:
  }
  goto <D.49186>;
  <D.49173>:
  D.49187 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.49188 = D.49187 & 64;
  if (D.49188 != 0) goto <D.49189>; else goto <D.49190>;
  <D.49189>:
  {
    int const_reg;

    D.49191 = alloc_preg (cfg);
    const_reg = (int) D.49191;
    {
      struct MonoInst * inst;

      D.49174 = cfg->mempool;
      inst = mono_mempool_alloc (D.49174, 48);
      inst->data.op[1].const_val = 0;
      D.49192 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.49192;
      inst->prev = 0B;
      D.49193 = inst->prev;
      inst->next = D.49193;
      D.49187 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.49188 = D.49187 & 64;
      if (D.49188 != 0) goto <D.49195>; else goto <D.49196>;
      <D.49195>:
      iftmp.505 = 738;
      goto <D.49197>;
      <D.49196>:
      iftmp.505 = 362;
      <D.49197>:
      inst->opcode = iftmp.505;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.49198 = inst->sreg3;
      inst->sreg2 = D.49198;
      D.49199 = inst->sreg2;
      inst->sreg1 = D.49199;
      D.49179 = cfg->ip;
      inst->cil_code = D.49179;
      D.49187 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.49188 = D.49187 & 64;
      if (D.49188 != 0) goto <D.49200>; else goto <D.49201>;
      <D.49200>:
      {
        struct MonoInst * group;
        struct MonoInst * got_loc;

        got_loc = mono_get_got_var (cfg);
        D.49174 = cfg->mempool;
        group = mono_mempool_alloc (D.49174, 48);
        group->data.op[1].const_val = 0;
        D.49202 = group->data.op[1].const_val;
        group->data.op[0].const_val = D.49202;
        group->prev = 0B;
        D.49203 = group->prev;
        group->next = D.49203;
        group->opcode = 737;
        group->flags = 0;
        group->type = 0;
        group->dreg = -1;
        group->sreg3 = -1;
        D.49204 = group->sreg3;
        group->sreg2 = D.49204;
        D.49205 = group->sreg2;
        group->sreg1 = D.49205;
        D.49179 = cfg->ip;
        group->cil_code = D.49179;
        group->data.op[0].src = klass;
        group->data.op[1].src = 11B;
        D.49206 = got_loc->dreg;
        inst->sreg1 = D.49206;
        inst->data.op[1].p = group;
      }
      goto <D.49207>;
      <D.49201>:
      inst->data.op[0].p = klass;
      inst->data.op[1].src = 11B;
      <D.49207>:
      inst->type = 3;
      D.49208 = alloc_dreg (cfg, 3);
      D.49209 = (int) D.49208;
      inst->dreg = D.49209;
      inst->dreg = const_reg;
      D.49181 = cfg->cbb;
      D.49182 = D.49181->last_ins;
      if (D.49182 != 0B) goto <D.49210>; else goto <D.49211>;
      <D.49210>:
      D.49181 = cfg->cbb;
      D.49182 = D.49181->last_ins;
      D.49182->next = inst;
      D.49181 = cfg->cbb;
      D.49182 = D.49181->last_ins;
      inst->prev = D.49182;
      D.49181 = cfg->cbb;
      D.49181->last_ins = inst;
      goto <D.49212>;
      <D.49211>:
      D.49181 = cfg->cbb;
      D.49181 = cfg->cbb;
      D.49181->last_ins = inst;
      D.49182 = D.49181->last_ins;
      D.49181->code = D.49182;
      <D.49212>:
    }
    {
      struct MonoInst * inst;

      D.49174 = cfg->mempool;
      inst = mono_mempool_alloc (D.49174, 48);
      inst->data.op[1].const_val = 0;
      D.49213 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.49213;
      inst->prev = 0B;
      D.49214 = inst->prev;
      inst->next = D.49214;
      inst->opcode = 322;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.49215 = inst->sreg3;
      inst->sreg2 = D.49215;
      D.49216 = inst->sreg2;
      inst->sreg1 = D.49216;
      D.49179 = cfg->ip;
      inst->cil_code = D.49179;
      inst->dreg = -1;
      inst->sreg1 = klass_reg;
      inst->sreg2 = const_reg;
      D.49181 = cfg->cbb;
      D.49182 = D.49181->last_ins;
      if (D.49182 != 0B) goto <D.49217>; else goto <D.49218>;
      <D.49217>:
      D.49181 = cfg->cbb;
      D.49182 = D.49181->last_ins;
      D.49182->next = inst;
      D.49181 = cfg->cbb;
      D.49182 = D.49181->last_ins;
      inst->prev = D.49182;
      D.49181 = cfg->cbb;
      D.49181->last_ins = inst;
      goto <D.49219>;
      <D.49218>:
      D.49181 = cfg->cbb;
      D.49181 = cfg->cbb;
      D.49181->last_ins = inst;
      D.49182 = D.49181->last_ins;
      D.49181->code = D.49182;
      <D.49219>:
    }
  }
  goto <D.49220>;
  <D.49190>:
  {
    struct MonoInst * inst;

    D.49174 = cfg->mempool;
    inst = mono_mempool_alloc (D.49174, 48);
    inst->data.op[1].const_val = 0;
    D.49221 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49221;
    inst->prev = 0B;
    D.49222 = inst->prev;
    inst->next = D.49222;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49223 = inst->sreg3;
    inst->sreg2 = D.49223;
    D.49224 = inst->sreg2;
    inst->sreg1 = D.49224;
    D.49179 = cfg->ip;
    inst->cil_code = D.49179;
    inst->dreg = -1;
    inst->sreg1 = klass_reg;
    klass.506 = (int) klass;
    inst->data.op[1].const_val = klass.506;
    D.49181 = cfg->cbb;
    D.49182 = D.49181->last_ins;
    if (D.49182 != 0B) goto <D.49226>; else goto <D.49227>;
    <D.49226>:
    D.49181 = cfg->cbb;
    D.49182 = D.49181->last_ins;
    D.49182->next = inst;
    D.49181 = cfg->cbb;
    D.49182 = D.49181->last_ins;
    inst->prev = D.49182;
    D.49181 = cfg->cbb;
    D.49181->last_ins = inst;
    goto <D.49228>;
    <D.49227>:
    D.49181 = cfg->cbb;
    D.49181 = cfg->cbb;
    D.49181->last_ins = inst;
    D.49182 = D.49181->last_ins;
    D.49181->code = D.49182;
    <D.49228>:
  }
  <D.49220>:
  <D.49186>:
  {
    struct MonoInst * inst;

    D.49174 = cfg->mempool;
    inst = mono_mempool_alloc (D.49174, 48);
    inst->data.op[1].const_val = 0;
    D.49229 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49229;
    inst->prev = 0B;
    D.49230 = inst->prev;
    inst->next = D.49230;
    inst->opcode = 460;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49231 = inst->sreg3;
    inst->sreg2 = D.49231;
    D.49232 = inst->sreg2;
    inst->sreg1 = D.49232;
    D.49179 = cfg->ip;
    inst->cil_code = D.49179;
    inst->data.op[1].p = "InvalidCastException";
    D.49181 = cfg->cbb;
    D.49182 = D.49181->last_ins;
    if (D.49182 != 0B) goto <D.49233>; else goto <D.49234>;
    <D.49233>:
    D.49181 = cfg->cbb;
    D.49182 = D.49181->last_ins;
    D.49182->next = inst;
    D.49181 = cfg->cbb;
    D.49182 = D.49181->last_ins;
    inst->prev = D.49182;
    D.49181 = cfg->cbb;
    D.49181->last_ins = inst;
    goto <D.49235>;
    <D.49234>:
    D.49181 = cfg->cbb;
    D.49181 = cfg->cbb;
    D.49181->last_ins = inst;
    D.49182 = D.49181->last_ins;
    D.49181->code = D.49182;
    <D.49235>:
  }
}


handle_stack_args (struct MonoCompile * cfg, struct MonoInst * * sp, int count)
{
  unsigned int D.49238;
  int D.49241;
  short unsigned int D.49242;
  short unsigned int D.49245;
  struct MonoBasicBlock * * D.49246;
  unsigned int i.507;
  unsigned int D.49248;
  struct MonoBasicBlock * * D.49249;
  unsigned int D.49250;
  unsigned int D.49251;
  struct MonoInst * * D.49254;
  short int D.49257;
  int D.49258;
  unsigned int count.508;
  unsigned int D.49262;
  struct MonoMemPool * D.49263;
  void * D.49264;
  struct MonoMethod * D.49265;
  struct MonoInst * * D.49268;
  struct MonoInst * * D.49269;
  struct MonoInst * * D.49270;
  struct MonoInst * D.49271;
  struct MonoType * D.49272;
  struct MonoInst * D.49273;
  struct MonoInst * D.49275;
  short unsigned int D.49278;
  int D.49283;
  struct MonoInst * D.49284;
  int D.49285;
  int D.49286;
  const unsigned char * D.49287;
  struct MonoInst * * D.49288;
  struct MonoInst * * D.49289;
  struct MonoInst * D.49290;
  int D.49291;
  unsigned int D.49292;
  unsigned int D.49293;
  struct MonoInst * * D.49294;
  struct MonoInst * D.49295;
  struct MonoType * D.49296;
  unsigned int D.49297;
  short unsigned int D.49298;
  struct MonoClass * D.49299;
  int D.49300;
  int D.49301;
  short unsigned int D.49302;
  struct MonoClass * D.49305;
  struct MonoBasicBlock * D.49306;
  struct MonoInst * D.49307;
  const unsigned char * D.49311;
  unsigned int bindex.509;
  unsigned int D.49315;
  struct MonoBasicBlock * * D.49316;
  struct MonoInst * * D.49321;
  struct MonoInst * D.49322;
  int D.49323;
  unsigned int D.49324;
  unsigned int D.49325;
  struct MonoInst * * D.49326;
  struct MonoInst * D.49327;
  struct MonoType * D.49328;
  unsigned int D.49329;
  short unsigned int D.49330;
  struct MonoClass * D.49331;
  int D.49332;
  struct MonoClass * D.49335;
  int i;
  int bindex;
  struct MonoBasicBlock * bb;
  struct MonoBasicBlock * outb;
  struct MonoInst * inst;
  struct MonoInst * * locals;
  gboolean found;

  bb = cfg->cbb;
  if (count == 0) goto <D.49236>; else goto <D.49237>;
  <D.49236>:
  return;
  <D.49237>:
  D.49238 = cfg->verbose_level;
  if (D.49238 > 3) goto <D.49239>; else goto <D.49240>;
  <D.49239>:
  D.49241 = bb->block_num;
  printf ("%d item(s) on exit from B%d\n", count, D.49241);
  <D.49240>:
  D.49242 = bb->out_scount;
  if (D.49242 == 0) goto <D.49243>; else goto <D.49244>;
  <D.49243>:
  D.49245 = (short unsigned int) count;
  bb->out_scount = D.49245;
  found = 0;
  i = 0;
  goto <D.24866>;
  <D.24865>:
  D.49246 = bb->out_bb;
  i.507 = (unsigned int) i;
  D.49248 = i.507 * 4;
  D.49249 = D.49246 + D.49248;
  outb = *D.49249;
  D.49250 = outb->flags;
  D.49251 = D.49250 & 16;
  if (D.49251 != 0) goto <D.49252>; else goto <D.49253>;
  <D.49252>:
  // predicted unlikely by continue predictor.
  goto <D.24863>;
  <D.49253>:
  D.49254 = outb->in_stack;
  if (D.49254 != 0B) goto <D.49255>; else goto <D.49256>;
  <D.49255>:
  found = 1;
  D.49254 = outb->in_stack;
  bb->out_stack = D.49254;
  goto <D.24864>;
  <D.49256>:
  <D.24863>:
  i = i + 1;
  <D.24866>:
  D.49257 = bb->out_count;
  D.49258 = (int) D.49257;
  if (D.49258 > i) goto <D.24865>; else goto <D.24864>;
  <D.24864>:
  if (found == 0) goto <D.49259>; else goto <D.49260>;
  <D.49259>:
  count.508 = (unsigned int) count;
  D.49262 = count.508 * 4;
  D.49263 = cfg->mempool;
  D.49264 = mono_mempool_alloc (D.49263, D.49262);
  bb->out_stack = D.49264;
  i = 0;
  goto <D.24868>;
  <D.24867>:
  D.49265 = cfg->inlined_method;
  if (D.49265 != 0B) goto <D.49266>; else goto <D.49267>;
  <D.49266>:
  D.49268 = bb->out_stack;
  i.507 = (unsigned int) i;
  D.49248 = i.507 * 4;
  D.49269 = D.49268 + D.49248;
  i.507 = (unsigned int) i;
  D.49248 = i.507 * 4;
  D.49270 = sp + D.49248;
  D.49271 = *D.49270;
  D.49272 = type_from_stack_type (D.49271);
  D.49273 = mono_compile_create_var (cfg, D.49272, 329);
  *D.49269 = D.49273;
  goto <D.49274>;
  <D.49267>:
  D.49268 = bb->out_stack;
  i.507 = (unsigned int) i;
  D.49248 = i.507 * 4;
  D.49269 = D.49268 + D.49248;
  i.507 = (unsigned int) i;
  D.49248 = i.507 * 4;
  D.49270 = sp + D.49248;
  D.49271 = *D.49270;
  D.49275 = mono_compile_get_interface_var (cfg, i, D.49271);
  *D.49269 = D.49275;
  <D.49274>:
  i = i + 1;
  <D.24868>:
  if (i < count) goto <D.24867>; else goto <D.24869>;
  <D.24869>:
  <D.49260>:
  <D.49244>:
  i = 0;
  goto <D.24872>;
  <D.24871>:
  D.49246 = bb->out_bb;
  i.507 = (unsigned int) i;
  D.49248 = i.507 * 4;
  D.49249 = D.49246 + D.49248;
  outb = *D.49249;
  D.49250 = outb->flags;
  D.49251 = D.49250 & 16;
  if (D.49251 != 0) goto <D.49276>; else goto <D.49277>;
  <D.49276>:
  // predicted unlikely by continue predictor.
  goto <D.24870>;
  <D.49277>:
  D.49278 = outb->in_scount;
  if (D.49278 != 0) goto <D.49279>; else goto <D.49280>;
  <D.49279>:
  D.49278 = outb->in_scount;
  D.49242 = bb->out_scount;
  if (D.49278 != D.49242) goto <D.49281>; else goto <D.49282>;
  <D.49281>:
  cfg->unverifiable = 1;
  return;
  <D.49282>:
  // predicted unlikely by continue predictor.
  goto <D.24870>;
  <D.49280>:
  D.49245 = (short unsigned int) count;
  outb->in_scount = D.49245;
  D.49268 = bb->out_stack;
  outb->in_stack = D.49268;
  <D.24870>:
  i = i + 1;
  <D.24872>:
  D.49257 = bb->out_count;
  D.49258 = (int) D.49257;
  if (D.49258 > i) goto <D.24871>; else goto <D.24873>;
  <D.24873>:
  locals = bb->out_stack;
  cfg->cbb = bb;
  i = 0;
  goto <D.24875>;
  <D.24874>:
  D.49263 = cfg->mempool;
  inst = mono_mempool_alloc (D.49263, 48);
  inst->data.op[1].const_val = 0;
  D.49283 = inst->data.op[1].const_val;
  inst->data.op[0].const_val = D.49283;
  inst->prev = 0B;
  D.49284 = inst->prev;
  inst->next = D.49284;
  inst->opcode = 428;
  inst->flags = 0;
  inst->type = 0;
  inst->dreg = -1;
  inst->sreg3 = -1;
  D.49285 = inst->sreg3;
  inst->sreg2 = D.49285;
  D.49286 = inst->sreg2;
  inst->sreg1 = D.49286;
  D.49287 = cfg->ip;
  inst->cil_code = D.49287;
  D.49288 = cfg->varinfo;
  i.507 = (unsigned int) i;
  D.49248 = i.507 * 4;
  D.49289 = locals + D.49248;
  D.49290 = *D.49289;
  D.49291 = D.49290->data.op[0].const_val;
  D.49292 = (unsigned int) D.49291;
  D.49293 = D.49292 * 4;
  D.49294 = D.49288 + D.49293;
  D.49295 = *D.49294;
  D.49296 = D.49295->data.op[1].vtype;
  D.49297 = mono_type_to_regmove (cfg, D.49296);
  D.49298 = (short unsigned int) D.49297;
  inst->opcode = D.49298;
  D.49288 = cfg->varinfo;
  i.507 = (unsigned int) i;
  D.49248 = i.507 * 4;
  D.49289 = locals + D.49248;
  D.49290 = *D.49289;
  D.49291 = D.49290->data.op[0].const_val;
  D.49292 = (unsigned int) D.49291;
  D.49293 = D.49292 * 4;
  D.49294 = D.49288 + D.49293;
  D.49295 = *D.49294;
  D.49299 = D.49295->klass;
  inst->klass = D.49299;
  i.507 = (unsigned int) i;
  D.49248 = i.507 * 4;
  D.49270 = sp + D.49248;
  D.49271 = *D.49270;
  D.49300 = D.49271->dreg;
  inst->sreg1 = D.49300;
  D.49288 = cfg->varinfo;
  i.507 = (unsigned int) i;
  D.49248 = i.507 * 4;
  D.49289 = locals + D.49248;
  D.49290 = *D.49289;
  D.49291 = D.49290->data.op[0].const_val;
  D.49292 = (unsigned int) D.49291;
  D.49293 = D.49292 * 4;
  D.49294 = D.49288 + D.49293;
  D.49295 = *D.49294;
  D.49301 = D.49295->dreg;
  inst->dreg = D.49301;
  D.49302 = inst->opcode;
  if (D.49302 == 431) goto <D.49303>; else goto <D.49304>;
  <D.49303>:
  D.49288 = cfg->varinfo;
  i.507 = (unsigned int) i;
  D.49248 = i.507 * 4;
  D.49289 = locals + D.49248;
  D.49290 = *D.49289;
  D.49291 = D.49290->data.op[0].const_val;
  D.49292 = (unsigned int) D.49291;
  D.49293 = D.49292 * 4;
  D.49294 = D.49288 + D.49293;
  D.49295 = *D.49294;
  D.49296 = D.49295->data.op[1].vtype;
  D.49305 = mono_class_from_mono_type (D.49296);
  inst->klass = D.49305;
  <D.49304>:
  D.49306 = cfg->cbb;
  D.49307 = D.49306->last_ins;
  if (D.49307 != 0B) goto <D.49308>; else goto <D.49309>;
  <D.49308>:
  D.49306 = cfg->cbb;
  D.49307 = D.49306->last_ins;
  D.49307->next = inst;
  D.49306 = cfg->cbb;
  D.49307 = D.49306->last_ins;
  inst->prev = D.49307;
  D.49306 = cfg->cbb;
  D.49306->last_ins = inst;
  goto <D.49310>;
  <D.49309>:
  D.49306 = cfg->cbb;
  D.49306 = cfg->cbb;
  D.49306->last_ins = inst;
  D.49307 = D.49306->last_ins;
  D.49306->code = D.49307;
  <D.49310>:
  i.507 = (unsigned int) i;
  D.49248 = i.507 * 4;
  D.49270 = sp + D.49248;
  D.49271 = *D.49270;
  D.49311 = D.49271->cil_code;
  inst->cil_code = D.49311;
  i.507 = (unsigned int) i;
  D.49248 = i.507 * 4;
  D.49270 = sp + D.49248;
  i.507 = (unsigned int) i;
  D.49248 = i.507 * 4;
  D.49289 = locals + D.49248;
  D.49290 = *D.49289;
  *D.49270 = D.49290;
  D.49238 = cfg->verbose_level;
  if (D.49238 > 3) goto <D.49312>; else goto <D.49313>;
  <D.49312>:
  i.507 = (unsigned int) i;
  D.49248 = i.507 * 4;
  D.49289 = locals + D.49248;
  D.49290 = *D.49289;
  D.49291 = D.49290->data.op[0].const_val;
  printf ("storing %d to temp %d\n", i, D.49291);
  <D.49313>:
  i = i + 1;
  <D.24875>:
  if (i < count) goto <D.24874>; else goto <D.24876>;
  <D.24876>:
  found = 1;
  bindex = 0;
  goto <D.24884>;
  <D.24883>:
  found = 0;
  goto <D.24877>;
  <D.24882>:
  D.49246 = bb->out_bb;
  bindex.509 = (unsigned int) bindex;
  D.49315 = bindex.509 * 4;
  D.49316 = D.49246 + D.49315;
  outb = *D.49316;
  D.49250 = outb->flags;
  D.49251 = D.49250 & 16;
  if (D.49251 != 0) goto <D.49317>; else goto <D.49318>;
  <D.49317>:
  bindex = bindex + 1;
  // predicted unlikely by continue predictor.
  goto <D.24877>;
  <D.49318>:
  D.49254 = outb->in_stack;
  if (D.49254 != locals) goto <D.49319>; else goto <D.49320>;
  <D.49319>:
  i = 0;
  goto <D.24879>;
  <D.24878>:
  D.49263 = cfg->mempool;
  inst = mono_mempool_alloc (D.49263, 48);
  inst->data.op[1].const_val = 0;
  D.49283 = inst->data.op[1].const_val;
  inst->data.op[0].const_val = D.49283;
  inst->prev = 0B;
  D.49284 = inst->prev;
  inst->next = D.49284;
  inst->opcode = 428;
  inst->flags = 0;
  inst->type = 0;
  inst->dreg = -1;
  inst->sreg3 = -1;
  D.49285 = inst->sreg3;
  inst->sreg2 = D.49285;
  D.49286 = inst->sreg2;
  inst->sreg1 = D.49286;
  D.49287 = cfg->ip;
  inst->cil_code = D.49287;
  D.49288 = cfg->varinfo;
  D.49254 = outb->in_stack;
  i.507 = (unsigned int) i;
  D.49248 = i.507 * 4;
  D.49321 = D.49254 + D.49248;
  D.49322 = *D.49321;
  D.49323 = D.49322->data.op[0].const_val;
  D.49324 = (unsigned int) D.49323;
  D.49325 = D.49324 * 4;
  D.49326 = D.49288 + D.49325;
  D.49327 = *D.49326;
  D.49328 = D.49327->data.op[1].vtype;
  D.49329 = mono_type_to_regmove (cfg, D.49328);
  D.49330 = (short unsigned int) D.49329;
  inst->opcode = D.49330;
  D.49288 = cfg->varinfo;
  D.49254 = outb->in_stack;
  i.507 = (unsigned int) i;
  D.49248 = i.507 * 4;
  D.49321 = D.49254 + D.49248;
  D.49322 = *D.49321;
  D.49323 = D.49322->data.op[0].const_val;
  D.49324 = (unsigned int) D.49323;
  D.49325 = D.49324 * 4;
  D.49326 = D.49288 + D.49325;
  D.49327 = *D.49326;
  D.49331 = D.49327->klass;
  inst->klass = D.49331;
  i.507 = (unsigned int) i;
  D.49248 = i.507 * 4;
  D.49270 = sp + D.49248;
  D.49271 = *D.49270;
  D.49300 = D.49271->dreg;
  inst->sreg1 = D.49300;
  D.49288 = cfg->varinfo;
  D.49254 = outb->in_stack;
  i.507 = (unsigned int) i;
  D.49248 = i.507 * 4;
  D.49321 = D.49254 + D.49248;
  D.49322 = *D.49321;
  D.49323 = D.49322->data.op[0].const_val;
  D.49324 = (unsigned int) D.49323;
  D.49325 = D.49324 * 4;
  D.49326 = D.49288 + D.49325;
  D.49327 = *D.49326;
  D.49332 = D.49327->dreg;
  inst->dreg = D.49332;
  D.49302 = inst->opcode;
  if (D.49302 == 431) goto <D.49333>; else goto <D.49334>;
  <D.49333>:
  D.49288 = cfg->varinfo;
  D.49254 = outb->in_stack;
  i.507 = (unsigned int) i;
  D.49248 = i.507 * 4;
  D.49321 = D.49254 + D.49248;
  D.49322 = *D.49321;
  D.49323 = D.49322->data.op[0].const_val;
  D.49324 = (unsigned int) D.49323;
  D.49325 = D.49324 * 4;
  D.49326 = D.49288 + D.49325;
  D.49327 = *D.49326;
  D.49328 = D.49327->data.op[1].vtype;
  D.49335 = mono_class_from_mono_type (D.49328);
  inst->klass = D.49335;
  <D.49334>:
  D.49306 = cfg->cbb;
  D.49307 = D.49306->last_ins;
  if (D.49307 != 0B) goto <D.49336>; else goto <D.49337>;
  <D.49336>:
  D.49306 = cfg->cbb;
  D.49307 = D.49306->last_ins;
  D.49307->next = inst;
  D.49306 = cfg->cbb;
  D.49307 = D.49306->last_ins;
  inst->prev = D.49307;
  D.49306 = cfg->cbb;
  D.49306->last_ins = inst;
  goto <D.49338>;
  <D.49337>:
  D.49306 = cfg->cbb;
  D.49306 = cfg->cbb;
  D.49306->last_ins = inst;
  D.49307 = D.49306->last_ins;
  D.49306->code = D.49307;
  <D.49338>:
  i.507 = (unsigned int) i;
  D.49248 = i.507 * 4;
  D.49270 = sp + D.49248;
  D.49271 = *D.49270;
  D.49311 = D.49271->cil_code;
  inst->cil_code = D.49311;
  i.507 = (unsigned int) i;
  D.49248 = i.507 * 4;
  D.49270 = sp + D.49248;
  i.507 = (unsigned int) i;
  D.49248 = i.507 * 4;
  D.49289 = locals + D.49248;
  D.49290 = *D.49289;
  *D.49270 = D.49290;
  D.49238 = cfg->verbose_level;
  if (D.49238 > 3) goto <D.49339>; else goto <D.49340>;
  <D.49339>:
  D.49254 = outb->in_stack;
  i.507 = (unsigned int) i;
  D.49248 = i.507 * 4;
  D.49321 = D.49254 + D.49248;
  D.49322 = *D.49321;
  D.49323 = D.49322->data.op[0].const_val;
  printf ("storing %d to temp %d\n", i, D.49323);
  <D.49340>:
  i = i + 1;
  <D.24879>:
  if (i < count) goto <D.24878>; else goto <D.24880>;
  <D.24880>:
  locals = outb->in_stack;
  found = 1;
  goto <D.24881>;
  <D.49320>:
  bindex = bindex + 1;
  <D.24877>:
  D.49257 = bb->out_count;
  D.49258 = (int) D.49257;
  if (D.49258 > bindex) goto <D.24882>; else goto <D.24881>;
  <D.24881>:
  <D.24884>:
  if (found != 0) goto <D.24883>; else goto <D.24885>;
  <D.24885>:
}


mono_compile_get_interface_var (struct MonoCompile * cfg, int slot, struct MonoInst * ins)
{
  struct MonoMethodHeader * D.49342;
  <unnamed-unsigned:15> D.49343;
  int D.49344;
  struct MonoInst * D.49347;
  struct MonoType * D.49348;
  unsigned char D.49349;
  int D.49350;
  int D.49351;
  int D.49352;
  guint16 * D.49353;
  unsigned int pos.510;
  unsigned int D.49355;
  guint16 * D.49356;
  short unsigned int D.49357;
  struct MonoInst * * D.49360;
  unsigned int vnum.511;
  unsigned int D.49362;
  struct MonoInst * * D.49363;
  struct MonoType * D.49364;
  int D.49365;
  short unsigned int D.49366;
  struct MonoType * D.49367;
  struct MonoInst * res;
  int pos;
  int vnum;

  D.49342 = cfg->header;
  D.49343 = D.49342->max_stack;
  D.49344 = (int) D.49343;
  if (D.49344 <= slot) goto <D.49345>; else goto <D.49346>;
  <D.49345>:
  D.49348 = type_from_stack_type (ins);
  D.49347 = mono_compile_create_var (cfg, D.49348, 329);
  return D.49347;
  <D.49346>:
  D.49349 = ins->type;
  D.49350 = (int) D.49349;
  D.49351 = D.49350 + -1;
  D.49352 = slot * 8;
  pos = D.49351 + D.49352;
  D.49349 = ins->type;
  D.49350 = (int) D.49349;
  switch (D.49350) <default: <D.24843>, case 1: <D.24836>, case 2: <D.24837>, case 3: <D.24839>, case 4: <D.24838>, case 5: <D.24840>, case 6: <D.24841>>
  <D.24836>:
  <D.24837>:
  <D.24838>:
  <D.24839>:
  <D.24840>:
  <D.24841>:
  D.49353 = cfg->intvars;
  pos.510 = (unsigned int) pos;
  D.49355 = pos.510 * 2;
  D.49356 = D.49353 + D.49355;
  D.49357 = *D.49356;
  vnum = (int) D.49357;
  if (vnum != 0) goto <D.49358>; else goto <D.49359>;
  <D.49358>:
  D.49360 = cfg->varinfo;
  vnum.511 = (unsigned int) vnum;
  D.49362 = vnum.511 * 4;
  D.49363 = D.49360 + D.49362;
  D.49347 = *D.49363;
  return D.49347;
  <D.49359>:
  D.49364 = type_from_stack_type (ins);
  res = mono_compile_create_var (cfg, D.49364, 329);
  D.49353 = cfg->intvars;
  pos.510 = (unsigned int) pos;
  D.49355 = pos.510 * 2;
  D.49356 = D.49353 + D.49355;
  D.49365 = res->data.op[0].const_val;
  D.49366 = (short unsigned int) D.49365;
  *D.49356 = D.49366;
  goto <D.24842>;
  <D.24843>:
  D.49367 = type_from_stack_type (ins);
  res = mono_compile_create_var (cfg, D.49367, 329);
  <D.24842>:
  D.49347 = res;
  return D.49347;
}


handle_box (struct MonoCompile * cfg, struct MonoInst * val, struct MonoClass * klass, int context_used, struct MonoBasicBlock * * out_cbb)
{
  struct MonoBasicBlock * D.49369;
  int D.49370;
  struct MonoMethod * D.49375;
  struct MonoInst * D.49376;
  struct MonoMethodSignature * D.49377;
  int pass_mrgctx.512;
  _Bool D.49379;
  long int D.49380;
  long int D.49381;
  int pass_vtable.513;
  struct MonoClass * D.49387;
  struct MonoDomain * D.49388;
  _Bool D.49389;
  long int D.49390;
  long int D.49391;
  struct MonoMemPool * D.49394;
  int D.49395;
  struct MonoInst * D.49396;
  guint16 iftmp.514;
  unsigned char D.49398;
  unsigned char D.49399;
  int D.49403;
  int D.49404;
  const unsigned char * D.49405;
  int D.49408;
  struct MonoInst * D.49409;
  int D.49410;
  int D.49411;
  struct MonoInst * iftmp.515;
  int D.49416;
  void * iftmp.516;
  unsigned int D.49422;
  int D.49423;
  struct MonoInst * D.49424;
  int D.49428;
  unsigned int D.49431;
  unsigned int D.49432;
  unsigned int D.49433;
  unsigned int D.49434;
  int D.49435;
  unsigned int D.49436;
  unsigned int D.49437;
  int D.49438;
  unsigned int D.49439;
  unsigned int D.49440;
  int D.49441;
  int D.49442;
  struct MonoInst * D.49443;
  int D.49444;
  int D.49445;
  int D.49446;
  int D.49450;
  struct MonoInst * D.49451;
  int D.49452;
  int D.49453;
  unsigned int D.49456;
  unsigned int D.49457;
  int D.49458;
  unsigned char * D.49462;
  struct MonoBasicBlock * * D.49465;
  int D.49466;
  unsigned char * D.49467;
  int D.49468;
  int D.49469;
  unsigned int D.49470;
  unsigned int D.49471;
  struct MonoBasicBlock * * D.49472;
  unsigned int D.49473;
  short unsigned int D.49478;
  short unsigned int D.49479;
  _Bool D.49480;
  short unsigned int D.49481;
  _Bool D.49482;
  _Bool D.49483;
  short unsigned int D.49485;
  short unsigned int D.49486;
  struct MonoBasicBlock * * D.49487;
  struct MonoBasicBlock * * D.49488;
  struct MonoBasicBlock * D.49489;
  short unsigned int D.49494;
  _Bool D.49495;
  _Bool D.49496;
  _Bool D.49497;
  short unsigned int D.49499;
  short unsigned int D.49500;
  _Bool D.49501;
  short unsigned int D.49502;
  _Bool D.49503;
  _Bool D.49504;
  void * D.49507;
  struct MonoBasicBlock * * D.49508;
  struct MonoBasicBlock * * D.49509;
  unsigned char D.49513;
  unsigned int D.49516;
  unsigned int D.49517;
  int D.49518;
  short unsigned int D.49525;
  short unsigned int D.49526;
  _Bool D.49527;
  short unsigned int D.49528;
  _Bool D.49529;
  _Bool D.49530;
  short unsigned int D.49536;
  _Bool D.49537;
  _Bool D.49538;
  _Bool D.49539;
  short unsigned int D.49541;
  short unsigned int D.49542;
  _Bool D.49543;
  short unsigned int D.49544;
  _Bool D.49545;
  _Bool D.49546;
  int D.49549;
  struct MonoInst * D.49550;
  int D.49551;
  int D.49552;
  int D.49556;
  struct MonoInst * D.49557;
  int D.49558;
  int D.49559;
  unsigned int D.49562;
  unsigned int D.49563;
  int D.49564;
  unsigned char * D.49568;
  int D.49571;
  int D.49572;
  unsigned int D.49573;
  unsigned int D.49574;
  struct MonoBasicBlock * * D.49575;
  short unsigned int D.49580;
  short unsigned int D.49581;
  _Bool D.49582;
  short unsigned int D.49583;
  _Bool D.49584;
  _Bool D.49585;
  short unsigned int D.49591;
  _Bool D.49592;
  _Bool D.49593;
  _Bool D.49594;
  short unsigned int D.49596;
  short unsigned int D.49597;
  _Bool D.49598;
  short unsigned int D.49599;
  _Bool D.49600;
  _Bool D.49601;
  void * D.49604;
  struct MonoBasicBlock * * D.49605;
  struct MonoBasicBlock * * D.49606;
  unsigned int D.49612;
  unsigned int D.49613;
  int D.49614;
  short unsigned int D.49621;
  short unsigned int D.49622;
  _Bool D.49623;
  short unsigned int D.49624;
  _Bool D.49625;
  _Bool D.49626;
  short unsigned int D.49632;
  _Bool D.49633;
  _Bool D.49634;
  _Bool D.49635;
  short unsigned int D.49637;
  short unsigned int D.49638;
  _Bool D.49639;
  short unsigned int D.49640;
  _Bool D.49641;
  _Bool D.49642;
  int D.49647;
  struct MonoInst * D.49648;
  struct MonoType * D.49649;
  unsigned int D.49650;
  short unsigned int D.49651;
  int D.49652;
  int D.49653;
  struct MonoInst * val.517;
  int D.49655;
  int D.49656;
  struct MonoClass * D.49657;
  int D.49661;
  struct MonoInst * D.49662;
  int D.49663;
  int D.49664;
  int D.49668;
  struct MonoInst * D.49669;
  int D.49670;
  int D.49671;
  unsigned int D.49674;
  unsigned int D.49675;
  int D.49676;
  unsigned char * D.49680;
  int D.49683;
  int D.49684;
  unsigned int D.49685;
  unsigned int D.49686;
  struct MonoBasicBlock * * D.49687;
  short unsigned int D.49692;
  short unsigned int D.49693;
  _Bool D.49694;
  short unsigned int D.49695;
  _Bool D.49696;
  _Bool D.49697;
  short unsigned int D.49703;
  _Bool D.49704;
  _Bool D.49705;
  _Bool D.49706;
  short unsigned int D.49708;
  short unsigned int D.49709;
  _Bool D.49710;
  short unsigned int D.49711;
  _Bool D.49712;
  _Bool D.49713;
  void * D.49716;
  struct MonoBasicBlock * * D.49717;
  struct MonoBasicBlock * * D.49718;
  unsigned int D.49724;
  unsigned int D.49725;
  int D.49726;
  short unsigned int D.49733;
  short unsigned int D.49734;
  _Bool D.49735;
  short unsigned int D.49736;
  _Bool D.49737;
  _Bool D.49738;
  short unsigned int D.49744;
  _Bool D.49745;
  _Bool D.49746;
  _Bool D.49747;
  short unsigned int D.49749;
  short unsigned int D.49750;
  _Bool D.49751;
  short unsigned int D.49752;
  _Bool D.49753;
  _Bool D.49754;
  unsigned char * D.49757;
  int D.49760;
  int D.49761;
  unsigned int D.49762;
  unsigned int D.49763;
  struct MonoBasicBlock * * D.49764;
  short unsigned int D.49769;
  short unsigned int D.49770;
  _Bool D.49771;
  short unsigned int D.49772;
  _Bool D.49773;
  _Bool D.49774;
  short unsigned int D.49780;
  _Bool D.49781;
  _Bool D.49782;
  _Bool D.49783;
  short unsigned int D.49785;
  short unsigned int D.49786;
  _Bool D.49787;
  short unsigned int D.49788;
  _Bool D.49789;
  _Bool D.49790;
  unsigned int D.49792;
  struct MonoInst * iftmp.518;
  unsigned int D.49794;
  unsigned int D.49795;
  struct MonoInst * * D.49798;
  unsigned int D.49799;
  unsigned int D.49800;
  struct MonoInst * * D.49801;
  int D.49805;
  struct MonoInst * D.49806;
  int D.49807;
  int D.49808;
  unsigned char D.49809;
  unsigned char D.49810;
  struct MonoClass * D.49811;
  unsigned int D.49812;
  int D.49813;
  int D.49814;
  _Bool D.49815;
  long int D.49816;
  long int D.49817;
  struct MonoType * D.49820;
  int D.49821;
  _Bool iftmp.519;
  int D.49825;
  unsigned char D.49828;
  _Bool D.49829;
  _Bool D.49830;
  _Bool D.49831;
  int D.49832;
  unsigned char D.49834;
  struct MonoInst * iftmp.520;
  int D.49838;
  int D.49839;
  unsigned int D.49840;
  sizetype D.49843;
  sizetype D.49844;
  sizetype D.49845;
  struct MonoInst * * D.49846;
  struct MonoInst * iftmp.521;
  int D.49849;
  unsigned int D.49850;
  sizetype D.49853;
  sizetype D.49854;
  struct MonoInst * * D.49855;
  _Bool D.49857;
  long int D.49858;
  long int D.49859;
  _Bool D.49862;
  long int D.49863;
  long int D.49864;
  unsigned char D.49867;
  unsigned char D.49868;
  unsigned char D.49869;
  unsigned char D.49870;
  int D.49874;
  struct MonoInst * D.49875;
  int D.49876;
  int D.49877;
  int D.49878;
  int D.49882;
  struct MonoInst * D.49883;
  int D.49884;
  int D.49885;
  unsigned int D.49888;
  unsigned int D.49889;
  int D.49890;
  unsigned char * D.49894;
  int D.49897;
  int D.49898;
  unsigned int D.49899;
  unsigned int D.49900;
  struct MonoBasicBlock * * D.49901;
  short unsigned int D.49906;
  short unsigned int D.49907;
  _Bool D.49908;
  short unsigned int D.49909;
  _Bool D.49910;
  _Bool D.49911;
  short unsigned int D.49917;
  _Bool D.49918;
  _Bool D.49919;
  _Bool D.49920;
  short unsigned int D.49922;
  short unsigned int D.49923;
  _Bool D.49924;
  short unsigned int D.49925;
  _Bool D.49926;
  _Bool D.49927;
  void * D.49930;
  struct MonoBasicBlock * * D.49931;
  struct MonoBasicBlock * * D.49932;
  unsigned int D.49938;
  unsigned int D.49939;
  int D.49940;
  short unsigned int D.49947;
  short unsigned int D.49948;
  _Bool D.49949;
  short unsigned int D.49950;
  _Bool D.49951;
  _Bool D.49952;
  short unsigned int D.49958;
  _Bool D.49959;
  _Bool D.49960;
  _Bool D.49961;
  short unsigned int D.49963;
  short unsigned int D.49964;
  _Bool D.49965;
  short unsigned int D.49966;
  _Bool D.49967;
  _Bool D.49968;
  unsigned char * D.49971;
  int D.49974;
  int D.49975;
  unsigned int D.49976;
  unsigned int D.49977;
  struct MonoBasicBlock * * D.49978;
  short unsigned int D.49983;
  short unsigned int D.49984;
  _Bool D.49985;
  short unsigned int D.49986;
  _Bool D.49987;
  _Bool D.49988;
  short unsigned int D.49994;
  _Bool D.49995;
  _Bool D.49996;
  _Bool D.49997;
  short unsigned int D.49999;
  short unsigned int D.50000;
  _Bool D.50001;
  short unsigned int D.50002;
  _Bool D.50003;
  _Bool D.50004;
  struct MonoClass * D.50006;
  struct MonoType * D.50007;
  int D.50008;
  int D.50012;
  struct MonoInst * D.50013;
  int D.50014;
  int D.50015;
  unsigned int D.50018;
  unsigned int D.50019;
  int D.50020;
  unsigned char * D.50024;
  int D.50027;
  int D.50028;
  unsigned int D.50029;
  unsigned int D.50030;
  struct MonoBasicBlock * * D.50031;
  short unsigned int D.50036;
  short unsigned int D.50037;
  _Bool D.50038;
  short unsigned int D.50039;
  _Bool D.50040;
  _Bool D.50041;
  short unsigned int D.50047;
  _Bool D.50048;
  _Bool D.50049;
  _Bool D.50050;
  short unsigned int D.50052;
  short unsigned int D.50053;
  _Bool D.50054;
  short unsigned int D.50055;
  _Bool D.50056;
  _Bool D.50057;
  void * D.50060;
  struct MonoBasicBlock * * D.50061;
  struct MonoBasicBlock * * D.50062;
  unsigned int D.50068;
  unsigned int D.50069;
  int D.50070;
  short unsigned int D.50077;
  short unsigned int D.50078;
  _Bool D.50079;
  short unsigned int D.50080;
  _Bool D.50081;
  _Bool D.50082;
  short unsigned int D.50088;
  _Bool D.50089;
  _Bool D.50090;
  _Bool D.50091;
  short unsigned int D.50093;
  short unsigned int D.50094;
  _Bool D.50095;
  short unsigned int D.50096;
  _Bool D.50097;
  _Bool D.50098;
  unsigned char * D.50101;
  int D.50104;
  int D.50105;
  unsigned int D.50106;
  unsigned int D.50107;
  struct MonoBasicBlock * * D.50108;
  short unsigned int D.50113;
  short unsigned int D.50114;
  _Bool D.50115;
  short unsigned int D.50116;
  _Bool D.50117;
  _Bool D.50118;
  short unsigned int D.50124;
  _Bool D.50125;
  _Bool D.50126;
  _Bool D.50127;
  short unsigned int D.50129;
  short unsigned int D.50130;
  _Bool D.50131;
  short unsigned int D.50132;
  _Bool D.50133;
  _Bool D.50134;
  unsigned int D.50138;
  short unsigned int D.50139;
  struct MonoClass * D.50140;
  struct MonoInst * alloc;
  struct MonoInst * ins;

  D.49369 = cfg->cbb;
  *out_cbb = D.49369;
  D.49370 = mono_class_is_nullable (klass);
  if (D.49370 != 0) goto <D.49371>; else goto <D.49372>;
  <D.49371>:
  {
    struct MonoMethod * method;

    method = mono_class_get_method_from_name (klass, "Box", 1);
    if (context_used != 0) goto <D.49373>; else goto <D.49374>;
    <D.49373>:
    {
      struct MonoInst * addr;
      struct MonoInst * rgctx;

      addr = emit_get_rgctx_method (cfg, context_used, method, 6);
      D.49375 = cfg->current_method;
      rgctx = emit_get_rgctx (cfg, D.49375, context_used);
      D.49377 = mono_method_signature (method);
      D.49376 = mono_emit_calli (cfg, D.49377, &val, addr, 0B, rgctx);
      return D.49376;
    }
    <D.49374>:
    {
      gboolean pass_vtable;
      gboolean pass_mrgctx;
      struct MonoInst * rgctx_arg;

      try
        {
          rgctx_arg = 0B;
          check_method_sharing (cfg, method, &pass_vtable, &pass_mrgctx);
          pass_mrgctx.512 = pass_mrgctx;
          D.49379 = pass_mrgctx.512 != 0;
          D.49380 = (long int) D.49379;
          D.49381 = __builtin_expect (D.49380, 0);
          if (D.49381 != 0) goto <D.49382>; else goto <D.49383>;
          <D.49382>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3830, "!pass_mrgctx");
          <D.49383>:
          pass_vtable.513 = pass_vtable;
          if (pass_vtable.513 != 0) goto <D.49385>; else goto <D.49386>;
          <D.49385>:
          {
            struct MonoVTable * vtable;

            D.49387 = method->klass;
            D.49388 = cfg->domain;
            vtable = mono_class_vtable (D.49388, D.49387);
            D.49389 = vtable == 0B;
            D.49390 = (long int) D.49389;
            D.49391 = __builtin_expect (D.49390, 0);
            if (D.49391 != 0) goto <D.49392>; else goto <D.49393>;
            <D.49392>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3835, "vtable");
            <D.49393>:
            D.49394 = cfg->mempool;
            rgctx_arg = mono_mempool_alloc (D.49394, 48);
            rgctx_arg->data.op[1].const_val = 0;
            D.49395 = rgctx_arg->data.op[1].const_val;
            rgctx_arg->data.op[0].const_val = D.49395;
            rgctx_arg->prev = 0B;
            D.49396 = rgctx_arg->prev;
            rgctx_arg->next = D.49396;
            D.49398 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.49399 = D.49398 & 64;
            if (D.49399 != 0) goto <D.49400>; else goto <D.49401>;
            <D.49400>:
            iftmp.514 = 738;
            goto <D.49402>;
            <D.49401>:
            iftmp.514 = 362;
            <D.49402>:
            rgctx_arg->opcode = iftmp.514;
            rgctx_arg->flags = 0;
            rgctx_arg->type = 0;
            rgctx_arg->dreg = -1;
            rgctx_arg->sreg3 = -1;
            D.49403 = rgctx_arg->sreg3;
            rgctx_arg->sreg2 = D.49403;
            D.49404 = rgctx_arg->sreg2;
            rgctx_arg->sreg1 = D.49404;
            D.49405 = cfg->ip;
            rgctx_arg->cil_code = D.49405;
            D.49398 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.49399 = D.49398 & 64;
            if (D.49399 != 0) goto <D.49406>; else goto <D.49407>;
            <D.49406>:
            {
              struct MonoInst * group;
              struct MonoInst * got_loc;

              got_loc = mono_get_got_var (cfg);
              D.49394 = cfg->mempool;
              group = mono_mempool_alloc (D.49394, 48);
              group->data.op[1].const_val = 0;
              D.49408 = group->data.op[1].const_val;
              group->data.op[0].const_val = D.49408;
              group->prev = 0B;
              D.49409 = group->prev;
              group->next = D.49409;
              group->opcode = 737;
              group->flags = 0;
              group->type = 0;
              group->dreg = -1;
              group->sreg3 = -1;
              D.49410 = group->sreg3;
              group->sreg2 = D.49410;
              D.49411 = group->sreg2;
              group->sreg1 = D.49411;
              D.49405 = cfg->ip;
              group->cil_code = D.49405;
              D.49398 = BIT_FIELD_REF <*cfg, 8, 3392>;
              D.49399 = D.49398 & 64;
              if (D.49399 != 0) goto <D.49413>; else goto <D.49414>;
              <D.49413>:
              iftmp.515 = vtable->klass;
              goto <D.49415>;
              <D.49414>:
              iftmp.515 = vtable;
              <D.49415>:
              group->data.op[0].src = iftmp.515;
              group->data.op[1].src = 14B;
              D.49416 = got_loc->dreg;
              rgctx_arg->sreg1 = D.49416;
              rgctx_arg->data.op[1].p = group;
            }
            goto <D.49417>;
            <D.49407>:
            D.49398 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.49399 = D.49398 & 64;
            if (D.49399 != 0) goto <D.49419>; else goto <D.49420>;
            <D.49419>:
            iftmp.516 = vtable->klass;
            goto <D.49421>;
            <D.49420>:
            iftmp.516 = vtable;
            <D.49421>:
            rgctx_arg->data.op[0].p = iftmp.516;
            rgctx_arg->data.op[1].src = 14B;
            <D.49417>:
            rgctx_arg->type = 3;
            D.49422 = alloc_dreg (cfg, 3);
            D.49423 = (int) D.49422;
            rgctx_arg->dreg = D.49423;
            D.49369 = cfg->cbb;
            D.49424 = D.49369->last_ins;
            if (D.49424 != 0B) goto <D.49425>; else goto <D.49426>;
            <D.49425>:
            D.49369 = cfg->cbb;
            D.49424 = D.49369->last_ins;
            D.49424->next = rgctx_arg;
            D.49369 = cfg->cbb;
            D.49424 = D.49369->last_ins;
            rgctx_arg->prev = D.49424;
            D.49369 = cfg->cbb;
            D.49369->last_ins = rgctx_arg;
            goto <D.49427>;
            <D.49426>:
            D.49369 = cfg->cbb;
            D.49369 = cfg->cbb;
            D.49369->last_ins = rgctx_arg;
            D.49424 = D.49369->last_ins;
            D.49369->code = D.49424;
            <D.49427>:
          }
          <D.49386>:
          D.49376 = mono_emit_method_call_full (cfg, method, 0B, 0, &val, 0B, 0B, rgctx_arg);
          return D.49376;
        }
      finally
        {
          pass_vtable = {CLOBBER};
          pass_mrgctx = {CLOBBER};
        }
    }
  }
  <D.49372>:
  D.49428 = mini_is_gsharedvt_klass (cfg, klass);
  if (D.49428 != 0) goto <D.49429>; else goto <D.49430>;
  <D.49429>:
  {
    struct MonoBasicBlock * is_ref_bb;
    struct MonoBasicBlock * is_nullable_bb;
    struct MonoBasicBlock * end_bb;
    struct MonoInst * res;
    struct MonoInst * is_ref;
    struct MonoInst * src_var;
    struct MonoInst * addr;
    int addr_reg;
    int dreg;

    D.49431 = alloc_ireg (cfg);
    dreg = (int) D.49431;
    D.49394 = cfg->mempool;
    is_ref_bb = mono_mempool_alloc0 (D.49394, 172);
    D.49432 = cfg->num_bblocks;
    D.49433 = D.49432;
    D.49434 = D.49433 + 1;
    cfg->num_bblocks = D.49434;
    D.49435 = (int) D.49433;
    is_ref_bb->block_num = D.49435;
    D.49394 = cfg->mempool;
    is_nullable_bb = mono_mempool_alloc0 (D.49394, 172);
    D.49432 = cfg->num_bblocks;
    D.49436 = D.49432;
    D.49437 = D.49436 + 1;
    cfg->num_bblocks = D.49437;
    D.49438 = (int) D.49436;
    is_nullable_bb->block_num = D.49438;
    D.49394 = cfg->mempool;
    end_bb = mono_mempool_alloc0 (D.49394, 172);
    D.49432 = cfg->num_bblocks;
    D.49439 = D.49432;
    D.49440 = D.49439 + 1;
    cfg->num_bblocks = D.49440;
    D.49441 = (int) D.49439;
    end_bb->block_num = D.49441;
    is_ref = emit_get_gsharedvt_info_klass (cfg, klass, 19);
    {
      struct MonoInst * inst;

      D.49394 = cfg->mempool;
      inst = mono_mempool_alloc (D.49394, 48);
      inst->data.op[1].const_val = 0;
      D.49442 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.49442;
      inst->prev = 0B;
      D.49443 = inst->prev;
      inst->next = D.49443;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.49444 = inst->sreg3;
      inst->sreg2 = D.49444;
      D.49445 = inst->sreg2;
      inst->sreg1 = D.49445;
      D.49405 = cfg->ip;
      inst->cil_code = D.49405;
      inst->dreg = -1;
      D.49446 = is_ref->dreg;
      inst->sreg1 = D.49446;
      inst->data.op[1].const_val = 1;
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      if (D.49424 != 0B) goto <D.49447>; else goto <D.49448>;
      <D.49447>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49424->next = inst;
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      inst->prev = D.49424;
      D.49369 = cfg->cbb;
      D.49369->last_ins = inst;
      goto <D.49449>;
      <D.49448>:
      D.49369 = cfg->cbb;
      D.49369 = cfg->cbb;
      D.49369->last_ins = inst;
      D.49424 = D.49369->last_ins;
      D.49369->code = D.49424;
      <D.49449>:
    }
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.49394 = cfg->mempool;
      ins = mono_mempool_alloc (D.49394, 48);
      ins->data.op[1].const_val = 0;
      D.49450 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.49450;
      ins->prev = 0B;
      D.49451 = ins->prev;
      ins->next = D.49451;
      ins->opcode = 652;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.49452 = ins->sreg3;
      ins->sreg2 = D.49452;
      D.49453 = ins->sreg2;
      ins->sreg1 = D.49453;
      D.49405 = cfg->ip;
      ins->cil_code = D.49405;
      if (0 != 0) goto <D.49454>; else goto <D.49455>;
      <D.49454>:
      D.49394 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.49394, 172);
      D.49432 = cfg->num_bblocks;
      D.49456 = D.49432;
      D.49457 = D.49456 + 1;
      cfg->num_bblocks = D.49457;
      D.49458 = (int) D.49456;
      falsebb->block_num = D.49458;
      ins->data.op[0].target_block = is_ref_bb;
      D.49369 = cfg->cbb;
      mono_link_bblock (cfg, D.49369, is_ref_bb);
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      if (D.49424 != 0B) goto <D.49459>; else goto <D.49460>;
      <D.49459>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49424->next = ins;
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      ins->prev = D.49424;
      D.49369 = cfg->cbb;
      D.49369->last_ins = ins;
      goto <D.49461>;
      <D.49460>:
      D.49369 = cfg->cbb;
      D.49369 = cfg->cbb;
      D.49369->last_ins = ins;
      D.49424 = D.49369->last_ins;
      D.49369->code = D.49424;
      <D.49461>:
      D.49462 = falsebb->cil_code;
      if (D.49462 != 0B) goto <D.49463>; else goto <D.49464>;
      <D.49463>:
      D.49465 = cfg->cil_offset_to_bb;
      D.49462 = falsebb->cil_code;
      D.49466 = (int) D.49462;
      D.49467 = cfg->cil_start;
      D.49468 = (int) D.49467;
      D.49469 = D.49466 - D.49468;
      D.49470 = (unsigned int) D.49469;
      D.49471 = D.49470 * 4;
      D.49472 = D.49465 + D.49471;
      *D.49472 = falsebb;
      <D.49464>:
      D.49473 = cfg->real_offset;
      falsebb->real_offset = D.49473;
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      if (D.49424 != 0B) goto <D.49477>; else goto <D.49474>;
      <D.49477>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49478 = D.49424->opcode;
      D.49479 = D.49478 + 64981;
      D.49480 = D.49479 <= 9;
      D.49481 = D.49478 + 64874;
      D.49482 = D.49481 <= 9;
      D.49483 = D.49480 | D.49482;
      if (D.49483 != 0) goto <D.49475>; else goto <D.49484>;
      <D.49484>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49485 = D.49424->opcode;
      D.49486 = D.49485 + 64884;
      if (D.49486 <= 9) goto <D.49475>; else goto <D.49474>;
      <D.49475>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49487 = D.49424->data.op[1].many_blocks;
      D.49488 = D.49487 + 4;
      D.49489 = *D.49488;
      if (D.49489 == 0B) goto <D.49490>; else goto <D.49474>;
      <D.49490>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49487 = D.49424->data.op[1].many_blocks;
      D.49488 = D.49487 + 4;
      *D.49488 = falsebb;
      D.49369 = cfg->cbb;
      mono_link_bblock (cfg, D.49369, falsebb);
      goto <D.49476>;
      <D.49474>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      if (D.49424 == 0B) goto <D.49491>; else goto <D.49493>;
      <D.49493>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49494 = D.49424->opcode;
      D.49495 = D.49494 != 446;
      D.49496 = D.49494 != 763;
      D.49497 = D.49495 & D.49496;
      if (D.49497 != 0) goto <D.49498>; else goto <D.49492>;
      <D.49498>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49499 = D.49424->opcode;
      D.49500 = D.49499 + 64981;
      D.49501 = D.49500 > 9;
      D.49502 = D.49499 + 64874;
      D.49503 = D.49502 > 9;
      D.49504 = D.49501 & D.49503;
      if (D.49504 != 0) goto <D.49505>; else goto <D.49492>;
      <D.49505>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49485 = D.49424->opcode;
      D.49486 = D.49485 + 64884;
      if (D.49486 > 9) goto <D.49491>; else goto <D.49492>;
      <D.49491>:
      D.49369 = cfg->cbb;
      mono_link_bblock (cfg, D.49369, falsebb);
      <D.49492>:
      <D.49476>:
      D.49369 = cfg->cbb;
      D.49369->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.49506>;
      <D.49455>:
      D.49394 = cfg->mempool;
      D.49507 = mono_mempool_alloc (D.49394, 8);
      ins->data.op[1].many_blocks = D.49507;
      D.49508 = ins->data.op[1].many_blocks;
      *D.49508 = is_ref_bb;
      D.49508 = ins->data.op[1].many_blocks;
      D.49509 = D.49508 + 4;
      *D.49509 = 0B;
      D.49369 = cfg->cbb;
      mono_link_bblock (cfg, D.49369, is_ref_bb);
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      if (D.49424 != 0B) goto <D.49510>; else goto <D.49511>;
      <D.49510>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49424->next = ins;
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      ins->prev = D.49424;
      D.49369 = cfg->cbb;
      D.49369->last_ins = ins;
      goto <D.49512>;
      <D.49511>:
      D.49369 = cfg->cbb;
      D.49369 = cfg->cbb;
      D.49369->last_ins = ins;
      D.49424 = D.49369->last_ins;
      D.49369->code = D.49424;
      <D.49512>:
      D.49398 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.49513 = D.49398 & 8;
      if (D.49513 == 0) goto <D.49514>; else goto <D.49515>;
      <D.49514>:
      D.49394 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.49394, 172);
      D.49432 = cfg->num_bblocks;
      D.49516 = D.49432;
      D.49517 = D.49516 + 1;
      cfg->num_bblocks = D.49517;
      D.49518 = (int) D.49516;
      falsebb->block_num = D.49518;
      D.49508 = ins->data.op[1].many_blocks;
      D.49509 = D.49508 + 4;
      *D.49509 = falsebb;
      D.49369 = cfg->cbb;
      mono_link_bblock (cfg, D.49369, falsebb);
      D.49462 = falsebb->cil_code;
      if (D.49462 != 0B) goto <D.49519>; else goto <D.49520>;
      <D.49519>:
      D.49465 = cfg->cil_offset_to_bb;
      D.49462 = falsebb->cil_code;
      D.49466 = (int) D.49462;
      D.49467 = cfg->cil_start;
      D.49468 = (int) D.49467;
      D.49469 = D.49466 - D.49468;
      D.49470 = (unsigned int) D.49469;
      D.49471 = D.49470 * 4;
      D.49472 = D.49465 + D.49471;
      *D.49472 = falsebb;
      <D.49520>:
      D.49473 = cfg->real_offset;
      falsebb->real_offset = D.49473;
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      if (D.49424 != 0B) goto <D.49524>; else goto <D.49521>;
      <D.49524>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49525 = D.49424->opcode;
      D.49526 = D.49525 + 64981;
      D.49527 = D.49526 <= 9;
      D.49528 = D.49525 + 64874;
      D.49529 = D.49528 <= 9;
      D.49530 = D.49527 | D.49529;
      if (D.49530 != 0) goto <D.49522>; else goto <D.49531>;
      <D.49531>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49485 = D.49424->opcode;
      D.49486 = D.49485 + 64884;
      if (D.49486 <= 9) goto <D.49522>; else goto <D.49521>;
      <D.49522>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49487 = D.49424->data.op[1].many_blocks;
      D.49488 = D.49487 + 4;
      D.49489 = *D.49488;
      if (D.49489 == 0B) goto <D.49532>; else goto <D.49521>;
      <D.49532>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49487 = D.49424->data.op[1].many_blocks;
      D.49488 = D.49487 + 4;
      *D.49488 = falsebb;
      D.49369 = cfg->cbb;
      mono_link_bblock (cfg, D.49369, falsebb);
      goto <D.49523>;
      <D.49521>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      if (D.49424 == 0B) goto <D.49533>; else goto <D.49535>;
      <D.49535>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49536 = D.49424->opcode;
      D.49537 = D.49536 != 446;
      D.49538 = D.49536 != 763;
      D.49539 = D.49537 & D.49538;
      if (D.49539 != 0) goto <D.49540>; else goto <D.49534>;
      <D.49540>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49541 = D.49424->opcode;
      D.49542 = D.49541 + 64981;
      D.49543 = D.49542 > 9;
      D.49544 = D.49541 + 64874;
      D.49545 = D.49544 > 9;
      D.49546 = D.49543 & D.49545;
      if (D.49546 != 0) goto <D.49547>; else goto <D.49534>;
      <D.49547>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49485 = D.49424->opcode;
      D.49486 = D.49485 + 64884;
      if (D.49486 > 9) goto <D.49533>; else goto <D.49534>;
      <D.49533>:
      D.49369 = cfg->cbb;
      mono_link_bblock (cfg, D.49369, falsebb);
      <D.49534>:
      <D.49523>:
      D.49369 = cfg->cbb;
      D.49369->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.49548>;
      <D.49515>:
      D.49369 = cfg->cbb;
      D.49369->extended = 1;
      <D.49548>:
      <D.49506>:
    }
    {
      struct MonoInst * inst;

      D.49394 = cfg->mempool;
      inst = mono_mempool_alloc (D.49394, 48);
      inst->data.op[1].const_val = 0;
      D.49549 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.49549;
      inst->prev = 0B;
      D.49550 = inst->prev;
      inst->next = D.49550;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.49551 = inst->sreg3;
      inst->sreg2 = D.49551;
      D.49552 = inst->sreg2;
      inst->sreg1 = D.49552;
      D.49405 = cfg->ip;
      inst->cil_code = D.49405;
      inst->dreg = -1;
      D.49446 = is_ref->dreg;
      inst->sreg1 = D.49446;
      inst->data.op[1].const_val = 2;
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      if (D.49424 != 0B) goto <D.49553>; else goto <D.49554>;
      <D.49553>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49424->next = inst;
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      inst->prev = D.49424;
      D.49369 = cfg->cbb;
      D.49369->last_ins = inst;
      goto <D.49555>;
      <D.49554>:
      D.49369 = cfg->cbb;
      D.49369 = cfg->cbb;
      D.49369->last_ins = inst;
      D.49424 = D.49369->last_ins;
      D.49369->code = D.49424;
      <D.49555>:
    }
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.49394 = cfg->mempool;
      ins = mono_mempool_alloc (D.49394, 48);
      ins->data.op[1].const_val = 0;
      D.49556 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.49556;
      ins->prev = 0B;
      D.49557 = ins->prev;
      ins->next = D.49557;
      ins->opcode = 652;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.49558 = ins->sreg3;
      ins->sreg2 = D.49558;
      D.49559 = ins->sreg2;
      ins->sreg1 = D.49559;
      D.49405 = cfg->ip;
      ins->cil_code = D.49405;
      if (0 != 0) goto <D.49560>; else goto <D.49561>;
      <D.49560>:
      D.49394 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.49394, 172);
      D.49432 = cfg->num_bblocks;
      D.49562 = D.49432;
      D.49563 = D.49562 + 1;
      cfg->num_bblocks = D.49563;
      D.49564 = (int) D.49562;
      falsebb->block_num = D.49564;
      ins->data.op[0].target_block = is_nullable_bb;
      D.49369 = cfg->cbb;
      mono_link_bblock (cfg, D.49369, is_nullable_bb);
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      if (D.49424 != 0B) goto <D.49565>; else goto <D.49566>;
      <D.49565>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49424->next = ins;
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      ins->prev = D.49424;
      D.49369 = cfg->cbb;
      D.49369->last_ins = ins;
      goto <D.49567>;
      <D.49566>:
      D.49369 = cfg->cbb;
      D.49369 = cfg->cbb;
      D.49369->last_ins = ins;
      D.49424 = D.49369->last_ins;
      D.49369->code = D.49424;
      <D.49567>:
      D.49568 = falsebb->cil_code;
      if (D.49568 != 0B) goto <D.49569>; else goto <D.49570>;
      <D.49569>:
      D.49465 = cfg->cil_offset_to_bb;
      D.49568 = falsebb->cil_code;
      D.49571 = (int) D.49568;
      D.49467 = cfg->cil_start;
      D.49468 = (int) D.49467;
      D.49572 = D.49571 - D.49468;
      D.49573 = (unsigned int) D.49572;
      D.49574 = D.49573 * 4;
      D.49575 = D.49465 + D.49574;
      *D.49575 = falsebb;
      <D.49570>:
      D.49473 = cfg->real_offset;
      falsebb->real_offset = D.49473;
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      if (D.49424 != 0B) goto <D.49579>; else goto <D.49576>;
      <D.49579>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49580 = D.49424->opcode;
      D.49581 = D.49580 + 64981;
      D.49582 = D.49581 <= 9;
      D.49583 = D.49580 + 64874;
      D.49584 = D.49583 <= 9;
      D.49585 = D.49582 | D.49584;
      if (D.49585 != 0) goto <D.49577>; else goto <D.49586>;
      <D.49586>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49485 = D.49424->opcode;
      D.49486 = D.49485 + 64884;
      if (D.49486 <= 9) goto <D.49577>; else goto <D.49576>;
      <D.49577>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49487 = D.49424->data.op[1].many_blocks;
      D.49488 = D.49487 + 4;
      D.49489 = *D.49488;
      if (D.49489 == 0B) goto <D.49587>; else goto <D.49576>;
      <D.49587>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49487 = D.49424->data.op[1].many_blocks;
      D.49488 = D.49487 + 4;
      *D.49488 = falsebb;
      D.49369 = cfg->cbb;
      mono_link_bblock (cfg, D.49369, falsebb);
      goto <D.49578>;
      <D.49576>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      if (D.49424 == 0B) goto <D.49588>; else goto <D.49590>;
      <D.49590>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49591 = D.49424->opcode;
      D.49592 = D.49591 != 446;
      D.49593 = D.49591 != 763;
      D.49594 = D.49592 & D.49593;
      if (D.49594 != 0) goto <D.49595>; else goto <D.49589>;
      <D.49595>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49596 = D.49424->opcode;
      D.49597 = D.49596 + 64981;
      D.49598 = D.49597 > 9;
      D.49599 = D.49596 + 64874;
      D.49600 = D.49599 > 9;
      D.49601 = D.49598 & D.49600;
      if (D.49601 != 0) goto <D.49602>; else goto <D.49589>;
      <D.49602>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49485 = D.49424->opcode;
      D.49486 = D.49485 + 64884;
      if (D.49486 > 9) goto <D.49588>; else goto <D.49589>;
      <D.49588>:
      D.49369 = cfg->cbb;
      mono_link_bblock (cfg, D.49369, falsebb);
      <D.49589>:
      <D.49578>:
      D.49369 = cfg->cbb;
      D.49369->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.49603>;
      <D.49561>:
      D.49394 = cfg->mempool;
      D.49604 = mono_mempool_alloc (D.49394, 8);
      ins->data.op[1].many_blocks = D.49604;
      D.49605 = ins->data.op[1].many_blocks;
      *D.49605 = is_nullable_bb;
      D.49605 = ins->data.op[1].many_blocks;
      D.49606 = D.49605 + 4;
      *D.49606 = 0B;
      D.49369 = cfg->cbb;
      mono_link_bblock (cfg, D.49369, is_nullable_bb);
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      if (D.49424 != 0B) goto <D.49607>; else goto <D.49608>;
      <D.49607>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49424->next = ins;
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      ins->prev = D.49424;
      D.49369 = cfg->cbb;
      D.49369->last_ins = ins;
      goto <D.49609>;
      <D.49608>:
      D.49369 = cfg->cbb;
      D.49369 = cfg->cbb;
      D.49369->last_ins = ins;
      D.49424 = D.49369->last_ins;
      D.49369->code = D.49424;
      <D.49609>:
      D.49398 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.49513 = D.49398 & 8;
      if (D.49513 == 0) goto <D.49610>; else goto <D.49611>;
      <D.49610>:
      D.49394 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.49394, 172);
      D.49432 = cfg->num_bblocks;
      D.49612 = D.49432;
      D.49613 = D.49612 + 1;
      cfg->num_bblocks = D.49613;
      D.49614 = (int) D.49612;
      falsebb->block_num = D.49614;
      D.49605 = ins->data.op[1].many_blocks;
      D.49606 = D.49605 + 4;
      *D.49606 = falsebb;
      D.49369 = cfg->cbb;
      mono_link_bblock (cfg, D.49369, falsebb);
      D.49568 = falsebb->cil_code;
      if (D.49568 != 0B) goto <D.49615>; else goto <D.49616>;
      <D.49615>:
      D.49465 = cfg->cil_offset_to_bb;
      D.49568 = falsebb->cil_code;
      D.49571 = (int) D.49568;
      D.49467 = cfg->cil_start;
      D.49468 = (int) D.49467;
      D.49572 = D.49571 - D.49468;
      D.49573 = (unsigned int) D.49572;
      D.49574 = D.49573 * 4;
      D.49575 = D.49465 + D.49574;
      *D.49575 = falsebb;
      <D.49616>:
      D.49473 = cfg->real_offset;
      falsebb->real_offset = D.49473;
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      if (D.49424 != 0B) goto <D.49620>; else goto <D.49617>;
      <D.49620>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49621 = D.49424->opcode;
      D.49622 = D.49621 + 64981;
      D.49623 = D.49622 <= 9;
      D.49624 = D.49621 + 64874;
      D.49625 = D.49624 <= 9;
      D.49626 = D.49623 | D.49625;
      if (D.49626 != 0) goto <D.49618>; else goto <D.49627>;
      <D.49627>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49485 = D.49424->opcode;
      D.49486 = D.49485 + 64884;
      if (D.49486 <= 9) goto <D.49618>; else goto <D.49617>;
      <D.49618>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49487 = D.49424->data.op[1].many_blocks;
      D.49488 = D.49487 + 4;
      D.49489 = *D.49488;
      if (D.49489 == 0B) goto <D.49628>; else goto <D.49617>;
      <D.49628>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49487 = D.49424->data.op[1].many_blocks;
      D.49488 = D.49487 + 4;
      *D.49488 = falsebb;
      D.49369 = cfg->cbb;
      mono_link_bblock (cfg, D.49369, falsebb);
      goto <D.49619>;
      <D.49617>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      if (D.49424 == 0B) goto <D.49629>; else goto <D.49631>;
      <D.49631>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49632 = D.49424->opcode;
      D.49633 = D.49632 != 446;
      D.49634 = D.49632 != 763;
      D.49635 = D.49633 & D.49634;
      if (D.49635 != 0) goto <D.49636>; else goto <D.49630>;
      <D.49636>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49637 = D.49424->opcode;
      D.49638 = D.49637 + 64981;
      D.49639 = D.49638 > 9;
      D.49640 = D.49637 + 64874;
      D.49641 = D.49640 > 9;
      D.49642 = D.49639 & D.49641;
      if (D.49642 != 0) goto <D.49643>; else goto <D.49630>;
      <D.49643>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49485 = D.49424->opcode;
      D.49486 = D.49485 + 64884;
      if (D.49486 > 9) goto <D.49629>; else goto <D.49630>;
      <D.49629>:
      D.49369 = cfg->cbb;
      mono_link_bblock (cfg, D.49369, falsebb);
      <D.49630>:
      <D.49619>:
      D.49369 = cfg->cbb;
      D.49369->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.49644>;
      <D.49611>:
      D.49369 = cfg->cbb;
      D.49369->extended = 1;
      <D.49644>:
      <D.49603>:
    }
    alloc = handle_alloc (cfg, klass, 1, context_used);
    if (alloc == 0B) goto <D.49645>; else goto <D.49646>;
    <D.49645>:
    D.49376 = 0B;
    return D.49376;
    <D.49646>:
    D.49394 = cfg->mempool;
    ins = mono_mempool_alloc (D.49394, 48);
    ins->data.op[1].const_val = 0;
    D.49647 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.49647;
    ins->prev = 0B;
    D.49648 = ins->prev;
    ins->next = D.49648;
    D.49649 = &klass->byval_arg;
    D.49650 = mono_type_to_store_membase (cfg, D.49649);
    D.49651 = (short unsigned int) D.49650;
    ins->opcode = D.49651;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.49652 = ins->sreg3;
    ins->sreg2 = D.49652;
    D.49653 = ins->sreg2;
    ins->sreg1 = D.49653;
    D.49405 = cfg->ip;
    ins->cil_code = D.49405;
    val.517 = val;
    D.49655 = val.517->dreg;
    ins->sreg1 = D.49655;
    D.49656 = alloc->dreg;
    ins->dreg = D.49656;
    ins->data.op[0].const_val = 8;
    D.49649 = &klass->byval_arg;
    type_to_eval_stack_type (cfg, D.49649, ins);
    D.49649 = &klass->byval_arg;
    D.49657 = mono_class_from_mono_type (D.49649);
    ins->klass = D.49657;
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    if (D.49424 != 0B) goto <D.49658>; else goto <D.49659>;
    <D.49658>:
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    D.49424->next = ins;
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    ins->prev = D.49424;
    D.49369 = cfg->cbb;
    D.49369->last_ins = ins;
    goto <D.49660>;
    <D.49659>:
    D.49369 = cfg->cbb;
    D.49369 = cfg->cbb;
    D.49369->last_ins = ins;
    D.49424 = D.49369->last_ins;
    D.49369->code = D.49424;
    <D.49660>:
    ins->opcode = 390;
    D.49394 = cfg->mempool;
    res = mono_mempool_alloc (D.49394, 48);
    res->data.op[1].const_val = 0;
    D.49661 = res->data.op[1].const_val;
    res->data.op[0].const_val = D.49661;
    res->prev = 0B;
    D.49662 = res->prev;
    res->next = D.49662;
    res->opcode = 428;
    res->flags = 0;
    res->type = 0;
    res->dreg = -1;
    res->sreg3 = -1;
    D.49663 = res->sreg3;
    res->sreg2 = D.49663;
    D.49664 = res->sreg2;
    res->sreg1 = D.49664;
    D.49405 = cfg->ip;
    res->cil_code = D.49405;
    res->dreg = dreg;
    D.49656 = alloc->dreg;
    res->sreg1 = D.49656;
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    if (D.49424 != 0B) goto <D.49665>; else goto <D.49666>;
    <D.49665>:
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    D.49424->next = res;
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    res->prev = D.49424;
    D.49369 = cfg->cbb;
    D.49369->last_ins = res;
    goto <D.49667>;
    <D.49666>:
    D.49369 = cfg->cbb;
    D.49369 = cfg->cbb;
    D.49369->last_ins = res;
    D.49424 = D.49369->last_ins;
    D.49369->code = D.49424;
    <D.49667>:
    res->type = 6;
    res->klass = klass;
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.49394 = cfg->mempool;
      ins = mono_mempool_alloc (D.49394, 48);
      ins->data.op[1].const_val = 0;
      D.49668 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.49668;
      ins->prev = 0B;
      D.49669 = ins->prev;
      ins->next = D.49669;
      ins->opcode = 446;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.49670 = ins->sreg3;
      ins->sreg2 = D.49670;
      D.49671 = ins->sreg2;
      ins->sreg1 = D.49671;
      D.49405 = cfg->ip;
      ins->cil_code = D.49405;
      if (1 != 0) goto <D.49672>; else goto <D.49673>;
      <D.49672>:
      D.49394 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.49394, 172);
      D.49432 = cfg->num_bblocks;
      D.49674 = D.49432;
      D.49675 = D.49674 + 1;
      cfg->num_bblocks = D.49675;
      D.49676 = (int) D.49674;
      falsebb->block_num = D.49676;
      ins->data.op[0].target_block = end_bb;
      D.49369 = cfg->cbb;
      mono_link_bblock (cfg, D.49369, end_bb);
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      if (D.49424 != 0B) goto <D.49677>; else goto <D.49678>;
      <D.49677>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49424->next = ins;
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      ins->prev = D.49424;
      D.49369 = cfg->cbb;
      D.49369->last_ins = ins;
      goto <D.49679>;
      <D.49678>:
      D.49369 = cfg->cbb;
      D.49369 = cfg->cbb;
      D.49369->last_ins = ins;
      D.49424 = D.49369->last_ins;
      D.49369->code = D.49424;
      <D.49679>:
      D.49680 = falsebb->cil_code;
      if (D.49680 != 0B) goto <D.49681>; else goto <D.49682>;
      <D.49681>:
      D.49465 = cfg->cil_offset_to_bb;
      D.49680 = falsebb->cil_code;
      D.49683 = (int) D.49680;
      D.49467 = cfg->cil_start;
      D.49468 = (int) D.49467;
      D.49684 = D.49683 - D.49468;
      D.49685 = (unsigned int) D.49684;
      D.49686 = D.49685 * 4;
      D.49687 = D.49465 + D.49686;
      *D.49687 = falsebb;
      <D.49682>:
      D.49473 = cfg->real_offset;
      falsebb->real_offset = D.49473;
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      if (D.49424 != 0B) goto <D.49691>; else goto <D.49688>;
      <D.49691>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49692 = D.49424->opcode;
      D.49693 = D.49692 + 64981;
      D.49694 = D.49693 <= 9;
      D.49695 = D.49692 + 64874;
      D.49696 = D.49695 <= 9;
      D.49697 = D.49694 | D.49696;
      if (D.49697 != 0) goto <D.49689>; else goto <D.49698>;
      <D.49698>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49485 = D.49424->opcode;
      D.49486 = D.49485 + 64884;
      if (D.49486 <= 9) goto <D.49689>; else goto <D.49688>;
      <D.49689>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49487 = D.49424->data.op[1].many_blocks;
      D.49488 = D.49487 + 4;
      D.49489 = *D.49488;
      if (D.49489 == 0B) goto <D.49699>; else goto <D.49688>;
      <D.49699>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49487 = D.49424->data.op[1].many_blocks;
      D.49488 = D.49487 + 4;
      *D.49488 = falsebb;
      D.49369 = cfg->cbb;
      mono_link_bblock (cfg, D.49369, falsebb);
      goto <D.49690>;
      <D.49688>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      if (D.49424 == 0B) goto <D.49700>; else goto <D.49702>;
      <D.49702>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49703 = D.49424->opcode;
      D.49704 = D.49703 != 446;
      D.49705 = D.49703 != 763;
      D.49706 = D.49704 & D.49705;
      if (D.49706 != 0) goto <D.49707>; else goto <D.49701>;
      <D.49707>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49708 = D.49424->opcode;
      D.49709 = D.49708 + 64981;
      D.49710 = D.49709 > 9;
      D.49711 = D.49708 + 64874;
      D.49712 = D.49711 > 9;
      D.49713 = D.49710 & D.49712;
      if (D.49713 != 0) goto <D.49714>; else goto <D.49701>;
      <D.49714>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49485 = D.49424->opcode;
      D.49486 = D.49485 + 64884;
      if (D.49486 > 9) goto <D.49700>; else goto <D.49701>;
      <D.49700>:
      D.49369 = cfg->cbb;
      mono_link_bblock (cfg, D.49369, falsebb);
      <D.49701>:
      <D.49690>:
      D.49369 = cfg->cbb;
      D.49369->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.49715>;
      <D.49673>:
      D.49394 = cfg->mempool;
      D.49716 = mono_mempool_alloc (D.49394, 8);
      ins->data.op[1].many_blocks = D.49716;
      D.49717 = ins->data.op[1].many_blocks;
      *D.49717 = end_bb;
      D.49717 = ins->data.op[1].many_blocks;
      D.49718 = D.49717 + 4;
      *D.49718 = 0B;
      D.49369 = cfg->cbb;
      mono_link_bblock (cfg, D.49369, end_bb);
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      if (D.49424 != 0B) goto <D.49719>; else goto <D.49720>;
      <D.49719>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49424->next = ins;
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      ins->prev = D.49424;
      D.49369 = cfg->cbb;
      D.49369->last_ins = ins;
      goto <D.49721>;
      <D.49720>:
      D.49369 = cfg->cbb;
      D.49369 = cfg->cbb;
      D.49369->last_ins = ins;
      D.49424 = D.49369->last_ins;
      D.49369->code = D.49424;
      <D.49721>:
      D.49398 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.49513 = D.49398 & 8;
      if (D.49513 == 0) goto <D.49722>; else goto <D.49723>;
      <D.49722>:
      D.49394 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.49394, 172);
      D.49432 = cfg->num_bblocks;
      D.49724 = D.49432;
      D.49725 = D.49724 + 1;
      cfg->num_bblocks = D.49725;
      D.49726 = (int) D.49724;
      falsebb->block_num = D.49726;
      D.49717 = ins->data.op[1].many_blocks;
      D.49718 = D.49717 + 4;
      *D.49718 = falsebb;
      D.49369 = cfg->cbb;
      mono_link_bblock (cfg, D.49369, falsebb);
      D.49680 = falsebb->cil_code;
      if (D.49680 != 0B) goto <D.49727>; else goto <D.49728>;
      <D.49727>:
      D.49465 = cfg->cil_offset_to_bb;
      D.49680 = falsebb->cil_code;
      D.49683 = (int) D.49680;
      D.49467 = cfg->cil_start;
      D.49468 = (int) D.49467;
      D.49684 = D.49683 - D.49468;
      D.49685 = (unsigned int) D.49684;
      D.49686 = D.49685 * 4;
      D.49687 = D.49465 + D.49686;
      *D.49687 = falsebb;
      <D.49728>:
      D.49473 = cfg->real_offset;
      falsebb->real_offset = D.49473;
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      if (D.49424 != 0B) goto <D.49732>; else goto <D.49729>;
      <D.49732>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49733 = D.49424->opcode;
      D.49734 = D.49733 + 64981;
      D.49735 = D.49734 <= 9;
      D.49736 = D.49733 + 64874;
      D.49737 = D.49736 <= 9;
      D.49738 = D.49735 | D.49737;
      if (D.49738 != 0) goto <D.49730>; else goto <D.49739>;
      <D.49739>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49485 = D.49424->opcode;
      D.49486 = D.49485 + 64884;
      if (D.49486 <= 9) goto <D.49730>; else goto <D.49729>;
      <D.49730>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49487 = D.49424->data.op[1].many_blocks;
      D.49488 = D.49487 + 4;
      D.49489 = *D.49488;
      if (D.49489 == 0B) goto <D.49740>; else goto <D.49729>;
      <D.49740>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49487 = D.49424->data.op[1].many_blocks;
      D.49488 = D.49487 + 4;
      *D.49488 = falsebb;
      D.49369 = cfg->cbb;
      mono_link_bblock (cfg, D.49369, falsebb);
      goto <D.49731>;
      <D.49729>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      if (D.49424 == 0B) goto <D.49741>; else goto <D.49743>;
      <D.49743>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49744 = D.49424->opcode;
      D.49745 = D.49744 != 446;
      D.49746 = D.49744 != 763;
      D.49747 = D.49745 & D.49746;
      if (D.49747 != 0) goto <D.49748>; else goto <D.49742>;
      <D.49748>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49749 = D.49424->opcode;
      D.49750 = D.49749 + 64981;
      D.49751 = D.49750 > 9;
      D.49752 = D.49749 + 64874;
      D.49753 = D.49752 > 9;
      D.49754 = D.49751 & D.49753;
      if (D.49754 != 0) goto <D.49755>; else goto <D.49742>;
      <D.49755>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49485 = D.49424->opcode;
      D.49486 = D.49485 + 64884;
      if (D.49486 > 9) goto <D.49741>; else goto <D.49742>;
      <D.49741>:
      D.49369 = cfg->cbb;
      mono_link_bblock (cfg, D.49369, falsebb);
      <D.49742>:
      <D.49731>:
      D.49369 = cfg->cbb;
      D.49369->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.49756>;
      <D.49723>:
      D.49369 = cfg->cbb;
      D.49369->extended = 1;
      <D.49756>:
      <D.49715>:
    }
    D.49757 = is_ref_bb->cil_code;
    if (D.49757 != 0B) goto <D.49758>; else goto <D.49759>;
    <D.49758>:
    D.49465 = cfg->cil_offset_to_bb;
    D.49757 = is_ref_bb->cil_code;
    D.49760 = (int) D.49757;
    D.49467 = cfg->cil_start;
    D.49468 = (int) D.49467;
    D.49761 = D.49760 - D.49468;
    D.49762 = (unsigned int) D.49761;
    D.49763 = D.49762 * 4;
    D.49764 = D.49465 + D.49763;
    *D.49764 = is_ref_bb;
    <D.49759>:
    D.49473 = cfg->real_offset;
    is_ref_bb->real_offset = D.49473;
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    if (D.49424 != 0B) goto <D.49768>; else goto <D.49765>;
    <D.49768>:
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    D.49769 = D.49424->opcode;
    D.49770 = D.49769 + 64981;
    D.49771 = D.49770 <= 9;
    D.49772 = D.49769 + 64874;
    D.49773 = D.49772 <= 9;
    D.49774 = D.49771 | D.49773;
    if (D.49774 != 0) goto <D.49766>; else goto <D.49775>;
    <D.49775>:
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    D.49485 = D.49424->opcode;
    D.49486 = D.49485 + 64884;
    if (D.49486 <= 9) goto <D.49766>; else goto <D.49765>;
    <D.49766>:
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    D.49487 = D.49424->data.op[1].many_blocks;
    D.49488 = D.49487 + 4;
    D.49489 = *D.49488;
    if (D.49489 == 0B) goto <D.49776>; else goto <D.49765>;
    <D.49776>:
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    D.49487 = D.49424->data.op[1].many_blocks;
    D.49488 = D.49487 + 4;
    *D.49488 = is_ref_bb;
    D.49369 = cfg->cbb;
    mono_link_bblock (cfg, D.49369, is_ref_bb);
    goto <D.49767>;
    <D.49765>:
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    if (D.49424 == 0B) goto <D.49777>; else goto <D.49779>;
    <D.49779>:
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    D.49780 = D.49424->opcode;
    D.49781 = D.49780 != 446;
    D.49782 = D.49780 != 763;
    D.49783 = D.49781 & D.49782;
    if (D.49783 != 0) goto <D.49784>; else goto <D.49778>;
    <D.49784>:
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    D.49785 = D.49424->opcode;
    D.49786 = D.49785 + 64981;
    D.49787 = D.49786 > 9;
    D.49788 = D.49785 + 64874;
    D.49789 = D.49788 > 9;
    D.49790 = D.49787 & D.49789;
    if (D.49790 != 0) goto <D.49791>; else goto <D.49778>;
    <D.49791>:
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    D.49485 = D.49424->opcode;
    D.49486 = D.49485 + 64884;
    if (D.49486 > 9) goto <D.49777>; else goto <D.49778>;
    <D.49777>:
    D.49369 = cfg->cbb;
    mono_link_bblock (cfg, D.49369, is_ref_bb);
    <D.49778>:
    <D.49767>:
    D.49369 = cfg->cbb;
    D.49369->next_bb = is_ref_bb;
    cfg->cbb = is_ref_bb;
    D.49792 = alloc_ireg (cfg);
    addr_reg = (int) D.49792;
    val.517 = val;
    D.49655 = val.517->dreg;
    D.49794 = (unsigned int) D.49655;
    D.49795 = cfg->vreg_to_inst_len;
    if (D.49794 < D.49795) goto <D.49796>; else goto <D.49797>;
    <D.49796>:
    D.49798 = cfg->vreg_to_inst;
    val.517 = val;
    D.49655 = val.517->dreg;
    D.49799 = (unsigned int) D.49655;
    D.49800 = D.49799 * 4;
    D.49801 = D.49798 + D.49800;
    iftmp.518 = *D.49801;
    goto <D.49802>;
    <D.49797>:
    iftmp.518 = 0B;
    <D.49802>:
    src_var = iftmp.518;
    if (src_var == 0B) goto <D.49803>; else goto <D.49804>;
    <D.49803>:
    val.517 = val;
    D.49655 = val.517->dreg;
    D.49649 = &klass->byval_arg;
    src_var = mono_compile_create_var_for_vreg (cfg, D.49649, 329, D.49655);
    <D.49804>:
    D.49394 = cfg->mempool;
    addr = mono_mempool_alloc (D.49394, 48);
    addr->data.op[1].const_val = 0;
    D.49805 = addr->data.op[1].const_val;
    addr->data.op[0].const_val = D.49805;
    addr->prev = 0B;
    D.49806 = addr->prev;
    addr->next = D.49806;
    addr->opcode = 314;
    addr->flags = 0;
    addr->type = 0;
    addr->dreg = -1;
    addr->sreg3 = -1;
    D.49807 = addr->sreg3;
    addr->sreg2 = D.49807;
    D.49808 = addr->sreg2;
    addr->sreg1 = D.49808;
    D.49405 = cfg->ip;
    addr->cil_code = D.49405;
    addr->data.op[0].p = src_var;
    D.49809 = src_var->flags;
    D.49810 = D.49809 | 16;
    src_var->flags = D.49810;
    addr->type = 5;
    D.49811 = src_var->klass;
    addr->klass = D.49811;
    D.49812 = alloc_dreg (cfg, 5);
    D.49813 = (int) D.49812;
    addr->dreg = D.49813;
    cfg->has_indirection = 1;
    D.49814 = cfg->gsharedvt;
    D.49815 = D.49814 != 0;
    D.49816 = (long int) D.49815;
    D.49817 = __builtin_expect (D.49816, 0);
    if (D.49817 != 0) goto <D.49818>; else goto <D.49819>;
    <D.49818>:
    D.49820 = src_var->data.op[1].vtype;
    D.49821 = mini_is_gsharedvt_variable_type (cfg, D.49820);
    if (D.49821 != 0) goto <D.49822>; else goto <D.49823>;
    <D.49822>:
    handle_gsharedvt_ldaddr (cfg);
    <D.49823>:
    <D.49819>:
    D.49825 = mono_arch_is_soft_float ();
    if (D.49825 != 0) goto <D.49826>; else goto <D.49827>;
    <D.49826>:
    D.49828 = src_var->type;
    D.49829 = D.49828 == 2;
    D.49830 = D.49828 == 4;
    D.49831 = D.49829 | D.49830;
    D.49832 = (int) D.49831;
    iftmp.519 = (_Bool) D.49832;
    goto <D.49833>;
    <D.49827>:
    D.49834 = src_var->type;
    iftmp.519 = D.49834 == 2;
    <D.49833>:
    if (iftmp.519 != 0) goto <D.49835>; else goto <D.49836>;
    <D.49835>:
    {
      struct MonoInst * var1;
      struct MonoInst * var2;

      D.49838 = src_var->dreg;
      D.49839 = D.49838 + 1;
      D.49840 = (unsigned int) D.49839;
      D.49795 = cfg->vreg_to_inst_len;
      if (D.49840 < D.49795) goto <D.49841>; else goto <D.49842>;
      <D.49841>:
      D.49798 = cfg->vreg_to_inst;
      D.49838 = src_var->dreg;
      D.49843 = (sizetype) D.49838;
      D.49844 = D.49843 + 1;
      D.49845 = D.49844 * 4;
      D.49846 = D.49798 + D.49845;
      iftmp.520 = *D.49846;
      goto <D.49847>;
      <D.49842>:
      iftmp.520 = 0B;
      <D.49847>:
      var1 = iftmp.520;
      D.49838 = src_var->dreg;
      D.49849 = D.49838 + 2;
      D.49850 = (unsigned int) D.49849;
      D.49795 = cfg->vreg_to_inst_len;
      if (D.49850 < D.49795) goto <D.49851>; else goto <D.49852>;
      <D.49851>:
      D.49798 = cfg->vreg_to_inst;
      D.49838 = src_var->dreg;
      D.49843 = (sizetype) D.49838;
      D.49853 = D.49843 + 2;
      D.49854 = D.49853 * 4;
      D.49855 = D.49798 + D.49854;
      iftmp.521 = *D.49855;
      goto <D.49856>;
      <D.49852>:
      iftmp.521 = 0B;
      <D.49856>:
      var2 = iftmp.521;
      D.49857 = var1 == 0B;
      D.49858 = (long int) D.49857;
      D.49859 = __builtin_expect (D.49858, 0);
      if (D.49859 != 0) goto <D.49860>; else goto <D.49861>;
      <D.49860>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3880, "var1");
      <D.49861>:
      D.49862 = var2 == 0B;
      D.49863 = (long int) D.49862;
      D.49864 = __builtin_expect (D.49863, 0);
      if (D.49864 != 0) goto <D.49865>; else goto <D.49866>;
      <D.49865>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3880, "var2");
      <D.49866>:
      D.49867 = var1->flags;
      D.49868 = D.49867 | 16;
      var1->flags = D.49868;
      D.49869 = var2->flags;
      D.49870 = D.49869 | 16;
      var2->flags = D.49870;
    }
    <D.49836>:
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    if (D.49424 != 0B) goto <D.49871>; else goto <D.49872>;
    <D.49871>:
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    D.49424->next = addr;
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    addr->prev = D.49424;
    D.49369 = cfg->cbb;
    D.49369->last_ins = addr;
    goto <D.49873>;
    <D.49872>:
    D.49369 = cfg->cbb;
    D.49369 = cfg->cbb;
    D.49369->last_ins = addr;
    D.49424 = D.49369->last_ins;
    D.49369->code = D.49424;
    <D.49873>:
    {
      struct MonoInst * inst;

      D.49394 = cfg->mempool;
      inst = mono_mempool_alloc (D.49394, 48);
      inst->data.op[1].const_val = 0;
      D.49874 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.49874;
      inst->prev = 0B;
      D.49875 = inst->prev;
      inst->next = D.49875;
      inst->opcode = 391;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.49876 = inst->sreg3;
      inst->sreg2 = D.49876;
      D.49877 = inst->sreg2;
      inst->sreg1 = D.49877;
      D.49405 = cfg->ip;
      inst->cil_code = D.49405;
      inst->dreg = dreg;
      D.49878 = addr->dreg;
      inst->sreg1 = D.49878;
      inst->data.op[0].const_val = 0;
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      if (D.49424 != 0B) goto <D.49879>; else goto <D.49880>;
      <D.49879>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49424->next = inst;
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      inst->prev = D.49424;
      D.49369 = cfg->cbb;
      D.49369->last_ins = inst;
      goto <D.49881>;
      <D.49880>:
      D.49369 = cfg->cbb;
      D.49369 = cfg->cbb;
      D.49369->last_ins = inst;
      D.49424 = D.49369->last_ins;
      D.49369->code = D.49424;
      <D.49881>:
    }
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.49394 = cfg->mempool;
      ins = mono_mempool_alloc (D.49394, 48);
      ins->data.op[1].const_val = 0;
      D.49882 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.49882;
      ins->prev = 0B;
      D.49883 = ins->prev;
      ins->next = D.49883;
      ins->opcode = 446;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.49884 = ins->sreg3;
      ins->sreg2 = D.49884;
      D.49885 = ins->sreg2;
      ins->sreg1 = D.49885;
      D.49405 = cfg->ip;
      ins->cil_code = D.49405;
      if (1 != 0) goto <D.49886>; else goto <D.49887>;
      <D.49886>:
      D.49394 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.49394, 172);
      D.49432 = cfg->num_bblocks;
      D.49888 = D.49432;
      D.49889 = D.49888 + 1;
      cfg->num_bblocks = D.49889;
      D.49890 = (int) D.49888;
      falsebb->block_num = D.49890;
      ins->data.op[0].target_block = end_bb;
      D.49369 = cfg->cbb;
      mono_link_bblock (cfg, D.49369, end_bb);
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      if (D.49424 != 0B) goto <D.49891>; else goto <D.49892>;
      <D.49891>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49424->next = ins;
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      ins->prev = D.49424;
      D.49369 = cfg->cbb;
      D.49369->last_ins = ins;
      goto <D.49893>;
      <D.49892>:
      D.49369 = cfg->cbb;
      D.49369 = cfg->cbb;
      D.49369->last_ins = ins;
      D.49424 = D.49369->last_ins;
      D.49369->code = D.49424;
      <D.49893>:
      D.49894 = falsebb->cil_code;
      if (D.49894 != 0B) goto <D.49895>; else goto <D.49896>;
      <D.49895>:
      D.49465 = cfg->cil_offset_to_bb;
      D.49894 = falsebb->cil_code;
      D.49897 = (int) D.49894;
      D.49467 = cfg->cil_start;
      D.49468 = (int) D.49467;
      D.49898 = D.49897 - D.49468;
      D.49899 = (unsigned int) D.49898;
      D.49900 = D.49899 * 4;
      D.49901 = D.49465 + D.49900;
      *D.49901 = falsebb;
      <D.49896>:
      D.49473 = cfg->real_offset;
      falsebb->real_offset = D.49473;
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      if (D.49424 != 0B) goto <D.49905>; else goto <D.49902>;
      <D.49905>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49906 = D.49424->opcode;
      D.49907 = D.49906 + 64981;
      D.49908 = D.49907 <= 9;
      D.49909 = D.49906 + 64874;
      D.49910 = D.49909 <= 9;
      D.49911 = D.49908 | D.49910;
      if (D.49911 != 0) goto <D.49903>; else goto <D.49912>;
      <D.49912>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49485 = D.49424->opcode;
      D.49486 = D.49485 + 64884;
      if (D.49486 <= 9) goto <D.49903>; else goto <D.49902>;
      <D.49903>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49487 = D.49424->data.op[1].many_blocks;
      D.49488 = D.49487 + 4;
      D.49489 = *D.49488;
      if (D.49489 == 0B) goto <D.49913>; else goto <D.49902>;
      <D.49913>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49487 = D.49424->data.op[1].many_blocks;
      D.49488 = D.49487 + 4;
      *D.49488 = falsebb;
      D.49369 = cfg->cbb;
      mono_link_bblock (cfg, D.49369, falsebb);
      goto <D.49904>;
      <D.49902>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      if (D.49424 == 0B) goto <D.49914>; else goto <D.49916>;
      <D.49916>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49917 = D.49424->opcode;
      D.49918 = D.49917 != 446;
      D.49919 = D.49917 != 763;
      D.49920 = D.49918 & D.49919;
      if (D.49920 != 0) goto <D.49921>; else goto <D.49915>;
      <D.49921>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49922 = D.49424->opcode;
      D.49923 = D.49922 + 64981;
      D.49924 = D.49923 > 9;
      D.49925 = D.49922 + 64874;
      D.49926 = D.49925 > 9;
      D.49927 = D.49924 & D.49926;
      if (D.49927 != 0) goto <D.49928>; else goto <D.49915>;
      <D.49928>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49485 = D.49424->opcode;
      D.49486 = D.49485 + 64884;
      if (D.49486 > 9) goto <D.49914>; else goto <D.49915>;
      <D.49914>:
      D.49369 = cfg->cbb;
      mono_link_bblock (cfg, D.49369, falsebb);
      <D.49915>:
      <D.49904>:
      D.49369 = cfg->cbb;
      D.49369->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.49929>;
      <D.49887>:
      D.49394 = cfg->mempool;
      D.49930 = mono_mempool_alloc (D.49394, 8);
      ins->data.op[1].many_blocks = D.49930;
      D.49931 = ins->data.op[1].many_blocks;
      *D.49931 = end_bb;
      D.49931 = ins->data.op[1].many_blocks;
      D.49932 = D.49931 + 4;
      *D.49932 = 0B;
      D.49369 = cfg->cbb;
      mono_link_bblock (cfg, D.49369, end_bb);
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      if (D.49424 != 0B) goto <D.49933>; else goto <D.49934>;
      <D.49933>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49424->next = ins;
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      ins->prev = D.49424;
      D.49369 = cfg->cbb;
      D.49369->last_ins = ins;
      goto <D.49935>;
      <D.49934>:
      D.49369 = cfg->cbb;
      D.49369 = cfg->cbb;
      D.49369->last_ins = ins;
      D.49424 = D.49369->last_ins;
      D.49369->code = D.49424;
      <D.49935>:
      D.49398 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.49513 = D.49398 & 8;
      if (D.49513 == 0) goto <D.49936>; else goto <D.49937>;
      <D.49936>:
      D.49394 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.49394, 172);
      D.49432 = cfg->num_bblocks;
      D.49938 = D.49432;
      D.49939 = D.49938 + 1;
      cfg->num_bblocks = D.49939;
      D.49940 = (int) D.49938;
      falsebb->block_num = D.49940;
      D.49931 = ins->data.op[1].many_blocks;
      D.49932 = D.49931 + 4;
      *D.49932 = falsebb;
      D.49369 = cfg->cbb;
      mono_link_bblock (cfg, D.49369, falsebb);
      D.49894 = falsebb->cil_code;
      if (D.49894 != 0B) goto <D.49941>; else goto <D.49942>;
      <D.49941>:
      D.49465 = cfg->cil_offset_to_bb;
      D.49894 = falsebb->cil_code;
      D.49897 = (int) D.49894;
      D.49467 = cfg->cil_start;
      D.49468 = (int) D.49467;
      D.49898 = D.49897 - D.49468;
      D.49899 = (unsigned int) D.49898;
      D.49900 = D.49899 * 4;
      D.49901 = D.49465 + D.49900;
      *D.49901 = falsebb;
      <D.49942>:
      D.49473 = cfg->real_offset;
      falsebb->real_offset = D.49473;
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      if (D.49424 != 0B) goto <D.49946>; else goto <D.49943>;
      <D.49946>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49947 = D.49424->opcode;
      D.49948 = D.49947 + 64981;
      D.49949 = D.49948 <= 9;
      D.49950 = D.49947 + 64874;
      D.49951 = D.49950 <= 9;
      D.49952 = D.49949 | D.49951;
      if (D.49952 != 0) goto <D.49944>; else goto <D.49953>;
      <D.49953>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49485 = D.49424->opcode;
      D.49486 = D.49485 + 64884;
      if (D.49486 <= 9) goto <D.49944>; else goto <D.49943>;
      <D.49944>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49487 = D.49424->data.op[1].many_blocks;
      D.49488 = D.49487 + 4;
      D.49489 = *D.49488;
      if (D.49489 == 0B) goto <D.49954>; else goto <D.49943>;
      <D.49954>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49487 = D.49424->data.op[1].many_blocks;
      D.49488 = D.49487 + 4;
      *D.49488 = falsebb;
      D.49369 = cfg->cbb;
      mono_link_bblock (cfg, D.49369, falsebb);
      goto <D.49945>;
      <D.49943>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      if (D.49424 == 0B) goto <D.49955>; else goto <D.49957>;
      <D.49957>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49958 = D.49424->opcode;
      D.49959 = D.49958 != 446;
      D.49960 = D.49958 != 763;
      D.49961 = D.49959 & D.49960;
      if (D.49961 != 0) goto <D.49962>; else goto <D.49956>;
      <D.49962>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49963 = D.49424->opcode;
      D.49964 = D.49963 + 64981;
      D.49965 = D.49964 > 9;
      D.49966 = D.49963 + 64874;
      D.49967 = D.49966 > 9;
      D.49968 = D.49965 & D.49967;
      if (D.49968 != 0) goto <D.49969>; else goto <D.49956>;
      <D.49969>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49485 = D.49424->opcode;
      D.49486 = D.49485 + 64884;
      if (D.49486 > 9) goto <D.49955>; else goto <D.49956>;
      <D.49955>:
      D.49369 = cfg->cbb;
      mono_link_bblock (cfg, D.49369, falsebb);
      <D.49956>:
      <D.49945>:
      D.49369 = cfg->cbb;
      D.49369->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.49970>;
      <D.49937>:
      D.49369 = cfg->cbb;
      D.49369->extended = 1;
      <D.49970>:
      <D.49929>:
    }
    D.49971 = is_nullable_bb->cil_code;
    if (D.49971 != 0B) goto <D.49972>; else goto <D.49973>;
    <D.49972>:
    D.49465 = cfg->cil_offset_to_bb;
    D.49971 = is_nullable_bb->cil_code;
    D.49974 = (int) D.49971;
    D.49467 = cfg->cil_start;
    D.49468 = (int) D.49467;
    D.49975 = D.49974 - D.49468;
    D.49976 = (unsigned int) D.49975;
    D.49977 = D.49976 * 4;
    D.49978 = D.49465 + D.49977;
    *D.49978 = is_nullable_bb;
    <D.49973>:
    D.49473 = cfg->real_offset;
    is_nullable_bb->real_offset = D.49473;
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    if (D.49424 != 0B) goto <D.49982>; else goto <D.49979>;
    <D.49982>:
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    D.49983 = D.49424->opcode;
    D.49984 = D.49983 + 64981;
    D.49985 = D.49984 <= 9;
    D.49986 = D.49983 + 64874;
    D.49987 = D.49986 <= 9;
    D.49988 = D.49985 | D.49987;
    if (D.49988 != 0) goto <D.49980>; else goto <D.49989>;
    <D.49989>:
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    D.49485 = D.49424->opcode;
    D.49486 = D.49485 + 64884;
    if (D.49486 <= 9) goto <D.49980>; else goto <D.49979>;
    <D.49980>:
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    D.49487 = D.49424->data.op[1].many_blocks;
    D.49488 = D.49487 + 4;
    D.49489 = *D.49488;
    if (D.49489 == 0B) goto <D.49990>; else goto <D.49979>;
    <D.49990>:
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    D.49487 = D.49424->data.op[1].many_blocks;
    D.49488 = D.49487 + 4;
    *D.49488 = is_nullable_bb;
    D.49369 = cfg->cbb;
    mono_link_bblock (cfg, D.49369, is_nullable_bb);
    goto <D.49981>;
    <D.49979>:
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    if (D.49424 == 0B) goto <D.49991>; else goto <D.49993>;
    <D.49993>:
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    D.49994 = D.49424->opcode;
    D.49995 = D.49994 != 446;
    D.49996 = D.49994 != 763;
    D.49997 = D.49995 & D.49996;
    if (D.49997 != 0) goto <D.49998>; else goto <D.49992>;
    <D.49998>:
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    D.49999 = D.49424->opcode;
    D.50000 = D.49999 + 64981;
    D.50001 = D.50000 > 9;
    D.50002 = D.49999 + 64874;
    D.50003 = D.50002 > 9;
    D.50004 = D.50001 & D.50003;
    if (D.50004 != 0) goto <D.50005>; else goto <D.49992>;
    <D.50005>:
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    D.49485 = D.49424->opcode;
    D.49486 = D.49485 + 64884;
    if (D.49486 > 9) goto <D.49991>; else goto <D.49992>;
    <D.49991>:
    D.49369 = cfg->cbb;
    mono_link_bblock (cfg, D.49369, is_nullable_bb);
    <D.49992>:
    <D.49981>:
    D.49369 = cfg->cbb;
    D.49369->next_bb = is_nullable_bb;
    cfg->cbb = is_nullable_bb;
    {
      struct MonoInst * addr;
      struct MonoInst * box_call;
      struct MonoMethodSignature * box_sig;

      addr = emit_get_gsharedvt_info_klass (cfg, klass, 24);
      D.49394 = cfg->mempool;
      box_sig = mono_mempool_alloc0 (D.49394, 16);
      D.50006 = mono_defaults.object_class;
      D.50007 = &D.50006->byval_arg;
      box_sig->ret = D.50007;
      box_sig->param_count = 1;
      D.49649 = &klass->byval_arg;
      box_sig->params[0] = D.49649;
      box_call = mono_emit_calli (cfg, box_sig, &val, addr, 0B, 0B);
      D.49394 = cfg->mempool;
      res = mono_mempool_alloc (D.49394, 48);
      res->data.op[1].const_val = 0;
      D.49661 = res->data.op[1].const_val;
      res->data.op[0].const_val = D.49661;
      res->prev = 0B;
      D.49662 = res->prev;
      res->next = D.49662;
      res->opcode = 428;
      res->flags = 0;
      res->type = 0;
      res->dreg = -1;
      res->sreg3 = -1;
      D.49663 = res->sreg3;
      res->sreg2 = D.49663;
      D.49664 = res->sreg2;
      res->sreg1 = D.49664;
      D.49405 = cfg->ip;
      res->cil_code = D.49405;
      res->dreg = dreg;
      D.50008 = box_call->dreg;
      res->sreg1 = D.50008;
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      if (D.49424 != 0B) goto <D.50009>; else goto <D.50010>;
      <D.50009>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49424->next = res;
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      res->prev = D.49424;
      D.49369 = cfg->cbb;
      D.49369->last_ins = res;
      goto <D.50011>;
      <D.50010>:
      D.49369 = cfg->cbb;
      D.49369 = cfg->cbb;
      D.49369->last_ins = res;
      D.49424 = D.49369->last_ins;
      D.49369->code = D.49424;
      <D.50011>:
      res->type = 6;
      res->klass = klass;
    }
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.49394 = cfg->mempool;
      ins = mono_mempool_alloc (D.49394, 48);
      ins->data.op[1].const_val = 0;
      D.50012 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.50012;
      ins->prev = 0B;
      D.50013 = ins->prev;
      ins->next = D.50013;
      ins->opcode = 446;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.50014 = ins->sreg3;
      ins->sreg2 = D.50014;
      D.50015 = ins->sreg2;
      ins->sreg1 = D.50015;
      D.49405 = cfg->ip;
      ins->cil_code = D.49405;
      if (1 != 0) goto <D.50016>; else goto <D.50017>;
      <D.50016>:
      D.49394 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.49394, 172);
      D.49432 = cfg->num_bblocks;
      D.50018 = D.49432;
      D.50019 = D.50018 + 1;
      cfg->num_bblocks = D.50019;
      D.50020 = (int) D.50018;
      falsebb->block_num = D.50020;
      ins->data.op[0].target_block = end_bb;
      D.49369 = cfg->cbb;
      mono_link_bblock (cfg, D.49369, end_bb);
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      if (D.49424 != 0B) goto <D.50021>; else goto <D.50022>;
      <D.50021>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49424->next = ins;
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      ins->prev = D.49424;
      D.49369 = cfg->cbb;
      D.49369->last_ins = ins;
      goto <D.50023>;
      <D.50022>:
      D.49369 = cfg->cbb;
      D.49369 = cfg->cbb;
      D.49369->last_ins = ins;
      D.49424 = D.49369->last_ins;
      D.49369->code = D.49424;
      <D.50023>:
      D.50024 = falsebb->cil_code;
      if (D.50024 != 0B) goto <D.50025>; else goto <D.50026>;
      <D.50025>:
      D.49465 = cfg->cil_offset_to_bb;
      D.50024 = falsebb->cil_code;
      D.50027 = (int) D.50024;
      D.49467 = cfg->cil_start;
      D.49468 = (int) D.49467;
      D.50028 = D.50027 - D.49468;
      D.50029 = (unsigned int) D.50028;
      D.50030 = D.50029 * 4;
      D.50031 = D.49465 + D.50030;
      *D.50031 = falsebb;
      <D.50026>:
      D.49473 = cfg->real_offset;
      falsebb->real_offset = D.49473;
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      if (D.49424 != 0B) goto <D.50035>; else goto <D.50032>;
      <D.50035>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.50036 = D.49424->opcode;
      D.50037 = D.50036 + 64981;
      D.50038 = D.50037 <= 9;
      D.50039 = D.50036 + 64874;
      D.50040 = D.50039 <= 9;
      D.50041 = D.50038 | D.50040;
      if (D.50041 != 0) goto <D.50033>; else goto <D.50042>;
      <D.50042>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49485 = D.49424->opcode;
      D.49486 = D.49485 + 64884;
      if (D.49486 <= 9) goto <D.50033>; else goto <D.50032>;
      <D.50033>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49487 = D.49424->data.op[1].many_blocks;
      D.49488 = D.49487 + 4;
      D.49489 = *D.49488;
      if (D.49489 == 0B) goto <D.50043>; else goto <D.50032>;
      <D.50043>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49487 = D.49424->data.op[1].many_blocks;
      D.49488 = D.49487 + 4;
      *D.49488 = falsebb;
      D.49369 = cfg->cbb;
      mono_link_bblock (cfg, D.49369, falsebb);
      goto <D.50034>;
      <D.50032>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      if (D.49424 == 0B) goto <D.50044>; else goto <D.50046>;
      <D.50046>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.50047 = D.49424->opcode;
      D.50048 = D.50047 != 446;
      D.50049 = D.50047 != 763;
      D.50050 = D.50048 & D.50049;
      if (D.50050 != 0) goto <D.50051>; else goto <D.50045>;
      <D.50051>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.50052 = D.49424->opcode;
      D.50053 = D.50052 + 64981;
      D.50054 = D.50053 > 9;
      D.50055 = D.50052 + 64874;
      D.50056 = D.50055 > 9;
      D.50057 = D.50054 & D.50056;
      if (D.50057 != 0) goto <D.50058>; else goto <D.50045>;
      <D.50058>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49485 = D.49424->opcode;
      D.49486 = D.49485 + 64884;
      if (D.49486 > 9) goto <D.50044>; else goto <D.50045>;
      <D.50044>:
      D.49369 = cfg->cbb;
      mono_link_bblock (cfg, D.49369, falsebb);
      <D.50045>:
      <D.50034>:
      D.49369 = cfg->cbb;
      D.49369->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.50059>;
      <D.50017>:
      D.49394 = cfg->mempool;
      D.50060 = mono_mempool_alloc (D.49394, 8);
      ins->data.op[1].many_blocks = D.50060;
      D.50061 = ins->data.op[1].many_blocks;
      *D.50061 = end_bb;
      D.50061 = ins->data.op[1].many_blocks;
      D.50062 = D.50061 + 4;
      *D.50062 = 0B;
      D.49369 = cfg->cbb;
      mono_link_bblock (cfg, D.49369, end_bb);
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      if (D.49424 != 0B) goto <D.50063>; else goto <D.50064>;
      <D.50063>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49424->next = ins;
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      ins->prev = D.49424;
      D.49369 = cfg->cbb;
      D.49369->last_ins = ins;
      goto <D.50065>;
      <D.50064>:
      D.49369 = cfg->cbb;
      D.49369 = cfg->cbb;
      D.49369->last_ins = ins;
      D.49424 = D.49369->last_ins;
      D.49369->code = D.49424;
      <D.50065>:
      D.49398 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.49513 = D.49398 & 8;
      if (D.49513 == 0) goto <D.50066>; else goto <D.50067>;
      <D.50066>:
      D.49394 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.49394, 172);
      D.49432 = cfg->num_bblocks;
      D.50068 = D.49432;
      D.50069 = D.50068 + 1;
      cfg->num_bblocks = D.50069;
      D.50070 = (int) D.50068;
      falsebb->block_num = D.50070;
      D.50061 = ins->data.op[1].many_blocks;
      D.50062 = D.50061 + 4;
      *D.50062 = falsebb;
      D.49369 = cfg->cbb;
      mono_link_bblock (cfg, D.49369, falsebb);
      D.50024 = falsebb->cil_code;
      if (D.50024 != 0B) goto <D.50071>; else goto <D.50072>;
      <D.50071>:
      D.49465 = cfg->cil_offset_to_bb;
      D.50024 = falsebb->cil_code;
      D.50027 = (int) D.50024;
      D.49467 = cfg->cil_start;
      D.49468 = (int) D.49467;
      D.50028 = D.50027 - D.49468;
      D.50029 = (unsigned int) D.50028;
      D.50030 = D.50029 * 4;
      D.50031 = D.49465 + D.50030;
      *D.50031 = falsebb;
      <D.50072>:
      D.49473 = cfg->real_offset;
      falsebb->real_offset = D.49473;
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      if (D.49424 != 0B) goto <D.50076>; else goto <D.50073>;
      <D.50076>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.50077 = D.49424->opcode;
      D.50078 = D.50077 + 64981;
      D.50079 = D.50078 <= 9;
      D.50080 = D.50077 + 64874;
      D.50081 = D.50080 <= 9;
      D.50082 = D.50079 | D.50081;
      if (D.50082 != 0) goto <D.50074>; else goto <D.50083>;
      <D.50083>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49485 = D.49424->opcode;
      D.49486 = D.49485 + 64884;
      if (D.49486 <= 9) goto <D.50074>; else goto <D.50073>;
      <D.50074>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49487 = D.49424->data.op[1].many_blocks;
      D.49488 = D.49487 + 4;
      D.49489 = *D.49488;
      if (D.49489 == 0B) goto <D.50084>; else goto <D.50073>;
      <D.50084>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49487 = D.49424->data.op[1].many_blocks;
      D.49488 = D.49487 + 4;
      *D.49488 = falsebb;
      D.49369 = cfg->cbb;
      mono_link_bblock (cfg, D.49369, falsebb);
      goto <D.50075>;
      <D.50073>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      if (D.49424 == 0B) goto <D.50085>; else goto <D.50087>;
      <D.50087>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.50088 = D.49424->opcode;
      D.50089 = D.50088 != 446;
      D.50090 = D.50088 != 763;
      D.50091 = D.50089 & D.50090;
      if (D.50091 != 0) goto <D.50092>; else goto <D.50086>;
      <D.50092>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.50093 = D.49424->opcode;
      D.50094 = D.50093 + 64981;
      D.50095 = D.50094 > 9;
      D.50096 = D.50093 + 64874;
      D.50097 = D.50096 > 9;
      D.50098 = D.50095 & D.50097;
      if (D.50098 != 0) goto <D.50099>; else goto <D.50086>;
      <D.50099>:
      D.49369 = cfg->cbb;
      D.49424 = D.49369->last_ins;
      D.49485 = D.49424->opcode;
      D.49486 = D.49485 + 64884;
      if (D.49486 > 9) goto <D.50085>; else goto <D.50086>;
      <D.50085>:
      D.49369 = cfg->cbb;
      mono_link_bblock (cfg, D.49369, falsebb);
      <D.50086>:
      <D.50075>:
      D.49369 = cfg->cbb;
      D.49369->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.50100>;
      <D.50067>:
      D.49369 = cfg->cbb;
      D.49369->extended = 1;
      <D.50100>:
      <D.50059>:
    }
    D.50101 = end_bb->cil_code;
    if (D.50101 != 0B) goto <D.50102>; else goto <D.50103>;
    <D.50102>:
    D.49465 = cfg->cil_offset_to_bb;
    D.50101 = end_bb->cil_code;
    D.50104 = (int) D.50101;
    D.49467 = cfg->cil_start;
    D.49468 = (int) D.49467;
    D.50105 = D.50104 - D.49468;
    D.50106 = (unsigned int) D.50105;
    D.50107 = D.50106 * 4;
    D.50108 = D.49465 + D.50107;
    *D.50108 = end_bb;
    <D.50103>:
    D.49473 = cfg->real_offset;
    end_bb->real_offset = D.49473;
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    if (D.49424 != 0B) goto <D.50112>; else goto <D.50109>;
    <D.50112>:
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    D.50113 = D.49424->opcode;
    D.50114 = D.50113 + 64981;
    D.50115 = D.50114 <= 9;
    D.50116 = D.50113 + 64874;
    D.50117 = D.50116 <= 9;
    D.50118 = D.50115 | D.50117;
    if (D.50118 != 0) goto <D.50110>; else goto <D.50119>;
    <D.50119>:
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    D.49485 = D.49424->opcode;
    D.49486 = D.49485 + 64884;
    if (D.49486 <= 9) goto <D.50110>; else goto <D.50109>;
    <D.50110>:
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    D.49487 = D.49424->data.op[1].many_blocks;
    D.49488 = D.49487 + 4;
    D.49489 = *D.49488;
    if (D.49489 == 0B) goto <D.50120>; else goto <D.50109>;
    <D.50120>:
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    D.49487 = D.49424->data.op[1].many_blocks;
    D.49488 = D.49487 + 4;
    *D.49488 = end_bb;
    D.49369 = cfg->cbb;
    mono_link_bblock (cfg, D.49369, end_bb);
    goto <D.50111>;
    <D.50109>:
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    if (D.49424 == 0B) goto <D.50121>; else goto <D.50123>;
    <D.50123>:
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    D.50124 = D.49424->opcode;
    D.50125 = D.50124 != 446;
    D.50126 = D.50124 != 763;
    D.50127 = D.50125 & D.50126;
    if (D.50127 != 0) goto <D.50128>; else goto <D.50122>;
    <D.50128>:
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    D.50129 = D.49424->opcode;
    D.50130 = D.50129 + 64981;
    D.50131 = D.50130 > 9;
    D.50132 = D.50129 + 64874;
    D.50133 = D.50132 > 9;
    D.50134 = D.50131 & D.50133;
    if (D.50134 != 0) goto <D.50135>; else goto <D.50122>;
    <D.50135>:
    D.49369 = cfg->cbb;
    D.49424 = D.49369->last_ins;
    D.49485 = D.49424->opcode;
    D.49486 = D.49485 + 64884;
    if (D.49486 > 9) goto <D.50121>; else goto <D.50122>;
    <D.50121>:
    D.49369 = cfg->cbb;
    mono_link_bblock (cfg, D.49369, end_bb);
    <D.50122>:
    <D.50111>:
    D.49369 = cfg->cbb;
    D.49369->next_bb = end_bb;
    cfg->cbb = end_bb;
    D.49369 = cfg->cbb;
    *out_cbb = D.49369;
    D.49376 = res;
    return D.49376;
  }
  <D.49430>:
  alloc = handle_alloc (cfg, klass, 1, context_used);
  if (alloc == 0B) goto <D.50136>; else goto <D.50137>;
  <D.50136>:
  D.49376 = 0B;
  return D.49376;
  <D.50137>:
  D.49394 = cfg->mempool;
  ins = mono_mempool_alloc (D.49394, 48);
  ins->data.op[1].const_val = 0;
  D.49647 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.49647;
  ins->prev = 0B;
  D.49648 = ins->prev;
  ins->next = D.49648;
  D.49649 = &klass->byval_arg;
  D.50138 = mono_type_to_store_membase (cfg, D.49649);
  D.50139 = (short unsigned int) D.50138;
  ins->opcode = D.50139;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.49652 = ins->sreg3;
  ins->sreg2 = D.49652;
  D.49653 = ins->sreg2;
  ins->sreg1 = D.49653;
  D.49405 = cfg->ip;
  ins->cil_code = D.49405;
  val.517 = val;
  D.49655 = val.517->dreg;
  ins->sreg1 = D.49655;
  D.49656 = alloc->dreg;
  ins->dreg = D.49656;
  ins->data.op[0].const_val = 8;
  D.49649 = &klass->byval_arg;
  type_to_eval_stack_type (cfg, D.49649, ins);
  D.49649 = &klass->byval_arg;
  D.50140 = mono_class_from_mono_type (D.49649);
  ins->klass = D.50140;
  D.49369 = cfg->cbb;
  D.49424 = D.49369->last_ins;
  if (D.49424 != 0B) goto <D.50141>; else goto <D.50142>;
  <D.50141>:
  D.49369 = cfg->cbb;
  D.49424 = D.49369->last_ins;
  D.49424->next = ins;
  D.49369 = cfg->cbb;
  D.49424 = D.49369->last_ins;
  ins->prev = D.49424;
  D.49369 = cfg->cbb;
  D.49369->last_ins = ins;
  goto <D.50143>;
  <D.50142>:
  D.49369 = cfg->cbb;
  D.49369 = cfg->cbb;
  D.49369->last_ins = ins;
  D.49424 = D.49369->last_ins;
  D.49369->code = D.49424;
  <D.50143>:
  D.49376 = alloc;
  return D.49376;
}


handle_unbox_nullable (struct MonoCompile * cfg, struct MonoInst * val, struct MonoClass * klass, int context_used)
{
  struct MonoMethod * D.50148;
  struct MonoInst * D.50149;
  struct MonoMethodSignature * D.50150;
  int pass_mrgctx.522;
  _Bool D.50152;
  long int D.50153;
  long int D.50154;
  int pass_vtable.523;
  struct MonoClass * D.50160;
  struct MonoDomain * D.50161;
  _Bool D.50162;
  long int D.50163;
  long int D.50164;
  struct MonoMemPool * D.50167;
  int D.50168;
  struct MonoInst * D.50169;
  guint16 iftmp.524;
  unsigned char D.50171;
  unsigned char D.50172;
  int D.50176;
  int D.50177;
  const unsigned char * D.50178;
  int D.50181;
  struct MonoInst * D.50182;
  int D.50183;
  int D.50184;
  struct MonoInst * iftmp.525;
  int D.50189;
  void * iftmp.526;
  unsigned int D.50195;
  int D.50196;
  struct MonoBasicBlock * D.50197;
  struct MonoInst * D.50198;
  struct MonoMethod * method;

  method = mono_class_get_method_from_name (klass, "Unbox", 1);
  if (context_used != 0) goto <D.50146>; else goto <D.50147>;
  <D.50146>:
  {
    struct MonoInst * rgctx;
    struct MonoInst * addr;

    addr = emit_get_rgctx_method (cfg, context_used, method, 6);
    D.50148 = cfg->current_method;
    rgctx = emit_get_rgctx (cfg, D.50148, context_used);
    D.50150 = mono_method_signature (method);
    D.50149 = mono_emit_calli (cfg, D.50150, &val, addr, 0B, rgctx);
    return D.50149;
  }
  <D.50147>:
  {
    gboolean pass_vtable;
    gboolean pass_mrgctx;
    struct MonoInst * rgctx_arg;

    try
      {
        rgctx_arg = 0B;
        check_method_sharing (cfg, method, &pass_vtable, &pass_mrgctx);
        pass_mrgctx.522 = pass_mrgctx;
        D.50152 = pass_mrgctx.522 != 0;
        D.50153 = (long int) D.50152;
        D.50154 = __builtin_expect (D.50153, 0);
        if (D.50154 != 0) goto <D.50155>; else goto <D.50156>;
        <D.50155>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3578, "!pass_mrgctx");
        <D.50156>:
        pass_vtable.523 = pass_vtable;
        if (pass_vtable.523 != 0) goto <D.50158>; else goto <D.50159>;
        <D.50158>:
        {
          struct MonoVTable * vtable;

          D.50160 = method->klass;
          D.50161 = cfg->domain;
          vtable = mono_class_vtable (D.50161, D.50160);
          D.50162 = vtable == 0B;
          D.50163 = (long int) D.50162;
          D.50164 = __builtin_expect (D.50163, 0);
          if (D.50164 != 0) goto <D.50165>; else goto <D.50166>;
          <D.50165>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3583, "vtable");
          <D.50166>:
          D.50167 = cfg->mempool;
          rgctx_arg = mono_mempool_alloc (D.50167, 48);
          rgctx_arg->data.op[1].const_val = 0;
          D.50168 = rgctx_arg->data.op[1].const_val;
          rgctx_arg->data.op[0].const_val = D.50168;
          rgctx_arg->prev = 0B;
          D.50169 = rgctx_arg->prev;
          rgctx_arg->next = D.50169;
          D.50171 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.50172 = D.50171 & 64;
          if (D.50172 != 0) goto <D.50173>; else goto <D.50174>;
          <D.50173>:
          iftmp.524 = 738;
          goto <D.50175>;
          <D.50174>:
          iftmp.524 = 362;
          <D.50175>:
          rgctx_arg->opcode = iftmp.524;
          rgctx_arg->flags = 0;
          rgctx_arg->type = 0;
          rgctx_arg->dreg = -1;
          rgctx_arg->sreg3 = -1;
          D.50176 = rgctx_arg->sreg3;
          rgctx_arg->sreg2 = D.50176;
          D.50177 = rgctx_arg->sreg2;
          rgctx_arg->sreg1 = D.50177;
          D.50178 = cfg->ip;
          rgctx_arg->cil_code = D.50178;
          D.50171 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.50172 = D.50171 & 64;
          if (D.50172 != 0) goto <D.50179>; else goto <D.50180>;
          <D.50179>:
          {
            struct MonoInst * group;
            struct MonoInst * got_loc;

            got_loc = mono_get_got_var (cfg);
            D.50167 = cfg->mempool;
            group = mono_mempool_alloc (D.50167, 48);
            group->data.op[1].const_val = 0;
            D.50181 = group->data.op[1].const_val;
            group->data.op[0].const_val = D.50181;
            group->prev = 0B;
            D.50182 = group->prev;
            group->next = D.50182;
            group->opcode = 737;
            group->flags = 0;
            group->type = 0;
            group->dreg = -1;
            group->sreg3 = -1;
            D.50183 = group->sreg3;
            group->sreg2 = D.50183;
            D.50184 = group->sreg2;
            group->sreg1 = D.50184;
            D.50178 = cfg->ip;
            group->cil_code = D.50178;
            D.50171 = BIT_FIELD_REF <*cfg, 8, 3392>;
            D.50172 = D.50171 & 64;
            if (D.50172 != 0) goto <D.50186>; else goto <D.50187>;
            <D.50186>:
            iftmp.525 = vtable->klass;
            goto <D.50188>;
            <D.50187>:
            iftmp.525 = vtable;
            <D.50188>:
            group->data.op[0].src = iftmp.525;
            group->data.op[1].src = 14B;
            D.50189 = got_loc->dreg;
            rgctx_arg->sreg1 = D.50189;
            rgctx_arg->data.op[1].p = group;
          }
          goto <D.50190>;
          <D.50180>:
          D.50171 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.50172 = D.50171 & 64;
          if (D.50172 != 0) goto <D.50192>; else goto <D.50193>;
          <D.50192>:
          iftmp.526 = vtable->klass;
          goto <D.50194>;
          <D.50193>:
          iftmp.526 = vtable;
          <D.50194>:
          rgctx_arg->data.op[0].p = iftmp.526;
          rgctx_arg->data.op[1].src = 14B;
          <D.50190>:
          rgctx_arg->type = 3;
          D.50195 = alloc_dreg (cfg, 3);
          D.50196 = (int) D.50195;
          rgctx_arg->dreg = D.50196;
          D.50197 = cfg->cbb;
          D.50198 = D.50197->last_ins;
          if (D.50198 != 0B) goto <D.50199>; else goto <D.50200>;
          <D.50199>:
          D.50197 = cfg->cbb;
          D.50198 = D.50197->last_ins;
          D.50198->next = rgctx_arg;
          D.50197 = cfg->cbb;
          D.50198 = D.50197->last_ins;
          rgctx_arg->prev = D.50198;
          D.50197 = cfg->cbb;
          D.50197->last_ins = rgctx_arg;
          goto <D.50201>;
          <D.50200>:
          D.50197 = cfg->cbb;
          D.50197 = cfg->cbb;
          D.50197->last_ins = rgctx_arg;
          D.50198 = D.50197->last_ins;
          D.50197->code = D.50198;
          <D.50201>:
        }
        <D.50159>:
        D.50149 = mono_emit_method_call_full (cfg, method, 0B, 0, &val, 0B, 0B, rgctx_arg);
        return D.50149;
      }
    finally
      {
        pass_vtable = {CLOBBER};
        pass_mrgctx = {CLOBBER};
      }
  }
}


handle_unbox (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * * sp, int context_used)
{
  unsigned int D.50204;
  unsigned int D.50205;
  unsigned int D.50206;
  unsigned int D.50207;
  struct MonoInst * D.50208;
  int D.50209;
  unsigned char D.50212;
  unsigned char D.50213;
  struct MonoMemPool * D.50216;
  int D.50217;
  struct MonoInst * D.50218;
  int D.50219;
  int D.50220;
  const unsigned char * D.50221;
  struct MonoBasicBlock * D.50222;
  struct MonoInst * D.50223;
  int D.50227;
  struct MonoInst * D.50228;
  int D.50229;
  int D.50230;
  int D.50235;
  struct MonoInst * D.50236;
  int D.50237;
  int D.50238;
  unsigned char D.50239;
  int D.50243;
  struct MonoInst * D.50244;
  int D.50245;
  int D.50246;
  unsigned char D.50250;
  _Bool D.50251;
  long int D.50252;
  long int D.50253;
  int D.50256;
  struct MonoInst * D.50257;
  int D.50258;
  int D.50259;
  int D.50263;
  struct MonoInst * D.50264;
  int D.50265;
  int D.50266;
  int D.50270;
  struct MonoInst * D.50271;
  int D.50272;
  int D.50273;
  int D.50277;
  struct MonoInst * D.50278;
  int D.50279;
  int D.50280;
  struct MonoClass * D.50288;
  int D.50289;
  struct MonoInst * D.50290;
  int D.50291;
  int D.50292;
  int D.50293;
  int D.50297;
  struct MonoInst * D.50298;
  int D.50299;
  int D.50300;
  int D.50305;
  struct MonoInst * D.50306;
  int D.50307;
  int D.50308;
  unsigned int D.50309;
  int D.50310;
  struct MonoInst * D.50314;
  struct MonoInst * add;
  int obj_reg;
  int vtable_reg;
  int klass_reg;
  int eclass_reg;
  int rank_reg;

  D.50204 = alloc_dreg (cfg, 3);
  vtable_reg = (int) D.50204;
  D.50205 = alloc_dreg (cfg, 3);
  klass_reg = (int) D.50205;
  D.50206 = alloc_dreg (cfg, 3);
  eclass_reg = (int) D.50206;
  D.50207 = alloc_dreg (cfg, 1);
  rank_reg = (int) D.50207;
  D.50208 = *sp;
  obj_reg = D.50208->dreg;
  {
    struct MonoInst * inst;
    int __ins_flags;

    __ins_flags = 32;
    D.50209 = __ins_flags & 32;
    if (D.50209 != 0) goto <D.50210>; else goto <D.50211>;
    <D.50210>:
    D.50212 = BIT_FIELD_REF <*cfg, 8, 3424>;
    D.50213 = D.50212 & 64;
    if (D.50213 != 0) goto <D.50214>; else goto <D.50215>;
    <D.50214>:
    {
      struct MonoInst * inst;

      D.50216 = cfg->mempool;
      inst = mono_mempool_alloc (D.50216, 48);
      inst->data.op[1].const_val = 0;
      D.50217 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.50217;
      inst->prev = 0B;
      D.50218 = inst->prev;
      inst->next = D.50218;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.50219 = inst->sreg3;
      inst->sreg2 = D.50219;
      D.50220 = inst->sreg2;
      inst->sreg1 = D.50220;
      D.50221 = cfg->ip;
      inst->cil_code = D.50221;
      inst->dreg = -1;
      inst->sreg1 = obj_reg;
      inst->data.op[1].const_val = 0;
      D.50222 = cfg->cbb;
      D.50223 = D.50222->last_ins;
      if (D.50223 != 0B) goto <D.50224>; else goto <D.50225>;
      <D.50224>:
      D.50222 = cfg->cbb;
      D.50223 = D.50222->last_ins;
      D.50223->next = inst;
      D.50222 = cfg->cbb;
      D.50223 = D.50222->last_ins;
      inst->prev = D.50223;
      D.50222 = cfg->cbb;
      D.50222->last_ins = inst;
      goto <D.50226>;
      <D.50225>:
      D.50222 = cfg->cbb;
      D.50222 = cfg->cbb;
      D.50222->last_ins = inst;
      D.50223 = D.50222->last_ins;
      D.50222->code = D.50223;
      <D.50226>:
    }
    {
      struct MonoInst * inst;

      D.50216 = cfg->mempool;
      inst = mono_mempool_alloc (D.50216, 48);
      inst->data.op[1].const_val = 0;
      D.50227 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.50227;
      inst->prev = 0B;
      D.50228 = inst->prev;
      inst->next = D.50228;
      inst->opcode = 455;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.50229 = inst->sreg3;
      inst->sreg2 = D.50229;
      D.50230 = inst->sreg2;
      inst->sreg1 = D.50230;
      D.50221 = cfg->ip;
      inst->cil_code = D.50221;
      inst->data.op[1].p = "NullReferenceException";
      D.50222 = cfg->cbb;
      D.50223 = D.50222->last_ins;
      if (D.50223 != 0B) goto <D.50231>; else goto <D.50232>;
      <D.50231>:
      D.50222 = cfg->cbb;
      D.50223 = D.50222->last_ins;
      D.50223->next = inst;
      D.50222 = cfg->cbb;
      D.50223 = D.50222->last_ins;
      inst->prev = D.50223;
      D.50222 = cfg->cbb;
      D.50222->last_ins = inst;
      goto <D.50233>;
      <D.50232>:
      D.50222 = cfg->cbb;
      D.50222 = cfg->cbb;
      D.50222->last_ins = inst;
      D.50223 = D.50222->last_ins;
      D.50222->code = D.50223;
      <D.50233>:
    }
    goto <D.50234>;
    <D.50215>:
    <D.50234>:
    <D.50211>:
    D.50216 = cfg->mempool;
    inst = mono_mempool_alloc (D.50216, 48);
    inst->data.op[1].const_val = 0;
    D.50235 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.50235;
    inst->prev = 0B;
    D.50236 = inst->prev;
    inst->next = D.50236;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.50237 = inst->sreg3;
    inst->sreg2 = D.50237;
    D.50238 = inst->sreg2;
    inst->sreg1 = D.50238;
    D.50221 = cfg->ip;
    inst->cil_code = D.50221;
    inst->dreg = vtable_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 0;
    inst->type = 1;
    D.50239 = (unsigned char) __ins_flags;
    inst->flags = D.50239;
    D.50222 = cfg->cbb;
    D.50223 = D.50222->last_ins;
    if (D.50223 != 0B) goto <D.50240>; else goto <D.50241>;
    <D.50240>:
    D.50222 = cfg->cbb;
    D.50223 = D.50222->last_ins;
    D.50223->next = inst;
    D.50222 = cfg->cbb;
    D.50223 = D.50222->last_ins;
    inst->prev = D.50223;
    D.50222 = cfg->cbb;
    D.50222->last_ins = inst;
    goto <D.50242>;
    <D.50241>:
    D.50222 = cfg->cbb;
    D.50222 = cfg->cbb;
    D.50222->last_ins = inst;
    D.50223 = D.50222->last_ins;
    D.50222->code = D.50223;
    <D.50242>:
  }
  {
    struct MonoInst * inst;

    D.50216 = cfg->mempool;
    inst = mono_mempool_alloc (D.50216, 48);
    inst->data.op[1].const_val = 0;
    D.50243 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.50243;
    inst->prev = 0B;
    D.50244 = inst->prev;
    inst->next = D.50244;
    inst->opcode = 393;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.50245 = inst->sreg3;
    inst->sreg2 = D.50245;
    D.50246 = inst->sreg2;
    inst->sreg1 = D.50246;
    D.50221 = cfg->ip;
    inst->cil_code = D.50221;
    inst->dreg = rank_reg;
    inst->sreg1 = vtable_reg;
    inst->data.op[0].const_val = 22;
    D.50222 = cfg->cbb;
    D.50223 = D.50222->last_ins;
    if (D.50223 != 0B) goto <D.50247>; else goto <D.50248>;
    <D.50247>:
    D.50222 = cfg->cbb;
    D.50223 = D.50222->last_ins;
    D.50223->next = inst;
    D.50222 = cfg->cbb;
    D.50223 = D.50222->last_ins;
    inst->prev = D.50223;
    D.50222 = cfg->cbb;
    D.50222->last_ins = inst;
    goto <D.50249>;
    <D.50248>:
    D.50222 = cfg->cbb;
    D.50222 = cfg->cbb;
    D.50222->last_ins = inst;
    D.50223 = D.50222->last_ins;
    D.50222->code = D.50223;
    <D.50249>:
  }
  D.50250 = klass->rank;
  D.50251 = D.50250 != 0;
  D.50252 = (long int) D.50251;
  D.50253 = __builtin_expect (D.50252, 0);
  if (D.50253 != 0) goto <D.50254>; else goto <D.50255>;
  <D.50254>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3606, "klass->rank == 0");
  <D.50255>:
  {
    struct MonoInst * inst;

    D.50216 = cfg->mempool;
    inst = mono_mempool_alloc (D.50216, 48);
    inst->data.op[1].const_val = 0;
    D.50256 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.50256;
    inst->prev = 0B;
    D.50257 = inst->prev;
    inst->next = D.50257;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.50258 = inst->sreg3;
    inst->sreg2 = D.50258;
    D.50259 = inst->sreg2;
    inst->sreg1 = D.50259;
    D.50221 = cfg->ip;
    inst->cil_code = D.50221;
    inst->dreg = -1;
    inst->sreg1 = rank_reg;
    inst->data.op[1].const_val = 0;
    D.50222 = cfg->cbb;
    D.50223 = D.50222->last_ins;
    if (D.50223 != 0B) goto <D.50260>; else goto <D.50261>;
    <D.50260>:
    D.50222 = cfg->cbb;
    D.50223 = D.50222->last_ins;
    D.50223->next = inst;
    D.50222 = cfg->cbb;
    D.50223 = D.50222->last_ins;
    inst->prev = D.50223;
    D.50222 = cfg->cbb;
    D.50222->last_ins = inst;
    goto <D.50262>;
    <D.50261>:
    D.50222 = cfg->cbb;
    D.50222 = cfg->cbb;
    D.50222->last_ins = inst;
    D.50223 = D.50222->last_ins;
    D.50222->code = D.50223;
    <D.50262>:
  }
  {
    struct MonoInst * inst;

    D.50216 = cfg->mempool;
    inst = mono_mempool_alloc (D.50216, 48);
    inst->data.op[1].const_val = 0;
    D.50263 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.50263;
    inst->prev = 0B;
    D.50264 = inst->prev;
    inst->next = D.50264;
    inst->opcode = 460;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.50265 = inst->sreg3;
    inst->sreg2 = D.50265;
    D.50266 = inst->sreg2;
    inst->sreg1 = D.50266;
    D.50221 = cfg->ip;
    inst->cil_code = D.50221;
    inst->data.op[1].p = "InvalidCastException";
    D.50222 = cfg->cbb;
    D.50223 = D.50222->last_ins;
    if (D.50223 != 0B) goto <D.50267>; else goto <D.50268>;
    <D.50267>:
    D.50222 = cfg->cbb;
    D.50223 = D.50222->last_ins;
    D.50223->next = inst;
    D.50222 = cfg->cbb;
    D.50223 = D.50222->last_ins;
    inst->prev = D.50223;
    D.50222 = cfg->cbb;
    D.50222->last_ins = inst;
    goto <D.50269>;
    <D.50268>:
    D.50222 = cfg->cbb;
    D.50222 = cfg->cbb;
    D.50222->last_ins = inst;
    D.50223 = D.50222->last_ins;
    D.50222->code = D.50223;
    <D.50269>:
  }
  {
    struct MonoInst * inst;

    D.50216 = cfg->mempool;
    inst = mono_mempool_alloc (D.50216, 48);
    inst->data.op[1].const_val = 0;
    D.50270 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.50270;
    inst->prev = 0B;
    D.50271 = inst->prev;
    inst->next = D.50271;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.50272 = inst->sreg3;
    inst->sreg2 = D.50272;
    D.50273 = inst->sreg2;
    inst->sreg1 = D.50273;
    D.50221 = cfg->ip;
    inst->cil_code = D.50221;
    inst->dreg = klass_reg;
    inst->sreg1 = vtable_reg;
    inst->data.op[0].const_val = 0;
    D.50222 = cfg->cbb;
    D.50223 = D.50222->last_ins;
    if (D.50223 != 0B) goto <D.50274>; else goto <D.50275>;
    <D.50274>:
    D.50222 = cfg->cbb;
    D.50223 = D.50222->last_ins;
    D.50223->next = inst;
    D.50222 = cfg->cbb;
    D.50223 = D.50222->last_ins;
    inst->prev = D.50223;
    D.50222 = cfg->cbb;
    D.50222->last_ins = inst;
    goto <D.50276>;
    <D.50275>:
    D.50222 = cfg->cbb;
    D.50222 = cfg->cbb;
    D.50222->last_ins = inst;
    D.50223 = D.50222->last_ins;
    D.50222->code = D.50223;
    <D.50276>:
  }
  {
    struct MonoInst * inst;

    D.50216 = cfg->mempool;
    inst = mono_mempool_alloc (D.50216, 48);
    inst->data.op[1].const_val = 0;
    D.50277 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.50277;
    inst->prev = 0B;
    D.50278 = inst->prev;
    inst->next = D.50278;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.50279 = inst->sreg3;
    inst->sreg2 = D.50279;
    D.50280 = inst->sreg2;
    inst->sreg1 = D.50280;
    D.50221 = cfg->ip;
    inst->cil_code = D.50221;
    inst->dreg = eclass_reg;
    inst->sreg1 = klass_reg;
    inst->data.op[0].const_val = 0;
    D.50222 = cfg->cbb;
    D.50223 = D.50222->last_ins;
    if (D.50223 != 0B) goto <D.50281>; else goto <D.50282>;
    <D.50281>:
    D.50222 = cfg->cbb;
    D.50223 = D.50222->last_ins;
    D.50223->next = inst;
    D.50222 = cfg->cbb;
    D.50223 = D.50222->last_ins;
    inst->prev = D.50223;
    D.50222 = cfg->cbb;
    D.50222->last_ins = inst;
    goto <D.50283>;
    <D.50282>:
    D.50222 = cfg->cbb;
    D.50222 = cfg->cbb;
    D.50222->last_ins = inst;
    D.50223 = D.50222->last_ins;
    D.50222->code = D.50223;
    <D.50283>:
  }
  if (context_used != 0) goto <D.50284>; else goto <D.50285>;
  <D.50284>:
  {
    struct MonoInst * element_class;

    D.50250 = klass->rank;
    D.50251 = D.50250 != 0;
    D.50252 = (long int) D.50251;
    D.50253 = __builtin_expect (D.50252, 0);
    if (D.50253 != 0) goto <D.50286>; else goto <D.50287>;
    <D.50286>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3619, "klass->rank == 0");
    <D.50287>:
    D.50288 = klass->element_class;
    element_class = emit_get_rgctx_klass (cfg, context_used, D.50288, 1);
    {
      struct MonoInst * inst;

      D.50216 = cfg->mempool;
      inst = mono_mempool_alloc (D.50216, 48);
      inst->data.op[1].const_val = 0;
      D.50289 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.50289;
      inst->prev = 0B;
      D.50290 = inst->prev;
      inst->next = D.50290;
      inst->opcode = 322;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.50291 = inst->sreg3;
      inst->sreg2 = D.50291;
      D.50292 = inst->sreg2;
      inst->sreg1 = D.50292;
      D.50221 = cfg->ip;
      inst->cil_code = D.50221;
      inst->dreg = -1;
      inst->sreg1 = eclass_reg;
      D.50293 = element_class->dreg;
      inst->sreg2 = D.50293;
      D.50222 = cfg->cbb;
      D.50223 = D.50222->last_ins;
      if (D.50223 != 0B) goto <D.50294>; else goto <D.50295>;
      <D.50294>:
      D.50222 = cfg->cbb;
      D.50223 = D.50222->last_ins;
      D.50223->next = inst;
      D.50222 = cfg->cbb;
      D.50223 = D.50222->last_ins;
      inst->prev = D.50223;
      D.50222 = cfg->cbb;
      D.50222->last_ins = inst;
      goto <D.50296>;
      <D.50295>:
      D.50222 = cfg->cbb;
      D.50222 = cfg->cbb;
      D.50222->last_ins = inst;
      D.50223 = D.50222->last_ins;
      D.50222->code = D.50223;
      <D.50296>:
    }
    {
      struct MonoInst * inst;

      D.50216 = cfg->mempool;
      inst = mono_mempool_alloc (D.50216, 48);
      inst->data.op[1].const_val = 0;
      D.50297 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.50297;
      inst->prev = 0B;
      D.50298 = inst->prev;
      inst->next = D.50298;
      inst->opcode = 460;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.50299 = inst->sreg3;
      inst->sreg2 = D.50299;
      D.50300 = inst->sreg2;
      inst->sreg1 = D.50300;
      D.50221 = cfg->ip;
      inst->cil_code = D.50221;
      inst->data.op[1].p = "InvalidCastException";
      D.50222 = cfg->cbb;
      D.50223 = D.50222->last_ins;
      if (D.50223 != 0B) goto <D.50301>; else goto <D.50302>;
      <D.50301>:
      D.50222 = cfg->cbb;
      D.50223 = D.50222->last_ins;
      D.50223->next = inst;
      D.50222 = cfg->cbb;
      D.50223 = D.50222->last_ins;
      inst->prev = D.50223;
      D.50222 = cfg->cbb;
      D.50222->last_ins = inst;
      goto <D.50303>;
      <D.50302>:
      D.50222 = cfg->cbb;
      D.50222 = cfg->cbb;
      D.50222->last_ins = inst;
      D.50223 = D.50222->last_ins;
      D.50222->code = D.50223;
      <D.50303>:
    }
  }
  goto <D.50304>;
  <D.50285>:
  D.50288 = klass->element_class;
  save_cast_details (cfg, D.50288, obj_reg, 0, 0B);
  D.50288 = klass->element_class;
  mini_emit_class_check (cfg, eclass_reg, D.50288);
  reset_cast_details (cfg);
  <D.50304>:
  D.50216 = cfg->mempool;
  add = mono_mempool_alloc (D.50216, 48);
  add->data.op[1].const_val = 0;
  D.50305 = add->data.op[1].const_val;
  add->data.op[0].const_val = D.50305;
  add->prev = 0B;
  D.50306 = add->prev;
  add->next = D.50306;
  add->opcode = 433;
  add->flags = 0;
  add->type = 0;
  add->dreg = -1;
  add->sreg3 = -1;
  D.50307 = add->sreg3;
  add->sreg2 = D.50307;
  D.50308 = add->sreg2;
  add->sreg1 = D.50308;
  D.50221 = cfg->ip;
  add->cil_code = D.50221;
  D.50309 = alloc_dreg (cfg, 5);
  D.50310 = (int) D.50309;
  add->dreg = D.50310;
  add->sreg1 = obj_reg;
  add->data.op[1].const_val = 8;
  D.50222 = cfg->cbb;
  D.50223 = D.50222->last_ins;
  if (D.50223 != 0B) goto <D.50311>; else goto <D.50312>;
  <D.50311>:
  D.50222 = cfg->cbb;
  D.50223 = D.50222->last_ins;
  D.50223->next = add;
  D.50222 = cfg->cbb;
  D.50223 = D.50222->last_ins;
  add->prev = D.50223;
  D.50222 = cfg->cbb;
  D.50222->last_ins = add;
  goto <D.50313>;
  <D.50312>:
  D.50222 = cfg->cbb;
  D.50222 = cfg->cbb;
  D.50222->last_ins = add;
  D.50223 = D.50222->last_ins;
  D.50222->code = D.50223;
  <D.50313>:
  add->type = 5;
  add->klass = klass;
  D.50314 = add;
  return D.50314;
}


ensure_method_is_allowed_to_access_field (struct MonoCompile * cfg, struct MonoMethod * caller, struct MonoClassField * field, struct MonoBasicBlock * bblock, unsigned char * ip)
{
  struct MonoMethod * D.50316;
  struct MonoException * ex;

  D.50316 = get_original_method (caller);
  ex = mono_security_core_clr_is_field_access_allowed (D.50316, field);
  if (ex != 0B) goto <D.50317>; else goto <D.50318>;
  <D.50317>:
  emit_throw_exception (cfg, ex);
  <D.50318>:
}


get_original_method (struct MonoMethod * method)
{
  unsigned char D.50319;
  unsigned char D.50320;
  struct MonoMethod * D.50323;

  D.50319 = BIT_FIELD_REF <*method, 8, 160>;
  D.50320 = D.50319 & 124;
  if (D.50320 == 0) goto <D.50321>; else goto <D.50322>;
  <D.50321>:
  D.50323 = method;
  return D.50323;
  <D.50322>:
  D.50319 = BIT_FIELD_REF <*method, 8, 160>;
  D.50320 = D.50319 & 124;
  if (D.50320 == 20) goto <D.50324>; else goto <D.50325>;
  <D.50324>:
  D.50323 = 0B;
  return D.50323;
  <D.50325>:
  D.50323 = mono_marshal_method_from_wrapper (method);
  return D.50323;
}


inline_method (struct MonoCompile * cfg, struct MonoMethod * cmethod, struct MonoMethodSignature * fsig, struct MonoInst * * sp, guchar * ip, guint real_offset, struct GList * dont_inline, gboolean inline_always)
{
  unsigned int D.50327;
  _Bool D.50328;
  long int D.50329;
  long int D.50330;
  int D.50335;
  int D.50338;
  struct MonoMethod * D.50341;
  int D.50342;
  unsigned int D.50345;
  char * D.50348;
  char * D.50349;
  unsigned char D.50350;
  unsigned char D.50351;
  int D.50354;
  int D.50355;
  struct MonoLoaderError * D.50359;
  _Bool D.50362;
  _Bool D.50363;
  _Bool D.50364;
  unsigned char D.50367;
  int D.50368;
  int D.50369;
  struct MonoType * D.50372;
  int D.50373;
  short unsigned int D.50376;
  unsigned int D.50377;
  unsigned int D.50378;
  struct MonoMemPool * D.50379;
  void * D.50380;
  struct MonoInst * * D.50381;
  unsigned int i.527;
  unsigned int D.50383;
  struct MonoInst * * D.50384;
  struct MonoType * D.50385;
  struct MonoInst * D.50386;
  int D.50387;
  unsigned int D.50388;
  unsigned int D.50389;
  unsigned int D.50390;
  int D.50391;
  unsigned int D.50392;
  unsigned int D.50393;
  int D.50394;
  unsigned int D.50395;
  unsigned int D.50396;
  int D.50397;
  unsigned int D.50398;
  unsigned int D.50399;
  int D.50400;
  <unnamed-unsigned:1> D.50401;
  unsigned char D.50402;
  short unsigned int D.50405;
  int D.50406;
  int D.50407;
  int prev_cil_offset_to_bb_len.528;
  unsigned char D.50411;
  <unnamed-unsigned:1> D.50412;
  unsigned int D.50413;
  unsigned int costs.529;
  _Bool D.50415;
  _Bool D.50416;
  char * D.50421;
  char * D.50422;
  int D.50423;
  int D.50424;
  int D.50425;
  struct MonoInst * D.50426;
  int D.50427;
  int D.50428;
  const unsigned char * D.50429;
  struct MonoInst * D.50430;
  short int D.50434;
  struct MonoBasicBlock * * D.50437;
  struct MonoBasicBlock * D.50438;
  short int D.50439;
  short int D.50446;
  struct MonoBasicBlock * * D.50448;
  struct MonoBasicBlock * D.50449;
  short int D.50450;
  struct MonoBasicBlock * * D.50460;
  struct MonoInst * D.50461;
  short unsigned int D.50464;
  int D.50467;
  int D.50468;
  struct MonoInst * * D.50473;
  int D.50474;
  unsigned int D.50475;
  unsigned int D.50476;
  struct MonoInst * * D.50477;
  struct MonoInst * D.50478;
  struct MonoType * D.50479;
  unsigned int D.50480;
  short unsigned int D.50481;
  struct MonoClass * D.50482;
  int D.50483;
  unsigned char D.50484;
  <unnamed type> D.50485;
  unsigned int D.50486;
  int D.50487;
  short unsigned int D.50488;
  struct MonoClass * D.50491;
  struct MonoBasicBlock * D.50492;
  struct MonoInst * D.50493;
  struct MonoInst * * sp.530;
  struct GSList * D.50498;
  struct GSList * D.50499;
  char * D.50502;
  struct GSList * D.50503;
  struct MonoInst * ins;
  struct MonoInst * rvar;
  struct MonoMethodHeader * cheader;
  struct MonoBasicBlock * ebblock;
  struct MonoBasicBlock * sbblock;
  int i;
  int costs;
  struct MonoMethod * prev_inlined_method;
  struct MonoInst * * prev_locals;
  struct MonoInst * * prev_args;
  struct MonoType * * prev_arg_types;
  guint prev_real_offset;
  struct GHashTable * prev_cbb_hash;
  struct MonoBasicBlock * * prev_cil_offset_to_bb;
  struct MonoBasicBlock * prev_cbb;
  unsigned char * prev_cil_start;
  guint32 prev_cil_offset_to_bb_len;
  struct MonoMethod * prev_current_method;
  struct MonoGenericContext * prev_generic_context;
  gboolean ret_var_set;
  gboolean prev_ret_var_set;
  gboolean virtual;

  rvar = 0B;
  virtual = 0;
  D.50327 = cfg->exception_type;
  D.50328 = D.50327 != 0;
  D.50329 = (long int) D.50328;
  D.50330 = __builtin_expect (D.50329, 0);
  if (D.50330 != 0) goto <D.50331>; else goto <D.50332>;
  <D.50331>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 5768, "cfg->exception_type == MONO_EXCEPTION_NONE");
  <D.50332>:
  if (inline_always == 0) goto <D.50333>; else goto <D.50334>;
  <D.50333>:
  D.50335 = check_inline_called_method_name_limit (cmethod);
  if (D.50335 == 0) goto <D.50336>; else goto <D.50337>;
  <D.50336>:
  D.50338 = 0;
  return D.50338;
  <D.50337>:
  <D.50334>:
  if (inline_always == 0) goto <D.50339>; else goto <D.50340>;
  <D.50339>:
  D.50341 = cfg->method;
  D.50342 = check_inline_caller_method_name_limit (D.50341);
  if (D.50342 == 0) goto <D.50343>; else goto <D.50344>;
  <D.50343>:
  D.50338 = 0;
  return D.50338;
  <D.50344>:
  <D.50340>:
  D.50345 = cfg->verbose_level;
  if (D.50345 > 2) goto <D.50346>; else goto <D.50347>;
  <D.50346>:
  D.50348 = mono_method_full_name (cmethod, 1);
  D.50341 = cfg->method;
  D.50349 = mono_method_full_name (D.50341, 1);
  printf ("INLINE START %p %s -> %s\n", cmethod, D.50349, D.50348);
  <D.50347>:
  D.50350 = BIT_FIELD_REF <*cmethod, 8, 160>;
  D.50351 = D.50350 & 1;
  if (D.50351 == 0) goto <D.50352>; else goto <D.50353>;
  <D.50352>:
  D.50354 = cfg->stat_inlineable_methods;
  D.50355 = D.50354 + 1;
  cfg->stat_inlineable_methods = D.50355;
  cmethod->inline_info = 1;
  <D.50353>:
  cheader = mono_method_get_header (cmethod);
  if (cheader == 0B) goto <D.50356>; else goto <D.50358>;
  <D.50358>:
  D.50359 = mono_loader_get_last_error ();
  if (D.50359 != 0B) goto <D.50356>; else goto <D.50357>;
  <D.50356>:
  {
    struct MonoLoaderError * error;

    error = mono_loader_get_last_error ();
    if (cheader != 0B) goto <D.50360>; else goto <D.50361>;
    <D.50360>:
    mono_metadata_free_mh (cheader);
    <D.50361>:
    D.50362 = inline_always != 0;
    D.50363 = error != 0B;
    D.50364 = D.50362 & D.50363;
    if (D.50364 != 0) goto <D.50365>; else goto <D.50366>;
    <D.50365>:
    D.50367 = error->exception_type;
    D.50368 = (int) D.50367;
    mono_cfg_set_exception (cfg, D.50368);
    <D.50366>:
    mono_loader_clear_error ();
    D.50338 = 0;
    return D.50338;
  }
  <D.50357>:
  D.50369 = mono_compile_is_broken (cfg, cmethod, 0);
  if (D.50369 != 0) goto <D.50370>; else goto <D.50371>;
  <D.50370>:
  mono_metadata_free_mh (cheader);
  D.50338 = 0;
  return D.50338;
  <D.50371>:
  D.50372 = fsig->ret;
  D.50373 = mono_type_is_void (D.50372);
  if (D.50373 == 0) goto <D.50374>; else goto <D.50375>;
  <D.50374>:
  D.50372 = fsig->ret;
  rvar = mono_compile_create_var (cfg, D.50372, 329);
  <D.50375>:
  prev_locals = cfg->locals;
  D.50376 = cheader->num_locals;
  D.50377 = (unsigned int) D.50376;
  D.50378 = D.50377 * 4;
  D.50379 = cfg->mempool;
  D.50380 = mono_mempool_alloc0 (D.50379, D.50378);
  cfg->locals = D.50380;
  i = 0;
  goto <D.26958>;
  <D.26957>:
  D.50381 = cfg->locals;
  i.527 = (unsigned int) i;
  D.50383 = i.527 * 4;
  D.50384 = D.50381 + D.50383;
  D.50385 = cheader->locals[i];
  D.50386 = mono_compile_create_var (cfg, D.50385, 329);
  *D.50384 = D.50386;
  i = i + 1;
  <D.26958>:
  D.50376 = cheader->num_locals;
  D.50387 = (int) D.50376;
  if (D.50387 > i) goto <D.26957>; else goto <D.26959>;
  <D.26959>:
  D.50379 = cfg->mempool;
  sbblock = mono_mempool_alloc0 (D.50379, 172);
  D.50388 = cfg->num_bblocks;
  D.50389 = D.50388;
  D.50390 = D.50389 + 1;
  cfg->num_bblocks = D.50390;
  D.50391 = (int) D.50389;
  sbblock->block_num = D.50391;
  sbblock->real_offset = real_offset;
  D.50379 = cfg->mempool;
  ebblock = mono_mempool_alloc0 (D.50379, 172);
  D.50388 = cfg->num_bblocks;
  D.50392 = D.50388;
  D.50393 = D.50392 + 1;
  cfg->num_bblocks = D.50393;
  D.50394 = (int) D.50392;
  ebblock->block_num = D.50394;
  D.50388 = cfg->num_bblocks;
  D.50395 = D.50388;
  D.50396 = D.50395 + 1;
  cfg->num_bblocks = D.50396;
  D.50397 = (int) D.50395;
  ebblock->block_num = D.50397;
  ebblock->real_offset = real_offset;
  prev_args = cfg->args;
  prev_arg_types = cfg->arg_types;
  prev_inlined_method = cfg->inlined_method;
  cfg->inlined_method = cmethod;
  cfg->ret_var_set = 0;
  D.50398 = cfg->inline_depth;
  D.50399 = D.50398 + 1;
  cfg->inline_depth = D.50399;
  prev_real_offset = cfg->real_offset;
  prev_cbb_hash = cfg->cbb_hash;
  prev_cil_offset_to_bb = cfg->cil_offset_to_bb;
  D.50400 = cfg->cil_offset_to_bb_len;
  prev_cil_offset_to_bb_len = (guint32) D.50400;
  prev_cil_start = cfg->cil_start;
  prev_cbb = cfg->cbb;
  prev_current_method = cfg->current_method;
  prev_generic_context = cfg->generic_context;
  D.50401 = cfg->ret_var_set;
  prev_ret_var_set = (gboolean) D.50401;
  D.50402 = *ip;
  if (D.50402 == 111) goto <D.50403>; else goto <D.50404>;
  <D.50403>:
  D.50405 = cmethod->flags;
  D.50406 = (int) D.50405;
  D.50407 = D.50406 & 16;
  if (D.50407 == 0) goto <D.50408>; else goto <D.50409>;
  <D.50408>:
  virtual = 1;
  <D.50409>:
  <D.50404>:
  costs = mono_method_to_ir (cfg, cmethod, sbblock, ebblock, rvar, dont_inline, sp, real_offset, virtual);
  D.50401 = cfg->ret_var_set;
  ret_var_set = (gboolean) D.50401;
  cfg->inlined_method = prev_inlined_method;
  cfg->real_offset = prev_real_offset;
  cfg->cbb_hash = prev_cbb_hash;
  cfg->cil_offset_to_bb = prev_cil_offset_to_bb;
  prev_cil_offset_to_bb_len.528 = (int) prev_cil_offset_to_bb_len;
  cfg->cil_offset_to_bb_len = prev_cil_offset_to_bb_len.528;
  cfg->cil_start = prev_cil_start;
  cfg->locals = prev_locals;
  cfg->args = prev_args;
  cfg->arg_types = prev_arg_types;
  cfg->current_method = prev_current_method;
  cfg->generic_context = prev_generic_context;
  D.50411 = (unsigned char) prev_ret_var_set;
  D.50412 = (<unnamed-unsigned:1>) D.50411;
  cfg->ret_var_set = D.50412;
  D.50398 = cfg->inline_depth;
  D.50413 = D.50398 + 4294967295;
  cfg->inline_depth = D.50413;
  costs.529 = (unsigned int) costs;
  D.50415 = costs.529 <= 59;
  D.50362 = inline_always != 0;
  D.50416 = D.50415 | D.50362;
  if (D.50416 != 0) goto <D.50417>; else goto <D.50418>;
  <D.50417>:
  D.50345 = cfg->verbose_level;
  if (D.50345 > 2) goto <D.50419>; else goto <D.50420>;
  <D.50419>:
  D.50421 = mono_method_full_name (cmethod, 1);
  D.50341 = cfg->method;
  D.50422 = mono_method_full_name (D.50341, 1);
  printf ("INLINE END %s -> %s\n", D.50422, D.50421);
  <D.50420>:
  D.50423 = cfg->stat_inlined_methods;
  D.50424 = D.50423 + 1;
  cfg->stat_inlined_methods = D.50424;
  D.50379 = cfg->mempool;
  ins = mono_mempool_alloc (D.50379, 48);
  ins->data.op[1].const_val = 0;
  D.50425 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.50425;
  ins->prev = 0B;
  D.50426 = ins->prev;
  ins->next = D.50426;
  ins->opcode = 316;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.50427 = ins->sreg3;
  ins->sreg2 = D.50427;
  D.50428 = ins->sreg2;
  ins->sreg1 = D.50428;
  D.50429 = cfg->ip;
  ins->cil_code = D.50429;
  D.50430 = prev_cbb->last_ins;
  if (D.50430 != 0B) goto <D.50431>; else goto <D.50432>;
  <D.50431>:
  D.50430 = prev_cbb->last_ins;
  D.50430->next = ins;
  D.50430 = prev_cbb->last_ins;
  ins->prev = D.50430;
  prev_cbb->last_ins = ins;
  goto <D.50433>;
  <D.50432>:
  prev_cbb->last_ins = ins;
  D.50430 = prev_cbb->last_ins;
  prev_cbb->code = D.50430;
  <D.50433>:
  prev_cbb->next_bb = sbblock;
  link_bblock (cfg, prev_cbb, sbblock);
  mono_merge_basic_blocks (cfg, prev_cbb, sbblock);
  D.50434 = prev_cbb->out_count;
  if (D.50434 == 1) goto <D.50435>; else goto <D.50436>;
  <D.50435>:
  D.50437 = prev_cbb->out_bb;
  D.50438 = *D.50437;
  D.50439 = D.50438->in_count;
  if (D.50439 == 1) goto <D.50440>; else goto <D.50441>;
  <D.50440>:
  D.50437 = prev_cbb->out_bb;
  D.50438 = *D.50437;
  if (D.50438 != ebblock) goto <D.50442>; else goto <D.50443>;
  <D.50442>:
  D.50437 = prev_cbb->out_bb;
  D.50438 = *D.50437;
  mono_merge_basic_blocks (cfg, prev_cbb, D.50438);
  <D.50443>:
  <D.50441>:
  <D.50436>:
  D.50446 = ebblock->in_count;
  if (D.50446 == 1) goto <D.50447>; else goto <D.50444>;
  <D.50447>:
  D.50448 = ebblock->in_bb;
  D.50449 = *D.50448;
  D.50450 = D.50449->out_count;
  if (D.50450 == 1) goto <D.50451>; else goto <D.50444>;
  <D.50451>:
  {
    struct MonoBasicBlock * prev;

    D.50448 = ebblock->in_bb;
    prev = *D.50448;
    mono_merge_basic_blocks (cfg, prev, ebblock);
    cfg->cbb = prev;
    D.50434 = prev_cbb->out_count;
    if (D.50434 == 1) goto <D.50452>; else goto <D.50453>;
    <D.50452>:
    D.50437 = prev_cbb->out_bb;
    D.50438 = *D.50437;
    D.50439 = D.50438->in_count;
    if (D.50439 == 1) goto <D.50454>; else goto <D.50455>;
    <D.50454>:
    D.50437 = prev_cbb->out_bb;
    D.50438 = *D.50437;
    if (D.50438 == prev) goto <D.50456>; else goto <D.50457>;
    <D.50456>:
    mono_merge_basic_blocks (cfg, prev_cbb, prev);
    cfg->cbb = prev_cbb;
    <D.50457>:
    <D.50455>:
    <D.50453>:
  }
  goto <D.50445>;
  <D.50444>:
  if (rvar != 0B) goto <D.50458>; else goto <D.50459>;
  <D.50458>:
  {
    struct MonoBasicBlock * bb;

    i = 0;
    goto <D.26963>;
    <D.26962>:
    D.50448 = ebblock->in_bb;
    i.527 = (unsigned int) i;
    D.50383 = i.527 * 4;
    D.50460 = D.50448 + D.50383;
    bb = *D.50460;
    D.50461 = bb->last_ins;
    if (D.50461 != 0B) goto <D.50462>; else goto <D.50463>;
    <D.50462>:
    D.50461 = bb->last_ins;
    D.50464 = D.50461->opcode;
    if (D.50464 == 802) goto <D.50465>; else goto <D.50466>;
    <D.50465>:
    cfg->cbb = bb;
    D.50372 = fsig->ret;
    D.50467 = rvar->dreg;
    emit_init_rvar (cfg, D.50467, D.50372);
    <D.50466>:
    <D.50463>:
    i = i + 1;
    <D.26963>:
    D.50446 = ebblock->in_count;
    D.50468 = (int) D.50446;
    if (D.50468 > i) goto <D.26962>; else goto <D.26964>;
    <D.26964>:
  }
  <D.50459>:
  cfg->cbb = ebblock;
  <D.50445>:
  if (rvar != 0B) goto <D.50469>; else goto <D.50470>;
  <D.50469>:
  if (ret_var_set == 0) goto <D.50471>; else goto <D.50472>;
  <D.50471>:
  D.50372 = fsig->ret;
  D.50467 = rvar->dreg;
  emit_init_rvar (cfg, D.50467, D.50372);
  <D.50472>:
  D.50379 = cfg->mempool;
  ins = mono_mempool_alloc (D.50379, 48);
  ins->data.op[1].const_val = 0;
  D.50425 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.50425;
  ins->prev = 0B;
  D.50426 = ins->prev;
  ins->next = D.50426;
  ins->opcode = 428;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.50427 = ins->sreg3;
  ins->sreg2 = D.50427;
  D.50428 = ins->sreg2;
  ins->sreg1 = D.50428;
  D.50429 = cfg->ip;
  ins->cil_code = D.50429;
  D.50473 = cfg->varinfo;
  D.50474 = rvar->data.op[0].const_val;
  D.50475 = (unsigned int) D.50474;
  D.50476 = D.50475 * 4;
  D.50477 = D.50473 + D.50476;
  D.50478 = *D.50477;
  D.50479 = D.50478->data.op[1].vtype;
  D.50480 = mono_type_to_regmove (cfg, D.50479);
  D.50481 = (short unsigned int) D.50480;
  ins->opcode = D.50481;
  D.50473 = cfg->varinfo;
  D.50474 = rvar->data.op[0].const_val;
  D.50475 = (unsigned int) D.50474;
  D.50476 = D.50475 * 4;
  D.50477 = D.50473 + D.50476;
  D.50478 = *D.50477;
  D.50479 = D.50478->data.op[1].vtype;
  type_to_eval_stack_type (cfg, D.50479, ins);
  D.50473 = cfg->varinfo;
  D.50474 = rvar->data.op[0].const_val;
  D.50475 = (unsigned int) D.50474;
  D.50476 = D.50475 * 4;
  D.50477 = D.50473 + D.50476;
  D.50478 = *D.50477;
  D.50482 = D.50478->klass;
  ins->klass = D.50482;
  D.50473 = cfg->varinfo;
  D.50474 = rvar->data.op[0].const_val;
  D.50475 = (unsigned int) D.50474;
  D.50476 = D.50475 * 4;
  D.50477 = D.50473 + D.50476;
  D.50478 = *D.50477;
  D.50483 = D.50478->dreg;
  ins->sreg1 = D.50483;
  D.50484 = ins->type;
  D.50485 = (<unnamed type>) D.50484;
  D.50486 = alloc_dreg (cfg, D.50485);
  D.50487 = (int) D.50486;
  ins->dreg = D.50487;
  D.50488 = ins->opcode;
  if (D.50488 == 431) goto <D.50489>; else goto <D.50490>;
  <D.50489>:
  D.50473 = cfg->varinfo;
  D.50474 = rvar->data.op[0].const_val;
  D.50475 = (unsigned int) D.50474;
  D.50476 = D.50475 * 4;
  D.50477 = D.50473 + D.50476;
  D.50478 = *D.50477;
  D.50479 = D.50478->data.op[1].vtype;
  D.50491 = mono_class_from_mono_type (D.50479);
  ins->klass = D.50491;
  <D.50490>:
  D.50492 = cfg->cbb;
  D.50493 = D.50492->last_ins;
  if (D.50493 != 0B) goto <D.50494>; else goto <D.50495>;
  <D.50494>:
  D.50492 = cfg->cbb;
  D.50493 = D.50492->last_ins;
  D.50493->next = ins;
  D.50492 = cfg->cbb;
  D.50493 = D.50492->last_ins;
  ins->prev = D.50493;
  D.50492 = cfg->cbb;
  D.50492->last_ins = ins;
  goto <D.50496>;
  <D.50495>:
  D.50492 = cfg->cbb;
  D.50492 = cfg->cbb;
  D.50492->last_ins = ins;
  D.50493 = D.50492->last_ins;
  D.50492->code = D.50493;
  <D.50496>:
  sp.530 = sp;
  sp = sp.530 + 4;
  *sp.530 = ins;
  <D.50470>:
  D.50498 = cfg->headers_to_free;
  D.50379 = cfg->mempool;
  D.50499 = g_slist_prepend_mempool (D.50379, D.50498, cheader);
  cfg->headers_to_free = D.50499;
  D.50338 = costs + 1;
  return D.50338;
  <D.50418>:
  D.50345 = cfg->verbose_level;
  if (D.50345 > 2) goto <D.50500>; else goto <D.50501>;
  <D.50500>:
  D.50502 = mono_method_full_name (cmethod, 1);
  printf ("INLINE ABORTED %s (cost %d)\n", D.50502, costs);
  <D.50501>:
  cfg->exception_type = 0;
  mono_loader_clear_error ();
  cfg->cbb = prev_cbb;
  D.50498 = cfg->headers_to_free;
  D.50379 = cfg->mempool;
  D.50503 = g_slist_prepend_mempool (D.50379, D.50498, cheader);
  cfg->headers_to_free = D.50503;
  D.50338 = 0;
  return D.50338;
}


check_inline_called_method_name_limit (struct MonoMethod * called_method)
{
  const char * limit.531;
  char D.50511;
  unsigned int D.50514;
  gboolean D.50515;
  _Bool D.50516;
  int strncmp_result;
  static const char * limit = 0B;

  limit.531 = limit;
  if (limit.531 == 0B) goto <D.50506>; else goto <D.50507>;
  <D.50506>:
  {
    const char * limit_string;

    limit_string = monoeg_g_getenv ("MONO_INLINE_CALLED_METHOD_NAME_LIMIT");
    if (limit_string != 0B) goto <D.50508>; else goto <D.50509>;
    <D.50508>:
    limit = limit_string;
    goto <D.50510>;
    <D.50509>:
    limit = "";
    <D.50510>:
  }
  <D.50507>:
  limit.531 = limit;
  D.50511 = *limit.531;
  if (D.50511 != 0) goto <D.50512>; else goto <D.50513>;
  <D.50512>:
  {
    char * called_method_name;

    called_method_name = mono_method_full_name (called_method, 1);
    limit.531 = limit;
    D.50514 = strlen (limit.531);
    limit.531 = limit;
    strncmp_result = strncmp (called_method_name, limit.531, D.50514);
    monoeg_g_free (called_method_name);
    D.50516 = strncmp_result == 0;
    D.50515 = (gboolean) D.50516;
    return D.50515;
  }
  <D.50513>:
  D.50515 = 1;
  return D.50515;
}


check_inline_caller_method_name_limit (struct MonoMethod * caller_method)
{
  const char * limit.532;
  char D.50524;
  unsigned int D.50527;
  gboolean D.50528;
  _Bool D.50529;
  int strncmp_result;
  static const char * limit = 0B;

  limit.532 = limit;
  if (limit.532 == 0B) goto <D.50519>; else goto <D.50520>;
  <D.50519>:
  {
    const char * limit_string;

    limit_string = monoeg_g_getenv ("MONO_INLINE_CALLER_METHOD_NAME_LIMIT");
    if (limit_string != 0B) goto <D.50521>; else goto <D.50522>;
    <D.50521>:
    limit = limit_string;
    goto <D.50523>;
    <D.50522>:
    limit = "";
    <D.50523>:
  }
  <D.50520>:
  limit.532 = limit;
  D.50524 = *limit.532;
  if (D.50524 != 0) goto <D.50525>; else goto <D.50526>;
  <D.50525>:
  {
    char * caller_method_name;

    caller_method_name = mono_method_full_name (caller_method, 1);
    limit.532 = limit;
    D.50527 = strlen (limit.532);
    limit.532 = limit;
    strncmp_result = strncmp (caller_method_name, limit.532, D.50527);
    monoeg_g_free (caller_method_name);
    D.50529 = strncmp_result == 0;
    D.50528 = (gboolean) D.50529;
    return D.50528;
  }
  <D.50526>:
  D.50528 = 1;
  return D.50528;
}


is_magic_tls_access (struct MonoClassField * field)
{
  int D.27213;
  int iftmp.533;
  int D.27212;
  const char[8] * D.50534;
  unsigned char D.50535;
  int D.50536;
  unsigned char D.50537;
  int D.50538;
  _Bool D.50539;
  _Bool D.50540;
  _Bool D.50541;
  const unsigned char * D.50544;
  unsigned char D.50545;
  int D.50546;
  const unsigned char * D.50547;
  unsigned char D.50548;
  int D.50549;
  _Bool D.50550;
  _Bool D.50551;
  const unsigned char * D.50554;
  unsigned char D.50555;
  int D.50556;
  const unsigned char * D.50557;
  unsigned char D.50558;
  int D.50559;
  _Bool D.50560;
  _Bool D.50561;
  const unsigned char * D.50564;
  unsigned char D.50565;
  int D.50566;
  const unsigned char * D.50567;
  unsigned char D.50568;
  int D.50569;
  const char * D.50571;
  gboolean D.50574;
  int D.27222;
  int iftmp.534;
  int D.27221;
  struct MonoClass * D.50578;
  const char[14] * D.50579;
  unsigned char D.50580;
  int D.50581;
  unsigned char D.50582;
  int D.50583;
  _Bool D.50584;
  _Bool D.50585;
  _Bool D.50586;
  const unsigned char * D.50589;
  unsigned char D.50590;
  int D.50591;
  const unsigned char * D.50592;
  unsigned char D.50593;
  int D.50594;
  _Bool D.50595;
  _Bool D.50596;
  const unsigned char * D.50599;
  unsigned char D.50600;
  int D.50601;
  const unsigned char * D.50602;
  unsigned char D.50603;
  int D.50604;
  _Bool D.50605;
  _Bool D.50606;
  const unsigned char * D.50609;
  unsigned char D.50610;
  int D.50611;
  const unsigned char * D.50612;
  unsigned char D.50613;
  int D.50614;
  const char * D.50616;
  struct MonoImage * D.50619;
  struct MonoImage * D.50620;
  _Bool D.50621;

  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 7;
    if (__s2_len <= 3) goto <D.50532>; else goto <D.50533>;
    <D.50532>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = field->name;
      D.50534 = "tlsdata";
      D.50535 = MEM[(const unsigned char *)D.50534];
      D.50536 = (int) D.50535;
      D.50537 = *__s2;
      D.50538 = (int) D.50537;
      __result = D.50536 - D.50538;
      {
        D.50539 = __s2_len != 0;
        D.50540 = __result == 0;
        D.50541 = D.50539 & D.50540;
        if (D.50541 != 0) goto <D.50542>; else goto <D.50543>;
        <D.50542>:
        D.50544 = &MEM[(void *)"tlsdata" + 1B];
        D.50545 = *D.50544;
        D.50546 = (int) D.50545;
        D.50547 = __s2 + 1;
        D.50548 = *D.50547;
        D.50549 = (int) D.50548;
        __result = D.50546 - D.50549;
        D.50550 = __s2_len > 1;
        D.50540 = __result == 0;
        D.50551 = D.50550 & D.50540;
        if (D.50551 != 0) goto <D.50552>; else goto <D.50553>;
        <D.50552>:
        D.50554 = &MEM[(void *)"tlsdata" + 2B];
        D.50555 = *D.50554;
        D.50556 = (int) D.50555;
        D.50557 = __s2 + 2;
        D.50558 = *D.50557;
        D.50559 = (int) D.50558;
        __result = D.50556 - D.50559;
        D.50560 = __s2_len > 2;
        D.50540 = __result == 0;
        D.50561 = D.50560 & D.50540;
        if (D.50561 != 0) goto <D.50562>; else goto <D.50563>;
        <D.50562>:
        D.50564 = &MEM[(void *)"tlsdata" + 3B];
        D.50565 = *D.50564;
        D.50566 = (int) D.50565;
        D.50567 = __s2 + 3;
        D.50568 = *D.50567;
        D.50569 = (int) D.50568;
        __result = D.50566 - D.50569;
        <D.50563>:
        <D.50553>:
        <D.50543>:
      }
      D.27212 = __result;
    }
    iftmp.533 = -D.27212;
    goto <D.50570>;
    <D.50533>:
    D.50571 = field->name;
    iftmp.533 = __builtin_strcmp (D.50571, "tlsdata");
    <D.50570>:
    D.27213 = iftmp.533;
  }
  if (D.27213 != 0) goto <D.50572>; else goto <D.50573>;
  <D.50572>:
  D.50574 = 0;
  return D.50574;
  <D.50573>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 13;
    if (__s2_len <= 3) goto <D.50576>; else goto <D.50577>;
    <D.50576>:
    {
      const unsigned char * __s2;
      int __result;

      D.50578 = field->parent;
      __s2 = D.50578->name;
      D.50579 = "ThreadLocal`1";
      D.50580 = MEM[(const unsigned char *)D.50579];
      D.50581 = (int) D.50580;
      D.50582 = *__s2;
      D.50583 = (int) D.50582;
      __result = D.50581 - D.50583;
      {
        D.50584 = __s2_len != 0;
        D.50585 = __result == 0;
        D.50586 = D.50584 & D.50585;
        if (D.50586 != 0) goto <D.50587>; else goto <D.50588>;
        <D.50587>:
        D.50589 = &MEM[(void *)"ThreadLocal`1" + 1B];
        D.50590 = *D.50589;
        D.50591 = (int) D.50590;
        D.50592 = __s2 + 1;
        D.50593 = *D.50592;
        D.50594 = (int) D.50593;
        __result = D.50591 - D.50594;
        D.50595 = __s2_len > 1;
        D.50585 = __result == 0;
        D.50596 = D.50595 & D.50585;
        if (D.50596 != 0) goto <D.50597>; else goto <D.50598>;
        <D.50597>:
        D.50599 = &MEM[(void *)"ThreadLocal`1" + 2B];
        D.50600 = *D.50599;
        D.50601 = (int) D.50600;
        D.50602 = __s2 + 2;
        D.50603 = *D.50602;
        D.50604 = (int) D.50603;
        __result = D.50601 - D.50604;
        D.50605 = __s2_len > 2;
        D.50585 = __result == 0;
        D.50606 = D.50605 & D.50585;
        if (D.50606 != 0) goto <D.50607>; else goto <D.50608>;
        <D.50607>:
        D.50609 = &MEM[(void *)"ThreadLocal`1" + 3B];
        D.50610 = *D.50609;
        D.50611 = (int) D.50610;
        D.50612 = __s2 + 3;
        D.50613 = *D.50612;
        D.50614 = (int) D.50613;
        __result = D.50611 - D.50614;
        <D.50608>:
        <D.50598>:
        <D.50588>:
      }
      D.27221 = __result;
    }
    iftmp.534 = -D.27221;
    goto <D.50615>;
    <D.50577>:
    D.50578 = field->parent;
    D.50616 = D.50578->name;
    iftmp.534 = __builtin_strcmp (D.50616, "ThreadLocal`1");
    <D.50615>:
    D.27222 = iftmp.534;
  }
  if (D.27222 != 0) goto <D.50617>; else goto <D.50618>;
  <D.50617>:
  D.50574 = 0;
  return D.50574;
  <D.50618>:
  D.50578 = field->parent;
  D.50619 = D.50578->image;
  D.50620 = mono_defaults.corlib;
  D.50621 = D.50619 == D.50620;
  D.50574 = (gboolean) D.50621;
  return D.50574;
}


create_magic_tls_access (struct MonoCompile * cfg, struct MonoClassField * tls_field, struct MonoInst * * cached_tls_addr, struct MonoInst * thread_local)
{
  struct MonoInst * D.50623;
  struct MonoMemPool * D.50626;
  int D.50627;
  struct MonoInst * D.50628;
  int D.50629;
  int D.50630;
  const unsigned char * D.50631;
  struct MonoInst * * D.50632;
  int D.50633;
  unsigned int D.50634;
  unsigned int D.50635;
  struct MonoInst * * D.50636;
  struct MonoInst * D.50637;
  struct MonoType * D.50638;
  unsigned int D.50639;
  short unsigned int D.50640;
  struct MonoClass * D.50641;
  int D.50642;
  unsigned char D.50643;
  <unnamed type> D.50644;
  unsigned int D.50645;
  int D.50646;
  short unsigned int D.50647;
  struct MonoClass * D.50650;
  struct MonoBasicBlock * D.50651;
  struct MonoInst * D.50652;
  struct MonoInst * D.50656;
  struct MonoClass * D.50657;
  int D.50658;
  struct MonoInst * D.50659;
  struct MonoType * D.50660;
  unsigned int D.50661;
  short unsigned int D.50662;
  int D.50663;
  int D.50664;
  int D.50665;
  int D.50666;
  unsigned char D.50667;
  <unnamed type> D.50668;
  unsigned int D.50669;
  int D.50670;
  struct MonoClass * D.50680;
  int D.50681;
  struct MonoType * D.50682;
  struct MonoClass * D.50683;
  struct MonoType * D.50684;
  int D.50685;
  struct MonoInst * D.50686;
  int D.50687;
  int D.50688;
  int D.50689;
  unsigned int D.50690;
  unsigned int D.50691;
  struct MonoInst * * D.50692;
  struct MonoInst * D.50693;
  struct MonoType * D.50694;
  unsigned int D.50695;
  short unsigned int D.50696;
  struct MonoClass * D.50697;
  int D.50698;
  int D.50699;
  short unsigned int D.50700;
  struct MonoClass * D.50703;
  unsigned int D.50707;
  short unsigned int D.50708;
  unsigned int D.50709;
  int D.50710;
  struct MonoClass * D.50713;
  struct MonoInst * load;
  struct MonoInst * addr;
  struct MonoInst * temp;
  struct MonoInst * store;
  struct MonoInst * thread_ins;
  struct MonoClassField * offset_field;

  D.50623 = *cached_tls_addr;
  if (D.50623 != 0B) goto <D.50624>; else goto <D.50625>;
  <D.50624>:
  D.50626 = cfg->mempool;
  addr = mono_mempool_alloc (D.50626, 48);
  addr->data.op[1].const_val = 0;
  D.50627 = addr->data.op[1].const_val;
  addr->data.op[0].const_val = D.50627;
  addr->prev = 0B;
  D.50628 = addr->prev;
  addr->next = D.50628;
  addr->opcode = 428;
  addr->flags = 0;
  addr->type = 0;
  addr->dreg = -1;
  addr->sreg3 = -1;
  D.50629 = addr->sreg3;
  addr->sreg2 = D.50629;
  D.50630 = addr->sreg2;
  addr->sreg1 = D.50630;
  D.50631 = cfg->ip;
  addr->cil_code = D.50631;
  D.50632 = cfg->varinfo;
  D.50623 = *cached_tls_addr;
  D.50633 = D.50623->data.op[0].const_val;
  D.50634 = (unsigned int) D.50633;
  D.50635 = D.50634 * 4;
  D.50636 = D.50632 + D.50635;
  D.50637 = *D.50636;
  D.50638 = D.50637->data.op[1].vtype;
  D.50639 = mono_type_to_regmove (cfg, D.50638);
  D.50640 = (short unsigned int) D.50639;
  addr->opcode = D.50640;
  D.50632 = cfg->varinfo;
  D.50623 = *cached_tls_addr;
  D.50633 = D.50623->data.op[0].const_val;
  D.50634 = (unsigned int) D.50633;
  D.50635 = D.50634 * 4;
  D.50636 = D.50632 + D.50635;
  D.50637 = *D.50636;
  D.50638 = D.50637->data.op[1].vtype;
  type_to_eval_stack_type (cfg, D.50638, addr);
  D.50632 = cfg->varinfo;
  D.50623 = *cached_tls_addr;
  D.50633 = D.50623->data.op[0].const_val;
  D.50634 = (unsigned int) D.50633;
  D.50635 = D.50634 * 4;
  D.50636 = D.50632 + D.50635;
  D.50637 = *D.50636;
  D.50641 = D.50637->klass;
  addr->klass = D.50641;
  D.50632 = cfg->varinfo;
  D.50623 = *cached_tls_addr;
  D.50633 = D.50623->data.op[0].const_val;
  D.50634 = (unsigned int) D.50633;
  D.50635 = D.50634 * 4;
  D.50636 = D.50632 + D.50635;
  D.50637 = *D.50636;
  D.50642 = D.50637->dreg;
  addr->sreg1 = D.50642;
  D.50643 = addr->type;
  D.50644 = (<unnamed type>) D.50643;
  D.50645 = alloc_dreg (cfg, D.50644);
  D.50646 = (int) D.50645;
  addr->dreg = D.50646;
  D.50647 = addr->opcode;
  if (D.50647 == 431) goto <D.50648>; else goto <D.50649>;
  <D.50648>:
  D.50632 = cfg->varinfo;
  D.50623 = *cached_tls_addr;
  D.50633 = D.50623->data.op[0].const_val;
  D.50634 = (unsigned int) D.50633;
  D.50635 = D.50634 * 4;
  D.50636 = D.50632 + D.50635;
  D.50637 = *D.50636;
  D.50638 = D.50637->data.op[1].vtype;
  D.50650 = mono_class_from_mono_type (D.50638);
  addr->klass = D.50650;
  <D.50649>:
  D.50651 = cfg->cbb;
  D.50652 = D.50651->last_ins;
  if (D.50652 != 0B) goto <D.50653>; else goto <D.50654>;
  <D.50653>:
  D.50651 = cfg->cbb;
  D.50652 = D.50651->last_ins;
  D.50652->next = addr;
  D.50651 = cfg->cbb;
  D.50652 = D.50651->last_ins;
  addr->prev = D.50652;
  D.50651 = cfg->cbb;
  D.50651->last_ins = addr;
  goto <D.50655>;
  <D.50654>:
  D.50651 = cfg->cbb;
  D.50651 = cfg->cbb;
  D.50651->last_ins = addr;
  D.50652 = D.50651->last_ins;
  D.50651->code = D.50652;
  <D.50655>:
  D.50656 = addr;
  return D.50656;
  <D.50625>:
  thread_ins = mono_get_thread_intrinsic (cfg);
  D.50657 = tls_field->parent;
  offset_field = mono_class_get_field_from_name (D.50657, "tls_offset");
  D.50626 = cfg->mempool;
  load = mono_mempool_alloc (D.50626, 48);
  load->data.op[1].const_val = 0;
  D.50658 = load->data.op[1].const_val;
  load->data.op[0].const_val = D.50658;
  load->prev = 0B;
  D.50659 = load->prev;
  load->next = D.50659;
  D.50660 = offset_field->type;
  D.50661 = mono_type_to_load_membase (cfg, D.50660);
  D.50662 = (short unsigned int) D.50661;
  load->opcode = D.50662;
  load->flags = 0;
  load->type = 0;
  load->dreg = -1;
  load->sreg3 = -1;
  D.50663 = load->sreg3;
  load->sreg2 = D.50663;
  D.50664 = load->sreg2;
  load->sreg1 = D.50664;
  D.50631 = cfg->ip;
  load->cil_code = D.50631;
  load->dreg = 0;
  D.50665 = thread_local->dreg;
  load->sreg1 = D.50665;
  D.50666 = offset_field->offset;
  load->data.op[0].const_val = D.50666;
  load->type = 1;
  D.50660 = offset_field->type;
  type_to_eval_stack_type (cfg, D.50660, load);
  D.50667 = load->type;
  D.50668 = (<unnamed type>) D.50667;
  D.50669 = alloc_dreg (cfg, D.50668);
  D.50670 = (int) D.50669;
  load->dreg = D.50670;
  D.50651 = cfg->cbb;
  D.50652 = D.50651->last_ins;
  if (D.50652 != 0B) goto <D.50671>; else goto <D.50672>;
  <D.50671>:
  D.50651 = cfg->cbb;
  D.50652 = D.50651->last_ins;
  D.50652->next = load;
  D.50651 = cfg->cbb;
  D.50652 = D.50651->last_ins;
  load->prev = D.50652;
  D.50651 = cfg->cbb;
  D.50651->last_ins = load;
  goto <D.50673>;
  <D.50672>:
  D.50651 = cfg->cbb;
  D.50651 = cfg->cbb;
  D.50651->last_ins = load;
  D.50652 = D.50651->last_ins;
  D.50651->code = D.50652;
  <D.50673>:
  if (thread_ins != 0B) goto <D.50674>; else goto <D.50675>;
  <D.50674>:
  D.50651 = cfg->cbb;
  D.50652 = D.50651->last_ins;
  if (D.50652 != 0B) goto <D.50676>; else goto <D.50677>;
  <D.50676>:
  D.50651 = cfg->cbb;
  D.50652 = D.50651->last_ins;
  D.50652->next = thread_ins;
  D.50651 = cfg->cbb;
  D.50652 = D.50651->last_ins;
  thread_ins->prev = D.50652;
  D.50651 = cfg->cbb;
  D.50651->last_ins = thread_ins;
  goto <D.50678>;
  <D.50677>:
  D.50651 = cfg->cbb;
  D.50651 = cfg->cbb;
  D.50651->last_ins = thread_ins;
  D.50652 = D.50651->last_ins;
  D.50651->code = D.50652;
  <D.50678>:
  goto <D.50679>;
  <D.50675>:
  {
    struct MonoMethod * thread_method;

    D.50680 = mono_get_thread_class ();
    thread_method = mono_class_get_method_from_name (D.50680, "CurrentInternalThread_internal", 0);
    thread_ins = mono_emit_method_call (cfg, thread_method, 0B, 0B);
  }
  <D.50679>:
  D.50681 = load->dreg;
  addr = emit_managed_static_data_access (cfg, thread_ins, D.50681);
  D.50682 = tls_field->type;
  D.50683 = mono_class_from_mono_type (D.50682);
  addr->klass = D.50683;
  addr->type = 5;
  D.50684 = type_from_stack_type (addr);
  temp = mono_compile_create_var (cfg, D.50684, 329);
  *cached_tls_addr = temp;
  D.50626 = cfg->mempool;
  store = mono_mempool_alloc (D.50626, 48);
  store->data.op[1].const_val = 0;
  D.50685 = store->data.op[1].const_val;
  store->data.op[0].const_val = D.50685;
  store->prev = 0B;
  D.50686 = store->prev;
  store->next = D.50686;
  store->opcode = 428;
  store->flags = 0;
  store->type = 0;
  store->dreg = -1;
  store->sreg3 = -1;
  D.50687 = store->sreg3;
  store->sreg2 = D.50687;
  D.50688 = store->sreg2;
  store->sreg1 = D.50688;
  D.50631 = cfg->ip;
  store->cil_code = D.50631;
  D.50632 = cfg->varinfo;
  D.50689 = temp->data.op[0].const_val;
  D.50690 = (unsigned int) D.50689;
  D.50691 = D.50690 * 4;
  D.50692 = D.50632 + D.50691;
  D.50693 = *D.50692;
  D.50694 = D.50693->data.op[1].vtype;
  D.50695 = mono_type_to_regmove (cfg, D.50694);
  D.50696 = (short unsigned int) D.50695;
  store->opcode = D.50696;
  D.50632 = cfg->varinfo;
  D.50689 = temp->data.op[0].const_val;
  D.50690 = (unsigned int) D.50689;
  D.50691 = D.50690 * 4;
  D.50692 = D.50632 + D.50691;
  D.50693 = *D.50692;
  D.50697 = D.50693->klass;
  store->klass = D.50697;
  D.50698 = addr->dreg;
  store->sreg1 = D.50698;
  D.50632 = cfg->varinfo;
  D.50689 = temp->data.op[0].const_val;
  D.50690 = (unsigned int) D.50689;
  D.50691 = D.50690 * 4;
  D.50692 = D.50632 + D.50691;
  D.50693 = *D.50692;
  D.50699 = D.50693->dreg;
  store->dreg = D.50699;
  D.50700 = store->opcode;
  if (D.50700 == 431) goto <D.50701>; else goto <D.50702>;
  <D.50701>:
  D.50632 = cfg->varinfo;
  D.50689 = temp->data.op[0].const_val;
  D.50690 = (unsigned int) D.50689;
  D.50691 = D.50690 * 4;
  D.50692 = D.50632 + D.50691;
  D.50693 = *D.50692;
  D.50694 = D.50693->data.op[1].vtype;
  D.50703 = mono_class_from_mono_type (D.50694);
  store->klass = D.50703;
  <D.50702>:
  D.50651 = cfg->cbb;
  D.50652 = D.50651->last_ins;
  if (D.50652 != 0B) goto <D.50704>; else goto <D.50705>;
  <D.50704>:
  D.50651 = cfg->cbb;
  D.50652 = D.50651->last_ins;
  D.50652->next = store;
  D.50651 = cfg->cbb;
  D.50652 = D.50651->last_ins;
  store->prev = D.50652;
  D.50651 = cfg->cbb;
  D.50651->last_ins = store;
  goto <D.50706>;
  <D.50705>:
  D.50651 = cfg->cbb;
  D.50651 = cfg->cbb;
  D.50651->last_ins = store;
  D.50652 = D.50651->last_ins;
  D.50651->code = D.50652;
  <D.50706>:
  D.50626 = cfg->mempool;
  addr = mono_mempool_alloc (D.50626, 48);
  addr->data.op[1].const_val = 0;
  D.50627 = addr->data.op[1].const_val;
  addr->data.op[0].const_val = D.50627;
  addr->prev = 0B;
  D.50628 = addr->prev;
  addr->next = D.50628;
  addr->opcode = 428;
  addr->flags = 0;
  addr->type = 0;
  addr->dreg = -1;
  addr->sreg3 = -1;
  D.50629 = addr->sreg3;
  addr->sreg2 = D.50629;
  D.50630 = addr->sreg2;
  addr->sreg1 = D.50630;
  D.50631 = cfg->ip;
  addr->cil_code = D.50631;
  D.50632 = cfg->varinfo;
  D.50689 = temp->data.op[0].const_val;
  D.50690 = (unsigned int) D.50689;
  D.50691 = D.50690 * 4;
  D.50692 = D.50632 + D.50691;
  D.50693 = *D.50692;
  D.50694 = D.50693->data.op[1].vtype;
  D.50707 = mono_type_to_regmove (cfg, D.50694);
  D.50708 = (short unsigned int) D.50707;
  addr->opcode = D.50708;
  D.50632 = cfg->varinfo;
  D.50689 = temp->data.op[0].const_val;
  D.50690 = (unsigned int) D.50689;
  D.50691 = D.50690 * 4;
  D.50692 = D.50632 + D.50691;
  D.50693 = *D.50692;
  D.50694 = D.50693->data.op[1].vtype;
  type_to_eval_stack_type (cfg, D.50694, addr);
  D.50632 = cfg->varinfo;
  D.50689 = temp->data.op[0].const_val;
  D.50690 = (unsigned int) D.50689;
  D.50691 = D.50690 * 4;
  D.50692 = D.50632 + D.50691;
  D.50693 = *D.50692;
  D.50697 = D.50693->klass;
  addr->klass = D.50697;
  D.50632 = cfg->varinfo;
  D.50689 = temp->data.op[0].const_val;
  D.50690 = (unsigned int) D.50689;
  D.50691 = D.50690 * 4;
  D.50692 = D.50632 + D.50691;
  D.50693 = *D.50692;
  D.50699 = D.50693->dreg;
  addr->sreg1 = D.50699;
  D.50643 = addr->type;
  D.50644 = (<unnamed type>) D.50643;
  D.50709 = alloc_dreg (cfg, D.50644);
  D.50710 = (int) D.50709;
  addr->dreg = D.50710;
  D.50647 = addr->opcode;
  if (D.50647 == 431) goto <D.50711>; else goto <D.50712>;
  <D.50711>:
  D.50632 = cfg->varinfo;
  D.50689 = temp->data.op[0].const_val;
  D.50690 = (unsigned int) D.50689;
  D.50691 = D.50690 * 4;
  D.50692 = D.50632 + D.50691;
  D.50693 = *D.50692;
  D.50694 = D.50693->data.op[1].vtype;
  D.50713 = mono_class_from_mono_type (D.50694);
  addr->klass = D.50713;
  <D.50712>:
  D.50651 = cfg->cbb;
  D.50652 = D.50651->last_ins;
  if (D.50652 != 0B) goto <D.50714>; else goto <D.50715>;
  <D.50714>:
  D.50651 = cfg->cbb;
  D.50652 = D.50651->last_ins;
  D.50652->next = addr;
  D.50651 = cfg->cbb;
  D.50652 = D.50651->last_ins;
  addr->prev = D.50652;
  D.50651 = cfg->cbb;
  D.50651->last_ins = addr;
  goto <D.50716>;
  <D.50715>:
  D.50651 = cfg->cbb;
  D.50651 = cfg->cbb;
  D.50651->last_ins = addr;
  D.50652 = D.50651->last_ins;
  D.50651->code = D.50652;
  <D.50716>:
  D.50656 = addr;
  return D.50656;
}


emit_managed_static_data_access (struct MonoCompile * cfg, struct MonoInst * thread_ins, int offset_reg)
{
  unsigned int D.50718;
  struct MonoMemPool * D.50719;
  int D.50720;
  struct MonoInst * D.50721;
  int D.50722;
  int D.50723;
  const unsigned char * D.50724;
  int D.50725;
  struct MonoBasicBlock * D.50726;
  struct MonoInst * D.50727;
  unsigned int D.50731;
  int D.50732;
  struct MonoInst * D.50733;
  int D.50734;
  int D.50735;
  int D.50739;
  struct MonoInst * D.50740;
  int D.50741;
  int D.50742;
  int D.50746;
  struct MonoInst * D.50747;
  int D.50748;
  int D.50749;
  int D.50753;
  struct MonoInst * D.50754;
  int D.50755;
  int D.50756;
  unsigned int D.50760;
  int D.50761;
  struct MonoInst * D.50762;
  int D.50763;
  int D.50764;
  unsigned int D.50768;
  int D.50769;
  struct MonoInst * D.50770;
  int D.50771;
  int D.50772;
  unsigned int D.50776;
  int D.50777;
  struct MonoInst * D.50778;
  int D.50779;
  int D.50780;
  struct MonoInst * D.50784;
  struct MonoInst * addr;
  int static_data_reg;
  int array_reg;
  int dreg;
  int offset2_reg;
  int idx_reg;

  D.50718 = alloc_ireg (cfg);
  static_data_reg = (int) D.50718;
  {
    struct MonoInst * inst;

    D.50719 = cfg->mempool;
    inst = mono_mempool_alloc (D.50719, 48);
    inst->data.op[1].const_val = 0;
    D.50720 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.50720;
    inst->prev = 0B;
    D.50721 = inst->prev;
    inst->next = D.50721;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.50722 = inst->sreg3;
    inst->sreg2 = D.50722;
    D.50723 = inst->sreg2;
    inst->sreg1 = D.50723;
    D.50724 = cfg->ip;
    inst->cil_code = D.50724;
    inst->dreg = static_data_reg;
    D.50725 = thread_ins->dreg;
    inst->sreg1 = D.50725;
    inst->data.op[0].const_val = 56;
    D.50726 = cfg->cbb;
    D.50727 = D.50726->last_ins;
    if (D.50727 != 0B) goto <D.50728>; else goto <D.50729>;
    <D.50728>:
    D.50726 = cfg->cbb;
    D.50727 = D.50726->last_ins;
    D.50727->next = inst;
    D.50726 = cfg->cbb;
    D.50727 = D.50726->last_ins;
    inst->prev = D.50727;
    D.50726 = cfg->cbb;
    D.50726->last_ins = inst;
    goto <D.50730>;
    <D.50729>:
    D.50726 = cfg->cbb;
    D.50726 = cfg->cbb;
    D.50726->last_ins = inst;
    D.50727 = D.50726->last_ins;
    D.50726->code = D.50727;
    <D.50730>:
  }
  D.50731 = alloc_ireg (cfg);
  idx_reg = (int) D.50731;
  {
    struct MonoInst * inst;

    D.50719 = cfg->mempool;
    inst = mono_mempool_alloc (D.50719, 48);
    inst->data.op[1].const_val = 0;
    D.50732 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.50732;
    inst->prev = 0B;
    D.50733 = inst->prev;
    inst->next = D.50733;
    inst->opcode = 640;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.50734 = inst->sreg3;
    inst->sreg2 = D.50734;
    D.50735 = inst->sreg2;
    inst->sreg1 = D.50735;
    D.50724 = cfg->ip;
    inst->cil_code = D.50724;
    inst->dreg = idx_reg;
    inst->sreg1 = offset_reg;
    inst->data.op[1].const_val = 24;
    D.50726 = cfg->cbb;
    D.50727 = D.50726->last_ins;
    if (D.50727 != 0B) goto <D.50736>; else goto <D.50737>;
    <D.50736>:
    D.50726 = cfg->cbb;
    D.50727 = D.50726->last_ins;
    D.50727->next = inst;
    D.50726 = cfg->cbb;
    D.50727 = D.50726->last_ins;
    inst->prev = D.50727;
    D.50726 = cfg->cbb;
    D.50726->last_ins = inst;
    goto <D.50738>;
    <D.50737>:
    D.50726 = cfg->cbb;
    D.50726 = cfg->cbb;
    D.50726->last_ins = inst;
    D.50727 = D.50726->last_ins;
    D.50726->code = D.50727;
    <D.50738>:
  }
  {
    struct MonoInst * inst;

    D.50719 = cfg->mempool;
    inst = mono_mempool_alloc (D.50719, 48);
    inst->data.op[1].const_val = 0;
    D.50739 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.50739;
    inst->prev = 0B;
    D.50740 = inst->prev;
    inst->next = D.50740;
    inst->opcode = 630;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.50741 = inst->sreg3;
    inst->sreg2 = D.50741;
    D.50742 = inst->sreg2;
    inst->sreg1 = D.50742;
    D.50724 = cfg->ip;
    inst->cil_code = D.50724;
    inst->dreg = idx_reg;
    inst->sreg1 = idx_reg;
    inst->data.op[1].const_val = 1;
    D.50726 = cfg->cbb;
    D.50727 = D.50726->last_ins;
    if (D.50727 != 0B) goto <D.50743>; else goto <D.50744>;
    <D.50743>:
    D.50726 = cfg->cbb;
    D.50727 = D.50726->last_ins;
    D.50727->next = inst;
    D.50726 = cfg->cbb;
    D.50727 = D.50726->last_ins;
    inst->prev = D.50727;
    D.50726 = cfg->cbb;
    D.50726->last_ins = inst;
    goto <D.50745>;
    <D.50744>:
    D.50726 = cfg->cbb;
    D.50726 = cfg->cbb;
    D.50726->last_ins = inst;
    D.50727 = D.50726->last_ins;
    D.50726->code = D.50727;
    <D.50745>:
  }
  {
    struct MonoInst * inst;

    D.50719 = cfg->mempool;
    inst = mono_mempool_alloc (D.50719, 48);
    inst->data.op[1].const_val = 0;
    D.50746 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.50746;
    inst->prev = 0B;
    D.50747 = inst->prev;
    inst->next = D.50747;
    inst->opcode = 639;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.50748 = inst->sreg3;
    inst->sreg2 = D.50748;
    D.50749 = inst->sreg2;
    inst->sreg1 = D.50749;
    D.50724 = cfg->ip;
    inst->cil_code = D.50724;
    inst->dreg = idx_reg;
    inst->sreg1 = idx_reg;
    inst->data.op[1].const_val = 2;
    D.50726 = cfg->cbb;
    D.50727 = D.50726->last_ins;
    if (D.50727 != 0B) goto <D.50750>; else goto <D.50751>;
    <D.50750>:
    D.50726 = cfg->cbb;
    D.50727 = D.50726->last_ins;
    D.50727->next = inst;
    D.50726 = cfg->cbb;
    D.50727 = D.50726->last_ins;
    inst->prev = D.50727;
    D.50726 = cfg->cbb;
    D.50726->last_ins = inst;
    goto <D.50752>;
    <D.50751>:
    D.50726 = cfg->cbb;
    D.50726 = cfg->cbb;
    D.50726->last_ins = inst;
    D.50727 = D.50726->last_ins;
    D.50726->code = D.50727;
    <D.50752>:
  }
  {
    struct MonoInst * inst;

    D.50719 = cfg->mempool;
    inst = mono_mempool_alloc (D.50719, 48);
    inst->data.op[1].const_val = 0;
    D.50753 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.50753;
    inst->prev = 0B;
    D.50754 = inst->prev;
    inst->next = D.50754;
    inst->opcode = 569;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.50755 = inst->sreg3;
    inst->sreg2 = D.50755;
    D.50756 = inst->sreg2;
    inst->sreg1 = D.50756;
    D.50724 = cfg->ip;
    inst->cil_code = D.50724;
    inst->dreg = static_data_reg;
    inst->sreg1 = static_data_reg;
    inst->sreg2 = idx_reg;
    D.50726 = cfg->cbb;
    D.50727 = D.50726->last_ins;
    if (D.50727 != 0B) goto <D.50757>; else goto <D.50758>;
    <D.50757>:
    D.50726 = cfg->cbb;
    D.50727 = D.50726->last_ins;
    D.50727->next = inst;
    D.50726 = cfg->cbb;
    D.50727 = D.50726->last_ins;
    inst->prev = D.50727;
    D.50726 = cfg->cbb;
    D.50726->last_ins = inst;
    goto <D.50759>;
    <D.50758>:
    D.50726 = cfg->cbb;
    D.50726 = cfg->cbb;
    D.50726->last_ins = inst;
    D.50727 = D.50726->last_ins;
    D.50726->code = D.50727;
    <D.50759>:
  }
  D.50760 = alloc_ireg (cfg);
  array_reg = (int) D.50760;
  {
    struct MonoInst * inst;

    D.50719 = cfg->mempool;
    inst = mono_mempool_alloc (D.50719, 48);
    inst->data.op[1].const_val = 0;
    D.50761 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.50761;
    inst->prev = 0B;
    D.50762 = inst->prev;
    inst->next = D.50762;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.50763 = inst->sreg3;
    inst->sreg2 = D.50763;
    D.50764 = inst->sreg2;
    inst->sreg1 = D.50764;
    D.50724 = cfg->ip;
    inst->cil_code = D.50724;
    inst->dreg = array_reg;
    inst->sreg1 = static_data_reg;
    inst->data.op[0].const_val = 0;
    D.50726 = cfg->cbb;
    D.50727 = D.50726->last_ins;
    if (D.50727 != 0B) goto <D.50765>; else goto <D.50766>;
    <D.50765>:
    D.50726 = cfg->cbb;
    D.50727 = D.50726->last_ins;
    D.50727->next = inst;
    D.50726 = cfg->cbb;
    D.50727 = D.50726->last_ins;
    inst->prev = D.50727;
    D.50726 = cfg->cbb;
    D.50726->last_ins = inst;
    goto <D.50767>;
    <D.50766>:
    D.50726 = cfg->cbb;
    D.50726 = cfg->cbb;
    D.50726->last_ins = inst;
    D.50727 = D.50726->last_ins;
    D.50726->code = D.50727;
    <D.50767>:
  }
  D.50768 = alloc_ireg (cfg);
  offset2_reg = (int) D.50768;
  {
    struct MonoInst * inst;

    D.50719 = cfg->mempool;
    inst = mono_mempool_alloc (D.50719, 48);
    inst->data.op[1].const_val = 0;
    D.50769 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.50769;
    inst->prev = 0B;
    D.50770 = inst->prev;
    inst->next = D.50770;
    inst->opcode = 636;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.50771 = inst->sreg3;
    inst->sreg2 = D.50771;
    D.50772 = inst->sreg2;
    inst->sreg1 = D.50772;
    D.50724 = cfg->ip;
    inst->cil_code = D.50724;
    inst->dreg = offset2_reg;
    inst->sreg1 = offset_reg;
    inst->data.op[1].const_val = 16777215;
    D.50726 = cfg->cbb;
    D.50727 = D.50726->last_ins;
    if (D.50727 != 0B) goto <D.50773>; else goto <D.50774>;
    <D.50773>:
    D.50726 = cfg->cbb;
    D.50727 = D.50726->last_ins;
    D.50727->next = inst;
    D.50726 = cfg->cbb;
    D.50727 = D.50726->last_ins;
    inst->prev = D.50727;
    D.50726 = cfg->cbb;
    D.50726->last_ins = inst;
    goto <D.50775>;
    <D.50774>:
    D.50726 = cfg->cbb;
    D.50726 = cfg->cbb;
    D.50726->last_ins = inst;
    D.50727 = D.50726->last_ins;
    D.50726->code = D.50727;
    <D.50775>:
  }
  D.50776 = alloc_ireg (cfg);
  dreg = (int) D.50776;
  D.50719 = cfg->mempool;
  addr = mono_mempool_alloc (D.50719, 48);
  addr->data.op[1].const_val = 0;
  D.50777 = addr->data.op[1].const_val;
  addr->data.op[0].const_val = D.50777;
  addr->prev = 0B;
  D.50778 = addr->prev;
  addr->next = D.50778;
  addr->opcode = 569;
  addr->flags = 0;
  addr->type = 0;
  addr->dreg = -1;
  addr->sreg3 = -1;
  D.50779 = addr->sreg3;
  addr->sreg2 = D.50779;
  D.50780 = addr->sreg2;
  addr->sreg1 = D.50780;
  D.50724 = cfg->ip;
  addr->cil_code = D.50724;
  addr->dreg = dreg;
  addr->sreg1 = array_reg;
  addr->sreg2 = offset2_reg;
  D.50726 = cfg->cbb;
  D.50727 = D.50726->last_ins;
  if (D.50727 != 0B) goto <D.50781>; else goto <D.50782>;
  <D.50781>:
  D.50726 = cfg->cbb;
  D.50727 = D.50726->last_ins;
  D.50727->next = addr;
  D.50726 = cfg->cbb;
  D.50727 = D.50726->last_ins;
  addr->prev = D.50727;
  D.50726 = cfg->cbb;
  D.50726->last_ins = addr;
  goto <D.50783>;
  <D.50782>:
  D.50726 = cfg->cbb;
  D.50726 = cfg->cbb;
  D.50726->last_ins = addr;
  D.50727 = D.50726->last_ins;
  D.50726->code = D.50727;
  <D.50783>:
  D.50784 = addr;
  return D.50784;
}


emit_generic_class_init (struct MonoCompile * cfg, struct MonoClass * klass)
{
  struct MonoInst * vtable_arg.535;
  struct MonoDomain * D.50790;
  struct MonoMemPool * D.50793;
  void * vtable_arg.536;
  struct MonoInst * vtable_arg.537;
  int D.50796;
  struct MonoInst * D.50797;
  guint16 iftmp.538;
  unsigned char D.50799;
  unsigned char D.50800;
  int D.50804;
  int D.50805;
  const unsigned char * D.50806;
  int D.50809;
  struct MonoInst * D.50810;
  int D.50811;
  int D.50812;
  struct MonoInst * iftmp.539;
  int D.50817;
  void * iftmp.540;
  unsigned int D.50823;
  int D.50824;
  struct MonoBasicBlock * D.50825;
  struct MonoInst * D.50826;
  struct MonoMethodSignature * helper_sig_generic_class_init_trampoline_llvm.541;
  struct MonoMethodSignature * helper_sig_generic_class_init_trampoline.542;
  int D.50835;
  struct MonoInst * vtable_arg;
  struct MonoCallInst * call;
  int context_used;

  try
    {
      context_used = mini_class_check_context_used (cfg, klass);
      if (context_used != 0) goto <D.50786>; else goto <D.50787>;
      <D.50786>:
      vtable_arg.535 = emit_get_rgctx_klass (cfg, context_used, klass, 2);
      vtable_arg = vtable_arg.535;
      goto <D.50789>;
      <D.50787>:
      {
        struct MonoVTable * vtable;

        D.50790 = cfg->domain;
        vtable = mono_class_vtable (D.50790, klass);
        if (vtable == 0B) goto <D.50791>; else goto <D.50792>;
        <D.50791>:
        return;
        <D.50792>:
        D.50793 = cfg->mempool;
        vtable_arg.536 = mono_mempool_alloc (D.50793, 48);
        vtable_arg = vtable_arg.536;
        vtable_arg.537 = vtable_arg;
        vtable_arg.537 = vtable_arg;
        vtable_arg.537->data.op[1].const_val = 0;
        D.50796 = vtable_arg.537->data.op[1].const_val;
        vtable_arg.537->data.op[0].const_val = D.50796;
        vtable_arg.537 = vtable_arg;
        vtable_arg.537 = vtable_arg;
        vtable_arg.537->prev = 0B;
        D.50797 = vtable_arg.537->prev;
        vtable_arg.537->next = D.50797;
        vtable_arg.537 = vtable_arg;
        D.50799 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.50800 = D.50799 & 64;
        if (D.50800 != 0) goto <D.50801>; else goto <D.50802>;
        <D.50801>:
        iftmp.538 = 738;
        goto <D.50803>;
        <D.50802>:
        iftmp.538 = 362;
        <D.50803>:
        vtable_arg.537->opcode = iftmp.538;
        vtable_arg.537 = vtable_arg;
        vtable_arg.537->flags = 0;
        vtable_arg.537 = vtable_arg;
        vtable_arg.537->type = 0;
        vtable_arg.537 = vtable_arg;
        vtable_arg.537->dreg = -1;
        vtable_arg.537 = vtable_arg;
        vtable_arg.537 = vtable_arg;
        vtable_arg.537 = vtable_arg;
        vtable_arg.537->sreg3 = -1;
        D.50804 = vtable_arg.537->sreg3;
        vtable_arg.537->sreg2 = D.50804;
        D.50805 = vtable_arg.537->sreg2;
        vtable_arg.537->sreg1 = D.50805;
        vtable_arg.537 = vtable_arg;
        D.50806 = cfg->ip;
        vtable_arg.537->cil_code = D.50806;
        D.50799 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.50800 = D.50799 & 64;
        if (D.50800 != 0) goto <D.50807>; else goto <D.50808>;
        <D.50807>:
        {
          struct MonoInst * group;
          struct MonoInst * got_loc;

          got_loc = mono_get_got_var (cfg);
          D.50793 = cfg->mempool;
          group = mono_mempool_alloc (D.50793, 48);
          group->data.op[1].const_val = 0;
          D.50809 = group->data.op[1].const_val;
          group->data.op[0].const_val = D.50809;
          group->prev = 0B;
          D.50810 = group->prev;
          group->next = D.50810;
          group->opcode = 737;
          group->flags = 0;
          group->type = 0;
          group->dreg = -1;
          group->sreg3 = -1;
          D.50811 = group->sreg3;
          group->sreg2 = D.50811;
          D.50812 = group->sreg2;
          group->sreg1 = D.50812;
          D.50806 = cfg->ip;
          group->cil_code = D.50806;
          D.50799 = BIT_FIELD_REF <*cfg, 8, 3392>;
          D.50800 = D.50799 & 64;
          if (D.50800 != 0) goto <D.50814>; else goto <D.50815>;
          <D.50814>:
          iftmp.539 = vtable->klass;
          goto <D.50816>;
          <D.50815>:
          iftmp.539 = vtable;
          <D.50816>:
          group->data.op[0].src = iftmp.539;
          group->data.op[1].src = 14B;
          vtable_arg.537 = vtable_arg;
          D.50817 = got_loc->dreg;
          vtable_arg.537->sreg1 = D.50817;
          vtable_arg.537 = vtable_arg;
          vtable_arg.537->data.op[1].p = group;
        }
        goto <D.50818>;
        <D.50808>:
        vtable_arg.537 = vtable_arg;
        D.50799 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.50800 = D.50799 & 64;
        if (D.50800 != 0) goto <D.50820>; else goto <D.50821>;
        <D.50820>:
        iftmp.540 = vtable->klass;
        goto <D.50822>;
        <D.50821>:
        iftmp.540 = vtable;
        <D.50822>:
        vtable_arg.537->data.op[0].p = iftmp.540;
        vtable_arg.537 = vtable_arg;
        vtable_arg.537->data.op[1].src = 14B;
        <D.50818>:
        vtable_arg.537 = vtable_arg;
        vtable_arg.537->type = 3;
        vtable_arg.537 = vtable_arg;
        D.50823 = alloc_dreg (cfg, 3);
        D.50824 = (int) D.50823;
        vtable_arg.537->dreg = D.50824;
        D.50825 = cfg->cbb;
        D.50826 = D.50825->last_ins;
        if (D.50826 != 0B) goto <D.50827>; else goto <D.50828>;
        <D.50827>:
        D.50825 = cfg->cbb;
        D.50826 = D.50825->last_ins;
        vtable_arg.537 = vtable_arg;
        D.50826->next = vtable_arg.537;
        vtable_arg.537 = vtable_arg;
        D.50825 = cfg->cbb;
        D.50826 = D.50825->last_ins;
        vtable_arg.537->prev = D.50826;
        D.50825 = cfg->cbb;
        vtable_arg.537 = vtable_arg;
        D.50825->last_ins = vtable_arg.537;
        goto <D.50829>;
        <D.50828>:
        D.50825 = cfg->cbb;
        D.50825 = cfg->cbb;
        vtable_arg.537 = vtable_arg;
        D.50825->last_ins = vtable_arg.537;
        D.50826 = D.50825->last_ins;
        D.50825->code = D.50826;
        <D.50829>:
      }
      <D.50789>:
      if (0 != 0) goto <D.50830>; else goto <D.50831>;
      <D.50830>:
      helper_sig_generic_class_init_trampoline_llvm.541 = helper_sig_generic_class_init_trampoline_llvm;
      call = mono_emit_abs_call (cfg, 36, 0B, helper_sig_generic_class_init_trampoline_llvm.541, &vtable_arg);
      goto <D.50833>;
      <D.50831>:
      helper_sig_generic_class_init_trampoline.542 = helper_sig_generic_class_init_trampoline;
      call = mono_emit_abs_call (cfg, 36, 0B, helper_sig_generic_class_init_trampoline.542, &vtable_arg);
      <D.50833>:
      vtable_arg.537 = vtable_arg;
      D.50835 = vtable_arg.537->dreg;
      mono_call_inst_add_outarg_reg (cfg, call, D.50835, 2, 0);
      cfg->uses_vtable_reg = 1;
    }
  finally
    {
      vtable_arg = {CLOBBER};
    }
}


mini_field_access_needs_cctor_run (struct MonoCompile * cfg, struct MonoMethod * method, struct MonoClass * klass, struct MonoVTable * vtable)
{
  unsigned char D.50839;
  unsigned char D.50840;
  _Bool D.50843;
  long int D.50844;
  long int D.50845;
  unsigned char D.50848;
  unsigned char D.50849;
  gboolean D.50852;
  unsigned int D.50853;
  unsigned int D.50854;
  struct MonoMethod * D.50857;
  int D.50860;
  short unsigned int D.50863;
  int D.50864;
  int D.50865;
  struct MonoClass * D.50868;

  D.50839 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.50840 = D.50839 & 64;
  if (D.50840 == 0) goto <D.50841>; else goto <D.50842>;
  <D.50841>:
  D.50843 = vtable == 0B;
  D.50844 = (long int) D.50843;
  D.50845 = __builtin_expect (D.50844, 0);
  if (D.50845 != 0) goto <D.50846>; else goto <D.50847>;
  <D.50846>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4640, "vtable");
  <D.50847>:
  D.50848 = BIT_FIELD_REF <*vtable, 8, 184>;
  D.50849 = D.50848 & 2;
  if (D.50849 != 0) goto <D.50850>; else goto <D.50851>;
  <D.50850>:
  D.50852 = 0;
  return D.50852;
  <D.50851>:
  <D.50842>:
  D.50853 = klass->flags;
  D.50854 = D.50853 & 1048576;
  if (D.50854 != 0) goto <D.50855>; else goto <D.50856>;
  <D.50855>:
  D.50857 = cfg->method;
  if (D.50857 == method) goto <D.50858>; else goto <D.50859>;
  <D.50858>:
  D.50852 = 0;
  return D.50852;
  <D.50859>:
  <D.50856>:
  D.50860 = mono_class_needs_cctor_run (klass, method);
  if (D.50860 == 0) goto <D.50861>; else goto <D.50862>;
  <D.50861>:
  D.50852 = 0;
  return D.50852;
  <D.50862>:
  D.50863 = method->flags;
  D.50864 = (int) D.50863;
  D.50865 = D.50864 & 16;
  if (D.50865 == 0) goto <D.50866>; else goto <D.50867>;
  <D.50866>:
  D.50868 = method->klass;
  if (D.50868 == klass) goto <D.50869>; else goto <D.50870>;
  <D.50869>:
  D.50852 = 0;
  return D.50852;
  <D.50870>:
  <D.50867>:
  D.50852 = 1;
  return D.50852;
}


set_exception_object (struct MonoCompile * cfg, struct MonoException * exception)
{
  void * D.50874;
  void * * D.50875;

  mono_cfg_set_exception (cfg, 13);
  if (0 != 0) goto <D.50872>; else goto <D.50873>;
  <D.50872>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6342, "sizeof (cfg->exception_ptr) == sizeof (MonoObject*)");
  <D.50873>:
  D.50874 = mono_gc_make_root_descr_all_refs (1);
  D.50875 = &cfg->exception_ptr;
  mono_gc_register_root (D.50875, 4, D.50874);
  cfg->exception_ptr = exception;
}


initialize_array_data (struct MonoMethod * method, gboolean aot, unsigned char * ip, struct MonoClass * klass, guint32 len, int * out_size, guint32 * out_field_token)
{
  unsigned char D.50876;
  unsigned char * D.50879;
  unsigned char D.50880;
  unsigned char * D.50883;
  unsigned char D.50884;
  unsigned char * D.50887;
  unsigned char D.50888;
  struct MonoClass * D.50891;
  struct MonoImage * D.50892;
  const char * D.50895;
  int D.27113;
  int iftmp.543;
  int D.27112;
  const char[16] * D.50903;
  unsigned char D.50904;
  int D.50905;
  unsigned char D.50906;
  int D.50907;
  _Bool D.50908;
  _Bool D.50909;
  _Bool D.50910;
  const unsigned char * D.50913;
  unsigned char D.50914;
  int D.50915;
  const unsigned char * D.50916;
  unsigned char D.50917;
  int D.50918;
  _Bool D.50919;
  _Bool D.50920;
  const unsigned char * D.50923;
  unsigned char D.50924;
  int D.50925;
  const unsigned char * D.50926;
  unsigned char D.50927;
  int D.50928;
  _Bool D.50929;
  _Bool D.50930;
  const unsigned char * D.50933;
  unsigned char D.50934;
  int D.50935;
  const unsigned char * D.50936;
  unsigned char D.50937;
  int D.50938;
  const char * D.50940;
  int D.27122;
  int iftmp.544;
  int D.27121;
  struct MonoClass * D.50945;
  const char[15] * D.50946;
  unsigned char D.50947;
  int D.50948;
  unsigned char D.50949;
  int D.50950;
  _Bool D.50951;
  _Bool D.50952;
  _Bool D.50953;
  const unsigned char * D.50956;
  unsigned char D.50957;
  int D.50958;
  const unsigned char * D.50959;
  unsigned char D.50960;
  int D.50961;
  _Bool D.50962;
  _Bool D.50963;
  const unsigned char * D.50966;
  unsigned char D.50967;
  int D.50968;
  const unsigned char * D.50969;
  unsigned char D.50970;
  int D.50971;
  _Bool D.50972;
  _Bool D.50973;
  const unsigned char * D.50976;
  unsigned char D.50977;
  int D.50978;
  const unsigned char * D.50979;
  unsigned char D.50980;
  int D.50981;
  const char * D.50983;
  struct MonoImage * D.50985;
  struct MonoImage * D.50986;
  struct MonoType * D.50987;
  struct MonoType * D.50988;
  unsigned char D.50989;
  int D.50990;
  unsigned int size.545;
  unsigned int D.50992;
  struct MonoType * D.50993;
  int D.50994;
  unsigned char D.50997;
  unsigned char D.50998;
  const guint32 * D.51001;
  unsigned int D.51002;
  unsigned int D.51003;
  unsigned int rva.546;
  _Bool D.51005;
  _Bool D.51006;
  _Bool D.51007;
  long int D.51011;
  long int D.51012;

  D.50876 = *ip;
  if (D.50876 == 37) goto <D.50877>; else goto <D.50878>;
  <D.50877>:
  D.50879 = ip + 1;
  D.50880 = *D.50879;
  if (D.50880 == 208) goto <D.50881>; else goto <D.50882>;
  <D.50881>:
  D.50883 = ip + 5;
  D.50884 = *D.50883;
  if (D.50884 == 4) goto <D.50885>; else goto <D.50886>;
  <D.50885>:
  D.50887 = ip + 6;
  D.50888 = *D.50887;
  if (D.50888 == 40) goto <D.50889>; else goto <D.50890>;
  <D.50889>:
  {
    guint32 token;
    guint32 field_token;
    guint32 field_index;
    guint32 rva;
    const char * data_ptr;
    int size;
    struct MonoMethod * cmethod;
    struct MonoClass * dummy_class;
    struct MonoClassField * field;
    int dummy_align;

    try
      {
        token = MEM[(const guint32 *)ip + 7B];
        field_token = MEM[(const guint32 *)ip + 2B];
        field_index = field_token & 16777215;
        size = 0;
        D.50891 = method->klass;
        D.50892 = D.50891->image;
        field = mono_field_from_token (D.50892, field_token, &dummy_class, 0B);
        if (field == 0B) goto <D.50893>; else goto <D.50894>;
        <D.50893>:
        D.50895 = 0B;
        return D.50895;
        <D.50894>:
        *out_field_token = field_token;
        cmethod = mini_get_method (0B, method, token, 0B, 0B);
        if (cmethod == 0B) goto <D.50896>; else goto <D.50897>;
        <D.50896>:
        D.50895 = 0B;
        return D.50895;
        <D.50897>:
        {
          size_t __s1_len;
          size_t __s2_len;

          __s2_len = 15;
          if (__s2_len <= 3) goto <D.50901>; else goto <D.50902>;
          <D.50901>:
          {
            const unsigned char * __s2;
            int __result;

            __s2 = cmethod->name;
            D.50903 = "InitializeArray";
            D.50904 = MEM[(const unsigned char *)D.50903];
            D.50905 = (int) D.50904;
            D.50906 = *__s2;
            D.50907 = (int) D.50906;
            __result = D.50905 - D.50907;
            {
              D.50908 = __s2_len != 0;
              D.50909 = __result == 0;
              D.50910 = D.50908 & D.50909;
              if (D.50910 != 0) goto <D.50911>; else goto <D.50912>;
              <D.50911>:
              D.50913 = &MEM[(void *)"InitializeArray" + 1B];
              D.50914 = *D.50913;
              D.50915 = (int) D.50914;
              D.50916 = __s2 + 1;
              D.50917 = *D.50916;
              D.50918 = (int) D.50917;
              __result = D.50915 - D.50918;
              D.50919 = __s2_len > 1;
              D.50909 = __result == 0;
              D.50920 = D.50919 & D.50909;
              if (D.50920 != 0) goto <D.50921>; else goto <D.50922>;
              <D.50921>:
              D.50923 = &MEM[(void *)"InitializeArray" + 2B];
              D.50924 = *D.50923;
              D.50925 = (int) D.50924;
              D.50926 = __s2 + 2;
              D.50927 = *D.50926;
              D.50928 = (int) D.50927;
              __result = D.50925 - D.50928;
              D.50929 = __s2_len > 2;
              D.50909 = __result == 0;
              D.50930 = D.50929 & D.50909;
              if (D.50930 != 0) goto <D.50931>; else goto <D.50932>;
              <D.50931>:
              D.50933 = &MEM[(void *)"InitializeArray" + 3B];
              D.50934 = *D.50933;
              D.50935 = (int) D.50934;
              D.50936 = __s2 + 3;
              D.50937 = *D.50936;
              D.50938 = (int) D.50937;
              __result = D.50935 - D.50938;
              <D.50932>:
              <D.50922>:
              <D.50912>:
            }
            D.27112 = __result;
          }
          iftmp.543 = -D.27112;
          goto <D.50939>;
          <D.50902>:
          D.50940 = cmethod->name;
          iftmp.543 = __builtin_strcmp (D.50940, "InitializeArray");
          <D.50939>:
          D.27113 = iftmp.543;
        }
        if (D.27113 != 0) goto <D.50898>; else goto <D.50941>;
        <D.50941>:
        {
          size_t __s1_len;
          size_t __s2_len;

          __s2_len = 14;
          if (__s2_len <= 3) goto <D.50943>; else goto <D.50944>;
          <D.50943>:
          {
            const unsigned char * __s2;
            int __result;

            D.50945 = cmethod->klass;
            __s2 = D.50945->name;
            D.50946 = "RuntimeHelpers";
            D.50947 = MEM[(const unsigned char *)D.50946];
            D.50948 = (int) D.50947;
            D.50949 = *__s2;
            D.50950 = (int) D.50949;
            __result = D.50948 - D.50950;
            {
              D.50951 = __s2_len != 0;
              D.50952 = __result == 0;
              D.50953 = D.50951 & D.50952;
              if (D.50953 != 0) goto <D.50954>; else goto <D.50955>;
              <D.50954>:
              D.50956 = &MEM[(void *)"RuntimeHelpers" + 1B];
              D.50957 = *D.50956;
              D.50958 = (int) D.50957;
              D.50959 = __s2 + 1;
              D.50960 = *D.50959;
              D.50961 = (int) D.50960;
              __result = D.50958 - D.50961;
              D.50962 = __s2_len > 1;
              D.50952 = __result == 0;
              D.50963 = D.50962 & D.50952;
              if (D.50963 != 0) goto <D.50964>; else goto <D.50965>;
              <D.50964>:
              D.50966 = &MEM[(void *)"RuntimeHelpers" + 2B];
              D.50967 = *D.50966;
              D.50968 = (int) D.50967;
              D.50969 = __s2 + 2;
              D.50970 = *D.50969;
              D.50971 = (int) D.50970;
              __result = D.50968 - D.50971;
              D.50972 = __s2_len > 2;
              D.50952 = __result == 0;
              D.50973 = D.50972 & D.50952;
              if (D.50973 != 0) goto <D.50974>; else goto <D.50975>;
              <D.50974>:
              D.50976 = &MEM[(void *)"RuntimeHelpers" + 3B];
              D.50977 = *D.50976;
              D.50978 = (int) D.50977;
              D.50979 = __s2 + 3;
              D.50980 = *D.50979;
              D.50981 = (int) D.50980;
              __result = D.50978 - D.50981;
              <D.50975>:
              <D.50965>:
              <D.50955>:
            }
            D.27121 = __result;
          }
          iftmp.544 = -D.27121;
          goto <D.50982>;
          <D.50944>:
          D.50945 = cmethod->klass;
          D.50983 = D.50945->name;
          iftmp.544 = __builtin_strcmp (D.50983, "RuntimeHelpers");
          <D.50982>:
          D.27122 = iftmp.544;
        }
        if (D.27122 != 0) goto <D.50898>; else goto <D.50984>;
        <D.50984>:
        D.50945 = cmethod->klass;
        D.50985 = D.50945->image;
        D.50986 = mono_defaults.corlib;
        if (D.50985 != D.50986) goto <D.50898>; else goto <D.50899>;
        <D.50898>:
        D.50895 = 0B;
        return D.50895;
        <D.50899>:
        D.50987 = &klass->byval_arg;
        D.50988 = mono_type_get_underlying_type (D.50987);
        D.50989 = D.50988->type;
        D.50990 = (int) D.50989;
        switch (D.50990) <default: <D.27136>, case 2: <D.27123>, case 3: <D.27127>, case 4: <D.27124>, case 5: <D.27125>, case 6: <D.27128>, case 7: <D.27129>, case 8: <D.27130>, case 9: <D.27131>, case 10: <D.27134>, case 11: <D.27135>, case 12: <D.27132>, case 13: <D.27133>>
        <D.27123>:
        <D.27124>:
        <D.27125>:
        size = 1;
        goto <D.27126>;
        <D.27127>:
        <D.27128>:
        <D.27129>:
        size = 2;
        goto <D.27126>;
        <D.27130>:
        <D.27131>:
        <D.27132>:
        size = 4;
        goto <D.27126>;
        <D.27133>:
        <D.27134>:
        <D.27135>:
        size = 8;
        goto <D.27126>;
        <D.27136>:
        D.50895 = 0B;
        return D.50895;
        <D.27126>:
        size.545 = (unsigned int) size;
        D.50992 = size.545 * len;
        size = (int) D.50992;
        D.50993 = field->type;
        D.50994 = mono_type_size (D.50993, &dummy_align);
        if (D.50994 < size) goto <D.50995>; else goto <D.50996>;
        <D.50995>:
        D.50895 = 0B;
        return D.50895;
        <D.50996>:
        *out_size = size;
        D.50891 = method->klass;
        D.50892 = D.50891->image;
        D.50997 = BIT_FIELD_REF <*D.50892, 8, 128>;
        D.50998 = D.50997 & 8;
        if (D.50998 == 0) goto <D.50999>; else goto <D.51000>;
        <D.50999>:
        D.51001 = ip + 2;
        D.51002 = *D.51001;
        field_index = D.51002 & 16777215;
        D.51003 = field_index + 4294967295;
        D.50891 = method->klass;
        D.50892 = D.50891->image;
        mono_metadata_field_info (D.50892, D.51003, 0B, &rva, 0B);
        rva.546 = rva;
        D.50891 = method->klass;
        D.50892 = D.50891->image;
        data_ptr = mono_image_rva_map (D.50892, rva.546);
        D.51005 = aot != 0;
        D.51006 = data_ptr != 0B;
        D.51007 = D.51005 & D.51006;
        if (D.51007 != 0) goto <D.51008>; else goto <D.51009>;
        <D.51008>:
        rva.546 = rva;
        D.50895 = (const char *) rva.546;
        return D.50895;
        <D.51009>:
        goto <D.51010>;
        <D.51000>:
        D.51005 = aot != 0;
        D.51011 = (long int) D.51005;
        D.51012 = __builtin_expect (D.51011, 0);
        if (D.51012 != 0) goto <D.51013>; else goto <D.51014>;
        <D.51013>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6312, "!aot");
        <D.51014>:
        data_ptr = mono_field_get_data (field);
        <D.51010>:
        D.50895 = data_ptr;
        return D.50895;
      }
    finally
      {
        rva = {CLOBBER};
        dummy_class = {CLOBBER};
        dummy_align = {CLOBBER};
      }
  }
  <D.50890>:
  <D.50886>:
  <D.50882>:
  <D.50878>:
  D.50895 = 0B;
  return D.50895;
}


mini_emit_check_array_type (struct MonoCompile * cfg, struct MonoInst * obj, struct MonoClass * array_class)
{
  unsigned int D.51017;
  int D.51018;
  int D.51019;
  unsigned char D.51022;
  unsigned char D.51023;
  struct MonoMemPool * D.51026;
  int D.51027;
  struct MonoInst * D.51028;
  int D.51029;
  int D.51030;
  const unsigned char * D.51031;
  struct MonoBasicBlock * D.51032;
  struct MonoInst * D.51033;
  int D.51037;
  struct MonoInst * D.51038;
  int D.51039;
  int D.51040;
  int D.51045;
  struct MonoInst * D.51046;
  int D.51047;
  int D.51048;
  unsigned char D.51049;
  unsigned int D.51053;
  unsigned int D.51054;
  unsigned int D.51057;
  int D.51058;
  struct MonoInst * D.51059;
  int D.51060;
  int D.51061;
  unsigned char D.51065;
  unsigned char D.51066;
  unsigned int D.51069;
  int D.51070;
  struct MonoInst * D.51071;
  guint16 iftmp.547;
  int D.51076;
  int D.51077;
  int D.51080;
  struct MonoInst * D.51081;
  int D.51082;
  int D.51083;
  int D.51084;
  unsigned int D.51086;
  int D.51087;
  int D.51091;
  struct MonoInst * D.51092;
  int D.51093;
  int D.51094;
  int D.51099;
  struct MonoInst * D.51100;
  int D.51101;
  int D.51102;
  int array_class.548;
  int D.51110;
  struct MonoInst * D.51111;
  int D.51112;
  int D.51113;
  int D.51114;
  struct MonoDomain * D.51121;
  unsigned int D.51124;
  int D.51125;
  struct MonoInst * D.51126;
  guint16 iftmp.549;
  int D.51131;
  int D.51132;
  int D.51135;
  struct MonoInst * D.51136;
  int D.51137;
  int D.51138;
  struct MonoInst * iftmp.550;
  int D.51143;
  void * iftmp.551;
  unsigned int D.51149;
  int D.51150;
  int D.51154;
  struct MonoInst * D.51155;
  int D.51156;
  int D.51157;
  int D.51164;
  struct MonoInst * D.51165;
  int D.51166;
  int D.51167;
  int vtable.552;
  int D.51172;
  struct MonoInst * D.51173;
  int D.51174;
  int D.51175;
  int vtable_reg;
  int context_used;

  D.51017 = alloc_preg (cfg);
  vtable_reg = (int) D.51017;
  context_used = mini_class_check_context_used (cfg, array_class);
  D.51018 = obj->dreg;
  save_cast_details (cfg, array_class, D.51018, 0, 0B);
  {
    struct MonoInst * inst;
    int __ins_flags;

    __ins_flags = 32;
    D.51019 = __ins_flags & 32;
    if (D.51019 != 0) goto <D.51020>; else goto <D.51021>;
    <D.51020>:
    D.51022 = BIT_FIELD_REF <*cfg, 8, 3424>;
    D.51023 = D.51022 & 64;
    if (D.51023 != 0) goto <D.51024>; else goto <D.51025>;
    <D.51024>:
    {
      struct MonoInst * inst;

      D.51026 = cfg->mempool;
      inst = mono_mempool_alloc (D.51026, 48);
      inst->data.op[1].const_val = 0;
      D.51027 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.51027;
      inst->prev = 0B;
      D.51028 = inst->prev;
      inst->next = D.51028;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.51029 = inst->sreg3;
      inst->sreg2 = D.51029;
      D.51030 = inst->sreg2;
      inst->sreg1 = D.51030;
      D.51031 = cfg->ip;
      inst->cil_code = D.51031;
      inst->dreg = -1;
      D.51018 = obj->dreg;
      inst->sreg1 = D.51018;
      inst->data.op[1].const_val = 0;
      D.51032 = cfg->cbb;
      D.51033 = D.51032->last_ins;
      if (D.51033 != 0B) goto <D.51034>; else goto <D.51035>;
      <D.51034>:
      D.51032 = cfg->cbb;
      D.51033 = D.51032->last_ins;
      D.51033->next = inst;
      D.51032 = cfg->cbb;
      D.51033 = D.51032->last_ins;
      inst->prev = D.51033;
      D.51032 = cfg->cbb;
      D.51032->last_ins = inst;
      goto <D.51036>;
      <D.51035>:
      D.51032 = cfg->cbb;
      D.51032 = cfg->cbb;
      D.51032->last_ins = inst;
      D.51033 = D.51032->last_ins;
      D.51032->code = D.51033;
      <D.51036>:
    }
    {
      struct MonoInst * inst;

      D.51026 = cfg->mempool;
      inst = mono_mempool_alloc (D.51026, 48);
      inst->data.op[1].const_val = 0;
      D.51037 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.51037;
      inst->prev = 0B;
      D.51038 = inst->prev;
      inst->next = D.51038;
      inst->opcode = 455;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.51039 = inst->sreg3;
      inst->sreg2 = D.51039;
      D.51040 = inst->sreg2;
      inst->sreg1 = D.51040;
      D.51031 = cfg->ip;
      inst->cil_code = D.51031;
      inst->data.op[1].p = "NullReferenceException";
      D.51032 = cfg->cbb;
      D.51033 = D.51032->last_ins;
      if (D.51033 != 0B) goto <D.51041>; else goto <D.51042>;
      <D.51041>:
      D.51032 = cfg->cbb;
      D.51033 = D.51032->last_ins;
      D.51033->next = inst;
      D.51032 = cfg->cbb;
      D.51033 = D.51032->last_ins;
      inst->prev = D.51033;
      D.51032 = cfg->cbb;
      D.51032->last_ins = inst;
      goto <D.51043>;
      <D.51042>:
      D.51032 = cfg->cbb;
      D.51032 = cfg->cbb;
      D.51032->last_ins = inst;
      D.51033 = D.51032->last_ins;
      D.51032->code = D.51033;
      <D.51043>:
    }
    goto <D.51044>;
    <D.51025>:
    <D.51044>:
    <D.51021>:
    D.51026 = cfg->mempool;
    inst = mono_mempool_alloc (D.51026, 48);
    inst->data.op[1].const_val = 0;
    D.51045 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51045;
    inst->prev = 0B;
    D.51046 = inst->prev;
    inst->next = D.51046;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51047 = inst->sreg3;
    inst->sreg2 = D.51047;
    D.51048 = inst->sreg2;
    inst->sreg1 = D.51048;
    D.51031 = cfg->ip;
    inst->cil_code = D.51031;
    inst->dreg = vtable_reg;
    D.51018 = obj->dreg;
    inst->sreg1 = D.51018;
    inst->data.op[0].const_val = 0;
    inst->type = 1;
    D.51049 = (unsigned char) __ins_flags;
    inst->flags = D.51049;
    D.51032 = cfg->cbb;
    D.51033 = D.51032->last_ins;
    if (D.51033 != 0B) goto <D.51050>; else goto <D.51051>;
    <D.51050>:
    D.51032 = cfg->cbb;
    D.51033 = D.51032->last_ins;
    D.51033->next = inst;
    D.51032 = cfg->cbb;
    D.51033 = D.51032->last_ins;
    inst->prev = D.51033;
    D.51032 = cfg->cbb;
    D.51032->last_ins = inst;
    goto <D.51052>;
    <D.51051>:
    D.51032 = cfg->cbb;
    D.51032 = cfg->cbb;
    D.51032->last_ins = inst;
    D.51033 = D.51032->last_ins;
    D.51032->code = D.51033;
    <D.51052>:
  }
  D.51053 = cfg->opt;
  D.51054 = D.51053 & 512;
  if (D.51054 != 0) goto <D.51055>; else goto <D.51056>;
  <D.51055>:
  {
    int class_reg;

    D.51057 = alloc_preg (cfg);
    class_reg = (int) D.51057;
    {
      struct MonoInst * inst;

      D.51026 = cfg->mempool;
      inst = mono_mempool_alloc (D.51026, 48);
      inst->data.op[1].const_val = 0;
      D.51058 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.51058;
      inst->prev = 0B;
      D.51059 = inst->prev;
      inst->next = D.51059;
      inst->opcode = 391;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.51060 = inst->sreg3;
      inst->sreg2 = D.51060;
      D.51061 = inst->sreg2;
      inst->sreg1 = D.51061;
      D.51031 = cfg->ip;
      inst->cil_code = D.51031;
      inst->dreg = class_reg;
      inst->sreg1 = vtable_reg;
      inst->data.op[0].const_val = 0;
      D.51032 = cfg->cbb;
      D.51033 = D.51032->last_ins;
      if (D.51033 != 0B) goto <D.51062>; else goto <D.51063>;
      <D.51062>:
      D.51032 = cfg->cbb;
      D.51033 = D.51032->last_ins;
      D.51033->next = inst;
      D.51032 = cfg->cbb;
      D.51033 = D.51032->last_ins;
      inst->prev = D.51033;
      D.51032 = cfg->cbb;
      D.51032->last_ins = inst;
      goto <D.51064>;
      <D.51063>:
      D.51032 = cfg->cbb;
      D.51032 = cfg->cbb;
      D.51032->last_ins = inst;
      D.51033 = D.51032->last_ins;
      D.51032->code = D.51033;
      <D.51064>:
    }
    D.51065 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.51066 = D.51065 & 64;
    if (D.51066 != 0) goto <D.51067>; else goto <D.51068>;
    <D.51067>:
    {
      int klass_reg;

      D.51069 = alloc_preg (cfg);
      klass_reg = (int) D.51069;
      {
        struct MonoInst * inst;

        D.51026 = cfg->mempool;
        inst = mono_mempool_alloc (D.51026, 48);
        inst->data.op[1].const_val = 0;
        D.51070 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.51070;
        inst->prev = 0B;
        D.51071 = inst->prev;
        inst->next = D.51071;
        D.51065 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.51066 = D.51065 & 64;
        if (D.51066 != 0) goto <D.51073>; else goto <D.51074>;
        <D.51073>:
        iftmp.547 = 738;
        goto <D.51075>;
        <D.51074>:
        iftmp.547 = 362;
        <D.51075>:
        inst->opcode = iftmp.547;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.51076 = inst->sreg3;
        inst->sreg2 = D.51076;
        D.51077 = inst->sreg2;
        inst->sreg1 = D.51077;
        D.51031 = cfg->ip;
        inst->cil_code = D.51031;
        D.51065 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.51066 = D.51065 & 64;
        if (D.51066 != 0) goto <D.51078>; else goto <D.51079>;
        <D.51078>:
        {
          struct MonoInst * group;
          struct MonoInst * got_loc;

          got_loc = mono_get_got_var (cfg);
          D.51026 = cfg->mempool;
          group = mono_mempool_alloc (D.51026, 48);
          group->data.op[1].const_val = 0;
          D.51080 = group->data.op[1].const_val;
          group->data.op[0].const_val = D.51080;
          group->prev = 0B;
          D.51081 = group->prev;
          group->next = D.51081;
          group->opcode = 737;
          group->flags = 0;
          group->type = 0;
          group->dreg = -1;
          group->sreg3 = -1;
          D.51082 = group->sreg3;
          group->sreg2 = D.51082;
          D.51083 = group->sreg2;
          group->sreg1 = D.51083;
          D.51031 = cfg->ip;
          group->cil_code = D.51031;
          group->data.op[0].src = array_class;
          group->data.op[1].src = 11B;
          D.51084 = got_loc->dreg;
          inst->sreg1 = D.51084;
          inst->data.op[1].p = group;
        }
        goto <D.51085>;
        <D.51079>:
        inst->data.op[0].p = array_class;
        inst->data.op[1].src = 11B;
        <D.51085>:
        inst->type = 3;
        D.51086 = alloc_dreg (cfg, 3);
        D.51087 = (int) D.51086;
        inst->dreg = D.51087;
        inst->dreg = klass_reg;
        D.51032 = cfg->cbb;
        D.51033 = D.51032->last_ins;
        if (D.51033 != 0B) goto <D.51088>; else goto <D.51089>;
        <D.51088>:
        D.51032 = cfg->cbb;
        D.51033 = D.51032->last_ins;
        D.51033->next = inst;
        D.51032 = cfg->cbb;
        D.51033 = D.51032->last_ins;
        inst->prev = D.51033;
        D.51032 = cfg->cbb;
        D.51032->last_ins = inst;
        goto <D.51090>;
        <D.51089>:
        D.51032 = cfg->cbb;
        D.51032 = cfg->cbb;
        D.51032->last_ins = inst;
        D.51033 = D.51032->last_ins;
        D.51032->code = D.51033;
        <D.51090>:
      }
      {
        struct MonoInst * inst;

        D.51026 = cfg->mempool;
        inst = mono_mempool_alloc (D.51026, 48);
        inst->data.op[1].const_val = 0;
        D.51091 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.51091;
        inst->prev = 0B;
        D.51092 = inst->prev;
        inst->next = D.51092;
        inst->opcode = 322;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.51093 = inst->sreg3;
        inst->sreg2 = D.51093;
        D.51094 = inst->sreg2;
        inst->sreg1 = D.51094;
        D.51031 = cfg->ip;
        inst->cil_code = D.51031;
        inst->dreg = -1;
        inst->sreg1 = class_reg;
        inst->sreg2 = klass_reg;
        D.51032 = cfg->cbb;
        D.51033 = D.51032->last_ins;
        if (D.51033 != 0B) goto <D.51095>; else goto <D.51096>;
        <D.51095>:
        D.51032 = cfg->cbb;
        D.51033 = D.51032->last_ins;
        D.51033->next = inst;
        D.51032 = cfg->cbb;
        D.51033 = D.51032->last_ins;
        inst->prev = D.51033;
        D.51032 = cfg->cbb;
        D.51032->last_ins = inst;
        goto <D.51097>;
        <D.51096>:
        D.51032 = cfg->cbb;
        D.51032 = cfg->cbb;
        D.51032->last_ins = inst;
        D.51033 = D.51032->last_ins;
        D.51032->code = D.51033;
        <D.51097>:
      }
    }
    goto <D.51098>;
    <D.51068>:
    {
      struct MonoInst * inst;

      D.51026 = cfg->mempool;
      inst = mono_mempool_alloc (D.51026, 48);
      inst->data.op[1].const_val = 0;
      D.51099 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.51099;
      inst->prev = 0B;
      D.51100 = inst->prev;
      inst->next = D.51100;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.51101 = inst->sreg3;
      inst->sreg2 = D.51101;
      D.51102 = inst->sreg2;
      inst->sreg1 = D.51102;
      D.51031 = cfg->ip;
      inst->cil_code = D.51031;
      inst->dreg = -1;
      inst->sreg1 = class_reg;
      array_class.548 = (int) array_class;
      inst->data.op[1].const_val = array_class.548;
      D.51032 = cfg->cbb;
      D.51033 = D.51032->last_ins;
      if (D.51033 != 0B) goto <D.51104>; else goto <D.51105>;
      <D.51104>:
      D.51032 = cfg->cbb;
      D.51033 = D.51032->last_ins;
      D.51033->next = inst;
      D.51032 = cfg->cbb;
      D.51033 = D.51032->last_ins;
      inst->prev = D.51033;
      D.51032 = cfg->cbb;
      D.51032->last_ins = inst;
      goto <D.51106>;
      <D.51105>:
      D.51032 = cfg->cbb;
      D.51032 = cfg->cbb;
      D.51032->last_ins = inst;
      D.51033 = D.51032->last_ins;
      D.51032->code = D.51033;
      <D.51106>:
    }
    <D.51098>:
  }
  goto <D.51107>;
  <D.51056>:
  if (context_used != 0) goto <D.51108>; else goto <D.51109>;
  <D.51108>:
  {
    struct MonoInst * vtable_ins;

    vtable_ins = emit_get_rgctx_klass (cfg, context_used, array_class, 2);
    {
      struct MonoInst * inst;

      D.51026 = cfg->mempool;
      inst = mono_mempool_alloc (D.51026, 48);
      inst->data.op[1].const_val = 0;
      D.51110 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.51110;
      inst->prev = 0B;
      D.51111 = inst->prev;
      inst->next = D.51111;
      inst->opcode = 322;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.51112 = inst->sreg3;
      inst->sreg2 = D.51112;
      D.51113 = inst->sreg2;
      inst->sreg1 = D.51113;
      D.51031 = cfg->ip;
      inst->cil_code = D.51031;
      inst->dreg = -1;
      inst->sreg1 = vtable_reg;
      D.51114 = vtable_ins->dreg;
      inst->sreg2 = D.51114;
      D.51032 = cfg->cbb;
      D.51033 = D.51032->last_ins;
      if (D.51033 != 0B) goto <D.51115>; else goto <D.51116>;
      <D.51115>:
      D.51032 = cfg->cbb;
      D.51033 = D.51032->last_ins;
      D.51033->next = inst;
      D.51032 = cfg->cbb;
      D.51033 = D.51032->last_ins;
      inst->prev = D.51033;
      D.51032 = cfg->cbb;
      D.51032->last_ins = inst;
      goto <D.51117>;
      <D.51116>:
      D.51032 = cfg->cbb;
      D.51032 = cfg->cbb;
      D.51032->last_ins = inst;
      D.51033 = D.51032->last_ins;
      D.51032->code = D.51033;
      <D.51117>:
    }
  }
  goto <D.51118>;
  <D.51109>:
  D.51065 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.51066 = D.51065 & 64;
  if (D.51066 != 0) goto <D.51119>; else goto <D.51120>;
  <D.51119>:
  {
    int vt_reg;
    struct MonoVTable * vtable;

    D.51121 = cfg->domain;
    vtable = mono_class_vtable (D.51121, array_class);
    if (vtable == 0B) goto <D.51122>; else goto <D.51123>;
    <D.51122>:
    return;
    <D.51123>:
    D.51124 = alloc_preg (cfg);
    vt_reg = (int) D.51124;
    {
      struct MonoInst * inst;

      D.51026 = cfg->mempool;
      inst = mono_mempool_alloc (D.51026, 48);
      inst->data.op[1].const_val = 0;
      D.51125 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.51125;
      inst->prev = 0B;
      D.51126 = inst->prev;
      inst->next = D.51126;
      D.51065 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.51066 = D.51065 & 64;
      if (D.51066 != 0) goto <D.51128>; else goto <D.51129>;
      <D.51128>:
      iftmp.549 = 738;
      goto <D.51130>;
      <D.51129>:
      iftmp.549 = 362;
      <D.51130>:
      inst->opcode = iftmp.549;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.51131 = inst->sreg3;
      inst->sreg2 = D.51131;
      D.51132 = inst->sreg2;
      inst->sreg1 = D.51132;
      D.51031 = cfg->ip;
      inst->cil_code = D.51031;
      D.51065 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.51066 = D.51065 & 64;
      if (D.51066 != 0) goto <D.51133>; else goto <D.51134>;
      <D.51133>:
      {
        struct MonoInst * group;
        struct MonoInst * got_loc;

        got_loc = mono_get_got_var (cfg);
        D.51026 = cfg->mempool;
        group = mono_mempool_alloc (D.51026, 48);
        group->data.op[1].const_val = 0;
        D.51135 = group->data.op[1].const_val;
        group->data.op[0].const_val = D.51135;
        group->prev = 0B;
        D.51136 = group->prev;
        group->next = D.51136;
        group->opcode = 737;
        group->flags = 0;
        group->type = 0;
        group->dreg = -1;
        group->sreg3 = -1;
        D.51137 = group->sreg3;
        group->sreg2 = D.51137;
        D.51138 = group->sreg2;
        group->sreg1 = D.51138;
        D.51031 = cfg->ip;
        group->cil_code = D.51031;
        D.51065 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.51066 = D.51065 & 64;
        if (D.51066 != 0) goto <D.51140>; else goto <D.51141>;
        <D.51140>:
        iftmp.550 = vtable->klass;
        goto <D.51142>;
        <D.51141>:
        iftmp.550 = vtable;
        <D.51142>:
        group->data.op[0].src = iftmp.550;
        group->data.op[1].src = 14B;
        D.51143 = got_loc->dreg;
        inst->sreg1 = D.51143;
        inst->data.op[1].p = group;
      }
      goto <D.51144>;
      <D.51134>:
      D.51065 = BIT_FIELD_REF <*cfg, 8, 3392>;
      D.51066 = D.51065 & 64;
      if (D.51066 != 0) goto <D.51146>; else goto <D.51147>;
      <D.51146>:
      iftmp.551 = vtable->klass;
      goto <D.51148>;
      <D.51147>:
      iftmp.551 = vtable;
      <D.51148>:
      inst->data.op[0].p = iftmp.551;
      inst->data.op[1].src = 14B;
      <D.51144>:
      inst->type = 3;
      D.51149 = alloc_dreg (cfg, 3);
      D.51150 = (int) D.51149;
      inst->dreg = D.51150;
      inst->dreg = vt_reg;
      D.51032 = cfg->cbb;
      D.51033 = D.51032->last_ins;
      if (D.51033 != 0B) goto <D.51151>; else goto <D.51152>;
      <D.51151>:
      D.51032 = cfg->cbb;
      D.51033 = D.51032->last_ins;
      D.51033->next = inst;
      D.51032 = cfg->cbb;
      D.51033 = D.51032->last_ins;
      inst->prev = D.51033;
      D.51032 = cfg->cbb;
      D.51032->last_ins = inst;
      goto <D.51153>;
      <D.51152>:
      D.51032 = cfg->cbb;
      D.51032 = cfg->cbb;
      D.51032->last_ins = inst;
      D.51033 = D.51032->last_ins;
      D.51032->code = D.51033;
      <D.51153>:
    }
    {
      struct MonoInst * inst;

      D.51026 = cfg->mempool;
      inst = mono_mempool_alloc (D.51026, 48);
      inst->data.op[1].const_val = 0;
      D.51154 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.51154;
      inst->prev = 0B;
      D.51155 = inst->prev;
      inst->next = D.51155;
      inst->opcode = 322;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.51156 = inst->sreg3;
      inst->sreg2 = D.51156;
      D.51157 = inst->sreg2;
      inst->sreg1 = D.51157;
      D.51031 = cfg->ip;
      inst->cil_code = D.51031;
      inst->dreg = -1;
      inst->sreg1 = vtable_reg;
      inst->sreg2 = vt_reg;
      D.51032 = cfg->cbb;
      D.51033 = D.51032->last_ins;
      if (D.51033 != 0B) goto <D.51158>; else goto <D.51159>;
      <D.51158>:
      D.51032 = cfg->cbb;
      D.51033 = D.51032->last_ins;
      D.51033->next = inst;
      D.51032 = cfg->cbb;
      D.51033 = D.51032->last_ins;
      inst->prev = D.51033;
      D.51032 = cfg->cbb;
      D.51032->last_ins = inst;
      goto <D.51160>;
      <D.51159>:
      D.51032 = cfg->cbb;
      D.51032 = cfg->cbb;
      D.51032->last_ins = inst;
      D.51033 = D.51032->last_ins;
      D.51032->code = D.51033;
      <D.51160>:
    }
  }
  goto <D.51161>;
  <D.51120>:
  {
    struct MonoVTable * vtable;

    D.51121 = cfg->domain;
    vtable = mono_class_vtable (D.51121, array_class);
    if (vtable == 0B) goto <D.51162>; else goto <D.51163>;
    <D.51162>:
    return;
    <D.51163>:
    {
      struct MonoInst * inst;

      D.51026 = cfg->mempool;
      inst = mono_mempool_alloc (D.51026, 48);
      inst->data.op[1].const_val = 0;
      D.51164 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.51164;
      inst->prev = 0B;
      D.51165 = inst->prev;
      inst->next = D.51165;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.51166 = inst->sreg3;
      inst->sreg2 = D.51166;
      D.51167 = inst->sreg2;
      inst->sreg1 = D.51167;
      D.51031 = cfg->ip;
      inst->cil_code = D.51031;
      inst->dreg = -1;
      inst->sreg1 = vtable_reg;
      vtable.552 = (int) vtable;
      inst->data.op[1].const_val = vtable.552;
      D.51032 = cfg->cbb;
      D.51033 = D.51032->last_ins;
      if (D.51033 != 0B) goto <D.51169>; else goto <D.51170>;
      <D.51169>:
      D.51032 = cfg->cbb;
      D.51033 = D.51032->last_ins;
      D.51033->next = inst;
      D.51032 = cfg->cbb;
      D.51033 = D.51032->last_ins;
      inst->prev = D.51033;
      D.51032 = cfg->cbb;
      D.51032->last_ins = inst;
      goto <D.51171>;
      <D.51170>:
      D.51032 = cfg->cbb;
      D.51032 = cfg->cbb;
      D.51032->last_ins = inst;
      D.51033 = D.51032->last_ins;
      D.51032->code = D.51033;
      <D.51171>:
    }
  }
  <D.51161>:
  <D.51118>:
  <D.51107>:
  {
    struct MonoInst * inst;

    D.51026 = cfg->mempool;
    inst = mono_mempool_alloc (D.51026, 48);
    inst->data.op[1].const_val = 0;
    D.51172 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51172;
    inst->prev = 0B;
    D.51173 = inst->prev;
    inst->next = D.51173;
    inst->opcode = 460;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51174 = inst->sreg3;
    inst->sreg2 = D.51174;
    D.51175 = inst->sreg2;
    inst->sreg1 = D.51175;
    D.51031 = cfg->ip;
    inst->cil_code = D.51031;
    inst->data.op[1].p = "ArrayTypeMismatchException";
    D.51032 = cfg->cbb;
    D.51033 = D.51032->last_ins;
    if (D.51033 != 0B) goto <D.51176>; else goto <D.51177>;
    <D.51176>:
    D.51032 = cfg->cbb;
    D.51033 = D.51032->last_ins;
    D.51033->next = inst;
    D.51032 = cfg->cbb;
    D.51033 = D.51032->last_ins;
    inst->prev = D.51033;
    D.51032 = cfg->cbb;
    D.51032->last_ins = inst;
    goto <D.51178>;
    <D.51177>:
    D.51032 = cfg->cbb;
    D.51032 = cfg->cbb;
    D.51032->last_ins = inst;
    D.51033 = D.51032->last_ins;
    D.51032->code = D.51033;
    <D.51178>:
  }
  reset_cast_details (cfg);
}


mini_emit_ldelema_1_ins (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * arr, struct MonoInst * index, gboolean bcheck)
{
  int D.51180;
  int D.51184;
  unsigned int D.51185;
  unsigned char D.51186;
  unsigned int D.51189;
  struct MonoMemPool * D.51190;
  int D.51191;
  struct MonoInst * D.51192;
  int D.51193;
  int D.51194;
  const unsigned char * D.51195;
  struct MonoBasicBlock * D.51196;
  struct MonoInst * D.51197;
  unsigned int D.51204;
  unsigned int D.51205;
  unsigned int D.51208;
  unsigned char D.51211;
  unsigned char D.51212;
  int D.51215;
  struct MonoInst * D.51216;
  int D.51217;
  int D.51218;
  int D.51222;
  struct MonoInst * D.51223;
  int D.51224;
  int D.51225;
  unsigned int D.51232;
  int D.51235;
  int D.51240;
  struct MonoInst * D.51241;
  int D.51242;
  int D.51243;
  int D.51247;
  struct MonoInst * D.51248;
  int D.51249;
  int D.51250;
  int D.51255;
  struct MonoInst * D.51256;
  int D.51257;
  int D.51258;
  unsigned char D.51259;
  int D.51264;
  int D.51269;
  struct MonoInst * D.51270;
  int D.51271;
  int D.51272;
  int D.51276;
  struct MonoInst * D.51277;
  int D.51278;
  int D.51279;
  int D.51284;
  struct MonoInst * D.51285;
  int D.51286;
  int D.51287;
  unsigned char D.51288;
  int D.51292;
  struct MonoInst * D.51293;
  int D.51294;
  int D.51295;
  int D.51299;
  struct MonoInst * D.51300;
  int D.51301;
  int D.51302;
  int D.51307;
  struct MonoInst * D.51308;
  int D.51309;
  int D.51310;
  int D.51314;
  struct MonoInst * D.51315;
  int D.51316;
  int D.51317;
  int D.51322;
  struct MonoInst * D.51323;
  int D.51324;
  int D.51325;
  unsigned char D.51326;
  unsigned char D.51327;
  unsigned int D.51331;
  unsigned int D.51332;
  unsigned int D.51335;
  _Bool D.51336;
  _Bool D.51337;
  _Bool D.51338;
  int D.51340;
  struct MonoInst * D.51341;
  int D.51342;
  int D.51343;
  unsigned int D.51344;
  int D.51345;
  int D.51346;
  struct MonoClass * D.51350;
  struct MonoInst * D.51351;
  unsigned int D.51352;
  struct MonoGenericSharingContext * D.51355;
  _Bool D.51356;
  long int D.51357;
  long int D.51358;
  _Bool D.51361;
  long int D.51362;
  long int D.51363;
  struct MonoType * D.51366;
  int D.51367;
  struct MonoInst * D.51368;
  int D.51369;
  int D.51370;
  int D.51371;
  int D.51376;
  struct MonoInst * D.51377;
  int D.51378;
  int D.51379;
  int size.553;
  int D.51384;
  struct MonoInst * D.51385;
  int D.51386;
  int D.51387;
  struct MonoClass * D.51391;
  struct MonoInst * ins;
  guint32 size;
  int mult_reg;
  int add_reg;
  int array_reg;
  int index_reg;
  int index2_reg;
  int context_used;

  D.51180 = mini_is_gsharedvt_variable_klass (cfg, klass);
  if (D.51180 != 0) goto <D.51181>; else goto <D.51182>;
  <D.51181>:
  size = 4294967295;
  goto <D.51183>;
  <D.51182>:
  mono_class_init (klass);
  D.51184 = mono_class_array_element_size (klass);
  size = (guint32) D.51184;
  <D.51183>:
  D.51185 = alloc_preg (cfg);
  mult_reg = (int) D.51185;
  array_reg = arr->dreg;
  index_reg = index->dreg;
  D.51186 = index->type;
  if (D.51186 == 2) goto <D.51187>; else goto <D.51188>;
  <D.51187>:
  D.51189 = alloc_preg (cfg);
  index2_reg = (int) D.51189;
  {
    struct MonoInst * inst;

    D.51190 = cfg->mempool;
    inst = mono_mempool_alloc (D.51190, 48);
    inst->data.op[1].const_val = 0;
    D.51191 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51191;
    inst->prev = 0B;
    D.51192 = inst->prev;
    inst->next = D.51192;
    inst->opcode = 500;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51193 = inst->sreg3;
    inst->sreg2 = D.51193;
    D.51194 = inst->sreg2;
    inst->sreg1 = D.51194;
    D.51195 = cfg->ip;
    inst->cil_code = D.51195;
    inst->dreg = index2_reg;
    inst->sreg1 = index_reg;
    D.51196 = cfg->cbb;
    D.51197 = D.51196->last_ins;
    if (D.51197 != 0B) goto <D.51198>; else goto <D.51199>;
    <D.51198>:
    D.51196 = cfg->cbb;
    D.51197 = D.51196->last_ins;
    D.51197->next = inst;
    D.51196 = cfg->cbb;
    D.51197 = D.51196->last_ins;
    inst->prev = D.51197;
    D.51196 = cfg->cbb;
    D.51196->last_ins = inst;
    goto <D.51200>;
    <D.51199>:
    D.51196 = cfg->cbb;
    D.51196 = cfg->cbb;
    D.51196->last_ins = inst;
    D.51197 = D.51196->last_ins;
    D.51196->code = D.51197;
    <D.51200>:
  }
  goto <D.51201>;
  <D.51188>:
  index2_reg = index_reg;
  <D.51201>:
  if (bcheck != 0) goto <D.51202>; else goto <D.51203>;
  <D.51202>:
  D.51204 = cfg->opt;
  D.51205 = D.51204 & 134217728;
  if (D.51205 == 0) goto <D.51206>; else goto <D.51207>;
  <D.51206>:
  D.51204 = cfg->opt;
  D.51208 = D.51204 & 262144;
  if (D.51208 == 0) goto <D.51209>; else goto <D.51210>;
  <D.51209>:
  D.51211 = BIT_FIELD_REF <*cfg, 8, 3424>;
  D.51212 = D.51211 & 64;
  if (D.51212 != 0) goto <D.51213>; else goto <D.51214>;
  <D.51213>:
  {
    struct MonoInst * inst;

    D.51190 = cfg->mempool;
    inst = mono_mempool_alloc (D.51190, 48);
    inst->data.op[1].const_val = 0;
    D.51215 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51215;
    inst->prev = 0B;
    D.51216 = inst->prev;
    inst->next = D.51216;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51217 = inst->sreg3;
    inst->sreg2 = D.51217;
    D.51218 = inst->sreg2;
    inst->sreg1 = D.51218;
    D.51195 = cfg->ip;
    inst->cil_code = D.51195;
    inst->dreg = -1;
    inst->sreg1 = array_reg;
    inst->data.op[1].const_val = 0;
    D.51196 = cfg->cbb;
    D.51197 = D.51196->last_ins;
    if (D.51197 != 0B) goto <D.51219>; else goto <D.51220>;
    <D.51219>:
    D.51196 = cfg->cbb;
    D.51197 = D.51196->last_ins;
    D.51197->next = inst;
    D.51196 = cfg->cbb;
    D.51197 = D.51196->last_ins;
    inst->prev = D.51197;
    D.51196 = cfg->cbb;
    D.51196->last_ins = inst;
    goto <D.51221>;
    <D.51220>:
    D.51196 = cfg->cbb;
    D.51196 = cfg->cbb;
    D.51196->last_ins = inst;
    D.51197 = D.51196->last_ins;
    D.51196->code = D.51197;
    <D.51221>:
  }
  {
    struct MonoInst * inst;

    D.51190 = cfg->mempool;
    inst = mono_mempool_alloc (D.51190, 48);
    inst->data.op[1].const_val = 0;
    D.51222 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51222;
    inst->prev = 0B;
    D.51223 = inst->prev;
    inst->next = D.51223;
    inst->opcode = 455;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51224 = inst->sreg3;
    inst->sreg2 = D.51224;
    D.51225 = inst->sreg2;
    inst->sreg1 = D.51225;
    D.51195 = cfg->ip;
    inst->cil_code = D.51195;
    inst->data.op[1].p = "NullReferenceException";
    D.51196 = cfg->cbb;
    D.51197 = D.51196->last_ins;
    if (D.51197 != 0B) goto <D.51226>; else goto <D.51227>;
    <D.51226>:
    D.51196 = cfg->cbb;
    D.51197 = D.51196->last_ins;
    D.51197->next = inst;
    D.51196 = cfg->cbb;
    D.51197 = D.51196->last_ins;
    inst->prev = D.51197;
    D.51196 = cfg->cbb;
    D.51196->last_ins = inst;
    goto <D.51228>;
    <D.51227>:
    D.51196 = cfg->cbb;
    D.51196 = cfg->cbb;
    D.51196->last_ins = inst;
    D.51197 = D.51196->last_ins;
    D.51196->code = D.51197;
    <D.51228>:
  }
  goto <D.51229>;
  <D.51214>:
  <D.51229>:
  if (0 != 0) goto <D.51230>; else goto <D.51231>;
  <D.51230>:
  {
    int _length_reg;

    D.51232 = alloc_ireg (cfg);
    _length_reg = (int) D.51232;
    if (1 != 0) goto <D.51233>; else goto <D.51234>;
    <D.51233>:
    {
      struct MonoInst * inst;
      int __ins_flags;

      __ins_flags = 32;
      D.51235 = __ins_flags & 32;
      if (D.51235 != 0) goto <D.51236>; else goto <D.51237>;
      <D.51236>:
      D.51211 = BIT_FIELD_REF <*cfg, 8, 3424>;
      D.51212 = D.51211 & 64;
      if (D.51212 != 0) goto <D.51238>; else goto <D.51239>;
      <D.51238>:
      {
        struct MonoInst * inst;

        D.51190 = cfg->mempool;
        inst = mono_mempool_alloc (D.51190, 48);
        inst->data.op[1].const_val = 0;
        D.51240 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.51240;
        inst->prev = 0B;
        D.51241 = inst->prev;
        inst->next = D.51241;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.51242 = inst->sreg3;
        inst->sreg2 = D.51242;
        D.51243 = inst->sreg2;
        inst->sreg1 = D.51243;
        D.51195 = cfg->ip;
        inst->cil_code = D.51195;
        inst->dreg = -1;
        inst->sreg1 = array_reg;
        inst->data.op[1].const_val = 0;
        D.51196 = cfg->cbb;
        D.51197 = D.51196->last_ins;
        if (D.51197 != 0B) goto <D.51244>; else goto <D.51245>;
        <D.51244>:
        D.51196 = cfg->cbb;
        D.51197 = D.51196->last_ins;
        D.51197->next = inst;
        D.51196 = cfg->cbb;
        D.51197 = D.51196->last_ins;
        inst->prev = D.51197;
        D.51196 = cfg->cbb;
        D.51196->last_ins = inst;
        goto <D.51246>;
        <D.51245>:
        D.51196 = cfg->cbb;
        D.51196 = cfg->cbb;
        D.51196->last_ins = inst;
        D.51197 = D.51196->last_ins;
        D.51196->code = D.51197;
        <D.51246>:
      }
      {
        struct MonoInst * inst;

        D.51190 = cfg->mempool;
        inst = mono_mempool_alloc (D.51190, 48);
        inst->data.op[1].const_val = 0;
        D.51247 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.51247;
        inst->prev = 0B;
        D.51248 = inst->prev;
        inst->next = D.51248;
        inst->opcode = 455;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.51249 = inst->sreg3;
        inst->sreg2 = D.51249;
        D.51250 = inst->sreg2;
        inst->sreg1 = D.51250;
        D.51195 = cfg->ip;
        inst->cil_code = D.51195;
        inst->data.op[1].p = "NullReferenceException";
        D.51196 = cfg->cbb;
        D.51197 = D.51196->last_ins;
        if (D.51197 != 0B) goto <D.51251>; else goto <D.51252>;
        <D.51251>:
        D.51196 = cfg->cbb;
        D.51197 = D.51196->last_ins;
        D.51197->next = inst;
        D.51196 = cfg->cbb;
        D.51197 = D.51196->last_ins;
        inst->prev = D.51197;
        D.51196 = cfg->cbb;
        D.51196->last_ins = inst;
        goto <D.51253>;
        <D.51252>:
        D.51196 = cfg->cbb;
        D.51196 = cfg->cbb;
        D.51196->last_ins = inst;
        D.51197 = D.51196->last_ins;
        D.51196->code = D.51197;
        <D.51253>:
      }
      goto <D.51254>;
      <D.51239>:
      <D.51254>:
      <D.51237>:
      D.51190 = cfg->mempool;
      inst = mono_mempool_alloc (D.51190, 48);
      inst->data.op[1].const_val = 0;
      D.51255 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.51255;
      inst->prev = 0B;
      D.51256 = inst->prev;
      inst->next = D.51256;
      inst->opcode = 396;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.51257 = inst->sreg3;
      inst->sreg2 = D.51257;
      D.51258 = inst->sreg2;
      inst->sreg1 = D.51258;
      D.51195 = cfg->ip;
      inst->cil_code = D.51195;
      inst->dreg = _length_reg;
      inst->sreg1 = array_reg;
      inst->data.op[0].const_val = 12;
      inst->type = 1;
      D.51259 = (unsigned char) __ins_flags;
      inst->flags = D.51259;
      D.51196 = cfg->cbb;
      D.51197 = D.51196->last_ins;
      if (D.51197 != 0B) goto <D.51260>; else goto <D.51261>;
      <D.51260>:
      D.51196 = cfg->cbb;
      D.51197 = D.51196->last_ins;
      D.51197->next = inst;
      D.51196 = cfg->cbb;
      D.51197 = D.51196->last_ins;
      inst->prev = D.51197;
      D.51196 = cfg->cbb;
      D.51196->last_ins = inst;
      goto <D.51262>;
      <D.51261>:
      D.51196 = cfg->cbb;
      D.51196 = cfg->cbb;
      D.51196->last_ins = inst;
      D.51197 = D.51196->last_ins;
      D.51196->code = D.51197;
      <D.51262>:
    }
    goto <D.51263>;
    <D.51234>:
    {
      struct MonoInst * inst;
      int __ins_flags;

      __ins_flags = 64;
      D.51264 = __ins_flags & 32;
      if (D.51264 != 0) goto <D.51265>; else goto <D.51266>;
      <D.51265>:
      D.51211 = BIT_FIELD_REF <*cfg, 8, 3424>;
      D.51212 = D.51211 & 64;
      if (D.51212 != 0) goto <D.51267>; else goto <D.51268>;
      <D.51267>:
      {
        struct MonoInst * inst;

        D.51190 = cfg->mempool;
        inst = mono_mempool_alloc (D.51190, 48);
        inst->data.op[1].const_val = 0;
        D.51269 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.51269;
        inst->prev = 0B;
        D.51270 = inst->prev;
        inst->next = D.51270;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.51271 = inst->sreg3;
        inst->sreg2 = D.51271;
        D.51272 = inst->sreg2;
        inst->sreg1 = D.51272;
        D.51195 = cfg->ip;
        inst->cil_code = D.51195;
        inst->dreg = -1;
        inst->sreg1 = array_reg;
        inst->data.op[1].const_val = 0;
        D.51196 = cfg->cbb;
        D.51197 = D.51196->last_ins;
        if (D.51197 != 0B) goto <D.51273>; else goto <D.51274>;
        <D.51273>:
        D.51196 = cfg->cbb;
        D.51197 = D.51196->last_ins;
        D.51197->next = inst;
        D.51196 = cfg->cbb;
        D.51197 = D.51196->last_ins;
        inst->prev = D.51197;
        D.51196 = cfg->cbb;
        D.51196->last_ins = inst;
        goto <D.51275>;
        <D.51274>:
        D.51196 = cfg->cbb;
        D.51196 = cfg->cbb;
        D.51196->last_ins = inst;
        D.51197 = D.51196->last_ins;
        D.51196->code = D.51197;
        <D.51275>:
      }
      {
        struct MonoInst * inst;

        D.51190 = cfg->mempool;
        inst = mono_mempool_alloc (D.51190, 48);
        inst->data.op[1].const_val = 0;
        D.51276 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.51276;
        inst->prev = 0B;
        D.51277 = inst->prev;
        inst->next = D.51277;
        inst->opcode = 455;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.51278 = inst->sreg3;
        inst->sreg2 = D.51278;
        D.51279 = inst->sreg2;
        inst->sreg1 = D.51279;
        D.51195 = cfg->ip;
        inst->cil_code = D.51195;
        inst->data.op[1].p = "NullReferenceException";
        D.51196 = cfg->cbb;
        D.51197 = D.51196->last_ins;
        if (D.51197 != 0B) goto <D.51280>; else goto <D.51281>;
        <D.51280>:
        D.51196 = cfg->cbb;
        D.51197 = D.51196->last_ins;
        D.51197->next = inst;
        D.51196 = cfg->cbb;
        D.51197 = D.51196->last_ins;
        inst->prev = D.51197;
        D.51196 = cfg->cbb;
        D.51196->last_ins = inst;
        goto <D.51282>;
        <D.51281>:
        D.51196 = cfg->cbb;
        D.51196 = cfg->cbb;
        D.51196->last_ins = inst;
        D.51197 = D.51196->last_ins;
        D.51196->code = D.51197;
        <D.51282>:
      }
      goto <D.51283>;
      <D.51268>:
      <D.51283>:
      <D.51266>:
      D.51190 = cfg->mempool;
      inst = mono_mempool_alloc (D.51190, 48);
      inst->data.op[1].const_val = 0;
      D.51284 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.51284;
      inst->prev = 0B;
      D.51285 = inst->prev;
      inst->next = D.51285;
      inst->opcode = 396;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.51286 = inst->sreg3;
      inst->sreg2 = D.51286;
      D.51287 = inst->sreg2;
      inst->sreg1 = D.51287;
      D.51195 = cfg->ip;
      inst->cil_code = D.51195;
      inst->dreg = _length_reg;
      inst->sreg1 = array_reg;
      inst->data.op[0].const_val = 12;
      inst->type = 1;
      D.51288 = (unsigned char) __ins_flags;
      inst->flags = D.51288;
      D.51196 = cfg->cbb;
      D.51197 = D.51196->last_ins;
      if (D.51197 != 0B) goto <D.51289>; else goto <D.51290>;
      <D.51289>:
      D.51196 = cfg->cbb;
      D.51197 = D.51196->last_ins;
      D.51197->next = inst;
      D.51196 = cfg->cbb;
      D.51197 = D.51196->last_ins;
      inst->prev = D.51197;
      D.51196 = cfg->cbb;
      D.51196->last_ins = inst;
      goto <D.51291>;
      <D.51290>:
      D.51196 = cfg->cbb;
      D.51196 = cfg->cbb;
      D.51196->last_ins = inst;
      D.51197 = D.51196->last_ins;
      D.51196->code = D.51197;
      <D.51291>:
    }
    <D.51263>:
    {
      struct MonoInst * inst;

      D.51190 = cfg->mempool;
      inst = mono_mempool_alloc (D.51190, 48);
      inst->data.op[1].const_val = 0;
      D.51292 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.51292;
      inst->prev = 0B;
      D.51293 = inst->prev;
      inst->next = D.51293;
      inst->opcode = 322;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.51294 = inst->sreg3;
      inst->sreg2 = D.51294;
      D.51295 = inst->sreg2;
      inst->sreg1 = D.51295;
      D.51195 = cfg->ip;
      inst->cil_code = D.51195;
      inst->dreg = -1;
      inst->sreg1 = _length_reg;
      inst->sreg2 = index2_reg;
      D.51196 = cfg->cbb;
      D.51197 = D.51196->last_ins;
      if (D.51197 != 0B) goto <D.51296>; else goto <D.51297>;
      <D.51296>:
      D.51196 = cfg->cbb;
      D.51197 = D.51196->last_ins;
      D.51197->next = inst;
      D.51196 = cfg->cbb;
      D.51197 = D.51196->last_ins;
      inst->prev = D.51197;
      D.51196 = cfg->cbb;
      D.51196->last_ins = inst;
      goto <D.51298>;
      <D.51297>:
      D.51196 = cfg->cbb;
      D.51196 = cfg->cbb;
      D.51196->last_ins = inst;
      D.51197 = D.51196->last_ins;
      D.51196->code = D.51197;
      <D.51298>:
    }
    {
      struct MonoInst * inst;

      D.51190 = cfg->mempool;
      inst = mono_mempool_alloc (D.51190, 48);
      inst->data.op[1].const_val = 0;
      D.51299 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.51299;
      inst->prev = 0B;
      D.51300 = inst->prev;
      inst->next = D.51300;
      inst->opcode = 463;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.51301 = inst->sreg3;
      inst->sreg2 = D.51301;
      D.51302 = inst->sreg2;
      inst->sreg1 = D.51302;
      D.51195 = cfg->ip;
      inst->cil_code = D.51195;
      inst->data.op[1].p = "IndexOutOfRangeException";
      D.51196 = cfg->cbb;
      D.51197 = D.51196->last_ins;
      if (D.51197 != 0B) goto <D.51303>; else goto <D.51304>;
      <D.51303>:
      D.51196 = cfg->cbb;
      D.51197 = D.51196->last_ins;
      D.51197->next = inst;
      D.51196 = cfg->cbb;
      D.51197 = D.51196->last_ins;
      inst->prev = D.51197;
      D.51196 = cfg->cbb;
      D.51196->last_ins = inst;
      goto <D.51305>;
      <D.51304>:
      D.51196 = cfg->cbb;
      D.51196 = cfg->cbb;
      D.51196->last_ins = inst;
      D.51197 = D.51196->last_ins;
      D.51196->code = D.51197;
      <D.51305>:
    }
  }
  goto <D.51306>;
  <D.51231>:
  {
    struct MonoInst * inst;

    D.51190 = cfg->mempool;
    inst = mono_mempool_alloc (D.51190, 48);
    inst->data.op[1].const_val = 0;
    D.51307 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51307;
    inst->prev = 0B;
    D.51308 = inst->prev;
    inst->next = D.51308;
    inst->opcode = 1006;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51309 = inst->sreg3;
    inst->sreg2 = D.51309;
    D.51310 = inst->sreg2;
    inst->sreg1 = D.51310;
    D.51195 = cfg->ip;
    inst->cil_code = D.51195;
    inst->sreg1 = array_reg;
    inst->data.op[0].const_val = 12;
    inst->sreg2 = index2_reg;
    D.51196 = cfg->cbb;
    D.51197 = D.51196->last_ins;
    if (D.51197 != 0B) goto <D.51311>; else goto <D.51312>;
    <D.51311>:
    D.51196 = cfg->cbb;
    D.51197 = D.51196->last_ins;
    D.51197->next = inst;
    D.51196 = cfg->cbb;
    D.51197 = D.51196->last_ins;
    inst->prev = D.51197;
    D.51196 = cfg->cbb;
    D.51196->last_ins = inst;
    goto <D.51313>;
    <D.51312>:
    D.51196 = cfg->cbb;
    D.51196 = cfg->cbb;
    D.51196->last_ins = inst;
    D.51197 = D.51196->last_ins;
    D.51196->code = D.51197;
    <D.51313>:
    {
      struct MonoInst * inst;

      D.51190 = cfg->mempool;
      inst = mono_mempool_alloc (D.51190, 48);
      inst->data.op[1].const_val = 0;
      D.51314 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.51314;
      inst->prev = 0B;
      D.51315 = inst->prev;
      inst->next = D.51315;
      inst->opcode = 463;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.51316 = inst->sreg3;
      inst->sreg2 = D.51316;
      D.51317 = inst->sreg2;
      inst->sreg1 = D.51317;
      D.51195 = cfg->ip;
      inst->cil_code = D.51195;
      inst->data.op[1].p = "IndexOutOfRangeException";
      D.51196 = cfg->cbb;
      D.51197 = D.51196->last_ins;
      if (D.51197 != 0B) goto <D.51318>; else goto <D.51319>;
      <D.51318>:
      D.51196 = cfg->cbb;
      D.51197 = D.51196->last_ins;
      D.51197->next = inst;
      D.51196 = cfg->cbb;
      D.51197 = D.51196->last_ins;
      inst->prev = D.51197;
      D.51196 = cfg->cbb;
      D.51196->last_ins = inst;
      goto <D.51320>;
      <D.51319>:
      D.51196 = cfg->cbb;
      D.51196 = cfg->cbb;
      D.51196->last_ins = inst;
      D.51197 = D.51196->last_ins;
      D.51196->code = D.51197;
      <D.51320>:
    }
  }
  <D.51306>:
  goto <D.51321>;
  <D.51210>:
  {
    struct MonoInst * ins;

    D.51190 = cfg->mempool;
    ins = mono_mempool_alloc (D.51190, 48);
    ins->data.op[1].const_val = 0;
    D.51322 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.51322;
    ins->prev = 0B;
    D.51323 = ins->prev;
    ins->next = D.51323;
    ins->opcode = 788;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.51324 = ins->sreg3;
    ins->sreg2 = D.51324;
    D.51325 = ins->sreg2;
    ins->sreg1 = D.51325;
    D.51195 = cfg->ip;
    ins->cil_code = D.51195;
    ins->sreg1 = array_reg;
    ins->sreg2 = index2_reg;
    ins->data.op[1].const_val = 12;
    D.51326 = ins->flags;
    D.51327 = D.51326 | 32;
    ins->flags = D.51327;
    D.51196 = cfg->cbb;
    D.51197 = D.51196->last_ins;
    if (D.51197 != 0B) goto <D.51328>; else goto <D.51329>;
    <D.51328>:
    D.51196 = cfg->cbb;
    D.51197 = D.51196->last_ins;
    D.51197->next = ins;
    D.51196 = cfg->cbb;
    D.51197 = D.51196->last_ins;
    ins->prev = D.51197;
    D.51196 = cfg->cbb;
    D.51196->last_ins = ins;
    goto <D.51330>;
    <D.51329>:
    D.51196 = cfg->cbb;
    D.51196 = cfg->cbb;
    D.51196->last_ins = ins;
    D.51197 = D.51196->last_ins;
    D.51196->code = D.51197;
    <D.51330>:
    D.51331 = cfg->flags;
    D.51332 = D.51331 | 256;
    cfg->flags = D.51332;
    D.51196 = cfg->cbb;
    D.51196->has_array_access = 1;
  }
  <D.51321>:
  <D.51207>:
  <D.51203>:
  D.51335 = size + 4294967295;
  D.51336 = D.51335 <= 1;
  D.51337 = size == 4;
  D.51338 = D.51336 | D.51337;
  if (D.51338 != 0) goto <D.51333>; else goto <D.51339>;
  <D.51339>:
  if (size == 8) goto <D.51333>; else goto <D.51334>;
  <D.51333>:
  {
    static const int fast_log2[9] = {1, 0, 1, -1, 2, -1, -1, -1, 3};

    D.51190 = cfg->mempool;
    ins = mono_mempool_alloc (D.51190, 48);
    ins->data.op[1].const_val = 0;
    D.51340 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.51340;
    ins->prev = 0B;
    D.51341 = ins->prev;
    ins->next = D.51341;
    ins->opcode = 1037;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.51342 = ins->sreg3;
    ins->sreg2 = D.51342;
    D.51343 = ins->sreg2;
    ins->sreg1 = D.51343;
    D.51195 = cfg->ip;
    ins->cil_code = D.51195;
    D.51344 = alloc_ireg_mp (cfg);
    D.51345 = (int) D.51344;
    ins->dreg = D.51345;
    ins->sreg1 = array_reg;
    ins->sreg2 = index2_reg;
    ins->data.op[1].const_val = 16;
    D.51346 = fast_log2[size];
    ins->backend.shift_amount = D.51346;
    D.51196 = cfg->cbb;
    D.51197 = D.51196->last_ins;
    if (D.51197 != 0B) goto <D.51347>; else goto <D.51348>;
    <D.51347>:
    D.51196 = cfg->cbb;
    D.51197 = D.51196->last_ins;
    D.51197->next = ins;
    D.51196 = cfg->cbb;
    D.51197 = D.51196->last_ins;
    ins->prev = D.51197;
    D.51196 = cfg->cbb;
    D.51196->last_ins = ins;
    goto <D.51349>;
    <D.51348>:
    D.51196 = cfg->cbb;
    D.51196 = cfg->cbb;
    D.51196->last_ins = ins;
    D.51197 = D.51196->last_ins;
    D.51196->code = D.51197;
    <D.51349>:
    D.51350 = mono_class_get_element_class (klass);
    ins->klass = D.51350;
    ins->type = 5;
    D.51351 = ins;
    return D.51351;
  }
  <D.51334>:
  D.51352 = alloc_ireg_mp (cfg);
  add_reg = (int) D.51352;
  if (size == 4294967295) goto <D.51353>; else goto <D.51354>;
  <D.51353>:
  {
    struct MonoInst * rgctx_ins;

    D.51355 = cfg->generic_sharing_context;
    D.51356 = D.51355 == 0B;
    D.51357 = (long int) D.51356;
    D.51358 = __builtin_expect (D.51357, 0);
    if (D.51358 != 0) goto <D.51359>; else goto <D.51360>;
    <D.51359>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4718, "cfg->generic_sharing_context");
    <D.51360>:
    context_used = mini_class_check_context_used (cfg, klass);
    D.51361 = context_used == 0;
    D.51362 = (long int) D.51361;
    D.51363 = __builtin_expect (D.51362, 0);
    if (D.51363 != 0) goto <D.51364>; else goto <D.51365>;
    <D.51364>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4720, "context_used");
    <D.51365>:
    D.51366 = &klass->byval_arg;
    rgctx_ins = emit_get_gsharedvt_info (cfg, D.51366, 13);
    {
      struct MonoInst * inst;

      D.51190 = cfg->mempool;
      inst = mono_mempool_alloc (D.51190, 48);
      inst->data.op[1].const_val = 0;
      D.51367 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.51367;
      inst->prev = 0B;
      D.51368 = inst->prev;
      inst->next = D.51368;
      inst->opcode = 571;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.51369 = inst->sreg3;
      inst->sreg2 = D.51369;
      D.51370 = inst->sreg2;
      inst->sreg1 = D.51370;
      D.51195 = cfg->ip;
      inst->cil_code = D.51195;
      inst->dreg = mult_reg;
      inst->sreg1 = index2_reg;
      D.51371 = rgctx_ins->dreg;
      inst->sreg2 = D.51371;
      D.51196 = cfg->cbb;
      D.51197 = D.51196->last_ins;
      if (D.51197 != 0B) goto <D.51372>; else goto <D.51373>;
      <D.51372>:
      D.51196 = cfg->cbb;
      D.51197 = D.51196->last_ins;
      D.51197->next = inst;
      D.51196 = cfg->cbb;
      D.51197 = D.51196->last_ins;
      inst->prev = D.51197;
      D.51196 = cfg->cbb;
      D.51196->last_ins = inst;
      goto <D.51374>;
      <D.51373>:
      D.51196 = cfg->cbb;
      D.51196 = cfg->cbb;
      D.51196->last_ins = inst;
      D.51197 = D.51196->last_ins;
      D.51196->code = D.51197;
      <D.51374>:
    }
  }
  goto <D.51375>;
  <D.51354>:
  {
    struct MonoInst * inst;

    D.51190 = cfg->mempool;
    inst = mono_mempool_alloc (D.51190, 48);
    inst->data.op[1].const_val = 0;
    D.51376 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51376;
    inst->prev = 0B;
    D.51377 = inst->prev;
    inst->next = D.51377;
    inst->opcode = 435;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51378 = inst->sreg3;
    inst->sreg2 = D.51378;
    D.51379 = inst->sreg2;
    inst->sreg1 = D.51379;
    D.51195 = cfg->ip;
    inst->cil_code = D.51195;
    inst->dreg = mult_reg;
    inst->sreg1 = index2_reg;
    size.553 = (int) size;
    inst->data.op[1].const_val = size.553;
    D.51196 = cfg->cbb;
    D.51197 = D.51196->last_ins;
    if (D.51197 != 0B) goto <D.51381>; else goto <D.51382>;
    <D.51381>:
    D.51196 = cfg->cbb;
    D.51197 = D.51196->last_ins;
    D.51197->next = inst;
    D.51196 = cfg->cbb;
    D.51197 = D.51196->last_ins;
    inst->prev = D.51197;
    D.51196 = cfg->cbb;
    D.51196->last_ins = inst;
    goto <D.51383>;
    <D.51382>:
    D.51196 = cfg->cbb;
    D.51196 = cfg->cbb;
    D.51196->last_ins = inst;
    D.51197 = D.51196->last_ins;
    D.51196->code = D.51197;
    <D.51383>:
  }
  <D.51375>:
  {
    struct MonoInst * inst;

    D.51190 = cfg->mempool;
    inst = mono_mempool_alloc (D.51190, 48);
    inst->data.op[1].const_val = 0;
    D.51384 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51384;
    inst->prev = 0B;
    D.51385 = inst->prev;
    inst->next = D.51385;
    inst->opcode = 569;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51386 = inst->sreg3;
    inst->sreg2 = D.51386;
    D.51387 = inst->sreg2;
    inst->sreg1 = D.51387;
    D.51195 = cfg->ip;
    inst->cil_code = D.51195;
    inst->dreg = add_reg;
    inst->sreg1 = array_reg;
    inst->sreg2 = mult_reg;
    D.51196 = cfg->cbb;
    D.51197 = D.51196->last_ins;
    if (D.51197 != 0B) goto <D.51388>; else goto <D.51389>;
    <D.51388>:
    D.51196 = cfg->cbb;
    D.51197 = D.51196->last_ins;
    D.51197->next = inst;
    D.51196 = cfg->cbb;
    D.51197 = D.51196->last_ins;
    inst->prev = D.51197;
    D.51196 = cfg->cbb;
    D.51196->last_ins = inst;
    goto <D.51390>;
    <D.51389>:
    D.51196 = cfg->cbb;
    D.51196 = cfg->cbb;
    D.51196->last_ins = inst;
    D.51197 = D.51196->last_ins;
    D.51196->code = D.51197;
    <D.51390>:
  }
  D.51190 = cfg->mempool;
  ins = mono_mempool_alloc (D.51190, 48);
  ins->data.op[1].const_val = 0;
  D.51340 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.51340;
  ins->prev = 0B;
  D.51341 = ins->prev;
  ins->next = D.51341;
  ins->opcode = 629;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.51342 = ins->sreg3;
  ins->sreg2 = D.51342;
  D.51343 = ins->sreg2;
  ins->sreg1 = D.51343;
  D.51195 = cfg->ip;
  ins->cil_code = D.51195;
  ins->dreg = add_reg;
  ins->sreg1 = add_reg;
  ins->data.op[1].const_val = 16;
  D.51391 = mono_class_get_element_class (klass);
  ins->klass = D.51391;
  ins->type = 5;
  D.51196 = cfg->cbb;
  D.51197 = D.51196->last_ins;
  if (D.51197 != 0B) goto <D.51392>; else goto <D.51393>;
  <D.51392>:
  D.51196 = cfg->cbb;
  D.51197 = D.51196->last_ins;
  D.51197->next = ins;
  D.51196 = cfg->cbb;
  D.51197 = D.51196->last_ins;
  ins->prev = D.51197;
  D.51196 = cfg->cbb;
  D.51196->last_ins = ins;
  goto <D.51394>;
  <D.51393>:
  D.51196 = cfg->cbb;
  D.51196 = cfg->cbb;
  D.51196->last_ins = ins;
  D.51197 = D.51196->last_ins;
  D.51196->code = D.51197;
  <D.51394>:
  D.51351 = ins;
  return D.51351;
}


array_access_to_klass (int opcode)
{
  struct MonoClass * D.51396;

  switch (opcode) <default: <D.24827>, case 144: <D.24812>, case 145: <D.24808>, case 146: <D.24814>, case 147: <D.24809>, case 148: <D.24816>, case 149: <D.24818>, case 150: <D.24819>, case 151: <D.24810>, case 152: <D.24821>, case 153: <D.24823>, case 154: <D.24825>, case 155: <D.24811>, case 156: <D.24813>, case 157: <D.24815>, case 158: <D.24817>, case 159: <D.24820>, case 160: <D.24822>, case 161: <D.24824>, case 162: <D.24826>>
  <D.24808>:
  D.51396 = mono_defaults.byte_class;
  return D.51396;
  <D.24809>:
  D.51396 = mono_defaults.uint16_class;
  return D.51396;
  <D.24810>:
  <D.24811>:
  D.51396 = mono_defaults.int_class;
  return D.51396;
  <D.24812>:
  <D.24813>:
  D.51396 = mono_defaults.sbyte_class;
  return D.51396;
  <D.24814>:
  <D.24815>:
  D.51396 = mono_defaults.int16_class;
  return D.51396;
  <D.24816>:
  <D.24817>:
  D.51396 = mono_defaults.int32_class;
  return D.51396;
  <D.24818>:
  D.51396 = mono_defaults.uint32_class;
  return D.51396;
  <D.24819>:
  <D.24820>:
  D.51396 = mono_defaults.int64_class;
  return D.51396;
  <D.24821>:
  <D.24822>:
  D.51396 = mono_defaults.single_class;
  return D.51396;
  <D.24823>:
  <D.24824>:
  D.51396 = mono_defaults.double_class;
  return D.51396;
  <D.24825>:
  <D.24826>:
  D.51396 = mono_defaults.object_class;
  return D.51396;
  <D.24827>:
  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 1271);
  D.51396 = 0B;
  return D.51396;
}


emit_array_store (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * * sp, gboolean safety_checks)
{
  int D.51401;
  struct MonoInst * * D.51403;
  struct MonoInst * D.51404;
  short unsigned int D.51405;
  void * D.51407;
  struct MonoClass * obj_array.556;
  struct MonoClass * tmp_klass.554;
  struct MonoClass * D.51411;
  struct MonoClass * tmp_klass.555;
  _Bool D.51413;
  long int D.51414;
  long int D.51415;
  short int D.51418;
  _Bool D.51421;
  long int D.51422;
  long int D.51423;
  struct MonoInst * D.51426;
  unsigned char D.51427;
  struct MonoInst * D.51430;
  unsigned char D.51431;
  struct MonoInst * D.51434;
  struct MonoInst * D.51435;
  int D.51436;
  struct MonoInst * * D.51439;
  struct MonoInst * D.51440;
  struct MonoMemPool * D.51441;
  int D.51442;
  struct MonoInst * D.51443;
  struct MonoType * D.51444;
  unsigned int D.51445;
  short unsigned int D.51446;
  int D.51447;
  int D.51448;
  const unsigned char * D.51449;
  int D.51450;
  int D.51451;
  struct MonoClass * D.51452;
  struct MonoBasicBlock * D.51453;
  struct MonoInst * D.51454;
  short unsigned int D.51459;
  int D.51462;
  int D.51463;
  int D.51464;
  unsigned int D.51465;
  unsigned int D.51466;
  unsigned int D.51469;
  unsigned int D.51470;
  unsigned int D.51473;
  unsigned char D.51476;
  unsigned char D.51477;
  int D.51480;
  struct MonoInst * D.51481;
  int D.51482;
  int D.51483;
  int D.51487;
  struct MonoInst * D.51488;
  int D.51489;
  int D.51490;
  unsigned int D.51497;
  int D.51500;
  int D.51505;
  struct MonoInst * D.51506;
  int D.51507;
  int D.51508;
  int D.51512;
  struct MonoInst * D.51513;
  int D.51514;
  int D.51515;
  int D.51520;
  struct MonoInst * D.51521;
  int D.51522;
  int D.51523;
  unsigned char D.51524;
  int D.51529;
  int D.51534;
  struct MonoInst * D.51535;
  int D.51536;
  int D.51537;
  int D.51541;
  struct MonoInst * D.51542;
  int D.51543;
  int D.51544;
  int D.51549;
  struct MonoInst * D.51550;
  int D.51551;
  int D.51552;
  unsigned char D.51553;
  int D.51557;
  struct MonoInst * D.51558;
  int D.51559;
  int D.51560;
  int D.51564;
  struct MonoInst * D.51565;
  int D.51566;
  int D.51567;
  int D.51572;
  struct MonoInst * D.51573;
  int D.51574;
  int D.51575;
  int D.51579;
  struct MonoInst * D.51580;
  int D.51581;
  int D.51582;
  int D.51587;
  struct MonoInst * D.51588;
  int D.51589;
  int D.51590;
  unsigned char D.51591;
  unsigned char D.51592;
  unsigned int D.51596;
  unsigned int D.51597;
  unsigned int D.51598;
  short unsigned int D.51599;
  struct MonoClass * D.51600;
  unsigned int D.51605;
  short unsigned int D.51606;
  int D.51607;
  struct MonoClass * D.51608;
  int D.51612;

  if (safety_checks != 0) goto <D.51400>; else goto <D.51398>;
  <D.51400>:
  D.51401 = generic_class_is_reference_type (cfg, klass);
  if (D.51401 != 0) goto <D.51402>; else goto <D.51398>;
  <D.51402>:
  D.51403 = sp + 8;
  D.51404 = *D.51403;
  D.51405 = D.51404->opcode;
  if (D.51405 != 362) goto <D.51399>; else goto <D.51406>;
  <D.51406>:
  D.51403 = sp + 8;
  D.51404 = *D.51403;
  D.51407 = D.51404->data.op[0].p;
  if (D.51407 != 0B) goto <D.51399>; else goto <D.51398>;
  <D.51399>:
  {
    struct MonoClass * obj_array;
    struct MonoMethod * helper;
    struct MonoInst * iargs[3];

    try
      {
        {
          static struct MonoClass * tmp_klass;

          {
            tmp_klass.554 = tmp_klass;
            if (tmp_klass.554 == 0B) goto <D.51409>; else goto <D.51410>;
            <D.51409>:
            D.51411 = mono_defaults.object_class;
            tmp_klass.555 = mono_array_class_get (D.51411, 1);
            tmp_klass = tmp_klass.555;
            tmp_klass.554 = tmp_klass;
            D.51413 = tmp_klass.554 == 0B;
            D.51414 = (long int) D.51413;
            D.51415 = __builtin_expect (D.51414, 0);
            if (D.51415 != 0) goto <D.51416>; else goto <D.51417>;
            <D.51416>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4919, "tmp_klass");
            <D.51417>:
            <D.51410>:
          }
          obj_array.556 = tmp_klass;
        }
        obj_array = obj_array.556;
        helper = mono_marshal_get_virtual_stelemref (obj_array);
        D.51418 = helper->slot;
        if (D.51418 == 0) goto <D.51419>; else goto <D.51420>;
        <D.51419>:
        mono_class_setup_vtable (obj_array);
        <D.51420>:
        D.51418 = helper->slot;
        D.51421 = D.51418 == 0;
        D.51422 = (long int) D.51421;
        D.51423 = __builtin_expect (D.51422, 0);
        if (D.51423 != 0) goto <D.51424>; else goto <D.51425>;
        <D.51424>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4925, "helper->slot");
        <D.51425>:
        D.51426 = *sp;
        D.51427 = D.51426->type;
        if (D.51427 != 6) goto <D.51428>; else goto <D.51429>;
        <D.51428>:
        D.51430 = 0B;
        return D.51430;
        <D.51429>:
        D.51403 = sp + 8;
        D.51404 = *D.51403;
        D.51431 = D.51404->type;
        if (D.51431 != 6) goto <D.51432>; else goto <D.51433>;
        <D.51432>:
        D.51430 = 0B;
        return D.51430;
        <D.51433>:
        D.51434 = MEM[(struct MonoInst * *)sp + 8B];
        iargs[2] = D.51434;
        D.51435 = MEM[(struct MonoInst * *)sp + 4B];
        iargs[1] = D.51435;
        D.51426 = *sp;
        iargs[0] = D.51426;
        D.51426 = *sp;
        D.51430 = mono_emit_method_call (cfg, helper, &iargs, D.51426);
        return D.51430;
      }
    finally
      {
        iargs = {CLOBBER};
      }
  }
  <D.51398>:
  {
    struct MonoInst * ins;

    D.51436 = mini_is_gsharedvt_variable_klass (cfg, klass);
    if (D.51436 != 0) goto <D.51437>; else goto <D.51438>;
    <D.51437>:
    {
      struct MonoInst * addr;

      D.51439 = sp + 4;
      D.51440 = *D.51439;
      D.51426 = *sp;
      addr = mini_emit_ldelema_1_ins (cfg, klass, D.51426, D.51440, 1);
      D.51441 = cfg->mempool;
      ins = mono_mempool_alloc (D.51441, 48);
      ins->data.op[1].const_val = 0;
      D.51442 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.51442;
      ins->prev = 0B;
      D.51443 = ins->prev;
      ins->next = D.51443;
      D.51444 = &klass->byval_arg;
      D.51445 = mono_type_to_store_membase (cfg, D.51444);
      D.51446 = (short unsigned int) D.51445;
      ins->opcode = D.51446;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.51447 = ins->sreg3;
      ins->sreg2 = D.51447;
      D.51448 = ins->sreg2;
      ins->sreg1 = D.51448;
      D.51449 = cfg->ip;
      ins->cil_code = D.51449;
      D.51403 = sp + 8;
      D.51404 = *D.51403;
      D.51450 = D.51404->dreg;
      ins->sreg1 = D.51450;
      D.51451 = addr->dreg;
      ins->dreg = D.51451;
      ins->data.op[0].const_val = 0;
      D.51444 = &klass->byval_arg;
      type_to_eval_stack_type (cfg, D.51444, ins);
      D.51444 = &klass->byval_arg;
      D.51452 = mono_class_from_mono_type (D.51444);
      ins->klass = D.51452;
      D.51453 = cfg->cbb;
      D.51454 = D.51453->last_ins;
      if (D.51454 != 0B) goto <D.51455>; else goto <D.51456>;
      <D.51455>:
      D.51453 = cfg->cbb;
      D.51454 = D.51453->last_ins;
      D.51454->next = ins;
      D.51453 = cfg->cbb;
      D.51454 = D.51453->last_ins;
      ins->prev = D.51454;
      D.51453 = cfg->cbb;
      D.51453->last_ins = ins;
      goto <D.51457>;
      <D.51456>:
      D.51453 = cfg->cbb;
      D.51453 = cfg->cbb;
      D.51453->last_ins = ins;
      D.51454 = D.51453->last_ins;
      D.51453->code = D.51454;
      <D.51457>:
      ins->opcode = 390;
    }
    goto <D.51458>;
    <D.51438>:
    D.51439 = sp + 4;
    D.51440 = *D.51439;
    D.51459 = D.51440->opcode;
    if (D.51459 == 362) goto <D.51460>; else goto <D.51461>;
    <D.51460>:
    {
      int array_reg;
      int index_reg;
      int offset;

      D.51426 = *sp;
      array_reg = D.51426->dreg;
      D.51439 = sp + 4;
      D.51440 = *D.51439;
      index_reg = D.51440->dreg;
      D.51462 = mono_class_array_element_size (klass);
      D.51439 = sp + 4;
      D.51440 = *D.51439;
      D.51463 = D.51440->data.op[0].const_val;
      D.51464 = D.51462 * D.51463;
      D.51465 = (unsigned int) D.51464;
      D.51466 = D.51465 + 16;
      offset = (int) D.51466;
      if (safety_checks != 0) goto <D.51467>; else goto <D.51468>;
      <D.51467>:
      D.51469 = cfg->opt;
      D.51470 = D.51469 & 134217728;
      if (D.51470 == 0) goto <D.51471>; else goto <D.51472>;
      <D.51471>:
      D.51469 = cfg->opt;
      D.51473 = D.51469 & 262144;
      if (D.51473 == 0) goto <D.51474>; else goto <D.51475>;
      <D.51474>:
      D.51476 = BIT_FIELD_REF <*cfg, 8, 3424>;
      D.51477 = D.51476 & 64;
      if (D.51477 != 0) goto <D.51478>; else goto <D.51479>;
      <D.51478>:
      {
        struct MonoInst * inst;

        D.51441 = cfg->mempool;
        inst = mono_mempool_alloc (D.51441, 48);
        inst->data.op[1].const_val = 0;
        D.51480 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.51480;
        inst->prev = 0B;
        D.51481 = inst->prev;
        inst->next = D.51481;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.51482 = inst->sreg3;
        inst->sreg2 = D.51482;
        D.51483 = inst->sreg2;
        inst->sreg1 = D.51483;
        D.51449 = cfg->ip;
        inst->cil_code = D.51449;
        inst->dreg = -1;
        inst->sreg1 = array_reg;
        inst->data.op[1].const_val = 0;
        D.51453 = cfg->cbb;
        D.51454 = D.51453->last_ins;
        if (D.51454 != 0B) goto <D.51484>; else goto <D.51485>;
        <D.51484>:
        D.51453 = cfg->cbb;
        D.51454 = D.51453->last_ins;
        D.51454->next = inst;
        D.51453 = cfg->cbb;
        D.51454 = D.51453->last_ins;
        inst->prev = D.51454;
        D.51453 = cfg->cbb;
        D.51453->last_ins = inst;
        goto <D.51486>;
        <D.51485>:
        D.51453 = cfg->cbb;
        D.51453 = cfg->cbb;
        D.51453->last_ins = inst;
        D.51454 = D.51453->last_ins;
        D.51453->code = D.51454;
        <D.51486>:
      }
      {
        struct MonoInst * inst;

        D.51441 = cfg->mempool;
        inst = mono_mempool_alloc (D.51441, 48);
        inst->data.op[1].const_val = 0;
        D.51487 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.51487;
        inst->prev = 0B;
        D.51488 = inst->prev;
        inst->next = D.51488;
        inst->opcode = 455;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.51489 = inst->sreg3;
        inst->sreg2 = D.51489;
        D.51490 = inst->sreg2;
        inst->sreg1 = D.51490;
        D.51449 = cfg->ip;
        inst->cil_code = D.51449;
        inst->data.op[1].p = "NullReferenceException";
        D.51453 = cfg->cbb;
        D.51454 = D.51453->last_ins;
        if (D.51454 != 0B) goto <D.51491>; else goto <D.51492>;
        <D.51491>:
        D.51453 = cfg->cbb;
        D.51454 = D.51453->last_ins;
        D.51454->next = inst;
        D.51453 = cfg->cbb;
        D.51454 = D.51453->last_ins;
        inst->prev = D.51454;
        D.51453 = cfg->cbb;
        D.51453->last_ins = inst;
        goto <D.51493>;
        <D.51492>:
        D.51453 = cfg->cbb;
        D.51453 = cfg->cbb;
        D.51453->last_ins = inst;
        D.51454 = D.51453->last_ins;
        D.51453->code = D.51454;
        <D.51493>:
      }
      goto <D.51494>;
      <D.51479>:
      <D.51494>:
      if (0 != 0) goto <D.51495>; else goto <D.51496>;
      <D.51495>:
      {
        int _length_reg;

        D.51497 = alloc_ireg (cfg);
        _length_reg = (int) D.51497;
        if (1 != 0) goto <D.51498>; else goto <D.51499>;
        <D.51498>:
        {
          struct MonoInst * inst;
          int __ins_flags;

          __ins_flags = 32;
          D.51500 = __ins_flags & 32;
          if (D.51500 != 0) goto <D.51501>; else goto <D.51502>;
          <D.51501>:
          D.51476 = BIT_FIELD_REF <*cfg, 8, 3424>;
          D.51477 = D.51476 & 64;
          if (D.51477 != 0) goto <D.51503>; else goto <D.51504>;
          <D.51503>:
          {
            struct MonoInst * inst;

            D.51441 = cfg->mempool;
            inst = mono_mempool_alloc (D.51441, 48);
            inst->data.op[1].const_val = 0;
            D.51505 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.51505;
            inst->prev = 0B;
            D.51506 = inst->prev;
            inst->next = D.51506;
            inst->opcode = 323;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.51507 = inst->sreg3;
            inst->sreg2 = D.51507;
            D.51508 = inst->sreg2;
            inst->sreg1 = D.51508;
            D.51449 = cfg->ip;
            inst->cil_code = D.51449;
            inst->dreg = -1;
            inst->sreg1 = array_reg;
            inst->data.op[1].const_val = 0;
            D.51453 = cfg->cbb;
            D.51454 = D.51453->last_ins;
            if (D.51454 != 0B) goto <D.51509>; else goto <D.51510>;
            <D.51509>:
            D.51453 = cfg->cbb;
            D.51454 = D.51453->last_ins;
            D.51454->next = inst;
            D.51453 = cfg->cbb;
            D.51454 = D.51453->last_ins;
            inst->prev = D.51454;
            D.51453 = cfg->cbb;
            D.51453->last_ins = inst;
            goto <D.51511>;
            <D.51510>:
            D.51453 = cfg->cbb;
            D.51453 = cfg->cbb;
            D.51453->last_ins = inst;
            D.51454 = D.51453->last_ins;
            D.51453->code = D.51454;
            <D.51511>:
          }
          {
            struct MonoInst * inst;

            D.51441 = cfg->mempool;
            inst = mono_mempool_alloc (D.51441, 48);
            inst->data.op[1].const_val = 0;
            D.51512 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.51512;
            inst->prev = 0B;
            D.51513 = inst->prev;
            inst->next = D.51513;
            inst->opcode = 455;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.51514 = inst->sreg3;
            inst->sreg2 = D.51514;
            D.51515 = inst->sreg2;
            inst->sreg1 = D.51515;
            D.51449 = cfg->ip;
            inst->cil_code = D.51449;
            inst->data.op[1].p = "NullReferenceException";
            D.51453 = cfg->cbb;
            D.51454 = D.51453->last_ins;
            if (D.51454 != 0B) goto <D.51516>; else goto <D.51517>;
            <D.51516>:
            D.51453 = cfg->cbb;
            D.51454 = D.51453->last_ins;
            D.51454->next = inst;
            D.51453 = cfg->cbb;
            D.51454 = D.51453->last_ins;
            inst->prev = D.51454;
            D.51453 = cfg->cbb;
            D.51453->last_ins = inst;
            goto <D.51518>;
            <D.51517>:
            D.51453 = cfg->cbb;
            D.51453 = cfg->cbb;
            D.51453->last_ins = inst;
            D.51454 = D.51453->last_ins;
            D.51453->code = D.51454;
            <D.51518>:
          }
          goto <D.51519>;
          <D.51504>:
          <D.51519>:
          <D.51502>:
          D.51441 = cfg->mempool;
          inst = mono_mempool_alloc (D.51441, 48);
          inst->data.op[1].const_val = 0;
          D.51520 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.51520;
          inst->prev = 0B;
          D.51521 = inst->prev;
          inst->next = D.51521;
          inst->opcode = 396;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.51522 = inst->sreg3;
          inst->sreg2 = D.51522;
          D.51523 = inst->sreg2;
          inst->sreg1 = D.51523;
          D.51449 = cfg->ip;
          inst->cil_code = D.51449;
          inst->dreg = _length_reg;
          inst->sreg1 = array_reg;
          inst->data.op[0].const_val = 12;
          inst->type = 1;
          D.51524 = (unsigned char) __ins_flags;
          inst->flags = D.51524;
          D.51453 = cfg->cbb;
          D.51454 = D.51453->last_ins;
          if (D.51454 != 0B) goto <D.51525>; else goto <D.51526>;
          <D.51525>:
          D.51453 = cfg->cbb;
          D.51454 = D.51453->last_ins;
          D.51454->next = inst;
          D.51453 = cfg->cbb;
          D.51454 = D.51453->last_ins;
          inst->prev = D.51454;
          D.51453 = cfg->cbb;
          D.51453->last_ins = inst;
          goto <D.51527>;
          <D.51526>:
          D.51453 = cfg->cbb;
          D.51453 = cfg->cbb;
          D.51453->last_ins = inst;
          D.51454 = D.51453->last_ins;
          D.51453->code = D.51454;
          <D.51527>:
        }
        goto <D.51528>;
        <D.51499>:
        {
          struct MonoInst * inst;
          int __ins_flags;

          __ins_flags = 64;
          D.51529 = __ins_flags & 32;
          if (D.51529 != 0) goto <D.51530>; else goto <D.51531>;
          <D.51530>:
          D.51476 = BIT_FIELD_REF <*cfg, 8, 3424>;
          D.51477 = D.51476 & 64;
          if (D.51477 != 0) goto <D.51532>; else goto <D.51533>;
          <D.51532>:
          {
            struct MonoInst * inst;

            D.51441 = cfg->mempool;
            inst = mono_mempool_alloc (D.51441, 48);
            inst->data.op[1].const_val = 0;
            D.51534 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.51534;
            inst->prev = 0B;
            D.51535 = inst->prev;
            inst->next = D.51535;
            inst->opcode = 323;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.51536 = inst->sreg3;
            inst->sreg2 = D.51536;
            D.51537 = inst->sreg2;
            inst->sreg1 = D.51537;
            D.51449 = cfg->ip;
            inst->cil_code = D.51449;
            inst->dreg = -1;
            inst->sreg1 = array_reg;
            inst->data.op[1].const_val = 0;
            D.51453 = cfg->cbb;
            D.51454 = D.51453->last_ins;
            if (D.51454 != 0B) goto <D.51538>; else goto <D.51539>;
            <D.51538>:
            D.51453 = cfg->cbb;
            D.51454 = D.51453->last_ins;
            D.51454->next = inst;
            D.51453 = cfg->cbb;
            D.51454 = D.51453->last_ins;
            inst->prev = D.51454;
            D.51453 = cfg->cbb;
            D.51453->last_ins = inst;
            goto <D.51540>;
            <D.51539>:
            D.51453 = cfg->cbb;
            D.51453 = cfg->cbb;
            D.51453->last_ins = inst;
            D.51454 = D.51453->last_ins;
            D.51453->code = D.51454;
            <D.51540>:
          }
          {
            struct MonoInst * inst;

            D.51441 = cfg->mempool;
            inst = mono_mempool_alloc (D.51441, 48);
            inst->data.op[1].const_val = 0;
            D.51541 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.51541;
            inst->prev = 0B;
            D.51542 = inst->prev;
            inst->next = D.51542;
            inst->opcode = 455;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.51543 = inst->sreg3;
            inst->sreg2 = D.51543;
            D.51544 = inst->sreg2;
            inst->sreg1 = D.51544;
            D.51449 = cfg->ip;
            inst->cil_code = D.51449;
            inst->data.op[1].p = "NullReferenceException";
            D.51453 = cfg->cbb;
            D.51454 = D.51453->last_ins;
            if (D.51454 != 0B) goto <D.51545>; else goto <D.51546>;
            <D.51545>:
            D.51453 = cfg->cbb;
            D.51454 = D.51453->last_ins;
            D.51454->next = inst;
            D.51453 = cfg->cbb;
            D.51454 = D.51453->last_ins;
            inst->prev = D.51454;
            D.51453 = cfg->cbb;
            D.51453->last_ins = inst;
            goto <D.51547>;
            <D.51546>:
            D.51453 = cfg->cbb;
            D.51453 = cfg->cbb;
            D.51453->last_ins = inst;
            D.51454 = D.51453->last_ins;
            D.51453->code = D.51454;
            <D.51547>:
          }
          goto <D.51548>;
          <D.51533>:
          <D.51548>:
          <D.51531>:
          D.51441 = cfg->mempool;
          inst = mono_mempool_alloc (D.51441, 48);
          inst->data.op[1].const_val = 0;
          D.51549 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.51549;
          inst->prev = 0B;
          D.51550 = inst->prev;
          inst->next = D.51550;
          inst->opcode = 396;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.51551 = inst->sreg3;
          inst->sreg2 = D.51551;
          D.51552 = inst->sreg2;
          inst->sreg1 = D.51552;
          D.51449 = cfg->ip;
          inst->cil_code = D.51449;
          inst->dreg = _length_reg;
          inst->sreg1 = array_reg;
          inst->data.op[0].const_val = 12;
          inst->type = 1;
          D.51553 = (unsigned char) __ins_flags;
          inst->flags = D.51553;
          D.51453 = cfg->cbb;
          D.51454 = D.51453->last_ins;
          if (D.51454 != 0B) goto <D.51554>; else goto <D.51555>;
          <D.51554>:
          D.51453 = cfg->cbb;
          D.51454 = D.51453->last_ins;
          D.51454->next = inst;
          D.51453 = cfg->cbb;
          D.51454 = D.51453->last_ins;
          inst->prev = D.51454;
          D.51453 = cfg->cbb;
          D.51453->last_ins = inst;
          goto <D.51556>;
          <D.51555>:
          D.51453 = cfg->cbb;
          D.51453 = cfg->cbb;
          D.51453->last_ins = inst;
          D.51454 = D.51453->last_ins;
          D.51453->code = D.51454;
          <D.51556>:
        }
        <D.51528>:
        {
          struct MonoInst * inst;

          D.51441 = cfg->mempool;
          inst = mono_mempool_alloc (D.51441, 48);
          inst->data.op[1].const_val = 0;
          D.51557 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.51557;
          inst->prev = 0B;
          D.51558 = inst->prev;
          inst->next = D.51558;
          inst->opcode = 322;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.51559 = inst->sreg3;
          inst->sreg2 = D.51559;
          D.51560 = inst->sreg2;
          inst->sreg1 = D.51560;
          D.51449 = cfg->ip;
          inst->cil_code = D.51449;
          inst->dreg = -1;
          inst->sreg1 = _length_reg;
          inst->sreg2 = index_reg;
          D.51453 = cfg->cbb;
          D.51454 = D.51453->last_ins;
          if (D.51454 != 0B) goto <D.51561>; else goto <D.51562>;
          <D.51561>:
          D.51453 = cfg->cbb;
          D.51454 = D.51453->last_ins;
          D.51454->next = inst;
          D.51453 = cfg->cbb;
          D.51454 = D.51453->last_ins;
          inst->prev = D.51454;
          D.51453 = cfg->cbb;
          D.51453->last_ins = inst;
          goto <D.51563>;
          <D.51562>:
          D.51453 = cfg->cbb;
          D.51453 = cfg->cbb;
          D.51453->last_ins = inst;
          D.51454 = D.51453->last_ins;
          D.51453->code = D.51454;
          <D.51563>:
        }
        {
          struct MonoInst * inst;

          D.51441 = cfg->mempool;
          inst = mono_mempool_alloc (D.51441, 48);
          inst->data.op[1].const_val = 0;
          D.51564 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.51564;
          inst->prev = 0B;
          D.51565 = inst->prev;
          inst->next = D.51565;
          inst->opcode = 463;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.51566 = inst->sreg3;
          inst->sreg2 = D.51566;
          D.51567 = inst->sreg2;
          inst->sreg1 = D.51567;
          D.51449 = cfg->ip;
          inst->cil_code = D.51449;
          inst->data.op[1].p = "IndexOutOfRangeException";
          D.51453 = cfg->cbb;
          D.51454 = D.51453->last_ins;
          if (D.51454 != 0B) goto <D.51568>; else goto <D.51569>;
          <D.51568>:
          D.51453 = cfg->cbb;
          D.51454 = D.51453->last_ins;
          D.51454->next = inst;
          D.51453 = cfg->cbb;
          D.51454 = D.51453->last_ins;
          inst->prev = D.51454;
          D.51453 = cfg->cbb;
          D.51453->last_ins = inst;
          goto <D.51570>;
          <D.51569>:
          D.51453 = cfg->cbb;
          D.51453 = cfg->cbb;
          D.51453->last_ins = inst;
          D.51454 = D.51453->last_ins;
          D.51453->code = D.51454;
          <D.51570>:
        }
      }
      goto <D.51571>;
      <D.51496>:
      {
        struct MonoInst * inst;

        D.51441 = cfg->mempool;
        inst = mono_mempool_alloc (D.51441, 48);
        inst->data.op[1].const_val = 0;
        D.51572 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.51572;
        inst->prev = 0B;
        D.51573 = inst->prev;
        inst->next = D.51573;
        inst->opcode = 1006;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.51574 = inst->sreg3;
        inst->sreg2 = D.51574;
        D.51575 = inst->sreg2;
        inst->sreg1 = D.51575;
        D.51449 = cfg->ip;
        inst->cil_code = D.51449;
        inst->sreg1 = array_reg;
        inst->data.op[0].const_val = 12;
        inst->sreg2 = index_reg;
        D.51453 = cfg->cbb;
        D.51454 = D.51453->last_ins;
        if (D.51454 != 0B) goto <D.51576>; else goto <D.51577>;
        <D.51576>:
        D.51453 = cfg->cbb;
        D.51454 = D.51453->last_ins;
        D.51454->next = inst;
        D.51453 = cfg->cbb;
        D.51454 = D.51453->last_ins;
        inst->prev = D.51454;
        D.51453 = cfg->cbb;
        D.51453->last_ins = inst;
        goto <D.51578>;
        <D.51577>:
        D.51453 = cfg->cbb;
        D.51453 = cfg->cbb;
        D.51453->last_ins = inst;
        D.51454 = D.51453->last_ins;
        D.51453->code = D.51454;
        <D.51578>:
        {
          struct MonoInst * inst;

          D.51441 = cfg->mempool;
          inst = mono_mempool_alloc (D.51441, 48);
          inst->data.op[1].const_val = 0;
          D.51579 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.51579;
          inst->prev = 0B;
          D.51580 = inst->prev;
          inst->next = D.51580;
          inst->opcode = 463;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.51581 = inst->sreg3;
          inst->sreg2 = D.51581;
          D.51582 = inst->sreg2;
          inst->sreg1 = D.51582;
          D.51449 = cfg->ip;
          inst->cil_code = D.51449;
          inst->data.op[1].p = "IndexOutOfRangeException";
          D.51453 = cfg->cbb;
          D.51454 = D.51453->last_ins;
          if (D.51454 != 0B) goto <D.51583>; else goto <D.51584>;
          <D.51583>:
          D.51453 = cfg->cbb;
          D.51454 = D.51453->last_ins;
          D.51454->next = inst;
          D.51453 = cfg->cbb;
          D.51454 = D.51453->last_ins;
          inst->prev = D.51454;
          D.51453 = cfg->cbb;
          D.51453->last_ins = inst;
          goto <D.51585>;
          <D.51584>:
          D.51453 = cfg->cbb;
          D.51453 = cfg->cbb;
          D.51453->last_ins = inst;
          D.51454 = D.51453->last_ins;
          D.51453->code = D.51454;
          <D.51585>:
        }
      }
      <D.51571>:
      goto <D.51586>;
      <D.51475>:
      {
        struct MonoInst * ins;

        D.51441 = cfg->mempool;
        ins = mono_mempool_alloc (D.51441, 48);
        ins->data.op[1].const_val = 0;
        D.51587 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.51587;
        ins->prev = 0B;
        D.51588 = ins->prev;
        ins->next = D.51588;
        ins->opcode = 788;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.51589 = ins->sreg3;
        ins->sreg2 = D.51589;
        D.51590 = ins->sreg2;
        ins->sreg1 = D.51590;
        D.51449 = cfg->ip;
        ins->cil_code = D.51449;
        ins->sreg1 = array_reg;
        ins->sreg2 = index_reg;
        ins->data.op[1].const_val = 12;
        D.51591 = ins->flags;
        D.51592 = D.51591 | 32;
        ins->flags = D.51592;
        D.51453 = cfg->cbb;
        D.51454 = D.51453->last_ins;
        if (D.51454 != 0B) goto <D.51593>; else goto <D.51594>;
        <D.51593>:
        D.51453 = cfg->cbb;
        D.51454 = D.51453->last_ins;
        D.51454->next = ins;
        D.51453 = cfg->cbb;
        D.51454 = D.51453->last_ins;
        ins->prev = D.51454;
        D.51453 = cfg->cbb;
        D.51453->last_ins = ins;
        goto <D.51595>;
        <D.51594>:
        D.51453 = cfg->cbb;
        D.51453 = cfg->cbb;
        D.51453->last_ins = ins;
        D.51454 = D.51453->last_ins;
        D.51453->code = D.51454;
        <D.51595>:
        D.51596 = cfg->flags;
        D.51597 = D.51596 | 256;
        cfg->flags = D.51597;
        D.51453 = cfg->cbb;
        D.51453->has_array_access = 1;
      }
      <D.51586>:
      <D.51472>:
      <D.51468>:
      D.51441 = cfg->mempool;
      ins = mono_mempool_alloc (D.51441, 48);
      ins->data.op[1].const_val = 0;
      D.51442 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.51442;
      ins->prev = 0B;
      D.51443 = ins->prev;
      ins->next = D.51443;
      D.51444 = &klass->byval_arg;
      D.51598 = mono_type_to_store_membase (cfg, D.51444);
      D.51599 = (short unsigned int) D.51598;
      ins->opcode = D.51599;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.51447 = ins->sreg3;
      ins->sreg2 = D.51447;
      D.51448 = ins->sreg2;
      ins->sreg1 = D.51448;
      D.51449 = cfg->ip;
      ins->cil_code = D.51449;
      D.51403 = sp + 8;
      D.51404 = *D.51403;
      D.51450 = D.51404->dreg;
      ins->sreg1 = D.51450;
      ins->dreg = array_reg;
      ins->data.op[0].const_val = offset;
      D.51444 = &klass->byval_arg;
      type_to_eval_stack_type (cfg, D.51444, ins);
      D.51444 = &klass->byval_arg;
      D.51600 = mono_class_from_mono_type (D.51444);
      ins->klass = D.51600;
      D.51453 = cfg->cbb;
      D.51454 = D.51453->last_ins;
      if (D.51454 != 0B) goto <D.51601>; else goto <D.51602>;
      <D.51601>:
      D.51453 = cfg->cbb;
      D.51454 = D.51453->last_ins;
      D.51454->next = ins;
      D.51453 = cfg->cbb;
      D.51454 = D.51453->last_ins;
      ins->prev = D.51454;
      D.51453 = cfg->cbb;
      D.51453->last_ins = ins;
      goto <D.51603>;
      <D.51602>:
      D.51453 = cfg->cbb;
      D.51453 = cfg->cbb;
      D.51453->last_ins = ins;
      D.51454 = D.51453->last_ins;
      D.51453->code = D.51454;
      <D.51603>:
    }
    goto <D.51604>;
    <D.51461>:
    {
      struct MonoInst * addr;

      D.51439 = sp + 4;
      D.51440 = *D.51439;
      D.51426 = *sp;
      addr = mini_emit_ldelema_1_ins (cfg, klass, D.51426, D.51440, safety_checks);
      D.51441 = cfg->mempool;
      ins = mono_mempool_alloc (D.51441, 48);
      ins->data.op[1].const_val = 0;
      D.51442 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.51442;
      ins->prev = 0B;
      D.51443 = ins->prev;
      ins->next = D.51443;
      D.51444 = &klass->byval_arg;
      D.51605 = mono_type_to_store_membase (cfg, D.51444);
      D.51606 = (short unsigned int) D.51605;
      ins->opcode = D.51606;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.51447 = ins->sreg3;
      ins->sreg2 = D.51447;
      D.51448 = ins->sreg2;
      ins->sreg1 = D.51448;
      D.51449 = cfg->ip;
      ins->cil_code = D.51449;
      D.51403 = sp + 8;
      D.51404 = *D.51403;
      D.51450 = D.51404->dreg;
      ins->sreg1 = D.51450;
      D.51607 = addr->dreg;
      ins->dreg = D.51607;
      ins->data.op[0].const_val = 0;
      D.51444 = &klass->byval_arg;
      type_to_eval_stack_type (cfg, D.51444, ins);
      D.51444 = &klass->byval_arg;
      D.51608 = mono_class_from_mono_type (D.51444);
      ins->klass = D.51608;
      D.51453 = cfg->cbb;
      D.51454 = D.51453->last_ins;
      if (D.51454 != 0B) goto <D.51609>; else goto <D.51610>;
      <D.51609>:
      D.51453 = cfg->cbb;
      D.51454 = D.51453->last_ins;
      D.51454->next = ins;
      D.51453 = cfg->cbb;
      D.51454 = D.51453->last_ins;
      ins->prev = D.51454;
      D.51453 = cfg->cbb;
      D.51453->last_ins = ins;
      goto <D.51611>;
      <D.51610>:
      D.51453 = cfg->cbb;
      D.51453 = cfg->cbb;
      D.51453->last_ins = ins;
      D.51454 = D.51453->last_ins;
      D.51453->code = D.51454;
      <D.51611>:
      D.51612 = generic_class_is_reference_type (cfg, klass);
      if (D.51612 != 0) goto <D.51613>; else goto <D.51614>;
      <D.51613>:
      D.51403 = sp + 8;
      D.51404 = *D.51403;
      emit_write_barrier (cfg, addr, D.51404);
      <D.51614>:
    }
    <D.51604>:
    <D.51458>:
    D.51430 = ins;
    return D.51430;
  }
}


mini_emit_class_check (struct MonoCompile * cfg, int klass_reg, struct MonoClass * klass)
{
  mini_emit_class_check_inst (cfg, klass_reg, klass, 0B);
}


emit_get_rgctx_field (struct MonoCompile * cfg, int context_used, struct MonoClassField * field, MonoRgctxInfoType rgctx_type)
{
  int D.51617;
  struct MonoMethod * D.51618;
  struct MonoMemPool * D.51619;
  struct MonoInst * D.51620;
  struct MonoJumpInfoRgctxEntry * entry;
  struct MonoInst * rgctx;

  D.51617 = context_used & 2;
  D.51618 = cfg->current_method;
  D.51619 = cfg->mempool;
  entry = mono_patch_info_rgctx_entry_new (D.51619, D.51618, D.51617, 13, field, rgctx_type);
  D.51618 = cfg->current_method;
  rgctx = emit_get_rgctx (cfg, D.51618, context_used);
  D.51620 = emit_rgctx_fetch (cfg, rgctx, entry);
  return D.51620;
}


emit_seq_point (struct MonoCompile * cfg, struct MonoMethod * method, guint8 * ip, gboolean intr_loc, gboolean nonempty_stack)
{
  unsigned char D.51622;
  unsigned char D.51623;
  struct MonoMethod * D.51626;
  struct MonoMemPool * D.51629;
  int D.51630;
  struct MonoInst * D.51631;
  int D.51632;
  int D.51633;
  const unsigned char * D.51634;
  int ip.557;
  struct MonoMethodHeader * D.51636;
  const unsigned char * D.51637;
  int D.51638;
  int D.51639;
  _Bool D.51640;
  unsigned char D.51641;
  unsigned char D.51644;
  unsigned char D.51645;
  struct MonoBasicBlock * D.51646;
  struct MonoInst * D.51647;
  struct MonoInst * ins;

  D.51622 = BIT_FIELD_REF <*cfg, 8, 3424>;
  D.51623 = D.51622 & 32;
  if (D.51623 != 0) goto <D.51624>; else goto <D.51625>;
  <D.51624>:
  D.51626 = cfg->method;
  if (D.51626 == method) goto <D.51627>; else goto <D.51628>;
  <D.51627>:
  D.51629 = cfg->mempool;
  ins = mono_mempool_alloc (D.51629, 48);
  ins->data.op[1].const_val = 0;
  D.51630 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.51630;
  ins->prev = 0B;
  D.51631 = ins->prev;
  ins->next = D.51631;
  ins->opcode = 341;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.51632 = ins->sreg3;
  ins->sreg2 = D.51632;
  D.51633 = ins->sreg2;
  ins->sreg1 = D.51633;
  D.51634 = cfg->ip;
  ins->cil_code = D.51634;
  ip.557 = (int) ip;
  D.51636 = cfg->header;
  D.51637 = D.51636->code;
  D.51638 = (int) D.51637;
  D.51639 = ip.557 - D.51638;
  ins->data.op[1].const_val = D.51639;
  D.51640 = intr_loc != 0;
  D.51641 = (unsigned char) D.51640;
  ins->flags = D.51641;
  if (nonempty_stack != 0) goto <D.51642>; else goto <D.51643>;
  <D.51642>:
  D.51644 = ins->flags;
  D.51645 = D.51644 | 4;
  ins->flags = D.51645;
  <D.51643>:
  D.51646 = cfg->cbb;
  D.51647 = D.51646->last_ins;
  if (D.51647 != 0B) goto <D.51648>; else goto <D.51649>;
  <D.51648>:
  D.51646 = cfg->cbb;
  D.51647 = D.51646->last_ins;
  D.51647->next = ins;
  D.51646 = cfg->cbb;
  D.51647 = D.51646->last_ins;
  ins->prev = D.51647;
  D.51646 = cfg->cbb;
  D.51646->last_ins = ins;
  goto <D.51650>;
  <D.51649>:
  D.51646 = cfg->cbb;
  D.51646 = cfg->cbb;
  D.51646->last_ins = ins;
  D.51647 = D.51646->last_ins;
  D.51646->code = D.51647;
  <D.51650>:
  <D.51628>:
  <D.51625>:
}


mono_find_final_block (struct MonoCompile * cfg, unsigned char * ip, unsigned char * target, int type)
{
  struct MonoExceptionClause * D.51651;
  unsigned int i.558;
  unsigned int D.51653;
  unsigned int D.51656;
  int ip.559;
  const unsigned char * D.51658;
  int D.51659;
  int D.51660;
  unsigned int D.51661;
  unsigned int D.51664;
  unsigned int D.51665;
  int target.560;
  int D.51669;
  unsigned int D.51670;
  unsigned int D.51672;
  unsigned int type.561;
  <unnamed-unsigned:15> D.51676;
  int D.51677;
  struct GList * D.51678;
  struct MonoMethodHeader * header;
  struct MonoExceptionClause * clause;
  int i;
  struct GList * res;

  header = cfg->header;
  res = 0B;
  i = 0;
  goto <D.24589>;
  <D.24588>:
  D.51651 = header->clauses;
  i.558 = (unsigned int) i;
  D.51653 = i.558 * 24;
  clause = D.51651 + D.51653;
  D.51656 = clause->try_offset;
  ip.559 = (int) ip;
  D.51658 = header->code;
  D.51659 = (int) D.51658;
  D.51660 = ip.559 - D.51659;
  D.51661 = (unsigned int) D.51660;
  if (D.51656 <= D.51661) goto <D.51662>; else goto <D.51663>;
  <D.51662>:
  ip.559 = (int) ip;
  D.51658 = header->code;
  D.51659 = (int) D.51658;
  D.51660 = ip.559 - D.51659;
  D.51661 = (unsigned int) D.51660;
  D.51656 = clause->try_offset;
  D.51664 = clause->try_len;
  D.51665 = D.51656 + D.51664;
  if (D.51661 < D.51665) goto <D.51666>; else goto <D.51667>;
  <D.51666>:
  D.51656 = clause->try_offset;
  target.560 = (int) target;
  D.51658 = header->code;
  D.51659 = (int) D.51658;
  D.51669 = target.560 - D.51659;
  D.51670 = (unsigned int) D.51669;
  if (D.51656 > D.51670) goto <D.51654>; else goto <D.51671>;
  <D.51671>:
  target.560 = (int) target;
  D.51658 = header->code;
  D.51659 = (int) D.51658;
  D.51669 = target.560 - D.51659;
  D.51670 = (unsigned int) D.51669;
  D.51656 = clause->try_offset;
  D.51664 = clause->try_len;
  D.51665 = D.51656 + D.51664;
  if (D.51670 >= D.51665) goto <D.51654>; else goto <D.51655>;
  <D.51654>:
  D.51672 = clause->flags;
  type.561 = (unsigned int) type;
  if (D.51672 == type.561) goto <D.51674>; else goto <D.51675>;
  <D.51674>:
  res = monoeg_g_list_append (res, clause);
  <D.51675>:
  <D.51655>:
  <D.51667>:
  <D.51663>:
  i = i + 1;
  <D.24589>:
  D.51676 = header->num_clauses;
  D.51677 = (int) D.51676;
  if (D.51677 > i) goto <D.24588>; else goto <D.24590>;
  <D.24590>:
  D.51678 = res;
  return D.51678;
}


mono_get_domainvar (struct MonoCompile * cfg)
{
  struct MonoInst * D.51680;
  struct MonoClass * D.51683;
  struct MonoType * D.51684;
  struct MonoInst * D.51685;
  struct MonoInst * D.51686;

  D.51680 = cfg->domainvar;
  if (D.51680 == 0B) goto <D.51681>; else goto <D.51682>;
  <D.51681>:
  D.51683 = mono_defaults.int_class;
  D.51684 = &D.51683->byval_arg;
  D.51685 = mono_compile_create_var (cfg, D.51684, 329);
  cfg->domainvar = D.51685;
  <D.51682>:
  D.51686 = cfg->domainvar;
  return D.51686;
}


handle_cisinst (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * src)
{
  unsigned int D.51688;
  unsigned int D.51689;
  struct MonoMemPool * D.51690;
  unsigned int D.51691;
  unsigned int D.51692;
  unsigned int D.51693;
  int D.51694;
  unsigned int D.51695;
  unsigned int D.51696;
  int D.51697;
  unsigned int D.51698;
  unsigned int D.51699;
  int D.51700;
  unsigned int D.51701;
  unsigned int D.51702;
  int D.51703;
  unsigned int D.51704;
  unsigned int D.51705;
  int D.51706;
  int D.51707;
  struct MonoInst * D.51708;
  int D.51709;
  int D.51710;
  const unsigned char * D.51711;
  struct MonoBasicBlock * D.51712;
  struct MonoInst * D.51713;
  int D.51717;
  struct MonoInst * D.51718;
  int D.51719;
  int D.51720;
  unsigned int D.51723;
  unsigned int D.51724;
  int D.51725;
  unsigned char * D.51729;
  struct MonoBasicBlock * * D.51732;
  int D.51733;
  unsigned char * D.51734;
  int D.51735;
  int D.51736;
  unsigned int D.51737;
  unsigned int D.51738;
  struct MonoBasicBlock * * D.51739;
  unsigned int D.51740;
  short unsigned int D.51745;
  short unsigned int D.51746;
  _Bool D.51747;
  short unsigned int D.51748;
  _Bool D.51749;
  _Bool D.51750;
  short unsigned int D.51752;
  short unsigned int D.51753;
  struct MonoBasicBlock * * D.51754;
  struct MonoBasicBlock * * D.51755;
  struct MonoBasicBlock * D.51756;
  short unsigned int D.51761;
  _Bool D.51762;
  _Bool D.51763;
  _Bool D.51764;
  short unsigned int D.51766;
  short unsigned int D.51767;
  _Bool D.51768;
  short unsigned int D.51769;
  _Bool D.51770;
  _Bool D.51771;
  void * D.51774;
  struct MonoBasicBlock * * D.51775;
  struct MonoBasicBlock * * D.51776;
  unsigned char D.51780;
  unsigned char D.51781;
  unsigned int D.51784;
  unsigned int D.51785;
  int D.51786;
  short unsigned int D.51793;
  short unsigned int D.51794;
  _Bool D.51795;
  short unsigned int D.51796;
  _Bool D.51797;
  _Bool D.51798;
  short unsigned int D.51804;
  _Bool D.51805;
  _Bool D.51806;
  _Bool D.51807;
  short unsigned int D.51809;
  short unsigned int D.51810;
  _Bool D.51811;
  short unsigned int D.51812;
  _Bool D.51813;
  _Bool D.51814;
  unsigned int D.51817;
  unsigned int D.51818;
  unsigned int D.51821;
  unsigned int D.51822;
  int D.51823;
  unsigned int D.51824;
  int D.51825;
  struct MonoInst * D.51826;
  int D.51827;
  int D.51828;
  unsigned char * D.51832;
  int D.51835;
  int D.51836;
  unsigned int D.51837;
  unsigned int D.51838;
  struct MonoBasicBlock * * D.51839;
  short unsigned int D.51844;
  short unsigned int D.51845;
  _Bool D.51846;
  short unsigned int D.51847;
  _Bool D.51848;
  _Bool D.51849;
  short unsigned int D.51855;
  _Bool D.51856;
  _Bool D.51857;
  _Bool D.51858;
  short unsigned int D.51860;
  short unsigned int D.51861;
  _Bool D.51862;
  short unsigned int D.51863;
  _Bool D.51864;
  _Bool D.51865;
  int D.51867;
  struct MonoInst * D.51868;
  int D.51869;
  int D.51870;
  struct MonoClass * D.51874;
  unsigned int D.51875;
  int D.51876;
  struct MonoInst * D.51877;
  int D.51878;
  int D.51879;
  int D.51883;
  struct MonoInst * D.51884;
  int D.51885;
  int D.51886;
  int D.51890;
  struct MonoInst * D.51891;
  int D.51892;
  int D.51893;
  unsigned int D.51896;
  unsigned int D.51897;
  int D.51898;
  unsigned char * D.51902;
  int D.51905;
  int D.51906;
  unsigned int D.51907;
  unsigned int D.51908;
  struct MonoBasicBlock * * D.51909;
  short unsigned int D.51914;
  short unsigned int D.51915;
  _Bool D.51916;
  short unsigned int D.51917;
  _Bool D.51918;
  _Bool D.51919;
  short unsigned int D.51925;
  _Bool D.51926;
  _Bool D.51927;
  _Bool D.51928;
  short unsigned int D.51930;
  short unsigned int D.51931;
  _Bool D.51932;
  short unsigned int D.51933;
  _Bool D.51934;
  _Bool D.51935;
  void * D.51938;
  struct MonoBasicBlock * * D.51939;
  struct MonoBasicBlock * * D.51940;
  unsigned int D.51946;
  unsigned int D.51947;
  int D.51948;
  short unsigned int D.51955;
  short unsigned int D.51956;
  _Bool D.51957;
  short unsigned int D.51958;
  _Bool D.51959;
  _Bool D.51960;
  short unsigned int D.51966;
  _Bool D.51967;
  _Bool D.51968;
  _Bool D.51969;
  short unsigned int D.51971;
  short unsigned int D.51972;
  _Bool D.51973;
  short unsigned int D.51974;
  _Bool D.51975;
  _Bool D.51976;
  unsigned int D.51980;
  int D.51981;
  struct MonoInst * D.51982;
  int D.51983;
  int D.51984;
  int D.51988;
  struct MonoInst * D.51989;
  int D.51990;
  int D.51991;
  unsigned int D.51995;
  int D.51996;
  struct MonoInst * D.51997;
  int D.51998;
  int D.51999;
  int D.52003;
  struct MonoInst * D.52004;
  int D.52005;
  int D.52006;
  unsigned int D.52010;
  int D.52011;
  struct MonoInst * D.52012;
  int D.52013;
  int D.52014;
  int D.52018;
  struct MonoInst * D.52019;
  int D.52020;
  int D.52021;
  int D.52025;
  struct MonoInst * D.52026;
  int D.52027;
  int D.52028;
  unsigned int D.52031;
  unsigned int D.52032;
  int D.52033;
  unsigned char * D.52037;
  int D.52040;
  int D.52041;
  unsigned int D.52042;
  unsigned int D.52043;
  struct MonoBasicBlock * * D.52044;
  short unsigned int D.52049;
  short unsigned int D.52050;
  _Bool D.52051;
  short unsigned int D.52052;
  _Bool D.52053;
  _Bool D.52054;
  short unsigned int D.52060;
  _Bool D.52061;
  _Bool D.52062;
  _Bool D.52063;
  short unsigned int D.52065;
  short unsigned int D.52066;
  _Bool D.52067;
  short unsigned int D.52068;
  _Bool D.52069;
  _Bool D.52070;
  void * D.52073;
  struct MonoBasicBlock * * D.52074;
  struct MonoBasicBlock * * D.52075;
  unsigned int D.52081;
  unsigned int D.52082;
  int D.52083;
  short unsigned int D.52090;
  short unsigned int D.52091;
  _Bool D.52092;
  short unsigned int D.52093;
  _Bool D.52094;
  _Bool D.52095;
  short unsigned int D.52101;
  _Bool D.52102;
  _Bool D.52103;
  _Bool D.52104;
  short unsigned int D.52106;
  short unsigned int D.52107;
  _Bool D.52108;
  short unsigned int D.52109;
  _Bool D.52110;
  _Bool D.52111;
  int D.52114;
  struct MonoInst * D.52115;
  int D.52116;
  int D.52117;
  unsigned int D.52120;
  unsigned int D.52121;
  int D.52122;
  unsigned char * D.52126;
  int D.52129;
  int D.52130;
  unsigned int D.52131;
  unsigned int D.52132;
  struct MonoBasicBlock * * D.52133;
  short unsigned int D.52138;
  short unsigned int D.52139;
  _Bool D.52140;
  short unsigned int D.52141;
  _Bool D.52142;
  _Bool D.52143;
  short unsigned int D.52149;
  _Bool D.52150;
  _Bool D.52151;
  _Bool D.52152;
  short unsigned int D.52154;
  short unsigned int D.52155;
  _Bool D.52156;
  short unsigned int D.52157;
  _Bool D.52158;
  _Bool D.52159;
  void * D.52162;
  struct MonoBasicBlock * * D.52163;
  struct MonoBasicBlock * * D.52164;
  unsigned int D.52170;
  unsigned int D.52171;
  int D.52172;
  short unsigned int D.52179;
  short unsigned int D.52180;
  _Bool D.52181;
  short unsigned int D.52182;
  _Bool D.52183;
  _Bool D.52184;
  short unsigned int D.52190;
  _Bool D.52191;
  _Bool D.52192;
  _Bool D.52193;
  short unsigned int D.52195;
  short unsigned int D.52196;
  _Bool D.52197;
  short unsigned int D.52198;
  _Bool D.52199;
  _Bool D.52200;
  unsigned char * D.52203;
  int D.52206;
  int D.52207;
  unsigned int D.52208;
  unsigned int D.52209;
  struct MonoBasicBlock * * D.52210;
  short unsigned int D.52215;
  short unsigned int D.52216;
  _Bool D.52217;
  short unsigned int D.52218;
  _Bool D.52219;
  _Bool D.52220;
  short unsigned int D.52226;
  _Bool D.52227;
  _Bool D.52228;
  _Bool D.52229;
  short unsigned int D.52231;
  short unsigned int D.52232;
  _Bool D.52233;
  short unsigned int D.52234;
  _Bool D.52235;
  _Bool D.52236;
  unsigned char * D.52238;
  int D.52241;
  int D.52242;
  unsigned int D.52243;
  unsigned int D.52244;
  struct MonoBasicBlock * * D.52245;
  short unsigned int D.52250;
  short unsigned int D.52251;
  _Bool D.52252;
  short unsigned int D.52253;
  _Bool D.52254;
  _Bool D.52255;
  short unsigned int D.52261;
  _Bool D.52262;
  _Bool D.52263;
  _Bool D.52264;
  short unsigned int D.52266;
  short unsigned int D.52267;
  _Bool D.52268;
  short unsigned int D.52269;
  _Bool D.52270;
  _Bool D.52271;
  int D.52273;
  struct MonoInst * D.52274;
  int D.52275;
  int D.52276;
  int D.52280;
  struct MonoInst * D.52281;
  int D.52282;
  int D.52283;
  unsigned int D.52286;
  unsigned int D.52287;
  int D.52288;
  unsigned char * D.52292;
  int D.52295;
  int D.52296;
  unsigned int D.52297;
  unsigned int D.52298;
  struct MonoBasicBlock * * D.52299;
  short unsigned int D.52304;
  short unsigned int D.52305;
  _Bool D.52306;
  short unsigned int D.52307;
  _Bool D.52308;
  _Bool D.52309;
  short unsigned int D.52315;
  _Bool D.52316;
  _Bool D.52317;
  _Bool D.52318;
  short unsigned int D.52320;
  short unsigned int D.52321;
  _Bool D.52322;
  short unsigned int D.52323;
  _Bool D.52324;
  _Bool D.52325;
  void * D.52328;
  struct MonoBasicBlock * * D.52329;
  struct MonoBasicBlock * * D.52330;
  unsigned int D.52336;
  unsigned int D.52337;
  int D.52338;
  short unsigned int D.52345;
  short unsigned int D.52346;
  _Bool D.52347;
  short unsigned int D.52348;
  _Bool D.52349;
  _Bool D.52350;
  short unsigned int D.52356;
  _Bool D.52357;
  _Bool D.52358;
  _Bool D.52359;
  short unsigned int D.52361;
  short unsigned int D.52362;
  _Bool D.52363;
  short unsigned int D.52364;
  _Bool D.52365;
  _Bool D.52366;
  unsigned char * D.52369;
  int D.52372;
  int D.52373;
  unsigned int D.52374;
  unsigned int D.52375;
  struct MonoBasicBlock * * D.52376;
  short unsigned int D.52381;
  short unsigned int D.52382;
  _Bool D.52383;
  short unsigned int D.52384;
  _Bool D.52385;
  _Bool D.52386;
  short unsigned int D.52392;
  _Bool D.52393;
  _Bool D.52394;
  _Bool D.52395;
  short unsigned int D.52397;
  short unsigned int D.52398;
  _Bool D.52399;
  short unsigned int D.52400;
  _Bool D.52401;
  _Bool D.52402;
  int D.52404;
  struct MonoInst * D.52405;
  int D.52406;
  int D.52407;
  int D.52411;
  struct MonoInst * D.52412;
  int D.52413;
  int D.52414;
  unsigned int D.52417;
  unsigned int D.52418;
  int D.52419;
  unsigned char * D.52423;
  int D.52426;
  int D.52427;
  unsigned int D.52428;
  unsigned int D.52429;
  struct MonoBasicBlock * * D.52430;
  short unsigned int D.52435;
  short unsigned int D.52436;
  _Bool D.52437;
  short unsigned int D.52438;
  _Bool D.52439;
  _Bool D.52440;
  short unsigned int D.52446;
  _Bool D.52447;
  _Bool D.52448;
  _Bool D.52449;
  short unsigned int D.52451;
  short unsigned int D.52452;
  _Bool D.52453;
  short unsigned int D.52454;
  _Bool D.52455;
  _Bool D.52456;
  void * D.52459;
  struct MonoBasicBlock * * D.52460;
  struct MonoBasicBlock * * D.52461;
  unsigned int D.52467;
  unsigned int D.52468;
  int D.52469;
  short unsigned int D.52476;
  short unsigned int D.52477;
  _Bool D.52478;
  short unsigned int D.52479;
  _Bool D.52480;
  _Bool D.52481;
  short unsigned int D.52487;
  _Bool D.52488;
  _Bool D.52489;
  _Bool D.52490;
  short unsigned int D.52492;
  short unsigned int D.52493;
  _Bool D.52494;
  short unsigned int D.52495;
  _Bool D.52496;
  _Bool D.52497;
  unsigned char * D.52500;
  int D.52503;
  int D.52504;
  unsigned int D.52505;
  unsigned int D.52506;
  struct MonoBasicBlock * * D.52507;
  short unsigned int D.52512;
  short unsigned int D.52513;
  _Bool D.52514;
  short unsigned int D.52515;
  _Bool D.52516;
  _Bool D.52517;
  short unsigned int D.52523;
  _Bool D.52524;
  _Bool D.52525;
  _Bool D.52526;
  short unsigned int D.52528;
  short unsigned int D.52529;
  _Bool D.52530;
  short unsigned int D.52531;
  _Bool D.52532;
  _Bool D.52533;
  int D.52535;
  struct MonoInst * D.52536;
  int D.52537;
  int D.52538;
  unsigned char * D.52542;
  int D.52545;
  int D.52546;
  unsigned int D.52547;
  unsigned int D.52548;
  struct MonoBasicBlock * * D.52549;
  short unsigned int D.52554;
  short unsigned int D.52555;
  _Bool D.52556;
  short unsigned int D.52557;
  _Bool D.52558;
  _Bool D.52559;
  short unsigned int D.52565;
  _Bool D.52566;
  _Bool D.52567;
  _Bool D.52568;
  short unsigned int D.52570;
  short unsigned int D.52571;
  _Bool D.52572;
  short unsigned int D.52573;
  _Bool D.52574;
  _Bool D.52575;
  int D.52577;
  struct MonoInst * D.52578;
  int D.52579;
  int D.52580;
  struct MonoInst * D.52581;
  struct MonoInst * ins;
  struct MonoBasicBlock * true_bb;
  struct MonoBasicBlock * false_bb;
  struct MonoBasicBlock * false2_bb;
  struct MonoBasicBlock * end_bb;
  struct MonoBasicBlock * no_proxy_bb;
  struct MonoBasicBlock * interface_fail_bb;
  int obj_reg;
  int dreg;
  int tmp_reg;
  int klass_reg;

  obj_reg = src->dreg;
  D.51688 = alloc_ireg (cfg);
  dreg = (int) D.51688;
  D.51689 = alloc_preg (cfg);
  klass_reg = (int) D.51689;
  D.51690 = cfg->mempool;
  true_bb = mono_mempool_alloc0 (D.51690, 172);
  D.51691 = cfg->num_bblocks;
  D.51692 = D.51691;
  D.51693 = D.51692 + 1;
  cfg->num_bblocks = D.51693;
  D.51694 = (int) D.51692;
  true_bb->block_num = D.51694;
  D.51690 = cfg->mempool;
  false_bb = mono_mempool_alloc0 (D.51690, 172);
  D.51691 = cfg->num_bblocks;
  D.51695 = D.51691;
  D.51696 = D.51695 + 1;
  cfg->num_bblocks = D.51696;
  D.51697 = (int) D.51695;
  false_bb->block_num = D.51697;
  D.51690 = cfg->mempool;
  end_bb = mono_mempool_alloc0 (D.51690, 172);
  D.51691 = cfg->num_bblocks;
  D.51698 = D.51691;
  D.51699 = D.51698 + 1;
  cfg->num_bblocks = D.51699;
  D.51700 = (int) D.51698;
  end_bb->block_num = D.51700;
  D.51690 = cfg->mempool;
  false2_bb = mono_mempool_alloc0 (D.51690, 172);
  D.51691 = cfg->num_bblocks;
  D.51701 = D.51691;
  D.51702 = D.51701 + 1;
  cfg->num_bblocks = D.51702;
  D.51703 = (int) D.51701;
  false2_bb->block_num = D.51703;
  D.51690 = cfg->mempool;
  no_proxy_bb = mono_mempool_alloc0 (D.51690, 172);
  D.51691 = cfg->num_bblocks;
  D.51704 = D.51691;
  D.51705 = D.51704 + 1;
  cfg->num_bblocks = D.51705;
  D.51706 = (int) D.51704;
  no_proxy_bb->block_num = D.51706;
  {
    struct MonoInst * inst;

    D.51690 = cfg->mempool;
    inst = mono_mempool_alloc (D.51690, 48);
    inst->data.op[1].const_val = 0;
    D.51707 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51707;
    inst->prev = 0B;
    D.51708 = inst->prev;
    inst->next = D.51708;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51709 = inst->sreg3;
    inst->sreg2 = D.51709;
    D.51710 = inst->sreg2;
    inst->sreg1 = D.51710;
    D.51711 = cfg->ip;
    inst->cil_code = D.51711;
    inst->dreg = -1;
    inst->sreg1 = obj_reg;
    inst->data.op[1].const_val = 0;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.51714>; else goto <D.51715>;
    <D.51714>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51713->next = inst;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    inst->prev = D.51713;
    D.51712 = cfg->cbb;
    D.51712->last_ins = inst;
    goto <D.51716>;
    <D.51715>:
    D.51712 = cfg->cbb;
    D.51712 = cfg->cbb;
    D.51712->last_ins = inst;
    D.51713 = D.51712->last_ins;
    D.51712->code = D.51713;
    <D.51716>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.51690 = cfg->mempool;
    ins = mono_mempool_alloc (D.51690, 48);
    ins->data.op[1].const_val = 0;
    D.51717 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.51717;
    ins->prev = 0B;
    D.51718 = ins->prev;
    ins->next = D.51718;
    ins->opcode = 652;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.51719 = ins->sreg3;
    ins->sreg2 = D.51719;
    D.51720 = ins->sreg2;
    ins->sreg1 = D.51720;
    D.51711 = cfg->ip;
    ins->cil_code = D.51711;
    if (0 != 0) goto <D.51721>; else goto <D.51722>;
    <D.51721>:
    D.51690 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.51690, 172);
    D.51691 = cfg->num_bblocks;
    D.51723 = D.51691;
    D.51724 = D.51723 + 1;
    cfg->num_bblocks = D.51724;
    D.51725 = (int) D.51723;
    falsebb->block_num = D.51725;
    ins->data.op[0].target_block = false_bb;
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, false_bb);
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.51726>; else goto <D.51727>;
    <D.51726>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51713->next = ins;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    ins->prev = D.51713;
    D.51712 = cfg->cbb;
    D.51712->last_ins = ins;
    goto <D.51728>;
    <D.51727>:
    D.51712 = cfg->cbb;
    D.51712 = cfg->cbb;
    D.51712->last_ins = ins;
    D.51713 = D.51712->last_ins;
    D.51712->code = D.51713;
    <D.51728>:
    D.51729 = falsebb->cil_code;
    if (D.51729 != 0B) goto <D.51730>; else goto <D.51731>;
    <D.51730>:
    D.51732 = cfg->cil_offset_to_bb;
    D.51729 = falsebb->cil_code;
    D.51733 = (int) D.51729;
    D.51734 = cfg->cil_start;
    D.51735 = (int) D.51734;
    D.51736 = D.51733 - D.51735;
    D.51737 = (unsigned int) D.51736;
    D.51738 = D.51737 * 4;
    D.51739 = D.51732 + D.51738;
    *D.51739 = falsebb;
    <D.51731>:
    D.51740 = cfg->real_offset;
    falsebb->real_offset = D.51740;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.51744>; else goto <D.51741>;
    <D.51744>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51745 = D.51713->opcode;
    D.51746 = D.51745 + 64981;
    D.51747 = D.51746 <= 9;
    D.51748 = D.51745 + 64874;
    D.51749 = D.51748 <= 9;
    D.51750 = D.51747 | D.51749;
    if (D.51750 != 0) goto <D.51742>; else goto <D.51751>;
    <D.51751>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51752 = D.51713->opcode;
    D.51753 = D.51752 + 64884;
    if (D.51753 <= 9) goto <D.51742>; else goto <D.51741>;
    <D.51742>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51754 = D.51713->data.op[1].many_blocks;
    D.51755 = D.51754 + 4;
    D.51756 = *D.51755;
    if (D.51756 == 0B) goto <D.51757>; else goto <D.51741>;
    <D.51757>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51754 = D.51713->data.op[1].many_blocks;
    D.51755 = D.51754 + 4;
    *D.51755 = falsebb;
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, falsebb);
    goto <D.51743>;
    <D.51741>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 == 0B) goto <D.51758>; else goto <D.51760>;
    <D.51760>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51761 = D.51713->opcode;
    D.51762 = D.51761 != 446;
    D.51763 = D.51761 != 763;
    D.51764 = D.51762 & D.51763;
    if (D.51764 != 0) goto <D.51765>; else goto <D.51759>;
    <D.51765>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51766 = D.51713->opcode;
    D.51767 = D.51766 + 64981;
    D.51768 = D.51767 > 9;
    D.51769 = D.51766 + 64874;
    D.51770 = D.51769 > 9;
    D.51771 = D.51768 & D.51770;
    if (D.51771 != 0) goto <D.51772>; else goto <D.51759>;
    <D.51772>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51752 = D.51713->opcode;
    D.51753 = D.51752 + 64884;
    if (D.51753 > 9) goto <D.51758>; else goto <D.51759>;
    <D.51758>:
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, falsebb);
    <D.51759>:
    <D.51743>:
    D.51712 = cfg->cbb;
    D.51712->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.51773>;
    <D.51722>:
    D.51690 = cfg->mempool;
    D.51774 = mono_mempool_alloc (D.51690, 8);
    ins->data.op[1].many_blocks = D.51774;
    D.51775 = ins->data.op[1].many_blocks;
    *D.51775 = false_bb;
    D.51775 = ins->data.op[1].many_blocks;
    D.51776 = D.51775 + 4;
    *D.51776 = 0B;
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, false_bb);
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.51777>; else goto <D.51778>;
    <D.51777>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51713->next = ins;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    ins->prev = D.51713;
    D.51712 = cfg->cbb;
    D.51712->last_ins = ins;
    goto <D.51779>;
    <D.51778>:
    D.51712 = cfg->cbb;
    D.51712 = cfg->cbb;
    D.51712->last_ins = ins;
    D.51713 = D.51712->last_ins;
    D.51712->code = D.51713;
    <D.51779>:
    D.51780 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.51781 = D.51780 & 8;
    if (D.51781 == 0) goto <D.51782>; else goto <D.51783>;
    <D.51782>:
    D.51690 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.51690, 172);
    D.51691 = cfg->num_bblocks;
    D.51784 = D.51691;
    D.51785 = D.51784 + 1;
    cfg->num_bblocks = D.51785;
    D.51786 = (int) D.51784;
    falsebb->block_num = D.51786;
    D.51775 = ins->data.op[1].many_blocks;
    D.51776 = D.51775 + 4;
    *D.51776 = falsebb;
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, falsebb);
    D.51729 = falsebb->cil_code;
    if (D.51729 != 0B) goto <D.51787>; else goto <D.51788>;
    <D.51787>:
    D.51732 = cfg->cil_offset_to_bb;
    D.51729 = falsebb->cil_code;
    D.51733 = (int) D.51729;
    D.51734 = cfg->cil_start;
    D.51735 = (int) D.51734;
    D.51736 = D.51733 - D.51735;
    D.51737 = (unsigned int) D.51736;
    D.51738 = D.51737 * 4;
    D.51739 = D.51732 + D.51738;
    *D.51739 = falsebb;
    <D.51788>:
    D.51740 = cfg->real_offset;
    falsebb->real_offset = D.51740;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.51792>; else goto <D.51789>;
    <D.51792>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51793 = D.51713->opcode;
    D.51794 = D.51793 + 64981;
    D.51795 = D.51794 <= 9;
    D.51796 = D.51793 + 64874;
    D.51797 = D.51796 <= 9;
    D.51798 = D.51795 | D.51797;
    if (D.51798 != 0) goto <D.51790>; else goto <D.51799>;
    <D.51799>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51752 = D.51713->opcode;
    D.51753 = D.51752 + 64884;
    if (D.51753 <= 9) goto <D.51790>; else goto <D.51789>;
    <D.51790>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51754 = D.51713->data.op[1].many_blocks;
    D.51755 = D.51754 + 4;
    D.51756 = *D.51755;
    if (D.51756 == 0B) goto <D.51800>; else goto <D.51789>;
    <D.51800>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51754 = D.51713->data.op[1].many_blocks;
    D.51755 = D.51754 + 4;
    *D.51755 = falsebb;
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, falsebb);
    goto <D.51791>;
    <D.51789>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 == 0B) goto <D.51801>; else goto <D.51803>;
    <D.51803>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51804 = D.51713->opcode;
    D.51805 = D.51804 != 446;
    D.51806 = D.51804 != 763;
    D.51807 = D.51805 & D.51806;
    if (D.51807 != 0) goto <D.51808>; else goto <D.51802>;
    <D.51808>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51809 = D.51713->opcode;
    D.51810 = D.51809 + 64981;
    D.51811 = D.51810 > 9;
    D.51812 = D.51809 + 64874;
    D.51813 = D.51812 > 9;
    D.51814 = D.51811 & D.51813;
    if (D.51814 != 0) goto <D.51815>; else goto <D.51802>;
    <D.51815>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51752 = D.51713->opcode;
    D.51753 = D.51752 + 64884;
    if (D.51753 > 9) goto <D.51801>; else goto <D.51802>;
    <D.51801>:
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, falsebb);
    <D.51802>:
    <D.51791>:
    D.51712 = cfg->cbb;
    D.51712->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.51816>;
    <D.51783>:
    D.51712 = cfg->cbb;
    D.51712->extended = 1;
    <D.51816>:
    <D.51773>:
  }
  D.51817 = klass->flags;
  D.51818 = D.51817 & 32;
  if (D.51818 != 0) goto <D.51819>; else goto <D.51820>;
  <D.51819>:
  D.51690 = cfg->mempool;
  interface_fail_bb = mono_mempool_alloc0 (D.51690, 172);
  D.51691 = cfg->num_bblocks;
  D.51821 = D.51691;
  D.51822 = D.51821 + 1;
  cfg->num_bblocks = D.51822;
  D.51823 = (int) D.51821;
  interface_fail_bb->block_num = D.51823;
  D.51824 = alloc_preg (cfg);
  tmp_reg = (int) D.51824;
  {
    struct MonoInst * inst;

    D.51690 = cfg->mempool;
    inst = mono_mempool_alloc (D.51690, 48);
    inst->data.op[1].const_val = 0;
    D.51825 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51825;
    inst->prev = 0B;
    D.51826 = inst->prev;
    inst->next = D.51826;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51827 = inst->sreg3;
    inst->sreg2 = D.51827;
    D.51828 = inst->sreg2;
    inst->sreg1 = D.51828;
    D.51711 = cfg->ip;
    inst->cil_code = D.51711;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 0;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.51829>; else goto <D.51830>;
    <D.51829>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51713->next = inst;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    inst->prev = D.51713;
    D.51712 = cfg->cbb;
    D.51712->last_ins = inst;
    goto <D.51831>;
    <D.51830>:
    D.51712 = cfg->cbb;
    D.51712 = cfg->cbb;
    D.51712->last_ins = inst;
    D.51713 = D.51712->last_ins;
    D.51712->code = D.51713;
    <D.51831>:
  }
  mini_emit_iface_cast (cfg, tmp_reg, klass, interface_fail_bb, true_bb);
  D.51832 = interface_fail_bb->cil_code;
  if (D.51832 != 0B) goto <D.51833>; else goto <D.51834>;
  <D.51833>:
  D.51732 = cfg->cil_offset_to_bb;
  D.51832 = interface_fail_bb->cil_code;
  D.51835 = (int) D.51832;
  D.51734 = cfg->cil_start;
  D.51735 = (int) D.51734;
  D.51836 = D.51835 - D.51735;
  D.51837 = (unsigned int) D.51836;
  D.51838 = D.51837 * 4;
  D.51839 = D.51732 + D.51838;
  *D.51839 = interface_fail_bb;
  <D.51834>:
  D.51740 = cfg->real_offset;
  interface_fail_bb->real_offset = D.51740;
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  if (D.51713 != 0B) goto <D.51843>; else goto <D.51840>;
  <D.51843>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.51844 = D.51713->opcode;
  D.51845 = D.51844 + 64981;
  D.51846 = D.51845 <= 9;
  D.51847 = D.51844 + 64874;
  D.51848 = D.51847 <= 9;
  D.51849 = D.51846 | D.51848;
  if (D.51849 != 0) goto <D.51841>; else goto <D.51850>;
  <D.51850>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.51752 = D.51713->opcode;
  D.51753 = D.51752 + 64884;
  if (D.51753 <= 9) goto <D.51841>; else goto <D.51840>;
  <D.51841>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.51754 = D.51713->data.op[1].many_blocks;
  D.51755 = D.51754 + 4;
  D.51756 = *D.51755;
  if (D.51756 == 0B) goto <D.51851>; else goto <D.51840>;
  <D.51851>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.51754 = D.51713->data.op[1].many_blocks;
  D.51755 = D.51754 + 4;
  *D.51755 = interface_fail_bb;
  D.51712 = cfg->cbb;
  mono_link_bblock (cfg, D.51712, interface_fail_bb);
  goto <D.51842>;
  <D.51840>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  if (D.51713 == 0B) goto <D.51852>; else goto <D.51854>;
  <D.51854>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.51855 = D.51713->opcode;
  D.51856 = D.51855 != 446;
  D.51857 = D.51855 != 763;
  D.51858 = D.51856 & D.51857;
  if (D.51858 != 0) goto <D.51859>; else goto <D.51853>;
  <D.51859>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.51860 = D.51713->opcode;
  D.51861 = D.51860 + 64981;
  D.51862 = D.51861 > 9;
  D.51863 = D.51860 + 64874;
  D.51864 = D.51863 > 9;
  D.51865 = D.51862 & D.51864;
  if (D.51865 != 0) goto <D.51866>; else goto <D.51853>;
  <D.51866>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.51752 = D.51713->opcode;
  D.51753 = D.51752 + 64884;
  if (D.51753 > 9) goto <D.51852>; else goto <D.51853>;
  <D.51852>:
  D.51712 = cfg->cbb;
  mono_link_bblock (cfg, D.51712, interface_fail_bb);
  <D.51853>:
  <D.51842>:
  D.51712 = cfg->cbb;
  D.51712->next_bb = interface_fail_bb;
  cfg->cbb = interface_fail_bb;
  {
    struct MonoInst * inst;

    D.51690 = cfg->mempool;
    inst = mono_mempool_alloc (D.51690, 48);
    inst->data.op[1].const_val = 0;
    D.51867 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51867;
    inst->prev = 0B;
    D.51868 = inst->prev;
    inst->next = D.51868;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51869 = inst->sreg3;
    inst->sreg2 = D.51869;
    D.51870 = inst->sreg2;
    inst->sreg1 = D.51870;
    D.51711 = cfg->ip;
    inst->cil_code = D.51711;
    inst->dreg = klass_reg;
    inst->sreg1 = tmp_reg;
    inst->data.op[0].const_val = 0;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.51871>; else goto <D.51872>;
    <D.51871>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51713->next = inst;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    inst->prev = D.51713;
    D.51712 = cfg->cbb;
    D.51712->last_ins = inst;
    goto <D.51873>;
    <D.51872>:
    D.51712 = cfg->cbb;
    D.51712 = cfg->cbb;
    D.51712->last_ins = inst;
    D.51713 = D.51712->last_ins;
    D.51712->code = D.51713;
    <D.51873>:
  }
  D.51874 = mono_defaults.transparent_proxy_class;
  mini_emit_class_check_branch (cfg, klass_reg, D.51874, 657, false_bb);
  D.51875 = alloc_preg (cfg);
  tmp_reg = (int) D.51875;
  {
    struct MonoInst * inst;

    D.51690 = cfg->mempool;
    inst = mono_mempool_alloc (D.51690, 48);
    inst->data.op[1].const_val = 0;
    D.51876 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51876;
    inst->prev = 0B;
    D.51877 = inst->prev;
    inst->next = D.51877;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51878 = inst->sreg3;
    inst->sreg2 = D.51878;
    D.51879 = inst->sreg2;
    inst->sreg1 = D.51879;
    D.51711 = cfg->ip;
    inst->cil_code = D.51711;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 16;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.51880>; else goto <D.51881>;
    <D.51880>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51713->next = inst;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    inst->prev = D.51713;
    D.51712 = cfg->cbb;
    D.51712->last_ins = inst;
    goto <D.51882>;
    <D.51881>:
    D.51712 = cfg->cbb;
    D.51712 = cfg->cbb;
    D.51712->last_ins = inst;
    D.51713 = D.51712->last_ins;
    D.51712->code = D.51713;
    <D.51882>:
  }
  {
    struct MonoInst * inst;

    D.51690 = cfg->mempool;
    inst = mono_mempool_alloc (D.51690, 48);
    inst->data.op[1].const_val = 0;
    D.51883 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51883;
    inst->prev = 0B;
    D.51884 = inst->prev;
    inst->next = D.51884;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51885 = inst->sreg3;
    inst->sreg2 = D.51885;
    D.51886 = inst->sreg2;
    inst->sreg1 = D.51886;
    D.51711 = cfg->ip;
    inst->cil_code = D.51711;
    inst->dreg = -1;
    inst->sreg1 = tmp_reg;
    inst->data.op[1].const_val = 0;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.51887>; else goto <D.51888>;
    <D.51887>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51713->next = inst;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    inst->prev = D.51713;
    D.51712 = cfg->cbb;
    D.51712->last_ins = inst;
    goto <D.51889>;
    <D.51888>:
    D.51712 = cfg->cbb;
    D.51712 = cfg->cbb;
    D.51712->last_ins = inst;
    D.51713 = D.51712->last_ins;
    D.51712->code = D.51713;
    <D.51889>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.51690 = cfg->mempool;
    ins = mono_mempool_alloc (D.51690, 48);
    ins->data.op[1].const_val = 0;
    D.51890 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.51890;
    ins->prev = 0B;
    D.51891 = ins->prev;
    ins->next = D.51891;
    ins->opcode = 657;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.51892 = ins->sreg3;
    ins->sreg2 = D.51892;
    D.51893 = ins->sreg2;
    ins->sreg1 = D.51893;
    D.51711 = cfg->ip;
    ins->cil_code = D.51711;
    if (0 != 0) goto <D.51894>; else goto <D.51895>;
    <D.51894>:
    D.51690 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.51690, 172);
    D.51691 = cfg->num_bblocks;
    D.51896 = D.51691;
    D.51897 = D.51896 + 1;
    cfg->num_bblocks = D.51897;
    D.51898 = (int) D.51896;
    falsebb->block_num = D.51898;
    ins->data.op[0].target_block = false2_bb;
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, false2_bb);
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.51899>; else goto <D.51900>;
    <D.51899>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51713->next = ins;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    ins->prev = D.51713;
    D.51712 = cfg->cbb;
    D.51712->last_ins = ins;
    goto <D.51901>;
    <D.51900>:
    D.51712 = cfg->cbb;
    D.51712 = cfg->cbb;
    D.51712->last_ins = ins;
    D.51713 = D.51712->last_ins;
    D.51712->code = D.51713;
    <D.51901>:
    D.51902 = falsebb->cil_code;
    if (D.51902 != 0B) goto <D.51903>; else goto <D.51904>;
    <D.51903>:
    D.51732 = cfg->cil_offset_to_bb;
    D.51902 = falsebb->cil_code;
    D.51905 = (int) D.51902;
    D.51734 = cfg->cil_start;
    D.51735 = (int) D.51734;
    D.51906 = D.51905 - D.51735;
    D.51907 = (unsigned int) D.51906;
    D.51908 = D.51907 * 4;
    D.51909 = D.51732 + D.51908;
    *D.51909 = falsebb;
    <D.51904>:
    D.51740 = cfg->real_offset;
    falsebb->real_offset = D.51740;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.51913>; else goto <D.51910>;
    <D.51913>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51914 = D.51713->opcode;
    D.51915 = D.51914 + 64981;
    D.51916 = D.51915 <= 9;
    D.51917 = D.51914 + 64874;
    D.51918 = D.51917 <= 9;
    D.51919 = D.51916 | D.51918;
    if (D.51919 != 0) goto <D.51911>; else goto <D.51920>;
    <D.51920>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51752 = D.51713->opcode;
    D.51753 = D.51752 + 64884;
    if (D.51753 <= 9) goto <D.51911>; else goto <D.51910>;
    <D.51911>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51754 = D.51713->data.op[1].many_blocks;
    D.51755 = D.51754 + 4;
    D.51756 = *D.51755;
    if (D.51756 == 0B) goto <D.51921>; else goto <D.51910>;
    <D.51921>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51754 = D.51713->data.op[1].many_blocks;
    D.51755 = D.51754 + 4;
    *D.51755 = falsebb;
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, falsebb);
    goto <D.51912>;
    <D.51910>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 == 0B) goto <D.51922>; else goto <D.51924>;
    <D.51924>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51925 = D.51713->opcode;
    D.51926 = D.51925 != 446;
    D.51927 = D.51925 != 763;
    D.51928 = D.51926 & D.51927;
    if (D.51928 != 0) goto <D.51929>; else goto <D.51923>;
    <D.51929>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51930 = D.51713->opcode;
    D.51931 = D.51930 + 64981;
    D.51932 = D.51931 > 9;
    D.51933 = D.51930 + 64874;
    D.51934 = D.51933 > 9;
    D.51935 = D.51932 & D.51934;
    if (D.51935 != 0) goto <D.51936>; else goto <D.51923>;
    <D.51936>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51752 = D.51713->opcode;
    D.51753 = D.51752 + 64884;
    if (D.51753 > 9) goto <D.51922>; else goto <D.51923>;
    <D.51922>:
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, falsebb);
    <D.51923>:
    <D.51912>:
    D.51712 = cfg->cbb;
    D.51712->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.51937>;
    <D.51895>:
    D.51690 = cfg->mempool;
    D.51938 = mono_mempool_alloc (D.51690, 8);
    ins->data.op[1].many_blocks = D.51938;
    D.51939 = ins->data.op[1].many_blocks;
    *D.51939 = false2_bb;
    D.51939 = ins->data.op[1].many_blocks;
    D.51940 = D.51939 + 4;
    *D.51940 = 0B;
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, false2_bb);
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.51941>; else goto <D.51942>;
    <D.51941>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51713->next = ins;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    ins->prev = D.51713;
    D.51712 = cfg->cbb;
    D.51712->last_ins = ins;
    goto <D.51943>;
    <D.51942>:
    D.51712 = cfg->cbb;
    D.51712 = cfg->cbb;
    D.51712->last_ins = ins;
    D.51713 = D.51712->last_ins;
    D.51712->code = D.51713;
    <D.51943>:
    D.51780 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.51781 = D.51780 & 8;
    if (D.51781 == 0) goto <D.51944>; else goto <D.51945>;
    <D.51944>:
    D.51690 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.51690, 172);
    D.51691 = cfg->num_bblocks;
    D.51946 = D.51691;
    D.51947 = D.51946 + 1;
    cfg->num_bblocks = D.51947;
    D.51948 = (int) D.51946;
    falsebb->block_num = D.51948;
    D.51939 = ins->data.op[1].many_blocks;
    D.51940 = D.51939 + 4;
    *D.51940 = falsebb;
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, falsebb);
    D.51902 = falsebb->cil_code;
    if (D.51902 != 0B) goto <D.51949>; else goto <D.51950>;
    <D.51949>:
    D.51732 = cfg->cil_offset_to_bb;
    D.51902 = falsebb->cil_code;
    D.51905 = (int) D.51902;
    D.51734 = cfg->cil_start;
    D.51735 = (int) D.51734;
    D.51906 = D.51905 - D.51735;
    D.51907 = (unsigned int) D.51906;
    D.51908 = D.51907 * 4;
    D.51909 = D.51732 + D.51908;
    *D.51909 = falsebb;
    <D.51950>:
    D.51740 = cfg->real_offset;
    falsebb->real_offset = D.51740;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.51954>; else goto <D.51951>;
    <D.51954>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51955 = D.51713->opcode;
    D.51956 = D.51955 + 64981;
    D.51957 = D.51956 <= 9;
    D.51958 = D.51955 + 64874;
    D.51959 = D.51958 <= 9;
    D.51960 = D.51957 | D.51959;
    if (D.51960 != 0) goto <D.51952>; else goto <D.51961>;
    <D.51961>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51752 = D.51713->opcode;
    D.51753 = D.51752 + 64884;
    if (D.51753 <= 9) goto <D.51952>; else goto <D.51951>;
    <D.51952>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51754 = D.51713->data.op[1].many_blocks;
    D.51755 = D.51754 + 4;
    D.51756 = *D.51755;
    if (D.51756 == 0B) goto <D.51962>; else goto <D.51951>;
    <D.51962>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51754 = D.51713->data.op[1].many_blocks;
    D.51755 = D.51754 + 4;
    *D.51755 = falsebb;
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, falsebb);
    goto <D.51953>;
    <D.51951>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 == 0B) goto <D.51963>; else goto <D.51965>;
    <D.51965>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51966 = D.51713->opcode;
    D.51967 = D.51966 != 446;
    D.51968 = D.51966 != 763;
    D.51969 = D.51967 & D.51968;
    if (D.51969 != 0) goto <D.51970>; else goto <D.51964>;
    <D.51970>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51971 = D.51713->opcode;
    D.51972 = D.51971 + 64981;
    D.51973 = D.51972 > 9;
    D.51974 = D.51971 + 64874;
    D.51975 = D.51974 > 9;
    D.51976 = D.51973 & D.51975;
    if (D.51976 != 0) goto <D.51977>; else goto <D.51964>;
    <D.51977>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51752 = D.51713->opcode;
    D.51753 = D.51752 + 64884;
    if (D.51753 > 9) goto <D.51963>; else goto <D.51964>;
    <D.51963>:
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, falsebb);
    <D.51964>:
    <D.51953>:
    D.51712 = cfg->cbb;
    D.51712->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.51978>;
    <D.51945>:
    D.51712 = cfg->cbb;
    D.51712->extended = 1;
    <D.51978>:
    <D.51937>:
  }
  goto <D.51979>;
  <D.51820>:
  D.51980 = alloc_preg (cfg);
  tmp_reg = (int) D.51980;
  {
    struct MonoInst * inst;

    D.51690 = cfg->mempool;
    inst = mono_mempool_alloc (D.51690, 48);
    inst->data.op[1].const_val = 0;
    D.51981 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51981;
    inst->prev = 0B;
    D.51982 = inst->prev;
    inst->next = D.51982;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51983 = inst->sreg3;
    inst->sreg2 = D.51983;
    D.51984 = inst->sreg2;
    inst->sreg1 = D.51984;
    D.51711 = cfg->ip;
    inst->cil_code = D.51711;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 0;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.51985>; else goto <D.51986>;
    <D.51985>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51713->next = inst;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    inst->prev = D.51713;
    D.51712 = cfg->cbb;
    D.51712->last_ins = inst;
    goto <D.51987>;
    <D.51986>:
    D.51712 = cfg->cbb;
    D.51712 = cfg->cbb;
    D.51712->last_ins = inst;
    D.51713 = D.51712->last_ins;
    D.51712->code = D.51713;
    <D.51987>:
  }
  {
    struct MonoInst * inst;

    D.51690 = cfg->mempool;
    inst = mono_mempool_alloc (D.51690, 48);
    inst->data.op[1].const_val = 0;
    D.51988 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51988;
    inst->prev = 0B;
    D.51989 = inst->prev;
    inst->next = D.51989;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51990 = inst->sreg3;
    inst->sreg2 = D.51990;
    D.51991 = inst->sreg2;
    inst->sreg1 = D.51991;
    D.51711 = cfg->ip;
    inst->cil_code = D.51711;
    inst->dreg = klass_reg;
    inst->sreg1 = tmp_reg;
    inst->data.op[0].const_val = 0;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.51992>; else goto <D.51993>;
    <D.51992>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51713->next = inst;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    inst->prev = D.51713;
    D.51712 = cfg->cbb;
    D.51712->last_ins = inst;
    goto <D.51994>;
    <D.51993>:
    D.51712 = cfg->cbb;
    D.51712 = cfg->cbb;
    D.51712->last_ins = inst;
    D.51713 = D.51712->last_ins;
    D.51712->code = D.51713;
    <D.51994>:
  }
  D.51874 = mono_defaults.transparent_proxy_class;
  mini_emit_class_check_branch (cfg, klass_reg, D.51874, 657, no_proxy_bb);
  D.51995 = alloc_preg (cfg);
  tmp_reg = (int) D.51995;
  {
    struct MonoInst * inst;

    D.51690 = cfg->mempool;
    inst = mono_mempool_alloc (D.51690, 48);
    inst->data.op[1].const_val = 0;
    D.51996 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51996;
    inst->prev = 0B;
    D.51997 = inst->prev;
    inst->next = D.51997;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51998 = inst->sreg3;
    inst->sreg2 = D.51998;
    D.51999 = inst->sreg2;
    inst->sreg1 = D.51999;
    D.51711 = cfg->ip;
    inst->cil_code = D.51711;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 12;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.52000>; else goto <D.52001>;
    <D.52000>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51713->next = inst;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    inst->prev = D.51713;
    D.51712 = cfg->cbb;
    D.51712->last_ins = inst;
    goto <D.52002>;
    <D.52001>:
    D.51712 = cfg->cbb;
    D.51712 = cfg->cbb;
    D.51712->last_ins = inst;
    D.51713 = D.51712->last_ins;
    D.51712->code = D.51713;
    <D.52002>:
  }
  {
    struct MonoInst * inst;

    D.51690 = cfg->mempool;
    inst = mono_mempool_alloc (D.51690, 48);
    inst->data.op[1].const_val = 0;
    D.52003 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52003;
    inst->prev = 0B;
    D.52004 = inst->prev;
    inst->next = D.52004;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52005 = inst->sreg3;
    inst->sreg2 = D.52005;
    D.52006 = inst->sreg2;
    inst->sreg1 = D.52006;
    D.51711 = cfg->ip;
    inst->cil_code = D.51711;
    inst->dreg = klass_reg;
    inst->sreg1 = tmp_reg;
    inst->data.op[0].const_val = 8;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.52007>; else goto <D.52008>;
    <D.52007>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51713->next = inst;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    inst->prev = D.51713;
    D.51712 = cfg->cbb;
    D.51712->last_ins = inst;
    goto <D.52009>;
    <D.52008>:
    D.51712 = cfg->cbb;
    D.51712 = cfg->cbb;
    D.51712->last_ins = inst;
    D.51713 = D.51712->last_ins;
    D.51712->code = D.51713;
    <D.52009>:
  }
  D.52010 = alloc_preg (cfg);
  tmp_reg = (int) D.52010;
  {
    struct MonoInst * inst;

    D.51690 = cfg->mempool;
    inst = mono_mempool_alloc (D.51690, 48);
    inst->data.op[1].const_val = 0;
    D.52011 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52011;
    inst->prev = 0B;
    D.52012 = inst->prev;
    inst->next = D.52012;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52013 = inst->sreg3;
    inst->sreg2 = D.52013;
    D.52014 = inst->sreg2;
    inst->sreg1 = D.52014;
    D.51711 = cfg->ip;
    inst->cil_code = D.51711;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 16;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.52015>; else goto <D.52016>;
    <D.52015>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51713->next = inst;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    inst->prev = D.51713;
    D.51712 = cfg->cbb;
    D.51712->last_ins = inst;
    goto <D.52017>;
    <D.52016>:
    D.51712 = cfg->cbb;
    D.51712 = cfg->cbb;
    D.51712->last_ins = inst;
    D.51713 = D.51712->last_ins;
    D.51712->code = D.51713;
    <D.52017>:
  }
  {
    struct MonoInst * inst;

    D.51690 = cfg->mempool;
    inst = mono_mempool_alloc (D.51690, 48);
    inst->data.op[1].const_val = 0;
    D.52018 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52018;
    inst->prev = 0B;
    D.52019 = inst->prev;
    inst->next = D.52019;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52020 = inst->sreg3;
    inst->sreg2 = D.52020;
    D.52021 = inst->sreg2;
    inst->sreg1 = D.52021;
    D.51711 = cfg->ip;
    inst->cil_code = D.51711;
    inst->dreg = -1;
    inst->sreg1 = tmp_reg;
    inst->data.op[1].const_val = 0;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.52022>; else goto <D.52023>;
    <D.52022>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51713->next = inst;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    inst->prev = D.51713;
    D.51712 = cfg->cbb;
    D.51712->last_ins = inst;
    goto <D.52024>;
    <D.52023>:
    D.51712 = cfg->cbb;
    D.51712 = cfg->cbb;
    D.51712->last_ins = inst;
    D.51713 = D.51712->last_ins;
    D.51712->code = D.51713;
    <D.52024>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.51690 = cfg->mempool;
    ins = mono_mempool_alloc (D.51690, 48);
    ins->data.op[1].const_val = 0;
    D.52025 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.52025;
    ins->prev = 0B;
    D.52026 = ins->prev;
    ins->next = D.52026;
    ins->opcode = 652;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.52027 = ins->sreg3;
    ins->sreg2 = D.52027;
    D.52028 = ins->sreg2;
    ins->sreg1 = D.52028;
    D.51711 = cfg->ip;
    ins->cil_code = D.51711;
    if (0 != 0) goto <D.52029>; else goto <D.52030>;
    <D.52029>:
    D.51690 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.51690, 172);
    D.51691 = cfg->num_bblocks;
    D.52031 = D.51691;
    D.52032 = D.52031 + 1;
    cfg->num_bblocks = D.52032;
    D.52033 = (int) D.52031;
    falsebb->block_num = D.52033;
    ins->data.op[0].target_block = no_proxy_bb;
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, no_proxy_bb);
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.52034>; else goto <D.52035>;
    <D.52034>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51713->next = ins;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    ins->prev = D.51713;
    D.51712 = cfg->cbb;
    D.51712->last_ins = ins;
    goto <D.52036>;
    <D.52035>:
    D.51712 = cfg->cbb;
    D.51712 = cfg->cbb;
    D.51712->last_ins = ins;
    D.51713 = D.51712->last_ins;
    D.51712->code = D.51713;
    <D.52036>:
    D.52037 = falsebb->cil_code;
    if (D.52037 != 0B) goto <D.52038>; else goto <D.52039>;
    <D.52038>:
    D.51732 = cfg->cil_offset_to_bb;
    D.52037 = falsebb->cil_code;
    D.52040 = (int) D.52037;
    D.51734 = cfg->cil_start;
    D.51735 = (int) D.51734;
    D.52041 = D.52040 - D.51735;
    D.52042 = (unsigned int) D.52041;
    D.52043 = D.52042 * 4;
    D.52044 = D.51732 + D.52043;
    *D.52044 = falsebb;
    <D.52039>:
    D.51740 = cfg->real_offset;
    falsebb->real_offset = D.51740;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.52048>; else goto <D.52045>;
    <D.52048>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.52049 = D.51713->opcode;
    D.52050 = D.52049 + 64981;
    D.52051 = D.52050 <= 9;
    D.52052 = D.52049 + 64874;
    D.52053 = D.52052 <= 9;
    D.52054 = D.52051 | D.52053;
    if (D.52054 != 0) goto <D.52046>; else goto <D.52055>;
    <D.52055>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51752 = D.51713->opcode;
    D.51753 = D.51752 + 64884;
    if (D.51753 <= 9) goto <D.52046>; else goto <D.52045>;
    <D.52046>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51754 = D.51713->data.op[1].many_blocks;
    D.51755 = D.51754 + 4;
    D.51756 = *D.51755;
    if (D.51756 == 0B) goto <D.52056>; else goto <D.52045>;
    <D.52056>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51754 = D.51713->data.op[1].many_blocks;
    D.51755 = D.51754 + 4;
    *D.51755 = falsebb;
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, falsebb);
    goto <D.52047>;
    <D.52045>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 == 0B) goto <D.52057>; else goto <D.52059>;
    <D.52059>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.52060 = D.51713->opcode;
    D.52061 = D.52060 != 446;
    D.52062 = D.52060 != 763;
    D.52063 = D.52061 & D.52062;
    if (D.52063 != 0) goto <D.52064>; else goto <D.52058>;
    <D.52064>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.52065 = D.51713->opcode;
    D.52066 = D.52065 + 64981;
    D.52067 = D.52066 > 9;
    D.52068 = D.52065 + 64874;
    D.52069 = D.52068 > 9;
    D.52070 = D.52067 & D.52069;
    if (D.52070 != 0) goto <D.52071>; else goto <D.52058>;
    <D.52071>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51752 = D.51713->opcode;
    D.51753 = D.51752 + 64884;
    if (D.51753 > 9) goto <D.52057>; else goto <D.52058>;
    <D.52057>:
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, falsebb);
    <D.52058>:
    <D.52047>:
    D.51712 = cfg->cbb;
    D.51712->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.52072>;
    <D.52030>:
    D.51690 = cfg->mempool;
    D.52073 = mono_mempool_alloc (D.51690, 8);
    ins->data.op[1].many_blocks = D.52073;
    D.52074 = ins->data.op[1].many_blocks;
    *D.52074 = no_proxy_bb;
    D.52074 = ins->data.op[1].many_blocks;
    D.52075 = D.52074 + 4;
    *D.52075 = 0B;
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, no_proxy_bb);
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.52076>; else goto <D.52077>;
    <D.52076>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51713->next = ins;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    ins->prev = D.51713;
    D.51712 = cfg->cbb;
    D.51712->last_ins = ins;
    goto <D.52078>;
    <D.52077>:
    D.51712 = cfg->cbb;
    D.51712 = cfg->cbb;
    D.51712->last_ins = ins;
    D.51713 = D.51712->last_ins;
    D.51712->code = D.51713;
    <D.52078>:
    D.51780 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.51781 = D.51780 & 8;
    if (D.51781 == 0) goto <D.52079>; else goto <D.52080>;
    <D.52079>:
    D.51690 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.51690, 172);
    D.51691 = cfg->num_bblocks;
    D.52081 = D.51691;
    D.52082 = D.52081 + 1;
    cfg->num_bblocks = D.52082;
    D.52083 = (int) D.52081;
    falsebb->block_num = D.52083;
    D.52074 = ins->data.op[1].many_blocks;
    D.52075 = D.52074 + 4;
    *D.52075 = falsebb;
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, falsebb);
    D.52037 = falsebb->cil_code;
    if (D.52037 != 0B) goto <D.52084>; else goto <D.52085>;
    <D.52084>:
    D.51732 = cfg->cil_offset_to_bb;
    D.52037 = falsebb->cil_code;
    D.52040 = (int) D.52037;
    D.51734 = cfg->cil_start;
    D.51735 = (int) D.51734;
    D.52041 = D.52040 - D.51735;
    D.52042 = (unsigned int) D.52041;
    D.52043 = D.52042 * 4;
    D.52044 = D.51732 + D.52043;
    *D.52044 = falsebb;
    <D.52085>:
    D.51740 = cfg->real_offset;
    falsebb->real_offset = D.51740;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.52089>; else goto <D.52086>;
    <D.52089>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.52090 = D.51713->opcode;
    D.52091 = D.52090 + 64981;
    D.52092 = D.52091 <= 9;
    D.52093 = D.52090 + 64874;
    D.52094 = D.52093 <= 9;
    D.52095 = D.52092 | D.52094;
    if (D.52095 != 0) goto <D.52087>; else goto <D.52096>;
    <D.52096>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51752 = D.51713->opcode;
    D.51753 = D.51752 + 64884;
    if (D.51753 <= 9) goto <D.52087>; else goto <D.52086>;
    <D.52087>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51754 = D.51713->data.op[1].many_blocks;
    D.51755 = D.51754 + 4;
    D.51756 = *D.51755;
    if (D.51756 == 0B) goto <D.52097>; else goto <D.52086>;
    <D.52097>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51754 = D.51713->data.op[1].many_blocks;
    D.51755 = D.51754 + 4;
    *D.51755 = falsebb;
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, falsebb);
    goto <D.52088>;
    <D.52086>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 == 0B) goto <D.52098>; else goto <D.52100>;
    <D.52100>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.52101 = D.51713->opcode;
    D.52102 = D.52101 != 446;
    D.52103 = D.52101 != 763;
    D.52104 = D.52102 & D.52103;
    if (D.52104 != 0) goto <D.52105>; else goto <D.52099>;
    <D.52105>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.52106 = D.51713->opcode;
    D.52107 = D.52106 + 64981;
    D.52108 = D.52107 > 9;
    D.52109 = D.52106 + 64874;
    D.52110 = D.52109 > 9;
    D.52111 = D.52108 & D.52110;
    if (D.52111 != 0) goto <D.52112>; else goto <D.52099>;
    <D.52112>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51752 = D.51713->opcode;
    D.51753 = D.51752 + 64884;
    if (D.51753 > 9) goto <D.52098>; else goto <D.52099>;
    <D.52098>:
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, falsebb);
    <D.52099>:
    <D.52088>:
    D.51712 = cfg->cbb;
    D.51712->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.52113>;
    <D.52080>:
    D.51712 = cfg->cbb;
    D.51712->extended = 1;
    <D.52113>:
    <D.52072>:
  }
  mini_emit_isninst_cast (cfg, klass_reg, klass, false2_bb, true_bb);
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.51690 = cfg->mempool;
    ins = mono_mempool_alloc (D.51690, 48);
    ins->data.op[1].const_val = 0;
    D.52114 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.52114;
    ins->prev = 0B;
    D.52115 = ins->prev;
    ins->next = D.52115;
    ins->opcode = 446;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.52116 = ins->sreg3;
    ins->sreg2 = D.52116;
    D.52117 = ins->sreg2;
    ins->sreg1 = D.52117;
    D.51711 = cfg->ip;
    ins->cil_code = D.51711;
    if (1 != 0) goto <D.52118>; else goto <D.52119>;
    <D.52118>:
    D.51690 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.51690, 172);
    D.51691 = cfg->num_bblocks;
    D.52120 = D.51691;
    D.52121 = D.52120 + 1;
    cfg->num_bblocks = D.52121;
    D.52122 = (int) D.52120;
    falsebb->block_num = D.52122;
    ins->data.op[0].target_block = false2_bb;
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, false2_bb);
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.52123>; else goto <D.52124>;
    <D.52123>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51713->next = ins;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    ins->prev = D.51713;
    D.51712 = cfg->cbb;
    D.51712->last_ins = ins;
    goto <D.52125>;
    <D.52124>:
    D.51712 = cfg->cbb;
    D.51712 = cfg->cbb;
    D.51712->last_ins = ins;
    D.51713 = D.51712->last_ins;
    D.51712->code = D.51713;
    <D.52125>:
    D.52126 = falsebb->cil_code;
    if (D.52126 != 0B) goto <D.52127>; else goto <D.52128>;
    <D.52127>:
    D.51732 = cfg->cil_offset_to_bb;
    D.52126 = falsebb->cil_code;
    D.52129 = (int) D.52126;
    D.51734 = cfg->cil_start;
    D.51735 = (int) D.51734;
    D.52130 = D.52129 - D.51735;
    D.52131 = (unsigned int) D.52130;
    D.52132 = D.52131 * 4;
    D.52133 = D.51732 + D.52132;
    *D.52133 = falsebb;
    <D.52128>:
    D.51740 = cfg->real_offset;
    falsebb->real_offset = D.51740;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.52137>; else goto <D.52134>;
    <D.52137>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.52138 = D.51713->opcode;
    D.52139 = D.52138 + 64981;
    D.52140 = D.52139 <= 9;
    D.52141 = D.52138 + 64874;
    D.52142 = D.52141 <= 9;
    D.52143 = D.52140 | D.52142;
    if (D.52143 != 0) goto <D.52135>; else goto <D.52144>;
    <D.52144>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51752 = D.51713->opcode;
    D.51753 = D.51752 + 64884;
    if (D.51753 <= 9) goto <D.52135>; else goto <D.52134>;
    <D.52135>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51754 = D.51713->data.op[1].many_blocks;
    D.51755 = D.51754 + 4;
    D.51756 = *D.51755;
    if (D.51756 == 0B) goto <D.52145>; else goto <D.52134>;
    <D.52145>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51754 = D.51713->data.op[1].many_blocks;
    D.51755 = D.51754 + 4;
    *D.51755 = falsebb;
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, falsebb);
    goto <D.52136>;
    <D.52134>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 == 0B) goto <D.52146>; else goto <D.52148>;
    <D.52148>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.52149 = D.51713->opcode;
    D.52150 = D.52149 != 446;
    D.52151 = D.52149 != 763;
    D.52152 = D.52150 & D.52151;
    if (D.52152 != 0) goto <D.52153>; else goto <D.52147>;
    <D.52153>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.52154 = D.51713->opcode;
    D.52155 = D.52154 + 64981;
    D.52156 = D.52155 > 9;
    D.52157 = D.52154 + 64874;
    D.52158 = D.52157 > 9;
    D.52159 = D.52156 & D.52158;
    if (D.52159 != 0) goto <D.52160>; else goto <D.52147>;
    <D.52160>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51752 = D.51713->opcode;
    D.51753 = D.51752 + 64884;
    if (D.51753 > 9) goto <D.52146>; else goto <D.52147>;
    <D.52146>:
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, falsebb);
    <D.52147>:
    <D.52136>:
    D.51712 = cfg->cbb;
    D.51712->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.52161>;
    <D.52119>:
    D.51690 = cfg->mempool;
    D.52162 = mono_mempool_alloc (D.51690, 8);
    ins->data.op[1].many_blocks = D.52162;
    D.52163 = ins->data.op[1].many_blocks;
    *D.52163 = false2_bb;
    D.52163 = ins->data.op[1].many_blocks;
    D.52164 = D.52163 + 4;
    *D.52164 = 0B;
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, false2_bb);
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.52165>; else goto <D.52166>;
    <D.52165>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51713->next = ins;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    ins->prev = D.51713;
    D.51712 = cfg->cbb;
    D.51712->last_ins = ins;
    goto <D.52167>;
    <D.52166>:
    D.51712 = cfg->cbb;
    D.51712 = cfg->cbb;
    D.51712->last_ins = ins;
    D.51713 = D.51712->last_ins;
    D.51712->code = D.51713;
    <D.52167>:
    D.51780 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.51781 = D.51780 & 8;
    if (D.51781 == 0) goto <D.52168>; else goto <D.52169>;
    <D.52168>:
    D.51690 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.51690, 172);
    D.51691 = cfg->num_bblocks;
    D.52170 = D.51691;
    D.52171 = D.52170 + 1;
    cfg->num_bblocks = D.52171;
    D.52172 = (int) D.52170;
    falsebb->block_num = D.52172;
    D.52163 = ins->data.op[1].many_blocks;
    D.52164 = D.52163 + 4;
    *D.52164 = falsebb;
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, falsebb);
    D.52126 = falsebb->cil_code;
    if (D.52126 != 0B) goto <D.52173>; else goto <D.52174>;
    <D.52173>:
    D.51732 = cfg->cil_offset_to_bb;
    D.52126 = falsebb->cil_code;
    D.52129 = (int) D.52126;
    D.51734 = cfg->cil_start;
    D.51735 = (int) D.51734;
    D.52130 = D.52129 - D.51735;
    D.52131 = (unsigned int) D.52130;
    D.52132 = D.52131 * 4;
    D.52133 = D.51732 + D.52132;
    *D.52133 = falsebb;
    <D.52174>:
    D.51740 = cfg->real_offset;
    falsebb->real_offset = D.51740;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.52178>; else goto <D.52175>;
    <D.52178>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.52179 = D.51713->opcode;
    D.52180 = D.52179 + 64981;
    D.52181 = D.52180 <= 9;
    D.52182 = D.52179 + 64874;
    D.52183 = D.52182 <= 9;
    D.52184 = D.52181 | D.52183;
    if (D.52184 != 0) goto <D.52176>; else goto <D.52185>;
    <D.52185>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51752 = D.51713->opcode;
    D.51753 = D.51752 + 64884;
    if (D.51753 <= 9) goto <D.52176>; else goto <D.52175>;
    <D.52176>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51754 = D.51713->data.op[1].many_blocks;
    D.51755 = D.51754 + 4;
    D.51756 = *D.51755;
    if (D.51756 == 0B) goto <D.52186>; else goto <D.52175>;
    <D.52186>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51754 = D.51713->data.op[1].many_blocks;
    D.51755 = D.51754 + 4;
    *D.51755 = falsebb;
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, falsebb);
    goto <D.52177>;
    <D.52175>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 == 0B) goto <D.52187>; else goto <D.52189>;
    <D.52189>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.52190 = D.51713->opcode;
    D.52191 = D.52190 != 446;
    D.52192 = D.52190 != 763;
    D.52193 = D.52191 & D.52192;
    if (D.52193 != 0) goto <D.52194>; else goto <D.52188>;
    <D.52194>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.52195 = D.51713->opcode;
    D.52196 = D.52195 + 64981;
    D.52197 = D.52196 > 9;
    D.52198 = D.52195 + 64874;
    D.52199 = D.52198 > 9;
    D.52200 = D.52197 & D.52199;
    if (D.52200 != 0) goto <D.52201>; else goto <D.52188>;
    <D.52201>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51752 = D.51713->opcode;
    D.51753 = D.51752 + 64884;
    if (D.51753 > 9) goto <D.52187>; else goto <D.52188>;
    <D.52187>:
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, falsebb);
    <D.52188>:
    <D.52177>:
    D.51712 = cfg->cbb;
    D.51712->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.52202>;
    <D.52169>:
    D.51712 = cfg->cbb;
    D.51712->extended = 1;
    <D.52202>:
    <D.52161>:
  }
  D.52203 = no_proxy_bb->cil_code;
  if (D.52203 != 0B) goto <D.52204>; else goto <D.52205>;
  <D.52204>:
  D.51732 = cfg->cil_offset_to_bb;
  D.52203 = no_proxy_bb->cil_code;
  D.52206 = (int) D.52203;
  D.51734 = cfg->cil_start;
  D.51735 = (int) D.51734;
  D.52207 = D.52206 - D.51735;
  D.52208 = (unsigned int) D.52207;
  D.52209 = D.52208 * 4;
  D.52210 = D.51732 + D.52209;
  *D.52210 = no_proxy_bb;
  <D.52205>:
  D.51740 = cfg->real_offset;
  no_proxy_bb->real_offset = D.51740;
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  if (D.51713 != 0B) goto <D.52214>; else goto <D.52211>;
  <D.52214>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.52215 = D.51713->opcode;
  D.52216 = D.52215 + 64981;
  D.52217 = D.52216 <= 9;
  D.52218 = D.52215 + 64874;
  D.52219 = D.52218 <= 9;
  D.52220 = D.52217 | D.52219;
  if (D.52220 != 0) goto <D.52212>; else goto <D.52221>;
  <D.52221>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.51752 = D.51713->opcode;
  D.51753 = D.51752 + 64884;
  if (D.51753 <= 9) goto <D.52212>; else goto <D.52211>;
  <D.52212>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.51754 = D.51713->data.op[1].many_blocks;
  D.51755 = D.51754 + 4;
  D.51756 = *D.51755;
  if (D.51756 == 0B) goto <D.52222>; else goto <D.52211>;
  <D.52222>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.51754 = D.51713->data.op[1].many_blocks;
  D.51755 = D.51754 + 4;
  *D.51755 = no_proxy_bb;
  D.51712 = cfg->cbb;
  mono_link_bblock (cfg, D.51712, no_proxy_bb);
  goto <D.52213>;
  <D.52211>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  if (D.51713 == 0B) goto <D.52223>; else goto <D.52225>;
  <D.52225>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.52226 = D.51713->opcode;
  D.52227 = D.52226 != 446;
  D.52228 = D.52226 != 763;
  D.52229 = D.52227 & D.52228;
  if (D.52229 != 0) goto <D.52230>; else goto <D.52224>;
  <D.52230>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.52231 = D.51713->opcode;
  D.52232 = D.52231 + 64981;
  D.52233 = D.52232 > 9;
  D.52234 = D.52231 + 64874;
  D.52235 = D.52234 > 9;
  D.52236 = D.52233 & D.52235;
  if (D.52236 != 0) goto <D.52237>; else goto <D.52224>;
  <D.52237>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.51752 = D.51713->opcode;
  D.51753 = D.51752 + 64884;
  if (D.51753 > 9) goto <D.52223>; else goto <D.52224>;
  <D.52223>:
  D.51712 = cfg->cbb;
  mono_link_bblock (cfg, D.51712, no_proxy_bb);
  <D.52224>:
  <D.52213>:
  D.51712 = cfg->cbb;
  D.51712->next_bb = no_proxy_bb;
  cfg->cbb = no_proxy_bb;
  mini_emit_isninst_cast (cfg, klass_reg, klass, false_bb, true_bb);
  <D.51979>:
  D.52238 = false_bb->cil_code;
  if (D.52238 != 0B) goto <D.52239>; else goto <D.52240>;
  <D.52239>:
  D.51732 = cfg->cil_offset_to_bb;
  D.52238 = false_bb->cil_code;
  D.52241 = (int) D.52238;
  D.51734 = cfg->cil_start;
  D.51735 = (int) D.51734;
  D.52242 = D.52241 - D.51735;
  D.52243 = (unsigned int) D.52242;
  D.52244 = D.52243 * 4;
  D.52245 = D.51732 + D.52244;
  *D.52245 = false_bb;
  <D.52240>:
  D.51740 = cfg->real_offset;
  false_bb->real_offset = D.51740;
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  if (D.51713 != 0B) goto <D.52249>; else goto <D.52246>;
  <D.52249>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.52250 = D.51713->opcode;
  D.52251 = D.52250 + 64981;
  D.52252 = D.52251 <= 9;
  D.52253 = D.52250 + 64874;
  D.52254 = D.52253 <= 9;
  D.52255 = D.52252 | D.52254;
  if (D.52255 != 0) goto <D.52247>; else goto <D.52256>;
  <D.52256>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.51752 = D.51713->opcode;
  D.51753 = D.51752 + 64884;
  if (D.51753 <= 9) goto <D.52247>; else goto <D.52246>;
  <D.52247>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.51754 = D.51713->data.op[1].many_blocks;
  D.51755 = D.51754 + 4;
  D.51756 = *D.51755;
  if (D.51756 == 0B) goto <D.52257>; else goto <D.52246>;
  <D.52257>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.51754 = D.51713->data.op[1].many_blocks;
  D.51755 = D.51754 + 4;
  *D.51755 = false_bb;
  D.51712 = cfg->cbb;
  mono_link_bblock (cfg, D.51712, false_bb);
  goto <D.52248>;
  <D.52246>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  if (D.51713 == 0B) goto <D.52258>; else goto <D.52260>;
  <D.52260>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.52261 = D.51713->opcode;
  D.52262 = D.52261 != 446;
  D.52263 = D.52261 != 763;
  D.52264 = D.52262 & D.52263;
  if (D.52264 != 0) goto <D.52265>; else goto <D.52259>;
  <D.52265>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.52266 = D.51713->opcode;
  D.52267 = D.52266 + 64981;
  D.52268 = D.52267 > 9;
  D.52269 = D.52266 + 64874;
  D.52270 = D.52269 > 9;
  D.52271 = D.52268 & D.52270;
  if (D.52271 != 0) goto <D.52272>; else goto <D.52259>;
  <D.52272>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.51752 = D.51713->opcode;
  D.51753 = D.51752 + 64884;
  if (D.51753 > 9) goto <D.52258>; else goto <D.52259>;
  <D.52258>:
  D.51712 = cfg->cbb;
  mono_link_bblock (cfg, D.51712, false_bb);
  <D.52259>:
  <D.52248>:
  D.51712 = cfg->cbb;
  D.51712->next_bb = false_bb;
  cfg->cbb = false_bb;
  {
    struct MonoInst * inst;

    D.51690 = cfg->mempool;
    inst = mono_mempool_alloc (D.51690, 48);
    inst->data.op[1].const_val = 0;
    D.52273 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52273;
    inst->prev = 0B;
    D.52274 = inst->prev;
    inst->next = D.52274;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52275 = inst->sreg3;
    inst->sreg2 = D.52275;
    D.52276 = inst->sreg2;
    inst->sreg1 = D.52276;
    D.51711 = cfg->ip;
    inst->cil_code = D.51711;
    inst->dreg = dreg;
    inst->data.op[0].const_val = 1;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.52277>; else goto <D.52278>;
    <D.52277>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51713->next = inst;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    inst->prev = D.51713;
    D.51712 = cfg->cbb;
    D.51712->last_ins = inst;
    goto <D.52279>;
    <D.52278>:
    D.51712 = cfg->cbb;
    D.51712 = cfg->cbb;
    D.51712->last_ins = inst;
    D.51713 = D.51712->last_ins;
    D.51712->code = D.51713;
    <D.52279>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.51690 = cfg->mempool;
    ins = mono_mempool_alloc (D.51690, 48);
    ins->data.op[1].const_val = 0;
    D.52280 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.52280;
    ins->prev = 0B;
    D.52281 = ins->prev;
    ins->next = D.52281;
    ins->opcode = 446;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.52282 = ins->sreg3;
    ins->sreg2 = D.52282;
    D.52283 = ins->sreg2;
    ins->sreg1 = D.52283;
    D.51711 = cfg->ip;
    ins->cil_code = D.51711;
    if (1 != 0) goto <D.52284>; else goto <D.52285>;
    <D.52284>:
    D.51690 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.51690, 172);
    D.51691 = cfg->num_bblocks;
    D.52286 = D.51691;
    D.52287 = D.52286 + 1;
    cfg->num_bblocks = D.52287;
    D.52288 = (int) D.52286;
    falsebb->block_num = D.52288;
    ins->data.op[0].target_block = end_bb;
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, end_bb);
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.52289>; else goto <D.52290>;
    <D.52289>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51713->next = ins;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    ins->prev = D.51713;
    D.51712 = cfg->cbb;
    D.51712->last_ins = ins;
    goto <D.52291>;
    <D.52290>:
    D.51712 = cfg->cbb;
    D.51712 = cfg->cbb;
    D.51712->last_ins = ins;
    D.51713 = D.51712->last_ins;
    D.51712->code = D.51713;
    <D.52291>:
    D.52292 = falsebb->cil_code;
    if (D.52292 != 0B) goto <D.52293>; else goto <D.52294>;
    <D.52293>:
    D.51732 = cfg->cil_offset_to_bb;
    D.52292 = falsebb->cil_code;
    D.52295 = (int) D.52292;
    D.51734 = cfg->cil_start;
    D.51735 = (int) D.51734;
    D.52296 = D.52295 - D.51735;
    D.52297 = (unsigned int) D.52296;
    D.52298 = D.52297 * 4;
    D.52299 = D.51732 + D.52298;
    *D.52299 = falsebb;
    <D.52294>:
    D.51740 = cfg->real_offset;
    falsebb->real_offset = D.51740;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.52303>; else goto <D.52300>;
    <D.52303>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.52304 = D.51713->opcode;
    D.52305 = D.52304 + 64981;
    D.52306 = D.52305 <= 9;
    D.52307 = D.52304 + 64874;
    D.52308 = D.52307 <= 9;
    D.52309 = D.52306 | D.52308;
    if (D.52309 != 0) goto <D.52301>; else goto <D.52310>;
    <D.52310>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51752 = D.51713->opcode;
    D.51753 = D.51752 + 64884;
    if (D.51753 <= 9) goto <D.52301>; else goto <D.52300>;
    <D.52301>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51754 = D.51713->data.op[1].many_blocks;
    D.51755 = D.51754 + 4;
    D.51756 = *D.51755;
    if (D.51756 == 0B) goto <D.52311>; else goto <D.52300>;
    <D.52311>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51754 = D.51713->data.op[1].many_blocks;
    D.51755 = D.51754 + 4;
    *D.51755 = falsebb;
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, falsebb);
    goto <D.52302>;
    <D.52300>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 == 0B) goto <D.52312>; else goto <D.52314>;
    <D.52314>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.52315 = D.51713->opcode;
    D.52316 = D.52315 != 446;
    D.52317 = D.52315 != 763;
    D.52318 = D.52316 & D.52317;
    if (D.52318 != 0) goto <D.52319>; else goto <D.52313>;
    <D.52319>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.52320 = D.51713->opcode;
    D.52321 = D.52320 + 64981;
    D.52322 = D.52321 > 9;
    D.52323 = D.52320 + 64874;
    D.52324 = D.52323 > 9;
    D.52325 = D.52322 & D.52324;
    if (D.52325 != 0) goto <D.52326>; else goto <D.52313>;
    <D.52326>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51752 = D.51713->opcode;
    D.51753 = D.51752 + 64884;
    if (D.51753 > 9) goto <D.52312>; else goto <D.52313>;
    <D.52312>:
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, falsebb);
    <D.52313>:
    <D.52302>:
    D.51712 = cfg->cbb;
    D.51712->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.52327>;
    <D.52285>:
    D.51690 = cfg->mempool;
    D.52328 = mono_mempool_alloc (D.51690, 8);
    ins->data.op[1].many_blocks = D.52328;
    D.52329 = ins->data.op[1].many_blocks;
    *D.52329 = end_bb;
    D.52329 = ins->data.op[1].many_blocks;
    D.52330 = D.52329 + 4;
    *D.52330 = 0B;
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, end_bb);
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.52331>; else goto <D.52332>;
    <D.52331>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51713->next = ins;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    ins->prev = D.51713;
    D.51712 = cfg->cbb;
    D.51712->last_ins = ins;
    goto <D.52333>;
    <D.52332>:
    D.51712 = cfg->cbb;
    D.51712 = cfg->cbb;
    D.51712->last_ins = ins;
    D.51713 = D.51712->last_ins;
    D.51712->code = D.51713;
    <D.52333>:
    D.51780 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.51781 = D.51780 & 8;
    if (D.51781 == 0) goto <D.52334>; else goto <D.52335>;
    <D.52334>:
    D.51690 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.51690, 172);
    D.51691 = cfg->num_bblocks;
    D.52336 = D.51691;
    D.52337 = D.52336 + 1;
    cfg->num_bblocks = D.52337;
    D.52338 = (int) D.52336;
    falsebb->block_num = D.52338;
    D.52329 = ins->data.op[1].many_blocks;
    D.52330 = D.52329 + 4;
    *D.52330 = falsebb;
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, falsebb);
    D.52292 = falsebb->cil_code;
    if (D.52292 != 0B) goto <D.52339>; else goto <D.52340>;
    <D.52339>:
    D.51732 = cfg->cil_offset_to_bb;
    D.52292 = falsebb->cil_code;
    D.52295 = (int) D.52292;
    D.51734 = cfg->cil_start;
    D.51735 = (int) D.51734;
    D.52296 = D.52295 - D.51735;
    D.52297 = (unsigned int) D.52296;
    D.52298 = D.52297 * 4;
    D.52299 = D.51732 + D.52298;
    *D.52299 = falsebb;
    <D.52340>:
    D.51740 = cfg->real_offset;
    falsebb->real_offset = D.51740;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.52344>; else goto <D.52341>;
    <D.52344>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.52345 = D.51713->opcode;
    D.52346 = D.52345 + 64981;
    D.52347 = D.52346 <= 9;
    D.52348 = D.52345 + 64874;
    D.52349 = D.52348 <= 9;
    D.52350 = D.52347 | D.52349;
    if (D.52350 != 0) goto <D.52342>; else goto <D.52351>;
    <D.52351>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51752 = D.51713->opcode;
    D.51753 = D.51752 + 64884;
    if (D.51753 <= 9) goto <D.52342>; else goto <D.52341>;
    <D.52342>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51754 = D.51713->data.op[1].many_blocks;
    D.51755 = D.51754 + 4;
    D.51756 = *D.51755;
    if (D.51756 == 0B) goto <D.52352>; else goto <D.52341>;
    <D.52352>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51754 = D.51713->data.op[1].many_blocks;
    D.51755 = D.51754 + 4;
    *D.51755 = falsebb;
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, falsebb);
    goto <D.52343>;
    <D.52341>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 == 0B) goto <D.52353>; else goto <D.52355>;
    <D.52355>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.52356 = D.51713->opcode;
    D.52357 = D.52356 != 446;
    D.52358 = D.52356 != 763;
    D.52359 = D.52357 & D.52358;
    if (D.52359 != 0) goto <D.52360>; else goto <D.52354>;
    <D.52360>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.52361 = D.51713->opcode;
    D.52362 = D.52361 + 64981;
    D.52363 = D.52362 > 9;
    D.52364 = D.52361 + 64874;
    D.52365 = D.52364 > 9;
    D.52366 = D.52363 & D.52365;
    if (D.52366 != 0) goto <D.52367>; else goto <D.52354>;
    <D.52367>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51752 = D.51713->opcode;
    D.51753 = D.51752 + 64884;
    if (D.51753 > 9) goto <D.52353>; else goto <D.52354>;
    <D.52353>:
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, falsebb);
    <D.52354>:
    <D.52343>:
    D.51712 = cfg->cbb;
    D.51712->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.52368>;
    <D.52335>:
    D.51712 = cfg->cbb;
    D.51712->extended = 1;
    <D.52368>:
    <D.52327>:
  }
  D.52369 = false2_bb->cil_code;
  if (D.52369 != 0B) goto <D.52370>; else goto <D.52371>;
  <D.52370>:
  D.51732 = cfg->cil_offset_to_bb;
  D.52369 = false2_bb->cil_code;
  D.52372 = (int) D.52369;
  D.51734 = cfg->cil_start;
  D.51735 = (int) D.51734;
  D.52373 = D.52372 - D.51735;
  D.52374 = (unsigned int) D.52373;
  D.52375 = D.52374 * 4;
  D.52376 = D.51732 + D.52375;
  *D.52376 = false2_bb;
  <D.52371>:
  D.51740 = cfg->real_offset;
  false2_bb->real_offset = D.51740;
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  if (D.51713 != 0B) goto <D.52380>; else goto <D.52377>;
  <D.52380>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.52381 = D.51713->opcode;
  D.52382 = D.52381 + 64981;
  D.52383 = D.52382 <= 9;
  D.52384 = D.52381 + 64874;
  D.52385 = D.52384 <= 9;
  D.52386 = D.52383 | D.52385;
  if (D.52386 != 0) goto <D.52378>; else goto <D.52387>;
  <D.52387>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.51752 = D.51713->opcode;
  D.51753 = D.51752 + 64884;
  if (D.51753 <= 9) goto <D.52378>; else goto <D.52377>;
  <D.52378>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.51754 = D.51713->data.op[1].many_blocks;
  D.51755 = D.51754 + 4;
  D.51756 = *D.51755;
  if (D.51756 == 0B) goto <D.52388>; else goto <D.52377>;
  <D.52388>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.51754 = D.51713->data.op[1].many_blocks;
  D.51755 = D.51754 + 4;
  *D.51755 = false2_bb;
  D.51712 = cfg->cbb;
  mono_link_bblock (cfg, D.51712, false2_bb);
  goto <D.52379>;
  <D.52377>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  if (D.51713 == 0B) goto <D.52389>; else goto <D.52391>;
  <D.52391>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.52392 = D.51713->opcode;
  D.52393 = D.52392 != 446;
  D.52394 = D.52392 != 763;
  D.52395 = D.52393 & D.52394;
  if (D.52395 != 0) goto <D.52396>; else goto <D.52390>;
  <D.52396>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.52397 = D.51713->opcode;
  D.52398 = D.52397 + 64981;
  D.52399 = D.52398 > 9;
  D.52400 = D.52397 + 64874;
  D.52401 = D.52400 > 9;
  D.52402 = D.52399 & D.52401;
  if (D.52402 != 0) goto <D.52403>; else goto <D.52390>;
  <D.52403>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.51752 = D.51713->opcode;
  D.51753 = D.51752 + 64884;
  if (D.51753 > 9) goto <D.52389>; else goto <D.52390>;
  <D.52389>:
  D.51712 = cfg->cbb;
  mono_link_bblock (cfg, D.51712, false2_bb);
  <D.52390>:
  <D.52379>:
  D.51712 = cfg->cbb;
  D.51712->next_bb = false2_bb;
  cfg->cbb = false2_bb;
  {
    struct MonoInst * inst;

    D.51690 = cfg->mempool;
    inst = mono_mempool_alloc (D.51690, 48);
    inst->data.op[1].const_val = 0;
    D.52404 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52404;
    inst->prev = 0B;
    D.52405 = inst->prev;
    inst->next = D.52405;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52406 = inst->sreg3;
    inst->sreg2 = D.52406;
    D.52407 = inst->sreg2;
    inst->sreg1 = D.52407;
    D.51711 = cfg->ip;
    inst->cil_code = D.51711;
    inst->dreg = dreg;
    inst->data.op[0].const_val = 2;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.52408>; else goto <D.52409>;
    <D.52408>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51713->next = inst;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    inst->prev = D.51713;
    D.51712 = cfg->cbb;
    D.51712->last_ins = inst;
    goto <D.52410>;
    <D.52409>:
    D.51712 = cfg->cbb;
    D.51712 = cfg->cbb;
    D.51712->last_ins = inst;
    D.51713 = D.51712->last_ins;
    D.51712->code = D.51713;
    <D.52410>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.51690 = cfg->mempool;
    ins = mono_mempool_alloc (D.51690, 48);
    ins->data.op[1].const_val = 0;
    D.52411 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.52411;
    ins->prev = 0B;
    D.52412 = ins->prev;
    ins->next = D.52412;
    ins->opcode = 446;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.52413 = ins->sreg3;
    ins->sreg2 = D.52413;
    D.52414 = ins->sreg2;
    ins->sreg1 = D.52414;
    D.51711 = cfg->ip;
    ins->cil_code = D.51711;
    if (1 != 0) goto <D.52415>; else goto <D.52416>;
    <D.52415>:
    D.51690 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.51690, 172);
    D.51691 = cfg->num_bblocks;
    D.52417 = D.51691;
    D.52418 = D.52417 + 1;
    cfg->num_bblocks = D.52418;
    D.52419 = (int) D.52417;
    falsebb->block_num = D.52419;
    ins->data.op[0].target_block = end_bb;
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, end_bb);
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.52420>; else goto <D.52421>;
    <D.52420>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51713->next = ins;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    ins->prev = D.51713;
    D.51712 = cfg->cbb;
    D.51712->last_ins = ins;
    goto <D.52422>;
    <D.52421>:
    D.51712 = cfg->cbb;
    D.51712 = cfg->cbb;
    D.51712->last_ins = ins;
    D.51713 = D.51712->last_ins;
    D.51712->code = D.51713;
    <D.52422>:
    D.52423 = falsebb->cil_code;
    if (D.52423 != 0B) goto <D.52424>; else goto <D.52425>;
    <D.52424>:
    D.51732 = cfg->cil_offset_to_bb;
    D.52423 = falsebb->cil_code;
    D.52426 = (int) D.52423;
    D.51734 = cfg->cil_start;
    D.51735 = (int) D.51734;
    D.52427 = D.52426 - D.51735;
    D.52428 = (unsigned int) D.52427;
    D.52429 = D.52428 * 4;
    D.52430 = D.51732 + D.52429;
    *D.52430 = falsebb;
    <D.52425>:
    D.51740 = cfg->real_offset;
    falsebb->real_offset = D.51740;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.52434>; else goto <D.52431>;
    <D.52434>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.52435 = D.51713->opcode;
    D.52436 = D.52435 + 64981;
    D.52437 = D.52436 <= 9;
    D.52438 = D.52435 + 64874;
    D.52439 = D.52438 <= 9;
    D.52440 = D.52437 | D.52439;
    if (D.52440 != 0) goto <D.52432>; else goto <D.52441>;
    <D.52441>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51752 = D.51713->opcode;
    D.51753 = D.51752 + 64884;
    if (D.51753 <= 9) goto <D.52432>; else goto <D.52431>;
    <D.52432>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51754 = D.51713->data.op[1].many_blocks;
    D.51755 = D.51754 + 4;
    D.51756 = *D.51755;
    if (D.51756 == 0B) goto <D.52442>; else goto <D.52431>;
    <D.52442>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51754 = D.51713->data.op[1].many_blocks;
    D.51755 = D.51754 + 4;
    *D.51755 = falsebb;
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, falsebb);
    goto <D.52433>;
    <D.52431>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 == 0B) goto <D.52443>; else goto <D.52445>;
    <D.52445>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.52446 = D.51713->opcode;
    D.52447 = D.52446 != 446;
    D.52448 = D.52446 != 763;
    D.52449 = D.52447 & D.52448;
    if (D.52449 != 0) goto <D.52450>; else goto <D.52444>;
    <D.52450>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.52451 = D.51713->opcode;
    D.52452 = D.52451 + 64981;
    D.52453 = D.52452 > 9;
    D.52454 = D.52451 + 64874;
    D.52455 = D.52454 > 9;
    D.52456 = D.52453 & D.52455;
    if (D.52456 != 0) goto <D.52457>; else goto <D.52444>;
    <D.52457>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51752 = D.51713->opcode;
    D.51753 = D.51752 + 64884;
    if (D.51753 > 9) goto <D.52443>; else goto <D.52444>;
    <D.52443>:
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, falsebb);
    <D.52444>:
    <D.52433>:
    D.51712 = cfg->cbb;
    D.51712->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.52458>;
    <D.52416>:
    D.51690 = cfg->mempool;
    D.52459 = mono_mempool_alloc (D.51690, 8);
    ins->data.op[1].many_blocks = D.52459;
    D.52460 = ins->data.op[1].many_blocks;
    *D.52460 = end_bb;
    D.52460 = ins->data.op[1].many_blocks;
    D.52461 = D.52460 + 4;
    *D.52461 = 0B;
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, end_bb);
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.52462>; else goto <D.52463>;
    <D.52462>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51713->next = ins;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    ins->prev = D.51713;
    D.51712 = cfg->cbb;
    D.51712->last_ins = ins;
    goto <D.52464>;
    <D.52463>:
    D.51712 = cfg->cbb;
    D.51712 = cfg->cbb;
    D.51712->last_ins = ins;
    D.51713 = D.51712->last_ins;
    D.51712->code = D.51713;
    <D.52464>:
    D.51780 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.51781 = D.51780 & 8;
    if (D.51781 == 0) goto <D.52465>; else goto <D.52466>;
    <D.52465>:
    D.51690 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.51690, 172);
    D.51691 = cfg->num_bblocks;
    D.52467 = D.51691;
    D.52468 = D.52467 + 1;
    cfg->num_bblocks = D.52468;
    D.52469 = (int) D.52467;
    falsebb->block_num = D.52469;
    D.52460 = ins->data.op[1].many_blocks;
    D.52461 = D.52460 + 4;
    *D.52461 = falsebb;
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, falsebb);
    D.52423 = falsebb->cil_code;
    if (D.52423 != 0B) goto <D.52470>; else goto <D.52471>;
    <D.52470>:
    D.51732 = cfg->cil_offset_to_bb;
    D.52423 = falsebb->cil_code;
    D.52426 = (int) D.52423;
    D.51734 = cfg->cil_start;
    D.51735 = (int) D.51734;
    D.52427 = D.52426 - D.51735;
    D.52428 = (unsigned int) D.52427;
    D.52429 = D.52428 * 4;
    D.52430 = D.51732 + D.52429;
    *D.52430 = falsebb;
    <D.52471>:
    D.51740 = cfg->real_offset;
    falsebb->real_offset = D.51740;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.52475>; else goto <D.52472>;
    <D.52475>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.52476 = D.51713->opcode;
    D.52477 = D.52476 + 64981;
    D.52478 = D.52477 <= 9;
    D.52479 = D.52476 + 64874;
    D.52480 = D.52479 <= 9;
    D.52481 = D.52478 | D.52480;
    if (D.52481 != 0) goto <D.52473>; else goto <D.52482>;
    <D.52482>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51752 = D.51713->opcode;
    D.51753 = D.51752 + 64884;
    if (D.51753 <= 9) goto <D.52473>; else goto <D.52472>;
    <D.52473>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51754 = D.51713->data.op[1].many_blocks;
    D.51755 = D.51754 + 4;
    D.51756 = *D.51755;
    if (D.51756 == 0B) goto <D.52483>; else goto <D.52472>;
    <D.52483>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51754 = D.51713->data.op[1].many_blocks;
    D.51755 = D.51754 + 4;
    *D.51755 = falsebb;
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, falsebb);
    goto <D.52474>;
    <D.52472>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 == 0B) goto <D.52484>; else goto <D.52486>;
    <D.52486>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.52487 = D.51713->opcode;
    D.52488 = D.52487 != 446;
    D.52489 = D.52487 != 763;
    D.52490 = D.52488 & D.52489;
    if (D.52490 != 0) goto <D.52491>; else goto <D.52485>;
    <D.52491>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.52492 = D.51713->opcode;
    D.52493 = D.52492 + 64981;
    D.52494 = D.52493 > 9;
    D.52495 = D.52492 + 64874;
    D.52496 = D.52495 > 9;
    D.52497 = D.52494 & D.52496;
    if (D.52497 != 0) goto <D.52498>; else goto <D.52485>;
    <D.52498>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51752 = D.51713->opcode;
    D.51753 = D.51752 + 64884;
    if (D.51753 > 9) goto <D.52484>; else goto <D.52485>;
    <D.52484>:
    D.51712 = cfg->cbb;
    mono_link_bblock (cfg, D.51712, falsebb);
    <D.52485>:
    <D.52474>:
    D.51712 = cfg->cbb;
    D.51712->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.52499>;
    <D.52466>:
    D.51712 = cfg->cbb;
    D.51712->extended = 1;
    <D.52499>:
    <D.52458>:
  }
  D.52500 = true_bb->cil_code;
  if (D.52500 != 0B) goto <D.52501>; else goto <D.52502>;
  <D.52501>:
  D.51732 = cfg->cil_offset_to_bb;
  D.52500 = true_bb->cil_code;
  D.52503 = (int) D.52500;
  D.51734 = cfg->cil_start;
  D.51735 = (int) D.51734;
  D.52504 = D.52503 - D.51735;
  D.52505 = (unsigned int) D.52504;
  D.52506 = D.52505 * 4;
  D.52507 = D.51732 + D.52506;
  *D.52507 = true_bb;
  <D.52502>:
  D.51740 = cfg->real_offset;
  true_bb->real_offset = D.51740;
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  if (D.51713 != 0B) goto <D.52511>; else goto <D.52508>;
  <D.52511>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.52512 = D.51713->opcode;
  D.52513 = D.52512 + 64981;
  D.52514 = D.52513 <= 9;
  D.52515 = D.52512 + 64874;
  D.52516 = D.52515 <= 9;
  D.52517 = D.52514 | D.52516;
  if (D.52517 != 0) goto <D.52509>; else goto <D.52518>;
  <D.52518>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.51752 = D.51713->opcode;
  D.51753 = D.51752 + 64884;
  if (D.51753 <= 9) goto <D.52509>; else goto <D.52508>;
  <D.52509>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.51754 = D.51713->data.op[1].many_blocks;
  D.51755 = D.51754 + 4;
  D.51756 = *D.51755;
  if (D.51756 == 0B) goto <D.52519>; else goto <D.52508>;
  <D.52519>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.51754 = D.51713->data.op[1].many_blocks;
  D.51755 = D.51754 + 4;
  *D.51755 = true_bb;
  D.51712 = cfg->cbb;
  mono_link_bblock (cfg, D.51712, true_bb);
  goto <D.52510>;
  <D.52508>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  if (D.51713 == 0B) goto <D.52520>; else goto <D.52522>;
  <D.52522>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.52523 = D.51713->opcode;
  D.52524 = D.52523 != 446;
  D.52525 = D.52523 != 763;
  D.52526 = D.52524 & D.52525;
  if (D.52526 != 0) goto <D.52527>; else goto <D.52521>;
  <D.52527>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.52528 = D.51713->opcode;
  D.52529 = D.52528 + 64981;
  D.52530 = D.52529 > 9;
  D.52531 = D.52528 + 64874;
  D.52532 = D.52531 > 9;
  D.52533 = D.52530 & D.52532;
  if (D.52533 != 0) goto <D.52534>; else goto <D.52521>;
  <D.52534>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.51752 = D.51713->opcode;
  D.51753 = D.51752 + 64884;
  if (D.51753 > 9) goto <D.52520>; else goto <D.52521>;
  <D.52520>:
  D.51712 = cfg->cbb;
  mono_link_bblock (cfg, D.51712, true_bb);
  <D.52521>:
  <D.52510>:
  D.51712 = cfg->cbb;
  D.51712->next_bb = true_bb;
  cfg->cbb = true_bb;
  {
    struct MonoInst * inst;

    D.51690 = cfg->mempool;
    inst = mono_mempool_alloc (D.51690, 48);
    inst->data.op[1].const_val = 0;
    D.52535 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52535;
    inst->prev = 0B;
    D.52536 = inst->prev;
    inst->next = D.52536;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52537 = inst->sreg3;
    inst->sreg2 = D.52537;
    D.52538 = inst->sreg2;
    inst->sreg1 = D.52538;
    D.51711 = cfg->ip;
    inst->cil_code = D.51711;
    inst->dreg = dreg;
    inst->data.op[0].const_val = 0;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    if (D.51713 != 0B) goto <D.52539>; else goto <D.52540>;
    <D.52539>:
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    D.51713->next = inst;
    D.51712 = cfg->cbb;
    D.51713 = D.51712->last_ins;
    inst->prev = D.51713;
    D.51712 = cfg->cbb;
    D.51712->last_ins = inst;
    goto <D.52541>;
    <D.52540>:
    D.51712 = cfg->cbb;
    D.51712 = cfg->cbb;
    D.51712->last_ins = inst;
    D.51713 = D.51712->last_ins;
    D.51712->code = D.51713;
    <D.52541>:
  }
  D.52542 = end_bb->cil_code;
  if (D.52542 != 0B) goto <D.52543>; else goto <D.52544>;
  <D.52543>:
  D.51732 = cfg->cil_offset_to_bb;
  D.52542 = end_bb->cil_code;
  D.52545 = (int) D.52542;
  D.51734 = cfg->cil_start;
  D.51735 = (int) D.51734;
  D.52546 = D.52545 - D.51735;
  D.52547 = (unsigned int) D.52546;
  D.52548 = D.52547 * 4;
  D.52549 = D.51732 + D.52548;
  *D.52549 = end_bb;
  <D.52544>:
  D.51740 = cfg->real_offset;
  end_bb->real_offset = D.51740;
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  if (D.51713 != 0B) goto <D.52553>; else goto <D.52550>;
  <D.52553>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.52554 = D.51713->opcode;
  D.52555 = D.52554 + 64981;
  D.52556 = D.52555 <= 9;
  D.52557 = D.52554 + 64874;
  D.52558 = D.52557 <= 9;
  D.52559 = D.52556 | D.52558;
  if (D.52559 != 0) goto <D.52551>; else goto <D.52560>;
  <D.52560>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.51752 = D.51713->opcode;
  D.51753 = D.51752 + 64884;
  if (D.51753 <= 9) goto <D.52551>; else goto <D.52550>;
  <D.52551>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.51754 = D.51713->data.op[1].many_blocks;
  D.51755 = D.51754 + 4;
  D.51756 = *D.51755;
  if (D.51756 == 0B) goto <D.52561>; else goto <D.52550>;
  <D.52561>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.51754 = D.51713->data.op[1].many_blocks;
  D.51755 = D.51754 + 4;
  *D.51755 = end_bb;
  D.51712 = cfg->cbb;
  mono_link_bblock (cfg, D.51712, end_bb);
  goto <D.52552>;
  <D.52550>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  if (D.51713 == 0B) goto <D.52562>; else goto <D.52564>;
  <D.52564>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.52565 = D.51713->opcode;
  D.52566 = D.52565 != 446;
  D.52567 = D.52565 != 763;
  D.52568 = D.52566 & D.52567;
  if (D.52568 != 0) goto <D.52569>; else goto <D.52563>;
  <D.52569>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.52570 = D.51713->opcode;
  D.52571 = D.52570 + 64981;
  D.52572 = D.52571 > 9;
  D.52573 = D.52570 + 64874;
  D.52574 = D.52573 > 9;
  D.52575 = D.52572 & D.52574;
  if (D.52575 != 0) goto <D.52576>; else goto <D.52563>;
  <D.52576>:
  D.51712 = cfg->cbb;
  D.51713 = D.51712->last_ins;
  D.51752 = D.51713->opcode;
  D.51753 = D.51752 + 64884;
  if (D.51753 > 9) goto <D.52562>; else goto <D.52563>;
  <D.52562>:
  D.51712 = cfg->cbb;
  mono_link_bblock (cfg, D.51712, end_bb);
  <D.52563>:
  <D.52552>:
  D.51712 = cfg->cbb;
  D.51712->next_bb = end_bb;
  cfg->cbb = end_bb;
  D.51690 = cfg->mempool;
  ins = mono_mempool_alloc (D.51690, 48);
  ins->data.op[1].const_val = 0;
  D.52577 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.52577;
  ins->prev = 0B;
  D.52578 = ins->prev;
  ins->next = D.52578;
  ins->opcode = 362;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.52579 = ins->sreg3;
  ins->sreg2 = D.52579;
  D.52580 = ins->sreg2;
  ins->sreg1 = D.52580;
  D.51711 = cfg->ip;
  ins->cil_code = D.51711;
  ins->dreg = dreg;
  ins->type = 1;
  D.52581 = ins;
  return D.52581;
}


handle_ccastclass (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * src)
{
  unsigned int D.52583;
  unsigned int D.52584;
  unsigned int D.52585;
  struct MonoMemPool * D.52586;
  unsigned int D.52587;
  unsigned int D.52588;
  unsigned int D.52589;
  int D.52590;
  unsigned int D.52591;
  unsigned int D.52592;
  int D.52593;
  int D.52594;
  struct MonoInst * D.52595;
  int D.52596;
  int D.52597;
  const unsigned char * D.52598;
  struct MonoBasicBlock * D.52599;
  struct MonoInst * D.52600;
  int D.52604;
  struct MonoInst * D.52605;
  int D.52606;
  int D.52607;
  unsigned int D.52610;
  unsigned int D.52611;
  int D.52612;
  unsigned char * D.52616;
  struct MonoBasicBlock * * D.52619;
  int D.52620;
  unsigned char * D.52621;
  int D.52622;
  int D.52623;
  unsigned int D.52624;
  unsigned int D.52625;
  struct MonoBasicBlock * * D.52626;
  unsigned int D.52627;
  short unsigned int D.52632;
  short unsigned int D.52633;
  _Bool D.52634;
  short unsigned int D.52635;
  _Bool D.52636;
  _Bool D.52637;
  short unsigned int D.52639;
  short unsigned int D.52640;
  struct MonoBasicBlock * * D.52641;
  struct MonoBasicBlock * * D.52642;
  struct MonoBasicBlock * D.52643;
  short unsigned int D.52648;
  _Bool D.52649;
  _Bool D.52650;
  _Bool D.52651;
  short unsigned int D.52653;
  short unsigned int D.52654;
  _Bool D.52655;
  short unsigned int D.52656;
  _Bool D.52657;
  _Bool D.52658;
  void * D.52661;
  struct MonoBasicBlock * * D.52662;
  struct MonoBasicBlock * * D.52663;
  unsigned char D.52667;
  unsigned char D.52668;
  unsigned int D.52671;
  unsigned int D.52672;
  int D.52673;
  short unsigned int D.52680;
  short unsigned int D.52681;
  _Bool D.52682;
  short unsigned int D.52683;
  _Bool D.52684;
  _Bool D.52685;
  short unsigned int D.52691;
  _Bool D.52692;
  _Bool D.52693;
  _Bool D.52694;
  short unsigned int D.52696;
  short unsigned int D.52697;
  _Bool D.52698;
  short unsigned int D.52699;
  _Bool D.52700;
  _Bool D.52701;
  unsigned int D.52704;
  unsigned int D.52705;
  unsigned int D.52708;
  unsigned int D.52709;
  int D.52710;
  int D.52711;
  struct MonoInst * D.52712;
  int D.52713;
  int D.52714;
  unsigned char * D.52718;
  int D.52721;
  int D.52722;
  unsigned int D.52723;
  unsigned int D.52724;
  struct MonoBasicBlock * * D.52725;
  short unsigned int D.52730;
  short unsigned int D.52731;
  _Bool D.52732;
  short unsigned int D.52733;
  _Bool D.52734;
  _Bool D.52735;
  short unsigned int D.52741;
  _Bool D.52742;
  _Bool D.52743;
  _Bool D.52744;
  short unsigned int D.52746;
  short unsigned int D.52747;
  _Bool D.52748;
  short unsigned int D.52749;
  _Bool D.52750;
  _Bool D.52751;
  int D.52753;
  struct MonoInst * D.52754;
  int D.52755;
  int D.52756;
  struct MonoClass * D.52760;
  unsigned int D.52761;
  int D.52762;
  struct MonoInst * D.52763;
  int D.52764;
  int D.52765;
  int D.52769;
  struct MonoInst * D.52770;
  int D.52771;
  int D.52772;
  int D.52776;
  struct MonoInst * D.52777;
  int D.52778;
  int D.52779;
  int D.52783;
  struct MonoInst * D.52784;
  int D.52785;
  int D.52786;
  int D.52790;
  struct MonoInst * D.52791;
  int D.52792;
  int D.52793;
  unsigned int D.52796;
  unsigned int D.52797;
  int D.52798;
  unsigned char * D.52802;
  int D.52805;
  int D.52806;
  unsigned int D.52807;
  unsigned int D.52808;
  struct MonoBasicBlock * * D.52809;
  short unsigned int D.52814;
  short unsigned int D.52815;
  _Bool D.52816;
  short unsigned int D.52817;
  _Bool D.52818;
  _Bool D.52819;
  short unsigned int D.52825;
  _Bool D.52826;
  _Bool D.52827;
  _Bool D.52828;
  short unsigned int D.52830;
  short unsigned int D.52831;
  _Bool D.52832;
  short unsigned int D.52833;
  _Bool D.52834;
  _Bool D.52835;
  void * D.52838;
  struct MonoBasicBlock * * D.52839;
  struct MonoBasicBlock * * D.52840;
  unsigned int D.52846;
  unsigned int D.52847;
  int D.52848;
  short unsigned int D.52855;
  short unsigned int D.52856;
  _Bool D.52857;
  short unsigned int D.52858;
  _Bool D.52859;
  _Bool D.52860;
  short unsigned int D.52866;
  _Bool D.52867;
  _Bool D.52868;
  _Bool D.52869;
  short unsigned int D.52871;
  short unsigned int D.52872;
  _Bool D.52873;
  short unsigned int D.52874;
  _Bool D.52875;
  _Bool D.52876;
  unsigned int D.52880;
  unsigned int D.52881;
  int D.52882;
  int D.52883;
  struct MonoInst * D.52884;
  int D.52885;
  int D.52886;
  int D.52890;
  struct MonoInst * D.52891;
  int D.52892;
  int D.52893;
  unsigned int D.52897;
  int D.52898;
  struct MonoInst * D.52899;
  int D.52900;
  int D.52901;
  int D.52905;
  struct MonoInst * D.52906;
  int D.52907;
  int D.52908;
  unsigned int D.52912;
  int D.52913;
  struct MonoInst * D.52914;
  int D.52915;
  int D.52916;
  int D.52920;
  struct MonoInst * D.52921;
  int D.52922;
  int D.52923;
  int D.52927;
  struct MonoInst * D.52928;
  int D.52929;
  int D.52930;
  unsigned int D.52933;
  unsigned int D.52934;
  int D.52935;
  unsigned char * D.52939;
  int D.52942;
  int D.52943;
  unsigned int D.52944;
  unsigned int D.52945;
  struct MonoBasicBlock * * D.52946;
  short unsigned int D.52951;
  short unsigned int D.52952;
  _Bool D.52953;
  short unsigned int D.52954;
  _Bool D.52955;
  _Bool D.52956;
  short unsigned int D.52962;
  _Bool D.52963;
  _Bool D.52964;
  _Bool D.52965;
  short unsigned int D.52967;
  short unsigned int D.52968;
  _Bool D.52969;
  short unsigned int D.52970;
  _Bool D.52971;
  _Bool D.52972;
  void * D.52975;
  struct MonoBasicBlock * * D.52976;
  struct MonoBasicBlock * * D.52977;
  unsigned int D.52983;
  unsigned int D.52984;
  int D.52985;
  short unsigned int D.52992;
  short unsigned int D.52993;
  _Bool D.52994;
  short unsigned int D.52995;
  _Bool D.52996;
  _Bool D.52997;
  short unsigned int D.53003;
  _Bool D.53004;
  _Bool D.53005;
  _Bool D.53006;
  short unsigned int D.53008;
  short unsigned int D.53009;
  _Bool D.53010;
  short unsigned int D.53011;
  _Bool D.53012;
  _Bool D.53013;
  unsigned int D.53016;
  unsigned int D.53017;
  int D.53018;
  unsigned char * D.53019;
  int D.53022;
  int D.53023;
  unsigned int D.53024;
  unsigned int D.53025;
  struct MonoBasicBlock * * D.53026;
  short unsigned int D.53031;
  short unsigned int D.53032;
  _Bool D.53033;
  short unsigned int D.53034;
  _Bool D.53035;
  _Bool D.53036;
  short unsigned int D.53042;
  _Bool D.53043;
  _Bool D.53044;
  _Bool D.53045;
  short unsigned int D.53047;
  short unsigned int D.53048;
  _Bool D.53049;
  short unsigned int D.53050;
  _Bool D.53051;
  _Bool D.53052;
  int D.53054;
  struct MonoInst * D.53055;
  int D.53056;
  int D.53057;
  int D.53061;
  struct MonoInst * D.53062;
  int D.53063;
  int D.53064;
  unsigned int D.53067;
  unsigned int D.53068;
  int D.53069;
  unsigned char * D.53073;
  int D.53076;
  int D.53077;
  unsigned int D.53078;
  unsigned int D.53079;
  struct MonoBasicBlock * * D.53080;
  short unsigned int D.53085;
  short unsigned int D.53086;
  _Bool D.53087;
  short unsigned int D.53088;
  _Bool D.53089;
  _Bool D.53090;
  short unsigned int D.53096;
  _Bool D.53097;
  _Bool D.53098;
  _Bool D.53099;
  short unsigned int D.53101;
  short unsigned int D.53102;
  _Bool D.53103;
  short unsigned int D.53104;
  _Bool D.53105;
  _Bool D.53106;
  void * D.53109;
  struct MonoBasicBlock * * D.53110;
  struct MonoBasicBlock * * D.53111;
  unsigned int D.53117;
  unsigned int D.53118;
  int D.53119;
  short unsigned int D.53126;
  short unsigned int D.53127;
  _Bool D.53128;
  short unsigned int D.53129;
  _Bool D.53130;
  _Bool D.53131;
  short unsigned int D.53137;
  _Bool D.53138;
  _Bool D.53139;
  _Bool D.53140;
  short unsigned int D.53142;
  short unsigned int D.53143;
  _Bool D.53144;
  short unsigned int D.53145;
  _Bool D.53146;
  _Bool D.53147;
  unsigned char * D.53150;
  int D.53153;
  int D.53154;
  unsigned int D.53155;
  unsigned int D.53156;
  struct MonoBasicBlock * * D.53157;
  short unsigned int D.53162;
  short unsigned int D.53163;
  _Bool D.53164;
  short unsigned int D.53165;
  _Bool D.53166;
  _Bool D.53167;
  short unsigned int D.53173;
  _Bool D.53174;
  _Bool D.53175;
  _Bool D.53176;
  short unsigned int D.53178;
  short unsigned int D.53179;
  _Bool D.53180;
  short unsigned int D.53181;
  _Bool D.53182;
  _Bool D.53183;
  unsigned char * D.53185;
  int D.53188;
  int D.53189;
  unsigned int D.53190;
  unsigned int D.53191;
  struct MonoBasicBlock * * D.53192;
  short unsigned int D.53197;
  short unsigned int D.53198;
  _Bool D.53199;
  short unsigned int D.53200;
  _Bool D.53201;
  _Bool D.53202;
  short unsigned int D.53208;
  _Bool D.53209;
  _Bool D.53210;
  _Bool D.53211;
  short unsigned int D.53213;
  short unsigned int D.53214;
  _Bool D.53215;
  short unsigned int D.53216;
  _Bool D.53217;
  _Bool D.53218;
  int D.53220;
  struct MonoInst * D.53221;
  int D.53222;
  int D.53223;
  unsigned char * D.53227;
  int D.53230;
  int D.53231;
  unsigned int D.53232;
  unsigned int D.53233;
  struct MonoBasicBlock * * D.53234;
  short unsigned int D.53239;
  short unsigned int D.53240;
  _Bool D.53241;
  short unsigned int D.53242;
  _Bool D.53243;
  _Bool D.53244;
  short unsigned int D.53250;
  _Bool D.53251;
  _Bool D.53252;
  _Bool D.53253;
  short unsigned int D.53255;
  short unsigned int D.53256;
  _Bool D.53257;
  short unsigned int D.53258;
  _Bool D.53259;
  _Bool D.53260;
  int D.53262;
  struct MonoInst * D.53263;
  int D.53264;
  int D.53265;
  struct MonoInst * D.53266;
  struct MonoInst * ins;
  struct MonoBasicBlock * end_bb;
  struct MonoBasicBlock * ok_result_bb;
  struct MonoBasicBlock * no_proxy_bb;
  struct MonoBasicBlock * interface_fail_bb;
  struct MonoBasicBlock * fail_1_bb;
  int obj_reg;
  int dreg;
  int tmp_reg;
  int klass_reg;

  obj_reg = src->dreg;
  D.52583 = alloc_ireg (cfg);
  dreg = (int) D.52583;
  D.52584 = alloc_preg (cfg);
  tmp_reg = (int) D.52584;
  D.52585 = alloc_preg (cfg);
  klass_reg = (int) D.52585;
  D.52586 = cfg->mempool;
  end_bb = mono_mempool_alloc0 (D.52586, 172);
  D.52587 = cfg->num_bblocks;
  D.52588 = D.52587;
  D.52589 = D.52588 + 1;
  cfg->num_bblocks = D.52589;
  D.52590 = (int) D.52588;
  end_bb->block_num = D.52590;
  D.52586 = cfg->mempool;
  ok_result_bb = mono_mempool_alloc0 (D.52586, 172);
  D.52587 = cfg->num_bblocks;
  D.52591 = D.52587;
  D.52592 = D.52591 + 1;
  cfg->num_bblocks = D.52592;
  D.52593 = (int) D.52591;
  ok_result_bb->block_num = D.52593;
  {
    struct MonoInst * inst;

    D.52586 = cfg->mempool;
    inst = mono_mempool_alloc (D.52586, 48);
    inst->data.op[1].const_val = 0;
    D.52594 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52594;
    inst->prev = 0B;
    D.52595 = inst->prev;
    inst->next = D.52595;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52596 = inst->sreg3;
    inst->sreg2 = D.52596;
    D.52597 = inst->sreg2;
    inst->sreg1 = D.52597;
    D.52598 = cfg->ip;
    inst->cil_code = D.52598;
    inst->dreg = -1;
    inst->sreg1 = obj_reg;
    inst->data.op[1].const_val = 0;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 != 0B) goto <D.52601>; else goto <D.52602>;
    <D.52601>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52600->next = inst;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    inst->prev = D.52600;
    D.52599 = cfg->cbb;
    D.52599->last_ins = inst;
    goto <D.52603>;
    <D.52602>:
    D.52599 = cfg->cbb;
    D.52599 = cfg->cbb;
    D.52599->last_ins = inst;
    D.52600 = D.52599->last_ins;
    D.52599->code = D.52600;
    <D.52603>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.52586 = cfg->mempool;
    ins = mono_mempool_alloc (D.52586, 48);
    ins->data.op[1].const_val = 0;
    D.52604 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.52604;
    ins->prev = 0B;
    D.52605 = ins->prev;
    ins->next = D.52605;
    ins->opcode = 652;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.52606 = ins->sreg3;
    ins->sreg2 = D.52606;
    D.52607 = ins->sreg2;
    ins->sreg1 = D.52607;
    D.52598 = cfg->ip;
    ins->cil_code = D.52598;
    if (0 != 0) goto <D.52608>; else goto <D.52609>;
    <D.52608>:
    D.52586 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.52586, 172);
    D.52587 = cfg->num_bblocks;
    D.52610 = D.52587;
    D.52611 = D.52610 + 1;
    cfg->num_bblocks = D.52611;
    D.52612 = (int) D.52610;
    falsebb->block_num = D.52612;
    ins->data.op[0].target_block = ok_result_bb;
    D.52599 = cfg->cbb;
    mono_link_bblock (cfg, D.52599, ok_result_bb);
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 != 0B) goto <D.52613>; else goto <D.52614>;
    <D.52613>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52600->next = ins;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    ins->prev = D.52600;
    D.52599 = cfg->cbb;
    D.52599->last_ins = ins;
    goto <D.52615>;
    <D.52614>:
    D.52599 = cfg->cbb;
    D.52599 = cfg->cbb;
    D.52599->last_ins = ins;
    D.52600 = D.52599->last_ins;
    D.52599->code = D.52600;
    <D.52615>:
    D.52616 = falsebb->cil_code;
    if (D.52616 != 0B) goto <D.52617>; else goto <D.52618>;
    <D.52617>:
    D.52619 = cfg->cil_offset_to_bb;
    D.52616 = falsebb->cil_code;
    D.52620 = (int) D.52616;
    D.52621 = cfg->cil_start;
    D.52622 = (int) D.52621;
    D.52623 = D.52620 - D.52622;
    D.52624 = (unsigned int) D.52623;
    D.52625 = D.52624 * 4;
    D.52626 = D.52619 + D.52625;
    *D.52626 = falsebb;
    <D.52618>:
    D.52627 = cfg->real_offset;
    falsebb->real_offset = D.52627;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 != 0B) goto <D.52631>; else goto <D.52628>;
    <D.52631>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52632 = D.52600->opcode;
    D.52633 = D.52632 + 64981;
    D.52634 = D.52633 <= 9;
    D.52635 = D.52632 + 64874;
    D.52636 = D.52635 <= 9;
    D.52637 = D.52634 | D.52636;
    if (D.52637 != 0) goto <D.52629>; else goto <D.52638>;
    <D.52638>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52639 = D.52600->opcode;
    D.52640 = D.52639 + 64884;
    if (D.52640 <= 9) goto <D.52629>; else goto <D.52628>;
    <D.52629>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52641 = D.52600->data.op[1].many_blocks;
    D.52642 = D.52641 + 4;
    D.52643 = *D.52642;
    if (D.52643 == 0B) goto <D.52644>; else goto <D.52628>;
    <D.52644>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52641 = D.52600->data.op[1].many_blocks;
    D.52642 = D.52641 + 4;
    *D.52642 = falsebb;
    D.52599 = cfg->cbb;
    mono_link_bblock (cfg, D.52599, falsebb);
    goto <D.52630>;
    <D.52628>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 == 0B) goto <D.52645>; else goto <D.52647>;
    <D.52647>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52648 = D.52600->opcode;
    D.52649 = D.52648 != 446;
    D.52650 = D.52648 != 763;
    D.52651 = D.52649 & D.52650;
    if (D.52651 != 0) goto <D.52652>; else goto <D.52646>;
    <D.52652>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52653 = D.52600->opcode;
    D.52654 = D.52653 + 64981;
    D.52655 = D.52654 > 9;
    D.52656 = D.52653 + 64874;
    D.52657 = D.52656 > 9;
    D.52658 = D.52655 & D.52657;
    if (D.52658 != 0) goto <D.52659>; else goto <D.52646>;
    <D.52659>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52639 = D.52600->opcode;
    D.52640 = D.52639 + 64884;
    if (D.52640 > 9) goto <D.52645>; else goto <D.52646>;
    <D.52645>:
    D.52599 = cfg->cbb;
    mono_link_bblock (cfg, D.52599, falsebb);
    <D.52646>:
    <D.52630>:
    D.52599 = cfg->cbb;
    D.52599->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.52660>;
    <D.52609>:
    D.52586 = cfg->mempool;
    D.52661 = mono_mempool_alloc (D.52586, 8);
    ins->data.op[1].many_blocks = D.52661;
    D.52662 = ins->data.op[1].many_blocks;
    *D.52662 = ok_result_bb;
    D.52662 = ins->data.op[1].many_blocks;
    D.52663 = D.52662 + 4;
    *D.52663 = 0B;
    D.52599 = cfg->cbb;
    mono_link_bblock (cfg, D.52599, ok_result_bb);
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 != 0B) goto <D.52664>; else goto <D.52665>;
    <D.52664>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52600->next = ins;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    ins->prev = D.52600;
    D.52599 = cfg->cbb;
    D.52599->last_ins = ins;
    goto <D.52666>;
    <D.52665>:
    D.52599 = cfg->cbb;
    D.52599 = cfg->cbb;
    D.52599->last_ins = ins;
    D.52600 = D.52599->last_ins;
    D.52599->code = D.52600;
    <D.52666>:
    D.52667 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.52668 = D.52667 & 8;
    if (D.52668 == 0) goto <D.52669>; else goto <D.52670>;
    <D.52669>:
    D.52586 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.52586, 172);
    D.52587 = cfg->num_bblocks;
    D.52671 = D.52587;
    D.52672 = D.52671 + 1;
    cfg->num_bblocks = D.52672;
    D.52673 = (int) D.52671;
    falsebb->block_num = D.52673;
    D.52662 = ins->data.op[1].many_blocks;
    D.52663 = D.52662 + 4;
    *D.52663 = falsebb;
    D.52599 = cfg->cbb;
    mono_link_bblock (cfg, D.52599, falsebb);
    D.52616 = falsebb->cil_code;
    if (D.52616 != 0B) goto <D.52674>; else goto <D.52675>;
    <D.52674>:
    D.52619 = cfg->cil_offset_to_bb;
    D.52616 = falsebb->cil_code;
    D.52620 = (int) D.52616;
    D.52621 = cfg->cil_start;
    D.52622 = (int) D.52621;
    D.52623 = D.52620 - D.52622;
    D.52624 = (unsigned int) D.52623;
    D.52625 = D.52624 * 4;
    D.52626 = D.52619 + D.52625;
    *D.52626 = falsebb;
    <D.52675>:
    D.52627 = cfg->real_offset;
    falsebb->real_offset = D.52627;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 != 0B) goto <D.52679>; else goto <D.52676>;
    <D.52679>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52680 = D.52600->opcode;
    D.52681 = D.52680 + 64981;
    D.52682 = D.52681 <= 9;
    D.52683 = D.52680 + 64874;
    D.52684 = D.52683 <= 9;
    D.52685 = D.52682 | D.52684;
    if (D.52685 != 0) goto <D.52677>; else goto <D.52686>;
    <D.52686>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52639 = D.52600->opcode;
    D.52640 = D.52639 + 64884;
    if (D.52640 <= 9) goto <D.52677>; else goto <D.52676>;
    <D.52677>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52641 = D.52600->data.op[1].many_blocks;
    D.52642 = D.52641 + 4;
    D.52643 = *D.52642;
    if (D.52643 == 0B) goto <D.52687>; else goto <D.52676>;
    <D.52687>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52641 = D.52600->data.op[1].many_blocks;
    D.52642 = D.52641 + 4;
    *D.52642 = falsebb;
    D.52599 = cfg->cbb;
    mono_link_bblock (cfg, D.52599, falsebb);
    goto <D.52678>;
    <D.52676>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 == 0B) goto <D.52688>; else goto <D.52690>;
    <D.52690>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52691 = D.52600->opcode;
    D.52692 = D.52691 != 446;
    D.52693 = D.52691 != 763;
    D.52694 = D.52692 & D.52693;
    if (D.52694 != 0) goto <D.52695>; else goto <D.52689>;
    <D.52695>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52696 = D.52600->opcode;
    D.52697 = D.52696 + 64981;
    D.52698 = D.52697 > 9;
    D.52699 = D.52696 + 64874;
    D.52700 = D.52699 > 9;
    D.52701 = D.52698 & D.52700;
    if (D.52701 != 0) goto <D.52702>; else goto <D.52689>;
    <D.52702>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52639 = D.52600->opcode;
    D.52640 = D.52639 + 64884;
    if (D.52640 > 9) goto <D.52688>; else goto <D.52689>;
    <D.52688>:
    D.52599 = cfg->cbb;
    mono_link_bblock (cfg, D.52599, falsebb);
    <D.52689>:
    <D.52678>:
    D.52599 = cfg->cbb;
    D.52599->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.52703>;
    <D.52670>:
    D.52599 = cfg->cbb;
    D.52599->extended = 1;
    <D.52703>:
    <D.52660>:
  }
  save_cast_details (cfg, klass, obj_reg, 0, 0B);
  D.52704 = klass->flags;
  D.52705 = D.52704 & 32;
  if (D.52705 != 0) goto <D.52706>; else goto <D.52707>;
  <D.52706>:
  D.52586 = cfg->mempool;
  interface_fail_bb = mono_mempool_alloc0 (D.52586, 172);
  D.52587 = cfg->num_bblocks;
  D.52708 = D.52587;
  D.52709 = D.52708 + 1;
  cfg->num_bblocks = D.52709;
  D.52710 = (int) D.52708;
  interface_fail_bb->block_num = D.52710;
  {
    struct MonoInst * inst;

    D.52586 = cfg->mempool;
    inst = mono_mempool_alloc (D.52586, 48);
    inst->data.op[1].const_val = 0;
    D.52711 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52711;
    inst->prev = 0B;
    D.52712 = inst->prev;
    inst->next = D.52712;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52713 = inst->sreg3;
    inst->sreg2 = D.52713;
    D.52714 = inst->sreg2;
    inst->sreg1 = D.52714;
    D.52598 = cfg->ip;
    inst->cil_code = D.52598;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 0;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 != 0B) goto <D.52715>; else goto <D.52716>;
    <D.52715>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52600->next = inst;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    inst->prev = D.52600;
    D.52599 = cfg->cbb;
    D.52599->last_ins = inst;
    goto <D.52717>;
    <D.52716>:
    D.52599 = cfg->cbb;
    D.52599 = cfg->cbb;
    D.52599->last_ins = inst;
    D.52600 = D.52599->last_ins;
    D.52599->code = D.52600;
    <D.52717>:
  }
  mini_emit_iface_cast (cfg, tmp_reg, klass, interface_fail_bb, ok_result_bb);
  D.52718 = interface_fail_bb->cil_code;
  if (D.52718 != 0B) goto <D.52719>; else goto <D.52720>;
  <D.52719>:
  D.52619 = cfg->cil_offset_to_bb;
  D.52718 = interface_fail_bb->cil_code;
  D.52721 = (int) D.52718;
  D.52621 = cfg->cil_start;
  D.52622 = (int) D.52621;
  D.52722 = D.52721 - D.52622;
  D.52723 = (unsigned int) D.52722;
  D.52724 = D.52723 * 4;
  D.52725 = D.52619 + D.52724;
  *D.52725 = interface_fail_bb;
  <D.52720>:
  D.52627 = cfg->real_offset;
  interface_fail_bb->real_offset = D.52627;
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  if (D.52600 != 0B) goto <D.52729>; else goto <D.52726>;
  <D.52729>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  D.52730 = D.52600->opcode;
  D.52731 = D.52730 + 64981;
  D.52732 = D.52731 <= 9;
  D.52733 = D.52730 + 64874;
  D.52734 = D.52733 <= 9;
  D.52735 = D.52732 | D.52734;
  if (D.52735 != 0) goto <D.52727>; else goto <D.52736>;
  <D.52736>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  D.52639 = D.52600->opcode;
  D.52640 = D.52639 + 64884;
  if (D.52640 <= 9) goto <D.52727>; else goto <D.52726>;
  <D.52727>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  D.52641 = D.52600->data.op[1].many_blocks;
  D.52642 = D.52641 + 4;
  D.52643 = *D.52642;
  if (D.52643 == 0B) goto <D.52737>; else goto <D.52726>;
  <D.52737>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  D.52641 = D.52600->data.op[1].many_blocks;
  D.52642 = D.52641 + 4;
  *D.52642 = interface_fail_bb;
  D.52599 = cfg->cbb;
  mono_link_bblock (cfg, D.52599, interface_fail_bb);
  goto <D.52728>;
  <D.52726>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  if (D.52600 == 0B) goto <D.52738>; else goto <D.52740>;
  <D.52740>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  D.52741 = D.52600->opcode;
  D.52742 = D.52741 != 446;
  D.52743 = D.52741 != 763;
  D.52744 = D.52742 & D.52743;
  if (D.52744 != 0) goto <D.52745>; else goto <D.52739>;
  <D.52745>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  D.52746 = D.52600->opcode;
  D.52747 = D.52746 + 64981;
  D.52748 = D.52747 > 9;
  D.52749 = D.52746 + 64874;
  D.52750 = D.52749 > 9;
  D.52751 = D.52748 & D.52750;
  if (D.52751 != 0) goto <D.52752>; else goto <D.52739>;
  <D.52752>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  D.52639 = D.52600->opcode;
  D.52640 = D.52639 + 64884;
  if (D.52640 > 9) goto <D.52738>; else goto <D.52739>;
  <D.52738>:
  D.52599 = cfg->cbb;
  mono_link_bblock (cfg, D.52599, interface_fail_bb);
  <D.52739>:
  <D.52728>:
  D.52599 = cfg->cbb;
  D.52599->next_bb = interface_fail_bb;
  cfg->cbb = interface_fail_bb;
  {
    struct MonoInst * inst;

    D.52586 = cfg->mempool;
    inst = mono_mempool_alloc (D.52586, 48);
    inst->data.op[1].const_val = 0;
    D.52753 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52753;
    inst->prev = 0B;
    D.52754 = inst->prev;
    inst->next = D.52754;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52755 = inst->sreg3;
    inst->sreg2 = D.52755;
    D.52756 = inst->sreg2;
    inst->sreg1 = D.52756;
    D.52598 = cfg->ip;
    inst->cil_code = D.52598;
    inst->dreg = klass_reg;
    inst->sreg1 = tmp_reg;
    inst->data.op[0].const_val = 0;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 != 0B) goto <D.52757>; else goto <D.52758>;
    <D.52757>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52600->next = inst;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    inst->prev = D.52600;
    D.52599 = cfg->cbb;
    D.52599->last_ins = inst;
    goto <D.52759>;
    <D.52758>:
    D.52599 = cfg->cbb;
    D.52599 = cfg->cbb;
    D.52599->last_ins = inst;
    D.52600 = D.52599->last_ins;
    D.52599->code = D.52600;
    <D.52759>:
  }
  D.52760 = mono_defaults.transparent_proxy_class;
  mini_emit_class_check (cfg, klass_reg, D.52760);
  D.52761 = alloc_preg (cfg);
  tmp_reg = (int) D.52761;
  {
    struct MonoInst * inst;

    D.52586 = cfg->mempool;
    inst = mono_mempool_alloc (D.52586, 48);
    inst->data.op[1].const_val = 0;
    D.52762 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52762;
    inst->prev = 0B;
    D.52763 = inst->prev;
    inst->next = D.52763;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52764 = inst->sreg3;
    inst->sreg2 = D.52764;
    D.52765 = inst->sreg2;
    inst->sreg1 = D.52765;
    D.52598 = cfg->ip;
    inst->cil_code = D.52598;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 16;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 != 0B) goto <D.52766>; else goto <D.52767>;
    <D.52766>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52600->next = inst;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    inst->prev = D.52600;
    D.52599 = cfg->cbb;
    D.52599->last_ins = inst;
    goto <D.52768>;
    <D.52767>:
    D.52599 = cfg->cbb;
    D.52599 = cfg->cbb;
    D.52599->last_ins = inst;
    D.52600 = D.52599->last_ins;
    D.52599->code = D.52600;
    <D.52768>:
  }
  {
    struct MonoInst * inst;

    D.52586 = cfg->mempool;
    inst = mono_mempool_alloc (D.52586, 48);
    inst->data.op[1].const_val = 0;
    D.52769 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52769;
    inst->prev = 0B;
    D.52770 = inst->prev;
    inst->next = D.52770;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52771 = inst->sreg3;
    inst->sreg2 = D.52771;
    D.52772 = inst->sreg2;
    inst->sreg1 = D.52772;
    D.52598 = cfg->ip;
    inst->cil_code = D.52598;
    inst->dreg = -1;
    inst->sreg1 = tmp_reg;
    inst->data.op[1].const_val = 0;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 != 0B) goto <D.52773>; else goto <D.52774>;
    <D.52773>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52600->next = inst;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    inst->prev = D.52600;
    D.52599 = cfg->cbb;
    D.52599->last_ins = inst;
    goto <D.52775>;
    <D.52774>:
    D.52599 = cfg->cbb;
    D.52599 = cfg->cbb;
    D.52599->last_ins = inst;
    D.52600 = D.52599->last_ins;
    D.52599->code = D.52600;
    <D.52775>:
  }
  {
    struct MonoInst * inst;

    D.52586 = cfg->mempool;
    inst = mono_mempool_alloc (D.52586, 48);
    inst->data.op[1].const_val = 0;
    D.52776 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52776;
    inst->prev = 0B;
    D.52777 = inst->prev;
    inst->next = D.52777;
    inst->opcode = 455;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52778 = inst->sreg3;
    inst->sreg2 = D.52778;
    D.52779 = inst->sreg2;
    inst->sreg1 = D.52779;
    D.52598 = cfg->ip;
    inst->cil_code = D.52598;
    inst->data.op[1].p = "InvalidCastException";
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 != 0B) goto <D.52780>; else goto <D.52781>;
    <D.52780>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52600->next = inst;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    inst->prev = D.52600;
    D.52599 = cfg->cbb;
    D.52599->last_ins = inst;
    goto <D.52782>;
    <D.52781>:
    D.52599 = cfg->cbb;
    D.52599 = cfg->cbb;
    D.52599->last_ins = inst;
    D.52600 = D.52599->last_ins;
    D.52599->code = D.52600;
    <D.52782>:
  }
  {
    struct MonoInst * inst;

    D.52586 = cfg->mempool;
    inst = mono_mempool_alloc (D.52586, 48);
    inst->data.op[1].const_val = 0;
    D.52783 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52783;
    inst->prev = 0B;
    D.52784 = inst->prev;
    inst->next = D.52784;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52785 = inst->sreg3;
    inst->sreg2 = D.52785;
    D.52786 = inst->sreg2;
    inst->sreg1 = D.52786;
    D.52598 = cfg->ip;
    inst->cil_code = D.52598;
    inst->dreg = dreg;
    inst->data.op[0].const_val = 1;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 != 0B) goto <D.52787>; else goto <D.52788>;
    <D.52787>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52600->next = inst;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    inst->prev = D.52600;
    D.52599 = cfg->cbb;
    D.52599->last_ins = inst;
    goto <D.52789>;
    <D.52788>:
    D.52599 = cfg->cbb;
    D.52599 = cfg->cbb;
    D.52599->last_ins = inst;
    D.52600 = D.52599->last_ins;
    D.52599->code = D.52600;
    <D.52789>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.52586 = cfg->mempool;
    ins = mono_mempool_alloc (D.52586, 48);
    ins->data.op[1].const_val = 0;
    D.52790 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.52790;
    ins->prev = 0B;
    D.52791 = ins->prev;
    ins->next = D.52791;
    ins->opcode = 446;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.52792 = ins->sreg3;
    ins->sreg2 = D.52792;
    D.52793 = ins->sreg2;
    ins->sreg1 = D.52793;
    D.52598 = cfg->ip;
    ins->cil_code = D.52598;
    if (1 != 0) goto <D.52794>; else goto <D.52795>;
    <D.52794>:
    D.52586 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.52586, 172);
    D.52587 = cfg->num_bblocks;
    D.52796 = D.52587;
    D.52797 = D.52796 + 1;
    cfg->num_bblocks = D.52797;
    D.52798 = (int) D.52796;
    falsebb->block_num = D.52798;
    ins->data.op[0].target_block = end_bb;
    D.52599 = cfg->cbb;
    mono_link_bblock (cfg, D.52599, end_bb);
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 != 0B) goto <D.52799>; else goto <D.52800>;
    <D.52799>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52600->next = ins;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    ins->prev = D.52600;
    D.52599 = cfg->cbb;
    D.52599->last_ins = ins;
    goto <D.52801>;
    <D.52800>:
    D.52599 = cfg->cbb;
    D.52599 = cfg->cbb;
    D.52599->last_ins = ins;
    D.52600 = D.52599->last_ins;
    D.52599->code = D.52600;
    <D.52801>:
    D.52802 = falsebb->cil_code;
    if (D.52802 != 0B) goto <D.52803>; else goto <D.52804>;
    <D.52803>:
    D.52619 = cfg->cil_offset_to_bb;
    D.52802 = falsebb->cil_code;
    D.52805 = (int) D.52802;
    D.52621 = cfg->cil_start;
    D.52622 = (int) D.52621;
    D.52806 = D.52805 - D.52622;
    D.52807 = (unsigned int) D.52806;
    D.52808 = D.52807 * 4;
    D.52809 = D.52619 + D.52808;
    *D.52809 = falsebb;
    <D.52804>:
    D.52627 = cfg->real_offset;
    falsebb->real_offset = D.52627;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 != 0B) goto <D.52813>; else goto <D.52810>;
    <D.52813>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52814 = D.52600->opcode;
    D.52815 = D.52814 + 64981;
    D.52816 = D.52815 <= 9;
    D.52817 = D.52814 + 64874;
    D.52818 = D.52817 <= 9;
    D.52819 = D.52816 | D.52818;
    if (D.52819 != 0) goto <D.52811>; else goto <D.52820>;
    <D.52820>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52639 = D.52600->opcode;
    D.52640 = D.52639 + 64884;
    if (D.52640 <= 9) goto <D.52811>; else goto <D.52810>;
    <D.52811>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52641 = D.52600->data.op[1].many_blocks;
    D.52642 = D.52641 + 4;
    D.52643 = *D.52642;
    if (D.52643 == 0B) goto <D.52821>; else goto <D.52810>;
    <D.52821>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52641 = D.52600->data.op[1].many_blocks;
    D.52642 = D.52641 + 4;
    *D.52642 = falsebb;
    D.52599 = cfg->cbb;
    mono_link_bblock (cfg, D.52599, falsebb);
    goto <D.52812>;
    <D.52810>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 == 0B) goto <D.52822>; else goto <D.52824>;
    <D.52824>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52825 = D.52600->opcode;
    D.52826 = D.52825 != 446;
    D.52827 = D.52825 != 763;
    D.52828 = D.52826 & D.52827;
    if (D.52828 != 0) goto <D.52829>; else goto <D.52823>;
    <D.52829>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52830 = D.52600->opcode;
    D.52831 = D.52830 + 64981;
    D.52832 = D.52831 > 9;
    D.52833 = D.52830 + 64874;
    D.52834 = D.52833 > 9;
    D.52835 = D.52832 & D.52834;
    if (D.52835 != 0) goto <D.52836>; else goto <D.52823>;
    <D.52836>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52639 = D.52600->opcode;
    D.52640 = D.52639 + 64884;
    if (D.52640 > 9) goto <D.52822>; else goto <D.52823>;
    <D.52822>:
    D.52599 = cfg->cbb;
    mono_link_bblock (cfg, D.52599, falsebb);
    <D.52823>:
    <D.52812>:
    D.52599 = cfg->cbb;
    D.52599->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.52837>;
    <D.52795>:
    D.52586 = cfg->mempool;
    D.52838 = mono_mempool_alloc (D.52586, 8);
    ins->data.op[1].many_blocks = D.52838;
    D.52839 = ins->data.op[1].many_blocks;
    *D.52839 = end_bb;
    D.52839 = ins->data.op[1].many_blocks;
    D.52840 = D.52839 + 4;
    *D.52840 = 0B;
    D.52599 = cfg->cbb;
    mono_link_bblock (cfg, D.52599, end_bb);
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 != 0B) goto <D.52841>; else goto <D.52842>;
    <D.52841>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52600->next = ins;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    ins->prev = D.52600;
    D.52599 = cfg->cbb;
    D.52599->last_ins = ins;
    goto <D.52843>;
    <D.52842>:
    D.52599 = cfg->cbb;
    D.52599 = cfg->cbb;
    D.52599->last_ins = ins;
    D.52600 = D.52599->last_ins;
    D.52599->code = D.52600;
    <D.52843>:
    D.52667 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.52668 = D.52667 & 8;
    if (D.52668 == 0) goto <D.52844>; else goto <D.52845>;
    <D.52844>:
    D.52586 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.52586, 172);
    D.52587 = cfg->num_bblocks;
    D.52846 = D.52587;
    D.52847 = D.52846 + 1;
    cfg->num_bblocks = D.52847;
    D.52848 = (int) D.52846;
    falsebb->block_num = D.52848;
    D.52839 = ins->data.op[1].many_blocks;
    D.52840 = D.52839 + 4;
    *D.52840 = falsebb;
    D.52599 = cfg->cbb;
    mono_link_bblock (cfg, D.52599, falsebb);
    D.52802 = falsebb->cil_code;
    if (D.52802 != 0B) goto <D.52849>; else goto <D.52850>;
    <D.52849>:
    D.52619 = cfg->cil_offset_to_bb;
    D.52802 = falsebb->cil_code;
    D.52805 = (int) D.52802;
    D.52621 = cfg->cil_start;
    D.52622 = (int) D.52621;
    D.52806 = D.52805 - D.52622;
    D.52807 = (unsigned int) D.52806;
    D.52808 = D.52807 * 4;
    D.52809 = D.52619 + D.52808;
    *D.52809 = falsebb;
    <D.52850>:
    D.52627 = cfg->real_offset;
    falsebb->real_offset = D.52627;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 != 0B) goto <D.52854>; else goto <D.52851>;
    <D.52854>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52855 = D.52600->opcode;
    D.52856 = D.52855 + 64981;
    D.52857 = D.52856 <= 9;
    D.52858 = D.52855 + 64874;
    D.52859 = D.52858 <= 9;
    D.52860 = D.52857 | D.52859;
    if (D.52860 != 0) goto <D.52852>; else goto <D.52861>;
    <D.52861>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52639 = D.52600->opcode;
    D.52640 = D.52639 + 64884;
    if (D.52640 <= 9) goto <D.52852>; else goto <D.52851>;
    <D.52852>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52641 = D.52600->data.op[1].many_blocks;
    D.52642 = D.52641 + 4;
    D.52643 = *D.52642;
    if (D.52643 == 0B) goto <D.52862>; else goto <D.52851>;
    <D.52862>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52641 = D.52600->data.op[1].many_blocks;
    D.52642 = D.52641 + 4;
    *D.52642 = falsebb;
    D.52599 = cfg->cbb;
    mono_link_bblock (cfg, D.52599, falsebb);
    goto <D.52853>;
    <D.52851>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 == 0B) goto <D.52863>; else goto <D.52865>;
    <D.52865>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52866 = D.52600->opcode;
    D.52867 = D.52866 != 446;
    D.52868 = D.52866 != 763;
    D.52869 = D.52867 & D.52868;
    if (D.52869 != 0) goto <D.52870>; else goto <D.52864>;
    <D.52870>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52871 = D.52600->opcode;
    D.52872 = D.52871 + 64981;
    D.52873 = D.52872 > 9;
    D.52874 = D.52871 + 64874;
    D.52875 = D.52874 > 9;
    D.52876 = D.52873 & D.52875;
    if (D.52876 != 0) goto <D.52877>; else goto <D.52864>;
    <D.52877>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52639 = D.52600->opcode;
    D.52640 = D.52639 + 64884;
    if (D.52640 > 9) goto <D.52863>; else goto <D.52864>;
    <D.52863>:
    D.52599 = cfg->cbb;
    mono_link_bblock (cfg, D.52599, falsebb);
    <D.52864>:
    <D.52853>:
    D.52599 = cfg->cbb;
    D.52599->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.52878>;
    <D.52845>:
    D.52599 = cfg->cbb;
    D.52599->extended = 1;
    <D.52878>:
    <D.52837>:
  }
  goto <D.52879>;
  <D.52707>:
  D.52586 = cfg->mempool;
  no_proxy_bb = mono_mempool_alloc0 (D.52586, 172);
  D.52587 = cfg->num_bblocks;
  D.52880 = D.52587;
  D.52881 = D.52880 + 1;
  cfg->num_bblocks = D.52881;
  D.52882 = (int) D.52880;
  no_proxy_bb->block_num = D.52882;
  {
    struct MonoInst * inst;

    D.52586 = cfg->mempool;
    inst = mono_mempool_alloc (D.52586, 48);
    inst->data.op[1].const_val = 0;
    D.52883 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52883;
    inst->prev = 0B;
    D.52884 = inst->prev;
    inst->next = D.52884;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52885 = inst->sreg3;
    inst->sreg2 = D.52885;
    D.52886 = inst->sreg2;
    inst->sreg1 = D.52886;
    D.52598 = cfg->ip;
    inst->cil_code = D.52598;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 0;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 != 0B) goto <D.52887>; else goto <D.52888>;
    <D.52887>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52600->next = inst;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    inst->prev = D.52600;
    D.52599 = cfg->cbb;
    D.52599->last_ins = inst;
    goto <D.52889>;
    <D.52888>:
    D.52599 = cfg->cbb;
    D.52599 = cfg->cbb;
    D.52599->last_ins = inst;
    D.52600 = D.52599->last_ins;
    D.52599->code = D.52600;
    <D.52889>:
  }
  {
    struct MonoInst * inst;

    D.52586 = cfg->mempool;
    inst = mono_mempool_alloc (D.52586, 48);
    inst->data.op[1].const_val = 0;
    D.52890 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52890;
    inst->prev = 0B;
    D.52891 = inst->prev;
    inst->next = D.52891;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52892 = inst->sreg3;
    inst->sreg2 = D.52892;
    D.52893 = inst->sreg2;
    inst->sreg1 = D.52893;
    D.52598 = cfg->ip;
    inst->cil_code = D.52598;
    inst->dreg = klass_reg;
    inst->sreg1 = tmp_reg;
    inst->data.op[0].const_val = 0;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 != 0B) goto <D.52894>; else goto <D.52895>;
    <D.52894>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52600->next = inst;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    inst->prev = D.52600;
    D.52599 = cfg->cbb;
    D.52599->last_ins = inst;
    goto <D.52896>;
    <D.52895>:
    D.52599 = cfg->cbb;
    D.52599 = cfg->cbb;
    D.52599->last_ins = inst;
    D.52600 = D.52599->last_ins;
    D.52599->code = D.52600;
    <D.52896>:
  }
  D.52760 = mono_defaults.transparent_proxy_class;
  mini_emit_class_check_branch (cfg, klass_reg, D.52760, 657, no_proxy_bb);
  D.52897 = alloc_preg (cfg);
  tmp_reg = (int) D.52897;
  {
    struct MonoInst * inst;

    D.52586 = cfg->mempool;
    inst = mono_mempool_alloc (D.52586, 48);
    inst->data.op[1].const_val = 0;
    D.52898 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52898;
    inst->prev = 0B;
    D.52899 = inst->prev;
    inst->next = D.52899;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52900 = inst->sreg3;
    inst->sreg2 = D.52900;
    D.52901 = inst->sreg2;
    inst->sreg1 = D.52901;
    D.52598 = cfg->ip;
    inst->cil_code = D.52598;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 12;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 != 0B) goto <D.52902>; else goto <D.52903>;
    <D.52902>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52600->next = inst;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    inst->prev = D.52600;
    D.52599 = cfg->cbb;
    D.52599->last_ins = inst;
    goto <D.52904>;
    <D.52903>:
    D.52599 = cfg->cbb;
    D.52599 = cfg->cbb;
    D.52599->last_ins = inst;
    D.52600 = D.52599->last_ins;
    D.52599->code = D.52600;
    <D.52904>:
  }
  {
    struct MonoInst * inst;

    D.52586 = cfg->mempool;
    inst = mono_mempool_alloc (D.52586, 48);
    inst->data.op[1].const_val = 0;
    D.52905 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52905;
    inst->prev = 0B;
    D.52906 = inst->prev;
    inst->next = D.52906;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52907 = inst->sreg3;
    inst->sreg2 = D.52907;
    D.52908 = inst->sreg2;
    inst->sreg1 = D.52908;
    D.52598 = cfg->ip;
    inst->cil_code = D.52598;
    inst->dreg = klass_reg;
    inst->sreg1 = tmp_reg;
    inst->data.op[0].const_val = 8;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 != 0B) goto <D.52909>; else goto <D.52910>;
    <D.52909>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52600->next = inst;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    inst->prev = D.52600;
    D.52599 = cfg->cbb;
    D.52599->last_ins = inst;
    goto <D.52911>;
    <D.52910>:
    D.52599 = cfg->cbb;
    D.52599 = cfg->cbb;
    D.52599->last_ins = inst;
    D.52600 = D.52599->last_ins;
    D.52599->code = D.52600;
    <D.52911>:
  }
  D.52912 = alloc_preg (cfg);
  tmp_reg = (int) D.52912;
  {
    struct MonoInst * inst;

    D.52586 = cfg->mempool;
    inst = mono_mempool_alloc (D.52586, 48);
    inst->data.op[1].const_val = 0;
    D.52913 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52913;
    inst->prev = 0B;
    D.52914 = inst->prev;
    inst->next = D.52914;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52915 = inst->sreg3;
    inst->sreg2 = D.52915;
    D.52916 = inst->sreg2;
    inst->sreg1 = D.52916;
    D.52598 = cfg->ip;
    inst->cil_code = D.52598;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 16;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 != 0B) goto <D.52917>; else goto <D.52918>;
    <D.52917>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52600->next = inst;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    inst->prev = D.52600;
    D.52599 = cfg->cbb;
    D.52599->last_ins = inst;
    goto <D.52919>;
    <D.52918>:
    D.52599 = cfg->cbb;
    D.52599 = cfg->cbb;
    D.52599->last_ins = inst;
    D.52600 = D.52599->last_ins;
    D.52599->code = D.52600;
    <D.52919>:
  }
  {
    struct MonoInst * inst;

    D.52586 = cfg->mempool;
    inst = mono_mempool_alloc (D.52586, 48);
    inst->data.op[1].const_val = 0;
    D.52920 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52920;
    inst->prev = 0B;
    D.52921 = inst->prev;
    inst->next = D.52921;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52922 = inst->sreg3;
    inst->sreg2 = D.52922;
    D.52923 = inst->sreg2;
    inst->sreg1 = D.52923;
    D.52598 = cfg->ip;
    inst->cil_code = D.52598;
    inst->dreg = -1;
    inst->sreg1 = tmp_reg;
    inst->data.op[1].const_val = 0;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 != 0B) goto <D.52924>; else goto <D.52925>;
    <D.52924>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52600->next = inst;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    inst->prev = D.52600;
    D.52599 = cfg->cbb;
    D.52599->last_ins = inst;
    goto <D.52926>;
    <D.52925>:
    D.52599 = cfg->cbb;
    D.52599 = cfg->cbb;
    D.52599->last_ins = inst;
    D.52600 = D.52599->last_ins;
    D.52599->code = D.52600;
    <D.52926>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.52586 = cfg->mempool;
    ins = mono_mempool_alloc (D.52586, 48);
    ins->data.op[1].const_val = 0;
    D.52927 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.52927;
    ins->prev = 0B;
    D.52928 = ins->prev;
    ins->next = D.52928;
    ins->opcode = 652;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.52929 = ins->sreg3;
    ins->sreg2 = D.52929;
    D.52930 = ins->sreg2;
    ins->sreg1 = D.52930;
    D.52598 = cfg->ip;
    ins->cil_code = D.52598;
    if (0 != 0) goto <D.52931>; else goto <D.52932>;
    <D.52931>:
    D.52586 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.52586, 172);
    D.52587 = cfg->num_bblocks;
    D.52933 = D.52587;
    D.52934 = D.52933 + 1;
    cfg->num_bblocks = D.52934;
    D.52935 = (int) D.52933;
    falsebb->block_num = D.52935;
    ins->data.op[0].target_block = no_proxy_bb;
    D.52599 = cfg->cbb;
    mono_link_bblock (cfg, D.52599, no_proxy_bb);
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 != 0B) goto <D.52936>; else goto <D.52937>;
    <D.52936>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52600->next = ins;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    ins->prev = D.52600;
    D.52599 = cfg->cbb;
    D.52599->last_ins = ins;
    goto <D.52938>;
    <D.52937>:
    D.52599 = cfg->cbb;
    D.52599 = cfg->cbb;
    D.52599->last_ins = ins;
    D.52600 = D.52599->last_ins;
    D.52599->code = D.52600;
    <D.52938>:
    D.52939 = falsebb->cil_code;
    if (D.52939 != 0B) goto <D.52940>; else goto <D.52941>;
    <D.52940>:
    D.52619 = cfg->cil_offset_to_bb;
    D.52939 = falsebb->cil_code;
    D.52942 = (int) D.52939;
    D.52621 = cfg->cil_start;
    D.52622 = (int) D.52621;
    D.52943 = D.52942 - D.52622;
    D.52944 = (unsigned int) D.52943;
    D.52945 = D.52944 * 4;
    D.52946 = D.52619 + D.52945;
    *D.52946 = falsebb;
    <D.52941>:
    D.52627 = cfg->real_offset;
    falsebb->real_offset = D.52627;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 != 0B) goto <D.52950>; else goto <D.52947>;
    <D.52950>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52951 = D.52600->opcode;
    D.52952 = D.52951 + 64981;
    D.52953 = D.52952 <= 9;
    D.52954 = D.52951 + 64874;
    D.52955 = D.52954 <= 9;
    D.52956 = D.52953 | D.52955;
    if (D.52956 != 0) goto <D.52948>; else goto <D.52957>;
    <D.52957>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52639 = D.52600->opcode;
    D.52640 = D.52639 + 64884;
    if (D.52640 <= 9) goto <D.52948>; else goto <D.52947>;
    <D.52948>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52641 = D.52600->data.op[1].many_blocks;
    D.52642 = D.52641 + 4;
    D.52643 = *D.52642;
    if (D.52643 == 0B) goto <D.52958>; else goto <D.52947>;
    <D.52958>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52641 = D.52600->data.op[1].many_blocks;
    D.52642 = D.52641 + 4;
    *D.52642 = falsebb;
    D.52599 = cfg->cbb;
    mono_link_bblock (cfg, D.52599, falsebb);
    goto <D.52949>;
    <D.52947>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 == 0B) goto <D.52959>; else goto <D.52961>;
    <D.52961>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52962 = D.52600->opcode;
    D.52963 = D.52962 != 446;
    D.52964 = D.52962 != 763;
    D.52965 = D.52963 & D.52964;
    if (D.52965 != 0) goto <D.52966>; else goto <D.52960>;
    <D.52966>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52967 = D.52600->opcode;
    D.52968 = D.52967 + 64981;
    D.52969 = D.52968 > 9;
    D.52970 = D.52967 + 64874;
    D.52971 = D.52970 > 9;
    D.52972 = D.52969 & D.52971;
    if (D.52972 != 0) goto <D.52973>; else goto <D.52960>;
    <D.52973>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52639 = D.52600->opcode;
    D.52640 = D.52639 + 64884;
    if (D.52640 > 9) goto <D.52959>; else goto <D.52960>;
    <D.52959>:
    D.52599 = cfg->cbb;
    mono_link_bblock (cfg, D.52599, falsebb);
    <D.52960>:
    <D.52949>:
    D.52599 = cfg->cbb;
    D.52599->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.52974>;
    <D.52932>:
    D.52586 = cfg->mempool;
    D.52975 = mono_mempool_alloc (D.52586, 8);
    ins->data.op[1].many_blocks = D.52975;
    D.52976 = ins->data.op[1].many_blocks;
    *D.52976 = no_proxy_bb;
    D.52976 = ins->data.op[1].many_blocks;
    D.52977 = D.52976 + 4;
    *D.52977 = 0B;
    D.52599 = cfg->cbb;
    mono_link_bblock (cfg, D.52599, no_proxy_bb);
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 != 0B) goto <D.52978>; else goto <D.52979>;
    <D.52978>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52600->next = ins;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    ins->prev = D.52600;
    D.52599 = cfg->cbb;
    D.52599->last_ins = ins;
    goto <D.52980>;
    <D.52979>:
    D.52599 = cfg->cbb;
    D.52599 = cfg->cbb;
    D.52599->last_ins = ins;
    D.52600 = D.52599->last_ins;
    D.52599->code = D.52600;
    <D.52980>:
    D.52667 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.52668 = D.52667 & 8;
    if (D.52668 == 0) goto <D.52981>; else goto <D.52982>;
    <D.52981>:
    D.52586 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.52586, 172);
    D.52587 = cfg->num_bblocks;
    D.52983 = D.52587;
    D.52984 = D.52983 + 1;
    cfg->num_bblocks = D.52984;
    D.52985 = (int) D.52983;
    falsebb->block_num = D.52985;
    D.52976 = ins->data.op[1].many_blocks;
    D.52977 = D.52976 + 4;
    *D.52977 = falsebb;
    D.52599 = cfg->cbb;
    mono_link_bblock (cfg, D.52599, falsebb);
    D.52939 = falsebb->cil_code;
    if (D.52939 != 0B) goto <D.52986>; else goto <D.52987>;
    <D.52986>:
    D.52619 = cfg->cil_offset_to_bb;
    D.52939 = falsebb->cil_code;
    D.52942 = (int) D.52939;
    D.52621 = cfg->cil_start;
    D.52622 = (int) D.52621;
    D.52943 = D.52942 - D.52622;
    D.52944 = (unsigned int) D.52943;
    D.52945 = D.52944 * 4;
    D.52946 = D.52619 + D.52945;
    *D.52946 = falsebb;
    <D.52987>:
    D.52627 = cfg->real_offset;
    falsebb->real_offset = D.52627;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 != 0B) goto <D.52991>; else goto <D.52988>;
    <D.52991>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52992 = D.52600->opcode;
    D.52993 = D.52992 + 64981;
    D.52994 = D.52993 <= 9;
    D.52995 = D.52992 + 64874;
    D.52996 = D.52995 <= 9;
    D.52997 = D.52994 | D.52996;
    if (D.52997 != 0) goto <D.52989>; else goto <D.52998>;
    <D.52998>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52639 = D.52600->opcode;
    D.52640 = D.52639 + 64884;
    if (D.52640 <= 9) goto <D.52989>; else goto <D.52988>;
    <D.52989>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52641 = D.52600->data.op[1].many_blocks;
    D.52642 = D.52641 + 4;
    D.52643 = *D.52642;
    if (D.52643 == 0B) goto <D.52999>; else goto <D.52988>;
    <D.52999>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52641 = D.52600->data.op[1].many_blocks;
    D.52642 = D.52641 + 4;
    *D.52642 = falsebb;
    D.52599 = cfg->cbb;
    mono_link_bblock (cfg, D.52599, falsebb);
    goto <D.52990>;
    <D.52988>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 == 0B) goto <D.53000>; else goto <D.53002>;
    <D.53002>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.53003 = D.52600->opcode;
    D.53004 = D.53003 != 446;
    D.53005 = D.53003 != 763;
    D.53006 = D.53004 & D.53005;
    if (D.53006 != 0) goto <D.53007>; else goto <D.53001>;
    <D.53007>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.53008 = D.52600->opcode;
    D.53009 = D.53008 + 64981;
    D.53010 = D.53009 > 9;
    D.53011 = D.53008 + 64874;
    D.53012 = D.53011 > 9;
    D.53013 = D.53010 & D.53012;
    if (D.53013 != 0) goto <D.53014>; else goto <D.53001>;
    <D.53014>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52639 = D.52600->opcode;
    D.52640 = D.52639 + 64884;
    if (D.52640 > 9) goto <D.53000>; else goto <D.53001>;
    <D.53000>:
    D.52599 = cfg->cbb;
    mono_link_bblock (cfg, D.52599, falsebb);
    <D.53001>:
    <D.52990>:
    D.52599 = cfg->cbb;
    D.52599->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.53015>;
    <D.52982>:
    D.52599 = cfg->cbb;
    D.52599->extended = 1;
    <D.53015>:
    <D.52974>:
  }
  D.52586 = cfg->mempool;
  fail_1_bb = mono_mempool_alloc0 (D.52586, 172);
  D.52587 = cfg->num_bblocks;
  D.53016 = D.52587;
  D.53017 = D.53016 + 1;
  cfg->num_bblocks = D.53017;
  D.53018 = (int) D.53016;
  fail_1_bb->block_num = D.53018;
  mini_emit_isninst_cast (cfg, klass_reg, klass, fail_1_bb, ok_result_bb);
  D.53019 = fail_1_bb->cil_code;
  if (D.53019 != 0B) goto <D.53020>; else goto <D.53021>;
  <D.53020>:
  D.52619 = cfg->cil_offset_to_bb;
  D.53019 = fail_1_bb->cil_code;
  D.53022 = (int) D.53019;
  D.52621 = cfg->cil_start;
  D.52622 = (int) D.52621;
  D.53023 = D.53022 - D.52622;
  D.53024 = (unsigned int) D.53023;
  D.53025 = D.53024 * 4;
  D.53026 = D.52619 + D.53025;
  *D.53026 = fail_1_bb;
  <D.53021>:
  D.52627 = cfg->real_offset;
  fail_1_bb->real_offset = D.52627;
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  if (D.52600 != 0B) goto <D.53030>; else goto <D.53027>;
  <D.53030>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  D.53031 = D.52600->opcode;
  D.53032 = D.53031 + 64981;
  D.53033 = D.53032 <= 9;
  D.53034 = D.53031 + 64874;
  D.53035 = D.53034 <= 9;
  D.53036 = D.53033 | D.53035;
  if (D.53036 != 0) goto <D.53028>; else goto <D.53037>;
  <D.53037>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  D.52639 = D.52600->opcode;
  D.52640 = D.52639 + 64884;
  if (D.52640 <= 9) goto <D.53028>; else goto <D.53027>;
  <D.53028>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  D.52641 = D.52600->data.op[1].many_blocks;
  D.52642 = D.52641 + 4;
  D.52643 = *D.52642;
  if (D.52643 == 0B) goto <D.53038>; else goto <D.53027>;
  <D.53038>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  D.52641 = D.52600->data.op[1].many_blocks;
  D.52642 = D.52641 + 4;
  *D.52642 = fail_1_bb;
  D.52599 = cfg->cbb;
  mono_link_bblock (cfg, D.52599, fail_1_bb);
  goto <D.53029>;
  <D.53027>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  if (D.52600 == 0B) goto <D.53039>; else goto <D.53041>;
  <D.53041>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  D.53042 = D.52600->opcode;
  D.53043 = D.53042 != 446;
  D.53044 = D.53042 != 763;
  D.53045 = D.53043 & D.53044;
  if (D.53045 != 0) goto <D.53046>; else goto <D.53040>;
  <D.53046>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  D.53047 = D.52600->opcode;
  D.53048 = D.53047 + 64981;
  D.53049 = D.53048 > 9;
  D.53050 = D.53047 + 64874;
  D.53051 = D.53050 > 9;
  D.53052 = D.53049 & D.53051;
  if (D.53052 != 0) goto <D.53053>; else goto <D.53040>;
  <D.53053>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  D.52639 = D.52600->opcode;
  D.52640 = D.52639 + 64884;
  if (D.52640 > 9) goto <D.53039>; else goto <D.53040>;
  <D.53039>:
  D.52599 = cfg->cbb;
  mono_link_bblock (cfg, D.52599, fail_1_bb);
  <D.53040>:
  <D.53029>:
  D.52599 = cfg->cbb;
  D.52599->next_bb = fail_1_bb;
  cfg->cbb = fail_1_bb;
  {
    struct MonoInst * inst;

    D.52586 = cfg->mempool;
    inst = mono_mempool_alloc (D.52586, 48);
    inst->data.op[1].const_val = 0;
    D.53054 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.53054;
    inst->prev = 0B;
    D.53055 = inst->prev;
    inst->next = D.53055;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.53056 = inst->sreg3;
    inst->sreg2 = D.53056;
    D.53057 = inst->sreg2;
    inst->sreg1 = D.53057;
    D.52598 = cfg->ip;
    inst->cil_code = D.52598;
    inst->dreg = dreg;
    inst->data.op[0].const_val = 1;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 != 0B) goto <D.53058>; else goto <D.53059>;
    <D.53058>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52600->next = inst;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    inst->prev = D.52600;
    D.52599 = cfg->cbb;
    D.52599->last_ins = inst;
    goto <D.53060>;
    <D.53059>:
    D.52599 = cfg->cbb;
    D.52599 = cfg->cbb;
    D.52599->last_ins = inst;
    D.52600 = D.52599->last_ins;
    D.52599->code = D.52600;
    <D.53060>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.52586 = cfg->mempool;
    ins = mono_mempool_alloc (D.52586, 48);
    ins->data.op[1].const_val = 0;
    D.53061 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.53061;
    ins->prev = 0B;
    D.53062 = ins->prev;
    ins->next = D.53062;
    ins->opcode = 446;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.53063 = ins->sreg3;
    ins->sreg2 = D.53063;
    D.53064 = ins->sreg2;
    ins->sreg1 = D.53064;
    D.52598 = cfg->ip;
    ins->cil_code = D.52598;
    if (1 != 0) goto <D.53065>; else goto <D.53066>;
    <D.53065>:
    D.52586 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.52586, 172);
    D.52587 = cfg->num_bblocks;
    D.53067 = D.52587;
    D.53068 = D.53067 + 1;
    cfg->num_bblocks = D.53068;
    D.53069 = (int) D.53067;
    falsebb->block_num = D.53069;
    ins->data.op[0].target_block = end_bb;
    D.52599 = cfg->cbb;
    mono_link_bblock (cfg, D.52599, end_bb);
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 != 0B) goto <D.53070>; else goto <D.53071>;
    <D.53070>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52600->next = ins;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    ins->prev = D.52600;
    D.52599 = cfg->cbb;
    D.52599->last_ins = ins;
    goto <D.53072>;
    <D.53071>:
    D.52599 = cfg->cbb;
    D.52599 = cfg->cbb;
    D.52599->last_ins = ins;
    D.52600 = D.52599->last_ins;
    D.52599->code = D.52600;
    <D.53072>:
    D.53073 = falsebb->cil_code;
    if (D.53073 != 0B) goto <D.53074>; else goto <D.53075>;
    <D.53074>:
    D.52619 = cfg->cil_offset_to_bb;
    D.53073 = falsebb->cil_code;
    D.53076 = (int) D.53073;
    D.52621 = cfg->cil_start;
    D.52622 = (int) D.52621;
    D.53077 = D.53076 - D.52622;
    D.53078 = (unsigned int) D.53077;
    D.53079 = D.53078 * 4;
    D.53080 = D.52619 + D.53079;
    *D.53080 = falsebb;
    <D.53075>:
    D.52627 = cfg->real_offset;
    falsebb->real_offset = D.52627;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 != 0B) goto <D.53084>; else goto <D.53081>;
    <D.53084>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.53085 = D.52600->opcode;
    D.53086 = D.53085 + 64981;
    D.53087 = D.53086 <= 9;
    D.53088 = D.53085 + 64874;
    D.53089 = D.53088 <= 9;
    D.53090 = D.53087 | D.53089;
    if (D.53090 != 0) goto <D.53082>; else goto <D.53091>;
    <D.53091>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52639 = D.52600->opcode;
    D.52640 = D.52639 + 64884;
    if (D.52640 <= 9) goto <D.53082>; else goto <D.53081>;
    <D.53082>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52641 = D.52600->data.op[1].many_blocks;
    D.52642 = D.52641 + 4;
    D.52643 = *D.52642;
    if (D.52643 == 0B) goto <D.53092>; else goto <D.53081>;
    <D.53092>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52641 = D.52600->data.op[1].many_blocks;
    D.52642 = D.52641 + 4;
    *D.52642 = falsebb;
    D.52599 = cfg->cbb;
    mono_link_bblock (cfg, D.52599, falsebb);
    goto <D.53083>;
    <D.53081>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 == 0B) goto <D.53093>; else goto <D.53095>;
    <D.53095>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.53096 = D.52600->opcode;
    D.53097 = D.53096 != 446;
    D.53098 = D.53096 != 763;
    D.53099 = D.53097 & D.53098;
    if (D.53099 != 0) goto <D.53100>; else goto <D.53094>;
    <D.53100>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.53101 = D.52600->opcode;
    D.53102 = D.53101 + 64981;
    D.53103 = D.53102 > 9;
    D.53104 = D.53101 + 64874;
    D.53105 = D.53104 > 9;
    D.53106 = D.53103 & D.53105;
    if (D.53106 != 0) goto <D.53107>; else goto <D.53094>;
    <D.53107>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52639 = D.52600->opcode;
    D.52640 = D.52639 + 64884;
    if (D.52640 > 9) goto <D.53093>; else goto <D.53094>;
    <D.53093>:
    D.52599 = cfg->cbb;
    mono_link_bblock (cfg, D.52599, falsebb);
    <D.53094>:
    <D.53083>:
    D.52599 = cfg->cbb;
    D.52599->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.53108>;
    <D.53066>:
    D.52586 = cfg->mempool;
    D.53109 = mono_mempool_alloc (D.52586, 8);
    ins->data.op[1].many_blocks = D.53109;
    D.53110 = ins->data.op[1].many_blocks;
    *D.53110 = end_bb;
    D.53110 = ins->data.op[1].many_blocks;
    D.53111 = D.53110 + 4;
    *D.53111 = 0B;
    D.52599 = cfg->cbb;
    mono_link_bblock (cfg, D.52599, end_bb);
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 != 0B) goto <D.53112>; else goto <D.53113>;
    <D.53112>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52600->next = ins;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    ins->prev = D.52600;
    D.52599 = cfg->cbb;
    D.52599->last_ins = ins;
    goto <D.53114>;
    <D.53113>:
    D.52599 = cfg->cbb;
    D.52599 = cfg->cbb;
    D.52599->last_ins = ins;
    D.52600 = D.52599->last_ins;
    D.52599->code = D.52600;
    <D.53114>:
    D.52667 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.52668 = D.52667 & 8;
    if (D.52668 == 0) goto <D.53115>; else goto <D.53116>;
    <D.53115>:
    D.52586 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.52586, 172);
    D.52587 = cfg->num_bblocks;
    D.53117 = D.52587;
    D.53118 = D.53117 + 1;
    cfg->num_bblocks = D.53118;
    D.53119 = (int) D.53117;
    falsebb->block_num = D.53119;
    D.53110 = ins->data.op[1].many_blocks;
    D.53111 = D.53110 + 4;
    *D.53111 = falsebb;
    D.52599 = cfg->cbb;
    mono_link_bblock (cfg, D.52599, falsebb);
    D.53073 = falsebb->cil_code;
    if (D.53073 != 0B) goto <D.53120>; else goto <D.53121>;
    <D.53120>:
    D.52619 = cfg->cil_offset_to_bb;
    D.53073 = falsebb->cil_code;
    D.53076 = (int) D.53073;
    D.52621 = cfg->cil_start;
    D.52622 = (int) D.52621;
    D.53077 = D.53076 - D.52622;
    D.53078 = (unsigned int) D.53077;
    D.53079 = D.53078 * 4;
    D.53080 = D.52619 + D.53079;
    *D.53080 = falsebb;
    <D.53121>:
    D.52627 = cfg->real_offset;
    falsebb->real_offset = D.52627;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 != 0B) goto <D.53125>; else goto <D.53122>;
    <D.53125>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.53126 = D.52600->opcode;
    D.53127 = D.53126 + 64981;
    D.53128 = D.53127 <= 9;
    D.53129 = D.53126 + 64874;
    D.53130 = D.53129 <= 9;
    D.53131 = D.53128 | D.53130;
    if (D.53131 != 0) goto <D.53123>; else goto <D.53132>;
    <D.53132>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52639 = D.52600->opcode;
    D.52640 = D.52639 + 64884;
    if (D.52640 <= 9) goto <D.53123>; else goto <D.53122>;
    <D.53123>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52641 = D.52600->data.op[1].many_blocks;
    D.52642 = D.52641 + 4;
    D.52643 = *D.52642;
    if (D.52643 == 0B) goto <D.53133>; else goto <D.53122>;
    <D.53133>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52641 = D.52600->data.op[1].many_blocks;
    D.52642 = D.52641 + 4;
    *D.52642 = falsebb;
    D.52599 = cfg->cbb;
    mono_link_bblock (cfg, D.52599, falsebb);
    goto <D.53124>;
    <D.53122>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 == 0B) goto <D.53134>; else goto <D.53136>;
    <D.53136>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.53137 = D.52600->opcode;
    D.53138 = D.53137 != 446;
    D.53139 = D.53137 != 763;
    D.53140 = D.53138 & D.53139;
    if (D.53140 != 0) goto <D.53141>; else goto <D.53135>;
    <D.53141>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.53142 = D.52600->opcode;
    D.53143 = D.53142 + 64981;
    D.53144 = D.53143 > 9;
    D.53145 = D.53142 + 64874;
    D.53146 = D.53145 > 9;
    D.53147 = D.53144 & D.53146;
    if (D.53147 != 0) goto <D.53148>; else goto <D.53135>;
    <D.53148>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52639 = D.52600->opcode;
    D.52640 = D.52639 + 64884;
    if (D.52640 > 9) goto <D.53134>; else goto <D.53135>;
    <D.53134>:
    D.52599 = cfg->cbb;
    mono_link_bblock (cfg, D.52599, falsebb);
    <D.53135>:
    <D.53124>:
    D.52599 = cfg->cbb;
    D.52599->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.53149>;
    <D.53116>:
    D.52599 = cfg->cbb;
    D.52599->extended = 1;
    <D.53149>:
    <D.53108>:
  }
  D.53150 = no_proxy_bb->cil_code;
  if (D.53150 != 0B) goto <D.53151>; else goto <D.53152>;
  <D.53151>:
  D.52619 = cfg->cil_offset_to_bb;
  D.53150 = no_proxy_bb->cil_code;
  D.53153 = (int) D.53150;
  D.52621 = cfg->cil_start;
  D.52622 = (int) D.52621;
  D.53154 = D.53153 - D.52622;
  D.53155 = (unsigned int) D.53154;
  D.53156 = D.53155 * 4;
  D.53157 = D.52619 + D.53156;
  *D.53157 = no_proxy_bb;
  <D.53152>:
  D.52627 = cfg->real_offset;
  no_proxy_bb->real_offset = D.52627;
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  if (D.52600 != 0B) goto <D.53161>; else goto <D.53158>;
  <D.53161>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  D.53162 = D.52600->opcode;
  D.53163 = D.53162 + 64981;
  D.53164 = D.53163 <= 9;
  D.53165 = D.53162 + 64874;
  D.53166 = D.53165 <= 9;
  D.53167 = D.53164 | D.53166;
  if (D.53167 != 0) goto <D.53159>; else goto <D.53168>;
  <D.53168>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  D.52639 = D.52600->opcode;
  D.52640 = D.52639 + 64884;
  if (D.52640 <= 9) goto <D.53159>; else goto <D.53158>;
  <D.53159>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  D.52641 = D.52600->data.op[1].many_blocks;
  D.52642 = D.52641 + 4;
  D.52643 = *D.52642;
  if (D.52643 == 0B) goto <D.53169>; else goto <D.53158>;
  <D.53169>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  D.52641 = D.52600->data.op[1].many_blocks;
  D.52642 = D.52641 + 4;
  *D.52642 = no_proxy_bb;
  D.52599 = cfg->cbb;
  mono_link_bblock (cfg, D.52599, no_proxy_bb);
  goto <D.53160>;
  <D.53158>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  if (D.52600 == 0B) goto <D.53170>; else goto <D.53172>;
  <D.53172>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  D.53173 = D.52600->opcode;
  D.53174 = D.53173 != 446;
  D.53175 = D.53173 != 763;
  D.53176 = D.53174 & D.53175;
  if (D.53176 != 0) goto <D.53177>; else goto <D.53171>;
  <D.53177>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  D.53178 = D.52600->opcode;
  D.53179 = D.53178 + 64981;
  D.53180 = D.53179 > 9;
  D.53181 = D.53178 + 64874;
  D.53182 = D.53181 > 9;
  D.53183 = D.53180 & D.53182;
  if (D.53183 != 0) goto <D.53184>; else goto <D.53171>;
  <D.53184>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  D.52639 = D.52600->opcode;
  D.52640 = D.52639 + 64884;
  if (D.52640 > 9) goto <D.53170>; else goto <D.53171>;
  <D.53170>:
  D.52599 = cfg->cbb;
  mono_link_bblock (cfg, D.52599, no_proxy_bb);
  <D.53171>:
  <D.53160>:
  D.52599 = cfg->cbb;
  D.52599->next_bb = no_proxy_bb;
  cfg->cbb = no_proxy_bb;
  mini_emit_castclass (cfg, obj_reg, klass_reg, klass, ok_result_bb);
  <D.52879>:
  D.53185 = ok_result_bb->cil_code;
  if (D.53185 != 0B) goto <D.53186>; else goto <D.53187>;
  <D.53186>:
  D.52619 = cfg->cil_offset_to_bb;
  D.53185 = ok_result_bb->cil_code;
  D.53188 = (int) D.53185;
  D.52621 = cfg->cil_start;
  D.52622 = (int) D.52621;
  D.53189 = D.53188 - D.52622;
  D.53190 = (unsigned int) D.53189;
  D.53191 = D.53190 * 4;
  D.53192 = D.52619 + D.53191;
  *D.53192 = ok_result_bb;
  <D.53187>:
  D.52627 = cfg->real_offset;
  ok_result_bb->real_offset = D.52627;
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  if (D.52600 != 0B) goto <D.53196>; else goto <D.53193>;
  <D.53196>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  D.53197 = D.52600->opcode;
  D.53198 = D.53197 + 64981;
  D.53199 = D.53198 <= 9;
  D.53200 = D.53197 + 64874;
  D.53201 = D.53200 <= 9;
  D.53202 = D.53199 | D.53201;
  if (D.53202 != 0) goto <D.53194>; else goto <D.53203>;
  <D.53203>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  D.52639 = D.52600->opcode;
  D.52640 = D.52639 + 64884;
  if (D.52640 <= 9) goto <D.53194>; else goto <D.53193>;
  <D.53194>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  D.52641 = D.52600->data.op[1].many_blocks;
  D.52642 = D.52641 + 4;
  D.52643 = *D.52642;
  if (D.52643 == 0B) goto <D.53204>; else goto <D.53193>;
  <D.53204>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  D.52641 = D.52600->data.op[1].many_blocks;
  D.52642 = D.52641 + 4;
  *D.52642 = ok_result_bb;
  D.52599 = cfg->cbb;
  mono_link_bblock (cfg, D.52599, ok_result_bb);
  goto <D.53195>;
  <D.53193>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  if (D.52600 == 0B) goto <D.53205>; else goto <D.53207>;
  <D.53207>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  D.53208 = D.52600->opcode;
  D.53209 = D.53208 != 446;
  D.53210 = D.53208 != 763;
  D.53211 = D.53209 & D.53210;
  if (D.53211 != 0) goto <D.53212>; else goto <D.53206>;
  <D.53212>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  D.53213 = D.52600->opcode;
  D.53214 = D.53213 + 64981;
  D.53215 = D.53214 > 9;
  D.53216 = D.53213 + 64874;
  D.53217 = D.53216 > 9;
  D.53218 = D.53215 & D.53217;
  if (D.53218 != 0) goto <D.53219>; else goto <D.53206>;
  <D.53219>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  D.52639 = D.52600->opcode;
  D.52640 = D.52639 + 64884;
  if (D.52640 > 9) goto <D.53205>; else goto <D.53206>;
  <D.53205>:
  D.52599 = cfg->cbb;
  mono_link_bblock (cfg, D.52599, ok_result_bb);
  <D.53206>:
  <D.53195>:
  D.52599 = cfg->cbb;
  D.52599->next_bb = ok_result_bb;
  cfg->cbb = ok_result_bb;
  {
    struct MonoInst * inst;

    D.52586 = cfg->mempool;
    inst = mono_mempool_alloc (D.52586, 48);
    inst->data.op[1].const_val = 0;
    D.53220 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.53220;
    inst->prev = 0B;
    D.53221 = inst->prev;
    inst->next = D.53221;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.53222 = inst->sreg3;
    inst->sreg2 = D.53222;
    D.53223 = inst->sreg2;
    inst->sreg1 = D.53223;
    D.52598 = cfg->ip;
    inst->cil_code = D.52598;
    inst->dreg = dreg;
    inst->data.op[0].const_val = 0;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    if (D.52600 != 0B) goto <D.53224>; else goto <D.53225>;
    <D.53224>:
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    D.52600->next = inst;
    D.52599 = cfg->cbb;
    D.52600 = D.52599->last_ins;
    inst->prev = D.52600;
    D.52599 = cfg->cbb;
    D.52599->last_ins = inst;
    goto <D.53226>;
    <D.53225>:
    D.52599 = cfg->cbb;
    D.52599 = cfg->cbb;
    D.52599->last_ins = inst;
    D.52600 = D.52599->last_ins;
    D.52599->code = D.52600;
    <D.53226>:
  }
  D.53227 = end_bb->cil_code;
  if (D.53227 != 0B) goto <D.53228>; else goto <D.53229>;
  <D.53228>:
  D.52619 = cfg->cil_offset_to_bb;
  D.53227 = end_bb->cil_code;
  D.53230 = (int) D.53227;
  D.52621 = cfg->cil_start;
  D.52622 = (int) D.52621;
  D.53231 = D.53230 - D.52622;
  D.53232 = (unsigned int) D.53231;
  D.53233 = D.53232 * 4;
  D.53234 = D.52619 + D.53233;
  *D.53234 = end_bb;
  <D.53229>:
  D.52627 = cfg->real_offset;
  end_bb->real_offset = D.52627;
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  if (D.52600 != 0B) goto <D.53238>; else goto <D.53235>;
  <D.53238>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  D.53239 = D.52600->opcode;
  D.53240 = D.53239 + 64981;
  D.53241 = D.53240 <= 9;
  D.53242 = D.53239 + 64874;
  D.53243 = D.53242 <= 9;
  D.53244 = D.53241 | D.53243;
  if (D.53244 != 0) goto <D.53236>; else goto <D.53245>;
  <D.53245>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  D.52639 = D.52600->opcode;
  D.52640 = D.52639 + 64884;
  if (D.52640 <= 9) goto <D.53236>; else goto <D.53235>;
  <D.53236>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  D.52641 = D.52600->data.op[1].many_blocks;
  D.52642 = D.52641 + 4;
  D.52643 = *D.52642;
  if (D.52643 == 0B) goto <D.53246>; else goto <D.53235>;
  <D.53246>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  D.52641 = D.52600->data.op[1].many_blocks;
  D.52642 = D.52641 + 4;
  *D.52642 = end_bb;
  D.52599 = cfg->cbb;
  mono_link_bblock (cfg, D.52599, end_bb);
  goto <D.53237>;
  <D.53235>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  if (D.52600 == 0B) goto <D.53247>; else goto <D.53249>;
  <D.53249>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  D.53250 = D.52600->opcode;
  D.53251 = D.53250 != 446;
  D.53252 = D.53250 != 763;
  D.53253 = D.53251 & D.53252;
  if (D.53253 != 0) goto <D.53254>; else goto <D.53248>;
  <D.53254>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  D.53255 = D.52600->opcode;
  D.53256 = D.53255 + 64981;
  D.53257 = D.53256 > 9;
  D.53258 = D.53255 + 64874;
  D.53259 = D.53258 > 9;
  D.53260 = D.53257 & D.53259;
  if (D.53260 != 0) goto <D.53261>; else goto <D.53248>;
  <D.53261>:
  D.52599 = cfg->cbb;
  D.52600 = D.52599->last_ins;
  D.52639 = D.52600->opcode;
  D.52640 = D.52639 + 64884;
  if (D.52640 > 9) goto <D.53247>; else goto <D.53248>;
  <D.53247>:
  D.52599 = cfg->cbb;
  mono_link_bblock (cfg, D.52599, end_bb);
  <D.53248>:
  <D.53237>:
  D.52599 = cfg->cbb;
  D.52599->next_bb = end_bb;
  cfg->cbb = end_bb;
  D.52586 = cfg->mempool;
  ins = mono_mempool_alloc (D.52586, 48);
  ins->data.op[1].const_val = 0;
  D.53262 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.53262;
  ins->prev = 0B;
  D.53263 = ins->prev;
  ins->next = D.53263;
  ins->opcode = 362;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.53264 = ins->sreg3;
  ins->sreg2 = D.53264;
  D.53265 = ins->sreg2;
  ins->sreg1 = D.53265;
  D.52598 = cfg->ip;
  ins->cil_code = D.52598;
  ins->dreg = dreg;
  ins->type = 1;
  D.53266 = ins;
  return D.53266;
}


emit_memory_barrier (struct MonoCompile * cfg, int kind)
{
  struct MonoMemPool * D.53268;
  int D.53269;
  struct MonoInst * D.53270;
  int D.53271;
  int D.53272;
  const unsigned char * D.53273;
  struct MonoBasicBlock * D.53274;
  struct MonoInst * D.53275;
  struct MonoInst * D.53279;
  struct MonoInst * ins;

  ins = 0B;
  D.53268 = cfg->mempool;
  ins = mono_mempool_alloc (D.53268, 48);
  ins->data.op[1].const_val = 0;
  D.53269 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.53269;
  ins->prev = 0B;
  D.53270 = ins->prev;
  ins->next = D.53270;
  ins->opcode = 975;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.53271 = ins->sreg3;
  ins->sreg2 = D.53271;
  D.53272 = ins->sreg2;
  ins->sreg1 = D.53272;
  D.53273 = cfg->ip;
  ins->cil_code = D.53273;
  D.53274 = cfg->cbb;
  D.53275 = D.53274->last_ins;
  if (D.53275 != 0B) goto <D.53276>; else goto <D.53277>;
  <D.53276>:
  D.53274 = cfg->cbb;
  D.53275 = D.53274->last_ins;
  D.53275->next = ins;
  D.53274 = cfg->cbb;
  D.53275 = D.53274->last_ins;
  ins->prev = D.53275;
  D.53274 = cfg->cbb;
  D.53274->last_ins = ins;
  goto <D.53278>;
  <D.53277>:
  D.53274 = cfg->cbb;
  D.53274 = cfg->cbb;
  D.53274->last_ins = ins;
  D.53275 = D.53274->last_ins;
  D.53274->code = D.53275;
  <D.53278>:
  ins->backend.memory_barrier_kind = kind;
  D.53279 = ins;
  return D.53279;
}


type_from_op (struct MonoInst * ins, struct MonoInst * src1, struct MonoInst * src2)
{
  short unsigned int D.53281;
  int D.53282;
  unsigned char D.53283;
  int D.53284;
  unsigned char D.53285;
  int D.53286;
  char D.53287;
  unsigned char D.53288;
  unsigned char D.53289;
  int D.53290;
  short unsigned int D.53291;
  short unsigned int D.53292;
  char D.53293;
  unsigned char D.53294;
  char D.53295;
  unsigned char D.53296;
  char D.53297;
  _Bool D.53298;
  unsigned char D.53299;
  char D.53306;
  _Bool D.53307;
  unsigned char D.53308;
  short unsigned int D.53311;
  short unsigned int D.53312;
  short unsigned int D.53313;
  short unsigned int D.53314;
  int D.53315;
  int D.53316;
  _Bool D.53317;
  unsigned char D.53318;
  char D.53319;
  unsigned char D.53320;
  short unsigned int D.53321;
  short unsigned int D.53322;
  unsigned char D.53323;
  short unsigned int D.53327;
  short unsigned int D.53328;
  short unsigned int D.53330;
  short unsigned int D.53331;
  short unsigned int D.53332;
  short unsigned int D.53333;
  short unsigned int D.53335;
  short unsigned int D.53336;
  struct MonoClass * D.53341;

  D.53281 = ins->opcode;
  D.53282 = (int) D.53281;
  switch (D.53282) <default: <D.24753>, case 59: <D.24676>, case 60: <D.24677>, case 61: <D.24678>, case 62: <D.24679>, case 63: <D.24680>, case 64: <D.24681>, case 65: <D.24682>, case 66: <D.24683>, case 67: <D.24684>, case 68: <D.24685>, case 88: <D.24658>, case 89: <D.24659>, case 90: <D.24660>, case 91: <D.24661>, case 92: <D.24664>, case 93: <D.24662>, case 94: <D.24665>, case 95: <D.24666>, case 96: <D.24667>, case 97: <D.24668>, case 98: <D.24669>, case 99: <D.24670>, case 100: <D.24671>, case 101: <D.24691>, case 102: <D.24692>, case 103: <D.24693>, case 104: <D.24694>, case 105: <D.24695>, case 106: <D.24723>, case 107: <D.24729>, case 108: <D.24730>, case 109: <D.24696>, case 110: <D.24724>, case 118: <D.24697>, case 130: <D.24710>, case 131: <D.24711>, case 132: <D.24712>, case 133: <D.24728>, case 134: <D.24713>, case 135: <D.24714>, case 136: <D.24715>, case 137: <D.24727>, case 138: <D.24708>, case 139: <D.24709>, case 179: <D.24702>, case 180: <D.24703>, case 181: <D.24704>, case 182: <D.24705>, case 183: <D.24706>, case 184: <D.24707>, case 185: <D.24725>, case 186: <D.24726>, case 209: <D.24732>, case 210: <D.24733>, case 211: <D.24734>, case 212: <D.24735>, case 213: <D.24736>, case 214: <D.24737>, case 215: <D.24738>, case 216: <D.24739>, case 217: <D.24740>, case 218: <D.24741>, case 219: <D.24742>, case 224: <D.24716>, case 322: <D.24672>, case 325: <D.24673>, case 326: <D.24674>, case 327: <D.24675>, case 391: <D.24743>, case 392: <D.24744>, case 393: <D.24745>, case 394: <D.24746>, case 395: <D.24747>, case 396: <D.24748>, case 397: <D.24749>, case 398: <D.24750>, case 399: <D.24751>, case 400: <D.24752>, case 450: <D.24686>, case 451: <D.24687>, case 452: <D.24688>, case 453: <D.24689>, case 454: <D.24690>, case 732: <D.24731>>
  <D.24658>:
  <D.24659>:
  <D.24660>:
  <D.24661>:
  <D.24662>:
  D.53283 = src1->type;
  D.53284 = (int) D.53283;
  D.53285 = src2->type;
  D.53286 = (int) D.53285;
  D.53287 = bin_num_table[D.53284][D.53286];
  D.53288 = (unsigned char) D.53287;
  ins->type = D.53288;
  D.53281 = ins->opcode;
  D.53289 = ins->type;
  D.53290 = (int) D.53289;
  D.53291 = binops_op_map[D.53290];
  D.53292 = D.53281 + D.53291;
  ins->opcode = D.53292;
  goto <D.24663>;
  <D.24664>:
  <D.24665>:
  <D.24666>:
  <D.24667>:
  <D.24668>:
  D.53283 = src1->type;
  D.53284 = (int) D.53283;
  D.53285 = src2->type;
  D.53286 = (int) D.53285;
  D.53293 = bin_int_table[D.53284][D.53286];
  D.53294 = (unsigned char) D.53293;
  ins->type = D.53294;
  D.53281 = ins->opcode;
  D.53289 = ins->type;
  D.53290 = (int) D.53289;
  D.53291 = binops_op_map[D.53290];
  D.53292 = D.53281 + D.53291;
  ins->opcode = D.53292;
  goto <D.24663>;
  <D.24669>:
  <D.24670>:
  <D.24671>:
  D.53283 = src1->type;
  D.53284 = (int) D.53283;
  D.53285 = src2->type;
  D.53286 = (int) D.53285;
  D.53295 = shift_table[D.53284][D.53286];
  D.53296 = (unsigned char) D.53295;
  ins->type = D.53296;
  D.53281 = ins->opcode;
  D.53289 = ins->type;
  D.53290 = (int) D.53289;
  D.53291 = binops_op_map[D.53290];
  D.53292 = D.53281 + D.53291;
  ins->opcode = D.53292;
  goto <D.24663>;
  <D.24672>:
  <D.24673>:
  <D.24674>:
  D.53283 = src1->type;
  D.53284 = (int) D.53283;
  D.53285 = src2->type;
  D.53286 = (int) D.53285;
  D.53297 = bin_comp_table[D.53284][D.53286];
  D.53298 = D.53297 != 0;
  D.53299 = (unsigned char) D.53298;
  ins->type = D.53299;
  D.53283 = src1->type;
  if (D.53283 == 2) goto <D.53300>; else goto <D.53301>;
  <D.53300>:
  ins->opcode = 325;
  goto <D.53302>;
  <D.53301>:
  D.53283 = src1->type;
  if (D.53283 == 4) goto <D.53303>; else goto <D.53304>;
  <D.53303>:
  ins->opcode = 324;
  goto <D.53305>;
  <D.53304>:
  ins->opcode = 326;
  <D.53305>:
  <D.53302>:
  goto <D.24663>;
  <D.24675>:
  D.53283 = src1->type;
  D.53284 = (int) D.53283;
  D.53283 = src1->type;
  D.53284 = (int) D.53283;
  D.53306 = bin_comp_table[D.53284][D.53284];
  D.53307 = D.53306 != 0;
  D.53308 = (unsigned char) D.53307;
  ins->type = D.53308;
  D.53283 = src1->type;
  if (D.53283 == 2) goto <D.53309>; else goto <D.53310>;
  <D.53309>:
  ins->opcode = 328;
  <D.53310>:
  goto <D.24663>;
  <D.24676>:
  <D.24677>:
  <D.24678>:
  <D.24679>:
  <D.24680>:
  <D.24681>:
  <D.24682>:
  <D.24683>:
  <D.24684>:
  <D.24685>:
  D.53281 = ins->opcode;
  D.53283 = src1->type;
  D.53284 = (int) D.53283;
  D.53311 = beqops_op_map[D.53284];
  D.53312 = D.53281 + D.53311;
  ins->opcode = D.53312;
  goto <D.24663>;
  <D.24686>:
  D.53283 = src1->type;
  D.53284 = (int) D.53283;
  D.53285 = src2->type;
  D.53286 = (int) D.53285;
  D.53297 = bin_comp_table[D.53284][D.53286];
  D.53298 = D.53297 != 0;
  D.53299 = (unsigned char) D.53298;
  ins->type = D.53299;
  D.53281 = ins->opcode;
  D.53283 = src1->type;
  D.53284 = (int) D.53283;
  D.53313 = ceqops_op_map[D.53284];
  D.53314 = D.53281 + D.53313;
  ins->opcode = D.53314;
  goto <D.24663>;
  <D.24687>:
  <D.24688>:
  <D.24689>:
  <D.24690>:
  D.53283 = src1->type;
  D.53284 = (int) D.53283;
  D.53285 = src2->type;
  D.53286 = (int) D.53285;
  D.53297 = bin_comp_table[D.53284][D.53286];
  D.53315 = (int) D.53297;
  D.53316 = D.53315 & 1;
  D.53317 = D.53316 != 0;
  D.53318 = (unsigned char) D.53317;
  ins->type = D.53318;
  D.53281 = ins->opcode;
  D.53283 = src1->type;
  D.53284 = (int) D.53283;
  D.53313 = ceqops_op_map[D.53284];
  D.53314 = D.53281 + D.53313;
  ins->opcode = D.53314;
  goto <D.24663>;
  <D.24691>:
  D.53283 = src1->type;
  D.53284 = (int) D.53283;
  D.53319 = neg_table[D.53284];
  D.53320 = (unsigned char) D.53319;
  ins->type = D.53320;
  D.53281 = ins->opcode;
  D.53289 = ins->type;
  D.53290 = (int) D.53289;
  D.53321 = unops_op_map[D.53290];
  D.53322 = D.53281 + D.53321;
  ins->opcode = D.53322;
  goto <D.24663>;
  <D.24692>:
  D.53283 = src1->type;
  D.53323 = D.53283 + 255;
  if (D.53323 <= 2) goto <D.53324>; else goto <D.53325>;
  <D.53324>:
  D.53283 = src1->type;
  ins->type = D.53283;
  goto <D.53326>;
  <D.53325>:
  ins->type = 0;
  <D.53326>:
  D.53281 = ins->opcode;
  D.53289 = ins->type;
  D.53290 = (int) D.53289;
  D.53321 = unops_op_map[D.53290];
  D.53322 = D.53281 + D.53321;
  ins->opcode = D.53322;
  goto <D.24663>;
  <D.24693>:
  <D.24694>:
  <D.24695>:
  <D.24696>:
  ins->type = 1;
  D.53281 = ins->opcode;
  D.53283 = src1->type;
  D.53284 = (int) D.53283;
  D.53327 = unops_op_map[D.53284];
  D.53328 = D.53281 + D.53327;
  ins->opcode = D.53328;
  goto <D.24663>;
  <D.24697>:
  ins->type = 4;
  D.53283 = src1->type;
  D.53284 = (int) D.53283;
  switch (D.53284) <default: <D.53329>, case 1: <D.24698>, case 2: <D.24701>, case 3: <D.24699>>
  <D.24698>:
  <D.24699>:
  ins->opcode = 592;
  goto <D.24700>;
  <D.24701>:
  ins->opcode = 540;
  goto <D.24700>;
  <D.53329>:
  <D.24700>:
  goto <D.24663>;
  <D.24702>:
  <D.24703>:
  <D.24704>:
  <D.24705>:
  <D.24706>:
  <D.24707>:
  ins->type = 1;
  D.53281 = ins->opcode;
  D.53283 = src1->type;
  D.53284 = (int) D.53283;
  D.53330 = ovf3ops_op_map[D.53284];
  D.53331 = D.53281 + D.53330;
  ins->opcode = D.53331;
  goto <D.24663>;
  <D.24708>:
  <D.24709>:
  ins->type = 3;
  D.53281 = ins->opcode;
  D.53283 = src1->type;
  D.53284 = (int) D.53283;
  D.53332 = ovf2ops_op_map[D.53284];
  D.53333 = D.53281 + D.53332;
  ins->opcode = D.53333;
  goto <D.24663>;
  <D.24710>:
  <D.24711>:
  <D.24712>:
  <D.24713>:
  <D.24714>:
  <D.24715>:
  ins->type = 1;
  D.53281 = ins->opcode;
  D.53283 = src1->type;
  D.53284 = (int) D.53283;
  D.53332 = ovf2ops_op_map[D.53284];
  D.53333 = D.53281 + D.53332;
  ins->opcode = D.53333;
  goto <D.24663>;
  <D.24716>:
  ins->type = 3;
  D.53283 = src1->type;
  D.53284 = (int) D.53283;
  switch (D.53284) <default: <D.53334>, case 1: <D.24717>, case 2: <D.24721>, case 3: <D.24719>, case 4: <D.24722>, case 5: <D.24720>>
  <D.24717>:
  ins->opcode = 593;
  goto <D.24718>;
  <D.24719>:
  <D.24720>:
  ins->opcode = 428;
  goto <D.24718>;
  <D.24721>:
  ins->opcode = 541;
  goto <D.24718>;
  <D.24722>:
  ins->opcode = 731;
  goto <D.24718>;
  <D.53334>:
  <D.24718>:
  goto <D.24663>;
  <D.24723>:
  <D.24724>:
  ins->type = 2;
  D.53281 = ins->opcode;
  D.53283 = src1->type;
  D.53284 = (int) D.53283;
  D.53327 = unops_op_map[D.53284];
  D.53328 = D.53281 + D.53327;
  ins->opcode = D.53328;
  goto <D.24663>;
  <D.24725>:
  <D.24726>:
  ins->type = 2;
  D.53281 = ins->opcode;
  D.53283 = src1->type;
  D.53284 = (int) D.53283;
  D.53330 = ovf3ops_op_map[D.53284];
  D.53331 = D.53281 + D.53330;
  ins->opcode = D.53331;
  goto <D.24663>;
  <D.24727>:
  <D.24728>:
  ins->type = 2;
  D.53281 = ins->opcode;
  D.53283 = src1->type;
  D.53284 = (int) D.53283;
  D.53332 = ovf2ops_op_map[D.53284];
  D.53333 = D.53281 + D.53332;
  ins->opcode = D.53333;
  goto <D.24663>;
  <D.24729>:
  <D.24730>:
  ins->type = 4;
  D.53281 = ins->opcode;
  D.53283 = src1->type;
  D.53284 = (int) D.53283;
  D.53327 = unops_op_map[D.53284];
  D.53328 = D.53281 + D.53327;
  ins->opcode = D.53328;
  goto <D.24663>;
  <D.24731>:
  ins->type = 4;
  goto <D.24663>;
  <D.24732>:
  <D.24733>:
  ins->type = 1;
  D.53281 = ins->opcode;
  D.53283 = src1->type;
  D.53284 = (int) D.53283;
  D.53335 = ovfops_op_map[D.53284];
  D.53336 = D.53281 + D.53335;
  ins->opcode = D.53336;
  goto <D.24663>;
  <D.24734>:
  <D.24735>:
  <D.24736>:
  ins->type = 3;
  D.53281 = ins->opcode;
  D.53283 = src1->type;
  D.53284 = (int) D.53283;
  D.53335 = ovfops_op_map[D.53284];
  D.53336 = D.53281 + D.53335;
  ins->opcode = D.53336;
  goto <D.24663>;
  <D.24737>:
  <D.24738>:
  <D.24739>:
  <D.24740>:
  <D.24741>:
  <D.24742>:
  D.53283 = src1->type;
  D.53284 = (int) D.53283;
  D.53285 = src2->type;
  D.53286 = (int) D.53285;
  D.53287 = bin_num_table[D.53284][D.53286];
  D.53288 = (unsigned char) D.53287;
  ins->type = D.53288;
  D.53281 = ins->opcode;
  D.53283 = src1->type;
  D.53284 = (int) D.53283;
  D.53335 = ovfops_op_map[D.53284];
  D.53336 = D.53281 + D.53335;
  ins->opcode = D.53336;
  D.53289 = ins->type;
  if (D.53289 == 4) goto <D.53337>; else goto <D.53338>;
  <D.53337>:
  ins->type = 0;
  <D.53338>:
  goto <D.24663>;
  <D.24743>:
  ins->type = 3;
  goto <D.24663>;
  <D.24744>:
  <D.24745>:
  <D.24746>:
  <D.24747>:
  <D.24748>:
  <D.24749>:
  ins->type = 3;
  goto <D.24663>;
  <D.24750>:
  ins->type = 2;
  goto <D.24663>;
  <D.24751>:
  <D.24752>:
  ins->type = 4;
  goto <D.24663>;
  <D.24753>:
  D.53281 = ins->opcode;
  D.53282 = (int) D.53281;
  monoeg_g_log (0B, 4, "opcode 0x%04x not handled in type from op", D.53282);
  <D.24754>:
  goto <D.24754>;
  <D.24663>:
  D.53289 = ins->type;
  if (D.53289 == 5) goto <D.53339>; else goto <D.53340>;
  <D.53339>:
  D.53341 = mono_defaults.object_class;
  ins->klass = D.53341;
  <D.53340>:
}


mono_save_token_info (struct MonoCompile * cfg, struct MonoImage * image, guint32 token, void * key)
{
  unsigned char D.53343;
  unsigned char D.53344;
  struct MonoGenericContext * D.53347;
  unsigned int D.53350;
  struct MonoMemPool * D.53353;
  struct GHashTable * D.53354;

  D.53343 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.53344 = D.53343 & 64;
  if (D.53344 != 0) goto <D.53345>; else goto <D.53346>;
  <D.53345>:
  D.53347 = cfg->generic_context;
  if (D.53347 == 0B) goto <D.53348>; else goto <D.53349>;
  <D.53348>:
  D.53350 = token >> 24;
  if (D.53350 != 0) goto <D.53351>; else goto <D.53352>;
  <D.53351>:
  {
    struct MonoJumpInfoToken * jump_info_token;

    D.53353 = cfg->mempool;
    jump_info_token = mono_mempool_alloc0 (D.53353, 20);
    jump_info_token->image = image;
    jump_info_token->token = token;
    D.53354 = cfg->token_info_hash;
    monoeg_g_hash_table_insert_replace (D.53354, key, jump_info_token, 0);
  }
  <D.53352>:
  <D.53349>:
  <D.53346>:
}


ip_in_bb (struct MonoCompile * cfg, struct MonoBasicBlock * bb, const guint8 * ip)
{
  struct MonoBasicBlock * * D.53355;
  int ip.562;
  unsigned char * D.53357;
  int D.53358;
  int D.53359;
  unsigned int D.53360;
  unsigned int D.53361;
  struct MonoBasicBlock * * D.53362;
  gboolean D.53363;
  _Bool D.53364;
  _Bool D.53365;
  _Bool D.53366;
  struct MonoBasicBlock * b;

  D.53355 = cfg->cil_offset_to_bb;
  ip.562 = (int) ip;
  D.53357 = cfg->cil_start;
  D.53358 = (int) D.53357;
  D.53359 = ip.562 - D.53358;
  D.53360 = (unsigned int) D.53359;
  D.53361 = D.53360 * 4;
  D.53362 = D.53355 + D.53361;
  b = *D.53362;
  D.53364 = b == 0B;
  D.53365 = b == bb;
  D.53366 = D.53364 | D.53365;
  D.53363 = (gboolean) D.53366;
  return D.53363;
}


handle_delegate_ctor (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * target, struct MonoMethod * method, int context_used)
{
  struct MonoInst * D.53370;
  short unsigned int D.53373;
  void * D.53375;
  struct MonoMemPool * D.53376;
  int D.53377;
  struct MonoInst * D.53378;
  int D.53379;
  int D.53380;
  const unsigned char * D.53381;
  int D.53382;
  int D.53383;
  struct MonoBasicBlock * D.53384;
  struct MonoInst * D.53385;
  unsigned char D.53389;
  unsigned char D.53390;
  unsigned int D.53393;
  int D.53394;
  struct MonoInst * D.53395;
  int D.53396;
  int D.53397;
  int D.53401;
  struct MonoInst * D.53402;
  int D.53403;
  int D.53404;
  int D.53405;
  unsigned int D.53411;
  unsigned char D.53415;
  unsigned char D.53416;
  unsigned int D.53419;
  unsigned int D.53420;
  union mono_mutex_t * D.53426;
  _Bool D.53429;
  long int D.53430;
  long int D.53431;
  void * D.53434;
  struct GHashTable * D.53435;
  struct GHashTable * D.53438;
  _Bool D.53443;
  long int D.53444;
  long int D.53445;
  unsigned char D.53448;
  unsigned char D.53449;
  int D.53452;
  struct MonoInst * D.53453;
  guint16 iftmp.563;
  int D.53458;
  int D.53459;
  int D.53462;
  struct MonoInst * D.53463;
  int D.53464;
  int D.53465;
  int D.53466;
  unsigned int D.53468;
  int D.53469;
  unsigned int D.53474;
  int D.53475;
  int D.53479;
  struct MonoInst * D.53480;
  int D.53481;
  int D.53482;
  int D.53483;
  int D.53489;
  struct MonoInst * D.53490;
  guint16 iftmp.564;
  int D.53495;
  int D.53496;
  int D.53499;
  struct MonoInst * D.53500;
  int D.53501;
  int D.53502;
  int D.53503;
  unsigned int D.53505;
  int D.53506;
  struct MonoDomain * D.53511;
  unsigned int D.53512;
  int D.53513;
  int D.53517;
  struct MonoInst * D.53518;
  int D.53519;
  int D.53520;
  int D.53521;
  struct MonoInst * ptr;
  int dreg;
  void * * trampoline;
  struct MonoInst * obj;
  struct MonoInst * method_ins;
  struct MonoInst * tramp_ins;
  struct MonoDomain * domain;
  guint8 * * code_slot;

  obj = handle_alloc (cfg, klass, 0, 0);
  if (obj == 0B) goto <D.53368>; else goto <D.53369>;
  <D.53368>:
  D.53370 = 0B;
  return D.53370;
  <D.53369>:
  D.53373 = target->opcode;
  if (D.53373 != 362) goto <D.53371>; else goto <D.53374>;
  <D.53374>:
  D.53375 = target->data.op[0].p;
  if (D.53375 != 0B) goto <D.53371>; else goto <D.53372>;
  <D.53371>:
  {
    struct MonoInst * inst;

    D.53376 = cfg->mempool;
    inst = mono_mempool_alloc (D.53376, 48);
    inst->data.op[1].const_val = 0;
    D.53377 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.53377;
    inst->prev = 0B;
    D.53378 = inst->prev;
    inst->next = D.53378;
    inst->opcode = 374;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.53379 = inst->sreg3;
    inst->sreg2 = D.53379;
    D.53380 = inst->sreg2;
    inst->sreg1 = D.53380;
    D.53381 = cfg->ip;
    inst->cil_code = D.53381;
    D.53382 = target->dreg;
    inst->sreg1 = D.53382;
    D.53383 = obj->dreg;
    inst->dreg = D.53383;
    inst->data.op[0].const_val = 16;
    D.53384 = cfg->cbb;
    D.53385 = D.53384->last_ins;
    if (D.53385 != 0B) goto <D.53386>; else goto <D.53387>;
    <D.53386>:
    D.53384 = cfg->cbb;
    D.53385 = D.53384->last_ins;
    D.53385->next = inst;
    D.53384 = cfg->cbb;
    D.53385 = D.53384->last_ins;
    inst->prev = D.53385;
    D.53384 = cfg->cbb;
    D.53384->last_ins = inst;
    goto <D.53388>;
    <D.53387>:
    D.53384 = cfg->cbb;
    D.53384 = cfg->cbb;
    D.53384->last_ins = inst;
    D.53385 = D.53384->last_ins;
    D.53384->code = D.53385;
    <D.53388>:
  }
  D.53389 = BIT_FIELD_REF <*cfg, 8, 3416>;
  D.53390 = D.53389 & 16;
  if (D.53390 != 0) goto <D.53391>; else goto <D.53392>;
  <D.53391>:
  D.53393 = alloc_preg (cfg);
  dreg = (int) D.53393;
  D.53376 = cfg->mempool;
  ptr = mono_mempool_alloc (D.53376, 48);
  ptr->data.op[1].const_val = 0;
  D.53394 = ptr->data.op[1].const_val;
  ptr->data.op[0].const_val = D.53394;
  ptr->prev = 0B;
  D.53395 = ptr->prev;
  ptr->next = D.53395;
  ptr->opcode = 629;
  ptr->flags = 0;
  ptr->type = 0;
  ptr->dreg = -1;
  ptr->sreg3 = -1;
  D.53396 = ptr->sreg3;
  ptr->sreg2 = D.53396;
  D.53397 = ptr->sreg2;
  ptr->sreg1 = D.53397;
  D.53381 = cfg->ip;
  ptr->cil_code = D.53381;
  ptr->dreg = dreg;
  D.53383 = obj->dreg;
  ptr->sreg1 = D.53383;
  ptr->data.op[1].const_val = 16;
  D.53384 = cfg->cbb;
  D.53385 = D.53384->last_ins;
  if (D.53385 != 0B) goto <D.53398>; else goto <D.53399>;
  <D.53398>:
  D.53384 = cfg->cbb;
  D.53385 = D.53384->last_ins;
  D.53385->next = ptr;
  D.53384 = cfg->cbb;
  D.53385 = D.53384->last_ins;
  ptr->prev = D.53385;
  D.53384 = cfg->cbb;
  D.53384->last_ins = ptr;
  goto <D.53400>;
  <D.53399>:
  D.53384 = cfg->cbb;
  D.53384 = cfg->cbb;
  D.53384->last_ins = ptr;
  D.53385 = D.53384->last_ins;
  D.53384->code = D.53385;
  <D.53400>:
  emit_write_barrier (cfg, ptr, target);
  <D.53392>:
  <D.53372>:
  method_ins = emit_get_rgctx_method (cfg, context_used, method, 5);
  {
    struct MonoInst * inst;

    D.53376 = cfg->mempool;
    inst = mono_mempool_alloc (D.53376, 48);
    inst->data.op[1].const_val = 0;
    D.53401 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.53401;
    inst->prev = 0B;
    D.53402 = inst->prev;
    inst->next = D.53402;
    inst->opcode = 374;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.53403 = inst->sreg3;
    inst->sreg2 = D.53403;
    D.53404 = inst->sreg2;
    inst->sreg1 = D.53404;
    D.53381 = cfg->ip;
    inst->cil_code = D.53381;
    D.53405 = method_ins->dreg;
    inst->sreg1 = D.53405;
    D.53383 = obj->dreg;
    inst->dreg = D.53383;
    inst->data.op[0].const_val = 20;
    D.53384 = cfg->cbb;
    D.53385 = D.53384->last_ins;
    if (D.53385 != 0B) goto <D.53406>; else goto <D.53407>;
    <D.53406>:
    D.53384 = cfg->cbb;
    D.53385 = D.53384->last_ins;
    D.53385->next = inst;
    D.53384 = cfg->cbb;
    D.53385 = D.53384->last_ins;
    inst->prev = D.53385;
    D.53384 = cfg->cbb;
    D.53384->last_ins = inst;
    goto <D.53408>;
    <D.53407>:
    D.53384 = cfg->cbb;
    D.53384 = cfg->cbb;
    D.53384->last_ins = inst;
    D.53385 = D.53384->last_ins;
    D.53384->code = D.53385;
    <D.53408>:
  }
  D.53389 = BIT_FIELD_REF <*cfg, 8, 3416>;
  D.53390 = D.53389 & 16;
  if (D.53390 != 0) goto <D.53409>; else goto <D.53410>;
  <D.53409>:
  D.53411 = alloc_preg (cfg);
  dreg = (int) D.53411;
  D.53376 = cfg->mempool;
  ptr = mono_mempool_alloc (D.53376, 48);
  ptr->data.op[1].const_val = 0;
  D.53394 = ptr->data.op[1].const_val;
  ptr->data.op[0].const_val = D.53394;
  ptr->prev = 0B;
  D.53395 = ptr->prev;
  ptr->next = D.53395;
  ptr->opcode = 629;
  ptr->flags = 0;
  ptr->type = 0;
  ptr->dreg = -1;
  ptr->sreg3 = -1;
  D.53396 = ptr->sreg3;
  ptr->sreg2 = D.53396;
  D.53397 = ptr->sreg2;
  ptr->sreg1 = D.53397;
  D.53381 = cfg->ip;
  ptr->cil_code = D.53381;
  ptr->dreg = dreg;
  D.53383 = obj->dreg;
  ptr->sreg1 = D.53383;
  ptr->data.op[1].const_val = 20;
  D.53384 = cfg->cbb;
  D.53385 = D.53384->last_ins;
  if (D.53385 != 0B) goto <D.53412>; else goto <D.53413>;
  <D.53412>:
  D.53384 = cfg->cbb;
  D.53385 = D.53384->last_ins;
  D.53385->next = ptr;
  D.53384 = cfg->cbb;
  D.53385 = D.53384->last_ins;
  ptr->prev = D.53385;
  D.53384 = cfg->cbb;
  D.53384->last_ins = ptr;
  goto <D.53414>;
  <D.53413>:
  D.53384 = cfg->cbb;
  D.53384 = cfg->cbb;
  D.53384->last_ins = ptr;
  D.53385 = D.53384->last_ins;
  D.53384->code = D.53385;
  <D.53414>:
  emit_write_barrier (cfg, ptr, method_ins);
  <D.53410>:
  D.53415 = BIT_FIELD_REF <*method, 8, 168>;
  D.53416 = D.53415 & 2;
  if (D.53416 == 0) goto <D.53417>; else goto <D.53418>;
  <D.53417>:
  D.53419 = cfg->opt;
  D.53420 = D.53419 & 512;
  if (D.53420 == 0) goto <D.53421>; else goto <D.53422>;
  <D.53421>:
  {
    struct MonoInst * code_slot_ins;

    if (context_used != 0) goto <D.53423>; else goto <D.53424>;
    <D.53423>:
    code_slot_ins = emit_get_rgctx_method (cfg, context_used, method, 11);
    goto <D.53425>;
    <D.53424>:
    domain = mono_domain_get ();
    {
      int ret;

      D.53426 = &domain->lock.mutex;
      ret = pthread_mutex_lock (D.53426);
      if (ret != 0) goto <D.53427>; else goto <D.53428>;
      <D.53427>:
      monoeg_g_log (0B, 16, "Bad call to mono_mutex_lock result %d", ret);
      <D.53428>:
      D.53429 = ret != 0;
      D.53430 = (long int) D.53429;
      D.53431 = __builtin_expect (D.53430, 0);
      if (D.53431 != 0) goto <D.53432>; else goto <D.53433>;
      <D.53432>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4431, "ret == 0");
      <D.53433>:
    }
    D.53434 = domain->runtime_info;
    D.53435 = MEM[(struct MonoJitDomainInfo *)D.53434].method_code_hash;
    if (D.53435 == 0B) goto <D.53436>; else goto <D.53437>;
    <D.53436>:
    D.53434 = domain->runtime_info;
    D.53438 = monoeg_g_hash_table_new (0B, 0B);
    MEM[(struct MonoJitDomainInfo *)D.53434].method_code_hash = D.53438;
    <D.53437>:
    D.53434 = domain->runtime_info;
    D.53435 = MEM[(struct MonoJitDomainInfo *)D.53434].method_code_hash;
    code_slot = monoeg_g_hash_table_lookup (D.53435, method);
    if (code_slot == 0B) goto <D.53439>; else goto <D.53440>;
    <D.53439>:
    code_slot = mono_domain_alloc0 (domain, 4);
    D.53434 = domain->runtime_info;
    D.53435 = MEM[(struct MonoJitDomainInfo *)D.53434].method_code_hash;
    monoeg_g_hash_table_insert_replace (D.53435, method, code_slot, 0);
    <D.53440>:
    {
      int ret;

      D.53426 = &domain->lock.mutex;
      ret = pthread_mutex_unlock (D.53426);
      if (ret != 0) goto <D.53441>; else goto <D.53442>;
      <D.53441>:
      monoeg_g_log (0B, 16, "Bad call to mono_mutex_unlock result %d", ret);
      <D.53442>:
      D.53443 = ret != 0;
      D.53444 = (long int) D.53443;
      D.53445 = __builtin_expect (D.53444, 0);
      if (D.53445 != 0) goto <D.53446>; else goto <D.53447>;
      <D.53446>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4439, "ret == 0");
      <D.53447>:
    }
    D.53448 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.53449 = D.53448 & 64;
    if (D.53449 != 0) goto <D.53450>; else goto <D.53451>;
    <D.53450>:
    D.53376 = cfg->mempool;
    code_slot_ins = mono_mempool_alloc (D.53376, 48);
    code_slot_ins->data.op[1].const_val = 0;
    D.53452 = code_slot_ins->data.op[1].const_val;
    code_slot_ins->data.op[0].const_val = D.53452;
    code_slot_ins->prev = 0B;
    D.53453 = code_slot_ins->prev;
    code_slot_ins->next = D.53453;
    D.53448 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.53449 = D.53448 & 64;
    if (D.53449 != 0) goto <D.53455>; else goto <D.53456>;
    <D.53455>:
    iftmp.563 = 738;
    goto <D.53457>;
    <D.53456>:
    iftmp.563 = 362;
    <D.53457>:
    code_slot_ins->opcode = iftmp.563;
    code_slot_ins->flags = 0;
    code_slot_ins->type = 0;
    code_slot_ins->dreg = -1;
    code_slot_ins->sreg3 = -1;
    D.53458 = code_slot_ins->sreg3;
    code_slot_ins->sreg2 = D.53458;
    D.53459 = code_slot_ins->sreg2;
    code_slot_ins->sreg1 = D.53459;
    D.53381 = cfg->ip;
    code_slot_ins->cil_code = D.53381;
    D.53448 = BIT_FIELD_REF <*cfg, 8, 3392>;
    D.53449 = D.53448 & 64;
    if (D.53449 != 0) goto <D.53460>; else goto <D.53461>;
    <D.53460>:
    {
      struct MonoInst * group;
      struct MonoInst * got_loc;

      got_loc = mono_get_got_var (cfg);
      D.53376 = cfg->mempool;
      group = mono_mempool_alloc (D.53376, 48);
      group->data.op[1].const_val = 0;
      D.53462 = group->data.op[1].const_val;
      group->data.op[0].const_val = D.53462;
      group->prev = 0B;
      D.53463 = group->prev;
      group->next = D.53463;
      group->opcode = 737;
      group->flags = 0;
      group->type = 0;
      group->dreg = -1;
      group->sreg3 = -1;
      D.53464 = group->sreg3;
      group->sreg2 = D.53464;
      D.53465 = group->sreg2;
      group->sreg1 = D.53465;
      D.53381 = cfg->ip;
      group->cil_code = D.53381;
      group->data.op[0].src = method;
      group->data.op[1].src = 50B;
      D.53466 = got_loc->dreg;
      code_slot_ins->sreg1 = D.53466;
      code_slot_ins->data.op[1].p = group;
    }
    goto <D.53467>;
    <D.53461>:
    code_slot_ins->data.op[0].p = method;
    code_slot_ins->data.op[1].src = 50B;
    <D.53467>:
    code_slot_ins->type = 3;
    D.53468 = alloc_dreg (cfg, 3);
    D.53469 = (int) D.53468;
    code_slot_ins->dreg = D.53469;
    D.53384 = cfg->cbb;
    D.53385 = D.53384->last_ins;
    if (D.53385 != 0B) goto <D.53470>; else goto <D.53471>;
    <D.53470>:
    D.53384 = cfg->cbb;
    D.53385 = D.53384->last_ins;
    D.53385->next = code_slot_ins;
    D.53384 = cfg->cbb;
    D.53385 = D.53384->last_ins;
    code_slot_ins->prev = D.53385;
    D.53384 = cfg->cbb;
    D.53384->last_ins = code_slot_ins;
    goto <D.53472>;
    <D.53471>:
    D.53384 = cfg->cbb;
    D.53384 = cfg->cbb;
    D.53384->last_ins = code_slot_ins;
    D.53385 = D.53384->last_ins;
    D.53384->code = D.53385;
    <D.53472>:
    goto <D.53473>;
    <D.53451>:
    D.53376 = cfg->mempool;
    code_slot_ins = mono_mempool_alloc (D.53376, 48);
    code_slot_ins->data.op[1].const_val = 0;
    D.53452 = code_slot_ins->data.op[1].const_val;
    code_slot_ins->data.op[0].const_val = D.53452;
    code_slot_ins->prev = 0B;
    D.53453 = code_slot_ins->prev;
    code_slot_ins->next = D.53453;
    code_slot_ins->opcode = 362;
    code_slot_ins->flags = 0;
    code_slot_ins->type = 0;
    code_slot_ins->dreg = -1;
    code_slot_ins->sreg3 = -1;
    D.53458 = code_slot_ins->sreg3;
    code_slot_ins->sreg2 = D.53458;
    D.53459 = code_slot_ins->sreg2;
    code_slot_ins->sreg1 = D.53459;
    D.53381 = cfg->ip;
    code_slot_ins->cil_code = D.53381;
    code_slot_ins->data.op[0].p = code_slot;
    code_slot_ins->type = 3;
    D.53474 = alloc_dreg (cfg, 3);
    D.53475 = (int) D.53474;
    code_slot_ins->dreg = D.53475;
    D.53384 = cfg->cbb;
    D.53385 = D.53384->last_ins;
    if (D.53385 != 0B) goto <D.53476>; else goto <D.53477>;
    <D.53476>:
    D.53384 = cfg->cbb;
    D.53385 = D.53384->last_ins;
    D.53385->next = code_slot_ins;
    D.53384 = cfg->cbb;
    D.53385 = D.53384->last_ins;
    code_slot_ins->prev = D.53385;
    D.53384 = cfg->cbb;
    D.53384->last_ins = code_slot_ins;
    goto <D.53478>;
    <D.53477>:
    D.53384 = cfg->cbb;
    D.53384 = cfg->cbb;
    D.53384->last_ins = code_slot_ins;
    D.53385 = D.53384->last_ins;
    D.53384->code = D.53385;
    <D.53478>:
    <D.53473>:
    <D.53425>:
    {
      struct MonoInst * inst;

      D.53376 = cfg->mempool;
      inst = mono_mempool_alloc (D.53376, 48);
      inst->data.op[1].const_val = 0;
      D.53479 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.53479;
      inst->prev = 0B;
      D.53480 = inst->prev;
      inst->next = D.53480;
      inst->opcode = 374;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.53481 = inst->sreg3;
      inst->sreg2 = D.53481;
      D.53482 = inst->sreg2;
      inst->sreg1 = D.53482;
      D.53381 = cfg->ip;
      inst->cil_code = D.53381;
      D.53483 = code_slot_ins->dreg;
      inst->sreg1 = D.53483;
      D.53383 = obj->dreg;
      inst->dreg = D.53383;
      inst->data.op[0].const_val = 28;
      D.53384 = cfg->cbb;
      D.53385 = D.53384->last_ins;
      if (D.53385 != 0B) goto <D.53484>; else goto <D.53485>;
      <D.53484>:
      D.53384 = cfg->cbb;
      D.53385 = D.53384->last_ins;
      D.53385->next = inst;
      D.53384 = cfg->cbb;
      D.53385 = D.53384->last_ins;
      inst->prev = D.53385;
      D.53384 = cfg->cbb;
      D.53384->last_ins = inst;
      goto <D.53486>;
      <D.53485>:
      D.53384 = cfg->cbb;
      D.53384 = cfg->cbb;
      D.53384->last_ins = inst;
      D.53385 = D.53384->last_ins;
      D.53384->code = D.53385;
      <D.53486>:
    }
  }
  <D.53422>:
  <D.53418>:
  D.53448 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.53449 = D.53448 & 64;
  if (D.53449 != 0) goto <D.53487>; else goto <D.53488>;
  <D.53487>:
  D.53376 = cfg->mempool;
  tramp_ins = mono_mempool_alloc (D.53376, 48);
  tramp_ins->data.op[1].const_val = 0;
  D.53489 = tramp_ins->data.op[1].const_val;
  tramp_ins->data.op[0].const_val = D.53489;
  tramp_ins->prev = 0B;
  D.53490 = tramp_ins->prev;
  tramp_ins->next = D.53490;
  D.53448 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.53449 = D.53448 & 64;
  if (D.53449 != 0) goto <D.53492>; else goto <D.53493>;
  <D.53492>:
  iftmp.564 = 738;
  goto <D.53494>;
  <D.53493>:
  iftmp.564 = 362;
  <D.53494>:
  tramp_ins->opcode = iftmp.564;
  tramp_ins->flags = 0;
  tramp_ins->type = 0;
  tramp_ins->dreg = -1;
  tramp_ins->sreg3 = -1;
  D.53495 = tramp_ins->sreg3;
  tramp_ins->sreg2 = D.53495;
  D.53496 = tramp_ins->sreg2;
  tramp_ins->sreg1 = D.53496;
  D.53381 = cfg->ip;
  tramp_ins->cil_code = D.53381;
  D.53448 = BIT_FIELD_REF <*cfg, 8, 3392>;
  D.53449 = D.53448 & 64;
  if (D.53449 != 0) goto <D.53497>; else goto <D.53498>;
  <D.53497>:
  {
    struct MonoInst * group;
    struct MonoInst * got_loc;

    got_loc = mono_get_got_var (cfg);
    D.53376 = cfg->mempool;
    group = mono_mempool_alloc (D.53376, 48);
    group->data.op[1].const_val = 0;
    D.53499 = group->data.op[1].const_val;
    group->data.op[0].const_val = D.53499;
    group->prev = 0B;
    D.53500 = group->prev;
    group->next = D.53500;
    group->opcode = 737;
    group->flags = 0;
    group->type = 0;
    group->dreg = -1;
    group->sreg3 = -1;
    D.53501 = group->sreg3;
    group->sreg2 = D.53501;
    D.53502 = group->sreg2;
    group->sreg1 = D.53502;
    D.53381 = cfg->ip;
    group->cil_code = D.53381;
    group->data.op[0].src = klass;
    group->data.op[1].src = 30B;
    D.53503 = got_loc->dreg;
    tramp_ins->sreg1 = D.53503;
    tramp_ins->data.op[1].p = group;
  }
  goto <D.53504>;
  <D.53498>:
  tramp_ins->data.op[0].p = klass;
  tramp_ins->data.op[1].src = 30B;
  <D.53504>:
  tramp_ins->type = 3;
  D.53505 = alloc_dreg (cfg, 3);
  D.53506 = (int) D.53505;
  tramp_ins->dreg = D.53506;
  D.53384 = cfg->cbb;
  D.53385 = D.53384->last_ins;
  if (D.53385 != 0B) goto <D.53507>; else goto <D.53508>;
  <D.53507>:
  D.53384 = cfg->cbb;
  D.53385 = D.53384->last_ins;
  D.53385->next = tramp_ins;
  D.53384 = cfg->cbb;
  D.53385 = D.53384->last_ins;
  tramp_ins->prev = D.53385;
  D.53384 = cfg->cbb;
  D.53384->last_ins = tramp_ins;
  goto <D.53509>;
  <D.53508>:
  D.53384 = cfg->cbb;
  D.53384 = cfg->cbb;
  D.53384->last_ins = tramp_ins;
  D.53385 = D.53384->last_ins;
  D.53384->code = D.53385;
  <D.53509>:
  goto <D.53510>;
  <D.53488>:
  D.53511 = cfg->domain;
  trampoline = mono_create_delegate_trampoline (D.53511, klass);
  D.53376 = cfg->mempool;
  tramp_ins = mono_mempool_alloc (D.53376, 48);
  tramp_ins->data.op[1].const_val = 0;
  D.53489 = tramp_ins->data.op[1].const_val;
  tramp_ins->data.op[0].const_val = D.53489;
  tramp_ins->prev = 0B;
  D.53490 = tramp_ins->prev;
  tramp_ins->next = D.53490;
  tramp_ins->opcode = 362;
  tramp_ins->flags = 0;
  tramp_ins->type = 0;
  tramp_ins->dreg = -1;
  tramp_ins->sreg3 = -1;
  D.53495 = tramp_ins->sreg3;
  tramp_ins->sreg2 = D.53495;
  D.53496 = tramp_ins->sreg2;
  tramp_ins->sreg1 = D.53496;
  D.53381 = cfg->ip;
  tramp_ins->cil_code = D.53381;
  tramp_ins->data.op[0].p = trampoline;
  tramp_ins->type = 3;
  D.53512 = alloc_dreg (cfg, 3);
  D.53513 = (int) D.53512;
  tramp_ins->dreg = D.53513;
  D.53384 = cfg->cbb;
  D.53385 = D.53384->last_ins;
  if (D.53385 != 0B) goto <D.53514>; else goto <D.53515>;
  <D.53514>:
  D.53384 = cfg->cbb;
  D.53385 = D.53384->last_ins;
  D.53385->next = tramp_ins;
  D.53384 = cfg->cbb;
  D.53385 = D.53384->last_ins;
  tramp_ins->prev = D.53385;
  D.53384 = cfg->cbb;
  D.53384->last_ins = tramp_ins;
  goto <D.53516>;
  <D.53515>:
  D.53384 = cfg->cbb;
  D.53384 = cfg->cbb;
  D.53384->last_ins = tramp_ins;
  D.53385 = D.53384->last_ins;
  D.53384->code = D.53385;
  <D.53516>:
  <D.53510>:
  {
    struct MonoInst * inst;

    D.53376 = cfg->mempool;
    inst = mono_mempool_alloc (D.53376, 48);
    inst->data.op[1].const_val = 0;
    D.53517 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.53517;
    inst->prev = 0B;
    D.53518 = inst->prev;
    inst->next = D.53518;
    inst->opcode = 374;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.53519 = inst->sreg3;
    inst->sreg2 = D.53519;
    D.53520 = inst->sreg2;
    inst->sreg1 = D.53520;
    D.53381 = cfg->ip;
    inst->cil_code = D.53381;
    D.53521 = tramp_ins->dreg;
    inst->sreg1 = D.53521;
    D.53383 = obj->dreg;
    inst->dreg = D.53383;
    inst->data.op[0].const_val = 12;
    D.53384 = cfg->cbb;
    D.53385 = D.53384->last_ins;
    if (D.53385 != 0B) goto <D.53522>; else goto <D.53523>;
    <D.53522>:
    D.53384 = cfg->cbb;
    D.53385 = D.53384->last_ins;
    D.53385->next = inst;
    D.53384 = cfg->cbb;
    D.53385 = D.53384->last_ins;
    inst->prev = D.53385;
    D.53384 = cfg->cbb;
    D.53384->last_ins = inst;
    goto <D.53524>;
    <D.53523>:
    D.53384 = cfg->cbb;
    D.53384 = cfg->cbb;
    D.53384->last_ins = inst;
    D.53385 = D.53384->last_ins;
    D.53384->code = D.53385;
    <D.53524>:
  }
  D.53370 = obj;
  return D.53370;
}


mini_get_method (struct MonoCompile * cfg, struct MonoMethod * m, guint32 token, struct MonoClass * klass, struct MonoGenericContext * context)
{
  _Bool D.53526;
  _Bool D.53527;
  _Bool D.53528;
  struct MonoGenericSharingContext * D.53531;
  struct MonoClass * D.53534;
  struct MonoType * D.53535;
  int D.53536;
  struct MonoMethod * D.53539;
  struct MonoMethod * method;

  method = mini_get_method_allow_open (m, token, klass, context);
  D.53526 = method != 0B;
  D.53527 = cfg != 0B;
  D.53528 = D.53526 & D.53527;
  if (D.53528 != 0) goto <D.53529>; else goto <D.53530>;
  <D.53529>:
  D.53531 = cfg->generic_sharing_context;
  if (D.53531 == 0B) goto <D.53532>; else goto <D.53533>;
  <D.53532>:
  D.53534 = method->klass;
  D.53535 = &D.53534->byval_arg;
  D.53536 = mono_class_is_open_constructed_type (D.53535);
  if (D.53536 != 0) goto <D.53537>; else goto <D.53538>;
  <D.53537>:
  D.53539 = 0B;
  return D.53539;
  <D.53538>:
  <D.53533>:
  <D.53530>:
  D.53539 = method;
  return D.53539;
}


check_linkdemand (struct MonoCompile * cfg, struct MonoMethod * caller, struct MonoMethod * callee)
{
  struct MonoMethod * D.53541;
  unsigned char D.53544;
  gboolean D.53547;
  struct MonoDomain * D.53548;
  struct MonoMemPool * D.53553;
  void * D.53554;
  struct MonoInst * D.53555;
  int D.53556;
  struct MonoInst * D.53557;
  int D.53558;
  int D.53559;
  const unsigned char * D.53560;
  unsigned int D.53561;
  int D.53562;
  void * D.53563;
  struct MonoInst * D.53564;
  int D.53565;
  struct MonoInst * D.53566;
  guint16 iftmp.565;
  unsigned char D.53568;
  unsigned char D.53569;
  int D.53573;
  int D.53574;
  int D.53577;
  struct MonoInst * D.53578;
  int D.53579;
  int D.53580;
  int D.53581;
  unsigned int D.53583;
  int D.53584;
  struct MonoMethod * D.53585;
  unsigned int D.53587;
  guint32 result;

  D.53541 = cfg->method;
  if (D.53541 != caller) goto <D.53542>; else goto <D.53543>;
  <D.53542>:
  D.53544 = mono_method_has_declsec (callee);
  if (D.53544 != 0) goto <D.53545>; else goto <D.53546>;
  <D.53545>:
  D.53547 = 1;
  return D.53547;
  <D.53546>:
  <D.53543>:
  D.53548 = cfg->domain;
  result = mono_declsec_linkdemand (D.53548, caller, callee);
  if (result == 0) goto <D.53549>; else goto <D.53550>;
  <D.53549>:
  D.53547 = 0;
  return D.53547;
  <D.53550>:
  if (result == 4) goto <D.53551>; else goto <D.53552>;
  <D.53551>:
  {
    struct MonoSecurityManager * secman;
    struct MonoInst * args[2];

    try
      {
        secman = mono_security_manager_get_methods ();
        D.53553 = cfg->mempool;
        D.53554 = mono_mempool_alloc (D.53553, 48);
        args[0] = D.53554;
        D.53555 = args[0];
        D.53555 = args[0];
        D.53555->data.op[1].const_val = 0;
        D.53556 = D.53555->data.op[1].const_val;
        D.53555->data.op[0].const_val = D.53556;
        D.53555 = args[0];
        D.53555 = args[0];
        D.53555->prev = 0B;
        D.53557 = D.53555->prev;
        D.53555->next = D.53557;
        D.53555 = args[0];
        D.53555->opcode = 362;
        D.53555 = args[0];
        D.53555->flags = 0;
        D.53555 = args[0];
        D.53555->type = 0;
        D.53555 = args[0];
        D.53555->dreg = -1;
        D.53555 = args[0];
        D.53555 = args[0];
        D.53555 = args[0];
        D.53555->sreg3 = -1;
        D.53558 = D.53555->sreg3;
        D.53555->sreg2 = D.53558;
        D.53559 = D.53555->sreg2;
        D.53555->sreg1 = D.53559;
        D.53555 = args[0];
        D.53560 = cfg->ip;
        D.53555->cil_code = D.53560;
        D.53555 = args[0];
        D.53555->data.op[0].const_val = 4;
        D.53555 = args[0];
        D.53555->type = 1;
        D.53555 = args[0];
        D.53561 = alloc_dreg (cfg, 1);
        D.53562 = (int) D.53561;
        D.53555->dreg = D.53562;
        D.53553 = cfg->mempool;
        D.53563 = mono_mempool_alloc (D.53553, 48);
        args[1] = D.53563;
        D.53564 = args[1];
        D.53564 = args[1];
        D.53564->data.op[1].const_val = 0;
        D.53565 = D.53564->data.op[1].const_val;
        D.53564->data.op[0].const_val = D.53565;
        D.53564 = args[1];
        D.53564 = args[1];
        D.53564->prev = 0B;
        D.53566 = D.53564->prev;
        D.53564->next = D.53566;
        D.53564 = args[1];
        D.53568 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.53569 = D.53568 & 64;
        if (D.53569 != 0) goto <D.53570>; else goto <D.53571>;
        <D.53570>:
        iftmp.565 = 738;
        goto <D.53572>;
        <D.53571>:
        iftmp.565 = 362;
        <D.53572>:
        D.53564->opcode = iftmp.565;
        D.53564 = args[1];
        D.53564->flags = 0;
        D.53564 = args[1];
        D.53564->type = 0;
        D.53564 = args[1];
        D.53564->dreg = -1;
        D.53564 = args[1];
        D.53564 = args[1];
        D.53564 = args[1];
        D.53564->sreg3 = -1;
        D.53573 = D.53564->sreg3;
        D.53564->sreg2 = D.53573;
        D.53574 = D.53564->sreg2;
        D.53564->sreg1 = D.53574;
        D.53564 = args[1];
        D.53560 = cfg->ip;
        D.53564->cil_code = D.53560;
        D.53568 = BIT_FIELD_REF <*cfg, 8, 3392>;
        D.53569 = D.53568 & 64;
        if (D.53569 != 0) goto <D.53575>; else goto <D.53576>;
        <D.53575>:
        {
          struct MonoInst * group;
          struct MonoInst * got_loc;

          got_loc = mono_get_got_var (cfg);
          D.53553 = cfg->mempool;
          group = mono_mempool_alloc (D.53553, 48);
          group->data.op[1].const_val = 0;
          D.53577 = group->data.op[1].const_val;
          group->data.op[0].const_val = D.53577;
          group->prev = 0B;
          D.53578 = group->prev;
          group->next = D.53578;
          group->opcode = 737;
          group->flags = 0;
          group->type = 0;
          group->dreg = -1;
          group->sreg3 = -1;
          D.53579 = group->sreg3;
          group->sreg2 = D.53579;
          D.53580 = group->sreg2;
          group->sreg1 = D.53580;
          D.53560 = cfg->ip;
          group->cil_code = D.53560;
          group->data.op[0].src = caller;
          group->data.op[1].src = 6B;
          D.53564 = args[1];
          D.53581 = got_loc->dreg;
          D.53564->sreg1 = D.53581;
          D.53564 = args[1];
          D.53564->data.op[1].p = group;
        }
        goto <D.53582>;
        <D.53576>:
        D.53564 = args[1];
        D.53564->data.op[0].p = caller;
        D.53564 = args[1];
        D.53564->data.op[1].src = 6B;
        <D.53582>:
        D.53564 = args[1];
        D.53564->type = 3;
        D.53564 = args[1];
        D.53583 = alloc_dreg (cfg, 3);
        D.53584 = (int) D.53583;
        D.53564->dreg = D.53584;
        D.53585 = secman->linkdemandsecurityexception;
        mono_emit_method_call (cfg, D.53585, &args, 0B);
      }
    finally
      {
        args = {CLOBBER};
      }
  }
  goto <D.53586>;
  <D.53552>:
  D.53587 = cfg->exception_type;
  if (D.53587 == 0) goto <D.53588>; else goto <D.53589>;
  <D.53588>:
  mono_cfg_set_exception (cfg, 1);
  cfg->exception_data = result;
  D.53547 = 1;
  return D.53547;
  <D.53589>:
  <D.53586>:
  D.53547 = 0;
  return D.53547;
}


ensure_method_is_allowed_to_call_method (struct MonoCompile * cfg, struct MonoMethod * caller, struct MonoMethod * callee, struct MonoBasicBlock * bblock, unsigned char * ip)
{
  struct MonoMethod * D.53591;
  struct MonoException * ex;

  D.53591 = get_original_method (caller);
  ex = mono_security_core_clr_is_call_allowed (D.53591, callee);
  if (ex != 0B) goto <D.53592>; else goto <D.53593>;
  <D.53592>:
  emit_throw_exception (cfg, ex);
  <D.53593>:
}


emit_optimized_ldloca_ir (struct MonoCompile * cfg, unsigned char * ip, unsigned char * end, int size)
{
  unsigned char * D.53596;
  unsigned char D.53597;
  const guint16 * D.53599;
  short unsigned int D.53600;
  unsigned char * D.53601;
  unsigned char D.53604;
  const guint8 * D.53609;
  struct MonoBasicBlock * D.53610;
  int D.53611;
  const guint32 * D.53614;
  unsigned int D.53615;
  struct MonoGenericContext * D.53616;
  unsigned int token.566;
  struct MonoMethod * D.53618;
  unsigned char D.53622;
  struct MonoDebugOptions * D.53623;
  int D.53624;
  struct MonoType * D.53626;
  unsigned char * D.53627;
  int local;
  int token;
  struct MonoClass * klass;
  struct MonoType * type;
  void load_error = <<< error >>>;

  if (size == 1) goto <D.53594>; else goto <D.53595>;
  <D.53594>:
  D.53596 = ip + 1;
  D.53597 = *D.53596;
  local = (int) D.53597;
  ip = ip + 2;
  goto <D.53598>;
  <D.53595>:
  D.53599 = ip + 2;
  D.53600 = *D.53599;
  local = (int) D.53600;
  ip = ip + 4;
  <D.53598>:
  D.53601 = ip + 6;
  if (D.53601 < end) goto <D.53602>; else goto <D.53603>;
  <D.53602>:
  D.53604 = *ip;
  if (D.53604 == 254) goto <D.53605>; else goto <D.53606>;
  <D.53605>:
  D.53596 = ip + 1;
  D.53597 = *D.53596;
  if (D.53597 == 21) goto <D.53607>; else goto <D.53608>;
  <D.53607>:
  D.53609 = ip + 1;
  D.53610 = cfg->cbb;
  D.53611 = ip_in_bb (cfg, D.53610, D.53609);
  if (D.53611 != 0) goto <D.53612>; else goto <D.53613>;
  <D.53612>:
  D.53614 = ip + 2;
  D.53615 = *D.53614;
  token = (int) D.53615;
  D.53616 = cfg->generic_context;
  token.566 = (unsigned int) token;
  D.53618 = cfg->current_method;
  klass = mini_get_class (D.53618, token.566, D.53616);
  if (klass == 0B) goto <D.53619>; else goto <D.53621>;
  <D.53621>:
  D.53622 = klass->exception_type;
  if (D.53622 != 0) goto <D.53619>; else goto <D.53620>;
  <D.53619>:
  cfg->exception_ptr = klass;
  D.53623 = mini_get_debug_options ();
  D.53624 = D.53623->break_on_unverified;
  if (D.53624 != 0) goto <D.53625>; else goto load_error;
  <D.53625>:
  __asm__ __volatile__("int $03");
  <D.53620>:
  D.53626 = &klass->byval_arg;
  type = mini_replace_type (D.53626);
  emit_init_local (cfg, local, type);
  D.53627 = ip + 6;
  return D.53627;
  <D.53613>:
  <D.53608>:
  <D.53606>:
  <D.53603>:
  load_error:
  D.53627 = 0B;
  return D.53627;
}


target_type_is_incompatible (struct MonoCompile * cfg, struct MonoType * target, struct MonoInst * arg)
{
  unsigned char D.53629;
  unsigned char D.53630;
  unsigned char D.53633;
  int D.53636;
  struct MonoClass * D.53637;
  struct MonoClass * D.53638;
  _Bool D.53639;
  unsigned char D.53642;
  int D.53643;
  unsigned char D.53644;
  _Bool D.53645;
  _Bool D.53646;
  _Bool D.53647;
  unsigned char D.53650;
  _Bool D.53651;
  _Bool D.53652;
  _Bool D.53653;
  unsigned char D.53658;
  _Bool D.53659;
  _Bool D.53660;
  _Bool D.53661;
  int D.53680;
  struct MonoGenericSharingContext * D.53689;
  _Bool D.53690;
  long int D.53691;
  long int D.53692;
  int D.53695;
  struct MonoType * simple_type;
  struct MonoClass * klass;

  target = mini_replace_type (target);
  D.53629 = BIT_FIELD_REF <*target, 8, 56>;
  D.53630 = D.53629 & 64;
  if (D.53630 != 0) goto <D.53631>; else goto <D.53632>;
  <D.53631>:
  D.53633 = arg->type;
  if (D.53633 == 5) goto <D.53634>; else goto <D.53635>;
  <D.53634>:
  D.53637 = arg->klass;
  D.53638 = mono_class_from_mono_type (target);
  D.53639 = D.53637 != D.53638;
  D.53636 = (int) D.53639;
  return D.53636;
  <D.53635>:
  D.53633 = arg->type;
  if (D.53633 == 3) goto <D.53640>; else goto <D.53641>;
  <D.53640>:
  D.53636 = 0;
  return D.53636;
  <D.53641>:
  D.53636 = 1;
  return D.53636;
  <D.53632>:
  simple_type = mono_type_get_underlying_type (target);
  D.53642 = simple_type->type;
  D.53643 = (int) D.53642;
  switch (D.53643) <default: <D.25276>, case 1: <D.25249>, case 2: <D.25252>, case 3: <D.25255>, case 4: <D.25250>, case 5: <D.25251>, case 6: <D.25253>, case 7: <D.25254>, case 8: <D.25256>, case 9: <D.25257>, case 10: <D.25267>, case 11: <D.25268>, case 12: <D.25269>, case 13: <D.25270>, case 14: <D.25263>, case 15: <D.25258>, case 17: <D.25271>, case 18: <D.25262>, case 19: <D.25274>, case 20: <D.25266>, case 21: <D.25273>, case 22: <D.25272>, case 24: <D.25259>, case 25: <D.25260>, case 27: <D.25261>, case 28: <D.25264>, case 29: <D.25265>, case 30: <D.25275>>
  <D.25249>:
  D.53636 = 1;
  return D.53636;
  <D.25250>:
  <D.25251>:
  <D.25252>:
  <D.25253>:
  <D.25254>:
  <D.25255>:
  <D.25256>:
  <D.25257>:
  D.53644 = arg->type;
  D.53645 = D.53644 != 1;
  D.53646 = D.53644 != 3;
  D.53647 = D.53645 & D.53646;
  if (D.53647 != 0) goto <D.53648>; else goto <D.53649>;
  <D.53648>:
  D.53636 = 1;
  return D.53636;
  <D.53649>:
  D.53636 = 0;
  return D.53636;
  <D.25258>:
  D.53650 = arg->type;
  D.53651 = D.53650 != 1;
  D.53652 = D.53650 != 3;
  D.53653 = D.53651 & D.53652;
  if (D.53653 != 0) goto <D.53654>; else goto <D.53655>;
  <D.53654>:
  D.53633 = arg->type;
  if (D.53633 != 5) goto <D.53656>; else goto <D.53657>;
  <D.53656>:
  D.53636 = 1;
  return D.53636;
  <D.53657>:
  <D.53655>:
  D.53636 = 0;
  return D.53636;
  <D.25259>:
  <D.25260>:
  <D.25261>:
  D.53658 = arg->type;
  D.53659 = D.53658 != 1;
  D.53660 = D.53658 != 3;
  D.53661 = D.53659 & D.53660;
  if (D.53661 != 0) goto <D.53662>; else goto <D.53663>;
  <D.53662>:
  D.53633 = arg->type;
  if (D.53633 != 5) goto <D.53664>; else goto <D.53665>;
  <D.53664>:
  D.53636 = 1;
  return D.53636;
  <D.53665>:
  <D.53663>:
  D.53636 = 0;
  return D.53636;
  <D.25262>:
  <D.25263>:
  <D.25264>:
  <D.25265>:
  <D.25266>:
  D.53633 = arg->type;
  if (D.53633 != 6) goto <D.53666>; else goto <D.53667>;
  <D.53666>:
  D.53636 = 1;
  return D.53636;
  <D.53667>:
  D.53636 = 0;
  return D.53636;
  <D.25267>:
  <D.25268>:
  D.53633 = arg->type;
  if (D.53633 != 2) goto <D.53668>; else goto <D.53669>;
  <D.53668>:
  D.53636 = 1;
  return D.53636;
  <D.53669>:
  D.53636 = 0;
  return D.53636;
  <D.25269>:
  <D.25270>:
  D.53633 = arg->type;
  if (D.53633 != 4) goto <D.53670>; else goto <D.53671>;
  <D.53670>:
  D.53636 = 1;
  return D.53636;
  <D.53671>:
  D.53636 = 0;
  return D.53636;
  <D.25271>:
  D.53633 = arg->type;
  if (D.53633 != 7) goto <D.53672>; else goto <D.53673>;
  <D.53672>:
  D.53636 = 1;
  return D.53636;
  <D.53673>:
  klass = mono_class_from_mono_type (simple_type);
  D.53637 = arg->klass;
  if (D.53637 != klass) goto <D.53674>; else goto <D.53675>;
  <D.53674>:
  D.53636 = 1;
  return D.53636;
  <D.53675>:
  D.53636 = 0;
  return D.53636;
  <D.25272>:
  D.53633 = arg->type;
  if (D.53633 != 7) goto <D.53676>; else goto <D.53677>;
  <D.53676>:
  D.53636 = 1;
  return D.53636;
  <D.53677>:
  klass = mono_class_from_mono_type (simple_type);
  D.53637 = arg->klass;
  if (D.53637 != klass) goto <D.53678>; else goto <D.53679>;
  <D.53678>:
  D.53636 = 1;
  return D.53636;
  <D.53679>:
  D.53636 = 0;
  return D.53636;
  <D.25273>:
  D.53680 = mono_type_generic_inst_is_valuetype (simple_type);
  if (D.53680 != 0) goto <D.53681>; else goto <D.53682>;
  <D.53681>:
  D.53633 = arg->type;
  if (D.53633 != 7) goto <D.53683>; else goto <D.53684>;
  <D.53683>:
  D.53636 = 1;
  return D.53636;
  <D.53684>:
  klass = mono_class_from_mono_type (simple_type);
  D.53637 = arg->klass;
  if (D.53637 != klass) goto <D.53685>; else goto <D.53686>;
  <D.53685>:
  D.53636 = 1;
  return D.53636;
  <D.53686>:
  D.53636 = 0;
  return D.53636;
  <D.53682>:
  D.53633 = arg->type;
  if (D.53633 != 6) goto <D.53687>; else goto <D.53688>;
  <D.53687>:
  D.53636 = 1;
  return D.53636;
  <D.53688>:
  D.53636 = 0;
  return D.53636;
  <D.25274>:
  <D.25275>:
  D.53689 = cfg->generic_sharing_context;
  D.53690 = D.53689 == 0B;
  D.53691 = (long int) D.53690;
  D.53692 = __builtin_expect (D.53691, 0);
  if (D.53692 != 0) goto <D.53693>; else goto <D.53694>;
  <D.53693>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 2160, "cfg->generic_sharing_context");
  <D.53694>:
  D.53695 = mini_type_var_is_vt (cfg, simple_type);
  if (D.53695 != 0) goto <D.53696>; else goto <D.53697>;
  <D.53696>:
  D.53633 = arg->type;
  if (D.53633 != 7) goto <D.53698>; else goto <D.53699>;
  <D.53698>:
  D.53636 = 1;
  return D.53636;
  <D.53699>:
  goto <D.53700>;
  <D.53697>:
  D.53633 = arg->type;
  if (D.53633 != 6) goto <D.53701>; else goto <D.53702>;
  <D.53701>:
  D.53636 = 1;
  return D.53636;
  <D.53702>:
  <D.53700>:
  D.53636 = 0;
  return D.53636;
  <D.25276>:
  D.53642 = simple_type->type;
  D.53643 = (int) D.53642;
  monoeg_g_log (0B, 4, "unknown type 0x%02x in target_type_is_incompatible", D.53643);
  <D.25277>:
  goto <D.25277>;
  D.53636 = 1;
  return D.53636;
}


emit_stloc_ir (struct MonoCompile * cfg, struct MonoInst * * sp, struct MonoMethodHeader * header, int n)
{
  struct MonoType * D.53704;
  struct MonoBasicBlock * D.53708;
  struct MonoInst * D.53709;
  struct MonoInst * D.53710;
  short unsigned int D.53712;
  short unsigned int D.53713;
  struct MonoInst * * D.53715;
  unsigned int n.567;
  unsigned int D.53717;
  struct MonoInst * * D.53718;
  struct MonoInst * D.53719;
  int D.53720;
  struct MonoMemPool * D.53721;
  int D.53722;
  struct MonoInst * D.53723;
  int D.53724;
  int D.53725;
  const unsigned char * D.53726;
  struct MonoType * D.53727;
  unsigned int D.53728;
  short unsigned int D.53729;
  struct MonoClass * D.53730;
  int D.53731;
  short unsigned int D.53732;
  struct MonoClass * D.53735;
  struct MonoInst * ins;
  guint32 opcode;

  D.53704 = header->locals[n];
  opcode = mono_type_to_regmove (cfg, D.53704);
  if (opcode == 428) goto <D.53707>; else goto <D.53705>;
  <D.53707>:
  D.53708 = cfg->cbb;
  D.53709 = D.53708->last_ins;
  D.53710 = *sp;
  if (D.53709 == D.53710) goto <D.53711>; else goto <D.53705>;
  <D.53711>:
  D.53710 = *sp;
  D.53712 = D.53710->opcode;
  D.53713 = D.53712 + 65174;
  if (D.53713 <= 1) goto <D.53714>; else goto <D.53705>;
  <D.53714>:
  D.53710 = *sp;
  D.53715 = cfg->locals;
  n.567 = (unsigned int) n;
  D.53717 = n.567 * 4;
  D.53718 = D.53715 + D.53717;
  D.53719 = *D.53718;
  D.53720 = D.53719->dreg;
  D.53710->dreg = D.53720;
  goto <D.53706>;
  <D.53705>:
  D.53721 = cfg->mempool;
  ins = mono_mempool_alloc (D.53721, 48);
  ins->data.op[1].const_val = 0;
  D.53722 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.53722;
  ins->prev = 0B;
  D.53723 = ins->prev;
  ins->next = D.53723;
  ins->opcode = 428;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.53724 = ins->sreg3;
  ins->sreg2 = D.53724;
  D.53725 = ins->sreg2;
  ins->sreg1 = D.53725;
  D.53726 = cfg->ip;
  ins->cil_code = D.53726;
  D.53715 = cfg->locals;
  n.567 = (unsigned int) n;
  D.53717 = n.567 * 4;
  D.53718 = D.53715 + D.53717;
  D.53719 = *D.53718;
  D.53727 = D.53719->data.op[1].vtype;
  D.53728 = mono_type_to_regmove (cfg, D.53727);
  D.53729 = (short unsigned int) D.53728;
  ins->opcode = D.53729;
  D.53715 = cfg->locals;
  n.567 = (unsigned int) n;
  D.53717 = n.567 * 4;
  D.53718 = D.53715 + D.53717;
  D.53719 = *D.53718;
  D.53730 = D.53719->klass;
  ins->klass = D.53730;
  D.53710 = *sp;
  D.53731 = D.53710->dreg;
  ins->sreg1 = D.53731;
  D.53715 = cfg->locals;
  n.567 = (unsigned int) n;
  D.53717 = n.567 * 4;
  D.53718 = D.53715 + D.53717;
  D.53719 = *D.53718;
  D.53720 = D.53719->dreg;
  ins->dreg = D.53720;
  D.53732 = ins->opcode;
  if (D.53732 == 431) goto <D.53733>; else goto <D.53734>;
  <D.53733>:
  D.53715 = cfg->locals;
  n.567 = (unsigned int) n;
  D.53717 = n.567 * 4;
  D.53718 = D.53715 + D.53717;
  D.53719 = *D.53718;
  D.53727 = D.53719->data.op[1].vtype;
  D.53735 = mono_class_from_mono_type (D.53727);
  ins->klass = D.53735;
  <D.53734>:
  D.53708 = cfg->cbb;
  D.53709 = D.53708->last_ins;
  if (D.53709 != 0B) goto <D.53736>; else goto <D.53737>;
  <D.53736>:
  D.53708 = cfg->cbb;
  D.53709 = D.53708->last_ins;
  D.53709->next = ins;
  D.53708 = cfg->cbb;
  D.53709 = D.53708->last_ins;
  ins->prev = D.53709;
  D.53708 = cfg->cbb;
  D.53708->last_ins = ins;
  goto <D.53738>;
  <D.53737>:
  D.53708 = cfg->cbb;
  D.53708 = cfg->cbb;
  D.53708->last_ins = ins;
  D.53709 = D.53708->last_ins;
  D.53708->code = D.53709;
  <D.53738>:
  <D.53706>:
}


generic_class_is_reference_type (struct MonoCompile * cfg, struct MonoClass * klass)
{
  gboolean D.53739;
  struct MonoType * D.53740;

  D.53740 = &klass->byval_arg;
  D.53739 = mini_type_is_reference (cfg, D.53740);
  return D.53739;
}


mini_get_class (struct MonoMethod * method, guint32 token, struct MonoGenericContext * context)
{
  unsigned char D.53742;
  unsigned char D.53743;
  struct MonoClass * D.53749;
  struct MonoImage * D.53750;
  struct MonoClass * D.53753;
  struct MonoClass * klass;

  D.53742 = BIT_FIELD_REF <*method, 8, 160>;
  D.53743 = D.53742 & 124;
  if (D.53743 != 0) goto <D.53744>; else goto <D.53745>;
  <D.53744>:
  klass = mono_method_get_wrapper_data (method, token);
  if (context != 0B) goto <D.53746>; else goto <D.53747>;
  <D.53746>:
  klass = mono_class_inflate_generic_class (klass, context);
  <D.53747>:
  goto <D.53748>;
  <D.53745>:
  D.53749 = method->klass;
  D.53750 = D.53749->image;
  klass = mono_class_get_full (D.53750, token, context);
  <D.53748>:
  if (klass != 0B) goto <D.53751>; else goto <D.53752>;
  <D.53751>:
  mono_class_init (klass);
  <D.53752>:
  D.53753 = klass;
  return D.53753;
}


handle_gsharedvt_ldaddr (struct MonoCompile * cfg)
{
  struct MonoMemPool * D.53755;
  int D.53756;
  struct MonoInst * D.53757;
  int D.53758;
  int D.53759;
  const unsigned char * D.53760;
  struct MonoInst * D.53761;
  int D.53762;
  struct MonoBasicBlock * D.53763;
  struct MonoInst * D.53764;
  struct MonoInst * D.53768;
  int D.53769;
  struct MonoInst * use;

  D.53755 = cfg->mempool;
  use = mono_mempool_alloc (D.53755, 48);
  use->data.op[1].const_val = 0;
  D.53756 = use->data.op[1].const_val;
  use->data.op[0].const_val = D.53756;
  use->prev = 0B;
  D.53757 = use->prev;
  use->next = D.53757;
  use->opcode = 800;
  use->flags = 0;
  use->type = 0;
  use->dreg = -1;
  use->sreg3 = -1;
  D.53758 = use->sreg3;
  use->sreg2 = D.53758;
  D.53759 = use->sreg2;
  use->sreg1 = D.53759;
  D.53760 = cfg->ip;
  use->cil_code = D.53760;
  D.53761 = cfg->gsharedvt_info_var;
  D.53762 = D.53761->dreg;
  use->sreg1 = D.53762;
  D.53763 = cfg->cbb;
  D.53764 = D.53763->last_ins;
  if (D.53764 != 0B) goto <D.53765>; else goto <D.53766>;
  <D.53765>:
  D.53763 = cfg->cbb;
  D.53764 = D.53763->last_ins;
  D.53764->next = use;
  D.53763 = cfg->cbb;
  D.53764 = D.53763->last_ins;
  use->prev = D.53764;
  D.53763 = cfg->cbb;
  D.53763->last_ins = use;
  goto <D.53767>;
  <D.53766>:
  D.53763 = cfg->cbb;
  D.53763 = cfg->cbb;
  D.53763->last_ins = use;
  D.53764 = D.53763->last_ins;
  D.53763->code = D.53764;
  <D.53767>:
  D.53755 = cfg->mempool;
  use = mono_mempool_alloc (D.53755, 48);
  use->data.op[1].const_val = 0;
  D.53756 = use->data.op[1].const_val;
  use->data.op[0].const_val = D.53756;
  use->prev = 0B;
  D.53757 = use->prev;
  use->next = D.53757;
  use->opcode = 800;
  use->flags = 0;
  use->type = 0;
  use->dreg = -1;
  use->sreg3 = -1;
  D.53758 = use->sreg3;
  use->sreg2 = D.53758;
  D.53759 = use->sreg2;
  use->sreg1 = D.53759;
  D.53760 = cfg->ip;
  use->cil_code = D.53760;
  D.53768 = cfg->gsharedvt_locals_var;
  D.53769 = D.53768->dreg;
  use->sreg1 = D.53769;
  D.53763 = cfg->cbb;
  D.53764 = D.53763->last_ins;
  if (D.53764 != 0B) goto <D.53770>; else goto <D.53771>;
  <D.53770>:
  D.53763 = cfg->cbb;
  D.53764 = D.53763->last_ins;
  D.53764->next = use;
  D.53763 = cfg->cbb;
  D.53764 = D.53763->last_ins;
  use->prev = D.53764;
  D.53763 = cfg->cbb;
  D.53763->last_ins = use;
  goto <D.53772>;
  <D.53771>:
  D.53763 = cfg->cbb;
  D.53763 = cfg->cbb;
  D.53763->last_ins = use;
  D.53764 = D.53763->last_ins;
  D.53763->code = D.53764;
  <D.53772>:
}


mono_emit_load_got_addr (struct MonoCompile * cfg)
{
  struct MonoInst * D.53775;
  unsigned char D.53777;
  unsigned char D.53778;
  struct MonoMemPool * D.53779;
  int D.53780;
  struct MonoInst * D.53781;
  int D.53782;
  int D.53783;
  const unsigned char * D.53784;
  struct MonoMethodHeader * D.53785;
  const unsigned char * D.53786;
  int D.53787;
  struct MonoBasicBlock * D.53788;
  struct MonoInst * D.53789;
  struct MonoInst * D.53793;
  int D.53797;
  struct MonoInst * D.53798;
  int D.53799;
  int D.53800;
  struct MonoBasicBlock * D.53801;
  struct MonoInst * D.53802;
  struct MonoInst * getaddr;
  struct MonoInst * dummy_use;

  D.53775 = cfg->got_var;
  if (D.53775 == 0B) goto <D.53773>; else goto <D.53776>;
  <D.53776>:
  D.53777 = BIT_FIELD_REF <*cfg, 8, 3400>;
  D.53778 = D.53777 & 2;
  if (D.53778 != 0) goto <D.53773>; else goto <D.53774>;
  <D.53773>:
  return;
  <D.53774>:
  D.53779 = cfg->mempool;
  getaddr = mono_mempool_alloc (D.53779, 48);
  getaddr->data.op[1].const_val = 0;
  D.53780 = getaddr->data.op[1].const_val;
  getaddr->data.op[0].const_val = D.53780;
  getaddr->prev = 0B;
  D.53781 = getaddr->prev;
  getaddr->next = D.53781;
  getaddr->opcode = 799;
  getaddr->flags = 0;
  getaddr->type = 0;
  getaddr->dreg = -1;
  getaddr->sreg3 = -1;
  D.53782 = getaddr->sreg3;
  getaddr->sreg2 = D.53782;
  D.53783 = getaddr->sreg2;
  getaddr->sreg1 = D.53783;
  D.53784 = cfg->ip;
  getaddr->cil_code = D.53784;
  D.53785 = cfg->header;
  D.53786 = D.53785->code;
  getaddr->cil_code = D.53786;
  D.53775 = cfg->got_var;
  D.53787 = D.53775->dreg;
  getaddr->dreg = D.53787;
  D.53788 = cfg->bb_entry;
  D.53789 = D.53788->code;
  if (D.53789 != 0B) goto <D.53790>; else goto <D.53791>;
  <D.53790>:
  D.53788 = cfg->bb_entry;
  D.53789 = D.53788->code;
  getaddr->next = D.53789;
  D.53788 = cfg->bb_entry;
  D.53788->code = getaddr;
  goto <D.53792>;
  <D.53791>:
  D.53788 = cfg->bb_entry;
  D.53793 = D.53788->last_ins;
  if (D.53793 != 0B) goto <D.53794>; else goto <D.53795>;
  <D.53794>:
  D.53788 = cfg->bb_entry;
  D.53793 = D.53788->last_ins;
  D.53793->next = getaddr;
  D.53788 = cfg->bb_entry;
  D.53793 = D.53788->last_ins;
  getaddr->prev = D.53793;
  D.53788 = cfg->bb_entry;
  D.53788->last_ins = getaddr;
  goto <D.53796>;
  <D.53795>:
  D.53788 = cfg->bb_entry;
  D.53788 = cfg->bb_entry;
  D.53788->last_ins = getaddr;
  D.53793 = D.53788->last_ins;
  D.53788->code = D.53793;
  <D.53796>:
  <D.53792>:
  cfg->got_var_allocated = 1;
  D.53779 = cfg->mempool;
  dummy_use = mono_mempool_alloc (D.53779, 48);
  dummy_use->data.op[1].const_val = 0;
  D.53797 = dummy_use->data.op[1].const_val;
  dummy_use->data.op[0].const_val = D.53797;
  dummy_use->prev = 0B;
  D.53798 = dummy_use->prev;
  dummy_use->next = D.53798;
  dummy_use->opcode = 800;
  dummy_use->flags = 0;
  dummy_use->type = 0;
  dummy_use->dreg = -1;
  dummy_use->sreg3 = -1;
  D.53799 = dummy_use->sreg3;
  dummy_use->sreg2 = D.53799;
  D.53800 = dummy_use->sreg2;
  dummy_use->sreg1 = D.53800;
  D.53784 = cfg->ip;
  dummy_use->cil_code = D.53784;
  D.53775 = cfg->got_var;
  D.53787 = D.53775->dreg;
  dummy_use->sreg1 = D.53787;
  D.53801 = cfg->bb_exit;
  D.53802 = D.53801->last_ins;
  if (D.53802 != 0B) goto <D.53803>; else goto <D.53804>;
  <D.53803>:
  D.53801 = cfg->bb_exit;
  D.53802 = D.53801->last_ins;
  D.53802->next = dummy_use;
  D.53801 = cfg->bb_exit;
  D.53802 = D.53801->last_ins;
  dummy_use->prev = D.53802;
  D.53801 = cfg->bb_exit;
  D.53801->last_ins = dummy_use;
  goto <D.53805>;
  <D.53804>:
  D.53801 = cfg->bb_exit;
  D.53801 = cfg->bb_exit;
  D.53801->last_ins = dummy_use;
  D.53802 = D.53801->last_ins;
  D.53801->code = D.53802;
  <D.53805>:
}


emit_init_local (struct MonoCompile * cfg, int local, struct MonoType * type)
{
  struct MonoInst * * D.53807;
  unsigned int local.568;
  unsigned int D.53809;
  struct MonoInst * * D.53810;
  unsigned char D.53813;
  <unnamed type> D.53814;
  unsigned int D.53815;
  struct MonoMemPool * D.53816;
  int D.53817;
  struct MonoInst * D.53818;
  int D.53819;
  int D.53820;
  const unsigned char * D.53821;
  struct MonoInst * D.53822;
  struct MonoType * D.53823;
  unsigned int D.53824;
  short unsigned int D.53825;
  struct MonoClass * D.53826;
  struct MonoBasicBlock * D.53827;
  struct MonoInst * D.53828;
  int D.53829;
  int D.53830;
  short unsigned int D.53831;
  struct MonoClass * D.53834;
  int D.53839;
  struct MonoInst * var;

  D.53807 = cfg->locals;
  local.568 = (unsigned int) local;
  D.53809 = local.568 * 4;
  D.53810 = D.53807 + D.53809;
  var = *D.53810;
  if (0 != 0) goto <D.53811>; else goto <D.53812>;
  <D.53811>:
  {
    struct MonoInst * store;
    int reg;

    D.53813 = var->type;
    D.53814 = (<unnamed type>) D.53813;
    D.53815 = alloc_dreg (cfg, D.53814);
    reg = (int) D.53815;
    emit_init_rvar (cfg, reg, type);
    D.53816 = cfg->mempool;
    store = mono_mempool_alloc (D.53816, 48);
    store->data.op[1].const_val = 0;
    D.53817 = store->data.op[1].const_val;
    store->data.op[0].const_val = D.53817;
    store->prev = 0B;
    D.53818 = store->prev;
    store->next = D.53818;
    store->opcode = 428;
    store->flags = 0;
    store->type = 0;
    store->dreg = -1;
    store->sreg3 = -1;
    D.53819 = store->sreg3;
    store->sreg2 = D.53819;
    D.53820 = store->sreg2;
    store->sreg1 = D.53820;
    D.53821 = cfg->ip;
    store->cil_code = D.53821;
    D.53807 = cfg->locals;
    local.568 = (unsigned int) local;
    D.53809 = local.568 * 4;
    D.53810 = D.53807 + D.53809;
    D.53822 = *D.53810;
    D.53823 = D.53822->data.op[1].vtype;
    D.53824 = mono_type_to_regmove (cfg, D.53823);
    D.53825 = (short unsigned int) D.53824;
    store->opcode = D.53825;
    D.53807 = cfg->locals;
    local.568 = (unsigned int) local;
    D.53809 = local.568 * 4;
    D.53810 = D.53807 + D.53809;
    D.53822 = *D.53810;
    D.53826 = D.53822->klass;
    store->klass = D.53826;
    D.53827 = cfg->cbb;
    D.53828 = D.53827->last_ins;
    D.53829 = D.53828->dreg;
    store->sreg1 = D.53829;
    D.53807 = cfg->locals;
    local.568 = (unsigned int) local;
    D.53809 = local.568 * 4;
    D.53810 = D.53807 + D.53809;
    D.53822 = *D.53810;
    D.53830 = D.53822->dreg;
    store->dreg = D.53830;
    D.53831 = store->opcode;
    if (D.53831 == 431) goto <D.53832>; else goto <D.53833>;
    <D.53832>:
    D.53807 = cfg->locals;
    local.568 = (unsigned int) local;
    D.53809 = local.568 * 4;
    D.53810 = D.53807 + D.53809;
    D.53822 = *D.53810;
    D.53823 = D.53822->data.op[1].vtype;
    D.53834 = mono_class_from_mono_type (D.53823);
    store->klass = D.53834;
    <D.53833>:
    D.53827 = cfg->cbb;
    D.53828 = D.53827->last_ins;
    if (D.53828 != 0B) goto <D.53835>; else goto <D.53836>;
    <D.53835>:
    D.53827 = cfg->cbb;
    D.53828 = D.53827->last_ins;
    D.53828->next = store;
    D.53827 = cfg->cbb;
    D.53828 = D.53827->last_ins;
    store->prev = D.53828;
    D.53827 = cfg->cbb;
    D.53827->last_ins = store;
    goto <D.53837>;
    <D.53836>:
    D.53827 = cfg->cbb;
    D.53827 = cfg->cbb;
    D.53827->last_ins = store;
    D.53828 = D.53827->last_ins;
    D.53827->code = D.53828;
    <D.53837>:
  }
  goto <D.53838>;
  <D.53812>:
  D.53839 = var->dreg;
  emit_init_rvar (cfg, D.53839, type);
  <D.53838>:
}


emit_push_lmf (struct MonoCompile * cfg)
{
  unsigned char D.53840;
  unsigned char D.53841;
  unsigned char D.53846;
  int D.53848;
  _Bool D.53850;
  long int D.53851;
  long int D.53852;
  struct MonoBasicBlock * D.53855;
  struct MonoInst * D.53856;
  struct MonoMemPool * D.53860;
  int D.53861;
  struct MonoInst * D.53862;
  int D.53863;
  int D.53864;
  const unsigned char * D.53865;
  struct MonoInst * D.53866;
  unsigned char D.53867;
  unsigned char D.53868;
  struct MonoClass * D.53869;
  unsigned int D.53870;
  int D.53871;
  int D.53872;
  _Bool D.53873;
  long int D.53874;
  long int D.53875;
  struct MonoType * D.53878;
  int D.53879;
  _Bool iftmp.569;
  int D.53883;
  unsigned char D.53886;
  _Bool D.53887;
  _Bool D.53888;
  _Bool D.53889;
  int D.53890;
  unsigned char D.53892;
  struct MonoInst * iftmp.570;
  int D.53896;
  int D.53897;
  unsigned int D.53898;
  unsigned int D.53899;
  struct MonoInst * * D.53902;
  sizetype D.53903;
  sizetype D.53904;
  sizetype D.53905;
  struct MonoInst * * D.53906;
  struct MonoInst * iftmp.571;
  int D.53909;
  unsigned int D.53910;
  sizetype D.53913;
  sizetype D.53914;
  struct MonoInst * * D.53915;
  _Bool D.53917;
  long int D.53918;
  long int D.53919;
  _Bool D.53922;
  long int D.53923;
  long int D.53924;
  unsigned char D.53927;
  unsigned char D.53928;
  unsigned char D.53929;
  unsigned char D.53930;
  int D.53934;
  struct MonoInst * D.53938;
  struct MonoClass * D.53941;
  struct MonoType * D.53942;
  struct MonoInst * D.53943;
  int D.53950;
  unsigned int D.53951;
  int D.53952;
  int D.53955;
  _Bool iftmp.572;
  int D.53959;
  unsigned char D.53962;
  _Bool D.53963;
  _Bool D.53964;
  _Bool D.53965;
  int D.53966;
  struct MonoInst * iftmp.573;
  struct MonoInst * iftmp.574;
  _Bool D.53978;
  long int D.53979;
  long int D.53980;
  _Bool D.53983;
  long int D.53984;
  long int D.53985;
  unsigned char D.53988;
  unsigned char D.53989;
  unsigned char D.53990;
  unsigned char D.53991;
  unsigned int D.53995;
  int lmf_reg;
  int prev_lmf_reg;
  struct MonoInst * ins;
  struct MonoInst * lmf_ins;

  D.53840 = BIT_FIELD_REF <*cfg, 8, 3416>;
  D.53841 = D.53840 & 4;
  if (D.53841 == 0) goto <D.53842>; else goto <D.53843>;
  <D.53842>:
  return;
  <D.53843>:
  D.53840 = BIT_FIELD_REF <*cfg, 8, 3416>;
  D.53846 = D.53840 & 8;
  if (D.53846 != 0) goto <D.53847>; else goto <D.53844>;
  <D.53847>:
  D.53848 = mini_tls_get_supported (cfg, 3);
  if (D.53848 != 0) goto <D.53849>; else goto <D.53844>;
  <D.53849>:
  lmf_ins = mono_get_lmf_intrinsic (cfg);
  D.53850 = lmf_ins == 0B;
  D.53851 = (long int) D.53850;
  D.53852 = __builtin_expect (D.53851, 0);
  if (D.53852 != 0) goto <D.53853>; else goto <D.53854>;
  <D.53853>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1922, "lmf_ins");
  <D.53854>:
  D.53855 = cfg->cbb;
  D.53856 = D.53855->last_ins;
  if (D.53856 != 0B) goto <D.53857>; else goto <D.53858>;
  <D.53857>:
  D.53855 = cfg->cbb;
  D.53856 = D.53855->last_ins;
  D.53856->next = lmf_ins;
  D.53855 = cfg->cbb;
  D.53856 = D.53855->last_ins;
  lmf_ins->prev = D.53856;
  D.53855 = cfg->cbb;
  D.53855->last_ins = lmf_ins;
  goto <D.53859>;
  <D.53858>:
  D.53855 = cfg->cbb;
  D.53855 = cfg->cbb;
  D.53855->last_ins = lmf_ins;
  D.53856 = D.53855->last_ins;
  D.53855->code = D.53856;
  <D.53859>:
  D.53860 = cfg->mempool;
  ins = mono_mempool_alloc (D.53860, 48);
  ins->data.op[1].const_val = 0;
  D.53861 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.53861;
  ins->prev = 0B;
  D.53862 = ins->prev;
  ins->next = D.53862;
  ins->opcode = 314;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.53863 = ins->sreg3;
  ins->sreg2 = D.53863;
  D.53864 = ins->sreg2;
  ins->sreg1 = D.53864;
  D.53865 = cfg->ip;
  ins->cil_code = D.53865;
  D.53866 = cfg->lmf_var;
  ins->data.op[0].p = D.53866;
  D.53866 = cfg->lmf_var;
  D.53866 = cfg->lmf_var;
  D.53867 = D.53866->flags;
  D.53868 = D.53867 | 16;
  D.53866->flags = D.53868;
  ins->type = 5;
  D.53866 = cfg->lmf_var;
  D.53869 = D.53866->klass;
  ins->klass = D.53869;
  D.53870 = alloc_dreg (cfg, 5);
  D.53871 = (int) D.53870;
  ins->dreg = D.53871;
  cfg->has_indirection = 1;
  D.53872 = cfg->gsharedvt;
  D.53873 = D.53872 != 0;
  D.53874 = (long int) D.53873;
  D.53875 = __builtin_expect (D.53874, 0);
  if (D.53875 != 0) goto <D.53876>; else goto <D.53877>;
  <D.53876>:
  D.53866 = cfg->lmf_var;
  D.53878 = D.53866->data.op[1].vtype;
  D.53879 = mini_is_gsharedvt_variable_type (cfg, D.53878);
  if (D.53879 != 0) goto <D.53880>; else goto <D.53881>;
  <D.53880>:
  handle_gsharedvt_ldaddr (cfg);
  <D.53881>:
  <D.53877>:
  D.53883 = mono_arch_is_soft_float ();
  if (D.53883 != 0) goto <D.53884>; else goto <D.53885>;
  <D.53884>:
  D.53866 = cfg->lmf_var;
  D.53886 = D.53866->type;
  D.53887 = D.53886 == 2;
  D.53888 = D.53886 == 4;
  D.53889 = D.53887 | D.53888;
  D.53890 = (int) D.53889;
  iftmp.569 = (_Bool) D.53890;
  goto <D.53891>;
  <D.53885>:
  D.53866 = cfg->lmf_var;
  D.53892 = D.53866->type;
  iftmp.569 = D.53892 == 2;
  <D.53891>:
  if (iftmp.569 != 0) goto <D.53893>; else goto <D.53894>;
  <D.53893>:
  {
    struct MonoInst * var1;
    struct MonoInst * var2;

    D.53866 = cfg->lmf_var;
    D.53896 = D.53866->dreg;
    D.53897 = D.53896 + 1;
    D.53898 = (unsigned int) D.53897;
    D.53899 = cfg->vreg_to_inst_len;
    if (D.53898 < D.53899) goto <D.53900>; else goto <D.53901>;
    <D.53900>:
    D.53902 = cfg->vreg_to_inst;
    D.53866 = cfg->lmf_var;
    D.53896 = D.53866->dreg;
    D.53903 = (sizetype) D.53896;
    D.53904 = D.53903 + 1;
    D.53905 = D.53904 * 4;
    D.53906 = D.53902 + D.53905;
    iftmp.570 = *D.53906;
    goto <D.53907>;
    <D.53901>:
    iftmp.570 = 0B;
    <D.53907>:
    var1 = iftmp.570;
    D.53866 = cfg->lmf_var;
    D.53896 = D.53866->dreg;
    D.53909 = D.53896 + 2;
    D.53910 = (unsigned int) D.53909;
    D.53899 = cfg->vreg_to_inst_len;
    if (D.53910 < D.53899) goto <D.53911>; else goto <D.53912>;
    <D.53911>:
    D.53902 = cfg->vreg_to_inst;
    D.53866 = cfg->lmf_var;
    D.53896 = D.53866->dreg;
    D.53903 = (sizetype) D.53896;
    D.53913 = D.53903 + 2;
    D.53914 = D.53913 * 4;
    D.53915 = D.53902 + D.53914;
    iftmp.571 = *D.53915;
    goto <D.53916>;
    <D.53912>:
    iftmp.571 = 0B;
    <D.53916>:
    var2 = iftmp.571;
    D.53917 = var1 == 0B;
    D.53918 = (long int) D.53917;
    D.53919 = __builtin_expect (D.53918, 0);
    if (D.53919 != 0) goto <D.53920>; else goto <D.53921>;
    <D.53920>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1924, "var1");
    <D.53921>:
    D.53922 = var2 == 0B;
    D.53923 = (long int) D.53922;
    D.53924 = __builtin_expect (D.53923, 0);
    if (D.53924 != 0) goto <D.53925>; else goto <D.53926>;
    <D.53925>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1924, "var2");
    <D.53926>:
    D.53927 = var1->flags;
    D.53928 = D.53927 | 16;
    var1->flags = D.53928;
    D.53929 = var2->flags;
    D.53930 = D.53929 | 16;
    var2->flags = D.53930;
  }
  <D.53894>:
  D.53855 = cfg->cbb;
  D.53856 = D.53855->last_ins;
  if (D.53856 != 0B) goto <D.53931>; else goto <D.53932>;
  <D.53931>:
  D.53855 = cfg->cbb;
  D.53856 = D.53855->last_ins;
  D.53856->next = ins;
  D.53855 = cfg->cbb;
  D.53856 = D.53855->last_ins;
  ins->prev = D.53856;
  D.53855 = cfg->cbb;
  D.53855->last_ins = ins;
  goto <D.53933>;
  <D.53932>:
  D.53855 = cfg->cbb;
  D.53855 = cfg->cbb;
  D.53855->last_ins = ins;
  D.53856 = D.53855->last_ins;
  D.53855->code = D.53856;
  <D.53933>:
  lmf_reg = ins->dreg;
  D.53860 = cfg->mempool;
  ins = mono_mempool_alloc (D.53860, 48);
  ins->data.op[1].const_val = 0;
  D.53861 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.53861;
  ins->prev = 0B;
  D.53862 = ins->prev;
  ins->next = D.53862;
  ins->opcode = 374;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.53863 = ins->sreg3;
  ins->sreg2 = D.53863;
  D.53864 = ins->sreg2;
  ins->sreg1 = D.53864;
  D.53865 = cfg->ip;
  ins->cil_code = D.53865;
  D.53934 = lmf_ins->dreg;
  ins->sreg1 = D.53934;
  ins->dreg = lmf_reg;
  ins->data.op[0].const_val = 0;
  D.53855 = cfg->cbb;
  D.53856 = D.53855->last_ins;
  if (D.53856 != 0B) goto <D.53935>; else goto <D.53936>;
  <D.53935>:
  D.53855 = cfg->cbb;
  D.53856 = D.53855->last_ins;
  D.53856->next = ins;
  D.53855 = cfg->cbb;
  D.53856 = D.53855->last_ins;
  ins->prev = D.53856;
  D.53855 = cfg->cbb;
  D.53855->last_ins = ins;
  goto <D.53937>;
  <D.53936>:
  D.53855 = cfg->cbb;
  D.53855 = cfg->cbb;
  D.53855->last_ins = ins;
  D.53856 = D.53855->last_ins;
  D.53855->code = D.53856;
  <D.53937>:
  emit_tls_set (cfg, lmf_reg, 3);
  goto <D.53845>;
  <D.53844>:
  D.53938 = cfg->lmf_addr_var;
  if (D.53938 == 0B) goto <D.53939>; else goto <D.53940>;
  <D.53939>:
  D.53941 = mono_defaults.int_class;
  D.53942 = &D.53941->byval_arg;
  D.53943 = mono_compile_create_var (cfg, D.53942, 329);
  cfg->lmf_addr_var = D.53943;
  <D.53940>:
  lmf_ins = mono_get_lmf_addr_intrinsic (cfg);
  if (lmf_ins != 0B) goto <D.53944>; else goto <D.53945>;
  <D.53944>:
  D.53855 = cfg->cbb;
  D.53856 = D.53855->last_ins;
  if (D.53856 != 0B) goto <D.53946>; else goto <D.53947>;
  <D.53946>:
  D.53855 = cfg->cbb;
  D.53856 = D.53855->last_ins;
  D.53856->next = lmf_ins;
  D.53855 = cfg->cbb;
  D.53856 = D.53855->last_ins;
  lmf_ins->prev = D.53856;
  D.53855 = cfg->cbb;
  D.53855->last_ins = lmf_ins;
  goto <D.53948>;
  <D.53947>:
  D.53855 = cfg->cbb;
  D.53855 = cfg->cbb;
  D.53855->last_ins = lmf_ins;
  D.53856 = D.53855->last_ins;
  D.53855->code = D.53856;
  <D.53948>:
  goto <D.53949>;
  <D.53945>:
  lmf_ins = mono_emit_jit_icall (cfg, mono_get_lmf_addr, 0B);
  <D.53949>:
  D.53938 = cfg->lmf_addr_var;
  D.53950 = D.53938->dreg;
  lmf_ins->dreg = D.53950;
  D.53860 = cfg->mempool;
  ins = mono_mempool_alloc (D.53860, 48);
  ins->data.op[1].const_val = 0;
  D.53861 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.53861;
  ins->prev = 0B;
  D.53862 = ins->prev;
  ins->next = D.53862;
  ins->opcode = 314;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.53863 = ins->sreg3;
  ins->sreg2 = D.53863;
  D.53864 = ins->sreg2;
  ins->sreg1 = D.53864;
  D.53865 = cfg->ip;
  ins->cil_code = D.53865;
  D.53866 = cfg->lmf_var;
  ins->data.op[0].p = D.53866;
  D.53866 = cfg->lmf_var;
  D.53866 = cfg->lmf_var;
  D.53867 = D.53866->flags;
  D.53868 = D.53867 | 16;
  D.53866->flags = D.53868;
  ins->type = 5;
  D.53866 = cfg->lmf_var;
  D.53869 = D.53866->klass;
  ins->klass = D.53869;
  D.53951 = alloc_dreg (cfg, 5);
  D.53952 = (int) D.53951;
  ins->dreg = D.53952;
  cfg->has_indirection = 1;
  D.53872 = cfg->gsharedvt;
  D.53873 = D.53872 != 0;
  D.53874 = (long int) D.53873;
  D.53875 = __builtin_expect (D.53874, 0);
  if (D.53875 != 0) goto <D.53953>; else goto <D.53954>;
  <D.53953>:
  D.53866 = cfg->lmf_var;
  D.53878 = D.53866->data.op[1].vtype;
  D.53955 = mini_is_gsharedvt_variable_type (cfg, D.53878);
  if (D.53955 != 0) goto <D.53956>; else goto <D.53957>;
  <D.53956>:
  handle_gsharedvt_ldaddr (cfg);
  <D.53957>:
  <D.53954>:
  D.53959 = mono_arch_is_soft_float ();
  if (D.53959 != 0) goto <D.53960>; else goto <D.53961>;
  <D.53960>:
  D.53866 = cfg->lmf_var;
  D.53962 = D.53866->type;
  D.53963 = D.53962 == 2;
  D.53964 = D.53962 == 4;
  D.53965 = D.53963 | D.53964;
  D.53966 = (int) D.53965;
  iftmp.572 = (_Bool) D.53966;
  goto <D.53967>;
  <D.53961>:
  D.53866 = cfg->lmf_var;
  D.53892 = D.53866->type;
  iftmp.572 = D.53892 == 2;
  <D.53967>:
  if (iftmp.572 != 0) goto <D.53968>; else goto <D.53969>;
  <D.53968>:
  {
    struct MonoInst * var1;
    struct MonoInst * var2;

    D.53866 = cfg->lmf_var;
    D.53896 = D.53866->dreg;
    D.53897 = D.53896 + 1;
    D.53898 = (unsigned int) D.53897;
    D.53899 = cfg->vreg_to_inst_len;
    if (D.53898 < D.53899) goto <D.53971>; else goto <D.53972>;
    <D.53971>:
    D.53902 = cfg->vreg_to_inst;
    D.53866 = cfg->lmf_var;
    D.53896 = D.53866->dreg;
    D.53903 = (sizetype) D.53896;
    D.53904 = D.53903 + 1;
    D.53905 = D.53904 * 4;
    D.53906 = D.53902 + D.53905;
    iftmp.573 = *D.53906;
    goto <D.53973>;
    <D.53972>:
    iftmp.573 = 0B;
    <D.53973>:
    var1 = iftmp.573;
    D.53866 = cfg->lmf_var;
    D.53896 = D.53866->dreg;
    D.53909 = D.53896 + 2;
    D.53910 = (unsigned int) D.53909;
    D.53899 = cfg->vreg_to_inst_len;
    if (D.53910 < D.53899) goto <D.53975>; else goto <D.53976>;
    <D.53975>:
    D.53902 = cfg->vreg_to_inst;
    D.53866 = cfg->lmf_var;
    D.53896 = D.53866->dreg;
    D.53903 = (sizetype) D.53896;
    D.53913 = D.53903 + 2;
    D.53914 = D.53913 * 4;
    D.53915 = D.53902 + D.53914;
    iftmp.574 = *D.53915;
    goto <D.53977>;
    <D.53976>:
    iftmp.574 = 0B;
    <D.53977>:
    var2 = iftmp.574;
    D.53978 = var1 == 0B;
    D.53979 = (long int) D.53978;
    D.53980 = __builtin_expect (D.53979, 0);
    if (D.53980 != 0) goto <D.53981>; else goto <D.53982>;
    <D.53981>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1944, "var1");
    <D.53982>:
    D.53983 = var2 == 0B;
    D.53984 = (long int) D.53983;
    D.53985 = __builtin_expect (D.53984, 0);
    if (D.53985 != 0) goto <D.53986>; else goto <D.53987>;
    <D.53986>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1944, "var2");
    <D.53987>:
    D.53988 = var1->flags;
    D.53989 = D.53988 | 16;
    var1->flags = D.53989;
    D.53990 = var2->flags;
    D.53991 = D.53990 | 16;
    var2->flags = D.53991;
  }
  <D.53969>:
  D.53855 = cfg->cbb;
  D.53856 = D.53855->last_ins;
  if (D.53856 != 0B) goto <D.53992>; else goto <D.53993>;
  <D.53992>:
  D.53855 = cfg->cbb;
  D.53856 = D.53855->last_ins;
  D.53856->next = ins;
  D.53855 = cfg->cbb;
  D.53856 = D.53855->last_ins;
  ins->prev = D.53856;
  D.53855 = cfg->cbb;
  D.53855->last_ins = ins;
  goto <D.53994>;
  <D.53993>:
  D.53855 = cfg->cbb;
  D.53855 = cfg->cbb;
  D.53855->last_ins = ins;
  D.53856 = D.53855->last_ins;
  D.53855->code = D.53856;
  <D.53994>:
  lmf_reg = ins->dreg;
  D.53995 = alloc_preg (cfg);
  prev_lmf_reg = (int) D.53995;
  D.53860 = cfg->mempool;
  ins = mono_mempool_alloc (D.53860, 48);
  ins->data.op[1].const_val = 0;
  D.53861 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.53861;
  ins->prev = 0B;
  D.53862 = ins->prev;
  ins->next = D.53862;
  ins->opcode = 391;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.53863 = ins->sreg3;
  ins->sreg2 = D.53863;
  D.53864 = ins->sreg2;
  ins->sreg1 = D.53864;
  D.53865 = cfg->ip;
  ins->cil_code = D.53865;
  ins->dreg = prev_lmf_reg;
  D.53938 = cfg->lmf_addr_var;
  D.53950 = D.53938->dreg;
  ins->sreg1 = D.53950;
  ins->data.op[0].const_val = 0;
  ins->type = 1;
  D.53855 = cfg->cbb;
  D.53856 = D.53855->last_ins;
  if (D.53856 != 0B) goto <D.53996>; else goto <D.53997>;
  <D.53996>:
  D.53855 = cfg->cbb;
  D.53856 = D.53855->last_ins;
  D.53856->next = ins;
  D.53855 = cfg->cbb;
  D.53856 = D.53855->last_ins;
  ins->prev = D.53856;
  D.53855 = cfg->cbb;
  D.53855->last_ins = ins;
  goto <D.53998>;
  <D.53997>:
  D.53855 = cfg->cbb;
  D.53855 = cfg->cbb;
  D.53855->last_ins = ins;
  D.53856 = D.53855->last_ins;
  D.53855->code = D.53856;
  <D.53998>:
  D.53860 = cfg->mempool;
  ins = mono_mempool_alloc (D.53860, 48);
  ins->data.op[1].const_val = 0;
  D.53861 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.53861;
  ins->prev = 0B;
  D.53862 = ins->prev;
  ins->next = D.53862;
  ins->opcode = 374;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.53863 = ins->sreg3;
  ins->sreg2 = D.53863;
  D.53864 = ins->sreg2;
  ins->sreg1 = D.53864;
  D.53865 = cfg->ip;
  ins->cil_code = D.53865;
  ins->sreg1 = prev_lmf_reg;
  ins->dreg = lmf_reg;
  ins->data.op[0].const_val = 0;
  D.53855 = cfg->cbb;
  D.53856 = D.53855->last_ins;
  if (D.53856 != 0B) goto <D.53999>; else goto <D.54000>;
  <D.53999>:
  D.53855 = cfg->cbb;
  D.53856 = D.53855->last_ins;
  D.53856->next = ins;
  D.53855 = cfg->cbb;
  D.53856 = D.53855->last_ins;
  ins->prev = D.53856;
  D.53855 = cfg->cbb;
  D.53855->last_ins = ins;
  goto <D.54001>;
  <D.54000>:
  D.53855 = cfg->cbb;
  D.53855 = cfg->cbb;
  D.53855->last_ins = ins;
  D.53856 = D.53855->last_ins;
  D.53855->code = D.53856;
  <D.54001>:
  D.53860 = cfg->mempool;
  ins = mono_mempool_alloc (D.53860, 48);
  ins->data.op[1].const_val = 0;
  D.53861 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.53861;
  ins->prev = 0B;
  D.53862 = ins->prev;
  ins->next = D.53862;
  ins->opcode = 374;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.53863 = ins->sreg3;
  ins->sreg2 = D.53863;
  D.53864 = ins->sreg2;
  ins->sreg1 = D.53864;
  D.53865 = cfg->ip;
  ins->cil_code = D.53865;
  ins->sreg1 = lmf_reg;
  D.53938 = cfg->lmf_addr_var;
  D.53950 = D.53938->dreg;
  ins->dreg = D.53950;
  ins->data.op[0].const_val = 0;
  D.53855 = cfg->cbb;
  D.53856 = D.53855->last_ins;
  if (D.53856 != 0B) goto <D.54002>; else goto <D.54003>;
  <D.54002>:
  D.53855 = cfg->cbb;
  D.53856 = D.53855->last_ins;
  D.53856->next = ins;
  D.53855 = cfg->cbb;
  D.53856 = D.53855->last_ins;
  ins->prev = D.53856;
  D.53855 = cfg->cbb;
  D.53855->last_ins = ins;
  goto <D.54004>;
  <D.54003>:
  D.53855 = cfg->cbb;
  D.53855 = cfg->cbb;
  D.53855->last_ins = ins;
  D.53856 = D.53855->last_ins;
  D.53855->code = D.53856;
  <D.54004>:
  <D.53845>:
}


mono_find_block_region (struct MonoCompile * cfg, int offset)
{
  struct MonoExceptionClause * D.54006;
  unsigned int i.575;
  unsigned int D.54008;
  unsigned int D.54009;
  unsigned int offset.576;
  unsigned int D.54013;
  unsigned int D.54016;
  int D.54019;
  int D.54020;
  int D.54021;
  unsigned int D.54022;
  unsigned int D.54023;
  unsigned int D.54024;
  unsigned int D.54027;
  unsigned int D.54028;
  unsigned int D.54033;
  unsigned int D.54036;
  unsigned int D.54037;
  unsigned int D.54038;
  unsigned int D.54041;
  unsigned int D.54042;
  <unnamed-unsigned:15> D.54045;
  int D.54046;
  struct MonoMethodHeader * header;
  struct MonoExceptionClause * clause;
  int i;

  header = cfg->header;
  i = 0;
  goto <D.24576>;
  <D.24575>:
  D.54006 = header->clauses;
  i.575 = (unsigned int) i;
  D.54008 = i.575 * 24;
  clause = D.54006 + D.54008;
  D.54009 = clause->flags;
  if (D.54009 == 1) goto <D.54010>; else goto <D.54011>;
  <D.54010>:
  offset.576 = (unsigned int) offset;
  D.54013 = clause->data.filter_offset;
  if (offset.576 >= D.54013) goto <D.54014>; else goto <D.54015>;
  <D.54014>:
  offset.576 = (unsigned int) offset;
  D.54016 = clause->handler_offset;
  if (offset.576 < D.54016) goto <D.54017>; else goto <D.54018>;
  <D.54017>:
  D.54020 = i + 1;
  D.54021 = D.54020 << 8;
  D.54022 = (unsigned int) D.54021;
  D.54009 = clause->flags;
  D.54023 = D.54022 | D.54009;
  D.54024 = D.54023 | 128;
  D.54019 = (int) D.54024;
  return D.54019;
  <D.54018>:
  <D.54015>:
  <D.54011>:
  D.54016 = clause->handler_offset;
  offset.576 = (unsigned int) offset;
  if (D.54016 <= offset.576) goto <D.54025>; else goto <D.54026>;
  <D.54025>:
  offset.576 = (unsigned int) offset;
  D.54016 = clause->handler_offset;
  D.54027 = clause->handler_len;
  D.54028 = D.54016 + D.54027;
  if (offset.576 < D.54028) goto <D.54029>; else goto <D.54030>;
  <D.54029>:
  D.54009 = clause->flags;
  if (D.54009 == 2) goto <D.54031>; else goto <D.54032>;
  <D.54031>:
  D.54020 = i + 1;
  D.54021 = D.54020 << 8;
  D.54022 = (unsigned int) D.54021;
  D.54009 = clause->flags;
  D.54023 = D.54022 | D.54009;
  D.54033 = D.54023 | 16;
  D.54019 = (int) D.54033;
  return D.54019;
  <D.54032>:
  D.54009 = clause->flags;
  if (D.54009 == 4) goto <D.54034>; else goto <D.54035>;
  <D.54034>:
  D.54020 = i + 1;
  D.54021 = D.54020 << 8;
  D.54022 = (unsigned int) D.54021;
  D.54009 = clause->flags;
  D.54023 = D.54022 | D.54009;
  D.54036 = D.54023 | 64;
  D.54019 = (int) D.54036;
  return D.54019;
  <D.54035>:
  D.54020 = i + 1;
  D.54021 = D.54020 << 8;
  D.54022 = (unsigned int) D.54021;
  D.54009 = clause->flags;
  D.54023 = D.54022 | D.54009;
  D.54037 = D.54023 | 32;
  D.54019 = (int) D.54037;
  return D.54019;
  <D.54030>:
  <D.54026>:
  D.54038 = clause->try_offset;
  offset.576 = (unsigned int) offset;
  if (D.54038 <= offset.576) goto <D.54039>; else goto <D.54040>;
  <D.54039>:
  offset.576 = (unsigned int) offset;
  D.54038 = clause->try_offset;
  D.54041 = clause->try_len;
  D.54042 = D.54038 + D.54041;
  if (offset.576 < D.54042) goto <D.54043>; else goto <D.54044>;
  <D.54043>:
  D.54020 = i + 1;
  D.54021 = D.54020 << 8;
  D.54022 = (unsigned int) D.54021;
  D.54009 = clause->flags;
  D.54023 = D.54022 | D.54009;
  D.54019 = (int) D.54023;
  return D.54019;
  <D.54044>:
  <D.54040>:
  i = i + 1;
  <D.24576>:
  D.54045 = header->num_clauses;
  D.54046 = (int) D.54045;
  if (D.54046 > i) goto <D.24575>; else goto <D.24577>;
  <D.24577>:
  D.54019 = -1;
  return D.54019;
}


mono_create_spvar_for_region (struct MonoCompile * cfg, int region)
{
  const void * region.577;
  struct GHashTable * D.54049;
  struct MonoClass * D.54052;
  struct MonoType * D.54053;
  unsigned char D.54054;
  unsigned char D.54055;
  void * region.578;
  struct MonoInst * var;

  region.577 = (const void *) region;
  D.54049 = cfg->spvars;
  var = monoeg_g_hash_table_lookup (D.54049, region.577);
  if (var != 0B) goto <D.54050>; else goto <D.54051>;
  <D.54050>:
  return;
  <D.54051>:
  D.54052 = mono_defaults.int_class;
  D.54053 = &D.54052->byval_arg;
  var = mono_compile_create_var (cfg, D.54053, 329);
  D.54054 = var->flags;
  D.54055 = D.54054 | 4;
  var->flags = D.54055;
  region.578 = (void *) region;
  D.54049 = cfg->spvars;
  monoeg_g_hash_table_insert_replace (D.54049, region.578, var, 0);
}


set_exception_type_from_invalid_il (struct MonoCompile * cfg, struct MonoMethod * method, unsigned char * ip)
{
  unsigned int D.54058;
  gchar * D.54062;
  struct GSList * D.54063;
  struct MonoMemPool * D.54064;
  struct GSList * D.54065;
  char * method_fname;
  char * method_code;
  struct MonoMethodHeader * header;

  method_fname = mono_method_full_name (method, 1);
  header = mono_method_get_header (method);
  D.54058 = header->code_size;
  if (D.54058 == 0) goto <D.54059>; else goto <D.54060>;
  <D.54059>:
  method_code = monoeg_strdup ("method body is empty.");
  goto <D.54061>;
  <D.54060>:
  method_code = mono_disasm_code_one (0B, method, ip, 0B);
  <D.54061>:
  mono_cfg_set_exception (cfg, 3);
  D.54062 = monoeg_g_strdup_printf ("Invalid IL code in %s: %s\n", method_fname, method_code);
  cfg->exception_message = D.54062;
  monoeg_g_free (method_fname);
  monoeg_g_free (method_code);
  D.54063 = cfg->headers_to_free;
  D.54064 = cfg->mempool;
  D.54065 = g_slist_prepend_mempool (D.54064, D.54063, header);
  cfg->headers_to_free = D.54065;
}


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

  if (str != 0B) goto <D.54066>; else goto <D.54067>;
  <D.54066>:
  D.54068 = __strdup (str);
  return D.54068;
  <D.54067>:
  D.54068 = 0B;
  return D.54068;
}


g_slist_prepend_mempool (struct MonoMemPool * mp, struct GSList * list, void * data)
{
  struct GSList * D.54070;
  struct GSList * new_list;

  new_list = mono_mempool_alloc (mp, 8);
  new_list->data = data;
  new_list->next = list;
  D.54070 = new_list;
  return D.54070;
}


mono_op_to_op_imm (int opcode)
{
  int D.54072;

  switch (opcode) <default: <D.54073>, case 322: <D.28338>, case 325: <D.28340>, case 326: <D.28339>, case 338: <D.28351>, case 344: <D.28347>, case 347: <D.28348>, case 350: <D.28350>, case 353: <D.28349>, case 374: <D.28341>, case 375: <D.28342>, case 376: <D.28343>, case 377: <D.28344>, case 483: <D.28330>, case 484: <D.28331>, case 490: <D.28332>, case 491: <D.28333>, case 492: <D.28334>, case 493: <D.28335>, case 494: <D.28336>, case 495: <D.28337>, case 569: <D.28317>, case 570: <D.28318>, case 571: <D.28323>, case 572: <D.28319>, case 573: <D.28320>, case 574: <D.28321>, case 575: <D.28322>, case 576: <D.28324>, case 577: <D.28325>, case 578: <D.28326>, case 579: <D.28327>, case 580: <D.28328>, case 581: <D.28329>, case 1006: <D.28346>, case 1034: <D.28345>>
  <D.28317>:
  D.54072 = 629;
  return D.54072;
  <D.28318>:
  D.54072 = 630;
  return D.54072;
  <D.28319>:
  D.54072 = 632;
  return D.54072;
  <D.28320>:
  D.54072 = 633;
  return D.54072;
  <D.28321>:
  D.54072 = 634;
  return D.54072;
  <D.28322>:
  D.54072 = 635;
  return D.54072;
  <D.28323>:
  D.54072 = 631;
  return D.54072;
  <D.28324>:
  D.54072 = 636;
  return D.54072;
  <D.28325>:
  D.54072 = 637;
  return D.54072;
  <D.28326>:
  D.54072 = 638;
  return D.54072;
  <D.28327>:
  D.54072 = 639;
  return D.54072;
  <D.28328>:
  D.54072 = 640;
  return D.54072;
  <D.28329>:
  D.54072 = 641;
  return D.54072;
  <D.28330>:
  D.54072 = 542;
  return D.54072;
  <D.28331>:
  D.54072 = 543;
  return D.54072;
  <D.28332>:
  D.54072 = 545;
  return D.54072;
  <D.28333>:
  D.54072 = 546;
  return D.54072;
  <D.28334>:
  D.54072 = 547;
  return D.54072;
  <D.28335>:
  D.54072 = 548;
  return D.54072;
  <D.28336>:
  D.54072 = 549;
  return D.54072;
  <D.28337>:
  D.54072 = 550;
  return D.54072;
  <D.28338>:
  D.54072 = 323;
  return D.54072;
  <D.28339>:
  D.54072 = 327;
  return D.54072;
  <D.28340>:
  D.54072 = 328;
  return D.54072;
  <D.28341>:
  D.54072 = 384;
  return D.54072;
  <D.28342>:
  D.54072 = 385;
  return D.54072;
  <D.28343>:
  D.54072 = 386;
  return D.54072;
  <D.28344>:
  D.54072 = 387;
  return D.54072;
  <D.28345>:
  D.54072 = 1033;
  return D.54072;
  <D.28346>:
  D.54072 = 1007;
  return D.54072;
  <D.28347>:
  D.54072 = 343;
  return D.54072;
  <D.28348>:
  D.54072 = 346;
  return D.54072;
  <D.28349>:
  D.54072 = 352;
  return D.54072;
  <D.28350>:
  D.54072 = 349;
  return D.54072;
  <D.28351>:
  D.54072 = 339;
  return D.54072;
  <D.54073>:
  D.54072 = -1;
  return D.54072;
}


mono_load_membase_to_load_mem (int opcode)
{
  int D.54075;

  switch (opcode) <default: <D.54076>, case 391: <D.28382>, case 393: <D.28383>, case 395: <D.28384>, case 396: <D.28385>, case 397: <D.28386>>
  <D.28382>:
  D.54075 = 421;
  return D.54075;
  <D.28383>:
  D.54075 = 422;
  return D.54075;
  <D.28384>:
  D.54075 = 423;
  return D.54075;
  <D.28385>:
  D.54075 = 424;
  return D.54075;
  <D.28386>:
  D.54075 = 425;
  return D.54075;
  <D.54076>:
  D.54075 = -1;
  return D.54075;
}


mono_op_to_op_imm_noemul (int opcode)
{
  int D.54078;

  switch (opcode) <default: <D.28436>>
  <D.28436>:
  D.54078 = mono_op_to_op_imm (opcode);
  return D.54078;
}


mono_handle_global_vregs (struct MonoCompile * cfg)
{
  unsigned int D.54080;
  unsigned int D.54081;
  unsigned int D.54082;
  struct MonoMemPool * D.54083;
  unsigned char D.54084;
  unsigned char D.54085;
  unsigned int D.54088;
  int D.54091;
  short unsigned int D.54092;
  int D.54093;
  int D.54094;
  int D.54095;
  _Bool D.54096;
  long int D.54097;
  long int D.54098;
  _Bool D.54101;
  long int D.54102;
  long int D.54103;
  char D.54108;
  const char * D.54114;
  char D.54115;
  const char * D.54121;
  char D.54122;
  const char * D.54128;
  char D.54129;
  unsigned int vreg.579;
  unsigned int D.54137;
  struct MonoInst * * D.54139;
  unsigned int vreg.580;
  unsigned int D.54141;
  struct MonoInst * * D.54142;
  struct MonoInst * D.54143;
  struct MonoClass * D.54144;
  struct MonoType * D.54145;
  struct MonoInst * iftmp.581;
  int D.54149;
  unsigned int D.54150;
  sizetype vreg.582;
  sizetype D.54154;
  sizetype D.54155;
  struct MonoInst * * D.54156;
  struct MonoInst * iftmp.583;
  unsigned char D.54162;
  unsigned char D.54163;
  struct MonoInst * iftmp.584;
  int D.54165;
  unsigned int D.54166;
  sizetype D.54169;
  sizetype D.54170;
  struct MonoInst * * D.54171;
  struct MonoInst * iftmp.585;
  unsigned char D.54177;
  unsigned char D.54178;
  _Bool D.54179;
  long int D.54180;
  long int D.54181;
  gint32 * D.54184;
  int D.54187;
  _Bool D.54193;
  _Bool D.54194;
  _Bool D.54195;
  _Bool D.54196;
  _Bool D.54197;
  int D.54204;
  unsigned int D.54207;
  gboolean * D.54209;
  gboolean * D.54210;
  int D.54211;
  struct MonoClass * D.54213;
  struct MonoType * D.54214;
  struct MonoClass * D.54215;
  struct MonoType * D.54216;
  struct MonoClass * D.54217;
  struct MonoType * D.54218;
  struct MonoClass * D.54219;
  struct MonoType * D.54220;
  struct MonoInst * * D.54221;
  unsigned int i.586;
  unsigned int D.54223;
  struct MonoInst * * D.54224;
  struct MonoMethodVar * D.54225;
  unsigned int D.54226;
  unsigned char D.54227;
  int D.54228;
  int D.54229;
  short unsigned int D.54231;
  struct MonoInst * D.54234;
  unsigned char D.54237;
  int D.54238;
  int D.54239;
  int D.54242;
  unsigned int D.54243;
  unsigned int D.54244;
  gint32 * D.54245;
  int D.54246;
  struct MonoClass * D.54249;
  unsigned char D.54250;
  unsigned char D.54253;
  unsigned char D.54254;
  struct MonoInst * D.54257;
  struct MonoInst * D.54260;
  struct MonoInst * D.54263;
  unsigned int D.54268;
  unsigned char D.54269;
  struct MonoInst * * D.54270;
  unsigned int i.587;
  unsigned int D.54273;
  unsigned int D.54276;
  unsigned int pos.588;
  unsigned char D.54280;
  int D.54281;
  int D.54282;
  unsigned int pos.589;
  unsigned int D.54288;
  struct MonoInst * * D.54289;
  struct MonoInst * D.54290;
  struct MonoInst * D.54291;
  struct MonoMethodVar * D.54292;
  unsigned int D.54293;
  struct MonoMethodVar * D.54294;
  unsigned char D.54295;
  struct MonoInst * iftmp.590;
  int D.54299;
  int D.54300;
  unsigned int D.54301;
  sizetype D.54304;
  sizetype D.54305;
  sizetype D.54306;
  struct MonoInst * * D.54307;
  struct MonoInst * iftmp.591;
  int D.54310;
  unsigned int D.54311;
  sizetype D.54314;
  sizetype D.54315;
  struct MonoInst * * D.54316;
  gint32 * vreg_to_bb;
  struct MonoBasicBlock * bb;
  int i;
  int pos;

  D.54080 = cfg->next_vreg;
  D.54081 = D.54080 * 4;
  D.54082 = D.54081 + 1;
  D.54083 = cfg->mempool;
  vreg_to_bb = mono_mempool_alloc0 (D.54083, D.54082);
  D.54084 = BIT_FIELD_REF <*cfg, 8, 3424>;
  D.54085 = D.54084 & 8;
  if (D.54085 != 0) goto <D.54086>; else goto <D.54087>;
  <D.54086>:
  mono_simd_simplify_indirection (cfg);
  <D.54087>:
  bb = cfg->bb_entry;
  goto <D.28465>;
  <D.28464>:
  {
    struct MonoInst * ins;
    int block_num;

    ins = bb->code;
    block_num = bb->block_num;
    D.54088 = cfg->verbose_level;
    if (D.54088 > 2) goto <D.54089>; else goto <D.54090>;
    <D.54089>:
    D.54091 = bb->block_num;
    printf ("\nHANDLE-GLOBAL-VREGS BLOCK %d:\n", D.54091);
    <D.54090>:
    cfg->cbb = bb;
    goto <D.28462>;
    <D.28461>:
    {
      const char * spec;
      int regtype;
      int regindex;
      gint32 prev_bb;

      D.54092 = ins->opcode;
      D.54093 = (int) D.54092;
      D.54094 = D.54093 + -313;
      D.54095 = D.54094 * 4;
      spec = &ins_info[D.54095];
      regtype = 0;
      D.54088 = cfg->verbose_level;
      D.54096 = D.54088 > 2;
      D.54097 = (long int) D.54096;
      D.54098 = __builtin_expect (D.54097, 0);
      if (D.54098 != 0) goto <D.54099>; else goto <D.54100>;
      <D.54099>:
      mono_print_ins (ins);
      <D.54100>:
      D.54092 = ins->opcode;
      D.54101 = D.54092 <= 312;
      D.54102 = (long int) D.54101;
      D.54103 = __builtin_expect (D.54102, 0);
      if (D.54103 != 0) goto <D.54104>; else goto <D.54105>;
      <D.54104>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12539, "ins->opcode >= MONO_CEE_LAST");
      <D.54105>:
      regindex = 0;
      goto <D.28459>;
      <D.28458>:
      {
        int vreg;

        vreg = 0;
        if (regindex == 0) goto <D.54106>; else goto <D.54107>;
        <D.54106>:
        D.54108 = *spec;
        regtype = (int) D.54108;
        if (regtype == 32) goto <D.54109>; else goto <D.54110>;
        <D.54109>:
        // predicted unlikely by continue predictor.
        goto <D.28451>;
        <D.54110>:
        vreg = ins->dreg;
        goto <D.54111>;
        <D.54107>:
        if (regindex == 1) goto <D.54112>; else goto <D.54113>;
        <D.54112>:
        D.54114 = spec + 1;
        D.54115 = *D.54114;
        regtype = (int) D.54115;
        if (regtype == 32) goto <D.54116>; else goto <D.54117>;
        <D.54116>:
        // predicted unlikely by continue predictor.
        goto <D.28451>;
        <D.54117>:
        vreg = ins->sreg1;
        goto <D.54118>;
        <D.54113>:
        if (regindex == 2) goto <D.54119>; else goto <D.54120>;
        <D.54119>:
        D.54121 = spec + 2;
        D.54122 = *D.54121;
        regtype = (int) D.54122;
        if (regtype == 32) goto <D.54123>; else goto <D.54124>;
        <D.54123>:
        // predicted unlikely by continue predictor.
        goto <D.28451>;
        <D.54124>:
        vreg = ins->sreg2;
        goto <D.54125>;
        <D.54120>:
        if (regindex == 3) goto <D.54126>; else goto <D.54127>;
        <D.54126>:
        D.54128 = spec + 3;
        D.54129 = *D.54128;
        regtype = (int) D.54129;
        if (regtype == 32) goto <D.54130>; else goto <D.54131>;
        <D.54130>:
        // predicted unlikely by continue predictor.
        goto <D.28451>;
        <D.54131>:
        vreg = ins->sreg3;
        <D.54127>:
        <D.54125>:
        <D.54118>:
        <D.54111>:
        if (regtype == 108) goto <D.54132>; else goto <D.54133>;
        <D.54132>:
        vreg.579 = (unsigned int) vreg;
        D.54137 = cfg->vreg_to_inst_len;
        if (vreg.579 >= D.54137) goto <D.54134>; else goto <D.54138>;
        <D.54138>:
        D.54139 = cfg->vreg_to_inst;
        vreg.580 = (unsigned int) vreg;
        D.54141 = vreg.580 * 4;
        D.54142 = D.54139 + D.54141;
        D.54143 = *D.54142;
        if (D.54143 == 0B) goto <D.54134>; else goto <D.54135>;
        <D.54134>:
        D.54144 = mono_defaults.int64_class;
        D.54145 = &D.54144->byval_arg;
        mono_compile_create_var_for_vreg (cfg, D.54145, 329, vreg);
        D.54088 = cfg->verbose_level;
        if (D.54088 > 2) goto <D.54146>; else goto <D.54147>;
        <D.54146>:
        printf ("LONG VREG R%d made global.\n", vreg);
        <D.54147>:
        <D.54135>:
        D.54149 = vreg + 1;
        D.54150 = (unsigned int) D.54149;
        D.54137 = cfg->vreg_to_inst_len;
        if (D.54150 < D.54137) goto <D.54151>; else goto <D.54152>;
        <D.54151>:
        D.54139 = cfg->vreg_to_inst;
        vreg.582 = (sizetype) vreg;
        D.54154 = vreg.582 + 1;
        D.54155 = D.54154 * 4;
        D.54156 = D.54139 + D.54155;
        iftmp.581 = *D.54156;
        goto <D.54157>;
        <D.54152>:
        iftmp.581 = 0B;
        <D.54157>:
        D.54149 = vreg + 1;
        D.54150 = (unsigned int) D.54149;
        D.54137 = cfg->vreg_to_inst_len;
        if (D.54150 < D.54137) goto <D.54159>; else goto <D.54160>;
        <D.54159>:
        D.54139 = cfg->vreg_to_inst;
        vreg.582 = (sizetype) vreg;
        D.54154 = vreg.582 + 1;
        D.54155 = D.54154 * 4;
        D.54156 = D.54139 + D.54155;
        iftmp.583 = *D.54156;
        goto <D.54161>;
        <D.54160>:
        iftmp.583 = 0B;
        <D.54161>:
        D.54162 = iftmp.583->flags;
        D.54163 = D.54162 | 4;
        iftmp.581->flags = D.54163;
        D.54165 = vreg + 2;
        D.54166 = (unsigned int) D.54165;
        D.54137 = cfg->vreg_to_inst_len;
        if (D.54166 < D.54137) goto <D.54167>; else goto <D.54168>;
        <D.54167>:
        D.54139 = cfg->vreg_to_inst;
        vreg.582 = (sizetype) vreg;
        D.54169 = vreg.582 + 2;
        D.54170 = D.54169 * 4;
        D.54171 = D.54139 + D.54170;
        iftmp.584 = *D.54171;
        goto <D.54172>;
        <D.54168>:
        iftmp.584 = 0B;
        <D.54172>:
        D.54165 = vreg + 2;
        D.54166 = (unsigned int) D.54165;
        D.54137 = cfg->vreg_to_inst_len;
        if (D.54166 < D.54137) goto <D.54174>; else goto <D.54175>;
        <D.54174>:
        D.54139 = cfg->vreg_to_inst;
        vreg.582 = (sizetype) vreg;
        D.54169 = vreg.582 + 2;
        D.54170 = D.54169 * 4;
        D.54171 = D.54139 + D.54170;
        iftmp.585 = *D.54171;
        goto <D.54176>;
        <D.54175>:
        iftmp.585 = 0B;
        <D.54176>:
        D.54177 = iftmp.585->flags;
        D.54178 = D.54177 | 4;
        iftmp.584->flags = D.54178;
        <D.54133>:
        D.54179 = vreg == -1;
        D.54180 = (long int) D.54179;
        D.54181 = __builtin_expect (D.54180, 0);
        if (D.54181 != 0) goto <D.54182>; else goto <D.54183>;
        <D.54182>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12590, "vreg != -1");
        <D.54183>:
        vreg.580 = (unsigned int) vreg;
        D.54141 = vreg.580 * 4;
        D.54184 = vreg_to_bb + D.54141;
        prev_bb = *D.54184;
        if (prev_bb == 0) goto <D.54185>; else goto <D.54186>;
        <D.54185>:
        vreg.580 = (unsigned int) vreg;
        D.54141 = vreg.580 * 4;
        D.54184 = vreg_to_bb + D.54141;
        D.54187 = block_num + 1;
        *D.54184 = D.54187;
        goto <D.54188>;
        <D.54186>:
        D.54187 = block_num + 1;
        if (D.54187 != prev_bb) goto <D.54189>; else goto <D.54190>;
        <D.54189>:
        if (prev_bb != -1) goto <D.54191>; else goto <D.54192>;
        <D.54191>:
        D.54193 = regtype == 105;
        D.54194 = regtype == 102;
        D.54195 = D.54193 | D.54194;
        D.54196 = vreg <= 7;
        D.54197 = D.54195 & D.54196;
        if (D.54197 != 0) goto <D.54198>; else goto <D.54199>;
        <D.54198>:
        // predicted unlikely by continue predictor.
        goto <D.28451>;
        <D.54199>:
        vreg.579 = (unsigned int) vreg;
        D.54137 = cfg->vreg_to_inst_len;
        if (vreg.579 >= D.54137) goto <D.54200>; else goto <D.54201>;
        <D.54201>:
        D.54139 = cfg->vreg_to_inst;
        vreg.580 = (unsigned int) vreg;
        D.54141 = vreg.580 * 4;
        D.54142 = D.54139 + D.54141;
        D.54143 = *D.54142;
        if (D.54143 == 0B) goto <D.54200>; else goto <D.28453>;
        <D.54200>:
        D.54088 = cfg->verbose_level;
        D.54096 = D.54088 > 2;
        D.54097 = (long int) D.54096;
        D.54098 = __builtin_expect (D.54097, 0);
        if (D.54098 != 0) goto <D.54202>; else goto <D.54203>;
        <D.54202>:
        vreg.580 = (unsigned int) vreg;
        D.54141 = vreg.580 * 4;
        D.54184 = vreg_to_bb + D.54141;
        D.54204 = *D.54184;
        printf ("VREG R%d used in BB%d and BB%d made global.\n", vreg, D.54204, block_num);
        <D.54203>:
        switch (regtype) <default: <D.28457>, case 102: <D.28455>, case 105: <D.28452>, case 108: <D.28454>, case 118: <D.28456>>
        <D.28452>:
        vreg.579 = (unsigned int) vreg;
        D.54207 = cfg->vreg_is_ref_len;
        if (vreg.579 < D.54207) goto <D.54208>; else goto <D.54205>;
        <D.54208>:
        D.54209 = cfg->vreg_is_ref;
        vreg.580 = (unsigned int) vreg;
        D.54141 = vreg.580 * 4;
        D.54210 = D.54209 + D.54141;
        D.54211 = *D.54210;
        if (D.54211 != 0) goto <D.54212>; else goto <D.54205>;
        <D.54212>:
        D.54213 = mono_defaults.object_class;
        D.54214 = &D.54213->byval_arg;
        mono_compile_create_var_for_vreg (cfg, D.54214, 329, vreg);
        goto <D.54206>;
        <D.54205>:
        D.54215 = mono_defaults.int_class;
        D.54216 = &D.54215->byval_arg;
        mono_compile_create_var_for_vreg (cfg, D.54216, 329, vreg);
        <D.54206>:
        goto <D.28453>;
        <D.28454>:
        D.54144 = mono_defaults.int64_class;
        D.54145 = &D.54144->byval_arg;
        mono_compile_create_var_for_vreg (cfg, D.54145, 329, vreg);
        goto <D.28453>;
        <D.28455>:
        D.54217 = mono_defaults.double_class;
        D.54218 = &D.54217->byval_arg;
        mono_compile_create_var_for_vreg (cfg, D.54218, 329, vreg);
        goto <D.28453>;
        <D.28456>:
        D.54219 = ins->klass;
        D.54220 = &D.54219->byval_arg;
        mono_compile_create_var_for_vreg (cfg, D.54220, 329, vreg);
        goto <D.28453>;
        <D.28457>:
        monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 12621);
        <D.28453>:
        vreg.580 = (unsigned int) vreg;
        D.54141 = vreg.580 * 4;
        D.54184 = vreg_to_bb + D.54141;
        *D.54184 = -1;
        <D.54192>:
        <D.54190>:
        <D.54188>:
      }
      <D.28451>:
      regindex = regindex + 1;
      <D.28459>:
      if (regindex <= 3) goto <D.28458>; else goto <D.28460>;
      <D.28460>:
    }
    ins = ins->next;
    <D.28462>:
    if (ins != 0B) goto <D.28461>; else goto <D.28463>;
    <D.28463>:
  }
  bb = bb->next_bb;
  <D.28465>:
  if (bb != 0B) goto <D.28464>; else goto <D.28466>;
  <D.28466>:
  i = 0;
  goto <D.28476>;
  <D.28475>:
  {
    struct MonoInst * var;
    struct MonoMethodVar * vmv;

    D.54221 = cfg->varinfo;
    i.586 = (unsigned int) i;
    D.54223 = i.586 * 4;
    D.54224 = D.54221 + D.54223;
    var = *D.54224;
    D.54225 = cfg->vars;
    i.586 = (unsigned int) i;
    D.54226 = i.586 * 56;
    vmv = D.54225 + D.54226;
    D.54227 = var->type;
    D.54228 = (int) D.54227;
    switch (D.54228) <default: <D.54271>, case 1: <D.28469>, case 3: <D.28471>, case 5: <D.28472>, case 6: <D.28470>, case 7: <D.28473>>
    <D.28469>:
    <D.28470>:
    <D.28471>:
    <D.28472>:
    <D.28473>:
    D.54229 = mono_arch_is_soft_float ();
    if (D.54229 != 0) goto <D.28474>; else goto <D.54230>;
    <D.54230>:
    D.54231 = var->opcode;
    if (D.54231 != 330) goto <D.54232>; else goto <D.54233>;
    <D.54232>:
    D.54234 = cfg->ret;
    if (D.54234 != var) goto <D.54235>; else goto <D.54236>;
    <D.54235>:
    D.54237 = var->flags;
    D.54238 = (int) D.54237;
    D.54239 = D.54238 & 20;
    if (D.54239 == 0) goto <D.54240>; else goto <D.54241>;
    <D.54240>:
    D.54242 = var->dreg;
    D.54243 = (unsigned int) D.54242;
    D.54244 = D.54243 * 4;
    D.54245 = vreg_to_bb + D.54244;
    D.54246 = *D.54245;
    if (D.54246 != -1) goto <D.54247>; else goto <D.54248>;
    <D.54247>:
    D.54249 = var->klass;
    D.54250 = D.54249->byval_arg.type;
    if (D.54250 != 12) goto <D.54251>; else goto <D.54252>;
    <D.54251>:
    D.54253 = BIT_FIELD_REF <*cfg, 8, 3408>;
    D.54254 = D.54253 & 64;
    if (D.54254 == 0) goto <D.54255>; else goto <D.54256>;
    <D.54255>:
    D.54257 = cfg->gsharedvt_info_var;
    if (D.54257 != var) goto <D.54258>; else goto <D.54259>;
    <D.54258>:
    D.54260 = cfg->gsharedvt_locals_var;
    if (D.54260 != var) goto <D.54261>; else goto <D.54262>;
    <D.54261>:
    D.54263 = cfg->lmf_addr_var;
    if (D.54263 != var) goto <D.54264>; else goto <D.54265>;
    <D.54264>:
    D.54088 = cfg->verbose_level;
    D.54096 = D.54088 > 2;
    D.54097 = (long int) D.54096;
    D.54098 = __builtin_expect (D.54097, 0);
    if (D.54098 != 0) goto <D.54266>; else goto <D.54267>;
    <D.54266>:
    D.54268 = vmv->idx;
    D.54242 = var->dreg;
    printf ("CONVERTED R%d(%d) TO VREG.\n", D.54242, D.54268);
    <D.54267>:
    D.54237 = var->flags;
    D.54269 = D.54237 | 2;
    var->flags = D.54269;
    D.54139 = cfg->vreg_to_inst;
    D.54242 = var->dreg;
    D.54243 = (unsigned int) D.54242;
    D.54244 = D.54243 * 4;
    D.54270 = D.54139 + D.54244;
    *D.54270 = 0B;
    <D.54265>:
    <D.54262>:
    <D.54259>:
    <D.54256>:
    <D.54252>:
    <D.54248>:
    <D.54241>:
    <D.54236>:
    <D.54233>:
    goto <D.28474>;
    <D.54271>:
    <D.28474>:
  }
  i = i + 1;
  <D.28476>:
  i.587 = (unsigned int) i;
  D.54273 = cfg->num_varinfo;
  if (i.587 < D.54273) goto <D.28475>; else goto <D.28477>;
  <D.28477>:
  pos = 0;
  i = 0;
  goto <D.28481>;
  <D.28480>:
  {
    struct MonoInst * var;

    D.54221 = cfg->varinfo;
    i.586 = (unsigned int) i;
    D.54223 = i.586 * 4;
    D.54224 = D.54221 + D.54223;
    var = *D.54224;
    if (pos < i) goto <D.54274>; else goto <D.54275>;
    <D.54274>:
    D.54276 = cfg->locals_start;
    i.587 = (unsigned int) i;
    if (D.54276 == i.587) goto <D.54277>; else goto <D.54278>;
    <D.54277>:
    pos.588 = (unsigned int) pos;
    cfg->locals_start = pos.588;
    <D.54278>:
    <D.54275>:
    D.54280 = var->flags;
    D.54281 = (int) D.54280;
    D.54282 = D.54281 & 2;
    if (D.54282 == 0) goto <D.54283>; else goto <D.54284>;
    <D.54283>:
    if (pos < i) goto <D.54285>; else goto <D.54286>;
    <D.54285>:
    D.54221 = cfg->varinfo;
    pos.589 = (unsigned int) pos;
    D.54288 = pos.589 * 4;
    D.54289 = D.54221 + D.54288;
    D.54221 = cfg->varinfo;
    i.586 = (unsigned int) i;
    D.54223 = i.586 * 4;
    D.54224 = D.54221 + D.54223;
    D.54290 = *D.54224;
    *D.54289 = D.54290;
    D.54221 = cfg->varinfo;
    pos.589 = (unsigned int) pos;
    D.54288 = pos.589 * 4;
    D.54289 = D.54221 + D.54288;
    D.54291 = *D.54289;
    D.54291->data.op[0].const_val = pos;
    D.54225 = cfg->vars;
    i.586 = (unsigned int) i;
    D.54226 = i.586 * 56;
    D.54292 = D.54225 + D.54226;
    D.54225 = cfg->vars;
    pos.589 = (unsigned int) pos;
    D.54293 = pos.589 * 56;
    D.54294 = D.54225 + D.54293;
    memcpy (D.54294, D.54292, 56);
    D.54225 = cfg->vars;
    pos.589 = (unsigned int) pos;
    D.54293 = pos.589 * 56;
    D.54294 = D.54225 + D.54293;
    pos.588 = (unsigned int) pos;
    D.54294->idx = pos.588;
    D.54221 = cfg->varinfo;
    pos.589 = (unsigned int) pos;
    D.54288 = pos.589 * 4;
    D.54289 = D.54221 + D.54288;
    D.54291 = *D.54289;
    D.54295 = D.54291->type;
    if (D.54295 == 2) goto <D.54296>; else goto <D.54297>;
    <D.54296>:
    {
      struct MonoInst * var1;

      D.54221 = cfg->varinfo;
      pos.589 = (unsigned int) pos;
      D.54288 = pos.589 * 4;
      D.54289 = D.54221 + D.54288;
      D.54291 = *D.54289;
      D.54299 = D.54291->dreg;
      D.54300 = D.54299 + 1;
      D.54301 = (unsigned int) D.54300;
      D.54137 = cfg->vreg_to_inst_len;
      if (D.54301 < D.54137) goto <D.54302>; else goto <D.54303>;
      <D.54302>:
      D.54139 = cfg->vreg_to_inst;
      D.54221 = cfg->varinfo;
      pos.589 = (unsigned int) pos;
      D.54288 = pos.589 * 4;
      D.54289 = D.54221 + D.54288;
      D.54291 = *D.54289;
      D.54299 = D.54291->dreg;
      D.54304 = (sizetype) D.54299;
      D.54305 = D.54304 + 1;
      D.54306 = D.54305 * 4;
      D.54307 = D.54139 + D.54306;
      iftmp.590 = *D.54307;
      goto <D.54308>;
      <D.54303>:
      iftmp.590 = 0B;
      <D.54308>:
      var1 = iftmp.590;
      var1->data.op[0].const_val = pos;
      D.54221 = cfg->varinfo;
      pos.589 = (unsigned int) pos;
      D.54288 = pos.589 * 4;
      D.54289 = D.54221 + D.54288;
      D.54291 = *D.54289;
      D.54299 = D.54291->dreg;
      D.54310 = D.54299 + 2;
      D.54311 = (unsigned int) D.54310;
      D.54137 = cfg->vreg_to_inst_len;
      if (D.54311 < D.54137) goto <D.54312>; else goto <D.54313>;
      <D.54312>:
      D.54139 = cfg->vreg_to_inst;
      D.54221 = cfg->varinfo;
      pos.589 = (unsigned int) pos;
      D.54288 = pos.589 * 4;
      D.54289 = D.54221 + D.54288;
      D.54291 = *D.54289;
      D.54299 = D.54291->dreg;
      D.54304 = (sizetype) D.54299;
      D.54314 = D.54304 + 2;
      D.54315 = D.54314 * 4;
      D.54316 = D.54139 + D.54315;
      iftmp.591 = *D.54316;
      goto <D.54317>;
      <D.54313>:
      iftmp.591 = 0B;
      <D.54317>:
      var1 = iftmp.591;
      var1->data.op[0].const_val = pos;
    }
    <D.54297>:
    <D.54286>:
    pos = pos + 1;
    <D.54284>:
  }
  i = i + 1;
  <D.28481>:
  i.587 = (unsigned int) i;
  D.54273 = cfg->num_varinfo;
  if (i.587 < D.54273) goto <D.28480>; else goto <D.28482>;
  <D.28482>:
  pos.588 = (unsigned int) pos;
  cfg->num_varinfo = pos.588;
  D.54276 = cfg->locals_start;
  D.54273 = cfg->num_varinfo;
  if (D.54276 > D.54273) goto <D.54318>; else goto <D.54319>;
  <D.54318>:
  D.54273 = cfg->num_varinfo;
  cfg->locals_start = D.54273;
  <D.54319>:
}


memcpy (void * restrict __dest, const void * restrict __src, size_t __len)
{
  void * D.54320;
  unsigned int D.54321;

  D.54321 = __builtin_object_size (__dest, 0);
  D.54320 = __builtin___memcpy_chk (__dest, __src, __len, D.54321);
  return D.54320;
}


mono_spill_global_vars (struct MonoCompile * cfg, gboolean * need_local_opts)
{
  struct MonoInst * * D.54323;
  unsigned int D.54324;
  struct MonoInst * * D.54325;
  short unsigned int D.54326;
  unsigned char D.54329;
  int D.54330;
  int D.54331;
  unsigned char D.54334;
  int D.54335;
  _Bool D.54337;
  long int D.54338;
  long int D.54339;
  struct MonoInst * iftmp.592;
  int D.54343;
  int D.54344;
  unsigned int D.54345;
  unsigned int D.54346;
  struct MonoInst * * D.54349;
  sizetype D.54350;
  sizetype D.54351;
  sizetype D.54352;
  struct MonoInst * * D.54353;
  _Bool D.54355;
  long int D.54356;
  long int D.54357;
  int D.54360;
  int D.54361;
  struct MonoInst * iftmp.593;
  int D.54363;
  unsigned int D.54364;
  sizetype D.54367;
  sizetype D.54368;
  struct MonoInst * * D.54369;
  int D.54373;
  unsigned int D.54374;
  unsigned char D.54375;
  unsigned char D.54376;
  short unsigned int D.54379;
  unsigned char D.54382;
  unsigned char D.54383;
  int D.54384;
  unsigned int D.54387;
  unsigned int D.54388;
  struct MonoType * D.54389;
  int D.54390;
  unsigned int D.54393;
  int D.54396;
  unsigned int D.54397;
  unsigned int D.54398;
  int * D.54399;
  int D.54400;
  struct MonoMemPool * D.54402;
  unsigned int D.54403;
  int D.54406;
  guint32 * D.54407;
  unsigned int D.54408;
  unsigned int D.54409;
  guint32 * D.54410;
  short unsigned int D.54411;
  int D.54412;
  int D.54413;
  int D.54414;
  _Bool D.54415;
  long int D.54416;
  long int D.54417;
  short unsigned int D.54424;
  short unsigned int D.54427;
  int D.54430;
  struct MonoInst * D.54432;
  short unsigned int D.54433;
  int D.54436;
  int D.54437;
  int D.54443;
  unsigned int D.54444;
  unsigned int D.54445;
  int * D.54446;
  int D.54447;
  _Bool D.54449;
  long int D.54450;
  long int D.54451;
  int D.54454;
  int D.54455;
  _Bool D.54460;
  long int D.54461;
  long int D.54462;
  _Bool D.54465;
  long int D.54466;
  long int D.54467;
  _Bool D.54470;
  long int D.54471;
  long int D.54472;
  short unsigned int D.54475;
  unsigned int D.54478;
  int D.54479;
  struct MonoInst * D.54480;
  int D.54481;
  int D.54482;
  const unsigned char * D.54483;
  int D.54484;
  int D.54485;
  unsigned int D.54490;
  int D.54491;
  struct MonoInst * D.54492;
  int D.54493;
  int D.54494;
  unsigned int idx.594;
  unsigned int D.54496;
  unsigned int D.54497;
  int D.54498;
  unsigned int D.54499;
  short unsigned int D.54500;
  int D.54503;
  struct MonoInst * D.54504;
  int D.54505;
  int D.54506;
  int D.54507;
  int D.54508;
  int D.54512;
  _Bool D.54516;
  long int D.54517;
  long int D.54518;
  short unsigned int D.54523;
  int D.54526;
  char D.54527;
  char D.54528;
  short unsigned int D.54530;
  int D.54535;
  int D.54536;
  int D.54537;
  signed char D.54538;
  int D.54539;
  int iftmp.595;
  _Bool D.54547;
  long int D.54548;
  long int D.54549;
  unsigned int D.54554;
  unsigned int D.54557;
  unsigned int D.54558;
  struct MonoInst * * D.54559;
  struct MonoInst * D.54560;
  struct MonoInst * iftmp.596;
  struct MonoType * D.54567;
  unsigned int D.54568;
  short unsigned int D.54569;
  int D.54572;
  const char * D.54578;
  char D.54579;
  guint32 * D.54581;
  unsigned int D.54582;
  int D.54584;
  _Bool D.54586;
  long int D.54587;
  long int D.54588;
  int D.54594;
  short unsigned int D.54595;
  int D.54596;
  int D.54597;
  unsigned int D.54602;
  unsigned int D.54603;
  int D.54604;
  int D.54607;
  struct MonoInst * D.54608;
  int D.54609;
  int D.54610;
  int D.54611;
  int D.54612;
  int D.54613;
  _Bool D.54615;
  long int D.54616;
  long int D.54617;
  int D.54626;
  int D.54627;
  short unsigned int D.54628;
  short unsigned int D.54633;
  _Bool D.54634;
  _Bool D.54635;
  _Bool D.54636;
  short unsigned int D.54638;
  int D.54642;
  int D.54644;
  short unsigned int D.54645;
  unsigned int store_opcode.597;
  unsigned int D.54647;
  unsigned char D.54650;
  int D.54651;
  int D.54652;
  unsigned int dreg.598;
  unsigned int D.54658;
  struct MonoInst * * D.54659;
  struct MonoInst * D.54660;
  struct MonoBasicBlock * * D.54663;
  signed char D.54668;
  int D.54671;
  struct MonoInst * D.54672;
  int D.54673;
  int D.54674;
  int D.54675;
  sizetype D.54676;
  const char * D.54677;
  char D.54678;
  int iftmp.599;
  _Bool D.54682;
  _Bool D.54683;
  _Bool D.54684;
  _Bool D.54686;
  _Bool D.54687;
  _Bool D.54688;
  _Bool D.54690;
  long int D.54691;
  long int D.54692;
  unsigned int sreg.600;
  unsigned int sreg.601;
  unsigned int D.54701;
  struct MonoInst * * D.54702;
  struct MonoInst * D.54703;
  struct MonoInst * iftmp.602;
  short unsigned int D.54710;
  int D.54713;
  struct MonoInst * * D.54714;
  struct MonoBasicBlock * * D.54715;
  unsigned char D.54720;
  signed char D.54721;
  int D.54724;
  struct MonoInst * D.54725;
  int D.54726;
  int D.54727;
  _Bool D.54728;
  long int D.54729;
  long int D.54730;
  struct MonoType * D.54733;
  _Bool D.54734;
  long int D.54735;
  long int D.54736;
  guint32 * D.54739;
  unsigned int D.54740;
  _Bool D.54743;
  long int D.54744;
  long int D.54745;
  int D.54750;
  int load_opcode.603;
  int D.54755;
  int D.54757;
  short unsigned int D.54758;
  int D.54759;
  int D.54760;
  int D.54764;
  int D.54766;
  short unsigned int D.54767;
  short unsigned int D.54771;
  _Bool D.54772;
  _Bool D.54773;
  _Bool D.54774;
  unsigned int D.54776;
  unsigned int D.54777;
  int D.54780;
  int D.54781;
  int D.54782;
  long int D.54787;
  long int D.54788;
  unsigned int D.54791;
  unsigned int D.54792;
  guint32 * D.54793;
  _Bool D.54794;
  long int D.54795;
  long int D.54796;
  unsigned int lvregs_len.604;
  unsigned int D.54800;
  guint32 * D.54801;
  unsigned int D.54802;
  int D.54805;
  struct MonoInst * D.54806;
  int D.54807;
  int D.54808;
  int D.54809;
  int D.54810;
  int D.54811;
  _Bool D.54813;
  long int D.54814;
  long int D.54815;
  short unsigned int D.54818;
  struct MonoInst * * D.54821;
  struct MonoBasicBlock * * D.54822;
  int D.54829;
  struct MonoInst * D.54830;
  int D.54831;
  int D.54832;
  _Bool D.54835;
  long int D.54836;
  long int D.54837;
  unsigned int prev_dreg.605;
  unsigned int D.54841;
  guint32 * D.54842;
  unsigned int lvregs_len.606;
  unsigned int D.54846;
  guint32 * D.54847;
  unsigned int prev_dreg.607;
  short unsigned int D.54854;
  short unsigned int D.54855;
  _Bool D.54856;
  short unsigned int D.54857;
  _Bool D.54858;
  _Bool D.54859;
  short unsigned int D.54861;
  short unsigned int D.54863;
  short unsigned int D.54865;
  short unsigned int D.54867;
  unsigned char D.54873;
  unsigned char D.54874;
  struct MonoBitSet * D.54877;
  struct MonoInst * D.54880;
  struct MonoMethodVar * D.54883;
  unsigned int D.54884;
  int iftmp.608;
  int D.54888;
  unsigned int D.54889;
  unsigned int D.54891;
  unsigned int D.54892;
  struct MonoInst * * D.54893;
  struct MonoInst * D.54894;
  struct MonoInst * iftmp.609;
  unsigned char D.54900;
  int D.54901;
  int D.54902;
  _Bool D.54904;
  long int D.54905;
  long int D.54906;
  struct MonoBitSet * D.54909;
  unsigned int D.54910;
  unsigned int D.54911;
  int i.610;
  int D.54913;
  unsigned int D.54914;
  unsigned int D.54915;
  struct MonoInst * * D.54918;
  struct MonoInst * D.54919;
  struct MonoBasicBlock * * D.54922;
  unsigned int D.54923;
  unsigned int D.54924;
  struct MonoInst * * D.54927;
  struct MonoInst * D.54928;
  struct MonoBasicBlock * * D.54929;
  unsigned int D.54932;
  unsigned int D.54933;
  struct MonoMethodVar * D.54936;
  unsigned int vreg.611;
  unsigned int D.54938;
  struct MonoInst * * D.54939;
  struct MonoInst * D.54940;
  int D.54943;
  struct MonoInst * D.54944;
  int D.54945;
  int D.54946;
  int i.612;
  struct MonoBasicBlock * * D.54948;
  struct MonoBasicBlock * D.54949;
  struct MonoInst * * D.54950;
  struct MonoInst * D.54951;
  struct MonoBasicBlock * * D.54954;
  struct MonoBasicBlock * D.54955;
  struct MonoInst * D.54956;
  struct MonoInst * D.54960;
  struct MonoBasicBlock * bb;
  char spec2[16];
  int orig_next_vreg;
  guint32 * vreg_to_lvreg;
  guint32 * lvregs;
  guint32 i;
  guint32 lvregs_len;
  gboolean dest_has_lvreg;
  guint32 stacktypes[128];
  struct MonoInst * * live_range_start;
  struct MonoInst * * live_range_end;
  struct MonoBasicBlock * * live_range_start_bb;
  struct MonoBasicBlock * * live_range_end_bb;
  int * gsharedvt_vreg_to_idx;

  try
    {
      dest_has_lvreg = 0;
      gsharedvt_vreg_to_idx = 0B;
      *need_local_opts = 0;
      memset (&spec2, 0, 16);
      stacktypes[105] = 3;
      stacktypes[108] = 2;
      stacktypes[102] = 4;
      stacktypes[120] = 7;
      i = 0;
      goto <D.28508>;
      <D.28507>:
      {
        struct MonoInst * ins;

        D.54323 = cfg->varinfo;
        D.54324 = i * 4;
        D.54325 = D.54323 + D.54324;
        ins = *D.54325;
        D.54326 = ins->opcode;
        if (D.54326 != 366) goto <D.54327>; else goto <D.54328>;
        <D.54327>:
        D.54329 = ins->flags;
        D.54330 = (int) D.54329;
        D.54331 = D.54330 & 2;
        if (D.54331 == 0) goto <D.54332>; else goto <D.54333>;
        <D.54332>:
        D.54334 = ins->type;
        D.54335 = (int) D.54334;
        switch (D.54335) <default: <D.28506>, case 2: <D.28503>, case 4: <D.28502>>
        <D.28502>:
        <D.28503>:
        {
          struct MonoInst * tree;

          D.54334 = ins->type;
          if (D.54334 == 4) goto <D.28505>; else goto <D.54336>;
          <D.54336>:
          D.54326 = ins->opcode;
          D.54337 = D.54326 != 367;
          D.54338 = (long int) D.54337;
          D.54339 = __builtin_expect (D.54338, 0);
          if (D.54339 != 0) goto <D.54340>; else goto <D.54341>;
          <D.54340>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12789, "ins->opcode == OP_REGOFFSET");
          <D.54341>:
          D.54343 = ins->dreg;
          D.54344 = D.54343 + 1;
          D.54345 = (unsigned int) D.54344;
          D.54346 = cfg->vreg_to_inst_len;
          if (D.54345 < D.54346) goto <D.54347>; else goto <D.54348>;
          <D.54347>:
          D.54349 = cfg->vreg_to_inst;
          D.54343 = ins->dreg;
          D.54350 = (sizetype) D.54343;
          D.54351 = D.54350 + 1;
          D.54352 = D.54351 * 4;
          D.54353 = D.54349 + D.54352;
          iftmp.592 = *D.54353;
          goto <D.54354>;
          <D.54348>:
          iftmp.592 = 0B;
          <D.54354>:
          tree = iftmp.592;
          D.54355 = tree == 0B;
          D.54356 = (long int) D.54355;
          D.54357 = __builtin_expect (D.54356, 0);
          if (D.54357 != 0) goto <D.54358>; else goto <D.54359>;
          <D.54358>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12792, "tree");
          <D.54359>:
          tree->opcode = 367;
          D.54360 = ins->sreg1;
          tree->sreg1 = D.54360;
          D.54361 = ins->data.op[0].const_val;
          tree->data.op[0].const_val = D.54361;
          D.54343 = ins->dreg;
          D.54363 = D.54343 + 2;
          D.54364 = (unsigned int) D.54363;
          D.54346 = cfg->vreg_to_inst_len;
          if (D.54364 < D.54346) goto <D.54365>; else goto <D.54366>;
          <D.54365>:
          D.54349 = cfg->vreg_to_inst;
          D.54343 = ins->dreg;
          D.54350 = (sizetype) D.54343;
          D.54367 = D.54350 + 2;
          D.54368 = D.54367 * 4;
          D.54369 = D.54349 + D.54368;
          iftmp.593 = *D.54369;
          goto <D.54370>;
          <D.54366>:
          iftmp.593 = 0B;
          <D.54370>:
          tree = iftmp.593;
          D.54355 = tree == 0B;
          D.54356 = (long int) D.54355;
          D.54357 = __builtin_expect (D.54356, 0);
          if (D.54357 != 0) goto <D.54371>; else goto <D.54372>;
          <D.54371>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12798, "tree");
          <D.54372>:
          tree->opcode = 367;
          D.54360 = ins->sreg1;
          tree->sreg1 = D.54360;
          D.54361 = ins->data.op[0].const_val;
          D.54373 = D.54361 + 4;
          tree->data.op[0].const_val = D.54373;
          goto <D.28505>;
        }
        <D.28506>:
        goto <D.28505>;
        <D.28505>:
        <D.54333>:
        <D.54328>:
      }
      i = i + 1;
      <D.28508>:
      D.54374 = cfg->num_varinfo;
      if (D.54374 > i) goto <D.28507>; else goto <D.28509>;
      <D.28509>:
      D.54375 = BIT_FIELD_REF <*cfg, 8, 3424>;
      D.54376 = D.54375 & 128;
      if (D.54376 != 0) goto <D.54377>; else goto <D.54378>;
      <D.54377>:
      i = 0;
      goto <D.28512>;
      <D.28511>:
      {
        struct MonoInst * ins;

        D.54323 = cfg->varinfo;
        D.54324 = i * 4;
        D.54325 = D.54323 + D.54324;
        ins = *D.54325;
        D.54379 = ins->opcode;
        if (D.54379 == 366) goto <D.54380>; else goto <D.54381>;
        <D.54380>:
        D.54382 = ins->flags;
        D.54383 = D.54382 | 128;
        ins->flags = D.54383;
        <D.54381>:
      }
      i = i + 1;
      <D.28512>:
      D.54374 = cfg->num_varinfo;
      if (D.54374 > i) goto <D.28511>; else goto <D.28513>;
      <D.28513>:
      <D.54378>:
      D.54384 = cfg->gsharedvt;
      if (D.54384 != 0) goto <D.54385>; else goto <D.54386>;
      <D.54385>:
      D.54387 = cfg->next_vreg;
      D.54388 = D.54387 * 4;
      gsharedvt_vreg_to_idx = monoeg_malloc0 (D.54388);
      i = 0;
      goto <D.28517>;
      <D.28516>:
      {
        struct MonoInst * ins;
        int idx;

        D.54323 = cfg->varinfo;
        D.54324 = i * 4;
        D.54325 = D.54323 + D.54324;
        ins = *D.54325;
        D.54389 = ins->data.op[1].vtype;
        D.54390 = mini_is_gsharedvt_variable_type (cfg, D.54389);
        if (D.54390 != 0) goto <D.54391>; else goto <D.54392>;
        <D.54391>:
        D.54393 = cfg->locals_start;
        if (D.54393 <= i) goto <D.54394>; else goto <D.54395>;
        <D.54394>:
        D.54389 = ins->data.op[1].vtype;
        idx = get_gsharedvt_info_slot (cfg, D.54389, 21);
        D.54396 = ins->dreg;
        D.54397 = (unsigned int) D.54396;
        D.54398 = D.54397 * 4;
        D.54399 = gsharedvt_vreg_to_idx + D.54398;
        D.54400 = idx + 1;
        *D.54399 = D.54400;
        ins->opcode = 331;
        ins->data.op[1].const_val = idx;
        goto <D.54401>;
        <D.54395>:
        D.54396 = ins->dreg;
        D.54397 = (unsigned int) D.54396;
        D.54398 = D.54397 * 4;
        D.54399 = gsharedvt_vreg_to_idx + D.54398;
        *D.54399 = -1;
        ins->opcode = 332;
        <D.54401>:
        <D.54392>:
      }
      i = i + 1;
      <D.28517>:
      D.54374 = cfg->num_varinfo;
      if (D.54374 > i) goto <D.28516>; else goto <D.28518>;
      <D.28518>:
      <D.54386>:
      D.54387 = cfg->next_vreg;
      orig_next_vreg = (int) D.54387;
      D.54387 = cfg->next_vreg;
      D.54388 = D.54387 * 4;
      D.54402 = cfg->mempool;
      vreg_to_lvreg = mono_mempool_alloc0 (D.54402, D.54388);
      D.54402 = cfg->mempool;
      lvregs = mono_mempool_alloc (D.54402, 4096);
      lvregs_len = 0;
      D.54387 = cfg->next_vreg;
      D.54388 = D.54387 * 4;
      live_range_start = monoeg_malloc0 (D.54388);
      D.54387 = cfg->next_vreg;
      D.54388 = D.54387 * 4;
      live_range_end = monoeg_malloc0 (D.54388);
      D.54387 = cfg->next_vreg;
      D.54388 = D.54387 * 4;
      live_range_start_bb = monoeg_malloc (D.54388);
      D.54387 = cfg->next_vreg;
      D.54388 = D.54387 * 4;
      live_range_end_bb = monoeg_malloc (D.54388);
      bb = cfg->bb_entry;
      goto <D.28577>;
      <D.28576>:
      {
        struct MonoInst * ins;

        D.54403 = cfg->verbose_level;
        if (D.54403 > 2) goto <D.54404>; else goto <D.54405>;
        <D.54404>:
        D.54406 = bb->block_num;
        printf ("\nSPILL BLOCK %d:\n", D.54406);
        <D.54405>:
        i = 0;
        goto <D.28521>;
        <D.28520>:
        D.54324 = i * 4;
        D.54407 = lvregs + D.54324;
        D.54408 = *D.54407;
        D.54409 = D.54408 * 4;
        D.54410 = vreg_to_lvreg + D.54409;
        *D.54410 = 0;
        i = i + 1;
        <D.28521>:
        if (i < lvregs_len) goto <D.28520>; else goto <D.28522>;
        <D.28522>:
        lvregs_len = 0;
        cfg->cbb = bb;
        ins = bb->code;
        goto <D.28569>;
        <D.28568>:
        {
          const char * spec;
          int regtype;
          int srcindex;
          int sreg;
          int tmp_reg;
          int prev_dreg;
          int num_sregs;
          gboolean store;
          gboolean no_lvreg;
          int sregs[3];

          try
            {
              D.54411 = ins->opcode;
              D.54412 = (int) D.54411;
              D.54413 = D.54412 + -313;
              D.54414 = D.54413 * 4;
              spec = &ins_info[D.54414];
              D.54403 = cfg->verbose_level;
              D.54415 = D.54403 > 2;
              D.54416 = (long int) D.54415;
              D.54417 = __builtin_expect (D.54416, 0);
              if (D.54417 != 0) goto <D.54418>; else goto <D.54419>;
              <D.54418>:
              mono_print_ins (ins);
              <D.54419>:
              D.54411 = ins->opcode;
              if (D.54411 == 316) goto <D.54420>; else goto <D.54421>;
              <D.54420>:
              // predicted unlikely by continue predictor.
              goto <D.28533>;
              <D.54421>:
              D.54411 = ins->opcode;
              if (D.54411 == 314) goto <D.54422>; else goto <D.54423>;
              <D.54422>:
              {
                struct MonoInst * var;

                var = ins->data.op[0].p;
                D.54424 = var->opcode;
                if (D.54424 == 368) goto <D.54425>; else goto <D.54426>;
                <D.54425>:
                {
                  struct MonoInst * vtaddr;

                  vtaddr = var->data.op[0].src;
                  D.54427 = vtaddr->opcode;
                  if (D.54427 == 366) goto <D.54428>; else goto <D.54429>;
                  <D.54428>:
                  ins->opcode = 428;
                  D.54430 = vtaddr->dreg;
                  ins->sreg1 = D.54430;
                  goto <D.54431>;
                  <D.54429>:
                  D.54432 = var->data.op[0].src;
                  D.54433 = D.54432->opcode;
                  if (D.54433 == 367) goto <D.54434>; else goto <D.54435>;
                  <D.54434>:
                  ins->opcode = 391;
                  D.54436 = vtaddr->sreg1;
                  ins->sreg1 = D.54436;
                  D.54437 = vtaddr->data.op[0].const_val;
                  ins->data.op[0].const_val = D.54437;
                  goto <D.54438>;
                  <D.54435>:
                  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 12918);
                  <D.54438>:
                  <D.54431>:
                }
                goto <D.54439>;
                <D.54426>:
                D.54384 = cfg->gsharedvt;
                if (D.54384 != 0) goto <D.54442>; else goto <D.54440>;
                <D.54442>:
                D.54443 = var->dreg;
                D.54444 = (unsigned int) D.54443;
                D.54445 = D.54444 * 4;
                D.54446 = gsharedvt_vreg_to_idx + D.54445;
                D.54447 = *D.54446;
                if (D.54447 < 0) goto <D.54448>; else goto <D.54440>;
                <D.54448>:
                D.54424 = var->opcode;
                D.54449 = D.54424 != 332;
                D.54450 = (long int) D.54449;
                D.54451 = __builtin_expect (D.54450, 0);
                if (D.54451 != 0) goto <D.54452>; else goto <D.54453>;
                <D.54452>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12921, "var->opcode == OP_GSHAREDVT_ARG_REGOFFSET");
                <D.54453>:
                ins->opcode = 391;
                D.54454 = var->sreg1;
                ins->sreg1 = D.54454;
                D.54455 = var->data.op[0].const_val;
                ins->data.op[0].const_val = D.54455;
                goto <D.54441>;
                <D.54440>:
                D.54384 = cfg->gsharedvt;
                if (D.54384 != 0) goto <D.54458>; else goto <D.54456>;
                <D.54458>:
                D.54443 = var->dreg;
                D.54444 = (unsigned int) D.54443;
                D.54445 = D.54444 * 4;
                D.54446 = gsharedvt_vreg_to_idx + D.54445;
                D.54447 = *D.54446;
                if (D.54447 != 0) goto <D.54459>; else goto <D.54456>;
                <D.54459>:
                {
                  struct MonoInst * load;
                  struct MonoInst * load2;
                  struct MonoInst * load3;
                  int idx;
                  int reg1;
                  int reg2;
                  int reg3;
                  struct MonoInst * info_var;
                  struct MonoInst * locals_var;

                  D.54443 = var->dreg;
                  D.54444 = (unsigned int) D.54443;
                  D.54445 = D.54444 * 4;
                  D.54446 = gsharedvt_vreg_to_idx + D.54445;
                  D.54447 = *D.54446;
                  idx = D.54447 + -1;
                  info_var = cfg->gsharedvt_info_var;
                  locals_var = cfg->gsharedvt_locals_var;
                  D.54424 = var->opcode;
                  D.54460 = D.54424 != 331;
                  D.54461 = (long int) D.54460;
                  D.54462 = __builtin_expect (D.54461, 0);
                  if (D.54462 != 0) goto <D.54463>; else goto <D.54464>;
                  <D.54463>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12938, "var->opcode == OP_GSHAREDVT_LOCAL");
                  <D.54464>:
                  D.54465 = info_var == 0B;
                  D.54466 = (long int) D.54465;
                  D.54467 = __builtin_expect (D.54466, 0);
                  if (D.54467 != 0) goto <D.54468>; else goto <D.54469>;
                  <D.54468>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12940, "info_var");
                  <D.54469>:
                  D.54470 = locals_var == 0B;
                  D.54471 = (long int) D.54470;
                  D.54472 = __builtin_expect (D.54471, 0);
                  if (D.54472 != 0) goto <D.54473>; else goto <D.54474>;
                  <D.54473>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12941, "locals_var");
                  <D.54474>:
                  cfg->gsharedvt_locals_var_ins = 0B;
                  D.54475 = info_var->opcode;
                  if (D.54475 == 367) goto <D.54476>; else goto <D.54477>;
                  <D.54476>:
                  D.54478 = alloc_ireg (cfg);
                  reg1 = (int) D.54478;
                  D.54402 = cfg->mempool;
                  load = mono_mempool_alloc (D.54402, 48);
                  load->data.op[1].const_val = 0;
                  D.54479 = load->data.op[1].const_val;
                  load->data.op[0].const_val = D.54479;
                  load->prev = 0B;
                  D.54480 = load->prev;
                  load->next = D.54480;
                  load->opcode = 391;
                  load->flags = 0;
                  load->type = 0;
                  load->dreg = -1;
                  load->sreg3 = -1;
                  D.54481 = load->sreg3;
                  load->sreg2 = D.54481;
                  D.54482 = load->sreg2;
                  load->sreg1 = D.54482;
                  D.54483 = cfg->ip;
                  load->cil_code = D.54483;
                  load->dreg = reg1;
                  D.54484 = info_var->sreg1;
                  load->sreg1 = D.54484;
                  D.54485 = info_var->data.op[0].const_val;
                  load->data.op[0].const_val = D.54485;
                  load->type = 1;
                  goto <D.54486>;
                  <D.54477>:
                  D.54475 = info_var->opcode;
                  if (D.54475 == 366) goto <D.54487>; else goto <D.54488>;
                  <D.54487>:
                  load = 0B;
                  reg1 = info_var->dreg;
                  goto <D.54489>;
                  <D.54488>:
                  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 12954);
                  <D.54489>:
                  <D.54486>:
                  D.54490 = alloc_ireg (cfg);
                  reg2 = (int) D.54490;
                  D.54402 = cfg->mempool;
                  load2 = mono_mempool_alloc (D.54402, 48);
                  load2->data.op[1].const_val = 0;
                  D.54491 = load2->data.op[1].const_val;
                  load2->data.op[0].const_val = D.54491;
                  load2->prev = 0B;
                  D.54492 = load2->prev;
                  load2->next = D.54492;
                  load2->opcode = 396;
                  load2->flags = 0;
                  load2->type = 0;
                  load2->dreg = -1;
                  load2->sreg3 = -1;
                  D.54493 = load2->sreg3;
                  load2->sreg2 = D.54493;
                  D.54494 = load2->sreg2;
                  load2->sreg1 = D.54494;
                  D.54483 = cfg->ip;
                  load2->cil_code = D.54483;
                  load2->dreg = reg2;
                  load2->sreg1 = reg1;
                  idx.594 = (unsigned int) idx;
                  D.54496 = idx.594 + 1;
                  D.54497 = D.54496 * 4;
                  D.54498 = (int) D.54497;
                  load2->data.op[0].const_val = D.54498;
                  load2->type = 1;
                  D.54499 = alloc_ireg (cfg);
                  reg3 = (int) D.54499;
                  D.54500 = locals_var->opcode;
                  if (D.54500 == 367) goto <D.54501>; else goto <D.54502>;
                  <D.54501>:
                  D.54402 = cfg->mempool;
                  load3 = mono_mempool_alloc (D.54402, 48);
                  load3->data.op[1].const_val = 0;
                  D.54503 = load3->data.op[1].const_val;
                  load3->data.op[0].const_val = D.54503;
                  load3->prev = 0B;
                  D.54504 = load3->prev;
                  load3->next = D.54504;
                  load3->opcode = 391;
                  load3->flags = 0;
                  load3->type = 0;
                  load3->dreg = -1;
                  load3->sreg3 = -1;
                  D.54505 = load3->sreg3;
                  load3->sreg2 = D.54505;
                  D.54506 = load3->sreg2;
                  load3->sreg1 = D.54506;
                  D.54483 = cfg->ip;
                  load3->cil_code = D.54483;
                  load3->dreg = reg3;
                  D.54507 = locals_var->sreg1;
                  load3->sreg1 = D.54507;
                  D.54508 = locals_var->data.op[0].const_val;
                  load3->data.op[0].const_val = D.54508;
                  load3->type = 1;
                  goto <D.54509>;
                  <D.54502>:
                  D.54500 = locals_var->opcode;
                  if (D.54500 == 366) goto <D.54510>; else goto <D.54511>;
                  <D.54510>:
                  D.54402 = cfg->mempool;
                  load3 = mono_mempool_alloc (D.54402, 48);
                  load3->data.op[1].const_val = 0;
                  D.54503 = load3->data.op[1].const_val;
                  load3->data.op[0].const_val = D.54503;
                  load3->prev = 0B;
                  D.54504 = load3->prev;
                  load3->next = D.54504;
                  load3->opcode = 428;
                  load3->flags = 0;
                  load3->type = 0;
                  load3->dreg = -1;
                  load3->sreg3 = -1;
                  D.54505 = load3->sreg3;
                  load3->sreg2 = D.54505;
                  D.54506 = load3->sreg2;
                  load3->sreg1 = D.54506;
                  D.54483 = cfg->ip;
                  load3->cil_code = D.54483;
                  load3->dreg = reg3;
                  D.54512 = locals_var->dreg;
                  load3->sreg1 = D.54512;
                  goto <D.54513>;
                  <D.54511>:
                  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 12965);
                  <D.54513>:
                  <D.54509>:
                  ins->opcode = 569;
                  ins->sreg1 = reg3;
                  ins->sreg2 = reg2;
                  mono_bblock_insert_before_ins (bb, ins, load3);
                  mono_bblock_insert_before_ins (bb, load3, load2);
                  if (load != 0B) goto <D.54514>; else goto <D.54515>;
                  <D.54514>:
                  mono_bblock_insert_before_ins (bb, load2, load);
                  <D.54515>:
                }
                goto <D.54457>;
                <D.54456>:
                D.54424 = var->opcode;
                D.54516 = D.54424 != 367;
                D.54517 = (long int) D.54516;
                D.54518 = __builtin_expect (D.54517, 0);
                if (D.54518 != 0) goto <D.54519>; else goto <D.54520>;
                <D.54519>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12977, "var->opcode == OP_REGOFFSET");
                <D.54520>:
                ins->opcode = 433;
                D.54454 = var->sreg1;
                ins->sreg1 = D.54454;
                D.54455 = var->data.op[0].const_val;
                ins->data.op[1].const_val = D.54455;
                <D.54457>:
                <D.54441>:
                <D.54439>:
                *need_local_opts = 1;
                D.54411 = ins->opcode;
                D.54412 = (int) D.54411;
                D.54413 = D.54412 + -313;
                D.54414 = D.54413 * 4;
                spec = &ins_info[D.54414];
              }
              <D.54423>:
              D.54411 = ins->opcode;
              if (D.54411 <= 312) goto <D.54521>; else goto <D.54522>;
              <D.54521>:
              mono_print_ins (ins);
              monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 12990);
              <D.54522>:
              D.54411 = ins->opcode;
              D.54523 = D.54411 + 65162;
              if (D.54523 <= 16) goto <D.54524>; else goto <D.54525>;
              <D.54524>:
              tmp_reg = ins->dreg;
              D.54526 = ins->sreg2;
              ins->dreg = D.54526;
              ins->sreg2 = tmp_reg;
              store = 1;
              spec2[0] = 32;
              D.54527 = MEM[(const char *)spec + 1B];
              spec2[1] = D.54527;
              D.54528 = *spec;
              spec2[2] = D.54528;
              spec2[3] = 32;
              spec = &spec2;
              goto <D.54529>;
              <D.54525>:
              D.54411 = ins->opcode;
              D.54530 = D.54411 + 65122;
              if (D.54530 <= 6) goto <D.54531>; else goto <D.54532>;
              <D.54531>:
              monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 13010);
              <D.54532>:
              store = 0;
              <D.54529>:
              no_lvreg = 0;
              D.54403 = cfg->verbose_level;
              D.54415 = D.54403 > 2;
              D.54416 = (long int) D.54415;
              D.54417 = __builtin_expect (D.54416, 0);
              if (D.54417 != 0) goto <D.54533>; else goto <D.54534>;
              <D.54533>:
              D.54535 = ins->dreg;
              printf ("\t %.3s %d", spec, D.54535);
              D.54536 = ins->sreg1;
              sregs[0] = D.54536;
              D.54526 = ins->sreg2;
              sregs[1] = D.54526;
              D.54537 = ins->sreg3;
              sregs[2] = D.54537;
              D.54411 = ins->opcode;
              D.54412 = (int) D.54411;
              D.54413 = D.54412 + -313;
              D.54538 = ins_sreg_counts[D.54413];
              num_sregs = (int) D.54538;
              srcindex = 0;
              goto <D.28546>;
              <D.28545>:
              D.54539 = sregs[srcindex];
              printf (" %d", D.54539);
              srcindex = srcindex + 1;
              <D.28546>:
              if (srcindex < num_sregs) goto <D.28545>; else goto <D.28547>;
              <D.28547>:
              printf ("\n");
              <D.54534>:
              D.54528 = *spec;
              regtype = (int) D.54528;
              D.54535 = ins->dreg;
              if (D.54535 != -1) goto <D.54541>; else goto <D.54545>;
              <D.54545>:
              if (regtype != 32) goto <D.54541>; else goto <D.54542>;
              <D.54541>:
              D.54535 = ins->dreg;
              if (D.54535 == -1) goto <D.54543>; else goto <D.54546>;
              <D.54546>:
              if (regtype == 32) goto <D.54543>; else goto <D.54542>;
              <D.54543>:
              iftmp.595 = 1;
              goto <D.54544>;
              <D.54542>:
              iftmp.595 = 0;
              <D.54544>:
              D.54547 = iftmp.595 != 0;
              D.54548 = (long int) D.54547;
              D.54549 = __builtin_expect (D.54548, 0);
              if (D.54549 != 0) goto <D.54550>; else goto <D.54551>;
              <D.54550>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13027, "((ins->dreg == -1) && (regtype == \' \')) || ((ins->dreg != -1) && (regtype != \' \'))");
              <D.54551>:
              prev_dreg = -1;
              D.54535 = ins->dreg;
              if (D.54535 != -1) goto <D.54552>; else goto <D.54553>;
              <D.54552>:
              D.54535 = ins->dreg;
              D.54554 = (unsigned int) D.54535;
              D.54346 = cfg->vreg_to_inst_len;
              if (D.54554 < D.54346) goto <D.54555>; else goto <D.54556>;
              <D.54555>:
              D.54349 = cfg->vreg_to_inst;
              D.54535 = ins->dreg;
              D.54557 = (unsigned int) D.54535;
              D.54558 = D.54557 * 4;
              D.54559 = D.54349 + D.54558;
              D.54560 = *D.54559;
              if (D.54560 != 0B) goto <D.54561>; else goto <D.54562>;
              <D.54561>:
              {
                struct MonoInst * var;
                struct MonoInst * store_ins;
                int store_opcode;
                struct MonoInst * def_ins;
                int dreg;

                D.54535 = ins->dreg;
                D.54554 = (unsigned int) D.54535;
                D.54346 = cfg->vreg_to_inst_len;
                if (D.54554 < D.54346) goto <D.54564>; else goto <D.54565>;
                <D.54564>:
                D.54349 = cfg->vreg_to_inst;
                D.54535 = ins->dreg;
                D.54557 = (unsigned int) D.54535;
                D.54558 = D.54557 * 4;
                D.54559 = D.54349 + D.54558;
                iftmp.596 = *D.54559;
                goto <D.54566>;
                <D.54565>:
                iftmp.596 = 0B;
                <D.54566>:
                var = iftmp.596;
                def_ins = ins;
                dreg = ins->dreg;
                D.54567 = var->data.op[1].vtype;
                D.54568 = mono_type_to_store_membase (cfg, D.54567);
                store_opcode = (int) D.54568;
                D.54569 = var->opcode;
                if (D.54569 == 366) goto <D.54570>; else goto <D.54571>;
                <D.54570>:
                D.54572 = var->dreg;
                ins->dreg = D.54572;
                goto <D.54573>;
                <D.54571>:
                D.54535 = ins->dreg;
                D.54536 = ins->sreg1;
                if (D.54535 == D.54536) goto <D.54576>; else goto <D.54574>;
                <D.54576>:
                D.54528 = *spec;
                if (D.54528 == 105) goto <D.54577>; else goto <D.54574>;
                <D.54577>:
                D.54578 = spec + 1;
                D.54579 = *D.54578;
                if (D.54579 == 105) goto <D.54580>; else goto <D.54574>;
                <D.54580>:
                D.54535 = ins->dreg;
                D.54557 = (unsigned int) D.54535;
                D.54558 = D.54557 * 4;
                D.54581 = vreg_to_lvreg + D.54558;
                D.54582 = *D.54581;
                if (D.54582 == 0) goto <D.54583>; else goto <D.54574>;
                <D.54583>:
                D.54411 = ins->opcode;
                D.54412 = (int) D.54411;
                D.54584 = op_to_op_dest_membase (store_opcode, D.54412);
                if (D.54584 != -1) goto <D.54585>; else goto <D.54574>;
                <D.54585>:
                D.54569 = var->opcode;
                D.54586 = D.54569 != 367;
                D.54587 = (long int) D.54586;
                D.54588 = __builtin_expect (D.54587, 0);
                if (D.54588 != 0) goto <D.54589>; else goto <D.54590>;
                <D.54589>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13045, "var->opcode == OP_REGOFFSET");
                <D.54590>:
                D.54411 = ins->opcode;
                if (D.54411 == 428) goto <D.54591>; else goto <D.54592>;
                <D.54591>:
                ins->opcode = 316;
                ins->dreg = -1;
                ins->sreg3 = -1;
                D.54537 = ins->sreg3;
                ins->sreg2 = D.54537;
                D.54526 = ins->sreg2;
                ins->sreg1 = D.54526;
                def_ins = 0B;
                goto <D.54593>;
                <D.54592>:
                D.54411 = ins->opcode;
                D.54412 = (int) D.54411;
                D.54594 = op_to_op_dest_membase (store_opcode, D.54412);
                D.54595 = (short unsigned int) D.54594;
                ins->opcode = D.54595;
                D.54596 = var->sreg1;
                ins->sreg1 = D.54596;
                D.54597 = var->data.op[0].const_val;
                ins->data.op[0].const_val = D.54597;
                ins->dreg = -1;
                <D.54593>:
                D.54411 = ins->opcode;
                D.54412 = (int) D.54411;
                D.54413 = D.54412 + -313;
                D.54414 = D.54413 * 4;
                spec = &ins_info[D.54414];
                goto <D.54575>;
                <D.54574>:
                {
                  guint32 lvreg;

                  D.54569 = var->opcode;
                  D.54586 = D.54569 != 367;
                  D.54587 = (long int) D.54586;
                  D.54588 = __builtin_expect (D.54587, 0);
                  if (D.54588 != 0) goto <D.54598>; else goto <D.54599>;
                  <D.54598>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13059, "var->opcode == OP_REGOFFSET");
                  <D.54599>:
                  prev_dreg = ins->dreg;
                  D.54535 = ins->dreg;
                  D.54557 = (unsigned int) D.54535;
                  D.54558 = D.54557 * 4;
                  D.54581 = vreg_to_lvreg + D.54558;
                  *D.54581 = 0;
                  lvreg = 0;
                  if (0 != 0) goto <D.54600>; else goto <D.54601>;
                  <D.54600>:
                  regtype = 108;
                  store_opcode = 378;
                  <D.54601>:
                  D.54602 = stacktypes[regtype];
                  D.54603 = alloc_dreg (cfg, D.54602);
                  D.54604 = (int) D.54603;
                  ins->dreg = D.54604;
                  if (regtype == 108) goto <D.54605>; else goto <D.54606>;
                  <D.54605>:
                  D.54402 = cfg->mempool;
                  store_ins = mono_mempool_alloc (D.54402, 48);
                  store_ins->data.op[1].const_val = 0;
                  D.54607 = store_ins->data.op[1].const_val;
                  store_ins->data.op[0].const_val = D.54607;
                  store_ins->prev = 0B;
                  D.54608 = store_ins->prev;
                  store_ins->next = D.54608;
                  store_ins->opcode = 377;
                  store_ins->flags = 0;
                  store_ins->type = 0;
                  store_ins->dreg = -1;
                  store_ins->sreg3 = -1;
                  D.54609 = store_ins->sreg3;
                  store_ins->sreg2 = D.54609;
                  D.54610 = store_ins->sreg2;
                  store_ins->sreg1 = D.54610;
                  D.54483 = cfg->ip;
                  store_ins->cil_code = D.54483;
                  D.54535 = ins->dreg;
                  D.54611 = D.54535 + 1;
                  store_ins->sreg1 = D.54611;
                  D.54596 = var->sreg1;
                  store_ins->dreg = D.54596;
                  D.54597 = var->data.op[0].const_val;
                  store_ins->data.op[0].const_val = D.54597;
                  mono_bblock_insert_after_ins (bb, ins, store_ins);
                  D.54402 = cfg->mempool;
                  store_ins = mono_mempool_alloc (D.54402, 48);
                  store_ins->data.op[1].const_val = 0;
                  D.54607 = store_ins->data.op[1].const_val;
                  store_ins->data.op[0].const_val = D.54607;
                  store_ins->prev = 0B;
                  D.54608 = store_ins->prev;
                  store_ins->next = D.54608;
                  store_ins->opcode = 377;
                  store_ins->flags = 0;
                  store_ins->type = 0;
                  store_ins->dreg = -1;
                  store_ins->sreg3 = -1;
                  D.54609 = store_ins->sreg3;
                  store_ins->sreg2 = D.54609;
                  D.54610 = store_ins->sreg2;
                  store_ins->sreg1 = D.54610;
                  D.54483 = cfg->ip;
                  store_ins->cil_code = D.54483;
                  D.54535 = ins->dreg;
                  D.54612 = D.54535 + 2;
                  store_ins->sreg1 = D.54612;
                  D.54596 = var->sreg1;
                  store_ins->dreg = D.54596;
                  D.54597 = var->data.op[0].const_val;
                  D.54613 = D.54597 + 4;
                  store_ins->data.op[0].const_val = D.54613;
                  mono_bblock_insert_after_ins (bb, ins, store_ins);
                  def_ins = store_ins;
                  goto <D.54614>;
                  <D.54606>:
                  D.54615 = store_opcode == 390;
                  D.54616 = (long int) D.54615;
                  D.54617 = __builtin_expect (D.54616, 0);
                  if (D.54617 != 0) goto <D.54618>; else goto <D.54619>;
                  <D.54618>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13086, "store_opcode != OP_STOREV_MEMBASE");
                  <D.54619>:
                  if (lvreg == 0) goto <D.54623>; else goto <D.54620>;
                  <D.54623>:
                  D.54411 = ins->opcode;
                  if (D.54411 == 362) goto <D.54621>; else goto <D.54624>;
                  <D.54624>:
                  D.54411 = ins->opcode;
                  if (D.54411 == 363) goto <D.54625>; else goto <D.54620>;
                  <D.54625>:
                  D.54626 = ins->data.op[0].const_val;
                  if (D.54626 == 0) goto <D.54621>; else goto <D.54620>;
                  <D.54621>:
                  D.54627 = store_membase_reg_to_store_membase_imm (store_opcode);
                  D.54628 = (short unsigned int) D.54627;
                  ins->opcode = D.54628;
                  D.54626 = ins->data.op[0].const_val;
                  ins->data.op[1].const_val = D.54626;
                  D.54596 = var->sreg1;
                  ins->dreg = D.54596;
                  D.54597 = var->data.op[0].const_val;
                  ins->data.op[0].const_val = D.54597;
                  D.54411 = ins->opcode;
                  D.54412 = (int) D.54411;
                  D.54413 = D.54412 + -313;
                  D.54414 = D.54413 * 4;
                  spec = &ins_info[D.54414];
                  goto <D.54622>;
                  <D.54620>:
                  if (lvreg == 0) goto <D.54632>; else goto <D.54629>;
                  <D.54632>:
                  D.54633 = ins->opcode;
                  D.54634 = D.54633 == 428;
                  D.54635 = D.54633 == 430;
                  D.54636 = D.54634 | D.54635;
                  if (D.54636 != 0) goto <D.54630>; else goto <D.54637>;
                  <D.54637>:
                  D.54411 = ins->opcode;
                  if (D.54411 == 429) goto <D.54630>; else goto <D.54629>;
                  <D.54630>:
                  D.54638 = (short unsigned int) store_opcode;
                  ins->opcode = D.54638;
                  D.54596 = var->sreg1;
                  ins->dreg = D.54596;
                  D.54597 = var->data.op[0].const_val;
                  ins->data.op[0].const_val = D.54597;
                  no_lvreg = 1;
                  tmp_reg = ins->dreg;
                  D.54526 = ins->sreg2;
                  ins->dreg = D.54526;
                  ins->sreg2 = tmp_reg;
                  store = 1;
                  spec2[0] = 32;
                  D.54527 = MEM[(const char *)spec + 1B];
                  spec2[1] = D.54527;
                  D.54528 = *spec;
                  spec2[2] = D.54528;
                  spec2[3] = 32;
                  spec = &spec2;
                  goto <D.54631>;
                  <D.54629>:
                  if (lvreg == 0) goto <D.54641>; else goto <D.54639>;
                  <D.54641>:
                  D.54411 = ins->opcode;
                  D.54412 = (int) D.54411;
                  D.54642 = op_to_op_store_membase (store_opcode, D.54412);
                  if (D.54642 != -1) goto <D.54643>; else goto <D.54639>;
                  <D.54643>:
                  D.54411 = ins->opcode;
                  D.54412 = (int) D.54411;
                  D.54644 = op_to_op_store_membase (store_opcode, D.54412);
                  D.54645 = (short unsigned int) D.54644;
                  ins->opcode = D.54645;
                  ins->dreg = -1;
                  D.54596 = var->sreg1;
                  ins->sreg1 = D.54596;
                  D.54597 = var->data.op[0].const_val;
                  ins->data.op[0].const_val = D.54597;
                  D.54411 = ins->opcode;
                  D.54412 = (int) D.54411;
                  D.54413 = D.54412 + -313;
                  D.54414 = D.54413 * 4;
                  spec = &ins_info[D.54414];
                  goto <D.54640>;
                  <D.54639>:
                  D.54402 = cfg->mempool;
                  store_ins = mono_mempool_alloc (D.54402, 48);
                  store_ins->data.op[1].const_val = 0;
                  D.54607 = store_ins->data.op[1].const_val;
                  store_ins->data.op[0].const_val = D.54607;
                  store_ins->prev = 0B;
                  D.54608 = store_ins->prev;
                  store_ins->next = D.54608;
                  D.54638 = (short unsigned int) store_opcode;
                  store_ins->opcode = D.54638;
                  store_ins->flags = 0;
                  store_ins->type = 0;
                  store_ins->dreg = -1;
                  store_ins->sreg3 = -1;
                  D.54609 = store_ins->sreg3;
                  store_ins->sreg2 = D.54609;
                  D.54610 = store_ins->sreg2;
                  store_ins->sreg1 = D.54610;
                  D.54483 = cfg->ip;
                  store_ins->cil_code = D.54483;
                  D.54535 = ins->dreg;
                  store_ins->sreg1 = D.54535;
                  D.54596 = var->sreg1;
                  store_ins->dreg = D.54596;
                  D.54597 = var->data.op[0].const_val;
                  store_ins->data.op[0].const_val = D.54597;
                  mono_bblock_insert_after_ins (bb, ins, store_ins);
                  def_ins = store_ins;
                  store_opcode.597 = (unsigned int) store_opcode;
                  D.54647 = store_opcode.597 + 4294966917;
                  if (D.54647 > 1) goto <D.54648>; else goto <D.54649>;
                  <D.54648>:
                  D.54650 = var->flags;
                  D.54651 = (int) D.54650;
                  D.54652 = D.54651 & 20;
                  if (D.54652 == 0) goto <D.54653>; else goto <D.54654>;
                  <D.54653>:
                  dest_has_lvreg = 1;
                  <D.54654>:
                  <D.54649>:
                  <D.54640>:
                  <D.54631>:
                  <D.54622>:
                  <D.54614>:
                }
                <D.54575>:
                <D.54573>:
                if (def_ins != 0B) goto <D.54655>; else goto <D.54656>;
                <D.54655>:
                dreg.598 = (unsigned int) dreg;
                D.54658 = dreg.598 * 4;
                D.54659 = live_range_start + D.54658;
                D.54660 = *D.54659;
                if (D.54660 == 0B) goto <D.54661>; else goto <D.54662>;
                <D.54661>:
                dreg.598 = (unsigned int) dreg;
                D.54658 = dreg.598 * 4;
                D.54659 = live_range_start + D.54658;
                *D.54659 = def_ins;
                dreg.598 = (unsigned int) dreg;
                D.54658 = dreg.598 * 4;
                D.54663 = live_range_start_bb + D.54658;
                *D.54663 = bb;
                <D.54662>:
                <D.54656>:
                D.54375 = BIT_FIELD_REF <*cfg, 8, 3424>;
                D.54376 = D.54375 & 128;
                if (D.54376 != 0) goto <D.54664>; else goto <D.54665>;
                <D.54664>:
                if (def_ins != 0B) goto <D.54666>; else goto <D.54667>;
                <D.54666>:
                D.54650 = var->flags;
                D.54668 = (signed char) D.54650;
                if (D.54668 < 0) goto <D.54669>; else goto <D.54670>;
                <D.54669>:
                {
                  struct MonoInst * tmp;

                  D.54402 = cfg->mempool;
                  tmp = mono_mempool_alloc (D.54402, 48);
                  tmp->data.op[1].const_val = 0;
                  D.54671 = tmp->data.op[1].const_val;
                  tmp->data.op[0].const_val = D.54671;
                  tmp->prev = 0B;
                  D.54672 = tmp->prev;
                  tmp->next = D.54672;
                  tmp->opcode = 1000;
                  tmp->flags = 0;
                  tmp->type = 0;
                  tmp->dreg = -1;
                  tmp->sreg3 = -1;
                  D.54673 = tmp->sreg3;
                  tmp->sreg2 = D.54673;
                  D.54674 = tmp->sreg2;
                  tmp->sreg1 = D.54674;
                  D.54483 = cfg->ip;
                  tmp->cil_code = D.54483;
                  tmp->data.op[1].const_val = dreg;
                  mono_bblock_insert_after_ins (bb, def_ins, tmp);
                }
                <D.54670>:
                <D.54667>:
                <D.54665>:
              }
              <D.54562>:
              <D.54556>:
              <D.54553>:
              D.54536 = ins->sreg1;
              sregs[0] = D.54536;
              D.54526 = ins->sreg2;
              sregs[1] = D.54526;
              D.54537 = ins->sreg3;
              sregs[2] = D.54537;
              D.54411 = ins->opcode;
              D.54412 = (int) D.54411;
              D.54413 = D.54412 + -313;
              D.54538 = ins_sreg_counts[D.54413];
              num_sregs = (int) D.54538;
              srcindex = 0;
              goto <D.28563>;
              <D.28562>:
              D.54675 = srcindex + 1;
              D.54676 = (sizetype) D.54675;
              D.54677 = spec + D.54676;
              D.54678 = *D.54677;
              regtype = (int) D.54678;
              sreg = sregs[srcindex];
              D.54682 = sreg != -1;
              D.54683 = regtype != 32;
              D.54684 = D.54682 | D.54683;
              if (D.54684 != 0) goto <D.54685>; else goto <D.54680>;
              <D.54685>:
              D.54686 = sreg == -1;
              D.54687 = regtype == 32;
              D.54688 = D.54686 | D.54687;
              if (D.54688 != 0) goto <D.54689>; else goto <D.54680>;
              <D.54689>:
              iftmp.599 = 1;
              goto <D.54681>;
              <D.54680>:
              iftmp.599 = 0;
              <D.54681>:
              D.54690 = iftmp.599 != 0;
              D.54691 = (long int) D.54690;
              D.54692 = __builtin_expect (D.54691, 0);
              if (D.54692 != 0) goto <D.54693>; else goto <D.54694>;
              <D.54693>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13163, "((sreg == -1) && (regtype == \' \')) || ((sreg != -1) && (regtype != \' \'))");
              <D.54694>:
              if (sreg != -1) goto <D.54695>; else goto <D.54696>;
              <D.54695>:
              sreg.600 = (unsigned int) sreg;
              D.54346 = cfg->vreg_to_inst_len;
              if (sreg.600 < D.54346) goto <D.54698>; else goto <D.54699>;
              <D.54698>:
              D.54349 = cfg->vreg_to_inst;
              sreg.601 = (unsigned int) sreg;
              D.54701 = sreg.601 * 4;
              D.54702 = D.54349 + D.54701;
              D.54703 = *D.54702;
              if (D.54703 != 0B) goto <D.54704>; else goto <D.54705>;
              <D.54704>:
              {
                struct MonoInst * var;
                struct MonoInst * use_ins;
                struct MonoInst * load_ins;
                guint32 load_opcode;

                sreg.600 = (unsigned int) sreg;
                D.54346 = cfg->vreg_to_inst_len;
                if (sreg.600 < D.54346) goto <D.54707>; else goto <D.54708>;
                <D.54707>:
                D.54349 = cfg->vreg_to_inst;
                sreg.601 = (unsigned int) sreg;
                D.54701 = sreg.601 * 4;
                D.54702 = D.54349 + D.54701;
                iftmp.602 = *D.54702;
                goto <D.54709>;
                <D.54708>:
                iftmp.602 = 0B;
                <D.54709>:
                var = iftmp.602;
                use_ins = ins;
                D.54710 = var->opcode;
                if (D.54710 == 366) goto <D.54711>; else goto <D.54712>;
                <D.54711>:
                D.54713 = var->dreg;
                sregs[srcindex] = D.54713;
                sreg.601 = (unsigned int) sreg;
                D.54701 = sreg.601 * 4;
                D.54714 = live_range_end + D.54701;
                *D.54714 = use_ins;
                sreg.601 = (unsigned int) sreg;
                D.54701 = sreg.601 * 4;
                D.54715 = live_range_end_bb + D.54701;
                *D.54715 = bb;
                D.54375 = BIT_FIELD_REF <*cfg, 8, 3424>;
                D.54376 = D.54375 & 128;
                if (D.54376 != 0) goto <D.54716>; else goto <D.54717>;
                <D.54716>:
                D.54713 = var->dreg;
                if (D.54713 < orig_next_vreg) goto <D.54718>; else goto <D.54719>;
                <D.54718>:
                D.54720 = var->flags;
                D.54721 = (signed char) D.54720;
                if (D.54721 < 0) goto <D.54722>; else goto <D.54723>;
                <D.54722>:
                {
                  struct MonoInst * tmp;

                  D.54402 = cfg->mempool;
                  tmp = mono_mempool_alloc (D.54402, 48);
                  tmp->data.op[1].const_val = 0;
                  D.54724 = tmp->data.op[1].const_val;
                  tmp->data.op[0].const_val = D.54724;
                  tmp->prev = 0B;
                  D.54725 = tmp->prev;
                  tmp->next = D.54725;
                  tmp->opcode = 1001;
                  tmp->flags = 0;
                  tmp->type = 0;
                  tmp->dreg = -1;
                  tmp->sreg3 = -1;
                  D.54726 = tmp->sreg3;
                  tmp->sreg2 = D.54726;
                  D.54727 = tmp->sreg2;
                  tmp->sreg1 = D.54727;
                  D.54483 = cfg->ip;
                  tmp->cil_code = D.54483;
                  tmp->data.op[1].const_val = sreg;
                  mono_bblock_insert_after_ins (bb, ins, tmp);
                }
                <D.54723>:
                <D.54719>:
                <D.54717>:
                // predicted unlikely by continue predictor.
                goto <D.28560>;
                <D.54712>:
                D.54710 = var->opcode;
                D.54728 = D.54710 != 367;
                D.54729 = (long int) D.54728;
                D.54730 = __builtin_expect (D.54729, 0);
                if (D.54730 != 0) goto <D.54731>; else goto <D.54732>;
                <D.54731>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13188, "var->opcode == OP_REGOFFSET");
                <D.54732>:
                D.54733 = var->data.op[1].vtype;
                load_opcode = mono_type_to_load_membase (cfg, D.54733);
                D.54734 = load_opcode == 403;
                D.54735 = (long int) D.54734;
                D.54736 = __builtin_expect (D.54735, 0);
                if (D.54736 != 0) goto <D.54737>; else goto <D.54738>;
                <D.54737>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13192, "load_opcode != OP_LOADV_MEMBASE");
                <D.54738>:
                sreg.601 = (unsigned int) sreg;
                D.54701 = sreg.601 * 4;
                D.54739 = vreg_to_lvreg + D.54701;
                D.54740 = *D.54739;
                if (D.54740 != 0) goto <D.54741>; else goto <D.54742>;
                <D.54741>:
                sreg.601 = (unsigned int) sreg;
                D.54701 = sreg.601 * 4;
                D.54739 = vreg_to_lvreg + D.54701;
                D.54740 = *D.54739;
                D.54743 = D.54740 == 4294967295;
                D.54744 = (long int) D.54743;
                D.54745 = __builtin_expect (D.54744, 0);
                if (D.54745 != 0) goto <D.54746>; else goto <D.54747>;
                <D.54746>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13195, "vreg_to_lvreg [sreg] != -1");
                <D.54747>:
                D.54403 = cfg->verbose_level;
                D.54415 = D.54403 > 2;
                D.54416 = (long int) D.54415;
                D.54417 = __builtin_expect (D.54416, 0);
                if (D.54417 != 0) goto <D.54748>; else goto <D.54749>;
                <D.54748>:
                sreg.601 = (unsigned int) sreg;
                D.54701 = sreg.601 * 4;
                D.54739 = vreg_to_lvreg + D.54701;
                D.54740 = *D.54739;
                printf ("\t\tUse lvreg R%d for R%d.\n", D.54740, sreg);
                <D.54749>:
                sreg.601 = (unsigned int) sreg;
                D.54701 = sreg.601 * 4;
                D.54739 = vreg_to_lvreg + D.54701;
                D.54740 = *D.54739;
                D.54750 = (int) D.54740;
                sregs[srcindex] = D.54750;
                // predicted unlikely by continue predictor.
                goto <D.28560>;
                <D.54742>:
                if (srcindex == 0) goto <D.54753>; else goto <D.54751>;
                <D.54753>:
                D.54411 = ins->opcode;
                D.54412 = (int) D.54411;
                load_opcode.603 = (int) load_opcode;
                D.54755 = op_to_op_src1_membase (load_opcode.603, D.54412);
                if (D.54755 != -1) goto <D.54756>; else goto <D.54751>;
                <D.54756>:
                D.54411 = ins->opcode;
                D.54412 = (int) D.54411;
                load_opcode.603 = (int) load_opcode;
                D.54757 = op_to_op_src1_membase (load_opcode.603, D.54412);
                D.54758 = (short unsigned int) D.54757;
                ins->opcode = D.54758;
                D.54759 = var->sreg1;
                sregs[0] = D.54759;
                D.54760 = var->data.op[0].const_val;
                ins->data.op[0].const_val = D.54760;
                goto <D.54752>;
                <D.54751>:
                if (srcindex == 1) goto <D.54763>; else goto <D.54761>;
                <D.54763>:
                D.54411 = ins->opcode;
                D.54412 = (int) D.54411;
                load_opcode.603 = (int) load_opcode;
                D.54764 = op_to_op_src2_membase (load_opcode.603, D.54412);
                if (D.54764 != -1) goto <D.54765>; else goto <D.54761>;
                <D.54765>:
                D.54411 = ins->opcode;
                D.54412 = (int) D.54411;
                load_opcode.603 = (int) load_opcode;
                D.54766 = op_to_op_src2_membase (load_opcode.603, D.54412);
                D.54767 = (short unsigned int) D.54766;
                ins->opcode = D.54767;
                D.54759 = var->sreg1;
                sregs[1] = D.54759;
                D.54760 = var->data.op[0].const_val;
                ins->data.op[0].const_val = D.54760;
                goto <D.54762>;
                <D.54761>:
                D.54771 = ins->opcode;
                D.54772 = D.54771 == 428;
                D.54773 = D.54771 == 430;
                D.54774 = D.54772 | D.54773;
                if (D.54774 != 0) goto <D.54768>; else goto <D.54775>;
                <D.54775>:
                D.54411 = ins->opcode;
                if (D.54411 == 962) goto <D.54768>; else goto <D.54769>;
                <D.54768>:
                ins->opcode = 316;
                sreg = ins->dreg;
                goto <D.54770>;
                <D.54769>:
                D.54602 = stacktypes[regtype];
                D.54776 = alloc_dreg (cfg, D.54602);
                sreg = (int) D.54776;
                D.54777 = load_opcode + 4294966897;
                if (D.54777 > 1) goto <D.54778>; else goto <D.54779>;
                <D.54778>:
                D.54720 = var->flags;
                D.54780 = (int) D.54720;
                D.54781 = D.54780 & 20;
                D.54782 = D.54781 | no_lvreg;
                if (D.54782 == 0) goto <D.54783>; else goto <D.54784>;
                <D.54783>:
                D.54713 = var->dreg;
                if (D.54713 == prev_dreg) goto <D.54785>; else goto <D.54786>;
                <D.54785>:
                sreg = ins->dreg;
                <D.54786>:
                D.54686 = sreg == -1;
                D.54787 = (long int) D.54686;
                D.54788 = __builtin_expect (D.54787, 0);
                if (D.54788 != 0) goto <D.54789>; else goto <D.54790>;
                <D.54789>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13234, "sreg != -1");
                <D.54790>:
                D.54713 = var->dreg;
                D.54791 = (unsigned int) D.54713;
                D.54792 = D.54791 * 4;
                D.54793 = vreg_to_lvreg + D.54792;
                sreg.600 = (unsigned int) sreg;
                *D.54793 = sreg.600;
                D.54794 = lvregs_len > 1023;
                D.54795 = (long int) D.54794;
                D.54796 = __builtin_expect (D.54795, 0);
                if (D.54796 != 0) goto <D.54797>; else goto <D.54798>;
                <D.54797>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13236, "lvregs_len < 1024");
                <D.54798>:
                lvregs_len.604 = lvregs_len;
                lvregs_len = lvregs_len.604 + 1;
                D.54800 = lvregs_len.604 * 4;
                D.54801 = lvregs + D.54800;
                D.54713 = var->dreg;
                D.54802 = (unsigned int) D.54713;
                *D.54801 = D.54802;
                <D.54784>:
                <D.54779>:
                <D.54770>:
                sregs[srcindex] = sreg;
                if (regtype == 108) goto <D.54803>; else goto <D.54804>;
                <D.54803>:
                D.54402 = cfg->mempool;
                load_ins = mono_mempool_alloc (D.54402, 48);
                load_ins->data.op[1].const_val = 0;
                D.54805 = load_ins->data.op[1].const_val;
                load_ins->data.op[0].const_val = D.54805;
                load_ins->prev = 0B;
                D.54806 = load_ins->prev;
                load_ins->next = D.54806;
                load_ins->opcode = 396;
                load_ins->flags = 0;
                load_ins->type = 0;
                load_ins->dreg = -1;
                load_ins->sreg3 = -1;
                D.54807 = load_ins->sreg3;
                load_ins->sreg2 = D.54807;
                D.54808 = load_ins->sreg2;
                load_ins->sreg1 = D.54808;
                D.54483 = cfg->ip;
                load_ins->cil_code = D.54483;
                D.54809 = sreg + 2;
                load_ins->dreg = D.54809;
                D.54759 = var->sreg1;
                load_ins->sreg1 = D.54759;
                D.54760 = var->data.op[0].const_val;
                D.54810 = D.54760 + 4;
                load_ins->data.op[0].const_val = D.54810;
                load_ins->type = 1;
                mono_bblock_insert_before_ins (bb, ins, load_ins);
                D.54402 = cfg->mempool;
                load_ins = mono_mempool_alloc (D.54402, 48);
                load_ins->data.op[1].const_val = 0;
                D.54805 = load_ins->data.op[1].const_val;
                load_ins->data.op[0].const_val = D.54805;
                load_ins->prev = 0B;
                D.54806 = load_ins->prev;
                load_ins->next = D.54806;
                load_ins->opcode = 396;
                load_ins->flags = 0;
                load_ins->type = 0;
                load_ins->dreg = -1;
                load_ins->sreg3 = -1;
                D.54807 = load_ins->sreg3;
                load_ins->sreg2 = D.54807;
                D.54808 = load_ins->sreg2;
                load_ins->sreg1 = D.54808;
                D.54483 = cfg->ip;
                load_ins->cil_code = D.54483;
                D.54811 = sreg + 1;
                load_ins->dreg = D.54811;
                D.54759 = var->sreg1;
                load_ins->sreg1 = D.54759;
                D.54760 = var->data.op[0].const_val;
                load_ins->data.op[0].const_val = D.54760;
                load_ins->type = 1;
                mono_bblock_insert_before_ins (bb, ins, load_ins);
                use_ins = load_ins;
                goto <D.54812>;
                <D.54804>:
                D.54813 = load_opcode == 398;
                D.54814 = (long int) D.54813;
                D.54815 = __builtin_expect (D.54814, 0);
                if (D.54815 != 0) goto <D.54816>; else goto <D.54817>;
                <D.54816>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13256, "load_opcode != OP_LOADI8_MEMBASE");
                <D.54817>:
                D.54402 = cfg->mempool;
                load_ins = mono_mempool_alloc (D.54402, 48);
                load_ins->data.op[1].const_val = 0;
                D.54805 = load_ins->data.op[1].const_val;
                load_ins->data.op[0].const_val = D.54805;
                load_ins->prev = 0B;
                D.54806 = load_ins->prev;
                load_ins->next = D.54806;
                D.54818 = (short unsigned int) load_opcode;
                load_ins->opcode = D.54818;
                load_ins->flags = 0;
                load_ins->type = 0;
                load_ins->dreg = -1;
                load_ins->sreg3 = -1;
                D.54807 = load_ins->sreg3;
                load_ins->sreg2 = D.54807;
                D.54808 = load_ins->sreg2;
                load_ins->sreg1 = D.54808;
                D.54483 = cfg->ip;
                load_ins->cil_code = D.54483;
                load_ins->dreg = sreg;
                D.54759 = var->sreg1;
                load_ins->sreg1 = D.54759;
                D.54760 = var->data.op[0].const_val;
                load_ins->data.op[0].const_val = D.54760;
                load_ins->type = 1;
                mono_bblock_insert_before_ins (bb, ins, load_ins);
                use_ins = load_ins;
                <D.54812>:
                <D.54762>:
                <D.54752>:
                D.54713 = var->dreg;
                if (D.54713 < orig_next_vreg) goto <D.54819>; else goto <D.54820>;
                <D.54819>:
                D.54713 = var->dreg;
                D.54791 = (unsigned int) D.54713;
                D.54792 = D.54791 * 4;
                D.54821 = live_range_end + D.54792;
                *D.54821 = use_ins;
                D.54713 = var->dreg;
                D.54791 = (unsigned int) D.54713;
                D.54792 = D.54791 * 4;
                D.54822 = live_range_end_bb + D.54792;
                *D.54822 = bb;
                <D.54820>:
                D.54375 = BIT_FIELD_REF <*cfg, 8, 3424>;
                D.54376 = D.54375 & 128;
                if (D.54376 != 0) goto <D.54823>; else goto <D.54824>;
                <D.54823>:
                D.54713 = var->dreg;
                if (D.54713 < orig_next_vreg) goto <D.54825>; else goto <D.54826>;
                <D.54825>:
                D.54720 = var->flags;
                D.54721 = (signed char) D.54720;
                if (D.54721 < 0) goto <D.54827>; else goto <D.54828>;
                <D.54827>:
                {
                  struct MonoInst * tmp;

                  D.54402 = cfg->mempool;
                  tmp = mono_mempool_alloc (D.54402, 48);
                  tmp->data.op[1].const_val = 0;
                  D.54829 = tmp->data.op[1].const_val;
                  tmp->data.op[0].const_val = D.54829;
                  tmp->prev = 0B;
                  D.54830 = tmp->prev;
                  tmp->next = D.54830;
                  tmp->opcode = 1001;
                  tmp->flags = 0;
                  tmp->type = 0;
                  tmp->dreg = -1;
                  tmp->sreg3 = -1;
                  D.54831 = tmp->sreg3;
                  tmp->sreg2 = D.54831;
                  D.54832 = tmp->sreg2;
                  tmp->sreg1 = D.54832;
                  D.54483 = cfg->ip;
                  tmp->cil_code = D.54483;
                  D.54713 = var->dreg;
                  tmp->data.op[1].const_val = D.54713;
                  mono_bblock_insert_after_ins (bb, ins, tmp);
                }
                <D.54828>:
                <D.54826>:
                <D.54824>:
              }
              <D.54705>:
              <D.54699>:
              <D.54696>:
              <D.28560>:
              srcindex = srcindex + 1;
              <D.28563>:
              if (srcindex <= 2) goto <D.28562>; else goto <D.28564>;
              <D.28564>:
              mono_inst_set_src_registers (ins, &sregs);
              if (dest_has_lvreg != 0) goto <D.54833>; else goto <D.54834>;
              <D.54833>:
              D.54535 = ins->dreg;
              D.54835 = D.54535 == -1;
              D.54836 = (long int) D.54835;
              D.54837 = __builtin_expect (D.54836, 0);
              if (D.54837 != 0) goto <D.54838>; else goto <D.54839>;
              <D.54838>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13281, "ins->dreg != -1");
              <D.54839>:
              prev_dreg.605 = (unsigned int) prev_dreg;
              D.54841 = prev_dreg.605 * 4;
              D.54842 = vreg_to_lvreg + D.54841;
              D.54535 = ins->dreg;
              D.54554 = (unsigned int) D.54535;
              *D.54842 = D.54554;
              D.54794 = lvregs_len > 1023;
              D.54795 = (long int) D.54794;
              D.54796 = __builtin_expect (D.54795, 0);
              if (D.54796 != 0) goto <D.54843>; else goto <D.54844>;
              <D.54843>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13283, "lvregs_len < 1024");
              <D.54844>:
              lvregs_len.606 = lvregs_len;
              lvregs_len = lvregs_len.606 + 1;
              D.54846 = lvregs_len.606 * 4;
              D.54847 = lvregs + D.54846;
              prev_dreg.607 = (unsigned int) prev_dreg;
              *D.54847 = prev_dreg.607;
              dest_has_lvreg = 0;
              <D.54834>:
              if (store != 0) goto <D.54849>; else goto <D.54850>;
              <D.54849>:
              tmp_reg = ins->dreg;
              D.54526 = ins->sreg2;
              ins->dreg = D.54526;
              ins->sreg2 = tmp_reg;
              <D.54850>:
              D.54854 = ins->opcode;
              D.54855 = D.54854 + 65193;
              D.54856 = D.54855 <= 2;
              D.54857 = D.54854 + 65187;
              D.54858 = D.54857 <= 2;
              D.54859 = D.54856 | D.54858;
              if (D.54859 != 0) goto <D.54851>; else goto <D.54860>;
              <D.54860>:
              D.54411 = ins->opcode;
              D.54861 = D.54411 + 65184;
              if (D.54861 <= 2) goto <D.54851>; else goto <D.54862>;
              <D.54862>:
              D.54411 = ins->opcode;
              D.54863 = D.54411 + 65181;
              if (D.54863 <= 2) goto <D.54851>; else goto <D.54864>;
              <D.54864>:
              D.54411 = ins->opcode;
              D.54865 = D.54411 + 65190;
              if (D.54865 <= 2) goto <D.54851>; else goto <D.54866>;
              <D.54866>:
              D.54411 = ins->opcode;
              D.54867 = D.54411 + 65178;
              if (D.54867 <= 2) goto <D.54851>; else goto <D.54868>;
              <D.54868>:
              D.54411 = ins->opcode;
              if (D.54411 == 448) goto <D.54851>; else goto <D.54852>;
              <D.54851>:
              i = 0;
              goto <D.28566>;
              <D.28565>:
              D.54324 = i * 4;
              D.54407 = lvregs + D.54324;
              D.54408 = *D.54407;
              D.54409 = D.54408 * 4;
              D.54410 = vreg_to_lvreg + D.54409;
              *D.54410 = 0;
              i = i + 1;
              <D.28566>:
              if (i < lvregs_len) goto <D.28565>; else goto <D.28567>;
              <D.28567>:
              lvregs_len = 0;
              goto <D.54853>;
              <D.54852>:
              D.54411 = ins->opcode;
              if (D.54411 == 316) goto <D.54869>; else goto <D.54870>;
              <D.54869>:
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.54537 = ins->sreg3;
              ins->sreg2 = D.54537;
              D.54526 = ins->sreg2;
              ins->sreg1 = D.54526;
              <D.54870>:
              <D.54853>:
              D.54403 = cfg->verbose_level;
              if (D.54403 > 2) goto <D.54871>; else goto <D.54872>;
              <D.54871>:
              mono_print_ins_index (1, ins);
              <D.54872>:
            }
          finally
            {
              sregs = {CLOBBER};
            }
        }
        <D.28533>:
        ins = ins->next;
        <D.28569>:
        if (ins != 0B) goto <D.28568>; else goto <D.28570>;
        <D.28570>:
        D.54873 = BIT_FIELD_REF <*cfg, 8, 3416>;
        D.54874 = D.54873 & 128;
        if (D.54874 != 0) goto <D.54875>; else goto <D.54876>;
        <D.54875>:
        D.54877 = bb->live_out_set;
        if (D.54877 != 0B) goto <D.54878>; else goto <D.54879>;
        <D.54878>:
        D.54880 = bb->code;
        if (D.54880 != 0B) goto <D.54881>; else goto <D.54882>;
        <D.54881>:
        i = 0;
        goto <D.28574>;
        <D.28573>:
        {
          struct MonoMethodVar * vi;

          D.54883 = cfg->vars;
          D.54884 = i * 56;
          vi = D.54883 + D.54884;
          D.54888 = vi->vreg;
          D.54889 = (unsigned int) D.54888;
          D.54346 = cfg->vreg_to_inst_len;
          if (D.54889 < D.54346) goto <D.54890>; else goto <D.54886>;
          <D.54890>:
          D.54349 = cfg->vreg_to_inst;
          D.54888 = vi->vreg;
          D.54891 = (unsigned int) D.54888;
          D.54892 = D.54891 * 4;
          D.54893 = D.54349 + D.54892;
          D.54894 = *D.54893;
          if (D.54894 != 0B) goto <D.54895>; else goto <D.54886>;
          <D.54895>:
          D.54888 = vi->vreg;
          D.54889 = (unsigned int) D.54888;
          D.54346 = cfg->vreg_to_inst_len;
          if (D.54889 < D.54346) goto <D.54897>; else goto <D.54898>;
          <D.54897>:
          D.54349 = cfg->vreg_to_inst;
          D.54888 = vi->vreg;
          D.54891 = (unsigned int) D.54888;
          D.54892 = D.54891 * 4;
          D.54893 = D.54349 + D.54892;
          iftmp.609 = *D.54893;
          goto <D.54899>;
          <D.54898>:
          iftmp.609 = 0B;
          <D.54899>:
          D.54900 = iftmp.609->flags;
          D.54901 = (int) D.54900;
          D.54902 = D.54901 & 20;
          if (D.54902 != 0) goto <D.54903>; else goto <D.54886>;
          <D.54903>:
          iftmp.608 = 1;
          goto <D.54887>;
          <D.54886>:
          iftmp.608 = 0;
          <D.54887>:
          D.54904 = iftmp.608 != 0;
          D.54905 = (long int) D.54904;
          D.54906 = __builtin_expect (D.54905, 0);
          if (D.54906 != 0) goto <D.54907>; else goto <D.54908>;
          <D.54907>:
          // predicted unlikely by continue predictor.
          goto <D.28572>;
          <D.54908>:
          D.54909 = bb->live_in_set;
          D.54910 = i / 32;
          D.54911 = D.54909->data[D.54910];
          i.610 = (int) i;
          D.54913 = i.610 & 31;
          D.54914 = 1 << D.54913;
          D.54915 = D.54911 & D.54914;
          if (D.54915 != 0) goto <D.54916>; else goto <D.54917>;
          <D.54916>:
          D.54888 = vi->vreg;
          D.54891 = (unsigned int) D.54888;
          D.54892 = D.54891 * 4;
          D.54918 = live_range_start + D.54892;
          D.54919 = *D.54918;
          if (D.54919 == 0B) goto <D.54920>; else goto <D.54921>;
          <D.54920>:
          D.54888 = vi->vreg;
          D.54891 = (unsigned int) D.54888;
          D.54892 = D.54891 * 4;
          D.54918 = live_range_start + D.54892;
          D.54880 = bb->code;
          *D.54918 = D.54880;
          D.54888 = vi->vreg;
          D.54891 = (unsigned int) D.54888;
          D.54892 = D.54891 * 4;
          D.54922 = live_range_start_bb + D.54892;
          *D.54922 = bb;
          <D.54921>:
          <D.54917>:
          D.54877 = bb->live_out_set;
          D.54910 = i / 32;
          D.54923 = D.54877->data[D.54910];
          i.610 = (int) i;
          D.54913 = i.610 & 31;
          D.54914 = 1 << D.54913;
          D.54924 = D.54923 & D.54914;
          if (D.54924 != 0) goto <D.54925>; else goto <D.54926>;
          <D.54925>:
          D.54888 = vi->vreg;
          D.54891 = (unsigned int) D.54888;
          D.54892 = D.54891 * 4;
          D.54927 = live_range_end + D.54892;
          D.54928 = bb->last_ins;
          *D.54927 = D.54928;
          D.54888 = vi->vreg;
          D.54891 = (unsigned int) D.54888;
          D.54892 = D.54891 * 4;
          D.54929 = live_range_end_bb + D.54892;
          *D.54929 = bb;
          <D.54926>:
        }
        <D.28572>:
        i = i + 1;
        <D.28574>:
        D.54374 = cfg->num_varinfo;
        if (D.54374 > i) goto <D.28573>; else goto <D.28575>;
        <D.28575>:
        <D.54882>:
        <D.54879>:
        <D.54876>:
      }
      bb = bb->next_bb;
      <D.28577>:
      if (bb != 0B) goto <D.28576>; else goto <D.28578>;
      <D.28578>:
      D.54873 = BIT_FIELD_REF <*cfg, 8, 3416>;
      D.54874 = D.54873 & 128;
      if (D.54874 != 0) goto <D.54930>; else goto <D.54931>;
      <D.54930>:
      D.54932 = cfg->comp_done;
      D.54933 = D.54932 & 16;
      if (D.54933 != 0) goto <D.54934>; else goto <D.54935>;
      <D.54934>:
      i = 0;
      goto <D.28582>;
      <D.28581>:
      {
        int vreg;
        struct MonoInst * ins;

        D.54883 = cfg->vars;
        D.54884 = i * 56;
        D.54936 = D.54883 + D.54884;
        vreg = D.54936->vreg;
        vreg.611 = (unsigned int) vreg;
        D.54938 = vreg.611 * 4;
        D.54939 = live_range_start + D.54938;
        D.54940 = *D.54939;
        if (D.54940 != 0B) goto <D.54941>; else goto <D.54942>;
        <D.54941>:
        D.54402 = cfg->mempool;
        ins = mono_mempool_alloc (D.54402, 48);
        ins->data.op[1].const_val = 0;
        D.54943 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.54943;
        ins->prev = 0B;
        D.54944 = ins->prev;
        ins->next = D.54944;
        ins->opcode = 998;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.54945 = ins->sreg3;
        ins->sreg2 = D.54945;
        D.54946 = ins->sreg2;
        ins->sreg1 = D.54946;
        D.54483 = cfg->ip;
        ins->cil_code = D.54483;
        i.612 = (int) i;
        ins->data.op[0].const_val = i.612;
        ins->data.op[1].const_val = vreg;
        vreg.611 = (unsigned int) vreg;
        D.54938 = vreg.611 * 4;
        D.54939 = live_range_start + D.54938;
        D.54940 = *D.54939;
        vreg.611 = (unsigned int) vreg;
        D.54938 = vreg.611 * 4;
        D.54948 = live_range_start_bb + D.54938;
        D.54949 = *D.54948;
        mono_bblock_insert_after_ins (D.54949, D.54940, ins);
        <D.54942>:
        vreg.611 = (unsigned int) vreg;
        D.54938 = vreg.611 * 4;
        D.54950 = live_range_end + D.54938;
        D.54951 = *D.54950;
        if (D.54951 != 0B) goto <D.54952>; else goto <D.54953>;
        <D.54952>:
        D.54402 = cfg->mempool;
        ins = mono_mempool_alloc (D.54402, 48);
        ins->data.op[1].const_val = 0;
        D.54943 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.54943;
        ins->prev = 0B;
        D.54944 = ins->prev;
        ins->next = D.54944;
        ins->opcode = 999;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.54945 = ins->sreg3;
        ins->sreg2 = D.54945;
        D.54946 = ins->sreg2;
        ins->sreg1 = D.54946;
        D.54483 = cfg->ip;
        ins->cil_code = D.54483;
        i.612 = (int) i;
        ins->data.op[0].const_val = i.612;
        ins->data.op[1].const_val = vreg;
        vreg.611 = (unsigned int) vreg;
        D.54938 = vreg.611 * 4;
        D.54950 = live_range_end + D.54938;
        D.54951 = *D.54950;
        vreg.611 = (unsigned int) vreg;
        D.54938 = vreg.611 * 4;
        D.54954 = live_range_end_bb + D.54938;
        D.54955 = *D.54954;
        D.54956 = D.54955->last_ins;
        if (D.54951 == D.54956) goto <D.54957>; else goto <D.54958>;
        <D.54957>:
        vreg.611 = (unsigned int) vreg;
        D.54938 = vreg.611 * 4;
        D.54954 = live_range_end_bb + D.54938;
        D.54955 = *D.54954;
        mono_add_ins_to_end (D.54955, ins);
        goto <D.54959>;
        <D.54958>:
        vreg.611 = (unsigned int) vreg;
        D.54938 = vreg.611 * 4;
        D.54950 = live_range_end + D.54938;
        D.54951 = *D.54950;
        vreg.611 = (unsigned int) vreg;
        D.54938 = vreg.611 * 4;
        D.54954 = live_range_end_bb + D.54938;
        D.54955 = *D.54954;
        mono_bblock_insert_after_ins (D.54955, D.54951, ins);
        <D.54959>:
        <D.54953>:
      }
      i = i + 1;
      <D.28582>:
      D.54374 = cfg->num_varinfo;
      if (D.54374 > i) goto <D.28581>; else goto <D.28583>;
      <D.28583>:
      <D.54935>:
      <D.54931>:
      D.54960 = cfg->gsharedvt_locals_var_ins;
      if (D.54960 != 0B) goto <D.54961>; else goto <D.54962>;
      <D.54961>:
      D.54960 = cfg->gsharedvt_locals_var_ins;
      D.54960->opcode = 362;
      D.54960 = cfg->gsharedvt_locals_var_ins;
      D.54960->data.op[1].const_val = 0;
      <D.54962>:
      monoeg_g_free (live_range_start);
      monoeg_g_free (live_range_end);
      monoeg_g_free (live_range_start_bb);
      monoeg_g_free (live_range_end_bb);
    }
  finally
    {
      spec2 = {CLOBBER};
      stacktypes = {CLOBBER};
    }
}


memset (void * __dest, int __ch, size_t __len)
{
  int D.54968;
  int D.54973;
  void * D.54975;
  unsigned int D.54976;

  D.54968 = __builtin_constant_p (__len);
  if (D.54968 != 0) goto <D.54969>; else goto <D.54970>;
  <D.54969>:
  if (__len == 0) goto <D.54971>; else goto <D.54972>;
  <D.54971>:
  D.54973 = __builtin_constant_p (__ch);
  if (D.54973 == 0) goto <D.54966>; else goto <D.54974>;
  <D.54974>:
  if (__ch != 0) goto <D.54966>; else goto <D.54967>;
  <D.54966>:
  __warn_memset_zero_len ();
  D.54975 = __dest;
  return D.54975;
  <D.54967>:
  <D.54972>:
  <D.54970>:
  D.54976 = __builtin_object_size (__dest, 0);
  D.54975 = __builtin___memset_chk (__dest, __ch, __len, D.54976);
  return D.54975;
}


op_to_op_dest_membase (int store_opcode, int opcode)
{
  _Bool D.54978;
  _Bool D.54979;
  _Bool D.54980;
  int D.54983;

  D.54978 = store_opcode != 374;
  D.54979 = store_opcode != 377;
  D.54980 = D.54978 & D.54979;
  if (D.54980 != 0) goto <D.54981>; else goto <D.54982>;
  <D.54981>:
  D.54983 = -1;
  return D.54983;
  <D.54982>:
  switch (opcode) <default: <D.54984>, case 428: <D.28406>, case 433: <D.28396>, case 434: <D.28398>, case 440: <D.28400>, case 441: <D.28402>, case 442: <D.28404>, case 569: <D.28391>, case 570: <D.28392>, case 576: <D.28393>, case 577: <D.28394>, case 578: <D.28395>, case 629: <D.28397>, case 630: <D.28399>, case 636: <D.28401>, case 637: <D.28403>, case 638: <D.28405>>
  <D.28391>:
  D.54983 = 1020;
  return D.54983;
  <D.28392>:
  D.54983 = 1021;
  return D.54983;
  <D.28393>:
  D.54983 = 1022;
  return D.54983;
  <D.28394>:
  D.54983 = 1023;
  return D.54983;
  <D.28395>:
  D.54983 = 1024;
  return D.54983;
  <D.28396>:
  <D.28397>:
  D.54983 = 1015;
  return D.54983;
  <D.28398>:
  <D.28399>:
  D.54983 = 1016;
  return D.54983;
  <D.28400>:
  <D.28401>:
  D.54983 = 1017;
  return D.54983;
  <D.28402>:
  <D.28403>:
  D.54983 = 1018;
  return D.54983;
  <D.28404>:
  <D.28405>:
  D.54983 = 1019;
  return D.54983;
  <D.28406>:
  D.54983 = 316;
  return D.54983;
  <D.54984>:
  D.54983 = -1;
  return D.54983;
}


store_membase_reg_to_store_membase_imm (int opcode)
{
  int D.54986;

  switch (opcode) <default: <D.28313>, case 374: <D.28308>, case 375: <D.28309>, case 376: <D.28310>, case 377: <D.28311>, case 378: <D.28312>>
  <D.28308>:
  D.54986 = 384;
  return D.54986;
  <D.28309>:
  D.54986 = 385;
  return D.54986;
  <D.28310>:
  D.54986 = 386;
  return D.54986;
  <D.28311>:
  D.54986 = 387;
  return D.54986;
  <D.28312>:
  D.54986 = 388;
  return D.54986;
  <D.28313>:
  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 12041);
  D.54986 = -1;
  return D.54986;
}


op_to_op_store_membase (int store_opcode, int opcode)
{
  int D.54990;

  switch (opcode) <default: <D.54993>, case 642: <D.28411>, case 770: <D.28412>>
  <D.28411>:
  if (store_opcode == 375) goto <D.54988>; else goto <D.54989>;
  <D.54988>:
  D.54990 = 1043;
  return D.54990;
  <D.54989>:
  <D.28412>:
  if (store_opcode == 375) goto <D.54991>; else goto <D.54992>;
  <D.54991>:
  D.54990 = 1044;
  return D.54990;
  <D.54992>:
  <D.54993>:
  D.54990 = -1;
  return D.54990;
}


op_to_op_src1_membase (int load_opcode, int opcode)
{
  _Bool D.54995;
  _Bool D.54996;
  _Bool D.54997;
  int D.55002;

  D.54995 = load_opcode != 391;
  D.54996 = load_opcode != 396;
  D.54997 = D.54995 & D.54996;
  if (D.54997 != 0) goto <D.54998>; else goto <D.54999>;
  <D.54998>:
  if (load_opcode != 397) goto <D.55000>; else goto <D.55001>;
  <D.55000>:
  D.55002 = -1;
  return D.55002;
  <D.55001>:
  <D.54999>:
  switch (opcode) <default: <D.55003>, case 322: <D.28420>, case 323: <D.28418>, case 326: <D.28421>, case 327: <D.28419>, case 1034: <D.28417>>
  <D.28417>:
  D.55002 = 1032;
  return D.55002;
  <D.28418>:
  <D.28419>:
  D.55002 = 1007;
  return D.55002;
  <D.28420>:
  <D.28421>:
  D.55002 = 1006;
  return D.55002;
  <D.55003>:
  D.55002 = -1;
  return D.55002;
}


op_to_op_src2_membase (int load_opcode, int opcode)
{
  _Bool D.55005;
  _Bool D.55006;
  _Bool D.55007;
  int D.55012;

  D.55005 = load_opcode != 391;
  D.55006 = load_opcode != 396;
  D.55007 = D.55005 & D.55006;
  if (D.55007 != 0) goto <D.55008>; else goto <D.55009>;
  <D.55008>:
  if (load_opcode != 397) goto <D.55010>; else goto <D.55011>;
  <D.55010>:
  D.55012 = -1;
  return D.55012;
  <D.55011>:
  <D.55009>:
  switch (opcode) <default: <D.55013>, case 322: <D.28426>, case 326: <D.28427>, case 569: <D.28428>, case 570: <D.28429>, case 576: <D.28430>, case 577: <D.28431>, case 578: <D.28432>>
  <D.28426>:
  <D.28427>:
  D.55012 = 1010;
  return D.55012;
  <D.28428>:
  D.55012 = 1026;
  return D.55012;
  <D.28429>:
  D.55012 = 1027;
  return D.55012;
  <D.28430>:
  D.55012 = 1029;
  return D.55012;
  <D.28431>:
  D.55012 = 1030;
  return D.55012;
  <D.28432>:
  D.55012 = 1031;
  return D.55012;
  <D.55013>:
  D.55012 = -1;
  return D.55012;
}


